Skip to content

Commit c43dff3

Browse files
committed
small fixes
1 parent 538fd4e commit c43dff3

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

src/tensors/factorizations/implementations.jl

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ _kindof(::Polar) = :polar
55

66
leftorth!(t::AbstractTensorMap; alg=nothing, kwargs...) = _leftorth!(t, alg; kwargs...)
77

8-
function _leftorth!(t::AbstractTensorMap, ::Nothing; kwargs...)
8+
function _leftorth!(t::AbstractTensorMap, alg::Nothing,; kwargs...)
99
return isempty(kwargs) ? left_orth!(t) : left_orth!(t; trunc=(; kwargs...))
1010
end
1111
function _leftorth!(t::AbstractTensorMap, alg::Union{QL,QLpos}; kwargs...)
@@ -22,9 +22,14 @@ end
2222
function _leftorth!(t, alg::OFA; kwargs...)
2323
trunc = isempty(kwargs) ? nothing : (; kwargs...)
2424

25+
Base.depwarn(lazy"$alg is deprecated", :leftorth!)
26+
2527
kind = _kindof(alg)
2628
if kind == :svd
27-
return left_orth!(t; kind, alg_svd=alg, trunc)
29+
alg_svd = alg === SVD() ? LAPACK_QRIteration() :
30+
alg === SDD() ? LAPACK_DivideAndConquer() :
31+
throw(ArgumentError(lazy"Unknown algorithm $alg"))
32+
return left_orth!(t; kind, alg_svd, trunc)
2833
elseif kind == :qr
2934
alg_qr = (; positive=(alg == QRpos()))
3035
return left_orth!(t; kind, alg_qr, trunc)
@@ -47,7 +52,10 @@ function leftnull!(t::AbstractTensorMap;
4752

4853
kind = _kindof(alg)
4954
if kind == :svd
50-
return left_null!(t; kind, alg_svd=alg, trunc)
55+
alg_svd = alg === SVD() ? LAPACK_QRIteration() :
56+
alg === SDD() ? LAPACK_DivideAndConquer() :
57+
throw(ArgumentError(lazy"Unknown algorithm $alg"))
58+
return left_null!(t; kind, alg_svd, trunc)
5159
elseif kind == :qr
5260
alg_qr = (; positive=(alg == QRpos()))
5361
return left_null!(t; kind, alg_qr, trunc)
@@ -76,7 +84,10 @@ function rightorth!(t::AbstractTensorMap;
7684

7785
kind = _kindof(alg)
7886
if kind == :svd
79-
return right_orth!(t; kind, alg_svd=alg, trunc)
87+
alg_svd = alg === SVD() ? LAPACK_QRIteration() :
88+
alg === SDD() ? LAPACK_DivideAndConquer() :
89+
throw(ArgumentError(lazy"Unknown algorithm $alg"))
90+
return right_orth!(t; kind, alg_svd, trunc)
8091
elseif kind == :lq
8192
alg_lq = (; positive=(alg == LQpos()))
8293
return right_orth!(t; kind, alg_lq, trunc)
@@ -97,7 +108,10 @@ function rightnull!(t::AbstractTensorMap;
97108

98109
kind = _kindof(alg)
99110
if kind == :svd
100-
return right_null!(t; kind, alg_svd=alg, trunc)
111+
alg_svd = alg === SVD() ? LAPACK_QRIteration() :
112+
alg === SDD() ? LAPACK_DivideAndConquer() :
113+
throw(ArgumentError(lazy"Unknown algorithm $alg"))
114+
return right_null!(t; kind, alg_svd, trunc)
101115
elseif kind == :lq
102116
alg_lq = (; positive=(alg == LQpos()))
103117
return right_null!(t; kind, alg_lq, trunc)
@@ -121,6 +135,7 @@ end
121135

122136
function eig!(t::AbstractTensorMap; trunc=notrunc(), kwargs...)
123137
InnerProductStyle(t) === EuclideanInnerProduct() || throw_invalid_innerproduct(:eig!)
138+
124139
if trunc == notrunc()
125140
return eig_full!(t; kwargs...)
126141
else
@@ -134,13 +149,20 @@ end
134149

135150
# Singular value decomposition
136151
# ----------------------------
137-
function tsvd!(t::AbstractTensorMap; trunc=notrunc(), p=nothing, kwargs...)
152+
function tsvd!(t::AbstractTensorMap; trunc=notrunc(), p=nothing, alg=nothing, kwargs...)
138153
InnerProductStyle(t) === EuclideanInnerProduct() || throw_invalid_innerproduct(:tsvd!)
139154
isnothing(p) || Base.depwarn("p is no longer supported", :tsvd!)
140155

156+
if alg isa OFA
157+
Base.depwarn(lazy"$alg is deprecated", :tsvd!)
158+
alg = alg === SVD() ? LAPACK_QRIteration() :
159+
alg === SDD() ? LAPACK_DivideAndConquer() :
160+
throw(ArgumentError(lazy"Unknown algorithm $alg"))
161+
end
162+
141163
if trunc == notrunc()
142-
return svd_compact!(t; kwargs...)
164+
return svd_compact!(t; alg, kwargs...)
143165
else
144-
return svd_trunc!(t; trunc, kwargs...)
166+
return svd_trunc!(t; trunc, alg, kwargs...)
145167
end
146168
end

src/tensors/factorizations/matrixalgebrakit.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -440,11 +440,11 @@ end
440440

441441
# Needed to get algorithm selection to behave
442442
function left_orth_polar!(t::AbstractTensorMap, VC, alg)
443-
alg′ = select_algorithm(left_polar!, t, alg)
443+
alg′ = MatrixAlgebraKit.select_algorithm(left_polar!, t, alg)
444444
return left_orth_polar!(t, VC, alg′)
445445
end
446446
function right_orth_polar!(t::AbstractTensorMap, CVᴴ, alg)
447-
alg′ = select_algorithm(right_polar!, t, alg)
447+
alg′ = MatrixAlgebraKit.select_algorithm(right_polar!, t, alg)
448448
return right_orth_polar!(t, CVᴴ, alg′)
449449
end
450450

0 commit comments

Comments
 (0)