Mercurial > repos > public > sbplib_julia
comparison src/LazyTensors/lazy_tensor_operations.jl @ 461:a0e40d16ba0e feature/inflated_tensormapping
Better documentation
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 21 Oct 2020 22:02:07 +0200 |
parents | acffa3a1395d |
children | 5d6cbb7bfc23 a52f38e72258 |
comparison
equal
deleted
inserted
replaced
460:acffa3a1395d | 461:a0e40d16ba0e |
---|---|
173 | 173 |
174 """ | 174 """ |
175 InflatedTensorMapping{T,R,D} <: TensorMapping{T,R,D} | 175 InflatedTensorMapping{T,R,D} <: TensorMapping{T,R,D} |
176 | 176 |
177 An inflated `TensorMapping` with dimensions added before and afer its actual dimensions. | 177 An inflated `TensorMapping` with dimensions added before and afer its actual dimensions. |
178 | |
179 """ | 178 """ |
180 struct InflatedTensorMapping{T,R,D,D_before,R_middle,D_middle,D_after, TM<:TensorMapping{T,R_middle,D_middle}} <: TensorMapping{T,R,D} | 179 struct InflatedTensorMapping{T,R,D,D_before,R_middle,D_middle,D_after, TM<:TensorMapping{T,R_middle,D_middle}} <: TensorMapping{T,R,D} |
181 before::IdentityMapping{T,D_before} | 180 before::IdentityMapping{T,D_before} |
182 tm::TM | 181 tm::TM |
183 after::IdentityMapping{T,D_after} | 182 after::IdentityMapping{T,D_after} |
184 | 183 |
185 ``` | |
186 InflatedTensorMapping(before, tm, after) | |
187 | |
188 The outer product of `before`, `tm` and `after`, where `before` and `after` are `IndentityMapping`s. | |
189 ``` | |
190 function InflatedTensorMapping(before, tm::TensorMapping{T}, after) where T | 184 function InflatedTensorMapping(before, tm::TensorMapping{T}, after) where T |
191 R_before = range_dim(before) | 185 R_before = range_dim(before) |
192 R_middle = range_dim(tm) | 186 R_middle = range_dim(tm) |
193 R_after = range_dim(after) | 187 R_after = range_dim(after) |
194 R = R_before+R_middle+R_after | 188 R = R_before+R_middle+R_after |
200 return new{T,R,D,D_before,R_middle,D_middle,D_after, typeof(tm)}(before, tm, after) | 194 return new{T,R,D,D_before,R_middle,D_middle,D_after, typeof(tm)}(before, tm, after) |
201 end | 195 end |
202 end | 196 end |
203 export InflatedTensorMapping | 197 export InflatedTensorMapping |
204 | 198 |
199 """ | |
200 InflatedTensorMapping(before, tm, after) | |
201 | |
202 The outer product of `before`, `tm` and `after`, where `before` and `after` are `IdentityMapping`s. | |
203 """ | |
204 InflatedTensorMapping(::IdentityMapping, ::TensorMapping, ::IdentityMapping) | |
205 # TODO: Implement constructors where one of `before` or `after` is missing | 205 # TODO: Implement constructors where one of `before` or `after` is missing |
206 | 206 |
207 # TODO: Implement syntax and constructors for products of different combinations of InflatedTensorMapping and IdentityMapping | 207 # TODO: Implement syntax and constructors for products of different combinations of InflatedTensorMapping and IdentityMapping |
208 | 208 |
209 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensorMapping(I(3),B,I(2)) -> I(3)⊗B⊗I(2) | 209 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensorMapping(I(3),B,I(2)) -> I(3)⊗B⊗I(2) |