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