Subversion Repositories planix.SVN

Rev

Rev 22 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "os.h"
2
#include <mp.h>
3
#include "dat.h"
4
 
5
void
26 7u83 6
mpmod(mpint *x, mpint *n, mpint *r)
2 - 7
{
26 7u83 8
	int sign;
9
	mpint *ns;
10
 
11
	sign = x->sign;
12
	ns = sign < 0 && n == r ? mpcopy(n) : n;
13
	if((n->flags & MPfield) == 0
14
	|| ((Mfield*)n)->reduce((Mfield*)n, x, r) != 0)
15
		mpdiv(x, n, nil, r);
16
	if(sign < 0){
17
		mpmagsub(ns, r, r);
18
		if(ns != n) mpfree(ns);
19
	}
2 - 20
}