Mercurial > repos > public > sbplib_julia
changeset 998:390dfc3db4b1 refactor/lazy_tensors
Move simplifying implementations from \circ to LazyTensorComposition
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 18 Mar 2022 21:36:17 +0100 |
parents | 20c376dffe84 |
children | 20cb83efb3f1 |
files | src/LazyTensors/lazy_tensor_operations.jl |
diffstat | 1 files changed, 5 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/LazyTensors/lazy_tensor_operations.jl Fri Mar 18 21:26:02 2022 +0100 +++ b/src/LazyTensors/lazy_tensor_operations.jl Fri Mar 18 21:36:17 2022 +0100 @@ -169,26 +169,25 @@ apply_transpose(tmi::IdentityTensor{T,D}, v::AbstractArray{<:Any,D}, I::Vararg{Any,D}) where {T,D} = v[I...] """ - Base.:∘(tm, tmi) - Base.:∘(tmi, tm) + LazyTensorComposition(tm, tmi::IdentityTensor) + LazyTensorComposition(tmi::IdentityTensor, tm) Composes a `Tensormapping` `tm` with an `IdentityTensor` `tmi`, by returning `tm` """ -@inline function Base.:∘(tm::LazyTensor{T,R,D}, tmi::IdentityTensor{T,D}) where {T,R,D} +function LazyTensorComposition(tm::LazyTensor{T,R,D}, tmi::IdentityTensor{T,D}) where {T,R,D} @boundscheck check_domain_size(tm, range_size(tmi)) return tm end -@inline function Base.:∘(tmi::IdentityTensor{T,R}, tm::LazyTensor{T,R,D}) where {T,R,D} +function LazyTensorComposition(tmi::IdentityTensor{T,R}, tm::LazyTensor{T,R,D}) where {T,R,D} @boundscheck check_domain_size(tmi, range_size(tm)) return tm end # Specialization for the case where tm is an IdentityTensor. Required to resolve ambiguity. -@inline function Base.:∘(tm::IdentityTensor{T,D}, tmi::IdentityTensor{T,D}) where {T,D} +function LazyTensorComposition(tm::IdentityTensor{T,D}, tmi::IdentityTensor{T,D}) where {T,D} @boundscheck check_domain_size(tm, range_size(tmi)) return tmi end -# TODO: Implement the above as LazyTensorComposition instead # TODO: Move the operator definitions to one place """ @@ -207,9 +206,6 @@ LazyTensors.range_size(m::ScalingTensor) = m.size LazyTensors.domain_size(m::ScalingTensor) = m.size -# TODO: Rename everything with mapping -# TODO: Remove ScalingOperator from tests - """ InflatedLazyTensor{T,R,D} <: LazyTensor{T,R,D}