changeset 958:8b0ff2fddc32 feature/variable_derivatives

Merge default
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Mar 2022 09:08:23 +0100
parents b15f39ae1643 (current diff) acce83640536 (diff)
children e9752c1e92f8
files src/LazyTensors/lazy_tensor_operations.jl
diffstat 3 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/LazyTensors/LazyTensors.jl	Thu Mar 10 08:18:29 2022 +0100
+++ b/src/LazyTensors/LazyTensors.jl	Mon Mar 14 09:08:23 2022 +0100
@@ -1,5 +1,5 @@
 module LazyTensors
-using Sbplib.RegionIndices
+
 include("tensor_mapping.jl")
 include("lazy_array.jl")
 include("lazy_tensor_operations.jl")
--- a/src/LazyTensors/lazy_tensor_operations.jl	Thu Mar 10 08:18:29 2022 +0100
+++ b/src/LazyTensors/lazy_tensor_operations.jl	Mon Mar 14 09:08:23 2022 +0100
@@ -15,6 +15,7 @@
 export LazyTensorMappingApplication
 
 Base.getindex(ta::LazyTensorMappingApplication{T,R}, I::Vararg{Any,R}) where {T,R} = apply(ta.t, ta.o, I...)
+Base.getindex(ta::LazyTensorMappingApplication{T,1}, I::CartesianIndex{1}) where {T} = apply(ta.t, ta.o, I.I...) # Would otherwise be caught in the previous method.
 Base.size(ta::LazyTensorMappingApplication) = range_size(ta.t)
 # TODO: What else is needed to implement the AbstractArray interface?
 
--- a/test/LazyTensors/lazy_tensor_operations_test.jl	Thu Mar 10 08:18:29 2022 +0100
+++ b/test/LazyTensors/lazy_tensor_operations_test.jl	Mon Mar 14 09:08:23 2022 +0100
@@ -47,6 +47,9 @@
     @test_broken BoundsError == (m*m*v)[7]
     @test_throws MethodError m*m
 
+    @test (m*v)[CartesianIndex(2)] == (:apply,v,(2,))
+    @test (m*m*v)[CartesianIndex(2)] == (:apply,m*v,(2,))
+
     m = SizeDoublingMapping{Int, 2, 1}((3,))
     @test_throws MethodError m*ones(Int,2,2)
     @test_throws MethodError m*m*v
@@ -56,6 +59,9 @@
     @test size(m*v) == 2 .*size(v)
     @test (m*v)[1,2] == (:apply,v,(1,2))
 
+    @test (m*v)[CartesianIndex(2,3)] == (:apply,v,(2,3))
+    @test (m*m*v)[CartesianIndex(4,3)] == (:apply,m*v,(4,3))
+
     struct ScalingOperator{T,D} <: TensorMapping{T,D,D}
         λ::T
         size::NTuple{D,Int}