Skip to content

Commit add12d3

Browse files
committed
overload 3-arg and 5-arg mul!()
1 parent 6b83794 commit add12d3

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/dual.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -822,12 +822,15 @@ for MT in (StridedMatrix{<:LinearAlgebra.BlasFloat},
822822
@eval Base.:\(m::$MT, x::StridedMatrix{<:Dual}) =
823823
_map_dual_components!((y, x) -> ldiv!(y, m, x), (y, x, _) -> ldiv!(y, m, x), similar(x), x)
824824

825-
@eval function Base.:*(m::$MT, x::StridedVector{<:Dual})
826-
T = valtype(eltype(x))
827-
res = similar(x, (size(m, 1),))
828-
mul!(reinterpret(reshape, T, res), reinterpret(reshape, T, x), m')
829-
return res
830-
end
825+
@eval LinearAlgebra.mul!(C::StridedVector{T}, A::$MT, B::StridedVector{T}) where T <: Dual =
826+
mul!(reinterpret(reshape, valtype(T), C), reinterpret(reshape, valtype(T), B), A')
827+
828+
@eval LinearAlgebra.mul!(C::StridedVector{T}, A::$MT, B::StridedVector{T},
829+
α::Union{LinearAlgebra.BlasFloat, Integer},
830+
β::Union{LinearAlgebra.BlasFloat, Integer}) where T <: Dual =
831+
mul!(reinterpret(reshape, valtype(T), C), reinterpret(reshape, valtype(T), B), A', α, β)
832+
833+
@eval Base.:*(m::$MT, x::StridedVector{<:Dual}) = mul!(similar(x, (size(m, 1),)), m, x)
831834

832835
@eval Base.:*(m::$MT, x::StridedMatrix{<:Dual}) =
833836
_map_dual_components!((y, x) -> mul!(y, m, x), (y, x, _) -> mul!(y, m, x),

0 commit comments

Comments
 (0)