(BSD System Compatibility)

# mp(3bsd)

**mp: madd, msub, mult, mdiv, mcmp, min, mout, pow, gcd, rpow, msqrt, sdiv, itom, xtom, mtox, mfree --
(BSD) multiple precision integer arithmetic
**

## Synopsis

/usr/ucb/cc [*flag* . . . ] *file* . . .
#include <mp.h>

madd(MINT **a*, MINT **b*, MINT **c*);

msub(MINT **a*, MINT **b*, MINT **c*);

mult(MINT **a*, MINT **b*, MINT **c*);

mdiv(MINT **a*, MINT **b*, MINT **q*, MINT **r*);

mcmp(MINT **a*,MINT **b*);

min(MINT **a*);

mout(MINT **a*);

pow(MINT **a*, MINT **b*, MINT **c*, MINT **d*);

gcd(MINT **a*, MINT **b*, MINT **c*);

rpow(MINT **a*, short *n*, MINT **b*);

msqrt(MINT **a*, MINT **b*, MINT **r*);

sdiv(MINT **a*, short *n*, MINT **q*, short *r*);

MINT *itom(short *n*);

MINT *xtom(char **s*);

char *mtox(MINT **a*);

void mfree(MINT **a*);

## Description

These routines 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
**itom**,
which sets the initial value to
*n*.
Alternatively,
**xtom**
may be used to initialize a
**MINT**
from a string of hexadecimal digits.
**mfree**
may be used to release the storage allocated
by the
**itom**
and
**xtom**
routines.
**madd**,
**msub**
and
**mult**
assign to their third arguments the sum,
difference, and product,
respectively, of their first two arguments.
**mdiv**
assigns the quotient and remainder,
respectively, to its third and fourth
arguments.
**sdiv**
is like
**mdiv**
except that the divisor is an ordinary integer.
**msqrt**
produces the square root and remainder of
its first argument.
**mcmp**
compares the values of its arguments and returns
**0**
if the two values are equal,
**>0**
if the first argument is greater than the second,
and
**<0**
if the second argument is greater than the first.
**rpow**
calculates
*a*
raised to the power
*b*,
while
**pow**
calculates this reduced modulo
*m*.
**min**
and
**mout**
do decimal input and output.
**gcd**
finds the greatest common divisor of the first two arguments,
returning it in the third argument.
**mtox**
provides the inverse of
**xtom**.
To release the storage allocated by
**mtox,**
use
**free**
[see
**malloc**(3C)].

### Return values

Invalid operations and running out of
memory produce messages and core images.
## References

**malloc**(3C)

*
© 2004 The SCO Group, Inc. All rights reserved.
*

UnixWare 7 Release 7.1.4 - 25 April 2004