diff --git a/src/matmul.jl b/src/matmul.jl index ae6afd42..cf229364 100644 --- a/src/matmul.jl +++ b/src/matmul.jl @@ -820,7 +820,7 @@ Base.@constprop :aggressive function herk_wrapper!(C::StridedMatrix{TC}, tA::Abs end # BLAS.herk! only updates hermitian C, alpha and beta need to be real - if iszero(β) || ishermitian(C) + if isreal(α) && isreal(β) && (iszero(β) || ishermitian(C)) alpha, beta = promote(α, β, zero(T)) if (alpha isa T && beta isa T && stride(A, 1) == stride(C, 1) == 1 && diff --git a/test/matmul.jl b/test/matmul.jl index 1a32b2aa..bcb2857e 100644 --- a/test/matmul.jl +++ b/test/matmul.jl @@ -549,6 +549,10 @@ end @test mul!(copy(C), A', A, true, 2) ≈ 3C D = Matrix(Hermitian(A * A')) @test mul!(copy(D), A, A', true, 3) ≈ 4D + if T <: Complex + @test mul!(2C, A', A, im, 2) ≈ (4 + im) * C + @test mul!(2D, A, A', im, 3) ≈ (6 + im) * D + end end end