Markus Grassl on Sat, 11 Dec 2021 13:00:11 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

observation: high-precision L-function values of ray class field


Hello,

I would like to share an observation that took me some time to identify.
Given ray class fields over real quadratic field, I am computing high-precision numerical values of the first derivative of L-functions at zero.

The implementation in PARI/GP benefits from multi-threading.

There is a big difference in total running time whether the default precision is changed at the very beginning of the program, i.e., before constructing the ray class field, or just before calling 'lfun'.

As an example, consider the following (using GP/PARI CALCULATOR Version 2.13.3)

  default(nbthreads,20)
  default(timer,1)
  default(debug,1)
  default(parisizemax, 100G)
  default(threadsizemax, 4G)

  K=bnfinit(y^2-4493);
  R0=bnrinit(K,[idealprimedec(K,1123)[1],[1,1]]);

  default(realprecision,1000);

  x0=lfun(lfuncreate([R0,[7]]),0,1)


This version reports

  cpu time = 3min, 15,388 ms, real time = 19,554 ms.

When changing the precision before defining K, the reported time is

  cpu time = 4min, 25,952 ms, real time = 1min, 31,090 ms.

So both the total running time and the wall clock time go up. The result appears to be identical. While the speed-up in the first version is about a factor of 10, it drops to less than 4 for when starting with high precision.

In my examples, the desired precision is even higher.

I don't have sufficient knowledge of the underlying theory and algorithms, so I can only report my observation. While the results that I have obtained so far appear to have the desired precision, I wonder where the result of the L-function calculation is independent of the precision that was set when defining the ray class field. Apparently, that makes a difference when calling 'lfun' later.


Best

Markus