diff src/LazyTensors/lazy_tensor_operations.jl @ 2061:e70417f95713 feature/lazy_tensors/zero_tensor

Add ZeroTensor
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 16 Feb 2026 21:46:35 +0100
parents ed50eec18365
children
line wrap: on
line diff
--- a/src/LazyTensors/lazy_tensor_operations.jl	Sat Feb 14 23:37:40 2026 +0100
+++ b/src/LazyTensors/lazy_tensor_operations.jl	Mon Feb 16 21:46:35 2026 +0100
@@ -113,6 +113,9 @@
 range_size(tmBinOp::TensorSum) = range_size(tmBinOp.tms[1])
 domain_size(tmBinOp::TensorSum) = domain_size(tmBinOp.tms[1])
 
+TensorSum(a::ZeroTensor{T,R,D}, b::ZeroTensor{T,R,D}) where {T,R,D} = ZeroTensor{T,R,D}()
+TensorSum(::ZeroTensor, t::LazyTensor) = t
+TensorSum(t::LazyTensor, ::ZeroTensor) = t
 
 """
     TensorComposition{T,R,K,D}
@@ -161,6 +164,20 @@
     return tmi
 end
 
+
+function TensorComposition(a::ZeroTensor{T,R,D}, b::ZeroTensor{T,D,K}) where {T,R,D,K}
+    return ZeroTensor{T,R,K}()
+end
+
+function TensorComposition(a::ZeroTensor{T,R,D}, b::LazyTensor{T,D,K}) where {T,R,D,K}
+    return ZeroTensor{T,R,K}()
+end
+
+function TensorComposition(a::LazyTensor{T,R,D}, b::ZeroTensor{T,D,K}) where {T,R,D,K}
+    return ZeroTensor{T,R,K}()
+end
+
+
 Base.:*(a::T, tm::LazyTensor{T}) where T = TensorComposition(ScalingTensor{T,range_dim(tm)}(a,range_size(tm)), tm)
 Base.:*(tm::LazyTensor{T}, a::T) where T = a*tm