| #endif |
#endif |
| #ifdef ASM_SM_SLASH_REM |
#ifdef ASM_SM_SLASH_REM |
| ASM_SM_SLASH_REM(DLO(d), DHI(d), n3, n4, n5); |
ASM_SM_SLASH_REM(DLO(d), DHI(d), n3, n4, n5); |
| if (((DHI(d)^n3)<0) && n4!=0) { |
if (FLOORED_DIV && ((DHI(d)^n3)<0) && n4!=0) { |
| if (CHECK_DIVISION && n5 == CELL_MIN) |
if (CHECK_DIVISION && n5 == CELL_MIN) |
| throw(BALL_RESULTRANGE); |
throw(BALL_RESULTRANGE); |
| n5--; |
n5--; |
| n4+=n3; |
n4+=n3; |
| } |
} |
| #else |
#else |
| DCell r = fmdiv(d,n3); |
DCell r = FLOORED_DIV ? fmdiv(d,n3) : smdiv(d,n3); |
| n4=DHI(r); |
n4=DHI(r); |
| n5=DLO(r); |
n5=DLO(r); |
| #endif |
#endif |
| #ifdef ASM_SM_SLASH_REM |
#ifdef ASM_SM_SLASH_REM |
| Cell remainder; |
Cell remainder; |
| ASM_SM_SLASH_REM(DLO(d), DHI(d), n3, remainder, n4); |
ASM_SM_SLASH_REM(DLO(d), DHI(d), n3, remainder, n4); |
| if (((DHI(d)^n3)<0) && remainder!=0) { |
if (FLOORED_DIV && ((DHI(d)^n3)<0) && remainder!=0) { |
| if (CHECK_DIVISION && n4 == CELL_MIN) |
if (CHECK_DIVISION && n4 == CELL_MIN) |
| throw(BALL_RESULTRANGE); |
throw(BALL_RESULTRANGE); |
| n4--; |
n4--; |
| } |
} |
| #else |
#else |
| DCell r = fmdiv(d,n3); |
DCell r = FLOORED_DIV ? fmdiv(d,n3) : smdiv(d,n3); |
| n4=DLO(r); |
n4=DLO(r); |
| #endif |
#endif |
| : |
: |