From 6023a79deb6a9833542ee1a15666a0589b05fa1c Mon Sep 17 00:00:00 2001 From: marcandre Date: Wed, 16 Sep 2009 21:04:07 +0000 Subject: [PATCH] * lib/matrix.rb (Matrix#rank): Two bug fixes. One made Matrix[[0,0],[0,0],[1,0]].rank raise a NoMethodError while the other one had Matrix[[0,1],[0,0],[1,0]].rank raise a TypeError. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/matrix.rb | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 853d9a5d7f..ac99774780 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Sep 17 06:03:40 2009 Marc-Andre Lafortune + + * lib/matrix.rb (Matrix#rank): Two bug fixes. One made + Matrix[[0,0],[0,0],[1,0]].rank raise a NoMethodError while the other + one had Matrix[[0,1],[0,0],[1,0]].rank raise a TypeError. + Thu Sep 17 06:02:04 2009 Marc-Andre Lafortune * lib/matrix.rb: Optimizations diff --git a/lib/matrix.rb b/lib/matrix.rb index 1ed4e16c4d..c646fe1744 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -751,14 +751,14 @@ class Matrix rank = 0 a_column_size.times do |k| if (akk = a[k][k]) == 0 - i = (k+1 ... a_column_size).find {|i| + i = (k+1 ... a_row_size).find {|i| a[i][k] != 0 } if i a[i], a[k] = a[k], a[i] akk = a[k][k] else - i = (k+1 ... a_row_size).find {|i| + i = (k+1 ... a_column_size).find {|i| a[k][i] != 0 } next if i.nil?