@@ -5,7 +5,7 @@ _kindof(::Polar) = :polar
55
66leftorth! (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... ))
1010end
1111function _leftorth! (t:: AbstractTensorMap , alg:: Union{QL,QLpos} ; kwargs... )
2222function _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)
121135
122136function 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
146168end
0 commit comments