@@ -57,7 +57,7 @@ function Base.hcat(As::Union{LinearMap,UniformScaling}...)
5757 end
5858 nrows == 0 && throw (ArgumentError (" hcat of only UniformScaling-like objects cannot determine the linear map size" ))
5959
60- maps = promote_to_lmaps (ntuple (i-> nrows, nbc), 1 , T, As... )
60+ maps = promote_to_lmaps (ntuple (i-> nrows, nbc), 1 , As... )
6161 check_dims (maps, 1 )
6262 return BlockMap {T} (maps, (length (As),))
6363end
@@ -80,7 +80,7 @@ function Base.vcat(As::Union{LinearMap,UniformScaling}...)
8080 end
8181 ncols == 0 && throw (ArgumentError (" hcat of only UniformScaling-like objects cannot determine the linear map size" ))
8282
83- maps = promote_to_lmaps (ntuple (i-> ncols, nbr), 1 , T, As... )
83+ maps = promote_to_lmaps (ntuple (i-> ncols, nbr), 1 , As... )
8484 check_dims (maps, 2 )
8585 return BlockMap {T} (maps, ntuple (i-> 1 , length (As)))
8686end
@@ -141,19 +141,18 @@ function Base.hvcat(rows::NTuple{nr,Int}, As::Union{LinearMap,UniformScaling}...
141141 end
142142 end
143143
144- return BlockMap {T} (promote_to_lmaps (n, 1 , T, As... ), rows)
144+ return BlockMap {T} (promote_to_lmaps (n, 1 , As... ), rows)
145145end
146146
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... )... )
157156
158157# ###########
159158# basic methods
0 commit comments