けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :16268 ] the message: "[ruby-list:16268] matrix bug ",
on Aug/23 23:03(JST) Takashi Shimizu writes:

>清水@biglobeです。

>matrix.rbなのですが、
>
>Matrix[[0,1],
>       [1,0]].det
>
>が 1 なのはバグだと思うのですが。(1,1)要素が0だとまずいようです。
>メソッドの定義は読めてないのですが。

確にバグです(^^;;; bug fixしたものをこのメイルの最後に添付します.

>rubyって複素数も簡単だし、行列も簡単だし、計算機代りに使おう、と思った
>のでした。

そうですね. そういう用途に使う場合, さらに便利なmathn.rb というライブラ
リもあります.

# でも, mathn.rbをロードしてMatrix#detすると... 何かバグがあるみたいです.
# こっちの問題は後で調べます.


keiio% rcsdiff -u -r1.8 matrix.rb
===================================================================
RCS file: RCS/matrix.rb,v
retrieving revision 1.8
diff -u -r1.8 matrix.rb
--- matrix.rb	1999/02/17 12:34:19	1.8
+++ matrix.rb	1999/08/24 10:25:11
@@ -2,8 +2,8 @@
 #
 #   matrix.rb - 
 #   	$Release Version: 1.0$
-#   	$Revision: 1.8 $
-#   	$Date: 1999/02/17 12:34:19 $
+#   	$Revision: 1.9 $
+#   	$Date: 1999/08/24 10:25:00 $
 #       Original Version from Smalltalk-80 version
 #	   on July 23, 1985 at 8:37:17 am
 #   	by Keiju ISHITSUKA
@@ -186,7 +186,7 @@
 end
 
 class Matrix
-  @RCS_ID='-$Id: matrix.rb,v 1.8 1999/02/17 12:34:19 keiju Exp $-'
+  @RCS_ID='-$Id: matrix.rb,v 1.9 1999/08/24 10:25:00 keiju Exp keiju $-'
   
 #  extend Exception2MessageMapper
   include ExceptionForMatrix
@@ -595,6 +595,7 @@
 	end while a[i][k] == 0
 	a[i], a[k] = a[k], a[i]
 	akk = a[k][k]
+	det *= -1
       end
       (k + 1).upto(size) do
 	|i|


__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---