1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/matrix] Fix Matrix#orthogonal?

This commit is contained in:
Marc-Andre Lafortune 2020-04-30 18:00:47 -04:00
parent 7d360efe92
commit 3cb038cc7a
2 changed files with 11 additions and 3 deletions

View file

@ -890,11 +890,12 @@ class Matrix
#
def orthogonal?
raise ErrDimensionMismatch unless square?
rows.each_with_index do |row, i|
column_count.times do |j|
rows.each_with_index do |row_i, i|
rows.each_with_index do |row_j, j|
s = 0
row_count.times do |k|
s += row[k] * rows[k][j]
s += row_i[k] * row_j[k]
end
return false unless s == (i == j ? 1 : 0)
end

View file

@ -800,4 +800,11 @@ class TestMatrix < Test::Unit::TestCase
assert_equal false, @a3.unitary?
assert_raise(Matrix::ErrDimensionMismatch) { @m1.unitary? }
end
def test_orthogonal
assert_equal true, @rot.orthogonal?
assert_equal false, ((0+1i) * @rot).orthogonal?
assert_equal false, @a3.orthogonal?
assert_raise(Matrix::ErrDimensionMismatch) { @m1.orthogonal? }
end
end