/************************************************************************* * Complete elliptic integral of the second kind * * Approximates the integral * * * pi/2 * - | | 2 | E(m) = | sqrt( 1 - m sin t ) dt | | | - | 0 | | using the approximation | | P(x) - x log x Q(x). | | ACCURACY: | | Relative error: | arithmetic domain # trials peak rms | IEEE 0, 1 10000 2.1e-16 7.3e-17 | | Cephes Math Library, Release 2.8: June, 2000 | Copyright 1984, 1987, 1989, 2000 by Stephen L. Moshier *************************************************************************/ public static double EllipticIntegralE(double m) { var result = Elliptic.EllipticIntegralE(m); return(result); }
/************************************************************************* * Incomplete elliptic integral of the second kind * * Approximates the integral * * * phi * - | | | 2 | E(phi_\m) = | sqrt( 1 - m sin t ) dt | | | | - | 0 | | of amplitude phi and modulus m, using the arithmetic - | geometric mean algorithm. | | ACCURACY: | | Tested at random arguments with phi in [-10, 10] and m in | [0, 1]. | Relative error: | arithmetic domain # trials peak rms | IEEE -10,10 150000 3.3e-15 1.4e-16 | | Cephes Math Library Release 2.8: June, 2000 | Copyright 1984, 1987, 1993, 2000 by Stephen L. Moshier *************************************************************************/ public static double IncompleteEllipticIntegralE(double phi, double m) { var result = Elliptic.IncompleteEllipticIntegralE(phi, m); return(result); }
/************************************************************************* * Complete elliptic integral of the first kind * * Approximates the integral * * * * pi/2 * - | | | dt | K(m) = | ------------------ | 2 | | sqrt( 1 - m sin t ) | - | 0 | | where m = 1 - m1, using the approximation | | P(x) - log x Q(x). | | The argument m1 is used rather than m so that the logarithmic | singularity at m = 1 will be shifted to the origin; this | preserves maximum accuracy. | | K(0) = pi/2. | | ACCURACY: | | Relative error: | arithmetic domain # trials peak rms | IEEE 0,1 30000 2.5e-16 6.8e-17 | | Àëãîðèòì âçÿò èç áèáëèîòåêè Cephes *************************************************************************/ public static double EllipticIntegralKHighPrecision(double m1) { var result = Elliptic.EllipticIntegralKHighPrecision(m1); return(result); }