Bug #6290

Matrix#hermitian? fails to check diagonal elements

Added by George Koehler almost 3 years ago. Updated almost 3 years ago.

[ruby-core:44344]
Status:Closed
Priority:Normal
Assignee:Marc-Andre Lafortune
ruby -v:ruby 2.0.0dev (2012-04-14 trunk 35320) [x86_64-openbsd5.0] Backport:

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-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

hermitian-fix.diff Magnifier - a simple fix to Matrix#hermitian?, and some test (1.24 KB) George Koehler, 04/14/2012 03:48 AM

Associated revisions

Revision 35344
Added by Marc-Andre Lafortune almost 3 years ago

  • lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler [Bug #6290] [rubyspec:4b9573d7613]

Revision 35344
Added by Marc-Andre Lafortune almost 3 years ago

  • lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler [Bug #6290] [rubyspec:4b9573d7613]

History

#1 Updated by Marc-Andre Lafortune almost 3 years ago

  • Category set to lib
  • Status changed from Open to Assigned
  • Assignee set to Marc-Andre Lafortune
  • Target version set to 2.0.0

#2 Updated by Marc-Andre Lafortune almost 3 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]

Also available in: Atom PDF