comparison src/LazyTensors/lazy_tensor_operations.jl @ 448:912ae510dec9 feature/inflated_tensormapping

Use new name of IdentityMapping
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 19 Oct 2020 21:04:51 +0200
parents 27e0e256e5d9
children 14d60de71b72
comparison
equal deleted inserted replaced
447:27e0e256e5d9 448:912ae510dec9
165 165
166 apply(tmi::IdentityMapping{T,D}, v::AbstractArray{T,D}, I::Vararg{Any,D}) where {T,D} = v[I...] 166 apply(tmi::IdentityMapping{T,D}, v::AbstractArray{T,D}, I::Vararg{Any,D}) where {T,D} = v[I...]
167 apply_transpose(tmi::IdentityMapping{T,D}, v::AbstractArray{T,D}, I::Vararg{Any,D}) where {T,D} = v[I...] 167 apply_transpose(tmi::IdentityMapping{T,D}, v::AbstractArray{T,D}, I::Vararg{Any,D}) where {T,D} = v[I...]
168 168
169 struct InflatedTensorMapping{T,R,D,D_before,R_middle,D_middle,D_after} <: TensorMapping{T,R,D} 169 struct InflatedTensorMapping{T,R,D,D_before,R_middle,D_middle,D_after} <: TensorMapping{T,R,D}
170 before::LazyIdentity{T,D_before} 170 before::IdentityMapping{T,D_before}
171 tm::TensorMapping{T,R_middle,D_middle} 171 tm::TensorMapping{T,R_middle,D_middle}
172 after::LazyIdentity{T,D_after} 172 after::IdentityMapping{T,D_after}
173 173
174 function InflatedTensorMapping(before, tm::TensorMapping{T}, after) where T 174 function InflatedTensorMapping(before, tm::TensorMapping{T}, after) where T
175 R_before = range_dim(before) 175 R_before = range_dim(before)
176 R_middle = range_dim(tm) 176 R_middle = range_dim(tm)
177 R_after = range_dim(after) 177 R_after = range_dim(after)
180 D_before = domain_dim(before) 180 D_before = domain_dim(before)
181 D_middle = domain_dim(tm) 181 D_middle = domain_dim(tm)
182 D_after = domain_dim(after) 182 D_after = domain_dim(after)
183 D = D_before+D_middle+D_after 183 D = D_before+D_middle+D_after
184 return new{T,R,D,D_before,R_middle,D_middle,D_after}(before, tm, after) 184 return new{T,R,D,D_before,R_middle,D_middle,D_after}(before, tm, after)
185 end
185 end 186 end
186 187
187 # TODO: Implement constructors where one of `before` or `after` is missing 188 # TODO: Implement constructors where one of `before` or `after` is missing
188 189
189 # TODO: Implement syntax and constructors for products of different combinations of InflatedTensorMapping and LazyIdentity 190 # TODO: Implement syntax and constructors for products of different combinations of InflatedTensorMapping and IdentityMapping
190 191
191 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensorMapping(I(3),B,I(2)) -> I(3)⊗B⊗I(2) 192 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensorMapping(I(3),B,I(2)) -> I(3)⊗B⊗I(2)
192 193
193 function range_size(itm::InflatedTensorMapping) 194 function range_size(itm::InflatedTensorMapping)
194 return flatten_tuple( 195 return flatten_tuple(