man pages section 3: Extended Library Functions, Volume 2
Updated: July 2014

## mp_mcmp(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) ).

### Files

/usr/lib/libmp.so

shared object

### Attributes

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

ATTRIBUTE TYPE
ATTRIBUTE VALUE
MT-Level
Unsafe