| |
|
| / ( n1 n2 -- n ) core slash |
/ ( n1 n2 -- n ) core slash |
| n = n1/n2; |
n = n1/n2; |
| if(FLOORED_DIV && ((n1^n2) < 0) && (n1%n2 != 0)) n--; |
if (CHECK_DIVISION && (n2 == 0)) |
| |
throw(-10); |
| |
if (CHECK_DIVISION && n2 == -1 && n1 == CELL_MIN) |
| |
throw(-11); |
| |
if (FLOORED_DIV && ((n1^n2) < 0) && (n1%n2 != 0)) |
| |
n--; |
| : |
: |
| /mod nip ; |
/mod nip ; |
| |
|
| mod ( n1 n2 -- n ) core |
mod ( n1 n2 -- n ) core |
| n = n1%n2; |
n = n1%n2; |
| |
if (CHECK_DIVISION && (n2 == 0)) |
| |
throw(-10); |
| |
if (CHECK_DIVISION && n2 == -1 && n1 == CELL_MIN) |
| |
throw(-11); |
| if(FLOORED_DIV && ((n1^n2) < 0) && n!=0) n += n2; |
if(FLOORED_DIV && ((n1^n2) < 0) && n!=0) n += n2; |
| : |
: |
| /mod drop ; |
/mod drop ; |
| /mod ( n1 n2 -- n3 n4 ) core slash_mod |
/mod ( n1 n2 -- n3 n4 ) core slash_mod |
| n4 = n1/n2; |
n4 = n1/n2; |
| n3 = n1%n2; /* !! is this correct? look into C standard! */ |
n3 = n1%n2; /* !! is this correct? look into C standard! */ |
| |
if (CHECK_DIVISION && (n2 == 0)) |
| |
throw(-10); |
| |
if (CHECK_DIVISION && n2 == -1 && n1 == CELL_MIN) |
| |
throw(-11); |
| if (FLOORED_DIV && ((n1^n2) < 0) && n3!=0) { |
if (FLOORED_DIV && ((n1^n2) < 0) && n3!=0) { |
| n4--; |
n4--; |
| n3+=n2; |
n3+=n2; |