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

%*****************************************************************************80
%
%% rule10() returns the pyramid quadrature rule of precision 10.
%
%  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.9211301560146403, ...
          0.0000000000000000, ...
         -0.9211301560146403, ...
          0.0000000000000000, ...
          0.4546948844252537, ...
          0.0000000000000000, ...
         -0.4546948844252537, ...
          0.0000000000000000, ...
          0.3495469844967067, ...
          0.0000000000000000, ...
         -0.3495469844967067, ...
          0.0000000000000000, ...
          0.4036909359989291, ...
          0.4036909359989291, ...
         -0.4036909359989291, ...
         -0.4036909359989291, ...
          0.3714608909064742, ...
          0.3714608909064742, ...
         -0.3714608909064742, ...
         -0.3714608909064742, ...
          0.2995979966434122, ...
          0.2995979966434122, ...
         -0.2995979966434122, ...
         -0.2995979966434122, ...
          0.1582262545541785, ...
          0.1582262545541785, ...
         -0.1582262545541785, ...
         -0.1582262545541785, ...
          0.1819979349519966, ...
          0.1819979349519966, ...
         -0.1819979349519966, ...
         -0.1819979349519966, ...
          0.8455841498012413, ...
          0.8455841498012413, ...
         -0.8455841498012413, ...
         -0.8455841498012413, ...
          0.6468694059373429, ...
          0.6468694059373429, ...
         -0.6468694059373429, ...
         -0.6468694059373429, ...
          0.5875870294087208, ...
          0.5875870294087208, ...
         -0.5875870294087208, ...
         -0.5875870294087208, ...
          0.2237620599838161, ...
          0.2237620599838161, ...
         -0.2237620599838161, ...
         -0.2237620599838161, ...
          0.7455657084697210, ...
          0.2247174318849062, ...
          0.7455657084697210, ...
         -0.2247174318849062, ...
         -0.7455657084697210, ...
          0.2247174318849062, ...
         -0.7455657084697210, ...
         -0.2247174318849062, ...
          0.4056619527318771, ...
          0.7487267628018788, ...
          0.4056619527318771, ...
         -0.7487267628018788, ...
         -0.4056619527318771, ...
          0.7487267628018788, ...
         -0.4056619527318771, ...
         -0.7487267628018788, ...
          0.0707425682812096, ...
          0.6004569111268736, ...
          0.0707425682812096, ...
         -0.6004569111268736, ...
         -0.0707425682812096, ...
          0.6004569111268736, ...
         -0.0707425682812096, ...
         -0.6004569111268736, ...
          0.9422191470796681, ...
          0.6375631040785387, ...
          0.9422191470796681, ...
         -0.6375631040785387, ...
         -0.9422191470796681, ...
          0.6375631040785387, ...
         -0.9422191470796681, ...
         -0.6375631040785387 ];

  y = [ ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.0000000000000000, ...
          0.9211301560146403, ...
          0.0000000000000000, ...
         -0.9211301560146403, ...
          0.0000000000000000, ...
          0.4546948844252537, ...
          0.0000000000000000, ...
         -0.4546948844252537, ...
          0.0000000000000000, ...
          0.3495469844967067, ...
          0.0000000000000000, ...
         -0.3495469844967067, ...
          0.4036909359989291, ...
         -0.4036909359989291, ...
          0.4036909359989291, ...
         -0.4036909359989291, ...
          0.3714608909064742, ...
         -0.3714608909064742, ...
          0.3714608909064742, ...
         -0.3714608909064742, ...
          0.2995979966434122, ...
         -0.2995979966434122, ...
          0.2995979966434122, ...
         -0.2995979966434122, ...
          0.1582262545541785, ...
         -0.1582262545541785, ...
          0.1582262545541785, ...
         -0.1582262545541785, ...
          0.1819979349519966, ...
         -0.1819979349519966, ...
          0.1819979349519966, ...
         -0.1819979349519966, ...
          0.8455841498012413, ...
         -0.8455841498012413, ...
          0.8455841498012413, ...
         -0.8455841498012413, ...
          0.6468694059373429, ...
         -0.6468694059373429, ...
          0.6468694059373429, ...
         -0.6468694059373429, ...
          0.5875870294087208, ...
         -0.5875870294087208, ...
          0.5875870294087208, ...
         -0.5875870294087208, ...
          0.2237620599838161, ...
         -0.2237620599838161, ...
          0.2237620599838161, ...
         -0.2237620599838161, ...
          0.2247174318849062, ...
          0.7455657084697210, ...
         -0.2247174318849062, ...
          0.7455657084697210, ...
          0.2247174318849062, ...
         -0.7455657084697210, ...
         -0.2247174318849062, ...
         -0.7455657084697210, ...
          0.7487267628018788, ...
          0.4056619527318771, ...
         -0.7487267628018788, ...
          0.4056619527318771, ...
          0.7487267628018788, ...
         -0.4056619527318771, ...
         -0.7487267628018788, ...
         -0.4056619527318771, ...
          0.6004569111268736, ...
          0.0707425682812096, ...
         -0.6004569111268736, ...
          0.0707425682812096, ...
          0.6004569111268736, ...
         -0.0707425682812096, ...
         -0.6004569111268736, ...
         -0.0707425682812096, ...
          0.6375631040785387, ...
          0.9422191470796681, ...
         -0.6375631040785387, ...
          0.9422191470796681, ...
          0.6375631040785387, ...
         -0.9422191470796681, ...
         -0.6375631040785387, ...
         -0.9422191470796681 ];

  z = [ ...
          0.9167957817791272, ...
          0.3511368063403526, ...
          0.7419135679633000, ...
          0.0631615972799145, ...
          0.0631615972799145, ...
          0.0631615972799145, ...
          0.0631615972799145, ...
          0.1767304111617324, ...
          0.1767304111617324, ...
          0.1767304111617324, ...
          0.1767304111617324, ...
          0.6020938107079140, ...
          0.6020938107079140, ...
          0.6020938107079140, ...
          0.6020938107079140, ...
          0.5270494697681531, ...
          0.5270494697681531, ...
          0.5270494697681531, ...
          0.5270494697681531, ...
          0.3491104418985491, ...
          0.3491104418985491, ...
          0.3491104418985491, ...
          0.3491104418985491, ...
          0.0069339728754634, ...
          0.0069339728754634, ...
          0.0069339728754634, ...
          0.0069339728754634, ...
          0.7752643179331966, ...
          0.7752643179331966, ...
          0.7752643179331966, ...
          0.7752643179331966, ...
          0.5470650181463391, ...
          0.5470650181463391, ...
          0.5470650181463391, ...
          0.5470650181463391, ...
          0.0728984114756605, ...
          0.0728984114756605, ...
          0.0728984114756605, ...
          0.0728984114756605, ...
          0.2836223397977548, ...
          0.2836223397977548, ...
          0.2836223397977548, ...
          0.2836223397977548, ...
          0.0598130217927265, ...
          0.0598130217927265, ...
          0.0598130217927265, ...
          0.0598130217927265, ...
          0.0658308799806233, ...
          0.0658308799806233, ...
          0.0658308799806233, ...
          0.0658308799806233, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.0272502552746740, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.1618000129270508, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.3584705635890507, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847, ...
          0.0074406410768847 ];

  w = [ ...
          0.0024012267625214, ...
          0.0469159279097637, ...
          0.0098466607485292, ...
          0.0056773923179313, ...
          0.0056773923179313, ...
          0.0056773923179313, ...
          0.0056773923179313, ...
          0.0412212597418143, ...
          0.0412212597418143, ...
          0.0412212597418143, ...
          0.0412212597418143, ...
          0.0092087532680317, ...
          0.0092087532680317, ...
          0.0092087532680317, ...
          0.0092087532680317, ...
          0.0070683961650691, ...
          0.0070683961650691, ...
          0.0070683961650691, ...
          0.0070683961650691, ...
          0.0298306858263750, ...
          0.0298306858263750, ...
          0.0298306858263750, ...
          0.0298306858263750, ...
          0.0058699928018168, ...
          0.0058699928018168, ...
          0.0058699928018168, ...
          0.0058699928018168, ...
          0.0049543654347689, ...
          0.0049543654347689, ...
          0.0049543654347689, ...
          0.0049543654347689, ...
          0.0159309372716684, ...
          0.0159309372716684, ...
          0.0159309372716684, ...
          0.0159309372716684, ...
          0.0050915274851829, ...
          0.0050915274851829, ...
          0.0050915274851829, ...
          0.0050915274851829, ...
          0.0068457933453088, ...
          0.0068457933453088, ...
          0.0068457933453088, ...
          0.0068457933453088, ...
          0.0150380203803664, ...
          0.0150380203803664, ...
          0.0150380203803664, ...
          0.0150380203803664, ...
          0.0156151631237942, ...
          0.0156151631237942, ...
          0.0156151631237942, ...
          0.0156151631237942, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0089093600668980, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0167917214598521, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0082057491053038, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804, ...
          0.0025215488592804 ];

  return
end
