[ruby-list:45852] patch for Complex#sqrt in lib/cmath.rb of ruby-1.9.1-p0

From: NISHIMATSU Takeshi <t_nissie@...>
Date: 2009-02-04 10:56:38 UTC
List: ruby-list #45852
西松と申します。
[ruby-list:44275] で触れた -0.0(符号付きゼロ)のためのパッチです。
このときにちゃんとチェックせず、申し訳ありませんでした。

% diff -u cmath.rb.original cmath.rb
--- cmath.rb.original   2009-02-04 19:21:19.946793851 +0900
+++ cmath.rb    2009-02-04 19:28:45.593345258 +0900
@@ -63,7 +63,9 @@
        sqrt!(z)
       end
     else
-      if z.imag < 0
+      if (1.0/z.imag).infinite? == -1 and z.real < 0
+        Complex(0.0,-sqrt(-z.real))
+      elsif z.imag < 0
        sqrt(z.conjugate).conjugate
       else
        r = z.abs
% ruby -r complex -e 'p Math::sqrt(Complex(-4,0.0))'
(0.0+2.0i)
% ruby -r complex -e 'p Math::sqrt(Complex(-4,-0.0))'
(0.0-2.0i)

-- 
love && peace && free_software
西松タケシ



In This Thread

Prev Next