Mers package programs input and output format description
$Id: mersfmt.txt,v 1.17 2021/12/26 04:31:42 wedgingt Exp $
The basic format of the mers programs, server, and so on is:
M( {exponent} ){letter}[: {extent}][{,| #} {info}]
... where {exponent} is the power of two, {letter} is defined below,
{extent} is the extent of trial factoring, a factor, or some other
value depending on {letter}, a comma (,) or pound sign (#), and
arbitrary {info} in free form. Every space in the format is literal
in that at least one must be present. Square brackets like '[]'
surround optional items and braces like '{}' surround descriptions of
the data that goes there.
Note that, unlike most of the GIMPS work and data, the exponents in my
data are not always prime (though some of the data files on my web site
are restricted to prime exponents).
Everything after the first comma or pound sign is presently ignored by
my database update routines; this will change as I make improvements
to retain the discoverer and method used in the database itself.
Since most of the routines are shell scripts that include sorting on
the exponent, extent, and letter, the spaces are important to separate
fields for the generic UNIX/Linux sort program.
The intent is to have one fairly simple format for all data so that
all programs and scripts can share code to read and write it.
Now, for the descriptions of the {letter}s presently in use. All
examples contain actual data as of when each section was originally
written or was last modified.
M( {exponent} )P[{,| #} {info}]
M( 3021377 )P
'P'rime, perhaps with info about the discovery.
See primeM.txt for a complete list of
known Mersenne prime exponents.
M( {exponent} )C: {prime-factor}[{,| #} {info}
M( 5056039 )C: 58799938797499937, golem.arc.nasa.gov (fd 48) #0 @ Fri Jul 25 02:34:39 1997
'C'omposite with known prime factor. The example is the
output format of my (unreleased) TCP/IP server and denotes
that the factor was sent to it by the listed computer at the
given time. Factors that are composite will not be listed in
the data files on my web site. Factors that are also factors
of smaller Mersenne numbers will also not be listed.
M( {exponent} )C, {residue}[{,| #} {info}]
M( 41 )C, 0x000000c771a34e19, n = 8, mersenne1 v2.50 Kline
'C'omposite with the Lucas-Lehmer residue and usually info on
the program, version, user, and/or date. Verified residues
are available at
mersenne.org on the GIMPS status page in George Woltman's
format. Rarely used now.
M( {exponent} )c: {digits}[{,| #} {info}]
M( 1201 )c: 344
'c'ofactor of {digits} digits is known to be composite. The
number of decimal digits is recorded since that will change
every time a new factor is found.
M( {exponent} )H: {extent}[{,| #} {info}]
M( 727 )H: 9007199397668929
'H'ighest trial factor attempted. Mersenne is known to be
composite. Note that some smaller trial factors may not have
been attempted since my database updates presently assume that
all factorers are trial factorers (see also the 'G' line
below). The extent may be in (integer) power of two format:
M( 727 )H: 2^53
The mers package program extract.c prints George Woltman's
DATABASE file in this last format when given the -4 or the -m
flag.
M( {exponent} )U: {extent}[{,| #} {info}]
M( 2147483743 )U: 844412082585031
'U'nknown primality. Extent is the highest trial factor
attempted. The extent may be in power of two format as
explained for 'H' lines.
M( {exponent} )D[{,| #} {info}]
M( 7673 )D
'D'one; all prime factors are known and I should have an ECPP
primality certificate for each (primitive) prime factor. The
largest prime factor may not be listed explicitly in a 'C'
line; it is often much larger and thus only implied by the 'D'
line. If the exponent is composite, Mersenne numbers with
exponents that divide this exponent may still not be
completely factored. This and the other data that relates to
the cofactor only applies to factors that are "primitive";
that is, to factors that do not evenly divide smaller Mersenne
numbers and cannot be derived algebraicly. The 'd', 'c', 'l',
'm', 'L', and 'M' lines have similar issues since they also
refer to the cofactor. See my
Mersenne page file for related proofs.
M( {exponent} )[dS][{,| #} {info}]
M( {exponent} )[dS]: {digits}[ # {info}]
M( 6375 )C: 261586984897586338470001
M( 6375 )C: 123110416038843347492649222001
M( 6375 )S: 911
'd'one or 'S'PRP; all (primitive) prime factors are thought to
be known. The largest factor is at least a pseudo-prime in
some base other than 2 and is rarely if ever listed explicitly
in a 'C' line. See also the 'D' line just above and the 'L'
and 'M' lines below. I used 'd' until January 2019 and now
use 'S' to avoid 'd' and 'D' being confused by mysql.
M( {exponent} )e: {ECM bound} {curves/trials} [CPUsecs/curve] [{,| #} {info}]
M( 601 )e: 3000000 1
Elliptic Curve Method curves tried at the given (first stage)
bound. The database does not store this but instead adds it
to the E: line for the exponent.
M( {exponent} )E: {ECM "work"} {ECM largest bound} [maxCPUsecs/curve] [{,| #} {info}]
M( 601 )E: 17684960000 3000000
The ECM "work" and largest (stage 1) ECM bound attempted. The
"work" is presently defined as the sum for all curves of the
stage 1 bound used as discussed on the Mersenne mailing list
at the time I started tracking this data.
M( {exponent} )o: {P-1 first stage bound} [P-1 second stage bound][{,| #} {info}]
M( 727 )o: 15000000000
First and second stage bounds tested using a P-1 factorer.
Note that the second stage bound is optional.
M( {exponent} )q: {P+1 first stage bound} [P+1 second stage bound][{,| #} {info}]
M( 727 )q: 0 0
First and second stage bounds tested using a P+1 factorer.
M( {exponent} )G: {start of gap} {end of gap}[{,| #} {info}]
M( 617 )G: 4093841106587383 4503599627370496
This denotes a gap in the trial factoring data. I presently
keep gaps (and joins) separately from the rest of the
database. Note that this can also be used to account for the
range having been tested by a buggy factorer that may have
missed factors (which is the original purpose, in fact, for
these lines).
M( {exponent} )g: {start} {stop}[{,| #} {info}]
M( 4608557 )g: 50 51
This also denotes a gap in the trial factoring data, but
restricted to starting and ending at a power of 2. The gap is
from 2^start thru 2^stop. E.g., the example indicates that
M460857 has not been reliably checked for factors between 2^50
and 2^51. This is also used as a request to a trial factorer
to do the indicated factoring, which is similar the format
used in worktodo.ini files used by Prime95 and mprime and in
worktodo.txt files used by two of the GPU factorers. One
common cause of these lines is an old version of the GIMPS
trial factorer finding a factor as it did not check possible
factors in order but checked each "order of 2" before the next
one.
M( {exponent} )J: {start of "joined"/closed gap} {end of joined gap}[{,| #} {info}]
M( 601 )J: 1203 1181614081
Denotes a "joined" gap in that it was produced by a trial
factoring program that understands the 'G:' lines and is
well tested and "well behaved" (e.g., will not produce gaps).
This data "covers" 'G' and 'g' gaps, shrinking or eliminating them.
The last four letters, L, M, l, and m, all relate to an algebraic factorization
that applies only to composite exponents of the form n = 8*a - 4; the
factors are the 'L' and 'M' "halves" referred to in the descriptions.
The factorization is derived as follows:
M(n) = M(8*a - 4)
= 2^(8*a - 4) - 1
= (2^(4*a - 2))^2 - 1^2
= (2^(4*a - 2) - 1)*(2^(4*a - 2) + 1)
= M(4*a - 2)*(M(4*a - 2) + 2)
Thus, half of the factorization of M(n) (for any even n) will be taken
care of by factoring M(n/2) = M(4*a - 2). The other half can be factored
further into L and M:
M(4*a - 2) + 2 = 2^(4*a - 2) + 1
= (2^(2*n - 1) - 2^n + 1)*(2^(2*n - 1) + 2^n + 1)
= L*M
Note that this factorization into L and M only works if the base, as for
Mersenne numbers, is 2.
M( {exponent} )L: {digits}[{,| #} {info}]
M( 12988 )C: 8234393
M( 12988 )C: 10987849
M( 12988 )C: 3837892943413
M( 12988 )C: 139199988925862811694530245823709
M( 12988 )C: 20098778207148252111516575825479349
M( 12988 )E: 40903926 305323
M( 12988 )L: 862
M( 12988 )m: 877
M( 12988 )o: 10000000
M( 12988 )q: 30000000
All prime factors are thought to be known of the 'L' part.
The largest factor is at least a pseudo-prime in some base
other than 2 and may not be listed explicitly in a 'C' line.
M( {exponent} )M: {digits}[{,| #} {info}]
M( 4892 )C: 44029
M( 4892 )C: 68489
M( 4892 )E: 6045948689 6012334
M( 4892 )M: 4892
M( 4892 )l: 359
M( 4892 )o: 10000000
M( 4892 )q: 12000000
All prime factors are thought to be known of the 'M' part.
The largest factor is at least a pseudo-prime in some base
other than 2 and may not be listed explicitly in a 'C' line.
Note that if both the L and M parts are thought to be completely
factored, then the database may contain an 'S', 'd', or 'D' line (as
described above) rather than the 'L' and 'M' lines.
M( {exponent} )l: {digits}[{,| #} {info}]
M( 4252 )C: 4253
M( 4252 )C: 119057
M( 4252 )C: 2351357
M( 4252 )C: 6262064969
M( 4252 )C: 118640804957
M( 4252 )C: 51799226966893295289509
M( 4252 )C: 51114358532758153182876066459473
M( 4252 )C: 1603777152900827521607976402498110749
M( 4252 )E: 240004674971 95459286
M( 4252 )l: 219
M( 4252 )m: 219
The L half's cofactor of {digits} digits is known to be composite.
The number of decimal digits is recorded since that will change
every time a new factor is found.
M( {exponent} )m: {digits}[{,| #} {info}]
The M half's cofactor of {digits} digits is known to be composite.
The number of decimal digits is recorded since that will change
every time a new factor is found.
Back to my Mersenne page .
The "mers package" of software that I maintain, including the README.html file, is available here and the current beta release is in beta.tgz ; both, with the '.tgz' extension, can
be read by WinZip as well as the FSF's gunzip and UNIX/Linux tar
programs.
The current lowM.txt file, which records all data known to me for
exponents less than 200,000, is in
mersdata.zip, zip'd and mersdata.tgz,
tar'd and then zip'd .
Please send comments, ideas, questions, etc. to me,
Will Edgington (permanent).