119
119
A \ ab
120
120
end
121
121
122
+ @inline function _broadcast_mul_ldiv (:: Tuple{Any,ApplyLayout{typeof(*)}} , A, B)
123
+ a,b = arguments (B)
124
+ @assert a isa AbstractQuasiVector # Only works for vec .* mat
125
+ args = arguments (ApplyLayout {typeof(*)} (), b)
126
+ * (A \ (a .* first (args)), tail (args)... )
127
+ end
128
+
129
+
122
130
function _broadcast_mul_ldiv (:: Tuple{ScalarLayout,Any} , A, B)
123
131
a,b = arguments (B)
124
132
a * (A \ b)
@@ -337,7 +345,7 @@ _der_sub(DP, inds...) = DP[inds...]
337
345
_der_sub (DP:: ApplyQuasiMatrix{T,typeof(*),<:Tuple{Derivative,Any}} , kr, jr) where T = ApplyQuasiMatrix {T} (* , DP. args[1 ], view (DP. args[2 ], kr, jr))
338
346
339
347
# need to customise simplifiable so can't use @simplify
340
- simplifiable (:: typeof (* ), A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:Inclusion,<:Any}} )= simplifiable (* , A , parent (B))
348
+ simplifiable (:: typeof (* ), A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:Inclusion,<:Any}} )= simplifiable (* , Derivative ( axes ( parent (B), 1 )) , parent (B))
341
349
simplifiable (:: typeof (* ), Ac:: QuasiAdjoint{<:Any,<:SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:Inclusion,<:Any}}} , Bc:: QuasiAdjoint{<:Any,<:Derivative} ) = simplifiable (* , Bc' , Ac' )
342
350
function mul (A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:Inclusion,<:Any}} )
343
351
axes (A,2 ) == axes (B,1 ) || throw (DimensionMismatch ())
@@ -346,7 +354,7 @@ function mul(A::Derivative, B::SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tup
346
354
end
347
355
mul (Ac:: QuasiAdjoint{<:Any,<:SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:Inclusion,<:Any}}} , Bc:: QuasiAdjoint{<:Any,<:Derivative} ) = mul (Bc' , Ac' )'
348
356
349
- simplifiable (:: typeof (* ), A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:AbstractAffineQuasiVector,<:Any}} ) = simplifiable (* , A , parent (B))
357
+ simplifiable (:: typeof (* ), A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:AbstractAffineQuasiVector,<:Any}} ) = simplifiable (* , Derivative ( axes ( parent (B), 1 )) , parent (B))
350
358
simplifiable (:: typeof (* ), Ac:: QuasiAdjoint{<:Any,<:SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:AbstractAffineQuasiVector,<:Any}}} , Bc:: QuasiAdjoint{<:Any,<:Derivative} ) = simplifiable (* , Bc' , Ac' )
351
359
function mul (A:: Derivative , B:: SubQuasiArray{<:Any,2,<:AbstractQuasiMatrix,<:Tuple{<:AbstractAffineQuasiVector,<:Any}} )
352
360
axes (A,2 ) == axes (B,1 ) || throw (DimensionMismatch ())
0 commit comments