From: Yusuke ENDOH Date: 2010-02-18T12:48:11+09:00 Subject: [ruby-core:28207] Re: [Bug #2756] Issues with Math and Complex behavior on 1.9 Hi! > Q. Should 1.9 coerce arguments to Math methods? I really want to agree, but it seems intended change for prohibiting string: $ ruby18 -ve 'p Math.atanh("0.5")' ruby 1.8.8dev (2010-02-01 revision 26536) [i686-linux] 0.549306144334055 $ ./ruby -ve 'p Math.atanh("0.5")' ruby 1.9.2dev (2010-02-18 trunk 26703) [i686-linux] -e:1:in `atanh': can't convert String into Float (TypeError) from -e:1:in `
' The root cause is that explicit float conversion and implicit one are not distinguished. There are to_i, to_int and to_f, but no to_flo. I think this can be fixed by adding to_flo in theory, but it may change behavior of many methods that take Float as arg. Needs much time to discuss, and the change is too big for 1.9 series. > Q. Can we change the 1.8.7 behavior when raising exceptions to be both internally consistent and consistent with the behavior of 1.9 (Note that numerous changes to the exception raised have already been made in 1.8.5 -> 1.8.6 -> 1.8.7, so this request is not without precedent.) Shyouhei, please decide it. IMO, TEENY version may accept such a small spec change, but patch-level might not. > Q. Should the behavior of atanh after requiring lib/complex.rb be the same for non-Complex inputs as before? I agree in this case. Ruby library generally tends to ignore such a type difference. (see http://redmine.ruby-lang.org/issues/show/2495) But cmath.rb attempts to replace the core Math module, so I think it has a responsibility to behave as similarly as possible. I'll work later. > Q. Is lib/complex.rb deprecated or not? If it is, *why* is it deprecated and not removed? The main features of lib/complex.rb are embedded to core in 1.9, but some features (e.g., Numeric#im and complex-sensitive Math) are not. Complex-sensitive Math (just CMath, not replacing core Math) are moved to cmath.rb. Numeric#im and replacing core Math seemed to be deprecated. So lib/complex.rb is now just for compatibility. This is just the fact. I don't know its reason. > Q. Is there a definitive document that explains the policy and behavior of Math and Complex in 1.9? Of course, no it isn't, I guess ;-( -- Yusuke ENDOH