GeographicLib::EllipticFunction Class Reference

Elliptic integrals and functions. More...

`#include <GeographicLib/EllipticFunction.hpp>`

## Public Member Functions

Constructor
| EllipticFunction (real k2=0, real alpha2=0)
| EllipticFunction (real k2, real alpha2, real kp2, real alphap2)
void | Reset (real k2=0, real alpha2=0)
void | Reset (real k2, real alpha2, real kp2, real alphap2)
Inspector functions.
Math::real | k2 () const
Math::real | kp2 () const
Math::real | alpha2 () const
Math::real | alphap2 () const
Complete elliptic integrals.
Math::real | K () const
Math::real | E () const
Math::real | D () const
Math::real | KE () const
Math::real | Pi () const
Math::real | G () const
Math::real | H () const
Incomplete elliptic integrals.
Math::real | F (real phi) const
Math::real | E (real phi) const
Math::real | Ed (real ang) const
Math::real | Einv (real x) const
Math::real | Pi (real phi) const
Math::real | D (real phi) const
Math::real | G (real phi) const
Math::real | H (real phi) const
Incomplete integrals in terms of Jacobi elliptic functions.
Math::real | F (real sn, real cn, real dn) const
Math::real | E (real sn, real cn, real dn) const
Math::real | Pi (real sn, real cn, real dn) const
Math::real | D (real sn, real cn, real dn) const
Math::real | G (real sn, real cn, real dn) const
Math::real | H (real sn, real cn, real dn) const
Periodic versions of incomplete elliptic integrals.
Math::real | deltaF (real sn, real cn, real dn) const
Math::real | deltaE (real sn, real cn, real dn) const
Math::real | deltaEinv (real stau, real ctau) const
Math::real | deltaPi (real sn, real cn, real dn) const
Math::real | deltaD (real sn, real cn, real dn) const
Math::real | deltaG (real sn, real cn, real dn) const
Math::real | deltaH (real sn, real cn, real dn) const
Elliptic functions.
void | sncndn (real x, real &sn, real &cn, real &dn) const
Math::real | Delta (real sn, real cn) const

## Static Public Member Functions

Symmetric elliptic integrals.
static real | RF (real x, real y, real z)
static real | RF (real x, real y)
static real | RC (real x, real y)
static real | RG (real x, real y, real z)
static real | RG (real x, real y)
static real | RJ (real x, real y, real z, real p)
static real | RD (real x, real y, real z)

## Detailed Description

Elliptic integrals and functions.

This provides the elliptic functions and integrals needed for Ellipsoid, GeodesicExact, and TransverseMercatorExact. Two categories of function are provided:

