From: "marcandre (Marc-Andre Lafortune)" Date: 2012-04-14T03:53:12+09:00 Subject: [ruby-core:44345] [ruby-trunk - Bug #6290][Assigned] Matrix#hermitian? fails to check diagonal elements Issue #6290 has been updated by marcandre (Marc-Andre Lafortune). Category set to lib Status changed from Open to Assigned Assignee set to marcandre (Marc-Andre Lafortune) Target version set to 2.0.0 ---------------------------------------- Bug #6290: Matrix#hermitian? fails to check diagonal elements https://bugs.ruby-lang.org/issues/6290#change-25888 Author: kernigh (George Koehler) Status: Assigned Priority: Normal Assignee: marcandre (Marc-Andre Lafortune) Category: lib Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-04-14 trunk 35320) [x86_64-openbsd5.0] =begin A Hermitian matrix is equal to its own conjugate transpose. matrix == matrix.conj.t The bug is that Matrix#hermitian? fails to check the diagonal elements of the matrix. For example, the matrix in the next script is ((*not*)) Hermitian: require 'matrix' i = Complex::I p Matrix[[-2, -3-i, 3+i ], [-3+i, 3, -5-7*i], [ 3-i, -5+7*i, 9-4*i]].hermitian? This script prints (({true})). I expected (({false})), because 9-4*i != 9+4*i. Each diagonal element must equal its own conjugate (so, its imaginary part must be zero). Matrix#symmetric? can skip the diagonal elements, because each number equals itself. Matrix#hermitian? must not skip the diagonal elements, because some number might not equal its own conjugate. I attach a git diff with a simple fix to Matrix#hermitian?, and some test. =end -- http://bugs.ruby-lang.org/