comparison src/LazyTensors/lazy_tensor_operations.jl @ 449:14d60de71b72 feature/inflated_tensormapping

Change to concrete fields in the type
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 19 Oct 2020 21:14:46 +0200
parents 912ae510dec9
children ac6d22570a08
comparison
equal deleted inserted replaced
448:912ae510dec9 449:14d60de71b72
164 domain_size(tmi::IdentityMapping) = tmi.size 164 domain_size(tmi::IdentityMapping) = tmi.size
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, TM<:TensorMapping{T,R_middle,D_middle}} <: TensorMapping{T,R,D}
170 before::IdentityMapping{T,D_before} 170 before::IdentityMapping{T,D_before}
171 tm::TensorMapping{T,R_middle,D_middle} 171 tm::TM
172 after::IdentityMapping{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)
179 179
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, typeof(tm)}(before, tm, after)
185 end 185 end
186 end 186 end
187 187
188 # TODO: Implement constructors where one of `before` or `after` is missing 188 # TODO: Implement constructors where one of `before` or `after` is missing
189 189