From 704004634f6712645eb837cd86d7a09fa51ae36a Mon Sep 17 00:00:00 2001
From: Milan Bouchet-Valat <nalimilan@club.fr>
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