cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> extern float elkf (float q); extern double elk (double q); extern long double elkl (long double q); extern __float80 elkw (__float80 q); extern __float128 elkq (__float128 q); extern long_long_double elkll (long_long_double q); extern decimal_float elkdf (decimal_float q); extern decimal_double elkd (decimal_double q); extern decimal_long_double elkdl (decimal_long_double q); extern decimal_long_long_double elkdll (decimal_long_long_double q);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
The companion function elq(k) provides the inverse operation, such that
q = elq(k), k = elk(q).
For q > 1/2, we have k > 0.999995, so expressions requiring elk(q) can be replaced by 1 + elkm1(q) for higher effective precision.
See M. Abramowitz & I. A. Stegun, Handbook of Mathematical Functions, Chapter 16, for definitions of the Jacobian elliptic, theta, and zeta functions.