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

%*****************************************************************************80
%
%% rule07() returns the prism rule of precision 7.
%
%  Discussion:
%
%    We suppose we are given a triangular prism P with vertices
%    (1,0,0), (0,1,0), (0,0,0),
%    (1,0,1), (0,1,1), (0,0,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 P is 
%    approximated by Q as follows:
%
%    Q = volume(P) * sum ( 1 <= i <= n ) w(i) * f(x(i),y(i),z(i)) 
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    02 May 2023
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Jan Jaskowiec, Natarajan Sukumar,
%    High order symmetric cubature rules for tetrahedra and pyramids,
%    International Journal of 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 sum to 1.
%
  x = [ ...
          0.3333333333333333, ...
          0.3333333333333333, ...
          0.0083375954660215, ...
          0.0083375954660215, ...
          0.9833248090679571, ...
          0.4815219753291366, ...
          0.4815219753291366, ...
          0.0369560493417268, ...
          0.4815219753291366, ...
          0.4815219753291366, ...
          0.0369560493417268, ...
          0.0954832483714894, ...
          0.0954832483714894, ...
          0.8090335032570213, ...
          0.0954832483714894, ...
          0.0954832483714894, ...
          0.8090335032570213, ...
          0.7429966820728956, ...
          0.0121491315983783, ...
          0.7429966820728956, ...
          0.2448541863287261, ...
          0.0121491315983783, ...
          0.2448541863287261, ...
          0.1529845984247976, ...
          0.3051562164322261, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.3051562164322261, ...
          0.5418591851429763, ...
          0.1529845984247976, ...
          0.3051562164322261, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.3051562164322261, ...
          0.5418591851429763 ];

  y = [ ...
          0.3333333333333333, ...
          0.3333333333333333, ...
          0.0083375954660215, ...
          0.9833248090679571, ...
          0.0083375954660215, ...
          0.4815219753291366, ...
          0.0369560493417268, ...
          0.4815219753291366, ...
          0.4815219753291366, ...
          0.0369560493417268, ...
          0.4815219753291366, ...
          0.0954832483714894, ...
          0.8090335032570213, ...
          0.0954832483714894, ...
          0.0954832483714894, ...
          0.8090335032570213, ...
          0.0954832483714894, ...
          0.0121491315983783, ...
          0.7429966820728956, ...
          0.2448541863287261, ...
          0.7429966820728956, ...
          0.2448541863287261, ...
          0.0121491315983783, ...
          0.3051562164322261, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.3051562164322261, ...
          0.3051562164322261, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.1529845984247976, ...
          0.5418591851429763, ...
          0.3051562164322261 ];

  z = [ ...
          0.9901140347954458, ...
          0.0098859652045542, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.0793063228967370, ...
          0.0793063228967370, ...
          0.0793063228967370, ...
          0.9206936771032630, ...
          0.9206936771032630, ...
          0.9206936771032630, ...
          0.1020754547065085, ...
          0.1020754547065085, ...
          0.1020754547065085, ...
          0.8979245452934915, ...
          0.8979245452934915, ...
          0.8979245452934915, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.7019672802660549, ...
          0.7019672802660549, ...
          0.7019672802660549, ...
          0.7019672802660549, ...
          0.7019672802660549, ...
          0.7019672802660549, ...
          0.2980327197339451, ...
          0.2980327197339451, ...
          0.2980327197339451, ...
          0.2980327197339451, ...
          0.2980327197339451, ...
          0.2980327197339451 ];

  w = [ ...
          0.0284456811126893, ...
          0.0284456811126893, ...
          0.0061182421730950, ...
          0.0061182421730950, ...
          0.0061182421730950, ...
          0.0215508640862265, ...
          0.0215508640862265, ...
          0.0215508640862265, ...
          0.0215508640862265, ...
          0.0215508640862265, ...
          0.0215508640862265, ...
          0.0291785249020985, ...
          0.0291785249020985, ...
          0.0291785249020985, ...
          0.0291785249020985, ...
          0.0291785249020985, ...
          0.0291785249020985, ...
          0.0255148563351493, ...
          0.0255148563351493, ...
          0.0255148563351493, ...
          0.0255148563351493, ...
          0.0255148563351493, ...
          0.0255148563351493, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076, ...
          0.0389407032762076 ];

  return
end
