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}