This is the mail archive of the
gsl-discuss@sources.redhat.com
mailing list for the GSL project.
Elliptic integral and function
- From: Liam Healy <Liam dot Healy at nrl dot navy dot mil>
- To: gsl-discuss at sources dot redhat dot com
- Date: Mon, 17 Dec 2001 11:52:11 -0500 (EST)
- Subject: Elliptic integral and function
- Reply-to: Liam Healy <Liam dot Healy at nrl dot navy dot mil>
My understanding is that the Jacobi elliptic function is the inverse
of the elliptic function. That is,
sn(K(k),k) = 1
cn(K(k),k) = 0
dn(K(k),k) = sqrt(1-k^2)
see http://mathworld.wolfram.com/JacobiEllipticFunctions.html
but when I try this I get e.g.
gsltest 0.5
k= 0.50000000000000 K(k)= 1.68575035481260
sn= 0.99289175131682 cn= 0.11902088122262 dn= 0.71209759519570
all three of these seem wrong. My driver program is attached.
What is wrong here? Thank you for any light you can shed on this.
Liam
/* ******************************************************** */
/* file: gsltest.c */
/* description: Test the GSL */
/* date: Mon Dec 17 2001 - 10:09 */
/* author: Liam Healy <Liam.Healy@nrl.navy.mil> */
/* modified: Mon Dec 17 2001 - 11:45 */
/* ******************************************************** */
/* Compile with:
gcc gsltest.c -lgslcblas -lgsl -o gsltest
Run:
source ~/bin/libpath /usr/local/lib/
gsltest
*/
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_sf_ellint.h>
#include <gsl/gsl_sf_elljac.h>
int main(int argc, char *argv[]) {
double k, kk;
double sn, cn, dn;
int ret;
k = atof(argv[1]);
kk = gsl_sf_ellint_Kcomp (k, GSL_PREC_DOUBLE);
ret = gsl_sf_elljac_e (kk, k, &sn, &cn, &dn);
printf("k=%18.14f K(k)=%18.14f\n",k,kk);
printf("sn=%18.14f cn=%18.14f dn=%18.14f\n",sn,cn,dn);
}