Skip to content

Tridiagonalization often generates non-unitarian Q-matrix for rank-deficient input

Submitted by Christoph Hertzberg

Assigned to Nobody

Link to original bugzilla bug (#1017)
Version: 3.3 (current stable)

Description

This seems to be the cause of eigensolver_selfadjoint_3 failing most of the time.

As far as I see what happens is that (in src/Householder/Householder.h) makeHouseholder is not robust to underflows, i.e. if c0!=0 && c0*c0==0 then

beta = sqrt(numext::abs2(c0) + tailSqNorm);

is slightly too small (especially if tailSqNorm is quite small as well).

Blocking

#661 #814