Precision

The values of an L-series are computed numerically and the precision required in these computations can be specified using the Precision parameter when an L-function is created. For example,

> K := CyclotomicField(3);
> L := LSeries(K: Precision:=60);
> Evaluate(L,2);
1.28519095548414940291751179869957460396917839702892124395133
computes ζ(K, 2) to 60 digits precision. The default value Precision:=0 is equivalent to the precision of the default real field at the time of the LSeries initialization call. If the user only wants to check numerically whether an L-function vanishes at a given point s and the value itself is not needed, it might make sense to decrease the precision (to 9 digits, say) to speed up the computations.
> E := EllipticCurve([0,0,1,-7,6]);
> RootNumber(E);
-1
> L := LSeries(E: Precision:=9);
> Evaluate(L, 1: Derivative:=1);
1.50193628E-11
> Rank(E);
3

This example checks numerically that L'(E, 1)=0 for the elliptic curve E of conductor 5077 from Example H136E18.

The precision may be changed at a later time using LSetPrecision.

Contents

LSetPrecision(L,precision) : LSer, RngIntElt ->
    CoefficientGrowth: UserProgram      Default: 
    ImS: FldReElt                       Default: 0
    Asymptotics: BoolElt                Default: true
Change the number of digits to which the L-values are going to be computed to precision. The parameter CoefficientGrowth is described below in Section L-series with Unusual Coefficient Growth.

L-series with Unusual Coefficient Growth

The parameter CoefficientGrowth is the name f of a function f(x) (or f(L, x), where L is an L-series) which is an increasing function of a real positive variable x such that |an|≤f(n). This is used to truncate various infinite series in computations. It is set by default to the function f(x)=1.5.xρ - 1 where ρ is the largest real part of a pole of L * (s) if L * (s) has poles and f(x)=2x(weight - 1)/2 if L * (s) has no poles. The user will most likely leave this setting untouched.

Computing L(s) when Im(s) is Large (ImS Parameter)

If s is a complex number having a large imaginary part, a great deal of cancellation occurs while computing L(s), resulting in a loss of precision. (The time when all the precision-related parameters are pre-computed is when the function LSeries is invoked, and at that time Magma has no way of knowing whether L(s) is to be evaluated for complex numbers s having large imaginary part.) If this happens, a message is printed, warning of a precision loss. To avoid this, the user may specify the largest Im(s) for which the L-values are to be calculated as the value of the ImS parameter at the time of the L-series initialization or, later, with a call to LSetPrecision:

> C<i> := ComplexField();
> L := RiemannZeta();
> Evaluate(L, 1/2+40*i);            // wrong
Warning: Loss of 13 digits due to cancellation
0.793044952561928671982128851045 - 1.04127461465106502007452195086*i
> LSetPrecision(L, 30: ImS:=40);
> Evaluate(L, 1/2+40*i);            // right
0.793044952561928671964892588898 - 1.04127461465106502005189059539*i

Implementation of L-series Computations (Asymptotics Parameter)

The optional parameter Asymptotics in LSetPrecision and in the general LSeries function specifies the method by which the special functions needed for the L-series evaluation are computed.

If set to false, Magma will use only Taylor expansions at the origin and these are always known to be convergent. With the default behaviour (Asymptotics:=true) Magma will use both the Taylor expansions and the continued fractions of the asymptotic expansions at infinity. This is much faster, but these continued fractions are not proved to be convergent in all cases.

V2.28, 13 July 2023