Actions
Bug #17631
closed`Numeric#real?` incorrectly returns true for `NaN` and `INFINITY`
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
Description
In mathematics, infinity is not a real number. See https://math.stackexchange.com/a/750787
I don't have a source for this, but I also believe that NaN
is not a real number.
Numeric#real?
incorrectly returns true
for both of these cases.
irb(main):001:0> Float::INFINITY.real?
=> true
irb(main):002:0> Float::NAN.real?
=> true
irb(main):003:0> require 'bigdecimal'
=> true
irb(main):004:0> BigDecimal::NAN.real?
=> true
irb(main):005:0> BigDecimal::INFINITY.real?
=> true
I ran into this while doing some math with logarithms, leading me to have to put in weird catches like return nil if result.complex? || result.nan? || result.infinite?
Originally reported here: https://stackoverflow.com/q/64795265/7950458
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0