[#20525] [BigDecimal] changing rule of coerce — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

44 messages 2003/07/07
[#20527] Re: [BigDecimal] changing rule of coerce — "Shigeo Kobayashi" <shigeo@...> 2003/07/07

小林です。

[#20528] Re: [BigDecimal] changing rule of coerce — matz@... (Yukihiro Matsumoto) 2003/07/07

まつもと ゆきひろです

[#20570] Marshal upgrade — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

41 messages 2003/07/09
[#20575] Re: Marshal upgrade — Masatoshi SEKI <m_seki@...> 2003/07/09

咳といいます。

[#20583] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/09

まつもと ゆきひろです

[#21016] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/30

まつもと ゆきひろです

[#20804] add library — nobu.nakada@... 2003/07/23

なかだです。

[#20580] add library(Re:ruby-dev:20570) — たむらけんいち <sgs02516@...>

たむらです。

30 messages 2003/07/09
[#20656] Re: add library — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/07/14

なひです。

[#20658] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <038d01c349cb$eaad71d0$93222fc0@sarion.co.jp>,

[#20659] Re: add library — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20660] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <1058171960.400840.10041.nullmailer@picachu.netlab.jp>,

[#20661] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

話をそらしてしまうかもしれませんが、

[#20665] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030714.183104.09092354.taca@back-street.net>,

[#20666] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

In message <20030715.013655.424936247.gotoyuzo@kotetsu.does.notwork.org>

[#20668] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030715.025907.26217115.taca@back-street.net>,

[#20750] Re: add library — Takahiro Kambe <taca@...> 2003/07/21

In message <20030715.051853.968499478.gotoyuzo@kotetsu.does.notwork.org>

[#20751] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/21

In message <20030721.163444.09092937.taca@back-street.net>,

[#20655] frozen ThreadGroup — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

26 messages 2003/07/14
[#20671] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20673] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20676] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20677] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20681] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20690] portable(?) UserID/GroupID control (Re: frozen ThreadGroup) — Hidetoshi NAGAI <nagai@...> 2003/07/16

永井@知能.九工大です.

[#20712] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/17

永井@知能.九工大です.

[#20735] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20736] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/20

永井@知能.九工大です.

[#20737] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20748] [BigDecimal] exception handling — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

20 messages 2003/07/21

[#20765] Re: [ruby-cvs] ruby/lib: * lib/tmpdir.rb: new library to get temporary directory path, — WATANABE Hirofumi <eban@...>

わたなべです。

9 messages 2003/07/21

[#20780] complex.rb — Masahiro TANAKA <masa@...>

complex.rb についての修正案を[ruby-math:00543]で提案しましたが、その後

25 messages 2003/07/22
[#20782] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/22

まつもと ゆきひろです

[#20900] Re: complex.rb — Masahiro TANAKA <masa@...> 2003/07/25

At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:

[#20905] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/25

まつもと ゆきひろです

[#20906] Re: complex.rb — keiju@... (石塚圭樹) 2003/07/25

けいじゅ@いしつかです.

[#20810] Rational 始めました。 — Shin-ichiro HARA <sinara@...>

原です。

13 messages 2003/07/23
[#20876] Re: Rational 始めました。 — keiju@... (石塚圭樹) 2003/07/24

けいじゅ@いしつかです.

[#20954] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2003/07/28

[#20957] [BigDecimal] conflict between Numeric#div and BigDecimal#div — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

29 messages 2003/07/28
[#20960] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/28

At Mon, 28 Jul 2003 18:26:20 +0900, Tadashi Saito wrote:

[#20962] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/28

まつもと ゆきひろです

[#20990] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/29

At Mon, 28 Jul 2003 21:16:08 +0900, Yukihiro Matsumoto wrote:

[#20992] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/29

まつもと ゆきひろです

[ruby-dev:21020] Re: complex.rb

From: Masahiro TANAKA <masa@...>
Date: 2003-07-30 09:53:58 UTC
List: ruby-dev #21020
complex.rb の追加パッチです。

At Sat, 26 Jul 2003 19:11:07 +0900, Masahiro TANAKA wrote:

>   Complex( Complex(1,1), 1 )
> 
> みたいな、実部 and/or 虚部が複素数というへんてこりんな数ができてしまい
> ます。一方 Complex(a,b) メソッドはそのことが考慮されているのですが、
> まだ完全ではありません。

Complex(a,b) をシンプルにして、Complex(Complex(1,1),1) が Complex(1,2) 
を返すようにしました。

その都合で、Numeric の定義を Complex の前に移動しました。

その他、逆三角/双曲関数で、実数の定義域外のとき、Complex の演算結果を
返すようにしました。これは sqrt や log の仕様に合わせたものです。

田中昌宏


Index: complex.rb
===================================================================
RCS file: /ruby/ruby/lib/complex.rb,v
retrieving revision 1.19
diff -w -u -r1.19 complex.rb
--- complex.rb	29 Jul 2003 07:52:52 -0000	1.19
+++ complex.rb	30 Jul 2003 09:32:29 -0000
@@ -27,22 +27,71 @@
 
 
 #
+# Numeric is a built-in class on which Fixnum, Bignum, etc., are based.  Here
+# some methods are added so that all number types can be treated to some extent
+# as Complex numbers.
+#
+class Numeric
+  #
+  # Returns a Complex number <tt>(0,<i>self</i>)</tt>.
+  #
+  def im
+    Complex(0, self)
+  end
+  
+  #
+  # The real part of a complex number, i.e. <i>self</i>.
+  #
+  def real
+    self
+  end
+  
+  #
+  # The imaginary part of a complex number, i.e. 0.
+  #
+  def image
+    0
+  end
+  alias imag image
+  
+  #
+  # See Complex#arg.
+  #
+  def arg
+    if self >= 0
+      return 0
+    else
+      return Math::PI
+    end
+  end
+  alias angle arg
+  
+  #
+  # See Complex#polar.
+  #
+  def polar
+    return abs, arg
+  end
+  
+  #
+  # See Complex#conjugate (short answer: returns <i>self</i>).
+  #
+  def conjugate
+    self
+  end
+  alias conj conjugate
+end
+
+
+#
 # Creates a Complex number.  +a+ and +b+ should be Numeric.  The result will be
 # <tt>a+bi</tt>.
 #
 def Complex(a, b = 0)
-  if a.kind_of?(Complex) and b == 0
-    a
-  elsif b.kind_of?(Complex)
-    if a.kind_of?(Complex)
-      Complex(a.real-b.image, a.image + b.real)
-    else
-      Complex(a-b.image, b.real)
-    end
-  elsif b == 0 and defined? Complex::Unify
+  if b == 0 and (a.kind_of?(Complex) or defined? Complex::Unify)
     a
   else
-    Complex.new!(a, b)
+    Complex.new( a.real-b.imag, a.imag+b.real )
   end
 end
 
@@ -361,61 +410,6 @@
 end
 
 
-#
-# Numeric is a built-in class on which Fixnum, Bignum, etc., are based.  Here
-# some methods are added so that all number types can be treated to some extent
-# as Complex numbers.
-#
-class Numeric
-  #
-  # Returns a Complex number <tt>(0,<i>self</i>)</tt>.
-  #
-  def im
-    Complex(0, self)
-  end
-  
-  #
-  # The real part of a complex number, i.e. <i>self</i>.
-  #
-  def real
-    self
-  end
-  
-  #
-  # The imaginary part of a complex number, i.e. 0.
-  #
-  def image
-    0
-  end
-  alias imag image
-  
-  #
-  # See Complex#arg.
-  #
-  def arg
-    if self >= 0
-      return 0
-    else
-      return Math::PI
-    end
-  end
-  alias angle arg
-  
-  #
-  # See Complex#polar.
-  #
-  def polar
-    return abs, arg
-  end
-  
-  #
-  # See Complex#conjugate (short answer: returns <i>self</i>).
-  #
-  def conjugate
-    self
-  end
-  alias conj conjugate
-end
 
 
 module Math
@@ -538,7 +532,7 @@
   end
 
   def acos(z)
-    if Complex.generic?(z)
+    if Complex.generic?(z) and z >= -1 and z <= 1
       acos!(z)
     else
       -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
@@ -546,7 +540,7 @@
   end
 
   def asin(z)
-    if Complex.generic?(z)
+    if Complex.generic?(z) and z >= -1 and z <= 1
       asin!(z)
     else
       -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
@@ -570,7 +564,7 @@
   end
 
   def acosh(z)
-    if Complex.generic?(z)
+    if Complex.generic?(z) and z >= 1
       acosh!(z)
     else
       log( z + sqrt(z*z-1.0) )
@@ -586,7 +580,7 @@
   end
 
   def atanh(z)
-    if Complex.generic?(z)
+    if Complex.generic?(z) and z >= -1 and z <= 1
       atanh!(z)
     else
       log( (1.0+z) / (1.0-z) ) / 2.0

In This Thread