The following is a table showing the programs used for the search of Fermat number factors.
You see the name of the program, the type of the program, the owner ID as it appears on the factors page
and the full name of the writer of the program.
Program name | version | Type | gfn | Cuda | CL | CPU M/T | GPU M/T | Windows | Linux | MAC OSX | source | owner id | owner name |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AthGFN64 | B306 | Siever | y | n | n | n | n/a | AthGFN64 | Underbakke, Gallot, Carmody | David Underbakke, Yves Gallot, Phil Carmody | |||
Fermat | 4.4 | Sieve+trial division | n | n | n | n | n/a | Fermat | Durman | Leonid Durman | |||
FermFact | 2.0 | Siever | n | n | n | n | n/a | FermFact | Fougeron | Jim Fougeron | |||
Feromant | 2.018 | Sieve+trial division | n | n | n | n | n/a | Feromant | Maznichenko | Roman Maznichenko | |||
Feromant_CUDA | 2.018 | Sieve+trial division | n | y | n | n | y | Feromant_CUDA | Feromant_CUDA | Maznichenko | Roman Maznichenko | ||
GeneFer | 1.3 - 2.2.0 | Primality tester | y | n | n | n | n/a | GeneFer | GeneFer | GeneFer | GeneFer | Gallot, Rodenkirch | Yves Gallot, Mark Rodenkirch |
gfndsieve | 1.8.3 | Siever | y | n | y | y | y | gfndsieve | gfndsieve | gfndsieve | gfndsieve | Rodenkirch | Mark Rodenkirch |
GMP-ECM | 7.0.4 | Factorizer | n | n | n | n | n/a | GMP-ECM | GMP-ECM | GMP-ECM | Zimmermann | Paul Zimmermann | |
GMP-Fermat | 2.5 | Sieve+trial division | n | n | n | n | n/a | GMP-Fermat | GMP-Fermat | Rodenkirch | Mark Rodenkirch | ||
GPU-ECM | 7.0.4 | Factorizer | n | y | n | n | y | GPU-ECM | GPU-ECM | Zimmermann | Paul Zimmermann | ||
LLR | 3.8.21 | Primality tester | n | n | n | y | n/a | LLR | LLR | LLR | LLR | Penné | Jean Penné |
mmff | 0.28 | Sieve+trial division | n | y | n | n | y | mmff | mmff | Woltman | George Woltman | ||
NewPGen | 2.82 | Siever | n | n | n | n | n/a | NewPGen | NewPGen | Jobling | Paul Jobling | ||
pfgw | 3.7.10L 3.8.1M 3.8.3W | Primality tester | y | n | n | n | n/a | pfgw | pfgw | pfgw | Rodenkirch, Woltman | Mark Rodenkirch, George Woltman | |
pmfs | 3.0 | Sieve+trial division | n | n | n | y | n/a | pmfs | Gostin | Gary Gostin | |||
ppSieve | 0.3.10d | Siever | n | n | n | y | n/a | ppSieve | ppSieve | ppSieve | Brazier | Ken Brazier | |
ppSieve_CL | 0.2.5c | Siever | n | n | y | n | y | ppSieve_CL | ppSieve_CL | ppSieve_CL | Brazier | Ken Brazier | |
ppSieve_CUDA | 0.2.5c | Siever | n | y | n | n | y | ppSieve_CUDA | ppSieve_CUDA | ppSieve_CUDA | Brazier | Ken Brazier | |
Prime95 | 28.10 | Primality tester | n | n | n | y | n/a | Prime95 | Prime95 | Prime95 | Prime95 | Woltman | George Woltman |
Proth | n/a | Primality tester | n | n | n | n | n/a | Gallot | Yves Gallot | ||||
PRP | Primality tester | n | n | n | n | n/a | Woltman | George Woltman | |||||
SrSieve | Siever | n | n | n | y | n/a | Reynolds | Geoffrey Reynolds |
Programs description
AthGFN64 - Siever - Version B206 released by David Underbakke on November 21, 2011.
Optimized assembly routines for Athlons, SSE2 registers
The logic is:
Fermat - Sieve + trial division - Version 4.4 released by Leonid Durman on 2004.
Optimized assembly routines for multiplications under 95 bits
The logic is:
FermFact - Siever - Version 2.0 released by Jim Fougeron on November 4th 2003.
Optimized assembly routines, SSE2 registers
This program will sieve multiple k*2^n+1 ranges, similar to NewPGen, but it
does it all at one time, and stores a single output file which is sorted by
the smallest k to the largest k for the whole range. The file can be run
directly by PFGW or PRP. This method allows a significant speed up for
Fermat factor searches. Now efficient trial division can be done over a
large range of n's (the maximum limit of n's is 20000) while sieving a set
of the smallest untested k's, while still obtaining much of the "gain" you
get when using NewPGen. A good "working set" is 1000 n's and 5000 k's
That is 5 million unfactored candidates, which allows the sieve to find
lots of factors, even when the trial factor primes get to be rather large.
To exit the program, saving the results, hit the ESC key. The program also
automatically saves its files every hour, in case of a power outage or crash.
Source page here.
Feromant / Feromant_CUDA - Sieve + trial division - Version 2.017 released by Roman Maznichenko on 2017.
Optimized assembly routines for Montgomery multiplication - CUDA parallelization - Pascal extensions
The program uses a thread to sieve the candidates and a CUDA multiprocessor environment to evaluate multiple residual classes in parallel.
Source page none.
GeneFer80 - GeneFer64 - Primality tester - Version 1.3 - 2.2.0 released by Yves Gallot, David Underbakke, Mark Rodenkirch on 2011.
Optimized assembly routines, SSE2 registers.
gfndsieve - Sieve - Version 1.1.1 released by Mark Rodenkirch on January 2018.
Optimized assembly routines, x87 registers.
GMP-ECM and GPU-ECM - ECM factorization - Version 7.0.3 released by Paul Zimmermann and others on October 11th 2016.
GMP library optimizations, assembly routines, SSE2, XMM and AVX speedups and CUDA parallelization
Elliptic Curve Method for Integer Factorization.
Source page here.
GMP-Fermat - Sieve + trial division - Version 2.5 released by Mark Rodenkirch on September 23th 2016.
GMP library optimizations, assembly routines, Montgomery exponentation and multiplication
The logic is:
LLR - Primality tester - Version 3.8.17 released by Jeaan Penné on February 11th 2016.
Assembly routines, FFT multiplication
A program to prove primality of candidates sieved using external sievers.
Source page none.
mmff - Sieve + trial division - Version 0.28 released by George Woltman on June 26th 2014.
Optimized assembly routines for Montgomery-Barrett multiplication - CUDA parallelization
The program uses a CUDA multiprocessor environment to sieve and evaluate multiple residual classes in parallel.
Source page none.
mmf-gfn - Sieve + trial division - Version 0.28 released by George Woltman and Serge Batalov on July 10th 2014.
Optimized assembly routines for Montgomery-Barrett multiplication - CUDA parallelization
The program uses a CUDA multiprocessor environment to sieve and evaluate multiple residual classes in parallel.
This code is specialised on gfn search only
Source page none.
NewPGen - Siever - Version 2.82 released by Paul Jobling (assembly magic by Yves Gallot) on January 12th 2003.
Optimized assembly routines for Montgomery multiplication - SSE2 registers
NewPGen generates input files for Proth, PFGW, or PRP. Proth performs primality tests for numbers of the form k.b^n+1 and k.b^n-1; PRP performs very rapid pseudo-primality tests for these numbers; PFGW performs primality tests for more general forms.
Most of NewPGen's sieves require n to be fixed, since if this is the case then you can very quickly sieve a large number of k values in parallel.
NewPGen can be used to generate a file from scratch, or to continue sieving a previously generated file. To create a new file, enter the value of b to be used (the base), the value of n, and the first and last k values to use (kmin and kmax). Then select the type of sieving that you wish to perform on these numbers.
When generating a new file, NewPGen uses a bitmap to store the k values. By default, 47.7 Mb of RAM is used for the bitmap, though this can be controlled from the Options menu. If the range of k that you specify is too large to fit into the bitmap, NewPGen will break up the range into a number of smaller ranges, each of which fits into the bitmap, and will then sieve each of these in turn up to p=1 billion. Once it has done this, it will combine the results together and sieve them as normal.
NewPGen is much faster if the base is 2. This is because division by 2 modulo a prime is easy (you shift it right if it is even, otherwise you add the prime then shift it). Division by other bases isn't so straightforward, however.
NewPGen is happy with lots of k's to sieve - there is nothing to be gained by dividing a range of k's up and sieving each subrange in turn. NewPGen will do this for you anyway, as was mentioned above.The value of n doesn't matter too much to NewPGen either.
Source page none.
pfgw - Primality tester - Version 3.8.1 released by Mark Rodenkirch and George Woltman on June 3rd 2016.
Optimized assembly routines for Montgomery-Barrett and FFT multiplication - gwnum library
Fast program to test primality for Fermat and GFN factors.
Best suited for testing of N values from 6,000 up.
Source page none.
pmfs - Sieve + trial division - Version 3.0 released by Gary Gostin on November 30th 2016.
All multi-precision arithmetic is performed using the GMP library, including squaring using mpz_mul
which dynamically selects between several algorithms including Karatsuba, Toom and FFT multiplication.
Calculating r^2 mod (k * 2^n + 1) is performed by dividing (r^2 / 2^n) by k followed by several shift and add/sub operations.
Pmfs is multi-threaded, enabling all processor cores in a system to be used on a single range of N and K.
Performance scaling is nearly linear with the number cores used.
The download file includes the pmfs 3.0 Linux binary, example input and output files, documentation and a benchmarking results spreadsheet.
Source page none.
ppsieve/cuda/opencl - Siever - Version 0.2.5c/0.3.10d released by Ken Brazier on 2011.
Optimized assembly routines for Montgomery-Barrett multiplication and multiplicative inverse - CUDA parallelization
Sieves for factors of numbers of the form K*2^N + or - 1. Independent of K's, but good for many N's too.
Source page here.
prime95 - ECM factorization - Version 28.10 released by George Woltman on March 30th 2016.
Optimized assembly routines for Montgomery-Barrett and FFT multiplication - gwnum library
The program is used for its fast ECM stage1 implementaton.
Source page here.