@@ -48,6 +48,9 @@ include("TestBlockSparseArraysUtils.jl")
48
48
@test block_nstored (a) == 2
49
49
@test nstored (a) == 2 * 4 + 3 * 3
50
50
51
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
52
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
53
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
51
54
b = similar (a, complex (elt))
52
55
@test eltype (b) == complex (eltype (a))
53
56
@test iszero (b)
@@ -56,37 +59,58 @@ include("TestBlockSparseArraysUtils.jl")
56
59
@test size (b) == size (a)
57
60
@test blocksize (b) == blocksize (a)
58
61
62
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
63
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
64
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
59
65
b = copy (a)
60
66
b[1 , 1 ] = 11
61
67
@test b[1 , 1 ] == 11
62
68
@test a[1 , 1 ] ≠ 11
63
69
70
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
71
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
72
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
64
73
b = copy (a)
65
74
b .*= 2
66
75
@test b ≈ 2 a
67
76
77
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
78
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
79
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
68
80
b = copy (a)
69
81
b ./= 2
70
82
@test b ≈ a / 2
71
83
84
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
85
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
86
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
72
87
b = 2 * a
73
88
@test Array (b) ≈ 2 * Array (a)
74
89
@test eltype (b) == elt
75
90
@test block_nstored (b) == 2
76
91
@test nstored (b) == 2 * 4 + 3 * 3
77
92
93
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
94
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
95
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
78
96
b = (2 + 3im ) * a
79
97
@test Array (b) ≈ (2 + 3im ) * Array (a)
80
98
@test eltype (b) == complex (elt)
81
99
@test block_nstored (b) == 2
82
100
@test nstored (b) == 2 * 4 + 3 * 3
83
101
102
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
103
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
104
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
84
105
b = a + a
85
106
@test Array (b) ≈ 2 * Array (a)
86
107
@test eltype (b) == elt
87
108
@test block_nstored (b) == 2
88
109
@test nstored (b) == 2 * 4 + 3 * 3
89
110
111
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
112
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
113
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
90
114
x = BlockSparseArray {elt} (undef, ([3 , 4 ], [2 , 3 ]))
91
115
x[Block (1 , 2 )] = randn (elt, size (@view (x[Block (1 , 2 )])))
92
116
x[Block (2 , 1 )] = randn (elt, size (@view (x[Block (2 , 1 )])))
@@ -96,12 +120,18 @@ include("TestBlockSparseArraysUtils.jl")
96
120
@test block_nstored (b) == 2
97
121
@test nstored (b) == 2 * 4 + 3 * 3
98
122
123
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
124
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
125
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
99
126
b = permutedims (a, (2 , 1 ))
100
127
@test Array (b) ≈ permutedims (Array (a), (2 , 1 ))
101
128
@test eltype (b) == elt
102
129
@test block_nstored (b) == 2
103
130
@test nstored (b) == 2 * 4 + 3 * 3
104
131
132
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
133
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
134
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
105
135
b = map (x -> 2 x, a)
106
136
@test Array (b) ≈ 2 * Array (a)
107
137
@test eltype (b) == elt
@@ -110,6 +140,9 @@ include("TestBlockSparseArraysUtils.jl")
110
140
@test block_nstored (b) == 2
111
141
@test nstored (b) == 2 * 4 + 3 * 3
112
142
143
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
144
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
145
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
113
146
b = a[[Block (2 ), Block (1 )], [Block (2 ), Block (1 )]]
114
147
@test b[Block (1 , 1 )] == a[Block (2 , 2 )]
115
148
@test b[Block (1 , 2 )] == a[Block (2 , 1 )]
@@ -120,13 +153,19 @@ include("TestBlockSparseArraysUtils.jl")
120
153
@test nstored (b) == nstored (a)
121
154
@test block_nstored (b) == 2
122
155
156
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
157
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
158
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
123
159
b = a[Block (1 ): Block (2 ), Block (1 ): Block (2 )]
124
160
@test b == a
125
161
@test size (b) == size (a)
126
162
@test blocksize (b) == (2 , 2 )
127
163
@test nstored (b) == nstored (a)
128
164
@test block_nstored (b) == 2
129
165
166
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
167
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
168
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
130
169
b = a[Block (1 ): Block (1 ), Block (1 ): Block (2 )]
131
170
@test b == Array (a)[1 : 2 , 1 : end ]
132
171
@test b[Block (1 , 1 )] == a[Block (1 , 1 )]
@@ -136,41 +175,83 @@ include("TestBlockSparseArraysUtils.jl")
136
175
@test nstored (b) == nstored (a[Block (1 , 2 )])
137
176
@test block_nstored (b) == 1
138
177
178
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
179
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
180
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
139
181
b = a[2 : 4 , 2 : 4 ]
140
182
@test b == Array (a)[2 : 4 , 2 : 4 ]
141
183
@test size (b) == (3 , 3 )
142
184
@test blocksize (b) == (2 , 2 )
143
185
@test nstored (b) == 1 * 1 + 2 * 2
144
186
@test block_nstored (b) == 2
145
187
188
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
189
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
190
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
146
191
b = a[Block (2 , 1 )[1 : 2 , 2 : 3 ]]
147
192
@test b == Array (a)[3 : 4 , 2 : 3 ]
148
193
@test size (b) == (2 , 2 )
149
194
@test blocksize (b) == (1 , 1 )
150
195
@test nstored (b) == 2 * 2
151
196
@test block_nstored (b) == 1
152
197
198
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
199
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
200
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
201
+ b = PermutedDimsArray (a, (2 , 1 ))
202
+ @test block_nstored (b) == 2
203
+ @test Array (b) == permutedims (Array (a), (2 , 1 ))
204
+ c = 2 * b
205
+ @test block_nstored (c) == 2
206
+ @test Array (c) == 2 * permutedims (Array (a), (2 , 1 ))
207
+
208
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
209
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
210
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
211
+ b = a'
212
+ @test block_nstored (b) == 2
213
+ @test Array (b) == Array (a)'
214
+ c = 2 * b
215
+ @test block_nstored (c) == 2
216
+ @test Array (c) == 2 * Array (a)'
217
+
218
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
219
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
220
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
221
+ b = transpose (a)
222
+ @test block_nstored (b) == 2
223
+ @test Array (b) == transpose (Array (a))
224
+ c = 2 * b
225
+ @test block_nstored (c) == 2
226
+ @test Array (c) == 2 * transpose (Array (a))
227
+
153
228
# # Broken, need to fix.
154
229
230
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
231
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
232
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
155
233
@test_broken a[Block (1 ), Block (1 ): Block (2 )]
156
234
157
235
# This is outputting only zero blocks.
236
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
237
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
238
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
158
239
b = a[Block (2 ): Block (2 ), Block (1 ): Block (2 )]
159
240
@test_broken block_nstored (b) == 1
160
241
@test_broken b == Array (a)[3 : 5 , 1 : end ]
161
242
162
- b = a'
163
- @test_broken block_nstored (b) == 2
164
-
165
- b = transpose (a)
166
- @test_broken block_nstored (b) == 2
167
-
243
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
244
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
245
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
168
246
b = copy (a)
169
247
x = randn (size (@view (a[Block (2 , 2 )])))
170
248
b[Block (2 ), Block (2 )] = x
171
249
@test_broken b[Block (2 , 2 )] == x
172
250
173
251
# Doesnt' set the block
252
+ a = BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ]))
253
+ a[Block (1 , 2 )] = randn (elt, size (@view (a[Block (1 , 2 )])))
254
+ a[Block (2 , 1 )] = randn (elt, size (@view (a[Block (2 , 1 )])))
174
255
b = copy (a)
175
256
b[Block (1 , 1 )] .= 1
176
257
@test_broken b[1 , 1 ] == trues (size (@view (b[1 , 1 ])))
0 commit comments