aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/matrix.rb1
-rw-r--r--test/matrix/test_matrix.rb1
2 files changed, 2 insertions, 0 deletions
diff --git a/lib/matrix.rb b/lib/matrix.rb
index f82ed65979..e0995c394f 100644
--- a/lib/matrix.rb
+++ b/lib/matrix.rb
@@ -204,6 +204,7 @@ class Matrix
#
def Matrix.diagonal(*values)
size = values.size
+ return Matrix.empty if size == 0
rows = Array.new(size) {|j|
row = Array.new(size, 0)
row[j] = values[j]
diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb
index 26248e5746..50ab00cca7 100644
--- a/test/matrix/test_matrix.rb
+++ b/test/matrix/test_matrix.rb
@@ -179,6 +179,7 @@ class TestMatrix < Test::Unit::TestCase
end
def test_diagonal
+ assert_equal(Matrix.empty(0, 0), Matrix.diagonal( ))
assert_equal(Matrix[[3,0,0],[0,2,0],[0,0,1]], Matrix.diagonal(3, 2, 1))
assert_equal(Matrix[[4,0,0,0],[0,3,0,0],[0,0,2,0],[0,0,0,1]], Matrix.diagonal(4, 3, 2, 1))
end