MP(3MP) Multiple Precision Library Functions MP(3MP)


mp, mp_madd, mp_msub, mp_mult, mp_mdiv, mp_mcmp, mp_min, mp_mout, mp_pow,
mp_gcd, mp_rpow, mp_msqrt, mp_sdiv, mp_itom, mp_xtom, mp_mtox, mp_mfree -
multiple precision integer arithmetic


cc [ flag... ] file... -lmp [ library... ]
#include <mp.h>

void mp_madd(MINT *a, MINT *b, MINT *c);

void mp_msub(MINT *a, MINT *b, MINT *c);

void mp_mult(MINT *a, MINT *b, MINT *c);

void mp_mdiv(MINT *a, MINT *b, MINT *q, MINT *r);

int mp_mcmp(MINT *a, MINT *b);

int mp_min(MINT *a);

void mp_mout(MINT *a);

void mp_pow(MINT *a, MINT *b, MINT *c, MINT *d);

void mp_gcd(MINT *a, MINT *b, MINT *c);

void mp_rpow(MINT *a, short n, MINT *b);

int mp_msqrt(MINT *a, MINT *b, MINT *r);

void mp_sdiv(MINT *a, short n, MINT *q, short *r);

MINT * mp_itom(short n);

MINT * mp_xtom(char *a);

char * mp_mtox(MINT *a);

void mp_mfree(MINT *a);


These functions perform arithmetic on integers of arbitrary length. The
integers are stored using the defined type MINT. Pointers to a MINT
should be initialized using the function mp_itom(n), which sets the
initial value to n. Alternatively, mp_xtom(a) may be used to initialize a
MINT from a string of hexadecimal digits. mp_mfree(a) may be used to
release the storage allocated by the mp_itom(a) and mp_xtom(a) routines.

The mp_madd(a,b,c), mp_msub(a,b,c) and mp_mult(a,b,c) functions assign to
their third arguments the sum, difference, and product, respectively, of
their first two arguments. The mp_mdiv(a,b,q,r) function assigns the
quotient and remainder, respectively, to its third and fourth arguments.
The mp_sdiv(a,n,q,r) function is similar to mp_mdiv(a,b,q,r) except that
the divisor is an ordinary integer. The mp_msqrt(a,b,r) function
produces the square root and remainder of its first argument. The
mp_mcmp(a,b) function compares the values of its arguments and returns 0
if the two values are equal, a value greater than 0 if the first
argument is greater than the second, and a value less than 0 if the
second argument is greater than the first. The mp_rpow(a,n,b) function
raises a to the nth power and assigns this value to b. The mp_pow(a,b
,c,d) function raises a to the bth power, reduces the result modulo c
and assigns this value to d. The mp_min(a) and mp_mout(a) functions
perform decimal input and output. The mp_gcd(a,b,c) function finds the
greatest common divisor of the first two arguments, returning it in the
third argument. The mp_mtox( a) function provides the inverse of
mp_xtom(a). To release the storage allocated by mp_mtox(a) use free()
(see malloc(3C)).

Use the -lmp loader option to obtain access to these functions.


shared object


See attributes(5) for descriptions of the following attributes:

|MT-Level | Unsafe |


exp(3M), malloc(3C), libmp(3LIB), attributes(5)


Illegal operations and running out of memory produce messages and core


The function pow() exists in both libmp and libm with widely differing
semantics. This is the reason exists. exists
solely for reasons of backward compatibility, and should not be used
otherwise. Use the mp_*() functions instead. See libmp(3LIB).

November 14, 2002 MP(3MP)