Introduction to Elliptic Functions and Integrals
================================================

Maxima includes support for Jacobian elliptic functions and for complete and incomplete elliptic integrals.  This includes symbolic manipulation of these functions and numerical evaluation as well. Definitions of these functions and many of their properties can by found in Abramowitz and Stegun, Chapter 16--17.  As much as possible, we use the definitions and relationships given there.

In particular, all elliptic functions and integrals use the parameter m instead of the modulus k or the modular angle \alpha.  This is one area where we differ from Abramowitz and Stegun who use the modular angle for the elliptic functions.  The following relationships are true: m = k^2 and k = \sin(\alpha)

The elliptic functions and integrals are primarily intended to support symbolic computation.  Therefore, most of derivatives of the functions and integrals are known.  However, if floating-point values are given, a floating-point result is returned.

Support for most of the other properties of elliptic functions and integrals other than derivatives has not yet been written.

Some examples of elliptic functions:

     (%i1) jacobi_sn (u, m);
     (%o1)                    jacobi_sn(u, m)
     (%i2) jacobi_sn (u, 1);
     (%o2)                        tanh(u)
     (%i3) jacobi_sn (u, 0);
     (%o3)                        sin(u)
     (%i4) diff (jacobi_sn (u, m), u);
     (%o4)            jacobi_cn(u, m) jacobi_dn(u, m)
     (%i5) diff (jacobi_sn (u, m), m);
     (%o5) jacobi_cn(u, m) jacobi_dn(u, m)

           elliptic_e(asin(jacobi_sn(u, m)), m)
      (u - ------------------------------------)/(2 m)
                          1 - m

                 2
        jacobi_cn (u, m) jacobi_sn(u, m)
      + --------------------------------
                   2 (1 - m)

Some examples of elliptic integrals:

     (%i1) elliptic_f (phi, m);
     (%o1)                  elliptic_f(phi, m)
     (%i2) elliptic_f (phi, 0);
     (%o2)                          phi
     (%i3) elliptic_f (phi, 1);
                                    phi   %pi
     (%o3)                  log(tan(--- + ---))
                                     2     4
     (%i4) elliptic_e (phi, 1);
     (%o4)                       sin(phi)
     (%i5) elliptic_e (phi, 0);
     (%o5)                          phi
     (%i6) elliptic_kc (1/2);
                                          1
     (%o6)                    elliptic_kc(-)
                                          2
     (%i7) makegamma (%);
                                      2 1
                                 gamma (-)
                                        4
     (%o7)                      -----------
                                4 sqrt(%pi)
     (%i8) diff (elliptic_f (phi, m), phi);
                                     1
     (%o8)                 ---------------------
                                         2
                           sqrt(1 - m sin (phi))
     (%i9) diff (elliptic_f (phi, m), m);
            elliptic_e(phi, m) - (1 - m) elliptic_f(phi, m)
     (%o9) (-----------------------------------------------
                                   m

                                      cos(phi) sin(phi)
                                  - ---------------------)/(2 (1 - m))
                                                  2
                                    sqrt(1 - m sin (phi))

Support for elliptic functions and integrals was written by Raymond Toy.  It is placed under the terms of the General Public License (GPL) that governs the distribution of Maxima.

