1*8ccd4a63SDavid du Colombier #include "os.h"
2*8ccd4a63SDavid du Colombier #include <mp.h>
3*8ccd4a63SDavid du Colombier #include "dat.h"
4*8ccd4a63SDavid du Colombier
5*8ccd4a63SDavid du Colombier // remainder = b mod m
6*8ccd4a63SDavid du Colombier //
7*8ccd4a63SDavid du Colombier // knuth, vol 2, pp 398-400
8*8ccd4a63SDavid du Colombier
9*8ccd4a63SDavid du Colombier void
mpmod(mpint * b,mpint * m,mpint * remainder)10*8ccd4a63SDavid du Colombier mpmod(mpint *b, mpint *m, mpint *remainder)
11*8ccd4a63SDavid du Colombier {
12*8ccd4a63SDavid du Colombier mpdiv(b, m, nil, remainder);
13*8ccd4a63SDavid du Colombier if(remainder->sign < 0)
14*8ccd4a63SDavid du Colombier mpadd(m, remainder, remainder);
15*8ccd4a63SDavid du Colombier }
16