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

%*****************************************************************************80
%
%% rule08() returns the pyramid quadrature rule of precision 8.
%
%  Discussion:
%
%    We suppose we are given a pyramid P with vertices
%      (-1,-1,0), (-1,+1,0), (+1,+1,0), (+1,-1,0), (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:
%
%    25 April 2023
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Freddie Witherden, Peter Vincent,
%    On the identification of symmetric quadrature rules for finite element methods,
%    Computers and Mathematics with Applications,
%    Volume 69, pages 1232-1241, 2015.
%
%  Output:
%
%    x(n), y(n), z(n): the coordinates of quadrature points.
%
%    w(n): the quadrature weights, which sum to 1.
%
  x = [ ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.7960960887742582, ...
          0.0000000000000000, ...
         -0.7960960887742582, ...
          0.0000000000000000, ...
          0.5648889587418399, ...
          0.0000000000000000, ...
         -0.5648889587418399, ...
          0.0000000000000000, ...
          0.7530226935489476, ...
          0.0000000000000000, ...
         -0.7530226935489476, ...
          0.0000000000000000, ...
          0.2465779424622870, ...
          0.2465779424622870, ...
         -0.2465779424622870, ...
         -0.2465779424622870, ...
          0.7338895325467361, ...
          0.7338895325467361, ...
         -0.7338895325467361, ...
         -0.7338895325467361, ...
          0.0000826826715128, ...
          0.0000826826715128, ...
         -0.0000826826715128, ...
         -0.0000826826715128, ...
          0.3989965570952277, ...
          0.3989965570952277, ...
         -0.3989965570952277, ...
         -0.3989965570952277, ...
          0.3653124144795900, ...
          0.3653124144795900, ...
         -0.3653124144795900, ...
         -0.3653124144795900, ...
          0.4834252440408382, ...
          0.4834252440408382, ...
         -0.4834252440408382, ...
         -0.4834252440408382, ...
          0.6314047976005609, ...
          0.8948561964915306, ...
          0.6314047976005609, ...
         -0.8948561964915306, ...
         -0.6314047976005609, ...
          0.8948561964915306, ...
         -0.6314047976005609, ...
         -0.8948561964915306 ];

  y = [ ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.7960960887742582, ...
          0.0000000000000000, ...
         -0.7960960887742582, ...
          0.0000000000000000, ...
          0.5648889587418399, ...
          0.0000000000000000, ...
         -0.5648889587418399, ...
          0.0000000000000000, ...
          0.7530226935489476, ...
          0.0000000000000000, ...
         -0.7530226935489476, ...
          0.2465779424622870, ...
         -0.2465779424622870, ...
          0.2465779424622870, ...
         -0.2465779424622870, ...
          0.7338895325467361, ...
         -0.7338895325467361, ...
          0.7338895325467361, ...
         -0.7338895325467361, ...
          0.0000826826715128, ...
         -0.0000826826715128, ...
          0.0000826826715128, ...
         -0.0000826826715128, ...
          0.3989965570952277, ...
         -0.3989965570952277, ...
          0.3989965570952277, ...
         -0.3989965570952277, ...
          0.3653124144795900, ...
         -0.3653124144795900, ...
          0.3653124144795900, ...
         -0.3653124144795900, ...
          0.4834252440408382, ...
         -0.4834252440408382, ...
          0.4834252440408382, ...
         -0.4834252440408382, ...
          0.8948561964915306, ...
          0.6314047976005609, ...
         -0.8948561964915306, ...
          0.6314047976005609, ...
          0.8948561964915306, ...
         -0.6314047976005609, ...
         -0.8948561964915306, ...
         -0.6314047976005609 ];

  z = [ ...
          0.5848054341081260, ...
          0.2714503954191895, ...
          0.0714404302154540, ...
          0.0000000073236390, ...
          0.0000000073236390, ...
          0.0000000073236390, ...
          0.0000000073236390, ...
          0.4221837006010586, ...
          0.4221837006010586, ...
          0.4221837006010586, ...
          0.4221837006010586, ...
          0.1477639972965497, ...
          0.1477639972965497, ...
          0.1477639972965497, ...
          0.1477639972965497, ...
          0.6734528479254847, ...
          0.6734528479254847, ...
          0.6734528479254847, ...
          0.6734528479254847, ...
          0.2455708050362506, ...
          0.2455708050362506, ...
          0.2455708050362506, ...
          0.2455708050362506, ...
          0.8582503626505816, ...
          0.8582503626505816, ...
          0.8582503626505816, ...
          0.8582503626505816, ...
          0.0474032316194875, ...
          0.0474032316194875, ...
          0.0474032316194875, ...
          0.0474032316194875, ...
          0.4021857062205061, ...
          0.4021857062205061, ...
          0.4021857062205061, ...
          0.4021857062205061, ...
          0.1903148210864091, ...
          0.1903148210864091, ...
          0.1903148210864091, ...
          0.1903148210864091, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511, ...
          0.0454758042237511 ];

  w = [ ...
          0.0494409951557794, ...
          0.0873546894411460, ...
          0.0384605774968570, ...
          0.0093760594001275, ...
          0.0093760594001275, ...
          0.0093760594001275, ...
          0.0093760594001275, ...
          0.0163110192164366, ...
          0.0163110192164366, ...
          0.0163110192164366, ...
          0.0163110192164366, ...
          0.0322397220710709, ...
          0.0322397220710709, ...
          0.0322397220710709, ...
          0.0322397220710709, ...
          0.0126350996218853, ...
          0.0126350996218853, ...
          0.0126350996218853, ...
          0.0126350996218853, ...
          0.0062155450261151, ...
          0.0062155450261151, ...
          0.0062155450261151, ...
          0.0062155450261151, ...
          0.0026132528336493, ...
          0.0026132528336493, ...
          0.0026132528336493, ...
          0.0026132528336493, ...
          0.0293249681950410, ...
          0.0293249681950410, ...
          0.0293249681950410, ...
          0.0293249681950410, ...
          0.0363593842641747, ...
          0.0363593842641747, ...
          0.0363593842641747, ...
          0.0363593842641747, ...
          0.0409820609459212, ...
          0.0409820609459212, ...
          0.0409820609459212, ...
          0.0409820609459212, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665, ...
          0.0100644114510665 ];

  return
end
