|
1 |
| -using Test, GenericLinearAlgebra, LinearAlgebra, Quaternions |
| 1 | +using Test, GenericLinearAlgebra, LinearAlgebra, Quaternions, DoubleFloats |
2 | 2 |
|
3 | 3 | @testset "Singular value decomposition" begin
|
4 | 4 | @testset "Problem dimension ($m,$n)" for
|
@@ -73,7 +73,38 @@ using Test, GenericLinearAlgebra, LinearAlgebra, Quaternions
|
73 | 73 | end
|
74 | 74 |
|
75 | 75 | @testset "Issue 81" begin
|
76 |
| - m = [1 0 0 0; 0 2 1 0; 0 1 2 0; 0 0 0 -1] |
77 |
| - @test Float64.(svdvals(big.(m))) ≈ svdvals(m) |
| 76 | + A = [1 0 0 0; 0 2 1 0; 0 1 2 0; 0 0 0 -1] |
| 77 | + @test Float64.(svdvals(big.(A))) ≈ svdvals(A) |
| 78 | + |
| 79 | + A = [ |
| 80 | + 0.3 0.0 0.0 0.0 0.0 0.2 0.3 0.0; |
| 81 | + 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0; |
| 82 | + 0.0 -0.2 0.0 0.0 0.0 0.0 0.0 -0.2; |
| 83 | + 0.3 0.0 0.0 0.0 0.0 0.2 0.4 0.0; |
| 84 | + 0.0 0.4 -0.2 0.0 0.0 0.0 0.0 0.3; |
| 85 | + 0.2 0.0 0.0 0.0 0.0 0.0 0.2 0.0; |
| 86 | + 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0; |
| 87 | + 0.0 0.3 -0.2 0.0 0.0 0.0 0.0 0.3 |
| 88 | + ] |
| 89 | + @test GenericLinearAlgebra._svdvals!( |
| 90 | + GenericLinearAlgebra.bidiagonalize!(copy(A)).bidiagonal |
| 91 | + ) ≈ svdvals(A) |
| 92 | + |
| 93 | + n = 17 |
| 94 | + A = zeros(Double64, n, n) |
| 95 | + for j in 1:n, i in 1:n |
| 96 | + A[i, j] = 1 / Double64(i + j - 1) |
| 97 | + end |
| 98 | + @test svdvals(A) ≈ svdvals(Float64.(A)) |
| 99 | + |
| 100 | + # From https://github.com/JuliaMath/DoubleFloats.jl/issues/149 |
| 101 | + n = 64 |
| 102 | + c = Complex{BigFloat}(3//1 + 1im//1) |
| 103 | + A = diagm( |
| 104 | + 1 => c*ones(BigFloat, n - 1), |
| 105 | + -1 => c*ones(BigFloat,n - 1), |
| 106 | + -2 => ones(BigFloat, n - 2) |
| 107 | + ) |
| 108 | + @test svdvals(A) ≈ svdvals(Complex{Double64}.(A)) |
78 | 109 | end
|
79 | 110 | end
|
0 commit comments