Skip to content

Commit 01d4f99

Browse files
committed
more careful with import and exports
1 parent 9f6761f commit 01d4f99

File tree

8 files changed

+242
-246
lines changed

8 files changed

+242
-246
lines changed

src/TensorKit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ using TensorOperations: TensorOperations, @tensor, @tensoropt, @ncon, ncon
109109
using TensorOperations: IndexTuple, Index2Tuple, linearize, AbstractBackend
110110
const TO = TensorOperations
111111

112-
using MatrixAlgebraKit: MatrixAlgebraKit as MAK
112+
using MatrixAlgebraKit
113113

114114
using LRUCache
115115
using OhMyThreads

src/tensors/factorizations/adjoint.jl

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,96 +2,99 @@
22
# ----------------
33
# map algorithms to their adjoint counterpart
44
# TODO: this probably belongs in MatrixAlgebraKit
5-
_adjoint(alg::LAPACK_HouseholderQR) = LAPACK_HouseholderLQ(; alg.kwargs...)
6-
_adjoint(alg::LAPACK_HouseholderLQ) = LAPACK_HouseholderQR(; alg.kwargs...)
7-
_adjoint(alg::LAPACK_HouseholderQL) = LAPACK_HouseholderRQ(; alg.kwargs...)
8-
_adjoint(alg::LAPACK_HouseholderRQ) = LAPACK_HouseholderQL(; alg.kwargs...)
9-
_adjoint(alg::PolarViaSVD) = PolarViaSVD(_adjoint(alg.svdalg))
5+
_adjoint(alg::MAK.LAPACK_HouseholderQR) = MAK.LAPACK_HouseholderLQ(; alg.kwargs...)
6+
_adjoint(alg::MAK.LAPACK_HouseholderLQ) = MAK.LAPACK_HouseholderQR(; alg.kwargs...)
7+
_adjoint(alg::MAK.LAPACK_HouseholderQL) = MAK.LAPACK_HouseholderRQ(; alg.kwargs...)
8+
_adjoint(alg::MAK.LAPACK_HouseholderRQ) = MAK.LAPACK_HouseholderQL(; alg.kwargs...)
9+
_adjoint(alg::MAK.PolarViaSVD) = MAK.PolarViaSVD(_adjoint(alg.svdalg))
1010
_adjoint(alg::AbstractAlgorithm) = alg
1111

1212
# 1-arg functions
13-
function initialize_output(::typeof(left_null!), t::AdjointTensorMap,
14-
alg::AbstractAlgorithm)
15-
return adjoint(initialize_output(right_null!, adjoint(t), _adjoint(alg)))
13+
function MAK.initialize_output(::typeof(left_null!), t::AdjointTensorMap,
14+
alg::AbstractAlgorithm)
15+
return adjoint(MAK.initialize_output(right_null!, adjoint(t), _adjoint(alg)))
1616
end
17-
function initialize_output(::typeof(right_null!), t::AdjointTensorMap,
18-
alg::AbstractAlgorithm)
19-
return adjoint(initialize_output(left_null!, adjoint(t), _adjoint(alg)))
17+
function MAK.initialize_output(::typeof(right_null!), t::AdjointTensorMap,
18+
alg::AbstractAlgorithm)
19+
return adjoint(MAK.initialize_output(left_null!, adjoint(t), _adjoint(alg)))
2020
end
2121

22-
function left_null!(t::AdjointTensorMap, N, alg::AbstractAlgorithm)
22+
function MAK.left_null!(t::AdjointTensorMap, N, alg::AbstractAlgorithm)
2323
right_null!(adjoint(t), adjoint(N), _adjoint(alg))
2424
return N
2525
end
26-
function right_null!(t::AdjointTensorMap, N, alg::AbstractAlgorithm)
26+
function MAK.right_null!(t::AdjointTensorMap, N, alg::AbstractAlgorithm)
2727
left_null!(adjoint(t), adjoint(N), _adjoint(alg))
2828
return N
2929
end
3030

31-
function MatrixAlgebraKit.is_left_isometry(t::AdjointTensorMap; kwargs...)
31+
function MAK.is_left_isometry(t::AdjointTensorMap; kwargs...)
3232
return is_right_isometry(adjoint(t); kwargs...)
3333
end
34-
function MatrixAlgebraKit.is_right_isometry(t::AdjointTensorMap; kwargs...)
34+
function MAK.is_right_isometry(t::AdjointTensorMap; kwargs...)
3535
return is_left_isometry(adjoint(t); kwargs...)
3636
end
3737

