[#24105] [Bug #1711] Marshal Failing to Round-Trip Certain Recurisve Data Structures — Run Paint Run Run <redmine@...>

Bug #1711: Marshal Failing to Round-Trip Certain Recurisve Data Structures

9 messages 2009/07/01

[#24116] [Bug #1715] Numeric#arg for NaN is Inconsistent Across Versions — Run Paint Run Run <redmine@...>

Bug #1715: Numeric#arg for NaN is Inconsistent Across Versions

10 messages 2009/07/02

[#24240] [Bug #1755] IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8 — Run Paint Run Run <redmine@...>

Bug #1755: IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8

8 messages 2009/07/09

[#24321] [Bug #1773] Gem path doesn't honor user gem? — Lin Jen-Shin <redmine@...>

Bug #1773: Gem path doesn't honor user gem?

12 messages 2009/07/14

[#24390] [Feature #1784] More encoding (Big5 series) support? — Lin Jen-Shin <redmine@...>

Feature #1784: More encoding (Big5 series) support?

12 messages 2009/07/16

[#24467] Re: [ruby-cvs:31226] Ruby:r24008 (ruby_1_8_6): Removed private on to_date and to_datetime. — Urabe Shyouhei <shyouhei@...>

Hello.

10 messages 2009/07/21

[#24472] [Feature #1800] rubygems can replace system executable files — Kazuhiro NISHIYAMA <redmine@...>

Feature #1800: rubygems can replace system executable files

13 messages 2009/07/21

[#24530] [Feature #1811] Default BasicSocket.do_not_reverse_lookup to true — Roger Pack <redmine@...>

Feature #1811: Default BasicSocket.do_not_reverse_lookup to true

9 messages 2009/07/23

[#24624] [Bug #1844] Immediates Should Not Respond to :dup — Run Paint Run Run <redmine@...>

Bug #1844: Immediates Should Not Respond to :dup

15 messages 2009/07/30

[ruby-core:24129] [Bug #1708] require 'complex' Causes Unexpected Behaviour

From: Run Paint Run Run <redmine@...>
Date: 2009-07-03 17:10:15 UTC
List: ruby-core #24129
Issue #1708 has been updated by Run Paint Run Run.


Thank you for the explanation, matz. :-)

When I heard that Complex had been moved to core I assumed that _all_ Complex functionality had been translated, include the Math extensions. I imagine that this was a common reaction.

It would surely be optimal for the Math methods to seamlessly support Complex numbers. Let's take Math.cos for example. Passing it a Complex number without 'cmath':

    >> Math.cos(Complex(1,2))
    RangeError: can't convert 1+2i into Float
	from (irb):79:in `to_f'
	from (irb):79:in `cos'
	from (irb):79
	from /usr/local/bin/irb:12:in `<main>'

Passing it a Complex number with 'cmath':

    >> Math.cos(Complex(1,2)).inspect
    => "(2.0327230070196656-3.0518977991517997i)"

In this case, what would be the harm of including 'cmath' by default? Performance isn't affected for the common cases (non-Complex numbers), yet Complex arguments "do the right thing". Indeed, the majority of the methods in 'cmath' appear to be only act differently from the default if their argument is Complex (and, in some cases, positive, too). What is the benefit to the user of having a method raise an exception when it could produce the right answer? Or, what do we lose by integrating 'cmath'?

Unless there are serious incompatibilities or performance concerns, it seems more robust and well-rounded if Complex numbers work as one would expect.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/1708

----------------------------------------
http://redmine.ruby-lang.org

In This Thread