@@ -876,21 +876,67 @@ end
876
876
end
877
877
end
878
878
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))
882
884
@test A * Bv ≈ Matrix (A) * Bv
883
885
@test A * Bm ≈ Matrix (A) * Bm
886
+ @test A * transpose (Bm) ≈ Matrix (A) * transpose (Bm)
887
+ @test A * adjoint (Bm) ≈ Matrix (A) * adjoint (Bm)
884
888
@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
885
909
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 ))
887
911
@test A * Bv ≈ Matrix (A) * Bv
888
912
@test A * Bm ≈ Matrix (A) * Bm
913
+ @test A * transpose (Bm) ≈ Matrix (A) * transpose (Bm)
914
+ @test A * adjoint (Bm) ≈ Matrix (A) * adjoint (Bm)
889
915
@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
890
936
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 ))))
894
940
895
941
@test Ahrs * Ahrs ≈ Ahrs * Matrix (Ahrs)
896
942
@test Ahrs * Acs ≈ Ahrs * Matrix (Acs)
899
945
@test Ahrs * Ahcs ≈ Matrix (Ahrs) * Ahcs
900
946
@test Ahcs * Ahrs ≈ Ahcs * Matrix (Ahrs)
901
947
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 ))))
905
951
906
952
@test Ahrs * Ahrs ≈ Ahrs * Matrix (Ahrs)
907
953
@test Ahcs * Ahcs ≈ Matrix (Ahcs) * Matrix (Ahcs)
0 commit comments