Re: Toleranzen von Double und Float
Verfasst: 02.01.2024 22:12
Oha! Wieder was dazu gelernt!
Eine Abs für Int() gibt es aber wohl nicht! Oder täusch ich mich da!
Sonst würde ich das in Zukunft so machen!
Eine Abs für Int() gibt es aber wohl nicht! Oder täusch ich mich da!
Sonst würde ich das in Zukunft so machen!
Code: Alles auswählen
; val >>63 erzeugt 0 oder -1, da PB mit >> ein arthmeitschen Shift durchführt
; (val Xor (val >> 63) ist also identisch mit If Sign(val) : NOT val : Endif
; Dann muss noch bedingt 1 addiert werden, damit gibt das dann NEG val.
; (val >> 63) &1 erzeugt eine 1, wenn Sign Bit gesetzt
Macro mac_AbsQ(val)
(val ! (val >> 63) + (val >> 63) &1)
EndMacro
Macro mac_AbsInt(val)
If val < 0 : val = -val : EndIf
EndMacro
Define.q Q, r
Q = -100000000000000005
r = mac_AbsQ(Q)
Debug r
Debug Abs(Q)
r = Q
mac_AbsInt(r)
Debug r