@@ -155,46 +155,40 @@ for (f, f_lapack!, Alg) in (
155155 $ f_svd_vals! (driver, A, S; kwargs... )
156156 @inline $ f_svd! (:: DefaultDriver , A, U, S, Vᴴ; kwargs... ) =
157157 $ f_svd! ($ (Symbol (:default_ , f, :_driver ))(A), A, U, S, Vᴴ; kwargs... )
158- @inline $ f_svd_full! (:: DefaultDriver , A, S ; kwargs... ) =
159- $ f_svd_full! ($ (Symbol (:default_ , f, :_driver )), A, S ; kwargs... )
158+ @inline $ f_svd_full! (:: DefaultDriver , A, U, S, Vᴴ ; kwargs... ) =
159+ $ f_svd_full! ($ (Symbol (:default_ , f, :_driver ))(A) , A, U, S, Vᴴ ; kwargs... )
160160 @inline $ f_svd_vals! (:: DefaultDriver , A, S; kwargs... ) =
161- $ f_svd_vals! ($ (Symbol (:default_ , f, :_driver )), A, S; kwargs... )
161+ $ f_svd_vals! ($ (Symbol (:default_ , f, :_driver ))(A) , A, S; kwargs... )
162162 end
163163
164164 # Implementation
165165 @eval begin
166- function $f_svd! (
167- driver:: Driver , A:: AbstractMatrix , U:: AbstractMatrix , S:: AbstractMatrix , Vᴴ:: AbstractMatrix ;
168- fixgauge:: Bool = true , kwargs...
169- )
170- supports_svd (driver, $ (QuoteNode (f))) || throw (ArgumentError (lazy " $driver does not provide $f" ))
166+ function $f_svd! (driver:: Driver , A, U, S, Vᴴ; fixgauge:: Bool = true , kwargs... )
167+ supports_svd (driver, $ (QuoteNode (f))) ||
168+ throw (ArgumentError (LazyString (" driver " , driver, " does not provide `$($ (QuoteNode (f_lapack!))) `" )))
171169 isempty (A) && return one! (U), zero! (S), one! (Vᴴ)
172- $ f_lapack! (driver, A, view (S, 1 : minmn, 1 ), U, Vᴴ; kwargs... )
170+ $ f_lapack! (driver, A, diagview (S ), U, Vᴴ; kwargs... )
173171 fixgauge && gaugefix! (svd_compact!, U, Vᴴ)
174172 return U, S, Vᴴ
175173 end
176- function $f_svd_full! (
177- driver:: Driver , A:: AbstractMatrix , U:: AbstractMatrix , S:: AbstractMatrix , Vᴴ:: AbstractMatrix ;
178- fixgauge:: Bool = true , kwargs...
179- )
180- supports_svd_full (driver, $ (QuoteNode (f))) || throw (ArgumentError (lazy " $driver does not provide $f" ))
174+ function $f_svd_full! (driver:: Driver , A, U, S, Vᴴ; fixgauge:: Bool = true , kwargs... )
175+ supports_svd_full (driver, $ (QuoteNode (f))) ||
176+ throw (ArgumentError (LazyString (" driver " , driver, " does not provide `$($ (QuoteNode (f_lapack!))) `" )))
181177 isempty (A) && return one! (U), zero! (S), one! (Vᴴ)
182178 zero! (S)
183179 minmn = min (size (A)... )
184180 $ f_lapack! (driver, A, view (S, 1 : minmn, 1 ), U, Vᴴ; kwargs... )
185181 diagview (S) .= view (S, 1 : minmn, 1 )
186- view (S, 2 : minmn, 1 ) . = zero ( eltype (S ))
182+ zero! ( view (S, 2 : minmn, 1 ))
187183 fixgauge && gaugefix! (svd_full!, U, Vᴴ)
188184 return U, S, Vᴴ
189185 end
190- function $f_svd_vals! (
191- driver:: Driver , A:: AbstractMatrix , S:: AbstractVector ;
192- fixgauge:: Bool = true , kwargs...
193- )
194- supports_svd (driver, $ (QuoteNode (f))) || throw (ArgumentError (lazy " $driver does not provide $f" ))
186+ function $f_svd_vals! (driver:: Driver , A, S; fixgauge:: Bool = true , kwargs... )
187+ supports_svd (driver, $ (QuoteNode (f))) ||
188+ throw (ArgumentError (LazyString (" driver " , driver, " does not provide `$($ (QuoteNode (f_lapack!))) `" )))
195189 isempty (A) && return zero! (S)
196190 U, Vᴴ = similar (A, (0 , 0 )), similar (A, (0 , 0 ))
197- $ f_lapack! (driver, A, view (S, 1 : minmn, 1 ) , U, Vᴴ; kwargs... )
191+ $ f_lapack! (driver, A, S , U, Vᴴ; kwargs... )
198192 return S
199193 end
200194 end
@@ -461,19 +455,19 @@ end
461455
462456# Deprecations
463457# ------------
464- for algtype in (:DivideAndConquer , :QRIteration , :Jacobi , :Bisection )
465- algtype = Symbol (:LAPACK_ , algtype)
458+ for algtype in (:SafeDivideAndConquer , : DivideAndConquer , :QRIteration , :Jacobi , :Bisection )
459+ lapack_algtype = Symbol (:LAPACK_ , algtype)
466460 @eval begin
467461 Base. @deprecate (
468- svd_compact! (A, USVᴴ, alg:: $algtype ),
462+ svd_compact! (A, USVᴴ, alg:: $lapack_algtype ),
469463 svd_compact! (A, USVᴴ, $ algtype (; driver = LAPACK (), alg. kwargs... ))
470464 )
471465 Base. @deprecate (
472- svd_full! (A, USVᴴ, alg:: $algtype ),
466+ svd_full! (A, USVᴴ, alg:: $lapack_algtype ),
473467 svd_full! (A, USVᴴ, $ algtype (; driver = LAPACK (), alg. kwargs... ))
474468 )
475469 Base. @deprecate (
476- svd_vals! (A, S, alg:: $algtype ),
470+ svd_vals! (A, S, alg:: $lapack_algtype ),
477471 svd_vals! (A, S, $ algtype (; driver = LAPACK (), alg. kwargs... ))
478472 )
479473 end
0 commit comments