Downloads.

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 | Windows | Linux | MAC OSX | source | owner id | owner name |
---|---|---|---|---|---|---|---|---|---|---|---|

AthGFN64 | B306 | Siever | y | n | n | AthGFN64 | Underbakke, Gallot, Carmody | David Underbakke, Yves Gallot, Phil Carmody | |||

Fermat | 4.4 | Sieve+trial division | n | n | n | Fermat | Durman | Leonid Durman | |||

FermFact | 2.0 | Siever | n | n | n | FermFact | Fougeron | Jim Fougeron | |||

Feromant | 2.016 | Sieve+trial division | n | n | n | Feromant | Maznichenko | Roman Maznichenko | |||

Feromant_CUDA | 2.017 | Sieve+trial division | n | y | n | Feromant_CUDA | Feromant_CUDA | Maznichenko | Roman Maznichenko | ||

GeneFer | 1.3 - 2.2.0 | Primality tester | y | n | n | GeneFer | GeneFer | GeneFer | GeneFer | Gallot, Rodenkirch | Yves Gallot, Mark Rodenkirch |

gfndsieve | 1.1.1 | Siever | y | n | n | gfndsieve | gfndsieve | gfndsieve | gfndsieve | Rodenkirch | Mark Rodenkirch |

GMP-ECM | 7.0.4 | Factorizer | n | n | n | GMP-ECM | GMP-ECM | GMP-ECM | Zimmermann | Paul Zimmermann | |

GMP-Fermat | 2.5 | Sieve+trial division | n | n | n | GMP-Fermat | GMP-Fermat | Rodenkirch | Mark Rodenkirch | ||

GPU-ECM | 7.0.4 | Factorizer | n | y | n | GPU-ECM | GPU-ECM | Zimmerman | Paul Zimmermann | ||

LLR | 3.8.17 | Primality tester | n | n | n | LLR | LLR | LLR | LLR | Penné | Jean Penné |

mmff | 0.28 | Sieve+trial division | n | y | n | mmff | mmff | Woltman | George Woltman | ||

NewPGen | 2.82 | Siever | n | n | n | NewPGen | NewPGen | Jobling | Paul Jobling | ||

pfgw | 3.7.10L 3.8.1M 3.8.3W | Primality tester | y | n | n | pfgw | pfgw | pfgw | Rodenkirch, Woltman | Mark Rodenkirch, George Woltman | |

pmfs | 3.0 | Sieve+trial division | n | n | n | pmfs | Gostin | Gary Gostin | |||

ppSieve | 0.3.10d | Siever | n | n | n | ppSieve | ppSieve | ppSieve | Brazier | Ken Brazier | |

ppSieve_CL | 0.2.5c | Siever | n | n | y | ppSieve_CL | ppSieve_CL | ppSieve_CL | Brazier | Ken Brazier | |

ppSieve_CUDA | 0.2.5c | Siever | n | y | n | ppSieve_CUDA | ppSieve_CUDA | ppSieve_CUDA | Brazier | Ken Brazier | |

Prime95 | 28.10 | Primality tester | n | n | n | Prime95 | Prime95 | Prime95 | Prime95 | Woltman | George Woltman |

Proth | n/a | Primality tester | n | n | n | Gallot | Yves Gallot | ||||

PRP | Primality tester | n | n | n | Woltman | George Woltman | |||||

SrSieve | Siever | n | n | n | 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:

- - Generate a trial p value. Actually generate many of them in parallel.
- - Calculate the first primitive root.
- - Verify the first primitive root, i.e. 0 = root^2^N+1 mod p
- - Calculate 1/2 of the 2^N roots. Derive the rest via the additive inverse.
- - Discard all roots > b Max
- - For each new root not previously found, verify the result before accepting it.

Source page here. ---

**Fermat** - Sieve + trial division - Version 4.4 released by Leonid Durman on 2004.

Optimized assembly routines for multiplications under 95 bits

The logic is:

- - Sieve k values.
- - Eliminate all the not-needed residual classes.
- - Test candidates using trial division

Source page here. ---

**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.

- - Genefer is a family of programs, based on algorithms by Yves Gallot, for finding large probable GFN primes.
- - Genefer uses a 64-bit floating point FFT which is fast but can only handle a limited range of lower b values.
- - Genefer80 uses an 80-bit floating point FFT and is considerably slower, but can handle a much wider range of b values.
- - GenefX64 is a complete rewrite using SSE2/SSE3 and x64-64. It is 25% faster than any other known CPU based implementation (with a similar lower limitation in b values). With an appropriate graphics card, GeneferCUDA is by far the fastest implementation.

Source page here. ---

**gfndsieve** - Sieve - Version 1.1.1 released by Mark Rodenkirch on January 2018.

Optimized assembly routines, x87 registers.

- - This program can be used in lieu of fermfact. can be compiled and run on any OS running on x86 CPUs.
- - When searching to larger p, the overall performance of gfndsieve compared to fermfact should get closer to 40%.
- - The other main advantage of gfndsieve: it can handle a much larger range of n and k. It is only limited by memory.
- - Other future changes such as support for multi-threading and OpenCL are possible.

Source page here. ---

**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:

- - Sieve k values.
- - Eliminate all the not-needed residual classes.
- - Test candidates using Montgomery exponentiation

Source page none. ---

**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.

Copyright © MoreWare 2003 ...