From: "kernigh (George Koehler)" Date: 2012-04-14T03:48:22+09:00 Subject: [ruby-core:44344] [ruby-trunk - Bug #6290][Open] Matrix#hermitian? fails to check diagonal elements Issue #6290 has been reported by kernigh (George Koehler). ---------------------------------------- Bug #6290: Matrix#hermitian? fails to check diagonal elements https://bugs.ruby-lang.org/issues/6290 Author: kernigh (George Koehler) Status: Open Priority: Normal Assignee: Category: Target version: 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/