cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> extern float eljdsf (float u, float k); extern double eljds (double u, double k); extern long double eljdsl (long double u, long double k); extern __float80 eljdsw (__float80 u, __float80 k); extern __float128 eljdsq (__float128 u, __float128 k); extern long_long_double eljdsll (long_long_double u, long_long_double k); extern decimal_float eljdsdf (decimal_float u, decimal_float k); extern decimal_double eljdsd (decimal_double u, decimal_double k); extern decimal_long_double eljdsdl (decimal_long_double u, decimal_long_double k); extern decimal_long_long_double eljdsdll (decimal_long_long_double u, decimal_long_long_double k);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
eljds(u, k) = ds(u, k) = dn(u, k) / sn(u, k) = eljdn(u, k) / eljsn(u, k).
The argument u is unrestricted.The argument k (the modulus) is normally in [-1,+1]. If it is not, then a standard reciprocal modulus transformation is used to convert the function to another with second argument 1/k.
Using this function is almost always more efficient than making separate calls to the two Jacobian elliptic functions in its definition.
See M. Abramowitz & I. A. Stegun, Handbook of Mathematical Functions, Chapter 16, for definitions of the Jacobian elliptic, theta, and zeta functions.