
Papers:
List Papers;
(with Abstracts);
Curriculum (in Italian:
long version ;
short version);
in English:
long version)
Google Scholar profile.
ResearchGate page.
Orcid ID.
Scopus Author ID.
Thomson Reuters Researcher ID,
Mathematical Reviews page.
Computation of the EulerKronecker constants for prime cyclotomic fields
(and some related problems)
A. Languasco
In this page we collect some links concerning the computation of the
EulerKronecker constants for prime cyclotomic fields,
the maximum over non trivial characters
for the logarithmic derivative of Dirichlet Lfunctions
modulo q (q odd prime up to 10^6)
and the generalised Euler constants in arithmetic progressions.
In a recent paper [1], we introduced a faster method to compute the
EulerKronecker constants for prime cyclotomic fields and, as a byproduct,
we also applied it to estimate the maximum of the absolute value
of the logarithmic derivative of Dirichlet Lfunctions with prime modulus
and to evaluate the generalised Euler constants in arithmetic progressions.
In particular in [1], using such an improved algorithm, we established that
𝔊_{9109334831} = 0.248739...
thus getting a new minimal negative value for 𝔊_{q}.
The previous record was obtained in 2014 by Ford, Luca and Moree
in [2] and was 𝔊_{964477901} = 0.182374...
We describe here the PARI/Gp scripts and
the C programs used.
More detailed instructions on how to use the C programs are here:
Howitworks.txt.
PARI/Gp scripts
EulerKronecker constants computation:
EKdirectfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
global_eulerkronecker_direct (r_{1},r_{2},defaultprecision).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested.
Output: 𝔊_{q} and 𝔊_{q}^{+} for every odd prime
q such that r_{1}≤q≤r_{2} and the running times.
Comment: it uses the lfun command of PARI/Gp and the Conrey
description of Dirichlet characters. Examples on how to use the function
and computational results are collected at the bottom of the file.
EKTfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
global_eulerkroneckerT (r_{1},r_{2},defaultprecision,flag).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested; flag
(defalult =0): if nonzero computes also the Euler generalised constant γ_{0}(a,q)
and γ_{1}(a,q), 1≤a≤q.
Output: 𝔊_{q} and 𝔊_{q}^{+} for every odd prime q
such that r_{1}≤q≤r_{2} and the running times.
Comments: it computes first the needed values of ψ and T at the a/q points,
see [1], and then obtain 𝔊_{q} and 𝔊_{q}^{+} with a trivial implementation of the sum over a, 1≤a≤q1.
Examples on how to use the function
and computational results are collected at the bottom of the file.
EKSDIFfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
global_eulerkroneckerS_DIF (r_{1},r_{2},defaultprecision).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested.
Output: 𝔊_{q} and 𝔊_{q}^{+} for every odd prime q
such that r_{1}≤q≤r_{2} and the running times.
Comments: it computes first the values of log(Γ) and the decimated in frequency
values of S at the a/q points, see [1], and then obtain 𝔊_{q} and 𝔊_{q}^{+} with a trivial implementation of the sum
over a, 1≤a≤q1. Examples on how to use the function
and computational results are collected at the bottom of the file.
Generalised Euler constants in arithmetic progressions:
GenEulerconstants.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
gk(k,r_{1},r_{2},defaultprecision).
Input: k≥1 is an integer,r_{1} ≤ r_{2} two integers; defaultprecision is the number of digits
requested.
Output: γ_{k}(a,q) for every q such that r_{1}≤q≤r_{2} and 1≤a≤q.
Comments: it uses the values of T
at the a/q points and then obtain γ_{k}(a,q)
as described in [1]. Examples on how to use the function
and computational results are collected at the bottom of the file.
Greedy sequence of prime offsets:
greedy_seq.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
greedy()
whose output is the first 2088 terms of
the greedy sequence of prime offsets.
Such values are
used to evaluate which candidates (q prime) can have small, possibly negative,
values of 𝔊_{q}. An exhaustive search for every prime q up to 10^(10) were performed
to oobtaine a list of q with evalutation greater than 1.2; for very few primes
such a condition holds.
Maximum over non trivial characters
for the logarithmic derivative of Dirichlet Lfunctions
modulo q:
Maxdirectfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
max_direct (r_{1},r_{2},defaultprecision).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested.
Output: the value M(q) (distinguishing between even and odd characters)
for every odd prime q such that r_{1}≤q≤r_{2} and the running times.
Comment: it uses the lfun command of PARI/Gp and the Conrey
description of Dirichlet characters. Examples on how to use the function
and computational results are collected at the bottom of the file.
MaxSfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
maxS_DIF (r_{1},r_{2},defaultprecision).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested.
Output: the value M(q) (distinguishing between even and odd characters)
for every odd prime q such that r_{1}≤q≤r_{2} and the running times.
Comments: it computes first the values of log(Γ) and the decimated in frequency
values of S at the a/q points, see [1], and then obtain M(q) with a trivial implementation of the sum
over a, 1≤a≤q1. Examples on how to use the function
and computational results are collected at the bottom of the file.
MaxTfinal.gp:
PARI/GP
script. It can be used via
gp2c.
The function to be run is:
maxT (r_{1},r_{2},defaultprecision).
Input: 2< r_{1} < r_{2}, two integers; defaultprecision is the number of digits requested.
Output: the value M(q) (distinguishing between even and odd characters)
for every odd prime q such that r_{1}≤q≤r_{2} and the running times.
Comments: it computes first the needed values of ψ and T at the a/q points,
see [1], and then obtain M(q) with a trivial implementation of the sum
over a, 1≤a≤q1. Examples on how to use the function
and computational results are collected at the bottom of the file.
C programs
Examples on how to use the following programs and the results obtained
with them are contained in the directory:
results.
At the bottom of each file are inserted the compilation instructions
for some of the machines used for performing the actual computations.
Precomputations:
EKmain.c:
C program.
input: an odd prime q.
output: the ascii file primroot.res contains q and g, a primitive root mod q.
m_precpsi.c:
C program. Computes the needed values of ψ(a/q), a =g^{j} mod q, g=primroot,
for j in a given interval [x,y]. Saves the results on an ASCII file.
input: the file primroot.res (reads q and g), 0≤ x < y ≤ q2: integers.
output: the ascii file precψxy.res contains q in its first line and then,
line by line, the values of ψ(g^{j}/q), x≤j≤y.
DIFm_precS.c:
C program. Computes the needed decimated in frequency values of (S(a/q)+S(b/q)),
a =g^{j} mod q, b = g^{j+m} mod q, m=(q1)/2, g=primroot,
for j in a given interval [x,y]. Saves the results on an ASCII file.
input: the file primroot.res (reads q and g), 0≤ x < y ≤ q2: integers.
output: the ascii file precomp_SDIFxy.res contains q in its first line and then,
line by line, the decimated in frequency values of S. i.e.
the values of (S(g^{j}/q)+S(g^{j+m}/q)), m=(q1)/2, x≤j≤y.
m_precT.c:
C program. Computes the needed values of T(a/q), a =g^{j} mod q, g=primroot,
for j in a given interval [x,y]. Saves the results on an ASCII file.
input: the file primroot.res (reads q and g), 0≤ x < y ≤ q2: integers.
output: the ascii file precTxy.res contains q in its first line and then,
line by line, the values of T(g^{j}/q), x≤j≤y.
FFT step:
(using the FFTW library):
All the following programs use the FFTWguru64 interface (needed to being able to transform
sequences having dimension larger
than 2^(31)1).
EulerKronecker constants computation:
EKSfftwl.c:
C program.
It computes 𝔊_{q}^{+} and 𝔊_{q} via FFT; it needs the fftw library.
It's the long double precision version. Values of log(Γ) are computed
using the internal function of the C programming language.
Uses the decimated in frequency values for S and the sequence g^{k} mod q.
input: the ascii files primroot.res, precomp_SDIF.res.
output: the values 𝔊_{q}^{+} and 𝔊_{q} and their difference
together with the running times.
EKTfftwl.c:
C program.
It computes 𝔊_{q}^{+} and 𝔊_{q} via FFT; it needs the fftw library.
It's the long double precision version. Double precision values of ψ are computed
using the GSL library.
input: the ascii files primroot.res, precomp_T.res.
output: the values 𝔊_{q}^{+} and 𝔊_{q} and their difference
together with the running times.
An alternative version of EKTfftwl.c (which uses the ψ function values generated by
the program m_precpsi previously described; precomputed and stored on an external file
as for T and S) is also available on request together with the quadruple precision
versions of all the previously mentioned programs.
Maximum over non trivial characters
for the logarithmic derivative of Dirichlet Lfunctions
modulo q:
MaxSfftwl.c:
C program.
It computes M(q) via FFT; it needs the fftw library.
It's the long double precision version. Values of log(Γ) are computed
using the internal function of the C programming language.
Uses the decimated in frequency values for S and the sequence g^{k} mod q.
input: the ascii files primroot.res, precomp_SDIF.res.
output: the value M(q) (distinguishing between even and odd characters) and the running times.
MaxTfftwl.c:
C program.
It computes M(q) via FFT; it needs the fftw library.
It's the long double precision version. Double precision values of ψ are computed
using the GSL library.
input: the ascii files primroot.res, precomp_T.res.
output: the value M(q) (distinguishing between even and odd characters) and the running times.
Results
The results presented in [1] can be retrieved as follows.
The results for 𝔊_{q}^{+}, 𝔊_{q}
and M_{q} for q up to 30011 are contained at the bottom of the each gp scripts listed before.
The results for 𝔊_{q}^{+} and 𝔊_{q} for q from 40009 up to 75743411
were obtained with the C programs (and the FFTW
library) and are collected as .zip files in the directory
results.
The results for 𝔊_{q}^{+}, 𝔊_{q}
and M_{q} for every prime between 3 and 10^6 were obtained with the
C programs (and the FFTW library) on the cluster of the Math. Dept. of the University of
Padova; they can be found in a spreadsheet file here:
results; in the directory
plots you can find the scattered
plots of the normalised results of 𝔊_{q}^{+}, 𝔊_{q}
and M_{q} for every prime between 3 and 10^6.
The results for 𝔊_{q}^{+} and 𝔊_{q} with q≥ 193894451 were obtained with the C programs
(and the FFTW library) on the cluster of the Math. Dept. or
on the C.A.P.R.I. (Calcolo ad Alte Prestazioni per la Ricerca e l'Innovazione) infrastructure of the University of Padova.
They involve huge files to store the needed values for T, S (and ψ; ascii files of about
20GB for S and 40 GB T and ψ for q= 964477901, for instance) and hence cannot be here included. We can just
insert a .txt file with the output of the final fftprograms.
References
Some of the mathematical papers connected with this project are the following.
[1] A. Languasco 
A note on the computation of the
EulerKronecker constants for prime cyclotomic fields
, Arxiv, 2019.
[2] K. Ford; F. Luca; P. Moree 
Values of the Euler phifunction not divisible by a given odd prime,
and the distribution of EulerKronecker constants for cyclotomic fields  Math. Comp. 83 (2014), 14571476.
[3] P. Moree 
Irregular Behaviour of Class Numbers and EulerKronecker
Constants of Cyclotomic Fields: The Log Log Log Devil at Play, in
Irregularities in the Distribution of Prime Numbers. From the Era of Helmut
Maier's Matrix Method and Beyond
(J. Pintz and M.Th. Rassias, eds.),
Springer, 2018, pp. 143163.
Ultimo aggiornamento: 09.10.2019: 08:35:51
