Introduction
The CM software implements the construction of ring class fields of imaginary quadratic number fields and of elliptic curves with complex multiplication via floating point approximations. Additionally it provides an implementation of the fastECPP algorithm for proving primality of integers. It consists of libraries that can be called from within a C program and of executable command line applications. For the implemented algorithms, see A. Enge, The complexity of class polynomial computation via floating point approximations, Mathematics of Computation 78 (266), 2009, pp. 1089–1107.
The software is written by Andreas Enge and is distributed under the GNU General Public License, either version 3 of the licence, or (at your option) any later version (GPLv3+).
News
In May 2022, I used the fastECPP implementation included in CM since release 0.4.0 to set up a new primality proof record, showing that the number 1050000+65859 is prime; this is in fact the smallest prime with 50001 digits. The prime certificate can be downloaded in PARI/GP and in Primo format. For more details, see the announcement.
Following comments made at the Mersenne forum thread mentioning the record and private emails, I made a few changes, committed to the git server. For convenience, the corresponding version can also be downloaded as a tarball with a signature. It contains the following improvements:
- There is still no backtracking, and I have currently no plans to implement it. However, problematic prime numbers should be handled more gracefully. At least a reported problematic step now works reasonably fast. On the downside, certificates become a bit longer (by about 5% in the example), but I think this is set off by the smoother behaviour of the steps.
- The preliminary step computing primorials takes a bit less memory in the MPI version.
-
When ECPP certificates are output to a file, a second file in Primo
format is created automatically with the suffix
.primo
. It then needs to be renamed to have the suffix.out
for verification with Primo. -
An optional primality test is carried out before starting ECPP as a safety
measure to detect typos. To disable it for numbers known to be pseudoprime
use the command line argument
-t
.
Version 0.4.0 "Fitzebohnen", released in May 2022, comes with the following new features:
- Increase the minimal version numbers of the dependencies, to MPFRCX 0.6.3 and PARI/GP 2.11.
- Add a decomposition of the class field into a tower of prime degree extensions following the algorithm described in A. Enge and F. Morain, Fast Decomposition of Polynomials with Known Galois Group, in Marc Fossorier, Tom Høholdt and Alain Poli (editors): Applied Algebra, Algebraic Algorithms and Error-Correcting Codes — AAECC-15, Lecture Notes in Computer Science vol. 2643. Springer-Verlag, Berlin 2003, pp. 254–264, or its extended version.
- Add an implementation of the fastECPP primality proving algorithm, complete with a version running over MPI.