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 void7 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 else20 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 else31 carry = 0;32 *sum++ = x;33 }34 *sum = carry;35 }