@@ -57,7 +57,7 @@ function Base.hcat(As::Union{LinearMap,UniformScaling}...)
57
57
end
58
58
nrows == 0 && throw (ArgumentError (" hcat of only UniformScaling-like objects cannot determine the linear map size" ))
59
59
60
- maps = promote_to_lmaps (ntuple (i-> nrows, nbc), 1 , T, As... )
60
+ maps = promote_to_lmaps (ntuple (i-> nrows, nbc), 1 , As... )
61
61
check_dims (maps, 1 )
62
62
return BlockMap {T} (maps, (length (As),))
63
63
end
@@ -80,7 +80,7 @@ function Base.vcat(As::Union{LinearMap,UniformScaling}...)
80
80
end
81
81
ncols == 0 && throw (ArgumentError (" hcat of only UniformScaling-like objects cannot determine the linear map size" ))
82
82
83
- maps = promote_to_lmaps (ntuple (i-> ncols, nbr), 1 , T, As... )
83
+ maps = promote_to_lmaps (ntuple (i-> ncols, nbr), 1 , As... )
84
84
check_dims (maps, 2 )
85
85
return BlockMap {T} (maps, ntuple (i-> 1 , length (As)))
86
86
end
@@ -141,19 +141,18 @@ function Base.hvcat(rows::NTuple{nr,Int}, As::Union{LinearMap,UniformScaling}...
141
141
end
142
142
end
143
143
144
- return BlockMap {T} (promote_to_lmaps (n, 1 , T, As... ), rows)
144
+ return BlockMap {T} (promote_to_lmaps (n, 1 , As... ), rows)
145
145
end
146
146
147
- promote_to_lmaps_ (n:: Int , :: Type{T} , J:: UniformScaling ) where {T} = UniformScalingMap (convert (T, J. λ), n)
148
- promote_to_lmaps_ (n:: Int , :: Type{T} , A:: LinearMap{T} ) where {T} = A
149
- promote_to_lmaps (n, k, :: Type ) = ()
150
- promote_to_lmaps (n, k, :: Type{T} , A) where {T} = (promote_to_lmaps_ (n[k], T, A),)
151
- promote_to_lmaps (n, k, :: Type{T} , A, B) where {T} =
152
- (promote_to_lmaps_ (n[k], T, A), promote_to_lmaps_ (n[k+ 1 ], T, B))
153
- promote_to_lmaps (n, k, :: Type{T} , A, B, C) where {T} =
154
- (promote_to_lmaps_ (n[k], T, A), promote_to_lmaps_ (n[k+ 1 ], T, B), promote_to_lmaps_ (n[k+ 2 ], T, C))
155
- promote_to_lmaps (n, k, :: Type{T} , A, B, Cs... ) where {T} =
156
- (promote_to_lmaps_ (n[k], T, A), promote_to_lmaps_ (n[k+ 1 ], T, B), promote_to_lmaps (n, k+ 2 , T, Cs... )... )
147
+ promote_to_lmaps_ (n:: Int , J:: UniformScaling ) = UniformScalingMap (J. λ, n)
148
+ promote_to_lmaps_ (n:: Int , A:: LinearMap ) = A
149
+ promote_to_lmaps (n, k) = ()
150
+ promote_to_lmaps (n, k, A) = (promote_to_lmaps_ (n[k], A),)
151
+ promote_to_lmaps (n, k, A, B) = (promote_to_lmaps_ (n[k], A), promote_to_lmaps_ (n[k+ 1 ], B))
152
+ promote_to_lmaps (n, k, A, B, C) =
153
+ (promote_to_lmaps_ (n[k], A), promote_to_lmaps_ (n[k+ 1 ], B), promote_to_lmaps_ (n[k+ 2 ], C))
154
+ promote_to_lmaps (n, k, A, B, Cs... ) =
155
+ (promote_to_lmaps_ (n[k], A), promote_to_lmaps_ (n[k+ 1 ], B), promote_to_lmaps (n, k+ 2 , Cs... )... )
157
156
158
157
# ###########
159
158
# basic methods
0 commit comments