* 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
This commit is contained in:
marcandre 2009-09-16 21:04:07 +00:00
parent d09cde1861
commit 6023a79deb
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Thu Sep 17 06:03:40 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* 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 <ruby-core@marc-andre.ca>
* lib/matrix.rb: Optimizations

View File

@ -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?