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 6... Line 6...
6
void
6
void
7
mpmagadd(mpint *b1, mpint *b2, mpint *sum)
7
mpmagadd(mpint *b1, mpint *b2, mpint *sum)
8
{
8
{
9
	int m, n;
9
	int m, n;
10
	mpint *t;
10
	mpint *t;
-
 
11
 
-
 
12
	sum->flags |= (b1->flags | b2->flags) & MPtimesafe;
11
 
13
 
12
	// get the sizes right
14
	// get the sizes right
13
	if(b2->top > b1->top){
15
	if(b2->top > b1->top){
14
		t = b1;
16
		t = b1;
15
		b1 = b2;
17
		b1 = b2;
Line 21... Line 23...
21
		mpassign(mpzero, sum);
23
		mpassign(mpzero, sum);
22
		return;
24
		return;
23
	}
25
	}
24
	if(m == 0){
26
	if(m == 0){
25
		mpassign(b1, sum);
27
		mpassign(b1, sum);
-
 
28
		sum->sign = 1;
26
		return;
29
		return;
27
	}
30
	}
28
	mpbits(sum, (n+1)*Dbits);
31
	mpbits(sum, (n+1)*Dbits);
29
	sum->top = n+1;
32
	sum->top = n+1;
30
 
33
 
Line 39... Line 42...
39
mpadd(mpint *b1, mpint *b2, mpint *sum)
42
mpadd(mpint *b1, mpint *b2, mpint *sum)
40
{
43
{
41
	int sign;
44
	int sign;
42
 
45
 
43
	if(b1->sign != b2->sign){
46
	if(b1->sign != b2->sign){
-
 
47
		assert(((b1->flags | b2->flags | sum->flags) & MPtimesafe) == 0);
44
		if(b1->sign < 0)
48
		if(b1->sign < 0)
45
			mpmagsub(b2, b1, sum);
49
			mpmagsub(b2, b1, sum);
46
		else
50
		else
47
			mpmagsub(b1, b2, sum);
51
			mpmagsub(b1, b2, sum);
48
	} else {
52
	} else {