diff src/LazyTensors/LazyTensors.jl @ 1858:4a9be96f2569 feature/documenter_logo

Merge default
author Jonatan Werpers <jonatan@werpers.com>
date Sun, 12 Jan 2025 21:18:44 +0100
parents dfb43fdac9fc
children b8cb38fd67ff
line wrap: on
line diff
--- a/src/LazyTensors/LazyTensors.jl	Fri Jan 21 15:23:08 2022 +0100
+++ b/src/LazyTensors/LazyTensors.jl	Sun Jan 12 21:18:44 2025 +0100
@@ -1,7 +1,48 @@
 module LazyTensors
-using Sbplib.RegionIndices
-include("tensor_mapping.jl")
+
+export LazyTensor
+export apply
+export apply_transpose
+export range_dim, domain_dim
+export range_size, domain_size
+
+export TensorApplication
+export TensorTranspose
+export TensorComposition
+export IdentityTensor
+export ScalingTensor
+export DiagonalTensor
+export DenseTensor
+export InflatedTensor
+export LazyOuterProduct
+export ⊗
+export DomainSizeMismatch
+export RangeSizeMismatch
+
+export LazyArray
+export LazyFunctionArray
+export +̃, -̃, *̃, /̃
+
+include("lazy_tensor.jl")
+include("tensor_types.jl")
 include("lazy_array.jl")
 include("lazy_tensor_operations.jl")
+include("tuple_manipulation.jl")
+
+# Applying lazy tensors to vectors
+Base.:*(a::LazyTensor, v::AbstractArray) = TensorApplication(a,v)
+Base.:*(a::LazyTensor, b::LazyTensor) = throw(MethodError(Base.:*,(a,b)))
+Base.:*(a::LazyTensor, args::Union{LazyTensor, AbstractArray}...) = foldr(*,(a,args...))
+
+# Addition and subtraction of lazy tensors
+Base.:+(s::LazyTensor, t::LazyTensor) = ElementwiseTensorOperation{:+}(s,t)
+Base.:-(s::LazyTensor, t::LazyTensor) = ElementwiseTensorOperation{:-}(s,t)
+
+# Composing lazy tensors
+Base.:∘(s::LazyTensor, t::LazyTensor) = TensorComposition(s,t)
+Base.:∘(s::TensorComposition, t::LazyTensor) = s.t1∘(s.t2∘t)
+
+# Outer products of tensors
+⊗(a::LazyTensor, b::LazyTensor) = LazyOuterProduct(a,b)
 
 end # module