New mpz functions...

David Cleaver wraithx at
Thu Jul 14 06:00:32 CEST 2011

Hello all,

Not too long ago I needed some mathematical functions that I couldn't really 
find implemented anywhere.  I eventually stumbled on someone's implementation 
and was able to code it up with GMP.  I was wondering, would there be any 
interest in including these functions in the official GMP?  The functions are 
the Lucas U and Lucas V sequences, defined with parameters p and q.  Here are 
the prototypes:

int mpz_lucasu(mpz_t rop, int p, int q, int k)
int mpz_lucasumod(mpz_t rop, int p, int q, int k, mpz_t n)
int mpz_lucasv(mpz_t rop, int p, int q, int k)
int mpz_lucasvmod(mpz_t rop, int p, int q, int k, mpz_t n)

With these functions, you can generate several familiar sequences, like:
U[k](1,-1) : Fibonacci Numbers
V[k](1,-1) : Lucas Numbers
U[k](2,-1) : Pell Numbers
U[k](3,2) : Mersenne Numbers

It uses Lucas Chains to calculate the values, so it should be pretty quick.  On 
my computer it takes about 0.03 seconds to calculate the 1000000th Fibonacci Number.

I have a c file already written, but wanted to see if there was interest before 
sending it out.  Please let me know what you think of this proposal, and thanks 
for your time.

-David C.

More information about the gmp-discuss mailing list