## RiemannTheta.jl

Julia implementation of the Riemann Theta function
Author fredo-dedup
Popularity
1 Star
Updated Last
4 Years Ago
Started In
January 2018

# RiemannTheta.jl

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}[],

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}[],

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.

### Used By Packages

No packages found.