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