| #include "os.h" | |
| #include <mp.h> | |
| #include "dat.h" | |
| /* prereq: alen >= blen, sum has at least blen+1 digits */ | |
| void | |
| mpvecadd(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit *sum) | |
| { | |
| int i, carry; | |
| mpdigit x, y; | |
| carry = 0; | |
| for(i = 0; i < blen; i++){ | |
| x = *a++; | |
| y = *b++; | |
| x += carry; | |
| if(x < carry) | |
| carry = 1; | |
| else | |
| carry = 0; | |
| x += y; | |
| if(x < y) | |
| carry++; | |
| *sum++ = x; | |
| } | |
| for(; i < alen; i++){ | |
| x = *a++ + carry; | |
| if(x < carry) | |
| carry = 1; | |
| else | |
| carry = 0; | |
| *sum++ = x; | |
| } | |
| *sum = carry; | |
| } |