Hi Kacper,

thanks, fixed in SVN 1302.

Best regards,
Jürgen

On 6/23/20 5:34 PM, Kacper Gutowski wrote:
When dividing a number relatively close to zero by an integer, the result unexpectedly gets clamped to zero:

      (2⋆¯34)÷1
0

Using ⌹ or ×÷ gives expected results instead.
Looks like it happens at the line IntCell.cc:543 which should be removed.  But I don't think there should be a check for near-zero even in the zero-divisor branch.  With float and complex divisors, an exact zero is tested instead.

      (2⋆¯34)÷0         ⍝ shouldn't that still be a domain error?
1
      (2⋆¯34)÷0J0       ⍝ like here
DOMAIN ERROR
      (2⋆¯34)÷0
      ^      ^

The complex one is missing a check for finiteness:

      (2⋆999)÷2⋆¯999    ⍝ correct: 2⋆1998 is not representable
DOMAIN ERROR
      (2⋆999)÷2⋆¯999
      ^      ^
      (2⋆999)÷2⋆¯999J0  ⍝ ??


When trying to see if I can trigger the above, I also noticed that something is off with power too:

      2⋆¯999J0          ⍝ correct
1.866527237E¯301
      2J0⋆¯999          ⍝ ??
0
      2⋆9999            ⍝ this is probably wrong too


There's also some error in parser:

      1.000000001E¯301
1000000001
      1.000000001E¯302
1.000000001E10
      1.000000001E¯308  ⍝ this is still representable as double
0


-k



Reply via email to