Blob
1 #include "os.h"2 #include <mp.h>3 #include "dat.h"5 // prereq: a >= b, alen >= blen, diff has at least alen digits6 void7 mpvecsub(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit *diff)8 {9 int i, borrow;10 mpdigit x, y;12 borrow = 0;13 for(i = 0; i < blen; i++){14 x = *a++;15 y = *b++;16 y += borrow;17 if(y < borrow)18 borrow = 1;19 else20 borrow = 0;21 if(x < y)22 borrow++;23 *diff++ = x - y;24 }25 for(; i < alen; i++){26 x = *a++;27 y = x - borrow;28 if(y > x)29 borrow = 1;30 else31 borrow = 0;32 *diff++ = y;33 }34 }