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)