# EllipticFunctions.jl documentation

Jacobi theta functions and related functions.

using EllipticFunctions
using Images
# array of complex values.
z = (1:-0.001:-1) .* im .+ (-1:0.001:1)';
# function z->RGB
function colormap(z)
if isinf(z) || isnan(z)
return RGB(0, 0, 0)
end
r = mod(abs(z), 1.0)
g = 2 * mod(angle(z), 0.5)
b = mod(real(z) * imag(z), 1.0)
if isnan(b)
return RGB(0, 0, 0)
end
return RGB(
(1.0 - cos(r-0.5))*8.0,
(1.0 - cos(g-0.5))*8.0,
(1.0 - cos(b-0.5))*8.0
)
end
# function to be plotted
function f(z)
return EllipticFunctions.wzeta(z; tau = 0.1 + 3im)
end
# raster image
image = colormap.(f(3*z))

## Functions

The Weierstrass elliptic functions $\wp$, $\sigma$ and $\zeta$ are vectorized in the variable $z$. That means you do not need to use broadcasting in order to apply them to an array of $z$ values (this would be slower).

EllipticFunctions.ljtheta1Function
ljtheta1(z, q)

Logarithm of the first Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.jtheta1Function
jtheta1(z, q)

First Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.ljtheta2Function
ljtheta2(z, q)

Logarithm of the second Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.jtheta2Function
jtheta2(z, q)

Second Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.ljtheta3Function
ljtheta3(z, q)

Logarithm of the third Jacobi theta function.

Arguments

• z: real or complex number or array of complex numbers
• q: the nome
EllipticFunctions.jtheta3Function
jtheta3(z, q)

Third Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.ljtheta4Function
ljtheta4(z, q)

Logarithm of the fourth Jacobi theta function.

Arguments

• z: real or complex number or array of complex numbers
• q: the nome
EllipticFunctions.jtheta4Function
jtheta4(z, q)

Fourth Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.jtheta_abFunction
jtheta_ab(a, b, z, q)

Jacobi theta function with characteristics. This is a family of functions parameterized by a and b, which contains the opposite of the first Jacobi theta function (a=b=0.5), the second Jacobi theta function (a=0.5,b=0), the third Jacobi theta function (a=b=0), and the fourth Jacobi theta function (a=0,b=0.5).

Arguments

• a: first characteristic, a real or complex number
• b: second characteristic, a real or complex number
• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.jtheta1dashFunction
jtheta1dash(z, q)

Derivative of the first Jacobi theta function.

Arguments

• z: real or complex number or array of numbers
• q: the nome
EllipticFunctions.qfromtauFunction
qfromtau(tau)

The nome q given the tau parameter.

Arguments

• tau: complex number with nonnegative imaginary part
EllipticFunctions.taufromqFunction
taufromq(q)

The tau parameter given the nome q.

Arguments

• q: complex number, the nome; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.kleinjFunction
kleinj(tau)

Klein j-invariant function.

Arguments

• tau: complex number with nonnegative imaginary part
EllipticFunctions.CarlsonRCFunction
CarlsonRC(x, y)

Carlson 'RC' integral.

Arguments

• x,y: real or complex numbers; y cannot be zero
EllipticFunctions.CarlsonRDFunction
CarlsonRD(x, y, z)

Carlson 'RD' integral.

Arguments

• x,y,z: real or complex numbers; at most one of them can be zero
EllipticFunctions.CarlsonRFFunction
CarlsonRF(x, y, z)

Carlson 'RF' integral.

Arguments

• x,y,z: real or complex numbers; at most one of them can be zero
EllipticFunctions.CarlsonRJFunction
CarlsonRJ(x, y, z, p)

Carlson 'RJ' integral.

Arguments

• x,y,z,p: real or complex numbers; at most one of them can be zero
EllipticFunctions.ellipticEFunction
ellipticE(phi, m)

Incomplete elliptic integral of the second kind.

Arguments

• phi: real or complex number, the amplitude
• m: real or complex number, the squared modulus
ellipticE(m)

Complete elliptic integral of the second kind.

Arguments

• m: real or complex number, the squared modulus
EllipticFunctions.ellipticFFunction
ellipticF(phi, m)

Incomplete elliptic integral of the first kind.

Arguments

• phi: real or complex number, the amplitude
• m: real or complex number, the squared modulus
EllipticFunctions.ellipticKFunction
ellipticK(m)

Complete elliptic integral of the first kind.

Arguments

