Skip to content

Commit 529410e

Browse files
committed
cleanup
1 parent 6ff0835 commit 529410e

File tree

7 files changed

+143
-295
lines changed

7 files changed

+143
-295
lines changed

src/tensors/factorizations/adjoint.jl

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ function initialize_output(::typeof(right_null!), t::AdjointTensorMap,
1919
return adjoint(initialize_output(left_null!, adjoint(t), _adjoint(alg)))
2020
end
2121

22-
function left_null!(t::AdjointTensorMap, N::AdjointTensorMap, alg::AbstractAlgorithm)
22+
function 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::AdjointTensorMap, alg::AbstractAlgorithm)
26+
function right_null!(t::AdjointTensorMap, N, alg::AbstractAlgorithm)
2727
left_null!(adjoint(t), adjoint(N), _adjoint(alg))
2828
return N
2929
end
@@ -54,15 +54,11 @@ for (left_f!, right_f!) in zip((:qr_full!, :qr_compact!, :left_polar!, :left_ort
5454
return reverse(adjoint.(initialize_output($left_f!, adjoint(t), _adjoint(alg))))
5555
end
5656

57-
@eval function $left_f!(t::AdjointTensorMap,
58-
F::Tuple{AdjointTensorMap,AdjointTensorMap},
59-
alg::AbstractAlgorithm)
57+
@eval function $left_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
6058
$right_f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
6159
return F
6260
end
63-
@eval function $right_f!(t::AdjointTensorMap,
64-
F::Tuple{AdjointTensorMap,AdjointTensorMap},
65-
alg::AbstractAlgorithm)
61+
@eval function $right_f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
6662
$left_f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
6763
return F
6864
end
@@ -78,10 +74,7 @@ for f! in (:svd_full!, :svd_compact!, :svd_trunc!)
7874
alg::AbstractAlgorithm)
7975
return reverse(adjoint.(initialize_output($f!, adjoint(t), _adjoint(alg))))
8076
end
81-
_TS = f! === :svd_full! ? :AdjointTensorMap : DiagonalTensorMap
82-
@eval function $f!(t::AdjointTensorMap,
83-
F::Tuple{AdjointTensorMap,$_TS,AdjointTensorMap},
84-
alg::AbstractAlgorithm)
77+
@eval function $f!(t::AdjointTensorMap, F, alg::AbstractAlgorithm)
8578
$f!(adjoint(t), reverse(adjoint.(F)), _adjoint(alg))
8679
return F
8780
end
@@ -92,9 +85,7 @@ function initialize_output(::typeof(svd_trunc!), t::AdjointTensorMap,
9285
return initialize_output(svd_compact!, t, alg.alg)
9386
end
9487
# to fix ambiguity
95-
function svd_trunc!(t::AdjointTensorMap,
96-
USVᴴ::Tuple{AdjointTensorMap,DiagonalTensorMap,AdjointTensorMap},
97-
alg::TruncatedAlgorithm)
88+
function svd_trunc!(t::AdjointTensorMap, USVᴴ, alg::TruncatedAlgorithm)
9889
USVᴴ′ = svd_compact!(t, USVᴴ, alg.alg)
9990
return truncate!(svd_trunc!, USVᴴ′, alg.trunc)
10091
end

src/tensors/factorizations/diagonal.jl

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ for f! in
6060
end
6161

6262
for f! in (:qr_full!, :qr_compact!)
63-
@eval function check_input(::typeof($f!), d::AbstractTensorMap, (Q, R)::_T_QR,
63+
@eval function check_input(::typeof($f!), d::AbstractTensorMap, QR,
6464
::DiagonalAlgorithm)
65+
Q, R = QR
6566
@assert d isa DiagonalTensorMap
6667
@assert Q isa DiagonalTensorMap && R isa DiagonalTensorMap
6768
@check_scalar Q d
@@ -74,8 +75,9 @@ for f! in (:qr_full!, :qr_compact!)
7475
end
7576

7677
for f! in (:lq_full!, :lq_compact!)
77-
@eval function check_input(::typeof($f!), d::AbstractTensorMap, (L, Q)::_T_LQ,
78+
@eval function check_input(::typeof($f!), d::AbstractTensorMap, LQ,
7879
::DiagonalAlgorithm)
80+
L, Q = LQ
7981
@assert d isa DiagonalTensorMap
8082
@assert Q isa DiagonalTensorMap && L isa DiagonalTensorMap
8183
@check_scalar Q d
@@ -103,11 +105,15 @@ for f! in (:eig_vals!, :eigh_vals!, :svd_vals!)
103105
end
104106
end
105107

106-
function check_input(::typeof(eig_full!), t::DiagonalTensorMap, (D, V)::_T_DV,
107-
::DiagonalAlgorithm)
108+
function check_input(::typeof(eig_full!), t::DiagonalTensorMap, DV, ::DiagonalAlgorithm)
108109
domain(t) == codomain(t) ||
109110
throw(ArgumentError("Eigenvalue decomposition requires square input tensor"))
110111

112+
D, V = DV
113+
114+
@assert D isa DiagonalTensorMap
115+
@assert V isa AbstractTensorMap
116+
111117
# scalartype checks
112118
@check_scalar D t
113119
@check_scalar V t
@@ -119,11 +125,15 @@ function check_input(::typeof(eig_full!), t::DiagonalTensorMap, (D, V)::_T_DV,
119125
return nothing
120126
end
121127

122-
function check_input(::typeof(eigh_full!), t::DiagonalTensorMap, (D, V)::_T_DV,
123-
::DiagonalAlgorithm)
128+
function check_input(::typeof(eigh_full!), t::DiagonalTensorMap, DV, ::DiagonalAlgorithm)
124129
domain(t) == codomain(t) ||
125130
throw(ArgumentError("Eigenvalue decomposition requires square input tensor"))
126131

132+
D, V = DV
133+
134+
@assert D isa DiagonalTensorMap
135+
@assert V isa AbstractTensorMap
136+
127137
# scalartype checks
128138
@check_scalar D t real
129139
@check_scalar V t
@@ -135,22 +145,22 @@ function check_input(::typeof(eigh_full!), t::DiagonalTensorMap, (D, V)::_T_DV,
135145
return nothing
136146
end
137147

138-
function check_input(::typeof(eig_vals!), t::AbstractTensorMap, D::DiagonalTensorMap,
139-
::DiagonalAlgorithm)
148+
function check_input(::typeof(eig_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
149+
@assert D isa DiagonalTensorMap
140150
@check_scalar D t
141151
@check_space D space(t)
142152
return nothing
143153
end
144154

145-
function check_input(::typeof(eigh_vals!), t::AbstractTensorMap, D::DiagonalTensorMap,
146-
::DiagonalAlgorithm)
155+
function check_input(::typeof(eigh_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
156+
@assert D isa DiagonalTensorMap
147157
@check_scalar D t real
148158
@check_space D space(t)
149159
return nothing
150160
end
151161

152-
function check_input(::typeof(svd_vals!), t::AbstractTensorMap, D::DiagonalTensorMap,
153-
::DiagonalAlgorithm)
162+
function check_input(::typeof(svd_vals!), t::AbstractTensorMap, D, ::DiagonalAlgorithm)
163+
@assert D isa DiagonalTensorMap
154164
@check_scalar D t real
155165
@check_space D space(t)
156166
return nothing

src/tensors/factorizations/factorizations.jl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ import MatrixAlgebraKit: default_algorithm,
4242
diagview, isisometry
4343

4444
include("utility.jl")
45-
include("interface.jl")
46-
# include("implementations.jl")
4745
include("matrixalgebrakit.jl")
4846
include("truncation.jl")
4947
include("deprecations.jl")
@@ -66,9 +64,19 @@ const RealOrComplexFloat = Union{AbstractFloat,Complex{<:AbstractFloat}}
6664
#------------------------------#
6765
# LinearAlgebra overloads
6866
#------------------------------#
69-
LinearAlgebra.svdvals!(t::AbstractTensorMap) = diagview(svd_vals!(t))
67+
68+
function LinearAlgebra.eigvals(t::AbstractTensorMap; kwargs...)
69+
tcopy = copy_oftype(t, factorisation_scalartype(eigen, t))
70+
return LinearAlgebra.eigvals!(tcopy; kwargs...)
71+
end
7072
LinearAlgebra.eigvals!(t::AbstractTensorMap; kwargs...) = diagview(eig_vals!(t))
7173

74+
function LinearAlgebra.svdvals(t::AbstractTensorMap)
75+
tcopy = copy_oftype(t, factorisation_scalartype(tsvd, t))
76+
return LinearAlgebra.svdvals!(tcopy)
77+
end
78+
LinearAlgebra.svdvals!(t::AbstractTensorMap) = diagview(svd_vals!(t))
79+
7280
#--------------------------------------------------#
7381
# Checks for hermiticity and positive definiteness #
7482
#--------------------------------------------------#

src/tensors/factorizations/implementations.jl

Lines changed: 0 additions & 192 deletions
This file was deleted.

src/tensors/factorizations/interface.jl

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)