Mercurial > repos > public > sbplib_julia
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( |