function [ x, y, z, w ] = rule07 ( )

%*****************************************************************************80
%
%% rule07() returns the hexahedron quadrature rule of precision 7.
%
%  Discussion:
%
%    The unit hexahedron H is bounded by vertices
%    (0,0,0), (1,0,0), (1,1,0), (0,1,0), (0,0,1), (1,0,1), (1,1,1), (0,1,1),
%
%    We call a rule with n points, returning coordinates
%    x, y, z, and weights w.  Then the integral I of f(x,y,z) over H is 
%    approximated by Q as follows:
%
%    Q = volume(H) * sum ( 1 <= i <= n ) w(i) * f(x(i),y(i),z(i)) 
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    18 May 2023
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Jan Jaskowiec, Natarajan Sukumar,
%    High order symmetric cubature rules for tetrahedra and pyramids,
%    International Journal for Numerical Methods in Engineering,
%    Volume 122, Number 1, pages 148-171, 24 August 2020.
%
%  Output:
%
%    real x(n), y(n), z(n): the coordinates of quadrature points.
%
%    real w(n): the quadrature weights, which add to 1.
%
  x = [ ...
          0.0305973139469912, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.9694026860530087, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.9532303450614186, ...
          0.0467696549385814, ...
          0.5000000000000000, ...
          0.0467696549385814, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.9532303450614186, ...
          0.0467696549385814, ...
          0.5000000000000000, ...
          0.0467696549385814 ];

  y = [ ...
          0.5000000000000000, ...
          0.0305973139469912, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.9694026860530087, ...
          0.5000000000000000, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.9532303450614186, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.9532303450614186, ...
          0.0467696549385814, ...
          0.5000000000000000, ...
          0.0467696549385814, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.0467696549385814, ...
          0.0467696549385814, ...
          0.5000000000000000 ];

  z = [ ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.0305973139469912, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.9694026860530087, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.8731668050064080, ...
          0.1268331949935920, ...
          0.1268331949935920, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.7050654491660072, ...
          0.2949345508339928, ...
          0.2949345508339928, ...
          0.5000000000000000, ...
          0.9532303450614186, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.9532303450614186, ...
          0.9532303450614186, ...
          0.5000000000000000, ...
          0.0467696549385814, ...
          0.0467696549385814, ...
          0.5000000000000000, ...
          0.0467696549385814, ...
          0.0467696549385814 ];

  w = [ ...
          0.0340045847498003, ...
          0.0340045847498003, ...
          0.0340045847498003, ...
          0.0340045847498003, ...
          0.0340045847498003, ...
          0.0340045847498003, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0252967244013519, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0541706353348564, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943, ...
          0.0133528011342943 ];

  return
end
