@@ -5,6 +5,10 @@ module TestDiagonal
55using Test, LinearAlgebra, Random
66using LinearAlgebra: BlasFloat, BlasComplex
77
8+ const BASE_TEST_PATH = joinpath (Sys. BINDIR, " .." , " share" , " julia" , " test" )
9+ isdefined (Main, :Furlongs ) || @eval Main include (joinpath ($ (BASE_TEST_PATH), " testhelpers" , " Furlongs.jl" ))
10+ using . Main. Furlongs
11+
812n= 12 # Size of matrix problem to test
913Random. seed! (1 )
1014
@@ -344,8 +348,12 @@ Random.seed!(1)
344348
345349 @testset " Eigensystem" begin
346350 eigD = eigen (D)
347- @test Diagonal (eigD. values) ≈ D
351+ @test Diagonal (eigD. values) == D
348352 @test eigD. vectors == Matrix (I, size (D))
353+ eigsortD = eigen (D, sortby= LinearAlgebra. eigsortby)
354+ @test eigsortD. values != = D. diag
355+ @test eigsortD. values == sort (D. diag, by= LinearAlgebra. eigsortby)
356+ @test Matrix (eigsortD) == D
349357 end
350358
351359 @testset " ldiv" begin
@@ -411,6 +419,22 @@ Random.seed!(1)
411419 @test svd (D). V == V
412420 end
413421
422+ @testset " svd/eigen with Diagonal{Furlong}" begin
423+ Du = Furlong .(D)
424+ @test Du isa Diagonal{<: Furlong{1} }
425+ F = svd (Du)
426+ U, s, V = F
427+ @test map (x -> x. val, Matrix (F)) ≈ map (x -> x. val, Du)
428+ @test svdvals (Du) == s
429+ @test U isa AbstractMatrix{<: Furlong{0} }
430+ @test V isa AbstractMatrix{<: Furlong{0} }
431+ @test s isa AbstractVector{<: Furlong{1} }
432+ E = eigen (Du)
433+ vals, vecs = E
434+ @test Matrix (E) == Du
435+ @test vals isa AbstractVector{<: Furlong{1} }
436+ @test vecs isa AbstractMatrix{<: Furlong{0} }
437+ end
414438end
415439
416440@testset " rdiv! (#40887)" begin
0 commit comments