@@ -785,7 +785,7 @@ function _map_dual_components!(fvalue!, fpartial!, y::AbstractArray{DT}, x::Abst
785
785
# y allows res to be accessed as Array{T}
786
786
yarr = reinterpret (reshape, T, y)
787
787
@assert size (yarr) == (N + 1 , size (y)... )
788
- ystride = size (y , 1 )
788
+ ystride = size (yarr , 1 )
789
789
790
790
# calculate res values
791
791
@inbounds for (j, v) in enumerate (x)
@@ -814,18 +814,21 @@ function _map_dual_components!(fvalue!, fpartial!, y::AbstractArray{DT}, x::Abst
814
814
return y
815
815
end
816
816
817
+ function Base.:\ (m:: Union {LowerTriangular{<: LinearAlgebra.BlasFloat },
818
+ UpperTriangular{<: LinearAlgebra.BlasFloat }},
819
+ x:: StridedVector{<:Dual} )
820
+ T = valtype (eltype (x))
821
+ res = copy (x)
822
+ ldiv! (m, reinterpret (reshape, T, res)' )
823
+ return res
824
+ end
825
+
817
826
for MT in (StridedMatrix{<: LinearAlgebra.BlasFloat },
818
827
LowerTriangular{<: LinearAlgebra.BlasFloat },
819
828
UpperTriangular{<: LinearAlgebra.BlasFloat })
820
829
821
- @eval function Base.:\ (m:: $MT , x:: StridedVector{<:Dual} )
822
- T = valtype (eltype (x))
823
- ldiv! (m' , reinterpret (reshape, T, res))
824
- return res
825
- end
826
-
827
830
@eval Base.:\ (m:: $MT , x:: StridedMatrix{<:Dual} ) =
828
- _map_dual_components! ((x, _ ) -> ldiv! (m, x), (x, _ , _) -> ldiv! (m, x), similar (x), x)
831
+ _map_dual_components! ((y, x ) -> ldiv! (y, m, x), (y, x , _) -> ldiv! (y, m, x), similar (x), x)
829
832
830
833
@eval function Base.:* (m:: $MT , x:: StridedVector{<:Dual} )
831
834
T = valtype (eltype (x))
0 commit comments