# File lib/backports/1.9.2/stdlib/matrix.rb, line 653
  def orthogonal?
    Matrix.Raise ErrDimensionMismatch unless square?
    rows.each_with_index do |row, i|
      column_size.times do |j|
        s = 0
        row_size.times do |k|
          s += row[k] * rows[k][j]
        end
        return false unless s == (i == j ? 1 : 0)
      end
    end
    true
  end