comparison test/testLazyTensors.jl @ 458:41f9cb6ee5a7 feature/inflated_tensormapping

Moar tests and moar type stableness
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 21 Oct 2020 20:57:38 +0200
parents 8fb6a5611c7a
children 6eb3f7eb08d6 a52f38e72258
comparison
equal deleted inserted replaced
457:8fb6a5611c7a 458:41f9cb6ee5a7
347 @tullio IAIv[a,b,c,d] := Ã[c,i]*v[a,b,i,d] 347 @tullio IAIv[a,b,c,d] := Ã[c,i]*v[a,b,i,d]
348 @test tm*v ≈ IAIv rtol=1e-14 348 @test tm*v ≈ IAIv rtol=1e-14
349 349
350 @inferred LazyTensors.split_index(tm,1,1,1,1) 350 @inferred LazyTensors.split_index(tm,1,1,1,1)
351 351
352 @inferred (tm*v)[1,1,1,1] 352 struct ScalingOperator{T,D} <: TensorMapping{T,D,D}
353 λ::T
354 size::NTuple{D,Int}
355 end
356
357 LazyTensors.apply(m::ScalingOperator{T,D}, v, I::Vararg{Index,D}) where {T,D} = m.λ*v[I]
358 LazyTensors.range_size(m::ScalingOperator) = m.size
359 LazyTensors.domain_size(m::ScalingOperator) = m.size
360
361 tm = InflatedTensorMapping(I(2,3),ScalingOperator(2.0, (3,2)),I(3,4))
362 v = rand(domain_size(tm)...)
363
364 @inferred LazyTensors.split_index(tm,1,2,3,2,2,4)
365 @inferred apply(tm,v,Index{Unknown}.((1,2,3,2,2,4))...)
366 @inferred (tm*v)[1,2,3,2,2,4]
353 367
354 end 368 end
355 369
356 @testset "slice_tuple" begin 370 @testset "slice_tuple" begin
357 @test LazyTensors.slice_tuple((1,2,3),Val(1), Val(3)) == (1,2,3) 371 @test LazyTensors.slice_tuple((1,2,3),Val(1), Val(3)) == (1,2,3)