
Papers:
List Papers;
(with Abstracts);
Curriculum (in Italian):
long version ;
short 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 I collect some links concerning the computation of the
EulerKronecker constants for prime cyclotomic fields,
the maximum over non trivial characters
for the logarithmic derivative at 1 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], I introduced a faster method to compute the
EulerKronecker constants for prime cyclotomic fields and, as a byproduct,
I also applied it to estimate the maximum of the absolute value
of the logarithmic derivative at 1 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, I established that
𝔊_{9109334831} = 0.248739...
and
𝔊_{9854964401} = 0.096465...
thus getting a two new negative values for 𝔊_{q};
remark also that 𝔊_{9109334831} is the new minimal known
value.
The previous record was obtained in 2014 by Ford, Luca and Moree
in [2] and was 𝔊_{964477901} = 0.182374...
I 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.
I have to state the obvious
fact that if you wish to use some of the softwares below for your own research,
you should acknowledge the author and cite the relevant paper in which the program
was used first. In other words, you can use them but you have to
cite the paper of mine that contains such programs.
If you are wondering why I am stating something so trivial, please have a look at P0 here:
A.LanguascoPrograms
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 towards the end 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 towards the end 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 towards the end 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 towards the end 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 towards the end 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 at 1 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 towards the end 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 towards the end 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 towards the end 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.
Towards the end 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(1a/q)),
a =g^{j} mod q, g=primroot, 1a/q = g^{j+m}/q, m=(q1)/2,
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(1g^{j}/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 (which also allows 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 at 1 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 towards the end 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 csv file here:
results;
the analysis on this file were performed using a python3pandas
script (also included there).
In the directory
plots you can find the scatter
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 
Efficient computation of the EulerKronecker constants for prime cyclotomic fields
 Research in Number Theory 7 (2021), no. 1, Paper no. 2.
[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.
[4] A. Languasco, L. Righi 
A fast
algorithm to compute the RamanujanDeninger
gamma function and some numbertheoretic applications
 Mathematics of Computation 90 (2021), 28992921.
Ultimo aggiornamento: 10.12.2021: 15:13:01
