Mercurial > repos > public > sbplib_julia
diff src/LazyTensors/LazyTensors.jl @ 1025:e74c41c4b60e feature/dissipation_operators
Merge refactor/sbpoperators/inflation
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 21 Mar 2022 15:12:59 +0100 |
parents | d9476fede83d |
children | 6abbb2c6c3e4 |
line wrap: on
line diff
--- a/src/LazyTensors/LazyTensors.jl Fri Mar 18 15:44:03 2022 +0100 +++ b/src/LazyTensors/LazyTensors.jl Mon Mar 21 15:12:59 2022 +0100 @@ -1,17 +1,36 @@ module LazyTensors -export LazyTensorMappingApplication -export LazyTensorMappingTranspose -export TensorMappingComposition +export LazyTensorApplication +export LazyTensorTranspose +export LazyTensorComposition export LazyLinearMap -export IdentityMapping -export InflatedTensorMapping +export IdentityTensor +export ScalingTensor +export InflatedLazyTensor export LazyOuterProduct export ⊗ -export SizeMismatch +export DomainSizeMismatch +export RangeSizeMismatch -include("tensor_mapping.jl") +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) = LazyTensorApplication(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) = LazyTensorBinaryOperation{:+}(s,t) +Base.:-(s::LazyTensor, t::LazyTensor) = LazyTensorBinaryOperation{:-}(s,t) + +# Composing lazy tensors +Base.:∘(s::LazyTensor, t::LazyTensor) = LazyTensorComposition(s,t) + +# Outer products of tensors +⊗(a::LazyTensor, b::LazyTensor) = LazyOuterProduct(a,b) end # module