diff --git a/Project.toml b/Project.toml index 02b9d2b..d343c94 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "TensorAlgebra" uuid = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" authors = ["ITensor developers and contributors"] -version = "0.1.9" +version = "0.1.10" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/test/Project.toml b/test/Project.toml index 68a7cc1..275179d 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,13 +1,16 @@ [deps] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +BlockSparseArrays = "2c9a651f-6452-4ace-a6ac-809f4280fbb4" EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5" JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" LabelledNumbers = "f856a3a6-4152-4ec4-b2a7-02c1a55d7993" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208" StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e" @@ -18,7 +21,10 @@ TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a" [compat] Aqua = "0.8.9" +BlockSparseArrays = "0.2" +Random = "1.10" SafeTestsets = "0.1" +SparseArraysBase = "0.2.11" Suppressor = "0.2" SymmetrySectors = "0.1" TensorOperations = "5.1.3" diff --git a/test/test_gradedunitrangesext_contract.jl b/test/test_gradedunitrangesext_contract.jl index 2b0655f..c95cbb7 100644 --- a/test/test_gradedunitrangesext_contract.jl +++ b/test/test_gradedunitrangesext_contract.jl @@ -1,37 +1,33 @@ -using Test: @test_skip -# TODO: Add this back once `BlockSparseArrays` is set up. -@test_skip begin - using BlockArrays: Block, blocksize - using BlockSparseArrays: BlockSparseArray - using GradedUnitRanges: gradedrange - using SparseArraysBase: densearray - using SymmetrySectors: U1 - using TensorAlgebra: contract - using Random: randn! - using Test: @test, @testset +using BlockArrays: Block, blocksize +using BlockSparseArrays: BlockSparseArray +using GradedUnitRanges: dual, gradedrange +using SparseArraysBase: densearray +using SymmetrySectors: U1 +using TensorAlgebra: contract +using Random: randn! +using Test: @test, @testset - function randn_blockdiagonal(elt::Type, axes::Tuple) - a = BlockSparseArray{elt}(axes) - blockdiaglength = minimum(blocksize(a)) - for i in 1:blockdiaglength - b = Block(ntuple(Returns(i), ndims(a))) - a[b] = randn!(a[b]) - end - return a +function randn_blockdiagonal(elt::Type, axes::Tuple) + a = BlockSparseArray{elt}(axes) + blockdiaglength = minimum(blocksize(a)) + for i in 1:blockdiaglength + b = Block(ntuple(Returns(i), ndims(a))) + a[b] = randn!(a[b]) end + return a +end - const elts = (Float32, Float64, Complex{Float32}, Complex{Float64}) - @testset "`contract` `BlockSparseArray` (eltype=$elt)" for elt in elts - d = gradedrange([U1(0) => 2, U1(1) => 3]) - a1 = randn_blockdiagonal(elt, (d, d, d)) - a2 = randn_blockdiagonal(elt, (d, d, d)) - a_dest, dimnames_dest = contract(a1, (-1, 1, -2), a2, (-1, -2, 2)) - a1_dense = densearray(a1) - a2_dense = densearray(a2) - a_dest_dense, dimnames_dest_dense = contract( - a1_dense, (-1, 1, -2), a2_dense, (-1, -2, 2) - ) - @test dimnames_dest == dimnames_dest_dense - @test a_dest ≈ a_dest_dense - end +const elts = (Float32, Float64, Complex{Float32}, Complex{Float64}) +@testset "`contract` `BlockSparseArray` (eltype=$elt)" for elt in elts + d = gradedrange([U1(0) => 2, U1(1) => 3]) + a1 = randn_blockdiagonal(elt, (d, d, dual(d), dual(d))) + a2 = randn_blockdiagonal(elt, (d, d, dual(d), dual(d))) + a_dest, dimnames_dest = contract(a1, (1, -1, 2, -2), a2, (2, -3, 1, -4)) + a1_dense = densearray(a1) + a2_dense = densearray(a2) + a_dest_dense, dimnames_dest_dense = contract( + a1_dense, (1, -1, 2, -2), a2_dense, (2, -3, 1, -4) + ) + @test dimnames_dest == dimnames_dest_dense + @test a_dest ≈ a_dest_dense end