15
15
CompositeMap {T} (maps:: As ) where {T, As<: LinearMapTupleOrVector } = CompositeMap {T, As} (maps)
16
16
17
17
Base. mapreduce (:: typeof (identity), :: typeof (Base. mul_prod), maps:: LinearMapTupleOrVector ) =
18
- CompositeMap {promote_type(map(eltype, maps)...)} (reverse (maps))
18
+ CompositeMap {promote_type(map(eltype, maps)...)} (_reverse! (maps))
19
19
Base. mapreduce (:: typeof (identity), :: typeof (Base. mul_prod), maps:: AbstractVector{<:LinearMap{T}} ) where {T} =
20
- CompositeMap {T} (reverse (maps))
20
+ CompositeMap {T} (reverse! (maps))
21
21
22
22
MulStyle (A:: CompositeMap ) = MulStyle (A. maps... ) === TwoArg () ? TwoArg () : ThreeArg ()
23
23
@@ -158,9 +158,9 @@ Base.:(*)(A₁::CompositeMap, A₂::ScaledMap) = (A₁ * A₂.lmap) * A₂.λ
158
158
159
159
# special transposition behavior
160
160
LinearAlgebra. transpose (A:: CompositeMap{T} ) where {T} =
161
- CompositeMap {T} (map (transpose, reverse (A. maps)))
161
+ CompositeMap {T} (map (transpose, _reverse! (A. maps)))
162
162
LinearAlgebra. adjoint (A:: CompositeMap{T} ) where {T} =
163
- CompositeMap {T} (map (adjoint, reverse (A. maps)))
163
+ CompositeMap {T} (map (adjoint, _reverse! (A. maps)))
164
164
165
165
# comparison of CompositeMap objects
166
166
Base.:(== )(A:: CompositeMap , B:: CompositeMap ) =
@@ -169,7 +169,7 @@ Base.:(==)(A::CompositeMap, B::CompositeMap) =
169
169
# multiplication with vectors/matrices
170
170
function Base.:(* )(A:: CompositeMap , x:: AbstractVector )
171
171
MulStyle (A) === TwoArg () ?
172
- foldr (* , reverse (A. maps), init= x) :
172
+ foldr (* , _reverse! (A. maps), init= x) :
173
173
invoke (* , Tuple{LinearMap, AbstractVector}, A, x)
174
174
end
175
175
0 commit comments