Private Types | Private Attributes | List of all members
GeographicLib::EllipticFunction Class Reference

Elliptic integrals and functions. More...

#include <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)
 

Private Types

enum  { num_ = 13 }
 
typedef Math::real real
 

Private Attributes

real _alpha2
 
real _alphap2
 
real _Dc
 
real _Ec
 
real _eps
 
real _Gc
 
real _Hc
 
real _k2
 
real _Kc
 
real _kp2
 
real _Pic
 

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:

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

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

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

Example of use:

// Example of using the GeographicLib::EllipticFunction class
#include <iostream>
#include <iomanip>
#include <exception>
#include <cmath>
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";
}
}

Definition at line 62 of file EllipticFunction.hpp.

Member Typedef Documentation

Definition at line 64 of file EllipticFunction.hpp.

Member Enumeration Documentation

anonymous enum
private
Enumerator
num_ 

Definition at line 66 of file EllipticFunction.hpp.

Constructor & Destructor Documentation

GeographicLib::EllipticFunction::EllipticFunction ( real  k2 = 0,
real  alpha2 = 0 
)
inline

Constructor specifying the modulus and parameter.

Parameters
[in]k2the square of the modulus k2. k2 must lie in (−∞, 1].
[in]alpha2the parameter α2. α2 must lie in (−∞, 1].
Exceptions
GeographicErrif 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 89 of file EllipticFunction.hpp.

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

Constructor specifying the modulus and parameter and their complements.

Parameters
[in]k2the square of the modulus k2. k2 must lie in (−∞, 1].
[in]alpha2the parameter α2. α2 must lie in (−∞, 1].
[in]kp2the complementary modulus squared k'2 = 1 − k2. This must lie in [0, ∞).
[in]alphap2the complementary parameter α'2 = 1 − α2. This must lie in [0, ∞).
Exceptions
GeographicErrif 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 111 of file EllipticFunction.hpp.

Member Function Documentation

Math::real GeographicLib::EllipticFunction::alpha2 ( ) const
inline
Returns
the parameter α2.

Definition at line 168 of file EllipticFunction.hpp.

Math::real GeographicLib::EllipticFunction::alphap2 ( ) const
inline
Returns
the complementary parameter α'2 = 1 − α2.

Definition at line 174 of file EllipticFunction.hpp.

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

Jahnke's complete integral.

Returns
D(k).

D(k) is defined in http://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 215 of file EllipticFunction.hpp.

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

Jahnke's incomplete elliptic integral.

Parameters
[in]phi
Returns
D(φ, k).

D(φ, k) is defined in http://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 520 of file src/EllipticFunction.cpp.

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 404 of file src/EllipticFunction.cpp.

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

The Δ amplitude function.

Parameters
[in]snsinφ.
[in]cncosφ.
Returns
Δ = sqrt(1 − k2 sin2φ).

Definition at line 584 of file EllipticFunction.hpp.

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 476 of file src/EllipticFunction.cpp.

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 464 of file src/EllipticFunction.cpp.

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 563 of file src/EllipticFunction.cpp.

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 458 of file src/EllipticFunction.cpp.

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 482 of file src/EllipticFunction.cpp.

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 488 of file src/EllipticFunction.cpp.

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 470 of file src/EllipticFunction.cpp.

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

The complete integral of the second kind.

Returns
E(k).

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

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

Definition at line 202 of file EllipticFunction.hpp.

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 http://dlmf.nist.gov/19.2.E5

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

Definition at line 500 of file src/EllipticFunction.cpp.

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 381 of file src/EllipticFunction.cpp.

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

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

Parameters
[in]angin degrees.
Returns
Eang/180, k).

Definition at line 506 of file src/EllipticFunction.cpp.

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 538 of file src/EllipticFunction.cpp.

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 http://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 494 of file src/EllipticFunction.cpp.

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 370 of file src/EllipticFunction.cpp.

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

Legendre's complete geodesic longitude integral.

Returns
G2, k).

G2, 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 250 of file EllipticFunction.hpp.

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 geodellip for the expression for the longitude in terms of this function.

Definition at line 526 of file src/EllipticFunction.cpp.

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 431 of file src/EllipticFunction.cpp.

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

Cayley's complete geodesic longitude difference integral.

Returns
H2, k).

H2, 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 264 of file EllipticFunction.hpp.

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 geodellip for the expression for the longitude in terms of this function.

Definition at line 532 of file src/EllipticFunction.cpp.

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 444 of file src/EllipticFunction.cpp.

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

The complete integral of the first kind.

Returns
K(k).

K(k) is defined in http://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 190 of file EllipticFunction.hpp.

Math::real GeographicLib::EllipticFunction::k2 ( ) const
inline
Returns
the square of the modulus k2.

Definition at line 157 of file EllipticFunction.hpp.

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 223 of file EllipticFunction.hpp.

Math::real GeographicLib::EllipticFunction::kp2 ( ) const
inline
Returns
the square of the complementary modulus k'2 = 1 − k2.

Definition at line 163 of file EllipticFunction.hpp.

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

The complete integral of the third kind.

Returns
Π(α2, k).

Π(α2, k) is defined in http://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 237 of file EllipticFunction.hpp.

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 http://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 514 of file src/EllipticFunction.cpp.

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 416 of file src/EllipticFunction.cpp.

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 http://dlmf.nist.gov/19.2.E17

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

Definition at line 81 of file src/EllipticFunction.cpp.

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 http://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 \]

Definition at line 180 of file src/EllipticFunction.cpp.

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

Reset the modulus and parameter.

Parameters
[in]k2the new value of square of the modulus k2 which must lie in (−∞, ]. done.)
[in]alpha2the new value of parameter α2. α2 must lie in (−∞, 1].
Exceptions
GeographicErrif k2 or alpha2 is out of its legal range.

Definition at line 125 of file EllipticFunction.hpp.

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

Reset the modulus and parameter supplying also their complements.

Parameters
[in]k2the square of the modulus k2. k2 must lie in (−∞, 1].
[in]alpha2the parameter α2. α2 must lie in (−∞, 1].
[in]kp2the complementary modulus squared k'2 = 1 − k2. This must lie in [0, ∞).
[in]alphap2the complementary parameter α'2 = 1 − α2. This must lie in [0, ∞).
Exceptions
GeographicErrif 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 224 of file src/EllipticFunction.cpp.

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 http://dlmf.nist.gov/19.16.E1

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

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 src/EllipticFunction.cpp.

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).

Definition at line 66 of file src/EllipticFunction.cpp.

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 \]

See also http://dlmf.nist.gov/19.16.E3. 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 src/EllipticFunction.cpp.

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).

Definition at line 104 of file src/EllipticFunction.cpp.

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 http://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 \]

Definition at line 127 of file src/EllipticFunction.cpp.

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

The Jacobi elliptic functions.

Parameters
[in]xthe argument.
[out]snsn(x, k).
[out]cncn(x, k).
[out]dndn(x, k).

Definition at line 315 of file src/EllipticFunction.cpp.

Member Data Documentation

real GeographicLib::EllipticFunction::_alpha2
private

Definition at line 67 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_alphap2
private

Definition at line 67 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Dc
private

Definition at line 68 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Ec
private

Definition at line 68 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_eps
private

Definition at line 67 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Gc
private

Definition at line 68 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Hc
private

Definition at line 68 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_k2
private

Definition at line 67 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Kc
private

Definition at line 68 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_kp2
private

Definition at line 67 of file EllipticFunction.hpp.

real GeographicLib::EllipticFunction::_Pic
private

Definition at line 68 of file EllipticFunction.hpp.


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


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:57:59