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


math::Elliptic GANG