Skip to content

Commit 9407722

Browse files
authored
Test BlockSparseArrays (#29)
1 parent 2da8e63 commit 9407722

File tree

3 files changed

+36
-34
lines changed

3 files changed

+36
-34
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "TensorAlgebra"
22
uuid = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.1.9"
4+
version = "0.1.10"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

test/Project.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
4+
BlockSparseArrays = "2c9a651f-6452-4ace-a6ac-809f4280fbb4"
45
EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949"
56
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
67
JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb"
78
LabelledNumbers = "f856a3a6-4152-4ec4-b2a7-02c1a55d7993"
89
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
910
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
11+
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1012
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
13+
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
1114
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
1215
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
1316
SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e"
@@ -18,7 +21,10 @@ TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a"
1821

1922
[compat]
2023
Aqua = "0.8.9"
24+
BlockSparseArrays = "0.2"
25+
Random = "1.10"
2126
SafeTestsets = "0.1"
27+
SparseArraysBase = "0.2.11"
2228
Suppressor = "0.2"
2329
SymmetrySectors = "0.1"
2430
TensorOperations = "5.1.3"
Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,33 @@
1-
using Test: @test_skip
2-
# TODO: Add this back once `BlockSparseArrays` is set up.
3-
@test_skip begin
4-
using BlockArrays: Block, blocksize
5-
using BlockSparseArrays: BlockSparseArray
6-
using GradedUnitRanges: gradedrange
7-
using SparseArraysBase: densearray
8-
using SymmetrySectors: U1
9-
using TensorAlgebra: contract
10-
using Random: randn!
11-
using Test: @test, @testset
1+
using BlockArrays: Block, blocksize
2+
using BlockSparseArrays: BlockSparseArray
3+
using GradedUnitRanges: dual, gradedrange
4+
using SparseArraysBase: densearray
5+
using SymmetrySectors: U1
6+
using TensorAlgebra: contract
7+
using Random: randn!
8+
using Test: @test, @testset
129

13-
function randn_blockdiagonal(elt::Type, axes::Tuple)
14-
a = BlockSparseArray{elt}(axes)
15-
blockdiaglength = minimum(blocksize(a))
16-
for i in 1:blockdiaglength
17-
b = Block(ntuple(Returns(i), ndims(a)))
18-
a[b] = randn!(a[b])
19-
end
20-
return a
10+
function randn_blockdiagonal(elt::Type, axes::Tuple)
11+
a = BlockSparseArray{elt}(axes)
12+
blockdiaglength = minimum(blocksize(a))
13+
for i in 1:blockdiaglength
14+
b = Block(ntuple(Returns(i), ndims(a)))
15+
a[b] = randn!(a[b])
2116
end
17+
return a
18+
end
2219

23-
const elts = (Float32, Float64, Complex{Float32}, Complex{Float64})
24-
@testset "`contract` `BlockSparseArray` (eltype=$elt)" for elt in elts
25-
d = gradedrange([U1(0) => 2, U1(1) => 3])
26-
a1 = randn_blockdiagonal(elt, (d, d, d))
27-
a2 = randn_blockdiagonal(elt, (d, d, d))
28-
a_dest, dimnames_dest = contract(a1, (-1, 1, -2), a2, (-1, -2, 2))
29-
a1_dense = densearray(a1)
30-
a2_dense = densearray(a2)
31-
a_dest_dense, dimnames_dest_dense = contract(
32-
a1_dense, (-1, 1, -2), a2_dense, (-1, -2, 2)
33-
)
34-
@test dimnames_dest == dimnames_dest_dense
35-
@test a_dest a_dest_dense
36-
end
20+
const elts = (Float32, Float64, Complex{Float32}, Complex{Float64})
21+
@testset "`contract` `BlockSparseArray` (eltype=$elt)" for elt in elts
22+
d = gradedrange([U1(0) => 2, U1(1) => 3])
23+
a1 = randn_blockdiagonal(elt, (d, d, dual(d), dual(d)))
24+
a2 = randn_blockdiagonal(elt, (d, d, dual(d), dual(d)))
25+
a_dest, dimnames_dest = contract(a1, (1, -1, 2, -2), a2, (2, -3, 1, -4))
26+
a1_dense = densearray(a1)
27+
a2_dense = densearray(a2)
28+
a_dest_dense, dimnames_dest_dense = contract(
29+
a1_dense, (1, -1, 2, -2), a2_dense, (2, -3, 1, -4)
30+
)
31+
@test dimnames_dest == dimnames_dest_dense
32+
@test a_dest a_dest_dense
3733
end

0 commit comments

Comments
 (0)