MP(3MP) 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 arithmetic

SYNOPSIS


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);


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 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.

FILES


/usr/lib/libmp.so
shared object


ATTRIBUTES


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


+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|MT-Level | Unsafe |
+---------------+-----------------+

SEE ALSO


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

DIAGNOSTICS


Illegal operations and running out of memory produce messages 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 compatibility, and
should not be used otherwise. Use the mp_*() functions instead. See
libmp(3LIB).

November 14, 2002 MP(3MP)

tribblix@gmail.com :: GitHub :: Privacy