[ 簡単な説明 ]
2数の減算を行います。符号を判定して、スレーブルーチン aux1( )、または alsub( )を呼び出します。 |
/* lsub.c */ #include "longint.h" /* subtraction LINT - LINT */ LINT lsub(LINT a, LINT b) { int s; LINT x; x.len = x.sign = 0; s = lcmp(a, b); if(s == 0 && a.sign == b.sign) return x; if(a.len == 0) { b.sign = (b.sign == 0) ? -1: 0; return b; } if(b.len == 0) return a; s = (s >= 0); if(a.sign == b.sign) { if(s) { x = alsub(a, b); x.sign = a.sign; } else { x = alsub(b, a); x.sign = (a.sign == -1) ? 0: -1; } } else { if(s) x = aux1(a, b); else x = aux1(b, a); x.sign = a.sign; } return x; } |