In our test infrastructure we happen to be using a random seed of 1 for eigen tests. I'm trying to upgrade to 3.3.7 (latest stable AFAICT), but am running into the following failure. Everything else appears to work fine: $ rm -f split_test_helper.h $ for i in $(seq 1 999); do cat <<END >> split_test_helper.h #define CALL_SUBTEST_${i}(FUNC) CALL_SUBTEST(FUNC) #define EIGEN_TEST_PART_${i} END done $ g++ -o foo -isystem. test/sparseqr.cpp -DEIGEN_TEST_FUNC=sparseqr $ ./foo Initializing random number generator with seed 1558638101 Repeating each test 10 times $ EIGEN_SEED=1 ./foo Initializing random number generator with seed 1 Repeating each test 10 times Difference too large wrt tolerance 1e-06, relative error is: 8701.87 Test test_sparseqr_scalar<std::complex<double> >() failed in test/sparseqr.cpp (95) verifyIsApprox(A * x, b) Stack: - test_sparseqr_scalar<std::complex<double> >() - sparseqr - Seed: 1 Aborted $ I am not familiar enough with matrix operations to figure out if this is just an issue with the randomness generation or an actual bug. I've switched our random seed to 100 and everything appears happy once again.
Related: Bug 899. Unfortunately, it is not easy to have a stable sparse QR decomposition (at least not with reasonable effort). And it is indeed quite unfortunate that it fails for seed=1 ... To make it pass for seed=1, we probably could do some "random changes" (it would still fail occasionally). The better solution would be to make it really robust, of course. This needs some investigation.
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/1719.