(42S) Quotient and Remainder
04-05-2023, 12:39 PM
Post: #2
 Albert Chan Senior Member Posts: 2,697 Joined: Jul 2018
RE: (42S) Quotient and Remainder
Hi, Werner

It had been 2 years. I provided 2 versions for floor-divide

#1: we assumed "normal" division was round-to-nearest, half-way-to-even.
The trick is to reverse engineer how it was done, and reverse the "damage".
(12-20-2020 03:22 AM)Albert Chan Wrote:  To handle signs of a, b, correction test: remainder(a,b)/b < 0 and q-1 or q

#2: more direct way, based from FMA(-q, b, a) = -q*b + a
Fixing q (for floor-divide) is similar: FMA(-q, b, a)/b < 0 and q-1 or q

The downside is that 42S does not have FMA (almost no calculator does ...)
Free42/Plus42 only had it recently (Free42 version ≥ 2.5.23, all Plus42 versions)

(01-08-2021 05:24 PM)Albert Chan Wrote:  FMA based DIV behave the same as my REM based DIV.

Click on the green arrow for floor-divide code.

Note that Free42/Plus42 (42S too?) MOD is really floor-mod. Q should be floor-quotient to match.
Example, Python use floor-divide/floor-mod: divmod(y,x) == (y//x, y%x)

>>> Y, X = 8*10**11+2, 4
>>> divmod(-Y, X)
(-200000000001L, 2L)
>>> divmod(Y, -X)
(-200000000001L, -2L)

OP code, it seems Q is truncated quotient, R is floor-mod.
Or, if you want truncated quotient, R should match that.
Either way, invariant Y = Q*X+R should hold.

(-Y) (X) "RQ" --> (-2e11) (+2)      ?
(Y) (-X) "RQ" --> (-2e11) (-2)       ?
 « Next Oldest | Next Newest »

 Messages In This Thread (42S) Quotient and Remainder - Werner - 04-05-2023, 09:38 AM RE: (42S) Quotient and Remainder - Albert Chan - 04-05-2023 12:39 PM RE: (42S) Quotient and Remainder - Werner - 04-05-2023, 01:11 PM RE: (42S) Quotient and Remainder - Albert Chan - 04-05-2023, 01:48 PM RE: (42S) Quotient and Remainder - Werner - 04-05-2023, 03:55 PM RE: (42S) Quotient and Remainder - Albert Chan - 04-06-2023, 12:03 AM RE: (42S) Quotient and Remainder - Albert Chan - 04-06-2023, 02:55 PM

User(s) browsing this thread: 1 Guest(s)