Project

General

Profile

Actions

Bug #6290

closed

Matrix#hermitian? fails to check diagonal elements

Added by kernigh (George Koehler) almost 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-04-14 trunk 35320) [x86_64-openbsd5.0]
Backport:
[ruby-core:44344]

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+7
i, 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

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

Also available in: Atom PDF

Like0
Like0Like0