1234567891011121314151617181920212223242526272829303132333435 |
- #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;
- }
|