diff src/LazyTensors/lazy_tensor_operations.jl @ 1001:a3df203861d3 refactor/lazy_tensors

Simplify some type parameter usage
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 18 Mar 2022 22:01:25 +0100
parents 1091ac8c69ad
children 271aa6ae1055
line wrap: on
line diff
--- a/src/LazyTensors/lazy_tensor_operations.jl	Fri Mar 18 21:54:01 2022 +0100
+++ b/src/LazyTensors/lazy_tensor_operations.jl	Fri Mar 18 22:01:25 2022 +0100
@@ -1,6 +1,7 @@
 # TBD: Is there a good way to split this file?
 # TODO: Split out functions for composition
 # TODO: We need to be really careful about good error messages.
+# TODO: Go over type parameters
 
 """
     LazyTensorApplication{T,R,D} <: LazyArray{T,R}
@@ -58,12 +59,14 @@
     tm1::T1
     tm2::T2
 
-    @inline function LazyTensorBinaryOperation{Op,T,R,D}(tm1::T1,tm2::T2) where {Op,T,R,D, T1<:LazyTensor{T,R,D},T2<:LazyTensor{T,R,D}}
+    function LazyTensorBinaryOperation{Op,T,R,D}(tm1::T1,tm2::T2) where {Op,T,R,D, T1<:LazyTensor{T,R,D},T2<:LazyTensor{T,R,D}}
         return new{Op,T,R,D,T1,T2}(tm1,tm2)
     end
 end
 # TODO: Boundschecking in constructor.
 
+LazyTensorBinaryOperation{Op}(s,t) where Op = LazyTensorBinaryOperation{Op,eltype(s), range_dim(s), domain_dim(s)}(s,t)
+
 apply(tmBinOp::LazyTensorBinaryOperation{:+,T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg{Any,R}) where {T,R,D} = apply(tmBinOp.tm1, v, I...) + apply(tmBinOp.tm2, v, I...)
 apply(tmBinOp::LazyTensorBinaryOperation{:-,T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg{Any,R}) where {T,R,D} = apply(tmBinOp.tm1, v, I...) - apply(tmBinOp.tm2, v, I...)
 
@@ -80,7 +83,7 @@
     t1::TM1
     t2::TM2
 
-    @inline function LazyTensorComposition(t1::LazyTensor{T,R,K}, t2::LazyTensor{T,K,D}) where {T,R,K,D}
+    function LazyTensorComposition(t1::LazyTensor{T,R,K}, t2::LazyTensor{T,K,D}) where {T,R,K,D}
         @boundscheck check_domain_size(t1, range_size(t2))
         return new{T,R,K,D, typeof(t1), typeof(t2)}(t1,t2)
     end