## Bug #6290

### Matrix#hermitian? fails to check diagonal elements

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

### Associated revisions

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

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