Project

General

Profile

Bug #14014

NaN.finite?

Added by marcandre (Marc-Andre Lafortune) about 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
2.4.2
[ruby-core:83272]

Description

Ruby gives contradictory answers for NaN:

> (0/0.0).finite?
 => false 
> Complex(0/0.0, 0).finite?
 => true 

Note that (0/0.0).infinite? returns nil, so the float answer of false looks even more wrong.

The two solutions I see are either changing Float#finite? to return true for NaN, or to raise in both cases.

I'd lean towards raising in both cases, as NaN can not be said to be finite or infinite

Associated revisions

Revision 60040
Added by nobu (Nobuyoshi Nakada) about 2 years ago

complex.c: no overflow

  • complex.c (rb_complex_finite_p): get rid of overflow and unnecessary multiplication.

Revision 885c16c1
Added by nobu (Nobuyoshi Nakada) about 2 years ago

test_complex.rb: NaN Complex

  • test/ruby/test_complex.rb (test_finite_p): assertions for NaN Complex. NaN is not an infinite nor a finite number. [ruby-core:83272] [Bug #14014]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 60188
Added by nobu (Nobuyoshi Nakada) about 2 years ago

test_complex.rb: NaN Complex

  • test/ruby/test_complex.rb (test_finite_p): assertions for NaN Complex. NaN is not an infinite nor a finite number. [ruby-core:83272] [Bug #14014]

Revision 60188
Added by nobu (Nobuyoshi Nakada) about 2 years ago

test_complex.rb: NaN Complex

  • test/ruby/test_complex.rb (test_finite_p): assertions for NaN Complex. NaN is not an infinite nor a finite number. [ruby-core:83272] [Bug #14014]

Revision 60188
Added by nobu (Nobuyoshi Nakada) about 2 years ago

test_complex.rb: NaN Complex

  • test/ruby/test_complex.rb (test_finite_p): assertions for NaN Complex. NaN is not an infinite nor a finite number. [ruby-core:83272] [Bug #14014]

Revision 65992061
Added by nagachika (Tomoyuki Chikanaga) almost 2 years ago

merge revision(s) 60040,60188: [Backport #14014]

    complex.c: no overflow

    * complex.c (rb_complex_finite_p): get rid of overflow and
      unnecessary multiplication.

    test_complex.rb: NaN Complex

    * test/ruby/test_complex.rb (test_finite_p): assertions for NaN
      Complex.  NaN is not an infinite nor a finite number.
      [ruby-core:83272] [Bug #14014]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 62173
Added by nagachika (Tomoyuki Chikanaga) almost 2 years ago

merge revision(s) 60040,60188: [Backport #14014]

complex.c: no overflow

* complex.c (rb_complex_finite_p): get rid of overflow and
  unnecessary multiplication.

test_complex.rb: NaN Complex

* test/ruby/test_complex.rb (test_finite_p): assertions for NaN
  Complex.  NaN is not an infinite nor a finite number.
  [ruby-core:83272] [Bug #14014]

History

Updated by nobu (Nobuyoshi Nakada) about 2 years ago

  • Status changed from Open to Rejected

NaN is not a (either infinite or finite) number, definitely.
Also it is not positive nor negative, so its signedness is nonsense too.
Complex(0/0.0, 0).finite? returns false in the trunk already.

Updated by Eregon (Benoit Daloze) about 2 years ago

Has this been backported to the 2.4 branch? I think it should.
What commit fixed it?

Updated by nobu (Nobuyoshi Nakada) about 2 years ago

Not yet, it's r60040.

Updated by marcandre (Marc-Andre Lafortune) about 2 years ago

Thanks, sorry I should have tested trunk.

Updated by Eregon (Benoit Daloze) about 2 years ago

Should this be marked as closed rather than rejected and a test be added for NaN for the backport to be performed then?

#6

Updated by nobu (Nobuyoshi Nakada) about 2 years ago

  • Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN to 2.3: DONTNEED, 2.4: REQUIRED
  • Status changed from Rejected to Closed

Updated by nagachika (Tomoyuki Chikanaga) almost 2 years ago

  • Backport changed from 2.3: DONTNEED, 2.4: REQUIRED to 2.3: DONTNEED, 2.4: DONE

ruby_2_4 r62173 merged revision(s) 60040,60188.

Also available in: Atom PDF