Mercurial > repos > public > sbplib_julia
comparison src/LazyTensors/lazy_tensor_operations.jl @ 1853:a12708e48499
Merge feature/jet_aqua
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sat, 11 Jan 2025 10:17:12 +0100 |
parents | 164e26a6cf79 |
children | 21e5fe1545c0 |
comparison
equal
deleted
inserted
replaced
1848:a4c9966f7d34 | 1853:a12708e48499 |
---|---|
167 itm.tm, | 167 itm.tm, |
168 IdentityTensor(itm.after.size..., after.size...), | 168 IdentityTensor(itm.after.size..., after.size...), |
169 ) | 169 ) |
170 end | 170 end |
171 | 171 |
172 InflatedTensor(before::IdentityTensor, tm::LazyTensor{T}) where T = InflatedTensor(before,tm,IdentityTensor{T}()) | 172 InflatedTensor(before::IdentityTensor, tm::LazyTensor) = InflatedTensor(before,tm,IdentityTensor{eltype(tm)}()) |
173 InflatedTensor(tm::LazyTensor{T}, after::IdentityTensor) where T = InflatedTensor(IdentityTensor{T}(),tm,after) | 173 InflatedTensor(tm::LazyTensor, after::IdentityTensor) = InflatedTensor(IdentityTensor{eltype(tm)}(),tm,after) |
174 # Resolve ambiguity between the two previous methods | 174 # Resolve ambiguity between the two previous methods |
175 InflatedTensor(I1::IdentityTensor{T}, I2::IdentityTensor{T}) where T = InflatedTensor(I1,I2,IdentityTensor{T}()) | 175 InflatedTensor(I1::IdentityTensor, I2::IdentityTensor) = InflatedTensor(I1,I2,IdentityTensor{promote_type(eltype(I1), eltype(I2))}()) |
176 | 176 |
177 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensor(I(3),B,I(2)) -> I(3)⊗B⊗I(2) | 177 # TODO: Implement some pretty printing in terms of ⊗. E.g InflatedTensor(I(3),B,I(2)) -> I(3)⊗B⊗I(2) |
178 | 178 |
179 function range_size(itm::InflatedTensor) | 179 function range_size(itm::InflatedTensor) |
180 return concatenate_tuples( | 180 return concatenate_tuples( |
261 itm2 = InflatedTensor(IdentityTensor{T}(domain_size(tm1)),tm2) | 261 itm2 = InflatedTensor(IdentityTensor{T}(domain_size(tm1)),tm2) |
262 | 262 |
263 return itm1∘itm2 | 263 return itm1∘itm2 |
264 end | 264 end |
265 | 265 |
266 LazyOuterProduct(t1::IdentityTensor{T}, t2::IdentityTensor{T}) where T = IdentityTensor{T}(t1.size...,t2.size...) | 266 LazyOuterProduct(t1::IdentityTensor, t2::IdentityTensor) = IdentityTensor{promote_type(eltype(t1),eltype(t2))}(t1.size...,t2.size...) |
267 LazyOuterProduct(t1::LazyTensor, t2::IdentityTensor) = InflatedTensor(t1, t2) | 267 LazyOuterProduct(t1::LazyTensor, t2::IdentityTensor) = InflatedTensor(t1, t2) |
268 LazyOuterProduct(t1::IdentityTensor, t2::LazyTensor) = InflatedTensor(t1, t2) | 268 LazyOuterProduct(t1::IdentityTensor, t2::LazyTensor) = InflatedTensor(t1, t2) |
269 | 269 |
270 LazyOuterProduct(tms::Vararg{LazyTensor}) = foldl(LazyOuterProduct, tms) | 270 LazyOuterProduct(tms::Vararg{LazyTensor}) = foldl(LazyOuterProduct, tms) |
271 | 271 |