mpSub 多倍長整数同士の減算
void mpSub(int *ret, int *a, int *b);
ret (出力)多倍長整数同士の減算の結果(a - b) a, b (入力)多倍長整数(a は b よりも大きいか等しい)
なし
#define N 10000
void mpSub(int *ret, int *a, int *b)
{
int i;
int la, lb;
int *rr;
int x;
la = *a;
lb = *b;
rr = ret;
x = 0;
for (i = 1; i <= la; i++) {
x += *++a;
if (i <= lb) x -= *++b;
if (x >= 0) {
*++rr = x;
x = 0;
} else {
*++rr = x + N;
x = -1;
}
}
while (--i > 0)
if (*rr-- != 0) break;
*ret = i;
}