RiemannTheta.jl

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

RiemannTheta.jl

Julia versions master build Coverage
RiemannTheta RiemannTheta Build Status Build status Coverage Statuscodecov

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.

Used By Packages

No packages found.