@@ -5,6 +5,10 @@ module TestDiagonal
55using  Test, LinearAlgebra, SparseArrays, Random
66using  LinearAlgebra:  mul!, mul!, rmul!, lmul!, ldiv!, rdiv!, BlasFloat, BlasComplex, SingularException
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
@@ -330,8 +334,12 @@ Random.seed!(1)
330334
331335    @testset  " Eigensystem" begin 
332336        eigD =  eigen (D)
333-         @test  Diagonal (eigD. values) ≈  D
337+         @test  Diagonal (eigD. values) ==  D
334338        @test  eigD. vectors ==  Matrix (I, size (D))
339+         eigsortD =  eigen (D, sortby= LinearAlgebra. eigsortby)
340+         @test  eigsortD. values != =  D. diag
341+         @test  eigsortD. values ==  sort (D. diag, by= LinearAlgebra. eigsortby)
342+         @test  Matrix (eigsortD) ==  D
335343    end 
336344
337345    @testset  " ldiv" begin 
@@ -395,6 +403,22 @@ Random.seed!(1)
395403        @test  svd (D). V ==  V
396404    end 
397405
406+     @testset  " svd/eigen with Diagonal{Furlong}" begin 
407+         Du =  Furlong .(D)
408+         @test  Du isa  Diagonal{<: Furlong{1} }
409+         F =  svd (Du)
410+         U, s, V =  F
411+         @test  map (x ->  x. val, Matrix (F)) ≈  map (x ->  x. val, Du)
412+         @test  svdvals (Du) ==  s
413+         @test  U isa  AbstractMatrix{<: Furlong{0} }
414+         @test  V isa  AbstractMatrix{<: Furlong{0} }
415+         @test  s isa  AbstractVector{<: Furlong{1} }
416+         E =  eigen (Du)
417+         vals, vecs =  E
418+         @test  Matrix (E) ==  Du
419+         @test  vals isa  AbstractVector{<: Furlong{1} }
420+         @test  vecs isa  AbstractMatrix{<: Furlong{0} }
421+     end 
398422end 
399423
400424@testset  " svdvals and eigvals (#11120/#11247)" begin 
0 commit comments