@@ -876,21 +876,67 @@ end
876876 end
877877end
878878
879- @testset " Multiplications symmetric/hermitian for $T and $S " for T in
880- (Float16, Float32, Float64, BigFloat), S in (ComplexF16, ComplexF32, ComplexF64)
881- let A = transpose (Symmetric (rand (S, 3 , 3 ))), Bv = Vector (rand (T, 3 )), Bm = Matrix (rand (T, 3 ,3 ))
879+ @testset " Multiplications symmetric/hermitian for T=$T and S=$S for size n=$n " for T in
880+ (Float16, Float32, Float64, BigFloat, Quaternion{Float64}),
881+ S in (T <: Quaternion ? (Quaternion{Float64},) : (ComplexF16, ComplexF32, ComplexF64, Quaternion{Float64})),
882+ n in (2 , 3 , 4 )
883+ let A = transpose (Symmetric (rand (S, n, n))), Bv = Vector (rand (T, n)), Bm = Matrix (rand (T, n,n))
882884 @test A * Bv ≈ Matrix (A) * Bv
883885 @test A * Bm ≈ Matrix (A) * Bm
886+ @test A * transpose (Bm) ≈ Matrix (A) * transpose (Bm)
887+ @test A * adjoint (Bm) ≈ Matrix (A) * adjoint (Bm)
884888 @test Bm * A ≈ Bm * Matrix (A)
889+ @test transpose (Bm) * A ≈ transpose (Bm) * Matrix (A)
890+ @test adjoint (Bm) * A ≈ adjoint (Bm) * Matrix (A)
891+ C = similar (Bm, promote_type (T, S))
892+ @test mul! (C, A, Bm) ≈ A * Bm
893+ @test mul! (adjoint (C), A, adjoint (Bm)) ≈ A * adjoint (Bm)
894+ @test mul! (transpose (C), A, transpose (Bm)) ≈ A * transpose (Bm)
895+ rand! (C)
896+ @test mul! (copy (C), A, Bm, 2 , 3 ) ≈ A * Bm * 2 + C * 3
897+ @test mul! (copy (C), Bm, A, 2 , 3 ) ≈ Bm * A * 2 + C * 3
898+ @test mul! (adjoint (copy (C)), A, adjoint (Bm), 2 , 3 ) ≈ A * adjoint (Bm) * 2 + adjoint (C) * 3
899+ @test mul! (adjoint (copy (C)), adjoint (Bm), A, 2 , 3 ) ≈ adjoint (Bm) * A * 2 + adjoint (C) * 3
900+ @test mul! (transpose (copy (C)), A, transpose (Bm), 2 , 3 ) ≈ A * transpose (Bm) * 2 + transpose (C) * 3
901+ @test mul! (transpose (copy (C)), transpose (Bm), A, 2 , 3 ) ≈ transpose (Bm) * A * 2 + transpose (C) * 3
902+ if eltype (C) <: Complex
903+ alpha, beta = 4 + 2im , 3 + im
904+ @test mul! (adjoint (copy (C)), A, adjoint (Bm), alpha, beta) ≈ A * adjoint (Bm) * alpha + adjoint (C) * beta
905+ @test mul! (adjoint (copy (C)), adjoint (Bm), A, alpha, beta) ≈ adjoint (Bm) * A * alpha + adjoint (C) * beta
906+ @test mul! (transpose (copy (C)), A, transpose (Bm), alpha, beta) ≈ A * transpose (Bm) * alpha + transpose (C) * beta
907+ @test mul! (transpose (copy (C)), transpose (Bm), A, alpha, beta) ≈ transpose (Bm) * A * alpha + transpose (C) * beta
908+ end
885909 end
886- let A = adjoint (Hermitian (rand (S, 3 , 3 ))), Bv = Vector (rand (T, 3 )), Bm = Matrix (rand (T, 3 , 3 ))
910+ let A = adjoint (Hermitian (rand (S, n,n ))), Bv = Vector (rand (T, n )), Bm = Matrix (rand (T, n,n ))
887911 @test A * Bv ≈ Matrix (A) * Bv
888912 @test A * Bm ≈ Matrix (A) * Bm
913+ @test A * transpose (Bm) ≈ Matrix (A) * transpose (Bm)
914+ @test A * adjoint (Bm) ≈ Matrix (A) * adjoint (Bm)
889915 @test Bm * A ≈ Bm * Matrix (A)
916+ @test transpose (Bm) * A ≈ transpose (Bm) * Matrix (A)
917+ @test adjoint (Bm) * A ≈ adjoint (Bm) * Matrix (A)
918+ C = similar (Bm, promote_type (T, S))
919+ @test mul! (C, A, Bm) ≈ A * Bm
920+ @test mul! (adjoint (C), A, adjoint (Bm)) ≈ A * adjoint (Bm)
921+ @test mul! (transpose (C), A, transpose (Bm)) ≈ A * transpose (Bm)
922+ rand! (C)
923+ @test mul! (copy (C), A, Bm, 2 , 3 ) ≈ A * Bm * 2 + C * 3
924+ @test mul! (copy (C), Bm, A, 2 , 3 ) ≈ Bm * A * 2 + C * 3
925+ @test mul! (adjoint (copy (C)), A, adjoint (Bm), 2 , 3 ) ≈ A * adjoint (Bm) * 2 + adjoint (C) * 3
926+ @test mul! (adjoint (copy (C)), adjoint (Bm), A, 2 , 3 ) ≈ adjoint (Bm) * A * 2 + adjoint (C) * 3
927+ @test mul! (transpose (copy (C)), A, transpose (Bm), 2 , 3 ) ≈ A * transpose (Bm) * 2 + transpose (C) * 3
928+ @test mul! (transpose (copy (C)), transpose (Bm), A, 2 , 3 ) ≈ transpose (Bm) * A * 2 + transpose (C) * 3
929+ if eltype (C) <: Complex
930+ alpha, beta = 4 + 2im , 3 + im
931+ @test mul! (adjoint (copy (C)), A, adjoint (Bm), alpha, beta) ≈ A * adjoint (Bm) * alpha + adjoint (C) * beta
932+ @test mul! (adjoint (copy (C)), adjoint (Bm), A, alpha, beta) ≈ adjoint (Bm) * A * alpha + adjoint (C) * beta
933+ @test mul! (transpose (copy (C)), A, transpose (Bm), alpha, beta) ≈ A * transpose (Bm) * alpha + transpose (C) * beta
934+ @test mul! (transpose (copy (C)), transpose (Bm), A, alpha, beta) ≈ transpose (Bm) * A * alpha + transpose (C) * beta
935+ end
890936 end
891- let Ahrs = transpose (Hermitian (Symmetric (rand (T, 3 , 3 )))),
892- Acs = transpose (Symmetric (rand (S, 3 , 3 ))),
893- Ahcs = transpose (Hermitian (Symmetric (rand (S, 3 , 3 ))))
937+ let Ahrs = transpose (Hermitian (Symmetric (rand (T, n, n )))),
938+ Acs = transpose (Symmetric (rand (S, n, n ))),
939+ Ahcs = transpose (Hermitian (Symmetric (rand (S, n, n ))))
894940
895941 @test Ahrs * Ahrs ≈ Ahrs * Matrix (Ahrs)
896942 @test Ahrs * Acs ≈ Ahrs * Matrix (Acs)
899945 @test Ahrs * Ahcs ≈ Matrix (Ahrs) * Ahcs
900946 @test Ahcs * Ahrs ≈ Ahcs * Matrix (Ahrs)
901947 end
902- let Ahrs = adjoint (Hermitian (Symmetric (rand (T, 3 , 3 )))),
903- Acs = adjoint (Symmetric (rand (S, 3 , 3 ))),
904- Ahcs = adjoint (Hermitian (Symmetric (rand (S, 3 , 3 ))))
948+ let Ahrs = adjoint (Hermitian (Symmetric (rand (T, n, n )))),
949+ Acs = adjoint (Symmetric (rand (S, n, n ))),
950+ Ahcs = adjoint (Hermitian (Symmetric (rand (S, n, n ))))
905951
906952 @test Ahrs * Ahrs ≈ Ahrs * Matrix (Ahrs)
907953 @test Ahcs * Ahcs ≈ Matrix (Ahcs) * Matrix (Ahcs)
0 commit comments