typedef struct { int len; short *val; } mint; madd(a, b, c) msub(a, b, c) mult(a, b, c) mdiv(a, b, q, r) min(a) mout(a) pow(a, b, m, c) gcd(a, b, c) rpow(a, b, c) msqrt(a, b, r) mint *a, *b, *c, *m, *q, *r; sdiv(a, n, q, r) mint *a, *q; short *r; mint *itom(n)
madd, msub, 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. rpow calculates a raised to the power b, while pow calculates this reduced modulo m. min andmout do decimal input and output.
The functions are obtained with the loader option -lmp.