aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/matrix.rb4
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 <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
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?