Mercurial > repos > public > sbplib_julia
diff src/LazyTensors/lazy_tensor_operations.jl @ 1836:368999a2e243 refactor/lazy_tensors/elementwise_ops
Add TensorNegation
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 09 Jan 2025 15:32:47 +0100 |
parents | 48eaa973159a |
children | 200971c71657 |
line wrap: on
line diff
--- a/src/LazyTensors/lazy_tensor_operations.jl Thu Jan 09 12:40:49 2025 +0100 +++ b/src/LazyTensors/lazy_tensor_operations.jl Thu Jan 09 15:32:47 2025 +0100 @@ -51,6 +51,16 @@ range_size(tmt::TensorTranspose) = domain_size(tmt.tm) domain_size(tmt::TensorTranspose) = range_size(tmt.tm) +struct TensorNegation{T,R,D, TM<:LazyTensor{T,R,D}} <: LazyTensor{T,R,D} + tm::TM +end + +apply(tm::TensorNegation, v, I...) = -apply(tm.tm, v, I...) +apply_transpose(tm::TensorNegation, v, I...) = -apply_transpose(tm.tm, v, I...) + +range_size(tm::TensorNegation) = range_size(tm.tm) +domain_size(tm::TensorNegation) = domain_size(tm.tm) + struct ElementwiseTensorOperation{Op,T,R,D,TT<:NTuple{N, LazyTensor{T,R,D}} where N} <: LazyTensor{T,R,D} tms::TT @@ -157,7 +167,6 @@ 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 -Base.:-(tm::LazyTensor) = (-one(eltype(tm)))*tm """ InflatedTensor{T,R,D} <: LazyTensor{T,R,D}