- static functions to compute symmetric elliptic integrals (https://dlmf.nist.gov/19.16.i)
- member functions to compute Legrendre's elliptic integrals (https://dlmf.nist.gov/19.2.ii) and the Jacobi elliptic functions (https://dlmf.nist.gov/22.2).

In the latter case, an object is constructed giving the modulus k (and optionally the parameter α2). The modulus is always passed as its square k2 which allows k to be pure imaginary (k2 < 0). (Confusingly, Abramowitz and Stegun call m = k2 the "parameter" and n = α2 the "characteristic".)

In geodesic applications, it is convenient to separate the incomplete integrals into secular and periodic components, e.g.,

\[ E(\phi, k) = (2 E(k) / \pi) [ \phi + \delta E(\phi, k) ] \]

where δE(φ, k) is an odd periodic function with period π.

The computation of the elliptic integrals uses the algorithms given in

- B. C. Carlson, Computation of real or complex elliptic integrals, Numerical Algorithms 10, 13–26 (1995); preprint.

with the additional optimizations given in https://dlmf.nist.gov/19.36.i. The computation of the Jacobi elliptic functions uses the algorithm given in

- R. Bulirsch, Numerical Calculation of Elliptic Integrals and Elliptic Functions, Numericshe Mathematik 7, 78–90 (1965).

The notation follows https://dlmf.nist.gov/19 and https://dlmf.nist.gov/22

Example of use:

// Example of using the GeographicLib::EllipticFunction class
#include <iostream>
#include <iomanip>
#include <exception>
#include <cmath>
#include <GeographicLib/Math.hpp>
#include <GeographicLib/EllipticFunction.hpp>
using namespace std;
using namespace GeographicLib;
int main() {
try {
EllipticFunction ell(0.1); // parameter m = 0.1
// See Abramowitz and Stegun, table 17.1
cout << ell.K() << " " << ell.E() << "\n";
double phi = 20, sn, cn;
Math::sincosd(phi, sn ,cn);
// See Abramowitz and Stegun, table 17.6 with
// alpha = asin(sqrt(m)) = 18.43 deg and phi = 20 deg
cout << ell.E(phi * Math::degree()) << " "
<< ell.E(sn, cn, ell.Delta(sn, cn))
<< "\n";
// See Carlson 1995, Sec 3.
cout << fixed << setprecision(16)
<< "RF(1,2,0) = " << EllipticFunction::RF(1,2) << "\n"
<< "RF(2,3,4) = " << EllipticFunction::RF(2,3,4) << "\n"
<< "RC(0,1/4) = " << EllipticFunction::RC(0,0.25) << "\n"
<< "RC(9/4,2) = " << EllipticFunction::RC(2.25,2) << "\n"
<< "RC(1/4,-2) = " << EllipticFunction::RC(0.25,-2) << "\n"
<< "RJ(0,1,2,3) = " << EllipticFunction::RJ(0,1,2,3) << "\n"
<< "RJ(2,3,4,5) = " << EllipticFunction::RJ(2,3,4,5) << "\n"
<< "RD(0,2,1) = " << EllipticFunction::RD(0,2,1) << "\n"
<< "RD(2,3,4) = " << EllipticFunction::RD(2,3,4) << "\n"
<< "RG(0,16,16) = " << EllipticFunction::RG(16,16) << "\n"
<< "RG(2,3,4) = " << EllipticFunction::RG(2,3,4) << "\n"
<< "RG(0,0.0796,4) = " << EllipticFunction::RG(0.0796,4) << "\n";
}
catch (const exception& e) {
cout << "Caught exception: " << e.what() << "\n";
}
}
main
int main(int argc, const char *const argv[])
Definition: CartConvert.cpp:29
EllipticFunction.hpp
Header for GeographicLib::EllipticFunction class.
Math.hpp
Header for GeographicLib::Math class.
GeographicLib::EllipticFunction::RJ
static real RJ(real x, real y, real z, real p)
Definition: EllipticFunction.cpp:128
GeographicLib::EllipticFunction::RG
static real RG(real x, real y, real z)
Definition: EllipticFunction.cpp:96
GeographicLib::EllipticFunction::RC
static real RC(real x, real y)
Definition: EllipticFunction.cpp:81
GeographicLib::EllipticFunction::EllipticFunction
EllipticFunction(real k2=0, real alpha2=0)
Definition: EllipticFunction.hpp:90
GeographicLib::EllipticFunction::RD
static real RD(real x, real y, real z)
Definition: EllipticFunction.cpp:182
GeographicLib::EllipticFunction::RF
static real RF(real x, real y, real z)
Definition: EllipticFunction.cpp:29
GeographicLib::Math::degree
static T degree()
Definition: Math.hpp:193
GeographicLib::Math::sincosd
static void sincosd(T x, T &sinx, T &cosx)
Definition: Math.cpp:106
GeographicLib
Namespace for GeographicLib.
Definition: Accumulator.cpp:12
std
Definition: NearestNeighbor.hpp:812

Definition at line 63 of file EllipticFunction.hpp.

## Constructor & Destructor Documentation

## EllipticFunction() [1/2]

GeographicLib::EllipticFunction::EllipticFunction | ( | real | k2 = `0`,
|  | real | alpha2 = `0`
| ) |  |

inline

Constructor specifying the modulus and parameter.

Parameters

  [in] | k2 | the square of the modulus k2. k2 must lie in (−∞, 1].
  [in] | alpha2 | the parameter α2. α2 must lie in (−∞, 1].

Exceptions

  GeographicErr | if k2 or alpha2 is out of its legal range.

If only elliptic integrals of the first and second kinds are needed, then set α2 = 0 (the default value); in this case, we have Π(φ, 0, k) = F(φ, k), G(φ, 0, k) = E(φ, k), and H(φ, 0, k) = F(φ, k) - D(φ, k).

Definition at line 90 of file EllipticFunction.hpp.

## EllipticFunction() [2/2]

GeographicLib::EllipticFunction::EllipticFunction | ( | real | k2,
|  | real | alpha2,
|  | real | kp2,
|  | real | alphap2
| ) |  |

inline

Constructor specifying the modulus and parameter and their complements.

Parameters

  [in] | k2 | the square of the modulus k2. k2 must lie in (−∞, 1].
  [in] | alpha2 | the parameter α2. α2 must lie in (−∞, 1].
  [in] | kp2 | the complementary modulus squared k'2 = 1 − k2. This must lie in [0, ∞).
  [in] | alphap2 | the complementary parameter α'2 = 1 − α2. This must lie in [0, ∞).

Exceptions

  GeographicErr | if k2, alpha2, kp2, or alphap2 is out of its legal range.

The arguments must satisfy k2 + kp2 = 1 and alpha2 + alphap2 = 1. (No checking is done that these conditions are met.) This constructor is provided to enable accuracy to be maintained, e.g., when k is very close to unity.

Definition at line 112 of file EllipticFunction.hpp.

## Member Function Documentation

## Reset() [1/2]

void GeographicLib::EllipticFunction::Reset | ( | real | k2 = `0`,
|  | real | alpha2 = `0`
| ) |  |

inline

Reset the modulus and parameter.

Parameters

  [in] | k2 | the new value of square of the modulus k2 which must lie in (−∞, ]. done.)
  [in] | alpha2 | the new value of parameter α2. α2 must lie in (−∞, 1].

