Skip to content

Commit 0423f1a

Browse files
authored
NamedDimsArraysExt (#55)
1 parent dd018f3 commit 0423f1a

File tree

4 files changed

+103
-4
lines changed

4 files changed

+103
-4
lines changed

Project.toml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DiagonalArrays"
22
uuid = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
3-
version = "0.3.24"
43
authors = ["ITensor developers <[email protected]> and contributors"]
4+
version = "0.3.25"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
@@ -13,16 +13,19 @@ SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
1313

1414
[weakdeps]
1515
MatrixAlgebraKit = "6c742aac-3347-4629-af66-fc926824e5e4"
16+
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
1617

1718
[extensions]
1819
DiagonalArraysMatrixAlgebraKitExt = "MatrixAlgebraKit"
20+
DiagonalArraysNamedDimsArraysExt = "NamedDimsArrays"
1921

2022
[compat]
2123
ArrayLayouts = "1.10.4"
2224
DerivableInterfaces = "0.5.5"
23-
FillArrays = "1.13.0"
24-
LinearAlgebra = "1.10.0"
25+
FillArrays = "1.13"
26+
LinearAlgebra = "1.10"
2527
MapBroadcast = "0.1.10"
2628
MatrixAlgebraKit = "0.2, 0.3, 0.4, 0.5, 0.6"
29+
NamedDimsArrays = "0.10"
2730
SparseArraysBase = "0.7.2"
2831
julia = "1.10"
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module DiagonalArraysNamedDimsArraysExt
2+
3+
using DiagonalArrays: DiagonalArrays, δ, delta
4+
using NamedDimsArrays: AbstractNamedUnitRange, nameddims
5+
6+
function DiagonalArrays.delta(
7+
elt::Type{<:Number},
8+
is::Tuple{AbstractNamedUnitRange, Vararg{AbstractNamedUnitRange}},
9+
)
10+
return nameddims(delta(elt, Int.(length.(is))), is)
11+
end
12+
# TODO: Make `δ` an alias for `delta` so this isn't needed.
13+
function DiagonalArrays.δ(
14+
elt::Type{<:Number},
15+
is::Tuple{AbstractNamedUnitRange, Vararg{AbstractNamedUnitRange}},
16+
)
17+
return delta(elt, is)
18+
end
19+
# TODO: Is this needed?
20+
function DiagonalArrays.delta(
21+
is::Tuple{AbstractNamedUnitRange, Vararg{AbstractNamedUnitRange}}
22+
)
23+
return delta(Bool, is)
24+
end
25+
# TODO: Is this needed?
26+
function DiagonalArrays.δ(
27+
is::Tuple{AbstractNamedUnitRange, Vararg{AbstractNamedUnitRange}}
28+
)
29+
return delta(is)
30+
end
31+
# TODO: Is this needed?
32+
function DiagonalArrays.delta(
33+
elt::Type{<:Number}, i1::AbstractNamedUnitRange, i_rest::AbstractNamedUnitRange...
34+
)
35+
return delta(elt, (i1, i_rest...))
36+
end
37+
# TODO: Is this needed?
38+
function DiagonalArrays.δ(
39+
elt::Type{<:Number}, i1::AbstractNamedUnitRange, i_rest::AbstractNamedUnitRange...
40+
)
41+
return delta(elt, i1, i_rest...)
42+
end
43+
# TODO: Is this needed?
44+
function DiagonalArrays.delta(i1::AbstractNamedUnitRange, i_rest::AbstractNamedUnitRange...)
45+
return delta((i1, i_rest...))
46+
end
47+
# TODO: Is this needed?
48+
function DiagonalArrays.δ(i1::AbstractNamedUnitRange, i_rest::AbstractNamedUnitRange...)
49+
return delta(i1, i_rest...)
50+
end
51+
52+
end

test/Project.toml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
[deps]
2+
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
23
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
34
DerivableInterfaces = "6c5e35bf-e59e-4898-b73c-732dcc4ba65f"
45
DiagonalArrays = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
56
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
7+
JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb"
68
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
79
MatrixAlgebraKit = "6c742aac-3347-4629-af66-fc926824e5e4"
10+
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
811
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
912
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
1013
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
1114
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
1215
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1316

1417
[compat]
18+
Adapt = "4.4"
1519
Aqua = "0.8.9"
1620
DerivableInterfaces = "0.5"
1721
DiagonalArrays = "0.3"
1822
FillArrays = "1"
23+
JLArrays = "0.3"
1924
LinearAlgebra = "1"
2025
MatrixAlgebraKit = "0.2.5, 0.3, 0.4, 0.5, 0.6"
26+
NamedDimsArrays = "0.10"
2127
SafeTestsets = "0.1"
22-
SparseArraysBase = "0.7"
28+
SparseArraysBase = "0.7.10"
2329
StableRNGs = "1"
2430
Suppressor = "0.2"
2531
Test = "1"

test/test_nameddimsarraysext.jl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using Adapt: adapt
2+
using DiagonalArrays: DiagonalArray, δ, delta, diagview
3+
using JLArrays: JLArray
4+
using NamedDimsArrays: dename, nameddims, namedoneto, inds
5+
using SparseArraysBase: dense
6+
using Test: @test, @test_broken, @testset
7+
8+
@testset "NamedDimsArrayExt (eltype=$elt, arraytype=$arrayt)" for elt in (Float64, ComplexF64),
9+
arrayt in (Array, JLArray)
10+
11+
dev = adapt(arrayt)
12+
@testset "delta" begin
13+
i, j = namedoneto.((2, 2), (:i, :j))
14+
for a in (
15+
delta(i, j),
16+
delta(Bool, i, j),
17+
delta((i, j)),
18+
delta(Bool, (i, j)),
19+
δ(i, j),
20+
δ(Bool, i, j),
21+
δ((i, j)),
22+
δ(Bool, (i, j)),
23+
)
24+
@test eltype(a) Bool
25+
# TODO: Fix this.
26+
@test_broken diagview(a)
27+
@test diagview(dename(a)) == ones(2)
28+
end
29+
end
30+
@testset "DiagonalArrays" begin
31+
s = dev(DiagonalArray(randn(elt, 3), (3, 3)))
32+
a = nameddims(s, (:a, :b))
33+
b = dense(a)
34+
@test dename(b) == dense(dename(a))
35+
@test dename(b) isa arrayt{elt, 2}
36+
@test inds(b) == inds(a)
37+
end
38+
end

0 commit comments

Comments
 (0)