From 704004634f6712645eb837cd86d7a09fa51ae36a Mon Sep 17 00:00:00 2001 From: Milan Bouchet-Valat Date: Sat, 19 Mar 2016 17:21:15 +0100 Subject: [PATCH] Fix non-deterministic tridiag test failure The signs or eigenvectors are random. Fixes #15565. --- test/linalg/tridiag.jl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test/linalg/tridiag.jl b/test/linalg/tridiag.jl index 9441244..c43fd03 100644 --- a/test/linalg/tridiag.jl +++ b/test/linalg/tridiag.jl @@ -313,13 +313,25 @@ let n = 12 #Size of matrix problem to test debug && println("stegr! call with index range") F = eigfact(SymTridiagonal(a, b),1:2) fF = eigfact(Symmetric(full(SymTridiagonal(a, b))),1:2) - @test_approx_eq F[:vectors] fF[:vectors] + for i in 1:size(F[:vectors], 2) + if sign(F[:vectors][1,i]) == sign(fF[:vectors][1,i]) + @test_approx_eq F[:vectors][:,i] fF[:vectors][:,i] + else + @test_approx_eq F[:vectors][:,i] -fF[:vectors][:,i] + end + end @test_approx_eq F[:values] fF[:values] debug && println("stegr! call with value range") F = eigfact(SymTridiagonal(a, b),0.0,1.0) fF = eigfact(Symmetric(full(SymTridiagonal(a, b))),0.0,1.0) - @test_approx_eq F[:vectors] fF[:vectors] + for i in 1:size(F[:vectors], 2) + if sign(F[:vectors][1,i]) == sign(fF[:vectors][1,i]) + @test_approx_eq F[:vectors][:,i] fF[:vectors][:,i] + else + @test_approx_eq F[:vectors][:,i] -fF[:vectors][:,i] + end + end @test_approx_eq F[:values] fF[:values] end -- 2.5.0