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