Functions and Variables for Elliptic Functions
==============================================

 -- Function: jacobi_sn (U, M)
     The Jacobian elliptic function sn(u,m).

 -- Function: jacobi_cn (U, M)
     The Jacobian elliptic function cn(u,m).

 -- Function: jacobi_dn (U, M)
     The Jacobian elliptic function dn(u,m).

 -- Function: jacobi_ns (U, M)
     The Jacobian elliptic function ns(u,m) = 1/sn(u,m).

 -- Function: jacobi_sc (U, M)
     The Jacobian elliptic function sc(u,m) = sn(u,m)/cn(u,m).

 -- Function: jacobi_sd (U, M)
     The Jacobian elliptic function sd(u,m) = sn(u,m)/dn(u,m).

 -- Function: jacobi_nc (U, M)
     The Jacobian elliptic function nc(u,m) = 1/cn(u,m).

 -- Function: jacobi_cs (U, M)
     The Jacobian elliptic function cs(u,m) = cn(u,m)/sn(u,m).

 -- Function: jacobi_cd (U, M)
     The Jacobian elliptic function cd(u,m) = cn(u,m)/dn(u,m).

 -- Function: jacobi_nd (U, M)
     The Jacobian elliptic function nc(u,m) = 1/cn(u,m).

 -- Function: jacobi_ds (U, M)
     The Jacobian elliptic function ds(u,m) = dn(u,m)/sn(u,m).

 -- Function: jacobi_dc (U, M)
     The Jacobian elliptic function dc(u,m) = dn(u,m)/cn(u,m).

 -- Function: inverse_jacobi_sn (U, M)
     The inverse of the Jacobian elliptic function sn(u,m).

 -- Function: inverse_jacobi_cn (U, M)
     The inverse of the Jacobian elliptic function cn(u,m).

 -- Function: inverse_jacobi_dn (U, M)
     The inverse of the Jacobian elliptic function dn(u,m).

 -- Function: inverse_jacobi_ns (U, M)
     The inverse of the Jacobian elliptic function ns(u,m).

 -- Function: inverse_jacobi_sc (U, M)
     The inverse of the Jacobian elliptic function sc(u,m).

 -- Function: inverse_jacobi_sd (U, M)
     The inverse of the Jacobian elliptic function sd(u,m).

 -- Function: inverse_jacobi_nc (U, M)
     The inverse of the Jacobian elliptic function nc(u,m).

 -- Function: inverse_jacobi_cs (U, M)
     The inverse of the Jacobian elliptic function cs(u,m).

 -- Function: inverse_jacobi_cd (U, M)
     The inverse of the Jacobian elliptic function cd(u,m).

 -- Function: inverse_jacobi_nd (U, M)
     The inverse of the Jacobian elliptic function nc(u,m).

 -- Function: inverse_jacobi_ds (U, M)
     The inverse of the Jacobian elliptic function ds(u,m).

 -- Function: inverse_jacobi_dc (U, M)
     The inverse of the Jacobian elliptic function dc(u,m).

Functions and Variables for Elliptic Integrals
==============================================

 -- Function: elliptic_f (PHI, M)
     The incomplete elliptic integral of the first kind, defined as

     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, phi)

     See also elliptic_e and elliptic_kc.

 -- Function: elliptic_e (PHI, M)
     The incomplete elliptic integral of the second kind, defined as

     elliptic_e(u, m) = integrate(sqrt(1 - m*sin(x)^2), x, 0, phi)

     See also elliptic_e and elliptic_ec.

 -- Function: elliptic_eu (U, M)
     The incomplete elliptic integral of the second kind, defined as

     integrate(dn(v,m)^2,v,0,u) = integrate(sqrt(1-m*t^2)/sqrt(1-t^2), t, 0, tau)

     where tau = sn(u,m)

     This is related to elliptic_e by elliptic_eu(u, m) = elliptic_e(asin(sn(u,m)),m) See also elliptic_e.

 -- Function: elliptic_pi (N, PHI, M)
     The incomplete elliptic integral of the third kind, defined as

     integrate(1/(1-n*sin(x)^2)/sqrt(1 - m*sin(x)^2), x, 0, phi)

     Only the derivative with respect to phi is known by Maxima.

 -- Function: elliptic_kc (M)
     The complete elliptic integral of the first kind, defined as

     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, %pi/2)

     For certain values of m, the value of the integral is known in terms of Gamma functions.  Use makegamma to evaluate them.

 -- Function: elliptic_ec (M)
     The complete elliptic integral of the second kind, defined as

     integrate(sqrt(1 - m*sin(x)^2), x, 0, %pi/2)

     For certain values of m, the value of the integral is known in terms of Gamma functions.  Use makegamma to evaluate them.