Julia versions | master build | Coverage |
---|---|---|
Julia implementation of the Riemann Theta function. This package is mostly a port
from Python of the same function in the Sage library Abelfunction
(https://github.com/abelfunctions/abelfunctions). Beyond a given problem size (number of z
in zs, dimension of z's, number of integration points), the functions switch to a different algorithm
using matrix operations resulting in very competitive timings (at the cost of memory usage).
The Sage library is itself an implementation of :
[CRTF] B. Deconinck, M. Heil, A. Bobenko, M. van Hoeij and M. Schmies, Computing Riemann Theta Functions, Mathematics of Computation, 73, (2004), 1417-1442.
Exported function are :
riemanntheta(zs::Vector{Vector{Complex128}},
Ω::Matrix{Complex128};
eps::Float64=1e-8,
derivs::Vector{Vector{Complex128}}=Vector{Complex128}[],
accuracy_radius::Float64=5.)::Vector{Complex128}
Return the value of the Riemann theta function for Ω and all z in zs
if
derivs
is empty, or the derivatives at all z in zs
for the given directional
derivatives in derivs
.
Parameters :
zs
: A vector of complex vectors at which to evaluate the Riemann theta function.Omega
: A Riemann matrix.eps
: (Default: 1e-8) The desired numerical accuracy.derivs
: A vector of complex vectors giving a directional derivative.accuracy_radius
: (Default: 5.) The radius from the g-dimensional origin where the requested accuracy of the Riemann theta is guaranteed when computing derivatives. Not used if no derivatives of theta are requested.
oscillatory_part(zs::Vector{Vector{Complex128}},
Ω::Matrix{Complex128};
eps::Float64=1e-8,
derivs::Vector{Vector{Complex128}}=Vector{Complex128}[],
accuracy_radius::Float64=5.)::Vector{Complex128}
Return the value of the oscillatory part of the Riemann theta function for Ω and
all z in zs
if derivs
is empty, or the derivatives at all z in zs
for the
given directional derivatives in derivs
.
Parameters :
zs
: A vector of complex vectors at which to evaluate the Riemann theta function.Omega
: A Riemann matrix.eps
: (Default: 1e-8) The desired numerical accuracy.derivs
: A vector of complex vectors giving a directional derivative.accuracy_radius
: (Default: 5.) The radius from the g-dimensional origin where the requested accuracy of the Riemann theta is guaranteed when computing derivatives. Not used if no derivatives of theta are requested.
And :
exponential_part(zs::Vector{Vector{Complex128}},
Ω::Matrix{Complex128})::Vector{Float64}
Return the value of the exponential part of the Riemann theta function for Ω and
all z in zs
.
Parameters :
zs
: A vector of complex vectors at which to evaluate the Riemann theta function.Omega
: A Riemann matrix.