stroud_rule
    
    
    
      stroud_rule,
      a MATLAB code which
      defines quadrature rules for a variety of M-dimensional regions, 
      including the interior of the square, cube and hypercube, the pyramid,
      cone and ellipse, the hexagon, the M-dimensional octahedron,
      the circle, sphere and hypersphere, the triangle, tetrahedron and simplex,
      and the surface of the circle, sphere and hypersphere.
    
    
      A few other rules have been collected as well, 
      particularly for quadrature over the interior of a triangle, which is 
      useful in finite element calculations.
    
    
      Arthur Stroud published his vast collection of quadrature formulas
      for multidimensional regions in 1971.  In a few cases, he printed 
      sample Fortran77 programs to compute these integrals.  Integration 
      regions included:
      
        - 
          C2, the interior of the square;
        
 
        - 
          C3, the interior of the cube;
        
 
        - 
          CN, the interior of the N-dimensional hypercube; 
        
 
        - 
          CN:C2, a 3-dimensional pyramid;
        
 
        - 
          CN:S2, a 3-dimensional cone;
        
 
        - 
          CN_SHELL, the region contained between two concentric 
          N-dimensional hypercubes;
        
 
        - 
          ELP, the interior of the 2-dimensional ellipse with
          weight function 1/sqrt((x-c)^2+y^2)/(sqrt((x+c)^2+y^2);
        
 
        - 
          EN_R, all of N-dimensional space, with the weight function:
          w(x) = exp ( - sqrt ( sum ( 1 <= i < n ) x(i)^2 ) );
         
        - 
          EN_R2, all of N-dimensional space, with the Hermite weight function:
          w(x) = product ( 1 <= i <= n ) exp ( - x(i)^2 );
        
 
        - 
          GN, the interior of the N-dimensional octahedron;
        
 
        - 
          H2, the interior of the 2-dimensional hexagon;
        
 
        - 
          PAR, the first parabolic region;
        
 
        - 
          PAR2, the second parabolic region;
        
 
        - 
          PAR3, the third parabolic region;
        
 
        - 
          S2, the interior of the circle;
        
 
        - 
          S3, the interior of the sphere;
        
 
        - 
          SN, the interior of the N-dimensional hypersphere;
        
 
        - 
          SN_SHELL, the region contained between two concentric N-dimensional hyperspheres;
        
 
        - 
          T2, the interior of the triangle;
        
 
        - 
          T3, the interior of the tetrahedron;
        
 
        - 
          TN, the interior of the N-dimensional simplex;
        
 
        - 
          TOR3:S2, the interior of a 3-dimensional torus with circular cross-section;
        
 
        - 
          TOR3:C2, the interior of a 3-dimensional torus with square cross-section;
        
 
        - 
          U2, the "surface" of the circle;
        
 
        - 
          U3, the surface of the sphere;
        
 
        - 
          UN, the surface of the N-dimensional sphere;
        
 
      
    
    
      We have added a few new terms for regions:
      
        - 
          CN_GEG, the N dimensional hypercube [-1,+1]^N, with the Gegenbauer
          weight function:
          w(alpha;x) = product ( 1 <= i <= n ) ( 1 - x(i)^2 )^alpha;
         
        - 
          CN_JAC, the N dimensional hypercube [-1,+1]^N, with the Beta or
          Jacobi weight function:
          w(alpha,beta;x) = product ( 1 <= i <= n ) ( 1 - x(i) )^alpha * ( 1 + x(i) )^beta;
         
        - 
          CN_LEG, the N dimensional hypercube [-1,+1]^N, with the Legendre
          weight function:
          w(x) = 1;
         
        - 
          EPN_GLG, the positive space [0,+oo)^N, with the generalized
          Laguerre weight function:
          w(alpha;x) = product ( 1 <= i <= n ) x(i)^alpha exp ( - x(i) );
         
        - 
          EPN_LAG, the positive space [0,+oo)^N, with the exponential or 
          Laguerre weight function:
          w(x) = product ( 1 <= i <= n ) exp ( - x(i) );
         
      
    
    
      Licensing:
    
 
    
      The information on this web page is distributed under the MIT license.
    
    
      Languages:
    
    
      stroud_rule is available in
      a C version and
      a C++ version and
      a Fortran77 version and
      a Fortran90 version and
      a MATLAB version and
      an Octave version.
    
    
      Related Data and Programs:
    
    
      
      stroud_rule_test
    
    
      
      disk_rule,
      a MATLAB code which
      computes quadrature rules for the unit disk in 2d, that is, 
      the interior of the circle of radius 1 and center (0,0).
    
    
      
      hexagon_stroud_rule,
      a MATLAB code which
      computes one of four Stroud quadrature rules over the interior 
      of the unit hexagon.
    
    
      
      pyramid_rule,
      a MATLAB code which 
      computes a quadrature rule for a pyramid.
    
    
      
      simplex_gm_rule,
      a MATLAB code which
      defines Grundmann-Moeller quadrature rules 
      over the interior of a triangle in 2d, a tetrahedron in 3d, or
      over the interior of the simplex in m dimensions.
    
    
      
      sphere_lebedev_rule,
      a MATLAB code which
      computes Lebedev quadrature rules
      on the surface of the unit sphere in 3d.
    
    
      
      tetrahedron_arbq_rule,
      a MATLAB code which
      returns quadrature rules, 
      with exactness up to total degree 15,
      over the interior of a tetrahedron in 3d,
      by Hong Xiao and Zydrunas Gimbutas.
    
    
      
      tetrahedron_keast_rule,
      a MATLAB code which
      defines Keast quadrature rules, with exactness degrees 0 through 8,
      over the interior of a tetrahedron in 3d.
    
    
      
      tetrahedron_ncc_rule,
      a MATLAB code which
      defines Newton-Cotes closed (NCC) quadrature rules 
      over the interior of a tetrahedron in 3d.
    
    
      
      tetrahedron_nco_rule,
      a MATLAB code which
      defines Newton-Cotes open (NCO) quadrature rules
      over the interior of a tetrahedron in 3d.
    
    
      
      triangle_dunavant_rule,
      a MATLAB code which
      defines Dunavant rules for quadrature 
      over the interior of a triangle in 2d.
    
    
      
      triangle_fekete_rule,
      a MATLAB code which
      defines Fekete rules for quadrature or interpolation 
      over the interior of a triangle in 2d.
    
    
      
      triangle_lyness_rule,
      a MATLAB code which
      returns Lyness-Jespersen quadrature rules 
      over the interior of a triangle in 2d.
    
    
      
      triangle_ncc_rule,
      a MATLAB code which
      defines Newton-Cotes closed (NCC) quadrature rules
      over the interior of a triangle in 2d.
    
    
      
      triangle_nco_rule,
      a MATLAB code which
      defines Newton-Cotes open (NCO) quadrature rules
      over the interior of a triangle in 2d.
    
    
      
      triangle_wandzura_rule,
      a MATLAB code which
      returns Wandzura quadrature rules of exactness 5, 10, 15, 20, 25 and 30
      over the interior of the triangle in 2d.
    
    
      Reference:
    
    
      
        - 
          Milton Abramowitz, Irene Stegun,
          Handbook of Mathematical Functions,
          National Bureau of Standards, 1964,
          ISBN: 0-486-61272-4,
          LC: QA47.A34.
         
        - 
          Jarle Berntsen, Terje Espelid,
          Algorithm 706:
          DCUTRI: an algorithm for adaptive cubature 
          over a collection of triangles,
          ACM Transactions on Mathematical Software,
          Volume 18, Number 3, September 1992, pages 329-342.
         
        -       
          SF Bockman,
          Generalizing the Formula for Areas of Polygons to Moments,
          American Mathematical Society Monthly,
          Volume 96, Number 2, February 1989, pages 131-132.
         
        - 
          Paul Bratley, Bennett Fox, Linus Schrage,
          A Guide to Simulation,
          Second Edition,
          Springer, 1987,
          ISBN: 0387964673,
          LC: QA76.9.C65.B73.
         
        - 
          William Cody, Kenneth Hillstrom,
          Chebyshev Approximations for the Natural Logarithm of the 
          Gamma Function,
          Mathematics of Computation,
          Volume 21, Number 98, April 1967, pages 198-203.
         
        - 
          Philip Davis, Philip Rabinowitz,
          Methods of Numerical Integration,
          Second Edition,
          Dover, 2007,
          ISBN: 0486453391,
          LC: QA299.3.D28.
         
        - 
          Elise deDoncker, Ian Robinson,
          Algorithm 612:
          Integration over a Triangle Using Nonlinear Extrapolation,
          ACM Transactions on Mathematical Software,
          Volume 10, Number 1, March 1984, pages 17-22.
         
        - 
          Hermann Engels,
          Numerical Quadrature and Cubature,
          Academic Press, 1980,
          ISBN: 012238850X,
          LC: QA299.3E5.
         
        - 
          Thomas Ericson, Victor Zinoviev,
          Codes on Euclidean Spheres,
          Elsevier, 2001,
          ISBN: 0444503293,
          LC: QA166.7E75
         
        - 
          Carlos Felippa,
          A compendium of FEM integration formulas for symbolic work,
          Engineering Computation,
          Volume 21, Number 8, 2004, pages 867-890.
         
        - 
          Gerald Folland,
          How to Integrate a Polynomial Over a Sphere,
          American Mathematical Monthly,
          Volume 108, Number 5, May 2001, pages 446-448.
         
        - 
          Bennett Fox,
          Algorithm 647:
          Implementation and Relative Efficiency of Quasirandom
          Sequence Generators,
          ACM Transactions on Mathematical Software,
          Volume 12, Number 4, December 1986, pages 362-376.
         
        - 
          Axel Grundmann, Michael Moeller,
          Invariant Integration Formulas for the N-Simplex 
          by Combinatorial Methods,
          SIAM Journal on Numerical Analysis,
          Volume 15, Number 2, April 1978, pages 282-290.
         
        - 
          John Harris, Horst Stocker,
          Handbook of Mathematics and Computational Science,
          Springer, 1998,
          ISBN: 0-387-94746-9,
          LC: QA40.S76.
         
        - 
          Patrick Keast,
          Moderate Degree Tetrahedral Quadrature Formulas,
          Computer Methods in Applied Mechanics and Engineering,
          Volume 55, Number 3, May 1986, pages 339-348.
         
        - 
          Vladimir Krylov,
          Approximate Calculation of Integrals,
          Dover, 2006,
          ISBN: 0486445798,
          LC: QA311.K713.
         
        - 
          Dirk Laurie,
          Algorithm 584:
          CUBTRI, Automatic Cubature Over a Triangle,
          ACM Transactions on Mathematical Software,
          Volume 8, Number 2, 1982, pages 210-218.
         
        - 
          Frank Lether,
          A Generalized Product Rule for the Circle,
          SIAM Journal on Numerical Analysis,
          Volume 8, Number 2, June 1971, pages 249-253.
         
        - 
          James Lyness, Dennis Jespersen,
          Moderate Degree Symmetric Quadrature Rules for the Triangle,
          Journal of the Institute of Mathematics and its Applications,
          Volume 15, Number 1, February 1975, pages 19-32.
         
        - 
          James Lyness, BJJ McHugh,
          Integration Over Multidimensional Hypercubes, 
          A Progressive Procedure,
          The Computer Journal,
          Volume 6, 1963, pages 264-270.
         
        - 
          AD McLaren,
          Optimal Numerical Integration on a Sphere,
          Mathematics of Computation,
          Volume 17, Number 84, October 1963, pages 361-383.
          
        - 
          Albert Nijenhuis, Herbert Wilf,
          Combinatorial Algorithms for Computers and Calculators,
          Second Edition,
          Academic Press, 1978,
          ISBN: 0-12-519260-6,
          LC: QA164.N54.
         
        - 
          William Peirce,
          Numerical Integration Over the Planar Annulus,
          Journal of the Society for Industrial and Applied Mathematics,
          Volume 5, Number 2, June 1957, pages 66-73.
         
        - 
          Hans Rudolf Schwarz,
          Finite Element Methods,
          Academic Press, 1988,
          ISBN: 0126330107,
          LC: TA347.F5.S3313.
         
        - 
          Gilbert Strang, George Fix,
          An Analysis of the Finite Element Method,
          Cambridge, 1973,
          ISBN: 096140888X,
          LC: TA335.S77.
         
        - 
          Arthur Stroud,
          Approximate Calculation of Multiple Integrals,
          Prentice Hall, 1971,
          ISBN: 0130438936,
          LC: QA311.S85.
         
        - 
          Arthur Stroud, Don Secrest,
          Gaussian Quadrature Formulas,
          Prentice Hall, 1966,
          LC: QA299.4G3S7.
         
        - 
          Stephen Wandzura, Hong Xiao,
          Symmetric Quadrature Rules on a Triangle,
          Computers and Mathematics with Applications,
          Volume 45, 2003, pages 1829-1840.
         
        - 
          Stephen Wolfram,
          The Mathematica Book,
          Fourth Edition,
          Cambridge University Press, 1999,
          ISBN: 0-521-64314-7,
          LC: QA76.95.W65.
         
        - 
          Dongbin Xiu,
          Numerical integration formulas of degree two,
          Applied Numerical Mathematics,
          Volume 58, 2008, pages 1515-1520.
         
        - 
          Olgierd Zienkiewicz,
          The Finite Element Method,
          Sixth Edition,
          Butterworth-Heinemann, 2005,
          ISBN: 0750663200,
          LC: TA640.2.Z54
         
        - 
          Daniel Zwillinger, editor,
          CRC Standard Mathematical Tables and Formulae,
          30th Edition,
          CRC Press, 1996,
          ISBN: 0-8493-2479-3,
          LC: QA47.M315.
         
      
    
    
      Source Code:
    
    
      
        - 
          ball_f1_nd.m, 
          approximates an integral in a ball in ND;
        
 
        - 
          ball_f3_nd.m, 
          approximates an integral in a ball in ND;
        
 
        - 
          ball_monomial_nd.m, 
          approximates the integral of a monomial in a ball in ND;
        
 
        - 
          ball_unit_07_3d.m, 
          approximates an integral in the unit ball in 3D;
        
 
        - 
          ball_unit_14_3d.m, 
          approximates an integral in the unit ball in 3D;
        
 
        - 
          ball_unit_15_3d.m, 
          approximates an integral in the unit ball in 3D;
        
 
        - 
          ball_unit_f1_nd.m, 
          approximates an integral in the unit ball in ND;
        
 
        - 
          ball_unit_f3_nd.m, 
          approximates an integral in the unit ball in ND;
        
 
        - 
          ball_unit_volume_3d.m, 
          returns the volume of the unit ball in 3D;
        
 
        - 
          ball_unit_volume_nd.m, 
          returns the volume of the unit ball in ND;
        
 
        - 
          ball_volume_3d.m, 
          returns the volume of a ball in 3D;
        
 
        - 
          ball_volume_nd.m, 
          returns the volume of a ball in ND;
        
 
        - 
          c1_geg_monomial_integral.m
          integral of a monomial with Gegenbauer weight over C1.
        
 
        - 
          c1_jac_monomial_integral.m
          integral of a monomial with Jacobi weight over C1.
        
 
        - 
          c1_leg_monomial_integral.m
          integral of a monomial with Legendre weight over C1.
        
 
        - 
          
          circle_annulus.m, 
          approximates an integral inside a circular annulus in 2D;
        
 
        - 
          
          circle_annulus_area_2d.m, 
          returns the area of a circular annulus in 2D;
        
 
        - 
          
          circle_annulus_sector.m, 
          approximates an integral in a sector of a circular annulus in 2D;
        
 
        - 
          
          circle_annulus_sector_area_2d.m, 
          returns the area of a sector of a circular annulus in 2D;
        
 
        - 
          
          circle_area_2d.m, 
          returns the area of a circle in 2D;
        
 
        - 
          
          circle_cap_area_2d.m,
          computes the area of a circle cap in 2D.
        
 
        - 
          
          circle_cum.m, 
          computes an integral on the circumference of a circle in 2D;
        
 
        - 
          
          circle_rt_set.m, 
          sets an R-Theta product quadrature rule for inside a circle in 2D;
        
 
        - 
          
          circle_rt_size.m, 
          sizes an R-Theta product quadrature rule for inside a circle in 2D;
        
 
        - 
          
          circle_rt_sum.m, 
          applies an R-Theta product quadrature rule inside a circle in 2D;
        
 
        - 
          
          circle_sector.m, 
          approximates an integral in a circular sector in 2D;
        
 
        - 
          
          circle_sector_area_2d.m, 
          returns the area of a circular sector in 2D;
        
 
        - 
          
          circle_triangle_area_2d.m, 
          returns the area of a circular triangle in 2D;
        
 
        - 
          
          circle_xy_set.m, 
          sets an XY quadrature rule for inside a circle in 2D;
        
 
        - 
          
          circle_xy_size.m, 
          sizes an XY product quadrature rule for inside a circle in 2D;
        
 
        - 
          
          circle_xy_sum.m, 
          applies an XY quadrature rule inside a circle in 2D;
        
 
        - 
          cn_geg_00_1.m
          implements the midpoint rule for region CN_GEG.
        
 
        - 
          cn_geg_01_1.m 
          implements a precision 1 rule for region CN_GEG.
        
 
        - 
          cn_geg_02_xiu.m
          implements the Xiu rule for region CN_GEG.
        
 
        - 
          cn_geg_03_xiu.m
          implements the Xiu rule for region CN_GEG.
        
 
        - 
          cn_geg_monoial_integral.m
          integral of a monomial with Gegenbauer weight over CN.
        
 
        - 
          cn_jac_00_1.m
          implements the midpoint rule for region CN_JAC.
        
 
        - 
          cn_jac_01_1.m 
          implements a precision 1 rule for region CN_JAC.
        
 
        - 
          cn_jac_02_xiu.m
          implements the Xiu rule for region CN_JAC.
        
 
        - 
          cn_jac_monoial_integral.m
          integral of a monomial with Jacobi weight over CN.
        
 
        - 
          cn_leg_01_1.m 
          implements the midpoint rule for region CN_LEG.
        
 
        - 
          cn_leg_02_xiu.m
          implements the Xiu rule for region CN_LEG.
        
 
        - 
          cn_leg_03_1.m
          implements the Stroud CN:3-1 rule for region CN_LEG.
        
 
        - 
          cn_leg_03_xiu.m
          implements the Xiu rule for region CN_LEG.
        
 
        - 
          cn_leg_05_1.m
          implements the Stroud CN:5-1 rule for region CN_LEG.
        
 
        - 
          cn_leg_05_2.m
          implements the Stroud CN:5-2 rule for region CN_LEG.
        
 
        - 
          cn_leg_monoial_integral.m
          integral of a monomial with Legendre weight over CN.
        
 
        - 
          
          cone_unit_3d.m, 
          approximates an integral inside a cone in 3D;
        
 
        - 
          
          cone_volume_3d.m, 
          returns the volume of a cone in 3D;
        
 
        - 
          
          cube_shell_nd.m, 
          aproximates an integral inside a cubic shell in ND;
        
 
        - 
          
          cube_shell_volume_nd.m, 
          returns the volume of a cubic shell in ND;
        
 
        - 
          cube_unit_3d.m, 
          approximates an integral inside the unit cube in 3D;
        
 
        - 
          cube_unit_nd.m, 
          approximates an integral inside the unit cube in ND;
        
 
        - 
          cube_unit_volume_nd.m, 
          returns the volume of the unit cube in ND;
        
 
        - 
          ellipse_area_2d.m, 
          computes the area of an ellipse in 2D;
        
 
        - 
          ellipse_circumference_2d.m, 
          computes the circumference of an ellipse in 2D;
        
 
        - 
          ellipse_eccentricity_2d.m, 
          computes the eccentricity of an ellipse in 2D;
        
 
        - 
          ellipsoid_volume_3d.m, 
          computes the volume of an ellipsoid in 3D;
        
 
        - 
          en_r2_01_1.m
          a precision 1 rule for EN_R2.
        
 
        - 
          en_r2_02_xiu.m
          a precision 2 rule for EN_R2.
        
 
        - 
          en_r2_03_1.m
          a precision 3 rule for EN_R2.
        
 
        - 
          en_r2_03_2.m
          a precision 3 rule for EN_R2.
        
 
        - 
          en_r2_03_xiu.m
          a precision 3 rule for EN_R2.
        
 
        - 
          en_r2_05_1.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_05_2.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_05_3.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_05_4.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_05_5.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_05_6.m
          a precision 5 rule for EN_R2.
        
 
        - 
          en_r2_07_1.m
          a precision 7 rule for EN_R2.
        
 
        - 
          en_r2_07_2.m
          a precision 7 rule for EN_R2.
        
 
        - 
          en_r2_07_3.m
          a precision 7 rule for EN_R2.
        
 
        - 
          en_r2_09_1.m
          a precision 9 rule for EN_R2.
        
 
        - 
          en_r2_11_1.m
          a precision 11 rule for EN_R2.
        
 
        - 
          en_r2_monomial_integral.m
          evaluates the exact integral of a monomial in Stroud's EN_R2 region.
        
 
        - 
          ep1_glg_monomial_integral.m
          integral of monomial with generalized Laguerre weight on EP1.
        
 
        - 
          ep1_lag_monomial_integral.m
          integral of monomial with Laguerre weight on EP1.
        
 
        - 
          epn_glg_001.m
          implements the midpoint rule for region EPN_GLG.
        
 
        - 
          epn_glg_01_1.m
          implements a precision 1 rule for region EPN_GLG.
        
 
        - 
          epn_glg_02_xiu.m
          implements the Xiu rule for region EPN_GLG.
        
 
        - 
          epn_glg_monomial_integral.m
          integral of monomial with generalized Laguerre weight on EPN.
        
 
        - 
          epn_lag_001.m
          implements the midpoint rule for region EPN_LAG.
        
 
        - 
          epn_lag_01_1.m
          implements a precision 1 rule for region EPN_LAG.
        
 
        - 
          epn_lag_02_xiu.m
          implements the Xiu rule for region EPN_LAG.
        
 
        - 
          epn_lag_monomial_integral.m
          integral of monomial with Laguerre weight on EPN.
        
 
        - 
          gw_02_xiu.m
          implements the Golub-Welsch version of the Xiu rule.
        
 
        - 
          hexagon_area_2d.m, 
          returns the area of a regular hexagon in 2D;
        
 
        - 
          hexagon_sum.m, 
          applies a quadrature rule for a hexagon in 2D;
        
 
        - 
          hexagon_unit_area_2d.m, 
          returns the area of the unit hexagon in 2D;
        
 
        - 
          hexagon_unit_set.m, 
          sets a quadrature rule for the unit hexagon in 2D;
        
 
        - 
          hexagon_unit_size.m, 
          sizes a quadrature rule for the unit hexagon in 2D;
        
 
        - 
          i4_factorial2.m, 
          computes N!!, the double factorial function;
        
 
        - 
          ksub_next2.m, 
          computes the next K subset of an N set;
        
 
        - 
          legendre_set.m, 
          sets a Gauss-Legendre rule to integrate F(X)
          on [-1,1];
        
 
        - 
          legendre_set_x1.m, 
          sets a Gauss-Legendre rule to integrate ( 1 + X ) * F(X)
          on [-1,1];
        
 
        - 
          legendre_set_x2.m, 
          sets a Gauss-Legendre rule to integrate ( 1 + X )**2 * F(X)
          on [-1,1];
        
 
        - 
          
          lens_half_area_2d.m, 
          returns the area of a circular half lens in 2D;
        
 
        - 
          
          lens_half_area_h_2d.m, 
          returns the area of a circular half lens in 2D;
        
 
        - 
          
          lens_half_area_w_2d.m, 
          returns the area of a circular half lens in 2D;
        
 
        - 
          
          monomial_value.m, 
          evaluates a monomial given the exponents.
        
 
        - 
          octahedron_volume_nd.m, 
          approximates an integral in the unit octahedron in ND;
        
 
        - 
          octahedron_unit_volume_nd.m, 
          returns the volume of the unit octahedron in ND;
        
 
        - 
          parallelipiped_volume_3d.m, 
          returns the volume of a parallelipiped in 3D;
        
 
        - 
          parallelipiped_volume_nd.m, 
          returns the volume of a parallelipiped in ND;
        
 
        - 
          polygon_1_2d.m, 
          integrates the function 1 over a polygon in 2D;
        
 
        - 
          polygon_x_2d.m, 
          integrates the function X over a polygon in 2D;
        
 
        - 
          polygon_xx_2d.m, 
          integrates the function X^2 over a polygon in 2D;
        
 
        - 
          polygon_xy_2d.m, 
          integrates the function X*Y over a polygon in 2D;
        
 
        - 
          polygon_y_2d.m, 
          integrates the function Y over a polygon in 2D;
        
 
        - 
          polygon_yy_2d.m, 
          integrates the function Y*Y over a polygon in 2D;
        
 
        - 
          pyramid_unit_o01_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o05_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o06_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o08_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o08b_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o09_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o13_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o18_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o27_3d.m,
          approximates an integral inside a unit pyramid in 3d.
        
 
        - 
          pyramid_unit_o48_3d.m, 
          approximates an integral inside a unit pyramid in 3D;
        
 
        - 
          pyramid_unit_monomial_3d.m, 
          returns the exact integral of a monomial in a unit pyramid in 3D;
        
 
        - 
          pyramid_unit_volume_3d.m, 
          returns the volume of a unit pyramid in 3D;
        
 
        - 
          pyramid_volume_3d.m, 
          returns the volume of a pyramid in 3D;
        
 
        - 
          qmdpt.m, 
          carries out product midpoint quadrature inside the unit cube in ND;
        
 
        - 
          qmult_1d.m, 
          approximates the integral of a function over an interval in 1D;
        
 
        - 
          qmult_2d.m, 
          approximates the integral of a function over a region with
          varying Y dimensions in 2D;
        
 
        - 
          qmult_3d.m, 
          approximates the integral of a function over a region with
          varying Y and Z dimensions in 3D;
        
 
        - 
          r8_hyper_2f1.m
          evaluates the hypergeometric function 2F1(A,B,C,X).
        
 
        - 
          
          r8_mop.m
          returns the I-th power of -1 as an R8 value.
        
 
        - 
          r8_psi.m
          evaluates the function Psi(X).
        
 
        - 
          r8_swap.m, 
          swaps two R8s;
        
 
        - 
          r8_swap3.m, 
          swaps three R8s;
        
 
        - 
          r8_uniform_01.m, 
          returns a unit pseudorandom number R8;
        
 
        - 
          r8ge_det.m, 
          computes the determinant of a matrix factored by R8GE_FA;
        
 
        - 
          r8ge_fa.m, 
          factors a general matrix;
        
 
        - 
          r8vec_even_select.m, 
          returns the I-th of N even spaced R8s;
        
 
        - 
          r8vec_print.m, 
          prints an R8VEC;
        
 
        - 
          rectangle_3d.m, 
          approximates an integral inside a rectangular block in 3D;
        
 
        - 
          rectangle_sub_2d.m, 
          carries out composite quadrature in a rectangle in 2D;
        
 
        - 
          rule_adjust.m, 
          maps a quadrature rule from [A,B] to [C,D];
        
 
        - 
          s_len_trim.m, 
          returns the length of a string to the last nonblank;
        
 
        - 
          simplex_nd.m, 
          approximates an integral in a simplex in ND;
        
 
        - 
          simplex_unit_01_nd.m, 
          approximates an integral in the unit simplex in ND;
        
 
        - 
          simplex_unit_03_nd.m, 
          approximates an integral in the unit simplex in ND;
        
 
        - 
          simplex_unit_05_nd.m, 
          approximates an integral in the unit simplex in ND;
        
 
        - 
          simplex_unit_05_2_nd.m, 
          approximates an integral in the unit simplex in ND;
        
 
        - 
          simplex_unit_volume_nd.m, 
          returns the volume of the unit simplex in ND;
        
 
        - 
          simplex_volume_nd.m, 
          returns the volume of a simplex in ND;
        
 
        - 
          sin_power_int.m, 
          computes the sine power integral;
        
 
        - 
          sphere_05_nd.m, 
          approximates an integral on the surface of a sphere in ND;
        
 
        - 
          sphere_07_1_nd.m, 
          approximates an integral on the surface of a sphere in ND;
        
 
        - 
          sphere_area_3d.m, 
          computes the surface area of a sphere in 3D;
        
 
        - 
          sphere_area_nd.m, 
          computes the surface area of a sphere in ND;
        
 
        - 
          sphere_cap_area_2d.m, 
          computes the surface area of a spherical cap in 2D;
        
 
        - 
          sphere_cap_area_3d.m, 
          computes the surface area of a spherical cap in 3D;
        
 
        - 
          sphere_cap_area_nd.m, 
          computes the surface area of a spherical cap in ND;
        
 
        - 
          sphere_cap_volume_2d.m, 
          computes the volume of a spherical cap in 2D;
        
 
        - 
          sphere_cap_volume_3d.m, 
          computes the volume of a spherical cap in 3D;
        
 
        - 
          sphere_cap_volume_nd.m, 
          computes the volume of a spherical cap in ND;
        
 
        - 
          sphere_k.m, 
          returns a factor useful in spherical calculations;
        
 
        - 
          sphere_monomial_int_nd.m, 
          integrates a monomial over the surface of a sphere in ND;
        
 
        - 
          sphere_shell_03_nd.m, 
          approximates an integral inside a spherical shell in ND;
        
 
        - 
          sphere_shell_volume_nd.m, 
          computes the volume of a spherical shell in ND;
        
 
        - 
          sphere_unit_07_3d.m, 
          approximates an integral on the surface of the unit sphere in 3D;
        
 
        - 
          sphere_unit_11_3d.m, 
          approximates an integral on the surface of the unit sphere in 3D;
        
 
        - 
          sphere_unit_14_3d.m, 
          approximates an integral on the surface of the unit sphere in 3D;
        
 
        - 
          sphere_unit_15_3d.m, 
          approximates an integral on the surface of the unit sphere in 3D;
        
 
        - 
          sphere_unit_03_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_04_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_05_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_07_1_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_07_2_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_11_nd.m, 
          approximates an integral on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_area_3d.m, 
          computes the surface area of the unit sphere in 3D;
        
 
        - 
          sphere_unit_area_nd.m, 
          computes the surface area of the unit sphere in ND;
        
 
        - 
          sphere_unit_area_values.m, 
          returns some values of the area of the unit sphere in ND.
        
 
        - 
          sphere_unit_monomial_nd.m, 
          integrates a monomial on the surface of the unit sphere in ND;
        
 
        - 
          sphere_unit_volume_nd.m, 
          computes the volume of the unit sphere in ND.
        
 
        - 
          sphere_unit_volume_values.m, 
          returns some values of the volume of the unit sphere in ND.
        
 
        - 
          sphere_volume_2d.m, 
          computes the volume of a sphere in 2D;
        
 
        - 
          sphere_volume_3d.m, 
          computes the volume of a sphere in 3D;
        
 
        - 
          sphere_volume_nd.m, 
          computes the volume of a sphere in ND;
        
 
        - 
          square_sum.m, 
          evaluates a quadrature rule for the square;
        
 
        - 
          square_unit_set.m, 
          sets one of several quadrature rules for the unit square;
        
 
        - 
          square_unit_size.m, 
          sizes one of several quadrature rules for the unit square;
        
 
        - 
          square_unit_sum.m, 
          evaluates a quadrature rule for the unit square;
        
 
        - 
          subset_gray_next.m, 
          generates all subsets of a set, one at a time;
        
 
        - 
          tetra_07.m, 
          approximates an integral inside a tetrahedron in 3D;
        
 
        - 
          tetra_sum.m, 
          evaluates a quadrature rule in a tetrahedron in 3D;
        
 
        - 
          tetra_tproduct.m, 
          approximates an integral inside a tetrahedron in 3D;
        
 
        - 
          tetra_unit_set.m, 
          sets one of several quadrature rules for the unit tetrahedron in 3D;
        
 
        - 
          tetra_unit_size.m, 
          sizes one of several quadrature rules for the unit tetrahedron in 3D;
        
 
        - 
          tetra_unit_sum.m, 
          evaluates a quadrature rules for the unit tetrahedron in 3D;
        
 
        - 
          tetra_unit_volume.m, 
          computes the volume of the unit tetrahedron;
        
 
        - 
          tetra_volume.m, 
          computes the volume of a tetrahedron;
        
 
        - 
          torus_1.m, 
          approximates an integral on the surface of a torus in 3D;
        
 
        - 
          torus_5s2.m, 
          approximates an integral inside a torus in 3D;
        
 
        - 
          torus_6s2.m, 
          approximates an integral inside a torus in 3D;
        
 
        - 
          torus_14s.m, 
          approximates an integral inside a torus in 3D;
        
 
        - 
          torus_area_3d.m, 
          returns the area of a torus in 3D;
        
 
        - 
          torus_square_5c2.m, 
          approximates an integral in a square torus in 3D;
        
 
        - 
          torus_square_14c.m, 
          approximates an integral in a square torus in 3D;
        
 
        - 
          torus_square_area_3d.m, 
          returns the area of a square torus in 3D;
        
 
        - 
          torus_square_volume_3d.m, 
          returns the volume of a square torus in 3D;
        
 
        - 
          torus_volume_3d.m, 
          returns the volume of a torus in 3D;
        
 
        - 
          triangle_rule_adjust.m, 
          adjusts a quadrature rule defined for a unit triangle to be used
          on a general triangle;
        
 
        - 
          triangle_sub.m, 
          carries out a quadrature rule over subdivisions of a triangle;
        
 
        - 
          triangle_sum.m, 
          carries out a quadrature rule in a triangle;
        
 
        - 
          triangle_sum_adjusted.m, 
          carries out an adjusted quadrature rule in a triangle;
        
 
        - 
          triangle_unit_product_set.m, 
          sets a product quadrature rule for the unit triangle;
        
 
        - 
          triangle_unit_product_size.m, 
          sizes a product quadrature rule for the unit triangle;
        
 
        - 
          triangle_unit_set.m, 
          sets any one of a set of quadrature rules for
          the unit triangle;
        
 
        - 
          triangle_unit_size.m, 
          returns the order of any one of a set of quadrature rules for
          the unit triangle;
        
 
        - 
          triangle_unit_sum.m, 
          carries out a quadrature rule in the unit triangle;
        
 
        - 
          triangle_unit_volume.m, 
          returns the volume of the unit triangle;
        
 
        - 
          triangle_volume.m, 
          returns the volume of a triangle;
        
 
        - 
          tvec_even.m, 
          computes evenly spaced angles between 0 and 2*PI;
        
 
        - 
          tvec_even2.m, 
          computes evenly spaced angles between 0 and 2*PI;
        
 
        - 
          tvec_even3.m, 
          computes evenly spaced angles between 0 and 2*PI;
        
 
        - 
          tvec_even_bracket.m, 
          computes evenly spaced angles between THETA1 and THETA2;
        
 
        - 
          tvec_even_bracket2.m, 
          computes evenly spaced angles between THETA1 and THETA2;
        
 
        - 
          tvec_even_bracket3.m, 
          computes evenly spaced angles between THETA1 and THETA2;
        
 
        - 
          vec_lex_next.m, 
          generates all N-vectors of integers modulo a given base;
        
 
      
    
    
    
      Last revised on 11 January 2021.