ref: 7250c438bb124f76aa006dad47b5a3b8f277d1b7
dir: /sys/src/libmp/port/mpmod.c/
#include "os.h"
#include <mp.h>
#include "dat.h"
void
mpmod(mpint *x, mpint *n, mpint *r)
{
int sign;
sign = x->sign;
if((n->flags & MPfield) == 0
|| ((Mfield*)n)->reduce((Mfield*)n, x, r) != 0)
mpdiv(x, n, nil, r);
if(sign < 0)
mpmagsub(n, r, r);
}