Exceptions

  GeographicErr | if k2 or alpha2 is out of its legal range.

Definition at line 126 of file EllipticFunction.hpp.

## Reset() [2/2]

void GeographicLib::EllipticFunction::Reset | ( | real | k2,
|  | real | alpha2,
|  | real | kp2,
|  | real | alphap2
| ) |  |

Reset the modulus and parameter supplying also their complements.

Parameters

  [in] | k2 | the square of the modulus k2. k2 must lie in (−∞, 1].
  [in] | alpha2 | the parameter α2. α2 must lie in (−∞, 1].
  [in] | kp2 | the complementary modulus squared k'2 = 1 − k2. This must lie in [0, ∞).
  [in] | alphap2 | the complementary parameter α'2 = 1 − α2. This must lie in [0, ∞).

Exceptions

  GeographicErr | if k2, alpha2, kp2, or alphap2 is out of its legal range.

The arguments must satisfy k2 + kp2 = 1 and alpha2 + alphap2 = 1. (No checking is done that these conditions are met.) This constructor is provided to enable accuracy to be maintained, e.g., when is very small.

Definition at line 226 of file EllipticFunction.cpp.

References alpha2(), alphap2(), GeographicLib::Math::infinity(), k2(), kp2(), GeographicLib::Math::pi(), RC(), RD(), RF(), RG(), RJ(), and GeographicLib::Math::sq().

## k2()

Math::real GeographicLib::EllipticFunction::k2 | ( |  | ) | const

inline

Returns
  the square of the modulus k2.

Definition at line 158 of file EllipticFunction.hpp.

Referenced by Reset().

## kp2()

Math::real GeographicLib::EllipticFunction::kp2 | ( |  | ) | const

inline

Returns
  the square of the complementary modulus k'2 = 1 − k2.

Definition at line 164 of file EllipticFunction.hpp.

Referenced by Reset().

## alpha2()

Math::real GeographicLib::EllipticFunction::alpha2 | ( |  | ) | const

inline

Returns
  the parameter α2.

Definition at line 169 of file EllipticFunction.hpp.

Referenced by Reset().

## alphap2()

Math::real GeographicLib::EllipticFunction::alphap2 | ( |  | ) | const

inline

Returns
  the complementary parameter α'2 = 1 − α2.

