Subversion Repositories planix.SVN

Rev

Details | 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
// prereq: alen >= blen, sum has at least blen+1 digits
6
void
7
mpvecadd(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit *sum)
8
{
9
	int i, carry;
10
	mpdigit x, y;
11
 
12
	carry = 0;
13
	for(i = 0; i < blen; i++){
14
		x = *a++;
15
		y = *b++;
16
		x += carry;
17
		if(x < carry)
18
			carry = 1;
19
		else
20
			carry = 0;
21
		x += y;
22
		if(x < y)
23
			carry++;
24
		*sum++ = x;
25
	}
26
	for(; i < alen; i++){
27
		x = *a++ + carry;
28
		if(x < carry)
29
			carry = 1;
30
		else
31
			carry = 0;
32
		*sum++ = x;
33
	}
34
	*sum = carry;
35
}