|
230 | 230 | @testset for elty in (Complex64, Complex128)
|
231 | 231 | A = rand(elty,10,10)
|
232 | 232 | Aw, Avl, Avr = LAPACK.geev!('N','V',copy(A))
|
| 233 | + LinAlg.sorteig!(Aw,Avr) |
233 | 234 | fA = eigfact(A)
|
234 | 235 | @test fA[:values] ≈ Aw
|
235 | 236 | @test fA[:vectors] ≈ Avr
|
@@ -529,18 +530,21 @@ end
|
529 | 530 | @testset "trrfs & trevc" begin
|
530 | 531 | @testset for elty in (Float32, Float64, Complex64, Complex128)
|
531 | 532 | T = triu(rand(elty,10,10))
|
| 533 | + i = sortperm(diag(T), by=LinAlg.eigsortby)[1] |
532 | 534 | S = copy(T)
|
533 | 535 | select = zeros(Base.LinAlg.BlasInt,10)
|
534 |
| - select[1] = 1 |
| 536 | + select[i] = 1 |
535 | 537 | select,Vr = LAPACK.trevc!('R','S',select,copy(T))
|
536 |
| - @test Vr ≈ eigvecs(S)[:,1] |
| 538 | + v = eigvecs(S)[:,1] |
| 539 | + @test Vr ≈ v * Vr[i] / v[i] |
537 | 540 | select = zeros(Base.LinAlg.BlasInt,10)
|
538 |
| - select[1] = 1 |
| 541 | + select[i] = 1 |
539 | 542 | select,Vl = LAPACK.trevc!('L','S',select,copy(T))
|
540 | 543 | select = zeros(Base.LinAlg.BlasInt,10)
|
541 |
| - select[1] = 1 |
| 544 | + select[i] = 1 |
542 | 545 | select,Vln,Vrn = LAPACK.trevc!('B','S',select,copy(T))
|
543 |
| - @test Vrn ≈ eigvecs(S)[:,1] |
| 546 | + v = eigvecs(S)[:,1] |
| 547 | + @test Vrn ≈ v * Vrn[i] / v[i] |
544 | 548 | @test Vln ≈ Vl
|
545 | 549 | @test_throws ArgumentError LAPACK.trevc!('V','S',select,copy(T))
|
546 | 550 | @test_throws DimensionMismatch LAPACK.trrfs!('U','N','N',T,rand(elty,10,10),rand(elty,10,11))
|
|
0 commit comments