Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the develop branch, built from commit 9d7de5a977.
PrevUpHomeNext

Elliptic Integral Overview

The main reference for the elliptic integrals is:

M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.

and its recently revised version NIST Digital Library of Mathematical Functions (DMLF), in particular

Elliptic Integrals, B. C. Carlson

Mathworld also contain a lot of useful background information:

Weisstein, Eric W. "Elliptic Integral." From MathWorld--A Wolfram Web Resource.

As does Wikipedia Elliptic integral.

Notation

All variables are real numbers unless otherwise noted.

Definition

is called elliptic integral if R(t, s) is a rational function of t and s, and s2 is a cubic or quartic polynomial in t.

Elliptic integrals generally cannot be expressed in terms of elementary functions. However, Legendre showed that all elliptic integrals can be reduced to the following three canonical forms:

Elliptic Integral of the First Kind (Legendre form)

Elliptic Integral of the Second Kind (Legendre form)

Elliptic Integral of the Third Kind (Legendre form)

where

[Note] Note

φ is called the amplitude.

k is called the elliptic modulus or eccentricity.

α is called the modular angle.

n is called the characteristic.

[Caution] Caution

Perhaps more than any other special functions the elliptic integrals are expressed in a variety of different ways. In particular, the final parameter k (the modulus) may be expressed using a modular angle α, or a parameter m. These are related by:

k = sin  α

m = k2 = sin2α

So that the integral of the third kind (for example) may be expressed as either:

Π(n, φ, k)

Π(n, φ \ α)

Π(n, φ | m)

To further complicate matters, some texts refer to the complement of the parameter m, or 1 - m, where:

1 - m = 1 - k2 = cos2α

This implementation uses k throughout: this matches the requirements of the Technical Report on C++ Library Extensions.

So you should be extra careful when using these functions!

[Warning] Warning

Boost.Math order of arguments differs from other implementations: k is always the first argument.

A simple example comparing use of Wolfram Alpha with Boost.Math (including much higher precision using Boost.Multiprecision) is jacobi_zeta_example.cpp.

When φ = π / 2, the elliptic integrals are called complete.

Complete Elliptic Integral of the First Kind (Legendre form)

Complete Elliptic Integral of the Second Kind (Legendre form)

Complete Elliptic Integral of the Third Kind (Legendre form)

Legendre also defined a fourth integral /D(φ,k)/ which is a combination of the other three:

Like the other Legendre integrals this comes in both complete and incomplete forms.

Carlson Elliptic Integrals

Carlson [Carlson77] [Carlson78] gives an alternative definition of elliptic integral's canonical forms:

Carlson's Elliptic Integral of the First Kind

where x, y, z are nonnegative and at most one of them may be zero.

Carlson's Elliptic Integral of the Second Kind

where x, y are nonnegative, at most one of them may be zero, and z must be positive.

Carlson's Elliptic Integral of the Third Kind

where x, y, z are nonnegative, at most one of them may be zero, and p must be nonzero.

Carlson's Degenerate Elliptic Integral

where x is nonnegative and y is nonzero.

[Note] Note

RC(x, y) = RF(x, y, y)

RD(x, y, z) = RJ(x, y, z, z)

Carlson's Symmetric Integral

Duplication Theorem

Carlson proved in [Carlson78] that

Carlson's Formulas

The Legendre form and Carlson form of elliptic integrals are related by equations:

In particular,

Miscellaneous Elliptic Integrals

There are two functions related to the elliptic integrals which otherwise defy categorisation, these are the Jacobi Zeta function:

and the Heuman Lambda function:

Both of these functions are easily implemented in terms of Carlson's integrals, and are provided in this library as jacobi_zeta and heuman_lambda.

Numerical Algorithms

The conventional methods for computing elliptic integrals are Gauss and Landen transformations, which converge quadratically and work well for elliptic integrals of the first and second kinds. Unfortunately they suffer from loss of significant digits for the third kind.

Carlson's algorithm [Carlson79] [Carlson78], by contrast, provides a unified method for all three kinds of elliptic integrals with satisfactory precisions.

References

Special mention goes to:

A. M. Legendre, Traité des Fonctions Elliptiques et des Integrales Euleriennes, Vol. 1. Paris (1825).

However the main references are:

  1. M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.
  2. NIST Digital Library of Mathematical Functions, Elliptic Integrals, B. C. Carlson
  3. B.C. Carlson, Computing elliptic integrals by duplication, Numerische Mathematik, vol 33, 1 (1979).
  4. B.C. Carlson, Elliptic Integrals of the First Kind, SIAM Journal on Mathematical Analysis, vol 8, 231 (1977).
  5. B.C. Carlson, Short Proofs of Three Theorems on Elliptic Integrals, SIAM Journal on Mathematical Analysis, vol 9, 524 (1978).
  6. B.C. Carlson and E.M. Notis, ALGORITHM 577: Algorithms for Incomplete Elliptic Integrals, ACM Transactions on Mathematical Software, vol 7, 398 (1981).
  7. B. C. Carlson, On computing elliptic integrals and functions. J. Math. and Phys., 44 (1965), pp. 36-51.
  8. B. C. Carlson, A table of elliptic integrals of the second kind. Math. Comp., 49 (1987), pp. 595-606. (Supplement, ibid., pp. S13-S17.)
  9. B. C. Carlson, A table of elliptic integrals of the third kind. Math. Comp., 51 (1988), pp. 267-280. (Supplement, ibid., pp. S1-S5.)
  10. B. C. Carlson, A table of elliptic integrals: cubic cases. Math. Comp., 53 (1989), pp. 327-333.
  11. B. C. Carlson, A table of elliptic integrals: one quadratic factor. Math. Comp., 56 (1991), pp. 267-280.
  12. B. C. Carlson, A table of elliptic integrals: two quadratic factors. Math. Comp., 59 (1992), pp. 165-180.
  13. B. C. Carlson, Numerical computation of real or complex elliptic integrals. Numerical Algorithms, Volume 10, Number 1 / March, 1995, p13-26.
  14. B. C. Carlson and John L. Gustafson, Asymptotic Approximations for Symmetric Elliptic Integrals, SIAM Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303.

The following references, while not directly relevant to our implementation, may also be of interest:

  1. R. Burlisch, Numerical Computation of Elliptic Integrals and Elliptic Functions. Numerical Mathematik 7, 78-90.
  2. R. Burlisch, An extension of the Bartky Transformation to Incomplete Elliptic Integrals of the Third Kind. Numerical Mathematik 13, 266-284.
  3. R. Burlisch, Numerical Computation of Elliptic Integrals and Elliptic Functions. III. Numerical Mathematik 13, 305-315.
  4. T. Fukushima and H. Ishizaki, Numerical Computation of Incomplete Elliptic Integrals of a General Form. Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July, 1994, 237-251.

PrevUpHomeNext