#include "os.h"
#include <mp.h>
#include "dat.h"

// prereq: a >= b, alen >= blen, diff has at least alen digits
void
mpvecsub(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit *diff)
{
       int i, borrow;
       mpdigit x, y;

       borrow = 0;
       for(i = 0; i < blen; i++){
               x = *a++;
               y = *b++;
               y += borrow;
               if(y < borrow)
                       borrow = 1;
               else
                       borrow = 0;
               if(x < y)
                       borrow++;
               *diff++ = x - y;
       }
       for(; i < alen; i++){
               x = *a++;
               y = x - borrow;
               if(y > x)
                       borrow = 1;
               else
                       borrow = 0;
               *diff++ = y;
       }
}