Skip to content

Commit 33375bb

Browse files
authored
Define dual(::AbstractNamedUnitRange) (#33)
1 parent b24d515 commit 33375bb

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

Project.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ TypeParameterAccessors = "7e5a90cf-f82e-492e-a09b-e3e26432c138"
1717

1818
[weakdeps]
1919
BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
20+
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
2021

2122
[extensions]
2223
NamedDimsArraysBlockArraysExt = "BlockArrays"
24+
NamedDimsArraysGradedUnitRangesExt = "GradedUnitRanges"
2325

2426
[compat]
2527
Adapt = "4.1.1"
2628
ArrayLayouts = "1.11.0"
2729
BlockArrays = "1.3.0"
2830
DerivableInterfaces = "0.3.7"
2931
FillArrays = "1.13.0"
32+
GradedUnitRanges = "0.1.3"
3033
LinearAlgebra = "1.10"
3134
MapBroadcast = "0.1.6"
3235
Random = "1.10"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module NamedDimsArraysGradedUnitRangesExt
2+
3+
using GradedUnitRanges: GradedUnitRanges, dual, isdual
4+
using NamedDimsArrays: AbstractNamedUnitRange, dename, name, named
5+
6+
function GradedUnitRanges.dual(r::AbstractNamedUnitRange)
7+
return named(dual(dename(r)), dual(name(r)))
8+
end
9+
10+
function GradedUnitRanges.isdual(r::AbstractNamedUnitRange)
11+
return isdual(dename(r))
12+
end
13+
14+
end

src/abstractnameddimsarray.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,10 @@ function Base.similar(
277277
return similar_nameddimsarray(a, elt, inds)
278278
end
279279

280+
function Base.similar(a::AbstractArray, inds::NaiveOrderedSet)
281+
return similar_nameddimsarray(a, eltype(a), inds)
282+
end
283+
280284
function Base.similar(a::AbstractArray, elt::Type, inds::NaiveOrderedSet)
281285
return similar_nameddimsarray(a, elt, inds)
282286
end

test/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
44
BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
55
BlockSparseArrays = "2c9a651f-6452-4ace-a6ac-809f4280fbb4"
66
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
7+
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
78
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
89
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
910
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
1011
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
12+
SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e"
1113
TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a"
1214
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1315

test/test_basics.jl

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,31 @@ using Test: @test, @test_throws, @testset
7070

7171
for na′ in (
7272
similar(na, Float32, (j, i)),
73+
similar(na, Float32, NaiveOrderedSet((j, i))),
7374
similar(na, Float32, (aj, ai)),
75+
similar(na, Float32, NaiveOrderedSet((aj, ai))),
7476
similar(a, Float32, (j, i)),
77+
similar(a, Float32, NaiveOrderedSet((j, i))),
7578
similar(a, Float32, (aj, ai)),
79+
similar(a, Float32, NaiveOrderedSet((aj, ai))),
7680
)
7781
@test eltype(na′) === Float32
78-
@test nameddimsindices(na′) == (j, i)
82+
@test all(nameddimsindices(na′) .== (j, i))
83+
@test na′ na
84+
end
85+
86+
for na′ in (
87+
similar(na, (j, i)),
88+
similar(na, NaiveOrderedSet((j, i))),
89+
similar(na, (aj, ai)),
90+
similar(na, NaiveOrderedSet((aj, ai))),
91+
similar(a, (j, i)),
92+
similar(a, NaiveOrderedSet((j, i))),
93+
similar(a, (aj, ai)),
94+
similar(a, NaiveOrderedSet((aj, ai))),
95+
)
96+
@test eltype(na′) === eltype(na)
97+
@test all(nameddimsindices(na′) .== (j, i))
7998
@test na′ na
8099
end
81100

test/test_gradedunitrangesext.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using GradedUnitRanges: dual, gradedrange, isdual
2+
using NamedDimsArrays: dename, named
3+
using SymmetrySectors: U1
4+
using Test: @test, @testset
5+
6+
@testset "NamedDimsArraysGradedUnitRangesExt" begin
7+
r = gradedrange([U1(0) => 2, U1(1) => 2])
8+
nr = named(r, "i")
9+
nr_dual = dual(nr)
10+
@test isdual(nr_dual)
11+
@test isdual(dename(nr_dual))
12+
end

0 commit comments

Comments
 (0)