3838
# 2-arg functions
3939
for (left_f!, right_f!) in zip((:qr_full!, :qr_compact!, :left_polar!, :left_orth!),
4040
(:lq_full!, :lq_compact!, :right_polar!, :right_orth!))
41-
@eval function copy_input(::typeof($left_f!), t::AdjointTensorMap)
42-
return adjoint(copy_input($right_f!, adjoint(t)))
41+
@eval function MAK.copy_input(::typeof($left_f!), t::AdjointTensorMap)
42+
return adjoint(MAK.copy_input($right_f!, adjoint(t)))
4343
end
44-
@eval function copy_input(::typeof($right_f!), t::AdjointTensorMap)
45-
return adjoint(copy_input($left_f!, adjoint(t)))
44+
@eval function MAK.copy_input(::typeof($right_f!), t::AdjointTensorMap)
45+
return adjoint(MAK.copy_input($left_f!, adjoint(t)))
4646
end
4747

48-
@eval function initialize_output(::typeof($left_f!), t::AdjointTensorMap,
49-
alg::AbstractAlgorithm)
50-
return reverse(adjoint.(initialize_output($right_f!, adjoint(t), _adjoint(alg))))
48+
@eval function MAK.initialize_output(::typeof($left_f!), t::AdjointTensorMap,
49+
alg::AbstractAlgorithm)
50+
return reverse(adjoint.(MAK.initialize_output($right_f!, adjoint(t), _adjoint(alg))))
5151
end
52-
@eval function initialize_output(::typeof($right_f!), t::AdjointTensorMap,
53-
alg::AbstractAlgorithm)
54-
return reverse(adjoint.(initialize_output($left_f!, adjoint(t), _adjoint(alg))))
52+
@eval function MAK.initialize_output(::typeof($right_f!), t::AdjointTensorMap,
53+
alg::AbstractAlgorithm)
54+
return reverse(adjoint.(MAK.initialize_output($left_f!, adjoint(t), _adjoint(alg))))
5555
end
5656

57-
@eval function $left_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
57+
@eval function MAK.$left_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
5858
$right_f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
5959
return F
6060
end
61-
@eval function $right_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
61+
@eval function MAK.$right_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
6262
$left_f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
6363
return F
6464
end
6565
end
6666

6767
# 3-arg functions
6868
for f! in (:svd_full!, :svd_compact!, :svd_trunc!)
69-
@eval function copy_input(::typeof($f!), t::AdjointTensorMap)
70-
return adjoint(copy_input($f!, adjoint(t)))
69+
@eval function MAK.copy_input(::typeof($f!), t::AdjointTensorMap)
70+
return adjoint(MAK.copy_input($f!, adjoint(t)))
7171
end
7272

73-
@eval function initialize_output(::typeof($f!), t::AdjointTensorMap,
74-
alg::AbstractAlgorithm)
75-
return reverse(adjoint.(initialize_output($f!, adjoint(t), _adjoint(alg))))
73+
@eval function MAK.initialize_output(::typeof($f!), t::AdjointTensorMap,
74+
alg::AbstractAlgorithm)
75+
return reverse(adjoint.(MAK.initialize_output($f!, adjoint(t), _adjoint(alg))))
7676
end
77-
@eval function $f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
77+
@eval function MAK.$f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
7878
$f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
7979
return F
8080
end
8181

8282
# disambiguate by prohibition
83-
@eval function initialize_output(::typeof($f!), t::AdjointTensorMap,
84-
alg::DiagonalAlgorithm)
83+
@eval function MAK.initialize_output(::typeof($f!), t::AdjointTensorMap,
84+
alg::DiagonalAlgorithm)
8585
throw(MethodError($f!, (t, alg)))
8686
end
8787
end
8888
# avoid amgiguity
89-
function initialize_output(::typeof(svd_trunc!), t::AdjointTensorMap,
90-
alg::TruncatedAlgorithm)
91-
return initialize_output(svd_compact!, t, alg.alg)
89+
function MAK.initialize_output(::typeof(svd_trunc!), t::AdjointTensorMap,
90+
alg::TruncatedAlgorithm)
91+
return MAK.initialize_output(svd_compact!, t, alg.alg)
9292
end
9393
# to fix ambiguity
94-
function svd_trunc!(t::AdjointTensorMap, USVᴴ, alg::TruncatedAlgorithm)
94+
function MAK.svd_trunc!(t::AdjointTensorMap, USVᴴ, alg::TruncatedAlgorithm)
9595
USVᴴ′ = svd_compact!(t, USVᴴ, alg.alg)
96-
return truncate(svd_trunc!, USVᴴ′, alg.trunc)
96+
return MAK.truncate(svd_trunc!, USVᴴ′, alg.trunc)
97+
end
98+
function MAK.svd_compact!(t::AdjointTensorMap, USVᴴ, alg::DiagonalAlgorithm)
99+
return MAK.svd_compact!(t, USVᴴ, alg.alg)
97100
end

