Blob


1 #include "os.h"
2 #include <mp.h>
3 #include "dat.h"
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;
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 }