Definition at line 175 of file EllipticFunction.hpp.

Referenced by Reset().

## K()

Math::real GeographicLib::EllipticFunction::K | ( |  | ) | const

inline

The complete integral of the first kind.

Returns
  K(k).

K(k) is defined in https://dlmf.nist.gov/19.2.E4

\[ K(k) = \int_0^{\pi/2} \frac1{\sqrt{1-k^2\sin^2\phi}}\,d\phi. \]

Definition at line 191 of file EllipticFunction.hpp.

Referenced by deltaF(), F(), GeographicLib::TransverseMercatorExact::Forward(), and GeographicLib::TransverseMercatorExact::Reverse().

## E() [1/3]

Math::real GeographicLib::EllipticFunction::E | ( |  | ) | const

inline

The complete integral of the second kind.

Returns
  E(k).

E(k) is defined in https://dlmf.nist.gov/19.2.E5

\[ E(k) = \int_0^{\pi/2} \sqrt{1-k^2\sin^2\phi}\,d\phi. \]

Definition at line 203 of file EllipticFunction.hpp.

Referenced by deltaE(), deltaEinv(), E(), Ed(), Einv(), GeographicLib::TransverseMercatorExact::Forward(), and GeographicLib::TransverseMercatorExact::Reverse().

## D() [1/3]

Math::real GeographicLib::EllipticFunction::D | ( |  | ) | const

inline

Jahnke's complete integral.

Returns
  D(k).

D(k) is defined in https://dlmf.nist.gov/19.2.E6

\[ D(k) = \int_0^{\pi/2} \frac{\sin^2\phi}{\sqrt{1-k^2\sin^2\phi}}\,d\phi. \]

Definition at line 216 of file EllipticFunction.hpp.

Referenced by D(), and deltaD().

## KE()

Math::real GeographicLib::EllipticFunction::KE | ( |  | ) | const

inline

The difference between the complete integrals of the first and second kinds.

Returns
  K(k) − E(k).

Definition at line 224 of file EllipticFunction.hpp.

Referenced by GeographicLib::TransverseMercatorExact::Reverse().

## Pi() [1/3]

Math::real GeographicLib::EllipticFunction::Pi | ( |  | ) | const

inline

The complete integral of the third kind.

Returns
  Π(α2, k).

Π(α2, k) is defined in https://dlmf.nist.gov/19.2.E7

\[ \Pi(\alpha^2, k) = \int_0^{\pi/2} \frac1{\sqrt{1-k^2\sin^2\phi}(1 - \alpha^2\sin^2\phi)}\,d\phi. \]

Definition at line 238 of file EllipticFunction.hpp.

Referenced by deltaPi(), Pi(), GeographicLib::experimental::JacobiConformal::x(), and GeographicLib::experimental::JacobiConformal::y().

## G() [1/3]

Math::real GeographicLib::EllipticFunction::G | ( |  | ) | const

inline

Legendre's complete geodesic longitude integral.

Returns
  G(α2, k).

G(α2, k) is given by

\[ G(\alpha^2, k) = \int_0^{\pi/2} \frac{\sqrt{1-k^2\sin^2\phi}}{1 - \alpha^2\sin^2\phi}\,d\phi. \]

Definition at line 251 of file EllipticFunction.hpp.

Referenced by deltaG(), and G().

## H() [1/3]

Math::real GeographicLib::EllipticFunction::H | ( |  | ) | const

inline

Cayley's complete geodesic longitude difference integral.

Returns
  H(α2, k).

H(α2, k) is given by

\[ H(\alpha^2, k) = \int_0^{\pi/2} \frac{\cos^2\phi}{(1-\alpha^2\sin^2\phi)\sqrt{1-k^2\sin^2\phi}} \,d\phi. \]

Definition at line 265 of file EllipticFunction.hpp.

Referenced by deltaH(), and H().

## F() [1/2]

Math::real GeographicLib::EllipticFunction::F | ( | real | phi | ) | const

The incomplete integral of the first kind.

Parameters

  [in] | phi |

Returns
  F(φ, k).

F(φ, k) is defined in https://dlmf.nist.gov/19.2.E4

