Introduction to Riemann Surfaces#

A Riemann surface object is defined by an affine plane equation \(f(x,y) = 0\) in the following way. The Riemann surface \(X\) associated to the equation \(f(x,y) = 0\), denoted \(X : f = 0\) is the set of complex points of the non-singular model of the projective closure \(C\) of the affine curve defined by \(f(x,y) = 0\), i.e., \(X = C({\bf C})\).

There are two different types of Riemann surface in Magma for which two different sets of algorithms are used, depending on the defining equation \(f = 0\).

(i)

The general Riemann surface type is defined by a geometrically irreducible function \(f \in {\bf K}[x,y]\) over a number field \(K\) and an embedding \(\sigma : K \rightarrow {\bf C}\);

(ii)

The superelliptic Riemann surface type defined by an affine equation \(y^m = p(x)\) where \(p \in {\bf K}[x]\) is separable, \({\bf K}\subseteq {\bf C}\) and \(m > 1\).

Note that, in practice, increasing the precision heavily impacts the running time of the algorithms. The algorithms for a general Riemann surface work reasonably well for up to a precision of several hundred digits, say up to \(D \sim 500\), while the superelliptic case is considerably more efficient so that working to a precision of several thousand digits is possible, say up to \(D \sim 2000\). Higher precisions are possible, but the computation may take considerable time.

The main application of this Riemann surface package is to numerically approximate a period matrix \(\Omega\) that describes the analytic Jacobian \(J({\bf C}) = {\bf C}^g / \Omega {\bf Z}^{2g}\) of the curve \(C\) and associated Abel–Jacobi map \(A : X \rightarrow J\) up to some prescribed precision \(D\), where the number of decimal digits \(D\) can be specified by the user. The aim is that numerical computations should be correct up to an absolute error of \(10^{-D+1}\) using heuristic error estimates.

The Riemann surface type is called RieSrf.

The algorithms for general Riemann surfaces are described in [Neurohr, 2018, Chapter 4]. The algorithms for the superelliptic case are based on a paper by Molin and Neurohr [Molin and Neurohr, 2017]; more details can be found in [Neurohr, 2018, Chapter 5]. Finally, the algorithms used for numerical integration are described in more detail in [Neurohr, 2018, Chapter 3].

Example: Rie Srf Verbose (ex-5b318d)#

For those who are interested in seeing what is happening behind the scenes, there is a verbose flag called RieSrf which has verbose levels in the range \([0..3]\).