src/tensors/factorizations/diagonal.jl

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ _repack_diagonal(d::DiagonalTensorMap) = Diagonal(d.data)
55
for f in (:svd_compact, :svd_full, :svd_trunc, :svd_vals, :qr_compact, :qr_full, :qr_null,
66
:lq_compact, :lq_full, :lq_null, :eig_full, :eig_trunc, :eig_vals, :eigh_full,
77
:eigh_trunc, :eigh_vals, :left_polar, :right_polar)
8-
@eval copy_input(::typeof($f), d::DiagonalTensorMap) = copy(d)
8+
@eval MAK.copy_input(::typeof($f), d::DiagonalTensorMap) = copy(d)
99
end
1010

1111
for f! in (:eig_full!, :eig_trunc!)
12-
@eval function initialize_output(::typeof($f!), d::AbstractTensorMap,
13-
::DiagonalAlgorithm)
12+
@eval function MAK.initialize_output(::typeof($f!), d::AbstractTensorMap,
13+
::DiagonalAlgorithm)
1414
return d, similar(d)
1515
end
1616
end
1717

1818
for f! in (:eigh_full!, :eigh_trunc!)
19-
@eval function initialize_output(::typeof($f!), d::AbstractTensorMap,
20-
::DiagonalAlgorithm)
19+
@eval function MAK.initialize_output(::typeof($f!), d::AbstractTensorMap,
20+
::DiagonalAlgorithm)
2121
if scalartype(d) <: Real
2222
return d, similar(d)
2323
else
@@ -27,36 +27,37 @@ for f! in (:eigh_full!, :eigh_trunc!)
2727
end
2828

2929
for f! in (:qr_full!, :qr_compact!)
30-
@eval function initialize_output(::typeof($f!), d::AbstractTensorMap,
31-
::DiagonalAlgorithm)
30+
@eval function MAK.initialize_output(::typeof($f!), d::AbstractTensorMap,
31+
::DiagonalAlgorithm)
3232
return d, similar(d)
3333
end
3434
# to avoid ambiguities
35-
@eval function initialize_output(::typeof($f!), d::AdjointTensorMap,
36-
::DiagonalAlgorithm)
35+
@eval function MAK.initialize_output(::typeof($f!), d::AdjointTensorMap,
36+
::DiagonalAlgorithm)
3737
return d, similar(d)
3838
end
3939
end
4040
for f! in (:lq_full!, :lq_compact!)
41-
@eval function initialize_output(::typeof($f!), d::AbstractTensorMap,
42-
::DiagonalAlgorithm)
41+
@eval function MAK.initialize_output(::typeof($f!), d::AbstractTensorMap,
42+
::DiagonalAlgorithm)
4343
return similar(d), d
4444
end
4545
# to avoid ambiguities
46-
@eval function initialize_output(::typeof($f!), d::AdjointTensorMap,
47-
::DiagonalAlgorithm)
46+
@eval function MAK.initialize_output(::typeof($f!), d::AdjointTensorMap,
47+
::DiagonalAlgorithm)
4848
return similar(d), d
4949
end
5050
end
5151

52-
function initialize_output(::typeof(left_orth!), d::DiagonalTensorMap)
52+
function MAK.initialize_output(::typeof(left_orth!), d::DiagonalTensorMap)
5353
return d, similar(d)
5454
end
55-
function initialize_output(::typeof(right_orth!), d::DiagonalTensorMap)
55+
function MAK.initialize_output(::typeof(right_orth!), d::DiagonalTensorMap)
5656
return similar(d), d
5757
end
5858

59-
function initialize_output(::typeof(svd_full!), t::AbstractTensorMap, ::DiagonalAlgorithm)
59+
function MAK.initialize_output(::typeof(svd_full!), t::AbstractTensorMap,
60+
::DiagonalAlgorithm)
6061
V_cod = fuse(codomain(t))
6162
V_dom = fuse(domain(t))
6263
U = similar(t, codomain(t) V_cod)
@@ -68,16 +69,16 @@ end
6869
for f! in
6970
(:qr_full!, :qr_compact!, :lq_full!, :lq_compact!, :eig_full!, :eig_trunc!, :eigh_full!,
7071
:eigh_trunc!, :right_orth!, :left_orth!)
71-
@eval function $f!(d::DiagonalTensorMap, F, alg::DiagonalAlgorithm)
72-
check_input($f!, d, F, alg)
72+
@eval function MAK.$f!(d::DiagonalTensorMap, F, alg::DiagonalAlgorithm)
73+
MAK.check_input($f!, d, F, alg)
7374
$f!(_repack_diagonal(d), _repack_diagonal.(F), alg)
7475
return F
7576
end
7677
end
7778