• m: real or complex number, the squared modulus
EllipticFunctions.ellipticPIFunction
ellipticPI(phi, n, m)

Incomplete elliptic integral of first kind.

Arguments

• phi: real or complex number, the amplitude
• n: real or complex number, the characteristic
• m: real or complex number, the squared modulus
EllipticFunctions.ellipticZFunction
ellipticZ(phi, m)

Jacobi Zeta function.

Arguments

• phi: real or complex number, the amplitude
• m: real or complex number, the squared modulus
EllipticFunctions.agmFunction
agm(x, y)

Arithmetic-geometric mean.

Arguments

• x,y: real or complex numbers
EllipticFunctions.EisensteinE2Function
EisensteinE2(q)

Eisenstein E-series of weight 2.

Arguments

• q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.EisensteinE4Function
EisensteinE4(q)

Eisenstein E-series of weight 4.

Arguments

• q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.EisensteinE6Function
EisensteinE6(q)

Eisenstein E-series of weight 6.

Arguments

• q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.ellipticInvariantsFunction
ellipticInvariants(omega1, omega2)

Weierstrass elliptic invariants $g_2$ and $g_3$ from the half-periods.

Arguments

• omega1,omega2: the Weierstrass half periods, real or complex numbers
EllipticFunctions.halfPeriodsFunction
halfPeriods(g2, g3)

Half-periods $\omega_1$ and $\omega_2$ from the elliptic invariants.

Arguments

• g2,g3: the Weierstrass elliptic invariants, real or complex numbers
EllipticFunctions.wpFunction
wp(z; tau, omega, g, derivative=0)

Weierstrass p-function. One and only one of the parameters tau, omega or g must be given.

Arguments

• z: real or complex number or array of numbers
• tau: half-periods ratio, complex number with non negative imaginary part
• omega: half-periods, a pair (tuple) of complex numbers
• g: elliptic invariants, a pair (tuple) of complex numbers
• derivative: order of differentiation, 0, 1, 2 or 3
EllipticFunctions.wsigmaFunction
wsigma(z; tau, omega, g)

Weierstrass sigma-function. One and only one of the parameters tau, omega or g must be given.

Arguments

• z: real or complex number or array of numbers
• tau: half-periods ratio, complex number with non negative imaginary part
• omega: half-periods, a pair (tuple) of complex numbers
• g: elliptic invariants, a pair (tuple) of complex numbers
EllipticFunctions.wzetaFunction
wzeta(z; tau, omega, g)

Weierstrass zeta-function. One and only one of the parameters tau, omega or g must be given.

Arguments

• z: real or complex number or array of numbers
• tau: half-periods ratio, complex number with non negative imaginary part
• omega: half-periods, a pair of complex numbers
• g: elliptic invariants, a pair of complex numbers
EllipticFunctions.thetaCFunction
thetaC(z; tau, m)

Neville C-theta function. Only one of the parameters tau or m must be supplied.

Arguments

• z: real or complex number or array of numbers
• tau: complex number with nonnegative imaginary part
• m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaDFunction
thetaD(z; tau, m)

Neville D-theta function. Only one of the parameters tau or m must be supplied.

Arguments

• z: real or complex number or array of numbers
• tau: complex number with nonnegative imaginary part
• m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaNFunction
thetaN(z; tau, m)

Neville N-theta function. Only one of the parameters tau or m must be supplied.

Arguments

• z: real or complex number or vector/array of complex numbers
• tau: complex number with nonnegative imaginary part
• m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaSFunction
thetaS(z; tau, m)

Neville S-theta function. Only one of the parameters tau or m must be supplied.

Arguments

• z: real or complex number or array of numbers
• tau: complex number with nonnegative imaginary part
• m: real or complex number, square of the elliptic modulus
EllipticFunctions.jellipFunction
jellip(kind, u; tau, m)

Jacobi elliptic functions. Only one of the parameters tau or m must be supplied.

Arguments

• kind: a string with two characters among 'c', 'd', 'n' or 's'; this string specifies the function: the two letters respectively denote the basic functions sn, cn, dn and 1, and the string specifies the ratio of two such functions, e.g. ns=1/sn and cd=cn/dn
• u: a real or complex number or array of numbers
• tau: complex number with nonnegative imaginary part
• m: real or complex number, square of the elliptic modulus
EllipticFunctions.amFunction
am(u, m)

Amplitude function.

Arguments

• u: real or complex number or array of numbers
• m: real or complex number, square of the elliptic modulus