New mpz prp functions...

David Cleaver wraithx at
Tue Aug 9 03:08:12 CEST 2011

Hello all,

Along with the previous Lucas functions I've mentioned, I'd also like to propose 
that we add several new prp functions to the official GMP library.  Here are the 
prototypes for the new prp functions:

int mpz_prp(mpz_t n, mpz_t a) aka: Fermat pseudoprime
int mpz_euler_prp(mpz_t n, mpz_t a) aka: Solovay-Strassen pseudoprime
int mpz_sprp(mpz_t n, mpz_t a) aka: Miller-Rabin pseudoprime
int mpz_fibonacci_prp(mpz_t n, long int p, long int q)
int mpz_lucas_prp(mpz_t n, long int p, long int q)
int mpz_stronglucas_prp(mpz_t n, long int p, long int q)
int mpz_extrastronglucas_prp(mpz_t n, long int p)
int mpz_selfridge_prp(mpz_t n) aka: Lucas-Selfridge pseudoprime
int mpz_strongselfridge_prp(mpz_t n) aka: strong Lucas-Selfridge pseudoprime
int mpz_bpsw_prp(mpz_t n)
int mpz_strongbpsw_prp(mpz_t n)

Where each function can return one of:
#define PRP_ERROR -1
#define PRP_PRP 1
#define PRP_PRIME 2

You can download the code at the sourceforge site:

The source is licensed under the LGPL and includes a sample main() function that 
will print the result of each test for a list of 25 numbers, starting with one 
given on the command line.

Again I'd like to ask, is there any formal procedure to ask for new functions to 
be included into GMP?

-David C.

More information about the gmp-discuss mailing list