Bug #13104

mathn.rb affects Rational literals

Added by nobu (Nobuyoshi Nakada) over 3 years ago. Updated about 1 year ago.

Target version:


Without mathn:

$ ruby -e 'p 1.0r'

With mathn:

$ ruby -rmathn -e 'p 1.0r'

Is this intentional?

Updated by shyouhei (Shyouhei Urabe) over 3 years ago

We looked at this issue at yesterday's developer meeting.

The intension was not made clear, but we confirmed that mathn's global side-effects are the nature of that library. Maybe requiring it implies your willing to accept such surprising behaviour.

Updated by nobu (Nobuyoshi Nakada) over 3 years ago

  • Subject changed from math.rb affects Rational literals to mathn.rb affects Rational literals

Just "don't use math"?

Updated by stomar (Marcus Stollsteimer) over 3 years ago

Seems to be triggered by ext/mathn/rational/rational.c and ext/mathn/complex/complex.c, which activate "canonicalization" in rational.c and complex.c.

$ ruby -r mathn/rational -e 'p Rational(2/1)'
$ ruby -r mathn/complex -e 'p Complex("3+0i")'

I suppose the reasoning behind the behavior was that in mathematics generally the simplest representation of a number is used, and n/1 = n.

But what are the plans for mathn anyway? -- It seems to be deprecated since 2.2 (#10169).

Updated by naruse (Yui NARUSE) almost 3 years ago

  • Target version deleted (2.5)

mathn is out of scope from release engineering.

Updated by jeremyevans0 (Jeremy Evans) about 1 year ago

  • Status changed from Assigned to Closed

mathn was removed in Ruby 2.5.

Also available in: Atom PDF