Bug #6290
closedMatrix#hermitian? fails to check diagonal elements
Description
=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-7i],
[ 3-i, -5+7i, 9-4*i]].hermitian?
This script prints (({true})). I expected (({false})), because 9-4i != 9+4i. 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
Files
Updated by marcandre (Marc-Andre Lafortune) over 12 years ago
- Category set to lib
- Status changed from Open to Assigned
- Assignee set to marcandre (Marc-Andre Lafortune)
- Target version set to 2.0.0
Updated by marcandre (Marc-Andre Lafortune) over 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r35344.
George, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
[Bug #6290] [rubyspec:4b9573d7613]