多倍長整数の減算


関数名
mpSub  多倍長整数同士の減算
形式
void mpSub(int *ret, int *a, int *b);
引数
ret   (出力)多倍長整数同士の減算の結果(a - b)
a, b  (入力)多倍長整数(a は b よりも大きいか等しい)
関数値
なし
注意事項
用例(mpSub-test.c

プログラム(mpSub.c
#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;
}
説明
10進数の計算と同じように、下語より引き算を実行する。上の語 より「借り」が必要なときは、上の語に1を余分に引く。

関連関数
多倍長整数の加算多倍長整数の乗算多倍長整数の除算多倍長整数の平方根多倍長整数の大小比較数列を多倍長整数に変換する多倍長整数を数列に変換するlong整数を多倍長整数に変換する多倍長整数をlong整数に変換する