\[ F(\phi, k) = \int_0^\phi \frac1{\sqrt{1-k^2\sin^2\theta}}\,d\theta. \]

Definition at line 499 of file EllipticFunction.cpp.

References Delta(), deltaF(), F(), K(), and GeographicLib::Math::pi().

Referenced by deltaF(), and F().

## E() [2/3]

Math::real GeographicLib::EllipticFunction::E | ( | real | phi | ) | const

The incomplete integral of the second kind.

Parameters

  [in] | phi |

Returns
  E(φ, k).

E(φ, k) is defined in https://dlmf.nist.gov/19.2.E5

\[ E(\phi, k) = \int_0^\phi \sqrt{1-k^2\sin^2\theta}\,d\theta. \]

Definition at line 505 of file EllipticFunction.cpp.

References Delta(), deltaE(), E(), and GeographicLib::Math::pi().

## Ed()

Math::real GeographicLib::EllipticFunction::Ed | ( | real | ang | ) | const

The incomplete integral of the second kind with the argument given in degrees.

Parameters

  [in] | ang | in degrees.

Returns
  E(π ang/180, k).

Definition at line 511 of file EllipticFunction.cpp.

References GeographicLib::Math::AngNormalize(), Delta(), E(), GeographicLib::Math::sincosd(), and GeographicLib::Math::td.

## Einv()

Math::real GeographicLib::EllipticFunction::Einv | ( | real | x | ) | const

The inverse of the incomplete integral of the second kind.

Parameters

  [in] | x |

Returns
  φ = E−1(x, k); i.e., the solution of such that E(φ, k) = x.

Definition at line 543 of file EllipticFunction.cpp.

References Delta(), E(), GEOGRAPHICLIB_PANIC, and GeographicLib::Math::pi().

Referenced by deltaEinv().

## Pi() [2/3]

Math::real GeographicLib::EllipticFunction::Pi | ( | real | phi | ) | const

The incomplete integral of the third kind.

Parameters

  [in] | phi |

Returns
  Π(φ, α2, k).

Π(φ, α2, k) is defined in https://dlmf.nist.gov/19.2.E7

\[ \Pi(\phi, \alpha^2, k) = \int_0^\phi \frac1{\sqrt{1-k^2\sin^2\theta}(1 - \alpha^2\sin^2\theta)}\,d\theta. \]

Definition at line 519 of file EllipticFunction.cpp.

References Delta(), deltaPi(), GeographicLib::Math::pi(), and Pi().

## D() [2/3]

Math::real GeographicLib::EllipticFunction::D | ( | real | phi | ) | const

Jahnke's incomplete elliptic integral.

Parameters

  [in] | phi |

Returns
  D(φ, k).

D(φ, k) is defined in https://dlmf.nist.gov/19.2.E4

\[ D(\phi, k) = \int_0^\phi \frac{\sin^2\theta}{\sqrt{1-k^2\sin^2\theta}}\,d\theta. \]

Definition at line 525 of file EllipticFunction.cpp.

References D(), Delta(), deltaD(), and GeographicLib::Math::pi().

## G() [2/3]

Math::real GeographicLib::EllipticFunction::G | ( | real | phi | ) | const

Legendre's geodesic longitude integral.

Parameters

  [in] | phi |

Returns
  G(φ, α2, k).

G(φ, α2, k) is defined by

\[ \begin{align} G(\phi, \alpha^2, k) &= \frac{k^2}{\alpha^2} F(\phi, k) + \biggl(1 - \frac{k^2}{\alpha^2}\biggr) \Pi(\phi, \alpha^2, k) \\ &= \int_0^\phi \frac{\sqrt{1-k^2\sin^2\theta}}{1 - \alpha^2\sin^2\theta}\,d\theta. \end{align} \]

Legendre expresses the longitude of a point on the geodesic in terms of this combination of elliptic integrals in Exercices de Calcul Intégral, Vol. 1 (1811), p. 181, https://books.google.com/books?id=riIOAAAAQAAJ&pg=PA181.

See Geodesics in terms of elliptic integrals for the expression for the longitude in terms of this function.

