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

%*****************************************************************************80
%
%% rule09() returns the hexahedron rule of precision 9.
%
%  Discussion:
%
%    We suppose we are given a hexahedron H with 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:
%
%    01 May 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:
%
%    real x(n), y(n), z(n): the coordinates of quadrature points.
%
%    real w(n): the quadrature weights, which sum to 1.
%
  x = [ ...
          0.1931592652041455, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.8068407347958545, ...
          0.5000000000000000, ...
          0.9350498923309880, ...
          0.0649501076690120, ...
          0.0649501076690120, ...
          0.0649501076690120, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.9350498923309880, ...
          0.9350498923309880, ...
          0.7820554035100150, ...
          0.2179445964899850, ...
          0.2179445964899850, ...
          0.2179445964899850, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.7820554035100150, ...
          0.7820554035100150, ...
          0.0611564383711609, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.9388435616288391, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.0611564383711609, ...
          0.0611564383711609, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.0611564383711609, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.0307347890676641, ...
          0.2838660486845689, ...
          0.9692652109323359, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.0307347890676641, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.9692652109323359, ...
          0.7161339513154311, ...
          0.9692652109323359, ...
          0.9692652109323359, ...
          0.0307347890676641, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.0307347890676641 ];

  y = [ ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.8068407347958545, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.1931592652041455, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.9350498923309880, ...
          0.0649501076690120, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.9350498923309880, ...
          0.0649501076690120, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.7820554035100150, ...
          0.2179445964899850, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.7820554035100150, ...
          0.2179445964899850, ...
          0.0611564383711609, ...
          0.5000000000000000, ...
          0.9388435616288391, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.0611564383711609, ...
          0.0611564383711609, ...
          0.5000000000000000, ...
          0.9388435616288391, ...
          0.0611564383711609, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.9692652109323359, ...
          0.0307347890676641, ...
          0.9692652109323359, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.0307347890676641, ...
          0.0307347890676641, ...
          0.0307347890676641, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.9692652109323359, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.9692652109323359, ...
          0.2838660486845689, ...
          0.2838660486845689 ];

  z = [ ...
          0.5000000000000000, ...
          0.8068407347958545, ...
          0.5000000000000000, ...
          0.1931592652041455, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.0649501076690120, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.0649501076690120, ...
          0.9350498923309880, ...
          0.9350498923309880, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.2179445964899850, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.2179445964899850, ...
          0.7820554035100150, ...
          0.7820554035100150, ...
          0.5000000000000000, ...
          0.0611564383711609, ...
          0.0611564383711609, ...
          0.5000000000000000, ...
          0.9388435616288391, ...
          0.9388435616288391, ...
          0.0611564383711609, ...
          0.9388435616288391, ...
          0.5000000000000000, ...
          0.5000000000000000, ...
          0.9388435616288391, ...
          0.0611564383711609, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.9692652109323359, ...
          0.2838660486845689, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.2838660486845689, ...
          0.0307347890676641, ...
          0.2838660486845689, ...
          0.0307347890676641, ...
          0.9692652109323359, ...
          0.0307347890676641, ...
          0.9692652109323359, ...
          0.2838660486845689, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.7161339513154311, ...
          0.9692652109323359, ...
          0.7161339513154311, ...
          0.0307347890676641, ...
          0.2838660486845689 ];

  w = [ ...
          0.0541593744687068, ...
          0.0541593744687068, ...
          0.0541593744687068, ...
          0.0541593744687068, ...
          0.0541593744687068, ...
          0.0541593744687068, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0062685994124186, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0248574797680029, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0114737257670222, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717, ...
          0.0120146004391717 ];

  return
end
