Skip to content

Commit 4453f64

Browse files
authored
Generalize so labels don't have to be Tuple (#19)
1 parent 11f8157 commit 4453f64

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
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.5"
4+
version = "0.1.6"
55

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

src/BaseExtensions/indexin.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# `Base.indexin` doesn't handle tuples
2-
indexin(x, y) = Base.indexin(x, y)
3-
indexin(x, y::Tuple) = Base.indexin(x, collect(y))
4-
indexin(x::Tuple, y) = Tuple{Vararg{Any,length(x)}}(Base.indexin(x, y))
5-
indexin(x::Tuple, y::Tuple) = Tuple{Vararg{Any,length(x)}}(Base.indexin(x, collect(y)))
2+
indexin(x, y::AbstractArray) = Base.indexin(x, y)
3+
indexin(x, y) = Base.indexin(x, collect(y))
4+
indexin(x::Tuple, y::AbstractArray) = Tuple{Vararg{Any,length(x)}}(Base.indexin(x, y))
5+
indexin(x::Tuple, y) = Tuple{Vararg{Any,length(x)}}(Base.indexin(x, collect(y)))

src/contract/contract.jl

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ end
2626

2727
function contract(
2828
a1::AbstractArray,
29-
labels1::Tuple,
29+
labels1,
3030
a2::AbstractArray,
31-
labels2::Tuple,
32-
α::Number=true;
31+
labels2,
32+
α::Number=one(Bool);
3333
alg=default_contract_alg(),
3434
kwargs...,
3535
)
@@ -39,23 +39,23 @@ end
3939
function contract(
4040
alg::Algorithm,
4141
a1::AbstractArray,
42-
labels1::Tuple,
42+
labels1,
4343
a2::AbstractArray,
44-
labels2::Tuple,
45-
α::Number=true;
44+
labels2,
45+
α::Number=one(Bool);
4646
kwargs...,
4747
)
4848
labels_dest = output_labels(contract, alg, a1, labels1, a2, labels2, α; kwargs...)
4949
return contract(alg, labels_dest, a1, labels1, a2, labels2, α; kwargs...), labels_dest
5050
end
5151

5252
function contract(
53-
labels_dest::Tuple,
53+
labels_dest,
5454
a1::AbstractArray,
55-
labels1::Tuple,
55+
labels1,
5656
a2::AbstractArray,
57-
labels2::Tuple,
58-
α::Number=true;
57+
labels2,
58+
α::Number=one(Bool);
5959
alg=default_contract_alg(),
6060
kwargs...,
6161
)
@@ -64,13 +64,13 @@ end
6464

6565
function contract!(
6666
a_dest::AbstractArray,
67-
labels_dest::Tuple,
67+
labels_dest,
6868
a1::AbstractArray,
69-
labels1::Tuple,
69+
labels1,
7070
a2::AbstractArray,
71-
labels2::Tuple,
72-
α::Number=true,
73-
β::Number=false;
71+
labels2,
72+
α::Number=one(Bool),
73+
β::Number=zero(Bool);
7474
alg=default_contract_alg(),
7575
kwargs...,
7676
)
@@ -80,12 +80,12 @@ end
8080

8181
function contract(
8282
alg::Algorithm,
83-
labels_dest::Tuple,
83+
labels_dest,
8484
a1::AbstractArray,
85-
labels1::Tuple,
85+
labels1,
8686
a2::AbstractArray,
87-
labels2::Tuple,
88-
α::Number=true;
87+
labels2,
88+
α::Number=one(Bool);
8989
kwargs...,
9090
)
9191
biperm_dest, biperm1, biperm2 = blockedperms(contract, labels_dest, labels1, labels2)
@@ -95,11 +95,11 @@ end
9595
function contract!(
9696
alg::Algorithm,
9797
a_dest::AbstractArray,
98-
labels_dest::Tuple,
98+
labels_dest,
9999
a1::AbstractArray,
100-
labels1::Tuple,
100+
labels1,
101101
a2::AbstractArray,
102-
labels2::Tuple,
102+
labels2,
103103
α::Number,
104104
β::Number;
105105
kwargs...,
@@ -119,6 +119,6 @@ function contract(
119119
kwargs...,
120120
)
121121
a_dest = allocate_output(contract, biperm_dest, a1, biperm1, a2, biperm2, α)
122-
contract!(alg, a_dest, biperm_dest, a1, biperm1, a2, biperm2, α, false; kwargs...)
122+
contract!(alg, a_dest, biperm_dest, a1, biperm1, a2, biperm2, α, zero(Bool); kwargs...)
123123
return a_dest
124124
end

0 commit comments

Comments
 (0)