# ECPP-DJ

Workload type |
ECPP, BLS75, BPSW, AKS |

First release |
2013 |

Latest version |
1.04 2014-08-16 |

**ECPP-DJ** is a primality testing program created by Dana Jacobsen.

It is written in C using the GMP library. It is a standalone version of the ECPP implementation written for the Perlmodule **M**ath::**P**rime::**U**til::GMP (**MPU**) in 2013.

It implements the following algorithms:

- ECPP test
- BPSW test (strong PRP-2 test followed by extra strong Lucas-Selfridge test)
- AKS test
- BLS75 (particularly, theorems 5/7 and 19)

Most of the utility functions closely follow the algorithms presented in Henri Cohen's book "A Course in Computational Algebraic Number Theory" (1993). The ECM factoring and manipulation was heavily inspired by GMP-ECM by Paul Zimmermann and many others.

It can verify ECPP certificates, which were generated by this program (or MPU) as well as Primo. It can be linked with MPZ APR-CL code to enable the APR-CL test.

Unlike Primo, this is an open-source implementation of ECPP test. However, Primo runs much faster for 1000+ digit numbers, especially on multi-core machines (ECPP-DJ is single threaded).

## Example usage

To verify M12 using BLS75:

- $./ecpp-dj -V -bls 170141183460469231731687303715884105727
- N: 170141183460469231731687303715884105727
- BLS75 proof using N-1
- PRIME

## External links

- Math::Prime::Util::GMP at GitHub
- ECPP-DJ thread at MersenneForum