| n2+=n1; |
n2+=n1; |
| } |
} |
| #endif |
#endif |
| |
: |
| |
dup >r dup 0< IF negate >r dnegate r> THEN |
| |
over 0< IF tuck + swap THEN |
| |
um/mod |
| |
r> 0< IF swap negate swap THEN ; |
| |
|
| sm/rem d1 n1 -- n2 n3 core s_m_slash_rem |
sm/rem d1 n1 -- n2 n3 core s_m_slash_rem |
| ""symmetric division: d1 = n3*n1+n2, sign(n2)=sign(d1) or 0"" |
""symmetric division: d1 = n3*n1+n2, sign(n2)=sign(d1) or 0"" |
| : |
: |
| over >r dup >r abs -rot |
over >r dup >r abs -rot |
| dabs rot um/mod |
dabs rot um/mod |
| r> 0< IF negate THEN |
r> r@ xor 0< IF negate THEN |
| r> 0< IF swap negate swap THEN ; |
r> 0< IF swap negate swap THEN ; |
| |
|
| m* n1 n2 -- d core m_star |
m* n1 n2 -- d core m_star |
| d = d1+d2; |
d = d1+d2; |
| #endif |
#endif |
| : |
: |
| >r swap >r over 2/ over 2/ + >r over 1 and over 1 and + 2/ |
rot + >r tuck + swap over u> r> swap - ; |
| r> + >r + r> 0< r> r> + swap - ; |
|
| |
|
| d- d1 d2 -- d double d_minus |
d- d1 d2 -- d double d_minus |
| #ifdef BUGGY_LONG_LONG |
#ifdef BUGGY_LONG_LONG |