Skip to content

SparseQR occasionally fails for under-determined systems

Submitted by Christoph Hertzberg

Assigned to Nobody

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

Description

Currently, e.g., this fails:

./test/sparseqr_1 s2

I debugged this and found that a column which is only slightly above the pivotThreshold was used.

In our test-suite this happens very rarely, but happens a lot more often, if you generate more matrices with more cols than rows (e.g., increase MaxCols in generate_sparse_rectangular_problem in test/sparseqr.cpp).

A solution could be to increase the default threshold, perhaps depending on the cols/rows ratio.

Another thing that very rarely fails is the

VERIFY_IS_EQUAL(dqr.rank(), solver.rank());

test, probably because dqr.rank() depends non-continuously on the DenseQR's threshold.

This could be robustified by checking dqr.rank() for a small interval of thresholds and check that solver.rank() is inside that interval.

Blocking

#814