Definition at line 531 of file EllipticFunction.cpp.

References Delta(), deltaG(), G(), and GeographicLib::Math::pi().

## H() [2/3]

Math::real GeographicLib::EllipticFunction::H | ( | real | phi | ) | const

Cayley's geodesic longitude difference integral.

Parameters

  [in] | phi |

Returns
  H(φ, α2, k).

H(φ, α2, k) is defined by

\[ \begin{align} H(\phi, \alpha^2, k) &= \frac1{\alpha^2} F(\phi, k) + \biggl(1 - \frac1{\alpha^2}\biggr) \Pi(\phi, \alpha^2, k) \\ &= \int_0^\phi \frac{\cos^2\theta} {(1-\alpha^2\sin^2\theta)\sqrt{1-k^2\sin^2\theta}} \,d\theta. \end{align} \]

Cayley expresses the longitude difference of a point on the geodesic in terms of this combination of elliptic integrals in Phil. Mag. 40 (1870), p. 333, https://books.google.com/books?id=Zk0wAAAAIAAJ&pg=PA333.

See Geodesics in terms of elliptic integrals for the expression for the longitude in terms of this function.

Definition at line 537 of file EllipticFunction.cpp.

References Delta(), deltaH(), H(), and GeographicLib::Math::pi().

## F() [2/2]

Math::real GeographicLib::EllipticFunction::F | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The incomplete integral of the first kind in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  F(φ, k) as though φ ∈ (−π, π].

Definition at line 375 of file EllipticFunction.cpp.

References K(), and RF().

## E() [3/3]

Math::real GeographicLib::EllipticFunction::E | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The incomplete integral of the second kind in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  E(φ, k) as though φ ∈ (−π, π].

Definition at line 386 of file EllipticFunction.cpp.

References E(), RD(), and RF().

## Pi() [3/3]

Math::real GeographicLib::EllipticFunction::Pi | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The incomplete integral of the third kind in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  Π(φ, α2, k) as though φ ∈ (−π, π].

Definition at line 421 of file EllipticFunction.cpp.

References Pi(), RF(), and RJ().

## D() [3/3]

Math::real GeographicLib::EllipticFunction::D | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

Jahnke's incomplete elliptic integral in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  D(φ, k) as though φ ∈ (−π, π].

Definition at line 409 of file EllipticFunction.cpp.

References D(), and RD().

## G() [3/3]

Math::real GeographicLib::EllipticFunction::G | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

Legendre's geodesic longitude integral in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  G(φ, α2, k) as though φ ∈ (−π, π].

Definition at line 436 of file EllipticFunction.cpp.

References G(), RF(), and RJ().

## H() [3/3]

Math::real GeographicLib::EllipticFunction::H | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

Cayley's geodesic longitude difference integral in terms of Jacobi elliptic functions.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  H(φ, α2, k) as though φ ∈ (−π, π].

Definition at line 449 of file EllipticFunction.cpp.

References H(), RF(), and RJ().

## deltaF()

Math::real GeographicLib::EllipticFunction::deltaF | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The periodic incomplete integral of the first kind.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π F(φ, k) / (2 K(k)) - φ.

Definition at line 463 of file EllipticFunction.cpp.

References F(), K(), and GeographicLib::Math::pi().

Referenced by F().

## deltaE()

Math::real GeographicLib::EllipticFunction::deltaE | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The periodic incomplete integral of the second kind.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π E(φ, k) / (2 E(k)) - φ.

Definition at line 469 of file EllipticFunction.cpp.

References E(), and GeographicLib::Math::pi().

Referenced by E(), and GeographicLib::GeodesicLineExact::GenPosition().

## deltaEinv()

Math::real GeographicLib::EllipticFunction::deltaEinv | ( | real | stau,
|  | real | ctau
| ) |  | const

The periodic inverse of the incomplete integral of the second kind.

Parameters

  [in] | stau | = sinτ.
  [in] | ctau | = sinτ.

Returns
  the periodic function E−1(τ (2 E(k)/π), k) - τ.

Definition at line 568 of file EllipticFunction.cpp.

