EJSN
This function evaluates the Jacobi elliptic function sn(x, m).
Function Return Value
EJSN — Real or complex function value. (Output)
Required Arguments
X — Real or complex argument for which the function value is desired. (Input)
AM — Parameter of the elliptic function (m = k2). (Input)
FORTRAN 90 Interface
Generic: EJSN (X, AM)
Specific: The specific interface names are S_EJSN, D_EJSN, C_EJSN, and Z_EJSN
FORTRAN 77 Interface
Single: EJSN (X, AM)
Double: The double precision name is DEJSN.
Complex: The complex name is CEJSN.
Double Complex: The double complex name is ZEJSN.
Description
The Jacobi elliptic function sn(x, m) = sin ɸ, where the amplitude ɸ is defined by the following:
The function sn(x, m) is computed by first applying, if necessary, a Jacobi transformation so that the parameter, m, is between zero and one. Then, a descending Landen (Gauss) transform is applied until the parameter is small. The small parameter approximation is then applied.
Comments
Informational errors
Type | Code | Description |
---|
3 | 2 | The result is accurate to less than one half precision because ∣X∣ is too large. |
3 | 2 | The result is accurate to less than one half precision because ∣REAL (Z)∣ is too large. |
3 | 3 | The result is accurate to less than one half precision because ∣AIMAG (Z)∣ is too large. |
3 | 5 | Landen transform did not converge. Result may not be accurate. This should never occur. |
Examples
Example 1
In this example, sn(1.5, 0.5) is computed and printed.
USE EJSN_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER NOUT
REAL AM, VALUE, X
! Compute
AM = 0.5
X = 1.5
VALUE = EJSN(X, AM)
! Print the results
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) X, AM, VALUE
99999 FORMAT (' EJSN(', F6.3, ',', F6.3, ') = ', F6.3)
END
Output
EJSN( 1.500, 0.500) = 0.968
Example 2
In this example, sn(1.5 + 0.3i, 0.5) is computed and printed.
USE EJSN_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER NOUT
REAL AM
COMPLEX VALUE, Z
! Compute
Z = (1.5, 0.3)
AM = 0.5
VALUE = EJSN(Z, AM)
! Print the results
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) Z, AM, VALUE
99999 FORMAT (' EJSN((', F6.3, ',', F6.3, '), ', F6.3, ') = (', &
F6.3, ',', F6.3, ')')
END
Output
EJSN(( 1.500, 0.300), 0.500) = ( 0.993, 0.054)