|
Index
C++ Code Documentation
math::Elliptic
File: BASE/math/Elliptic.H
elliptic functions.
Elliptic Function library
Theta functions:
These differ from Mathematica's EllipticTheta[a,u,q] in the
third argument: q = exp(i pi tau)
Weierstrass P and related functions:
w1, w2 are the half-periods
e1 = P(w1), e2 = P(w2), e3 = P(w1+w2)
Jacobi elliptic and related functions:
jacobi_sn(u,m) takes std::complex u and real m
m = k^2 as in Mathematica
Elliptic integrals:
K(m) takes real argument 0 <= m < 1.
E(m) takes real argument 0 <= m < 1.
F(u, m) takes real argument 0 <= m < 1.
public:
- static std::complex<double> theta( std::complex<double> const &u, std::complex<double> const &t );
 | theta functions generalized theta function | |
- static std::complex<double> theta_p( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta_pp( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta_ppp( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta1( std::complex<double> const &u, std::complex<double> const &tau );
 | traditional theta functions | |
- static std::complex<double> theta2( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta3( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta4( std::complex<double> const &u, std::complex<double> const &tau );
- static std::complex<double> theta1_p( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> theta2_p( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> theta3_p( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> theta4_p( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> theta1_pp( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> theta1_ppp( std::complex<double> const &v, std::complex<double> const &tau );
- static std::complex<double> weierstrass_P( std::complex<double> const &, std::complex<double> const &w1, std::complex<double> const &w2 );
 | weierstrass functions | |
- static std::complex<double> weierstrass_P_p( std::complex<double> const &, std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_zeta( std::complex<double> const &, std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_sigma( std::complex<double> const &, std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_g2( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_g3( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_e1( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_e2( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_e3( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_eta1( std::complex<double> const &w1, std::complex<double> const &w2 );
- static std::complex<double> weierstrass_eta2( std::complex<double> const &w1, std::complex<double> const &w2 );
- static inline std::complex<double> am( double u, double m );
 | Jacobian elliptic functions | |
- static inline std::complex<double> sn( std::complex<double> const &u, double m );
- static inline std::complex<double> cn( std::complex<double> const &u, double m );
- static inline std::complex<double> dn( std::complex<double> const &u, double m );
- static inline std::complex<double> ns( std::complex<double> const &u, double m );
- static inline std::complex<double> cs( std::complex<double> const &u, double m );
- static inline std::complex<double> ds( std::complex<double> const &u, double m );
- static inline std::complex<double> nc( std::complex<double> const &u, double m );
- static inline std::complex<double> sc( std::complex<double> const &u, double m );
- static inline std::complex<double> dc( std::complex<double> const &u, double m );
- static inline std::complex<double> nd( std::complex<double> const &u, double m );
- static inline std::complex<double> sd( std::complex<double> const &u, double m );
- static inline std::complex<double> cd( std::complex<double> const &u, double m );
- static inline double K( double m );
 | elliptic integrals | |
- static inline double E( double m );
- static inline double F( double u, double m );
- static inline double nome_q( double m );
protected:
private:
- static void Jacobi( std::complex<double> &sn_, std::complex<double> &cn_, std::complex<double> &dn_, std::complex<double> const &u, double m );
- static std::complex<double> const I;
- static uint const MAX_COUNT = 20;
- static inline double tolerance( double x );
|