References E(), Einv(), and GeographicLib::Math::pi().

Referenced by GeographicLib::GeodesicLineExact::GenPosition().

## deltaPi()

Math::real GeographicLib::EllipticFunction::deltaPi | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The periodic incomplete integral of the third kind.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π Π(φ, α2, k) / (2 Π(α2, k)) - φ.

Definition at line 475 of file EllipticFunction.cpp.

References GeographicLib::Math::pi(), and Pi().

Referenced by Pi().

## deltaD()

Math::real GeographicLib::EllipticFunction::deltaD | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

The periodic Jahnke's incomplete elliptic integral.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π D(φ, k) / (2 D(k)) - φ.

Definition at line 481 of file EllipticFunction.cpp.

References D(), and GeographicLib::Math::pi().

Referenced by D(), and GeographicLib::GeodesicLineExact::GenPosition().

## deltaG()

Math::real GeographicLib::EllipticFunction::deltaG | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

Legendre's periodic geodesic longitude integral.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π G(φ, k) / (2 G(k)) - φ.

Definition at line 487 of file EllipticFunction.cpp.

References G(), and GeographicLib::Math::pi().

Referenced by G().

## deltaH()

Math::real GeographicLib::EllipticFunction::deltaH | ( | real | sn,
|  | real | cn,
|  | real | dn
| ) |  | const

Cayley's periodic geodesic longitude difference integral.

Parameters

  [in] | sn | = sinφ.
  [in] | cn | = cosφ.
  [in] | dn | = sqrt(1 − k2 sin2φ).

Returns
  the periodic function π H(φ, k) / (2 H(k)) - φ.

Definition at line 493 of file EllipticFunction.cpp.

References H(), and GeographicLib::Math::pi().

Referenced by GeographicLib::GeodesicLineExact::GenPosition(), and H().

## sncndn()

void GeographicLib::EllipticFunction::sncndn | ( | real | x,
|  | real & | sn,
|  | real & | cn,
|  | real & | dn
| ) |  | const

The Jacobi elliptic functions.

Parameters

  [in] | x | the argument.
  [out] | sn | sn(x, k).
  [out] | cn | cn(x, k).
  [out] | dn | dn(x, k).

Definition at line 320 of file EllipticFunction.cpp.

References GEOGRAPHICLIB_PANIC, and std::swap().

Referenced by GeographicLib::TransverseMercatorExact::Forward(), and GeographicLib::TransverseMercatorExact::Reverse().

## Delta()

Math::real GeographicLib::EllipticFunction::Delta | ( | real | sn,
|  | real | cn
| ) |  | const

inline

The Δ amplitude function.

Parameters

  [in] | sn | sinφ.
  [in] | cn | cosφ.

Returns
  Δ = sqrt(1 − k2 sin2φ).

Definition at line 586 of file EllipticFunction.hpp.

Referenced by D(), E(), Ed(), Einv(), F(), G(), GeographicLib::GeodesicLineExact::GenPosition(), H(), Pi(), GeographicLib::experimental::JacobiConformal::x(), and GeographicLib::experimental::JacobiConformal::y().

## RF() [1/2]

Math::real GeographicLib::EllipticFunction::RF | ( | real | x,
|  | real | y,
|  | real | z
| ) |  |

static

Symmetric integral of the first kind RF.

Parameters

  [in] | x |
  [in] | y |
  [in] | z |

Returns
  RF(x, y, z).

RF is defined in https://dlmf.nist.gov/19.16.E1

\[ R_F(x, y, z) = \frac12 \int_0^\infty\frac1{\sqrt{(t + x) (t + y) (t + z)}}\, dt, \]

where at most one of arguments, x, y, z, can be zero and those arguments that are nonzero must be positive. If one of the arguments is zero, it is more efficient to call the two-argument version of this function with the non-zero arguments.

Definition at line 29 of file EllipticFunction.cpp.

Referenced by E(), F(), G(), H(), Pi(), GeographicLib::AuxLatitude::Rectifying(), Reset(), and RG().

## RF() [2/2]

Math::real GeographicLib::EllipticFunction::RF | ( | real | x,
|  | real | y
| ) |  |

