Subversion Repositories planix.SVN

Rev

Rev 22 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 22 Rev 26
Line 9... Line 9...
9
	int n, m, sign;
9
	int n, m, sign;
10
	mpint *t;
10
	mpint *t;
11
 
11
 
12
	// get the sizes right
12
	// get the sizes right
13
	if(mpmagcmp(b1, b2) < 0){
13
	if(mpmagcmp(b1, b2) < 0){
-
 
14
		assert(((b1->flags | b2->flags | diff->flags) & MPtimesafe) == 0);
14
		sign = -1;
15
		sign = -1;
15
		t = b1;
16
		t = b1;
16
		b1 = b2;
17
		b1 = b2;
17
		b2 = t;
18
		b2 = t;
18
	} else
19
	} else {
-
 
20
		diff->flags |= (b1->flags | b2->flags) & MPtimesafe;
19
		sign = 1;
21
		sign = 1;
-
 
22
	}
20
	n = b1->top;
23
	n = b1->top;
21
	m = b2->top;
24
	m = b2->top;
22
	if(m == 0){
25
	if(m == 0){
23
		mpassign(b1, diff);
26
		mpassign(b1, diff);
24
		diff->sign = sign;
27
		diff->sign = sign;
Line 37... Line 40...
37
mpsub(mpint *b1, mpint *b2, mpint *diff)
40
mpsub(mpint *b1, mpint *b2, mpint *diff)
38
{
41
{
39
	int sign;
42
	int sign;
40
 
43
 
41
	if(b1->sign != b2->sign){
44
	if(b1->sign != b2->sign){
-
 
45
		assert(((b1->flags | b2->flags | diff->flags) & MPtimesafe) == 0);
42
		sign = b1->sign;
46
		sign = b1->sign;
43
		mpmagadd(b1, b2, diff);
47
		mpmagadd(b1, b2, diff);
44
		diff->sign = sign;
48
		diff->sign = sign;
45
		return;
49
		return;
46
	}
50
	}