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