static

Complete symmetric integral of the first kind, RF with one argument zero.

Parameters

  [in] | x |
  [in] | y |

Returns
  RF(x, y, 0).

The arguments x and y must be positive.

Definition at line 66 of file EllipticFunction.cpp.

References GeographicLib::Math::pi(), and std::swap().

## RC()

Math::real GeographicLib::EllipticFunction::RC | ( | real | x,
|  | real | y
| ) |  |

static

Degenerate symmetric integral of the first kind RC.

Parameters

  [in] | x |
  [in] | y |

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

RC is defined in https://dlmf.nist.gov/19.2.E17

\[ R_C(x, y) = \frac12 \int_0^\infty\frac1{\sqrt{t + x}(t + y)}\,dt, \]

where x ≥ 0 and y > 0.

Definition at line 81 of file EllipticFunction.cpp.

Referenced by Reset(), and RJ().

## RG() [1/2]

Math::real GeographicLib::EllipticFunction::RG | ( | real | x,
|  | real | y,
|  | real | z
| ) |  |

static

Symmetric integral of the second kind RG.

Parameters

  [in] | x |
  [in] | y |
  [in] | z |

Returns
  RG(x, y, z).

RG is defined in Carlson, eq 1.5

\[ R_G(x, y, z) = \frac14 \int_0^\infty[(t + x) (t + y) (t + z)]^{-1/2} \biggl( \frac x{t + x} + \frac y{t + y} + \frac z{t + z} \biggr)t\,dt, \]

where at most one of arguments, x, y, z, can be zero and those arguments that are nonzero must be positive. See also https://dlmf.nist.gov/19.23.E6_5. If one of the arguments is zero, it is more efficient to call the two-argument version of this function with the non-zero arguments.

Definition at line 96 of file EllipticFunction.cpp.

References RD(), RF(), and RG().

Referenced by GeographicLib::AuxLatitude::RectifyingRadius(), Reset(), and RG().

## RG() [2/2]

Math::real GeographicLib::EllipticFunction::RG | ( | real | x,
|  | real | y
| ) |  |

static

Complete symmetric integral of the second kind, RG with one argument zero.

Parameters

  [in] | x |
  [in] | y |

Returns
  RG(x, y, 0).

The arguments x and y must be positive.

Definition at line 105 of file EllipticFunction.cpp.

References GeographicLib::Math::pi(), and GeographicLib::Math::sq().

## RJ()

Math::real GeographicLib::EllipticFunction::RJ | ( | real | x,
|  | real | y,
|  | real | z,
|  | real | p
| ) |  |

static

Symmetric integral of the third kind RJ.

Parameters

  [in] | x |
  [in] | y |
  [in] | z |
  [in] | p |

Returns
  RJ(x, y, z, p).

RJ is defined in https://dlmf.nist.gov/19.16.E2

\[ R_J(x, y, z, p) = \frac32 \int_0^\infty [(t + x) (t + y) (t + z)]^{-1/2} (t + p)^{-1}\, dt, \]

where p > 0, and x, y, z are nonnegative with at most one of them being 0.

Definition at line 128 of file EllipticFunction.cpp.

References RC(), and GeographicLib::Math::sq().

Referenced by G(), H(), Pi(), and Reset().

## RD()

Math::real GeographicLib::EllipticFunction::RD | ( | real | x,
|  | real | y,
|  | real | z
| ) |  |

static

Degenerate symmetric integral of the third kind RD.

Parameters

  [in] | x |
  [in] | y |
  [in] | z |

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

RD is defined in https://dlmf.nist.gov/19.16.E5

\[ R_D(x, y, z) = \frac32 \int_0^\infty[(t + x) (t + y)]^{-1/2} (t + z)^{-3/2}\, dt, \]

where x, y, z are positive except that at most one of x and y can be 0.

Definition at line 182 of file EllipticFunction.cpp.

Referenced by D(), E(), GeographicLib::AuxLatitude::Rectifying(), Reset(), and RG().

The documentation for this class was generated from the following files:

- EllipticFunction.hpp
- EllipticFunction.cpp