# omin(3) [osf1 man page]

mp(3) Library Functions Manual mp(3)NAME

madd, msub, mult, mdiv, gcd, invert, rpow, msqrt, mcmp, min, omin, fmin, m_in, mout, omout, fmout, m_out, sdiv, itom - Performs multiple precision integer arithmeticLIBRARY

Object Code Library (libmp.a)SYNOPSIS

#include <mp.h> #include <stdio.h> typedef struct mint { int len; short *val; } MINT; 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 ); pow( MINT *a, MINT *b, MINT *m, MINT *c ); gcd( MINT *a, MINT *b, MINT *c ); invert( MINT *a, MINT *b, MINT *c ); rpow( MINT *a, int n, MINT *c ); msqrt( MINT *a, MINT *b, MINT *r ); mcmp( MINT *a, MINT *b ); move( MINT *a, MINT *b ); min( MINT *a ); omin( MINT *a ); fmin( MINT *a, FILE *f ); m_in( MINT *a, int n, FILE *f ); mout( MINT *a ); omout( MINT *a ); fmout( MINT *a, FILE *f ); m_out( MINT *a, int n, FILE *f ); sdiv( MINT *a, short n, MINT *q, short *r ); *itom( short n );DESCRIPTION

These functions perform arithmetic on integers of arbitrary length. The integers are stored using the defined type MINT. Pointers to a MINT can be initialized using the itom() function, which sets the initial value to n. After that, space is managed automatically by the routines. The madd(), msub() , and mult() functions assign to c the sum, difference, and product, respectively, of a and b. The mdiv() function assigns to q and r the quotient and remainder obtained from dividing a by b. The sdiv() function is like the mdiv() function except that the divisor is a short integer n and the remainder is placed in a short integer whose address is given as r. The msqrt() function produces the integer square root of a in b and places the remainder in r. The rpow() function calculates in c the value of a raised to the (``regular'' integral) power n, while the pow() function calculates this with a full multiple precision exponent b and the result is reduced modulo m. The gcd() function returns the greatest common denominator of a and b in c, and the invert() function computes c such that a*c mod b = 1, for a and b relatively prime. The mcmp() function returns a negative, zero, or positive integer value when a is less than, equal to, or greater than b, respectively. The move() function copies a to b. The min() and mout() functions do decimal input and output while the omin() and omout() functions do octal input and output. More gener- ally, the fmin() and fmout() functions do decimal input and output using file f, and m_in() and m_out do input and output with arbitrary radix n. On input, records should have the form of strings of digits terminated by a newline; output records have a similar form.NOTES

Programs which use the multiple-precision arithmetic library must be compiled withdelim off mp(3)-lmp.

## Check Out this Related Man Page

NAME

madd, msub, mult, mdiv, gcd, invert, rpow, msqrt, mcmp, min, omin, fmin, m_in, mout, omout, fmout, m_out, sdiv, itom - Performs multiple precision integer arithmeticLIBRARY

Object Code Library (libmp.a)SYNOPSIS

#include <mp.h> #include <stdio.h> typedef struct mint { int len; short *val; } MINT; 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 ); pow( MINT *a, MINT *b, MINT *m, MINT *c ); gcd( MINT *a, MINT *b, MINT *c ); invert( MINT *a, MINT *b, MINT *c ); rpow( MINT *a, int n, MINT *c ); msqrt( MINT *a, MINT *b, MINT *r ); mcmp( MINT *a, MINT *b ); move( MINT *a, MINT *b ); min( MINT *a ); omin( MINT *a ); fmin( MINT *a, FILE *f ); m_in( MINT *a, int n, FILE *f ); mout( MINT *a ); omout( MINT *a ); fmout( MINT *a, FILE *f ); m_out( MINT *a, int n, FILE *f ); sdiv( MINT *a, short n, MINT *q, short *r ); *itom( short n );DESCRIPTION

These functions perform arithmetic on integers of arbitrary length. The integers are stored using the defined type MINT. Pointers to a MINT can be initialized using the itom() function, which sets the initial value to n. After that, space is managed automatically by the routines. The madd(), msub() , and mult() functions assign to c the sum, difference, and product, respectively, of a and b. The mdiv() function assigns to q and r the quotient and remainder obtained from dividing a by b. The sdiv() function is like the mdiv() function except that the divisor is a short integer n and the remainder is placed in a short integer whose address is given as r. The msqrt() function produces the integer square root of a in b and places the remainder in r. The rpow() function calculates in c the value of a raised to the (``regular'' integral) power n, while the pow() function calculates this with a full multiple precision exponent b and the result is reduced modulo m. The gcd() function returns the greatest common denominator of a and b in c, and the invert() function computes c such that a*c mod b = 1, for a and b relatively prime. The mcmp() function returns a negative, zero, or positive integer value when a is less than, equal to, or greater than b, respectively. The move() function copies a to b. The min() and mout() functions do decimal input and output while the omin() and omout() functions do octal input and output. More gener- ally, the fmin() and fmout() functions do decimal input and output using file f, and m_in() and m_out do input and output with arbitrary radix n. On input, records should have the form of strings of digits terminated by a newline; output records have a similar form.NOTES

Programs which use the multiple-precision arithmetic library must be compiled withdelim off mp(3)-lmp.