comparison test/SbpOperators/allocations_test.jl @ 1887:24590890e124 allocation_testing

Refactor a little bit
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 07 Apr 2022 17:02:51 +0200
parents 9ce6d939dfae
children
comparison
equal deleted inserted replaced
1886:9ce6d939dfae 1887:24590890e124
22 22
23 dₗ = normal_derivative(g₁, stencil_set, CartesianBoundary{1,Lower}()) 23 dₗ = normal_derivative(g₁, stencil_set, CartesianBoundary{1,Lower}())
24 dᵣ = normal_derivative(g₁, stencil_set, CartesianBoundary{1,Upper}()) 24 dᵣ = normal_derivative(g₁, stencil_set, CartesianBoundary{1,Upper}())
25 25
26 26
27 indices = [1, 6, 15]
27 28
28 @testset "Derivative operator" begin 29 v = rand(size(g₁)...)
29 v = rand(size(g₁)...) 30 u = fill(1.)
30 @test (@ballocated LazyTensors.apply($D₂, $v, 1)) == 0
31 @test (@ballocated LazyTensors.apply($D₂, $v, 6)) == 0
32 @test (@ballocated LazyTensors.apply($D₂, $v, 15)) == 0
33 end
34 31
35 @testset "inner_product operator" begin 32 neumannSATₗ = H⁻¹∘eₗ'∘dₗ # TODO: Remove
36 v = rand(size(g₁)...) 33 neumannSATᵣ = H⁻¹∘eᵣ'∘dᵣ # TODO: Remove
37 34
38 @test (@ballocated LazyTensors.apply($H, $v, 1)) == 0 35 @testset for i ∈ indices
39 @test (@ballocated LazyTensors.apply($H, $v, 6)) == 0 36 @test (@ballocated LazyTensors.apply($D₂, $v, $i)) == 0
40 @test (@ballocated LazyTensors.apply($H, $v, 15)) == 0 37 @test (@ballocated LazyTensors.apply($H, $v, $i)) == 0
41 38 @test (@ballocated LazyTensors.apply($(H∘H), $v, $i)) == 0
42 @test (@ballocated LazyTensors.apply($(H∘H), $v, 5)) == 0 39 @test (@ballocated LazyTensors.apply($H⁻¹, $v, $i)) == 0
43 end 40 @test (@ballocated LazyTensors.apply($eₗ', $u, $i)) == 0
44 41 @test (@ballocated LazyTensors.apply($eᵣ', $u, $i)) == 0
45 @testset "inverse_inner_product operator" begin 42 @test (@ballocated LazyTensors.apply($dₗ', $u, $i)) == 0
46 v = rand(size(g₁)...) 43 @test (@ballocated LazyTensors.apply($dᵣ', $u, $i)) == 0
47 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 1)) == 0 44 @test (@ballocated LazyTensors.apply($neumannSATₗ, $v, $i)) == 0
48 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 6)) == 0 45 @test (@ballocated LazyTensors.apply($neumannSATᵣ, $v, $i)) == 0
49 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 15)) == 0
50 end 46 end
51 47
52 @testset "boundary operators" begin 48 @testset "boundary operators" begin
53 v = rand(size(g₁)...)
54 @test (@ballocated LazyTensors.apply($eₗ, $v)) == 0 49 @test (@ballocated LazyTensors.apply($eₗ, $v)) == 0
55 @test (@ballocated LazyTensors.apply($eᵣ, $v)) == 0 50 @test (@ballocated LazyTensors.apply($eᵣ, $v)) == 0
56 @test (@ballocated LazyTensors.apply($dₗ, $v)) == 0 51 @test (@ballocated LazyTensors.apply($dₗ, $v)) == 0
57 @test (@ballocated LazyTensors.apply($dᵣ, $v)) == 0 52 @test (@ballocated LazyTensors.apply($dᵣ, $v)) == 0
58 end
59
60 @testset "boundary operator transposes" begin
61 v = fill(1.)
62 @test (@ballocated LazyTensors.apply($eₗ', $v, 1)) == 0
63 @test (@ballocated LazyTensors.apply($eₗ', $v, 7)) == 0
64 @test (@ballocated LazyTensors.apply($eₗ', $v, 15)) == 0
65
66 @test (@ballocated LazyTensors.apply($eᵣ', $v, 1)) == 0
67 @test (@ballocated LazyTensors.apply($eᵣ', $v, 7)) == 0
68 @test (@ballocated LazyTensors.apply($eᵣ', $v, 15)) == 0
69
70 @test (@ballocated LazyTensors.apply($dₗ', $v, 1)) == 0
71 @test (@ballocated LazyTensors.apply($dₗ', $v, 7)) == 0
72 @test (@ballocated LazyTensors.apply($dₗ', $v, 15)) == 0
73
74 @test (@ballocated LazyTensors.apply($dᵣ', $v, 1)) == 0
75 @test (@ballocated LazyTensors.apply($dᵣ', $v, 7)) == 0
76 @test (@ballocated LazyTensors.apply($dᵣ', $v, 15)) == 0
77 end
78
79 @testset "sat terms" begin
80 v = rand(size(g₁)...)
81 neumannSATₗ = H⁻¹∘eₗ'∘dₗ
82 neumannSATᵣ = H⁻¹∘eᵣ'∘dᵣ
83
84
85 @test (@ballocated LazyTensors.apply($neumannSATₗ, $v, 1)) == 0
86 @test (@ballocated LazyTensors.apply($neumannSATₗ, $v, 6)) == 0
87 @test (@ballocated LazyTensors.apply($neumannSATₗ, $v, 15)) == 0
88
89 @test (@ballocated LazyTensors.apply($neumannSATᵣ, $v, 1)) == 0
90 @test (@ballocated LazyTensors.apply($neumannSATᵣ, $v, 6)) == 0
91 @test (@ballocated LazyTensors.apply($neumannSATᵣ, $v, 15)) == 0
92 end 53 end
93 end 54 end
94 55
95 56
96 @testset "2D" begin 57 @testset "2D" begin
115 H₁ᵤ = inner_product(boundary_grid(g₂, CartesianBoundary{1,Upper}()), stencil_set) 76 H₁ᵤ = inner_product(boundary_grid(g₂, CartesianBoundary{1,Upper}()), stencil_set)
116 H₂ₗ = inner_product(boundary_grid(g₂, CartesianBoundary{2,Lower}()), stencil_set) 77 H₂ₗ = inner_product(boundary_grid(g₂, CartesianBoundary{2,Lower}()), stencil_set)
117 H₂ᵤ = inner_product(boundary_grid(g₂, CartesianBoundary{2,Upper}()), stencil_set) 78 H₂ᵤ = inner_product(boundary_grid(g₂, CartesianBoundary{2,Upper}()), stencil_set)
118 79
119 80
120 @testset "Derivative operator" begin 81 # neumannSAT₁ₗ = H⁻¹∘e₁ₗ'∘H₁ₗ∘d₁ₗ
121 v = rand(size(g₂)...) 82 # neumannSAT₂ᵤ = H⁻¹∘e₂ᵤ'∘H₂ᵤ∘d₂ᵤ
122 @test (@ballocated LazyTensors.apply($D₂x, $v, 1, 7)) == 0
123 @test (@ballocated LazyTensors.apply($D₂x, $v, 6, 7)) == 0
124 @test (@ballocated LazyTensors.apply($D₂x, $v, 15, 7)) == 0
125 83
126 @test (@ballocated LazyTensors.apply($D₂y, $v, 7, 1)) == 0 84 neumannSAT₁ₗ = e₁ₗ'∘d₁ₗ # TODO: Remove
127 @test (@ballocated LazyTensors.apply($D₂y, $v, 7, 6)) == 0 85 neumannSAT₂ᵤ = e₂ᵤ'∘d₂ᵤ # TODO: Remove
128 @test (@ballocated LazyTensors.apply($D₂y, $v, 7, 15)) == 0
129 86
130 @test (@ballocated LazyTensors.apply($(D₂x∘D₂y), $v, 1, 1)) == 0 87 indices = [1,6,15]
131 @test (@ballocated LazyTensors.apply($(D₂x∘D₂y), $v, 7, 6)) == 0
132 @test (@ballocated LazyTensors.apply($(D₂x∘D₂y), $v, 15, 15)) == 0
133 end
134 88
135 @testset "inner_product operator" begin 89 v = rand(size(g₂)...)
136 v = rand(size(g₂)...) 90 u = rand(first(size(g₂)))
137 @test (@ballocated LazyTensors.apply($H, $v, 1, 1)) == 0 91
138 @test (@ballocated LazyTensors.apply($H, $v, 1, 6)) == 0 92 @testset for i ∈ indices
139 @test (@ballocated LazyTensors.apply($H, $v, 1, 15)) == 0 93 @testset for j ∈ indices
140 @test (@ballocated LazyTensors.apply($H, $v, 6, 1)) == 0 94 @test (@ballocated LazyTensors.apply($D₂x, $v, $i, $j)) == 0
141 @test (@ballocated LazyTensors.apply($H, $v, 6, 6)) == 0 95 @test (@ballocated LazyTensors.apply($D₂y, $v, $i, $j)) == 0
142 @test (@ballocated LazyTensors.apply($H, $v, 6, 15)) == 0 96 @test (@ballocated LazyTensors.apply($(D₂x∘D₂y), $v, $i, $j)) == 0
143 @test (@ballocated LazyTensors.apply($H, $v, 15, 1)) == 0 97 @test (@ballocated LazyTensors.apply($H, $v, $i, $j)) == 0
144 @test (@ballocated LazyTensors.apply($H, $v, 15, 6)) == 0 98 @test (@ballocated LazyTensors.apply($(H∘H), $v, $i, $j)) == 0
145 @test (@ballocated LazyTensors.apply($H, $v, 15, 15)) == 0 99 @test (@ballocated LazyTensors.apply($H⁻¹, $v, $i, $j)) == 0
100
101 @test (@ballocated LazyTensors.apply($e₁ₗ', $u, $i, $j)) == 0
102 @test (@ballocated LazyTensors.apply($e₁ᵤ', $u, $i, $j)) == 0
103 @test (@ballocated LazyTensors.apply($e₂ₗ', $u, $i, $j)) == 0
104 @test (@ballocated LazyTensors.apply($e₂ᵤ', $u, $i, $j)) == 0
105
106 @test (@ballocated LazyTensors.apply($d₁ₗ', $u, $i, $j)) == 0
107 @test (@ballocated LazyTensors.apply($d₁ᵤ', $u, $i, $j)) == 0
108 @test (@ballocated LazyTensors.apply($d₂ₗ', $u, $i, $j)) == 0
109 @test (@ballocated LazyTensors.apply($d₂ᵤ', $u, $i, $j)) == 0
110
111 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, $i, $j)) == 0
112 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, $i, $j)) == 0
146 113
147 114
148 @test (@ballocated LazyTensors.apply($(H∘H), $v, 5, 5)) == 0
149 end
150 115
151 @testset "inverse_inner_product operator" begin 116 ## Experiments
152 v = rand(size(g₂)...) 117 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
153 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 1, 1)) == 0 118 @test (@ballocated LazyTensors.apply($(d₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
154 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 1, 6)) == 0
155 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 1, 15)) == 0
156 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 6, 1)) == 0
157 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 6, 6)) == 0
158 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 6, 15)) == 0
159 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 15, 1)) == 0
160 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 15, 6)) == 0
161 @test (@ballocated LazyTensors.apply($H⁻¹, $v, 15, 15)) == 0
162 end
163 119
164 @testset "boundary operators" begin 120 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
165 v = rand(size(g₂)...) 121 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ∘d₁ₗ∘H⁻¹), $v, $i, $j)) == 0
166 @test (@ballocated LazyTensors.apply($e₁ₗ, $v, 1)) == 0 122 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
167 @test (@ballocated LazyTensors.apply($e₁ᵤ, $v, 5)) == 0 123 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
168 @test (@ballocated LazyTensors.apply($e₂ₗ, $v, 15)) == 0 124 @test (@ballocated LazyTensors.apply($(H⁻¹∘D₂x), $v, $i, $j)) == 0
169 @test (@ballocated LazyTensors.apply($e₂ᵤ, $v, 3)) == 0 125 @test (@ballocated LazyTensors.apply($(H⁻¹∘D₂y), $v, $i, $j)) == 0
126 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘D₂x∘D₂y), $v, $i, $j)) == 0
127 @test_broken (@ballocated LazyTensors.apply($(D₂x∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
128 @test_broken (@ballocated LazyTensors.apply($(D₂y∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
129 @test (@ballocated LazyTensors.apply($(D₂x∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
130 @test (@ballocated LazyTensors.apply($(D₂y∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
170 131
171 @test (@ballocated LazyTensors.apply($d₁ₗ, $v, 5)) == 0 132 @test (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'), $u, $i, $j)) == 0
172 @test (@ballocated LazyTensors.apply($d₁ᵤ, $v, 15)) == 0 133 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ), $u, $i, $j)) == 0
173 @test (@ballocated LazyTensors.apply($d₂ₗ, $v, 1)) == 0 134 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ), $v, $i)) == 0
174 @test (@ballocated LazyTensors.apply($d₂ᵤ, $v, 5)) == 0
175 end
176 135
177 @testset "boundary operator transposes" begin 136 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘H₁ₗ), $u, $i, $j)) == 0
178 v = rand(first(size(g₂))) 137 @test (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘H⁻¹), $v, $i)) == 0
138 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘H⁻¹), $v, $i)) == 0
179 139
180 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 1, 1)) == 0 140 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ∘e₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
181 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 1, 6)) == 0 141 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ∘e₁ₗ'), $u, $i, $j)) == 0
182 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 1, 15)) == 0 142 @test (@ballocated LazyTensors.apply($(e₁ₗ∘e₁ₗ'∘e₁ₗ), $v, $i)) == 0
183 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 6, 1)) == 0 143 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
184 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 6, 6)) == 0 144 @test (@ballocated LazyTensors.apply($(e₁ₗ∘e₁ₗ'), $u, $i)) == 0
185 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 6, 15)) == 0
186 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 15, 1)) == 0
187 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 15, 6)) == 0
188 @test (@ballocated LazyTensors.apply($e₁ₗ', $v, 15, 15)) == 0
189
190 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 1, 1)) == 0
191 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 1, 6)) == 0
192 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 1, 15)) == 0
193 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 6, 1)) == 0
194 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 6, 6)) == 0
195 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 6, 15)) == 0
196 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 15, 1)) == 0
197 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 15, 6)) == 0
198 @test (@ballocated LazyTensors.apply($d₂ᵤ', $v, 15, 15)) == 0
199 end
200
201 @testset "sat terms" begin
202 v = rand(size(g₂)...)
203 u = rand(size(g₂)[1])
204 # neumannSAT₁ₗ = H⁻¹∘e₁ₗ'∘H₁ₗ∘d₁ₗ
205 # neumannSAT₂ᵤ = H⁻¹∘e₂ᵤ'∘H₂ᵤ∘d₂ᵤ
206
207 neumannSAT₁ₗ = e₁ₗ'∘d₁ₗ
208 neumannSAT₂ᵤ = e₂ᵤ'∘d₂ᵤ
209
210 # indices = [1,6,15]
211 indices = [1]
212
213 @testset for i ∈ indices
214 @testset for j ∈ indices
215 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
216 @test (@ballocated LazyTensors.apply($(d₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
217
218 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
219 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ∘d₁ₗ∘H⁻¹), $v, $i, $j)) == 0
220 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
221 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
222 @test (@ballocated LazyTensors.apply($(H⁻¹∘D₂x), $v, $i, $j)) == 0
223 @test (@ballocated LazyTensors.apply($(H⁻¹∘D₂y), $v, $i, $j)) == 0
224 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘D₂x∘D₂y), $v, $i, $j)) == 0
225 @test_broken (@ballocated LazyTensors.apply($(D₂x∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
226 @test_broken (@ballocated LazyTensors.apply($(D₂y∘e₁ₗ'∘H₁ₗ∘d₁ₗ), $v, $i, $j)) == 0
227 @test (@ballocated LazyTensors.apply($(D₂x∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
228 @test (@ballocated LazyTensors.apply($(D₂y∘e₁ₗ'∘d₁ₗ), $v, $i, $j)) == 0
229
230 @test (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'), $u, $i, $j)) == 0
231 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘H₁ₗ), $u, $i, $j)) == 0
232 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ), $v, $i)) == 0
233
234 @test_broken (@ballocated LazyTensors.apply($(H⁻¹∘e₁ₗ'∘H₁ₗ), $u, $i, $j)) == 0
235 @test (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘H⁻¹), $v, $i)) == 0
236 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘H⁻¹), $v, $i)) == 0
237
238 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ∘e₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
239 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ∘e₁ₗ'), $u, $i, $j)) == 0
240 @test (@ballocated LazyTensors.apply($(e₁ₗ∘e₁ₗ'∘e₁ₗ), $v, $i)) == 0
241 @test (@ballocated LazyTensors.apply($(e₁ₗ'∘e₁ₗ), $v, $i, $j)) == 0
242 @test (@ballocated LazyTensors.apply($(e₁ₗ∘e₁ₗ'), $u, $i)) == 0
243 145
244 146
245 @test (@ballocated LazyTensors.apply($H, $v, $i, $j)) == 0 147 @test (@ballocated LazyTensors.apply($H, $v, $i, $j)) == 0
246 @test (@ballocated LazyTensors.apply($(H∘H), $v, $i, $j)) == 0 148 @test (@ballocated LazyTensors.apply($(H∘H), $v, $i, $j)) == 0
247 @test_broken (@ballocated LazyTensors.apply($(H∘H∘H), $v, $i, $j)) == 0 149 @test_broken (@ballocated LazyTensors.apply($(H∘H∘H), $v, $i, $j)) == 0
248 @test_broken (@ballocated LazyTensors.apply($(H∘H∘H∘H), $v, $i, $j)) == 0 150 @test_broken (@ballocated LazyTensors.apply($(H∘H∘H∘H), $v, $i, $j)) == 0
249 end
250 @test (@ballocated LazyTensors.apply($(e₁ₗ∘d₁ₗ'), $u, $i)) == 0
251 @test (@ballocated LazyTensors.apply($(d₁ₗ∘e₁ₗ'), $u, $i)) == 0
252 151
253 @test (@ballocated LazyTensors.apply($(e₁ₗ∘H∘d₁ₗ'), $u, $i)) == 0 152 end
254 @test (@ballocated LazyTensors.apply($(d₁ₗ∘H∘e₁ₗ'), $u, $i)) == 0
255 153
256 @test (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘d₁ₗ'), $u, $i)) == 0 154 @test (@ballocated LazyTensors.apply($e₁ₗ, $v, $i)) == 0
257 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘e₁ₗ'), $u, $i)) == 0 155 @test (@ballocated LazyTensors.apply($e₁ᵤ, $v, $i)) == 0
156 @test (@ballocated LazyTensors.apply($e₂ₗ, $v, $i)) == 0
157 @test (@ballocated LazyTensors.apply($e₂ᵤ, $v, $i)) == 0
258 158
259 @test_broken (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘H∘d₁ₗ'), $u, $i)) == 0 159 @test (@ballocated LazyTensors.apply($d₁ₗ, $v, $i)) == 0
260 @test_broken (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘H∘e₁ₗ'), $u, $i)) == 0 160 @test (@ballocated LazyTensors.apply($d₁ᵤ, $v, $i)) == 0
161 @test (@ballocated LazyTensors.apply($d₂ₗ, $v, $i)) == 0
162 @test (@ballocated LazyTensors.apply($d₂ᵤ, $v, $i)) == 0
261 163
262 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ∘H∘d₁ₗ'∘H₁ₗ), $u, $i)) == 0 164 ## Experiments
263 @test_broken (@ballocated LazyTensors.apply($(d₁ₗ∘H∘e₁ₗ'∘H₁ₗ), $u, $i)) == 0 165 @test (@ballocated LazyTensors.apply($(e₁ₗ∘d₁ₗ'), $u, $i)) == 0
264 end 166 @test (@ballocated LazyTensors.apply($(d₁ₗ∘e₁ₗ'), $u, $i)) == 0
265 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 1, 1)) == 0
266 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 1, 6)) == 0
267 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 1, 15)) == 0
268 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 6, 1)) == 0
269 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 6, 6)) == 0
270 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 6, 15)) == 0
271 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 15, 1)) == 0
272 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 15, 6)) == 0
273 @test (@ballocated LazyTensors.apply($neumannSAT₁ₗ, $v, 15, 15)) == 0
274 167
275 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 1, 1)) == 0 168 @test (@ballocated LazyTensors.apply($(e₁ₗ∘H∘d₁ₗ'), $u, $i)) == 0
276 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 1, 6)) == 0 169 @test (@ballocated LazyTensors.apply($(d₁ₗ∘H∘e₁ₗ'), $u, $i)) == 0
277 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 1, 15)) == 0 170
278 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 6, 1)) == 0 171 @test (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘d₁ₗ'), $u, $i)) == 0
279 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 6, 6)) == 0 172 @test (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘e₁ₗ'), $u, $i)) == 0
280 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 6, 15)) == 0 173
281 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 15, 1)) == 0 174 @test_broken (@ballocated LazyTensors.apply($(H₁ₗ∘e₁ₗ∘H∘d₁ₗ'), $u, $i)) == 0
282 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 15, 6)) == 0 175 @test_broken (@ballocated LazyTensors.apply($(H₁ₗ∘d₁ₗ∘H∘e₁ₗ'), $u, $i)) == 0
283 @test (@ballocated LazyTensors.apply($neumannSAT₂ᵤ, $v, 15, 15)) == 0 176
177 @test_broken (@ballocated LazyTensors.apply($(e₁ₗ∘H∘d₁ₗ'∘H₁ₗ), $u, $i)) == 0
178 @test_broken (@ballocated LazyTensors.apply($(d₁ₗ∘H∘e₁ₗ'∘H₁ₗ), $u, $i)) == 0
284 end 179 end
285
286 end 180 end
287 end 181 end