7879
for f! in (:qr_full!, :qr_compact!)
79-
@eval function check_input(::typeof($f!), d::AbstractTensorMap, QR,
80-
::DiagonalAlgorithm)
80+
@eval function MAK.check_input(::typeof($f!), d::AbstractTensorMap, QR,
81+
::DiagonalAlgorithm)
8182
Q, R = QR
8283
@assert d isa DiagonalTensorMap
8384
@assert Q isa DiagonalTensorMap && R isa DiagonalTensorMap
@@ -91,8 +92,8 @@ for f! in (:qr_full!, :qr_compact!)
9192
end
9293

9394
for f! in (:lq_full!, :lq_compact!)
94-
@eval function check_input(::typeof($f!), d::AbstractTensorMap, LQ,
95-
::DiagonalAlgorithm)
95+
@eval function MAK.check_input(::typeof($f!), d::AbstractTensorMap, LQ,
96+
::DiagonalAlgorithm)
9697
L, Q = LQ
9798
@assert d isa DiagonalTensorMap
9899
@assert Q isa DiagonalTensorMap && L isa DiagonalTensorMap
@@ -106,25 +107,27 @@ for f! in (:lq_full!, :lq_compact!)
106107
end
107108

108109
# disambiguate
109-
svd_compact!(t::AbstractTensorMap, USVᴴ, alg::DiagonalAlgorithm) = svd_full!(t, USVᴴ, alg)
110+
function MAK.svd_compact!(t::AbstractTensorMap, USVᴴ, alg::DiagonalAlgorithm)
111+
return svd_full!(t, USVᴴ, alg)
112+
end
110113

111114
# f_vals
112115
# ------
113116

114117
for f! in (:eig_vals!, :eigh_vals!, :svd_vals!)
115-
@eval function $f!(d::AbstractTensorMap, V, alg::DiagonalAlgorithm)
116-
check_input($f!, d, V, alg)
118+
@eval function MAK.$f!(d::AbstractTensorMap, V, alg::DiagonalAlgorithm)
119+
MAK.check_input($f!, d, V, alg)
117120
$f!(_repack_diagonal(d), diagview(_repack_diagonal(V)), alg)
118121
return V
119122
end
120-
@eval function initialize_output(::typeof($f!), d::DiagonalTensorMap,
121-
alg::DiagonalAlgorithm)
122-
data = initialize_output($f!, _repack_diagonal(d), alg)
123+
@eval function MAK.initialize_output(::typeof($f!), d::DiagonalTensorMap,
124+
alg::DiagonalAlgorithm)
125+
data = MAK.initialize_output($f!, _repack_diagonal(d), alg)
123126
return DiagonalTensorMap(data, d.domain)
124127
end
125128
end
126129

127-
function check_input(::typeof(eig_full!), t::DiagonalTensorMap, DV, ::DiagonalAlgorithm)
130+
function MAK.check_input(::typeof(eig_full!), t::DiagonalTensorMap, DV, ::DiagonalAlgorithm)
128131
domain(t) == codomain(t) ||
129132
throw(ArgumentError("Eigenvalue decomposition requires square input tensor"))
130133

@@ -144,7 +147,8 @@ function check_input(::typeof(eig_full!), t::DiagonalTensorMap, DV, ::DiagonalAl
144147
return nothing
145148
end
146149

147-
function check_input(::typeof(eigh_full!), t::DiagonalTensorMap, DV, ::DiagonalAlgorithm)
150+
function MAK.check_input(::typeof(eigh_full!), t::DiagonalTensorMap, DV,
151+
::DiagonalAlgorithm)
148152
domain(t) == codomain(t) ||
149153
throw(ArgumentError("Eigenvalue decomposition requires square input tensor"))
150154

@@ -164,21 +168,21 @@ function check_input(::typeof(eigh_full!), t::DiagonalTensorMap, DV, ::DiagonalA
164168
return nothing
165169
end
166170

167-
function check_input(::typeof(eig_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
171+
function MAK.check_input(::typeof(eig_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
168172
@assert D isa DiagonalTensorMap
169173
@check_scalar D t
170174
@check_space D space(t)
171175
return nothing
172176
end
173177

174-
function check_input(::typeof(eigh_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
178+
function MAK.check_input(::typeof(eigh_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
175179
@assert D isa DiagonalTensorMap
176180
@check_scalar D t real
177181
@check_space D space(t)
178182
return nothing
179183
end
180184

181-
function check_input(::typeof(svd_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
185+
function MAK.check_input(::typeof(svd_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
182186
@assert D isa DiagonalTensorMap
183187
@check_scalar D t real
184188
@check_space D space(t)

0 commit comments

Comments
 (0)