Copyright | (c) Stéphane Laurent 2023 |
---|---|
License | BSD3 |
Maintainer | laurent_step@outlook.fr |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Provides the four usual Jacobi theta functions, the Jacobi theta function
with characteristics, the derivative of the first Jacobi theta function,
as well as a function for the derivative at 0
only of the first Jacobi
theta function.
Synopsis
- jtheta1 :: Complex Double -> Complex Double -> Complex Double
- jtheta2 :: Complex Double -> Complex Double -> Complex Double
- jtheta3 :: Complex Double -> Complex Double -> Complex Double
- jtheta4 :: Complex Double -> Complex Double -> Complex Double
- jthetaAB :: Complex Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- jtheta1Dash0 :: Complex Double -> Complex Double
- jtheta1Dash :: Complex Double -> Complex Double -> Complex Double
Documentation
First Jacobi theta function.
Second Jacobi theta function.
Third Jacobi theta function.
Fourth Jacobi theta function.
:: Complex Double | characteristic a |
-> Complex Double | characteristic b |
-> Complex Double | z |
-> Complex Double | q, the nome |
-> Complex Double |
Jacobi theta function with characteristics. This is a family of functions,
containing 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
). The examples given
below show the periodicity-like properties of these functions:
>>>
import Data.Complex
>>>
a = 2 :+ 0.3
>>>
b = 1 :+ (-0.6)
>>>
z = 0.1 :+ 0.4
>>>
tau = 0.2 :+ 0.3
>>>
im = 0 :+ 1
>>>
q = exp(im * pi * tau)
>>>
jab = jthetaAB a b z q
>>>
jthetaAB a b (z + pi) q
(-5.285746223832433e-3) :+ 0.1674462628348814
>>>
jab * exp(2 * im * pi * a)
(-5.285746223831987e-3) :+ 0.16744626283488154
>>>
jtheta_ab a b (z + pi*tau) q
0.10389127606987271 :+ 0.10155646232306936
>>>
jab * exp(-im * (pi*tau + 2*z + 2*pi*b))
0.10389127606987278 :+ 0.10155646232306961
Derivative at 0 of the first Jacobi theta function. This is much more
efficient than evaluating jtheta1Dash
at 0
.