Mercurial > repos > public > sbplib_julia
comparison test/LazyTensors/lazy_tensor_operations_test.jl @ 981:df562695b1b5 feature/variable_derivatives
Merge feature/tensormapping_application_promotion
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 15 Mar 2022 21:40:31 +0100 |
parents | 043d13ef8898 |
children | bc384aaade30 bbbc31953367 |
comparison
equal
deleted
inserted
replaced
980:f885e1de6dc4 | 981:df562695b1b5 |
---|---|
34 LazyTensors.domain_size(m::SizeDoublingMapping) = m.domain_size | 34 LazyTensors.domain_size(m::SizeDoublingMapping) = m.domain_size |
35 | 35 |
36 | 36 |
37 m = SizeDoublingMapping{Int, 1, 1}((3,)) | 37 m = SizeDoublingMapping{Int, 1, 1}((3,)) |
38 v = [0,1,2] | 38 v = [0,1,2] |
39 @test m*v isa AbstractVector{Int} | |
40 @test size(m*v) == 2 .*size(v) | 39 @test size(m*v) == 2 .*size(v) |
41 @test (m*v)[0] == (:apply,v,(0,)) | 40 @test (m*v)[0] == (:apply,v,(0,)) |
42 @test m*m*v isa AbstractVector{Int} | |
43 @test (m*m*v)[1] == (:apply,m*v,(1,)) | 41 @test (m*m*v)[1] == (:apply,m*v,(1,)) |
44 @test (m*m*v)[3] == (:apply,m*v,(3,)) | 42 @test (m*m*v)[3] == (:apply,m*v,(3,)) |
45 @test (m*m*v)[6] == (:apply,m*v,(6,)) | 43 @test (m*m*v)[6] == (:apply,m*v,(6,)) |
46 @test_broken BoundsError == (m*m*v)[0] | 44 @test_broken BoundsError == (m*m*v)[0] |
47 @test_broken BoundsError == (m*m*v)[7] | 45 @test_broken BoundsError == (m*m*v)[7] |
79 m = ScalingOperator{Int,2}(2,(2,2)) | 77 m = ScalingOperator{Int,2}(2,(2,2)) |
80 v = [[1 2];[3 4]] | 78 v = [[1 2];[3 4]] |
81 @test m*v == [[2 4];[6 8]] | 79 @test m*v == [[2 4];[6 8]] |
82 @test (m*v)[2,1] == 6 | 80 @test (m*v)[2,1] == 6 |
83 | 81 |
84 @testset "Promotion" begin | 82 @testset "Type calculation" begin |
85 m = ScalingOperator{Int,1}(2,(3,)) | 83 m = ScalingOperator{Int,1}(2,(3,)) |
86 v = [1.,2.,3.] | 84 v = [1.,2.,3.] |
87 @test m*v isa AbstractVector{Float64} | 85 @test m*v isa AbstractVector{Float64} |
88 @test m*v == [2.,4.,6.] | 86 @test m*v == [2.,4.,6.] |
87 @inferred m*v | |
88 @inferred (m*v)[1] | |
89 | 89 |
90 m = ScalingOperator{Int,2}(2,(2,2)) | 90 m = ScalingOperator{Int,2}(2,(2,2)) |
91 v = [[1. 2.];[3. 4.]] | 91 v = [[1. 2.];[3. 4.]] |
92 @test m*v == [[2. 4.];[6. 8.]] | 92 @test m*v == [[2. 4.];[6. 8.]] |
93 @test (m*v)[2,1] == 6. | 93 @test (m*v)[2,1] == 6. |
94 @inferred m*v | |
95 @inferred (m*v)[1] | |
94 | 96 |
95 m = ScalingOperator{ComplexF64,1}(2. +2. *im,(3,)) | 97 m = ScalingOperator{ComplexF64,1}(2. +2. *im,(3,)) |
96 v = [1.,2.,3.] | 98 v = [1.,2.,3.] |
97 @test m*v isa AbstractVector{ComplexF64} | 99 @test m*v isa AbstractVector{ComplexF64} |
98 @test m*v == [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] | 100 @test m*v == [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] |
101 @inferred m*v | |
102 @inferred (m*v)[1] | |
99 | 103 |
100 m = ScalingOperator{ComplexF64,1}(1,(3,)) | 104 m = ScalingOperator{ComplexF64,1}(1,(3,)) |
101 v = [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] | 105 v = [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] |
102 @test m*v isa AbstractVector{ComplexF64} | 106 @test m*v isa AbstractVector{ComplexF64} |
103 @test m*v == [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] | 107 @test m*v == [2. + 2. *im, 4. + 4. *im, 6. + 6. *im] |
108 @inferred m*v | |
109 @inferred (m*v)[1] | |
110 | |
111 m = ScalingOperator{Float64,1}(2., (3,)) | |
112 v = [[1,2,3], [3,2,1],[1,3,1]] | |
113 @test m*v isa AbstractVector{Vector{Float64}} | |
114 @test m*v == [[2.,4.,6.], [6.,4.,2.],[2.,6.,2.]] | |
115 @inferred m*v | |
116 @inferred (m*v)[1] | |
104 end | 117 end |
105 end | 118 end |
106 | 119 |
107 @testset "TensorMapping binary operations" begin | 120 @testset "TensorMapping binary operations" begin |
108 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D} | 121 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D} |