simplex_gm_rule, a Python code which defines Grundmann-Moeller quadrature rules over the interior of a simplex in M dimensions.

The user can choose the spatial dimension M, thus defining the region to be a triangle (M = 2), tetrahedron (M = 3) or a general M-dimensional simplex.

The user chooses the index S of the rule. Rules are available with index S = 0 on up. A rule of index S will exactly integrate any polynomial of total degree 2*S+1 or less.

The rules are defined on the unit M-dimensional simplex. A simple linear transformation can be used to map the vertices and weights to an arbitrary simplex, while preserving the accuracy of the rule.


The computer code and data files described and made available on this web page are distributed under the MIT license


simplex_gm_rule is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

alpert_rule, a Python code which can set up an alpert quadrature rule for functions which are regular, log(x) singular, or 1/sqrt(x) singular.

annulus_rule, a Python code which computes a quadrature rule for estimating integrals of a function over the interior of a circular annulus in 2D.

disk_rule, a Python code which computes quadrature rules over the interior of the general disk in 2D, with radius RC and center (XC,YC).

line_ncc_rule, a Python code which computes a Newton Cotes Closed (NCC) quadrature rule, using equally spaced points, over the interior of a line segment in 1D.

quadrule, a Python code which defines quadrature rules for approximating an integral over a 1D domain.

simplex_grid, a Python code which generates a regular grid of points over the interior of an arbitrary simplex in M dimensions.

square_minimal_rule, a Python code which returns almost minimal quadrature rules, with exactness up to total degree 55, over the interior of the symmetric square in 2D, by Mattia Festa and Alvise Sommariva.

truncated_normal_rule, a Python code which computes a quadrature rule for a normal distribution that has been truncated to [A,+oo), (-oo,B] or [A,B].


  1. Paul Bratley, Bennett Fox, Linus Schrage,
    A Guide to Simulation,
    Second Edition,
    Springer, 1987,
    ISBN: 0387964673,
    LC: QA76.9.C65.B73.
  2. 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.
  3. 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.
  4. Pierre LEcuyer,
    Random Number Generation,
    in Handbook of Simulation,
    edited by Jerry Banks,
    Wiley, 1998,
    ISBN: 0471134031,
    LC: T57.62.H37.
  5. Peter Lewis, Allen Goodman, James Miller,
    A Pseudo-Random Number Generator for the System/360,
    IBM Systems Journal,
    Volume 8, 1969, pages 136-143.
  6. Albert Nijenhuis, Herbert Wilf,
    Combinatorial Algorithms for Computers and Calculators,
    Second Edition,
    Academic Press, 1978,
    ISBN: 0-12-519260-6,
    LC: QA164.N54.
  7. ML Wolfson, HV Wright,
    Algorithm 160: Combinatorial of M Things Taken N at a Time,
    Communications of the ACM,
    Volume 6, Number 4, April 1963, page 161.

Source Code:

Last revised on 03 March 2017.