Multiple Precision Library Functions mp(3MP)
NAME
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 arithmeticSYNOPSIS
cc [ flag... ] file... -lmp [ library... ]
#include
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);
SunOS 5.11 Last change: 14 Nov 2002 1
Multiple Precision Library Functions mp(3MP)char * mp_mtox(MINT *a);
void mp_mfree(MINT *a);
DESCRIPTION
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 functionmp_itom(n), which sets the initial value to n. Alterna-
tively, 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) func-
tions 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. Themp_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. Themp_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 andassigns this value to d. The mp_min(a) and mp_mout(a) func-
tions perform decimal input and output. The mp_gcd(a,b,c)
function finds the greatest common divisor of the first twoarguments, 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 func-
tions. FILES /usr/lib/libmp.so shared objectATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 14 Nov 2002 2
Multiple Precision Library Functions mp(3MP)____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| MT-Level | Unsafe |
|_____________________________|_____________________________|
SEE ALSO
exp(3M), malloc(3C), libmp(3LIB), attributes(5) DIAGNOSTICSIllegal operations and running out of memory produce mes-
sages and core images. WARNINGS The function pow() exists in both libmp and libm with widely differing semantics. This is the reason libmp.so.2 exists.libmp.so.1 exists solely for reasons of backward compatibil-
ity, and should not be used otherwise. Use the mp_*() func-
tions instead. See libmp(3LIB).SunOS 5.11 Last change: 14 Nov 2002 3