@@ -200,13 +200,37 @@ end
200
200
init_cacheval (alg:: GenericFactorization{typeof(lu)} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
201
201
init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
202
202
203
+ init_cacheval (alg:: GenericFactorization{typeof(lu)} , A:: StridedMatrix{<:LinearAlgebra.BlasFloat} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
204
+ init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A:: StridedMatrix{<:LinearAlgebra.BlasFloat} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
203
205
init_cacheval (alg:: GenericFactorization{typeof(lu)} , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
204
206
init_cacheval (alg:: GenericFactorization{typeof(lu)} , A:: Tridiagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
205
207
init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
206
208
init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A:: Tridiagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
207
209
208
210
init_cacheval (alg:: GenericFactorization , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
209
211
init_cacheval (alg:: GenericFactorization , A:: Tridiagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
212
+ init_cacheval (alg:: GenericFactorization , A:: SymTridiagonal{T,V} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) where {T,V} = LinearAlgebra. LDLt {T,SymTridiagonal{T,V}} (A)
213
+
214
+ function init_cacheval (alg:: Union{GenericFactorization,GenericFactorization{typeof(bunchkaufman!)},GenericFactorization{typeof(bunchkaufman)}} ,
215
+ A:: Union{Hermitian,Symmetric} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
216
+ BunchKaufman (A. data, Array (1 : size (A,1 )), A. uplo, true , false , 0 )
217
+ end
218
+
219
+ function init_cacheval (alg:: Union{GenericFactorization,GenericFactorization{typeof(bunchkaufman!)},GenericFactorization{typeof(bunchkaufman)}} ,
220
+ A:: StridedMatrix{<:LinearAlgebra.BlasFloat} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
221
+ if eltype (A) <: Complex
222
+ return bunchkaufman! (Hermitian (A))
223
+ else
224
+ return bunchkaufman! (Symmetric (A))
225
+ end
226
+ end
227
+
228
+ function init_cacheval (alg, A:: Union{Hermitian,Symmetric} , b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
229
+ BunchKaufman (A. data, Array (1 : size (A,1 )), A. uplo, true , false , 0 )
230
+ end
231
+
232
+ # Fallback, tries to make nonsingular and just factorizes
233
+ # Try to never use it.
210
234
function init_cacheval (alg:: Union{QRFactorization,SVDFactorization,GenericFactorization} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
211
235
newA = copy (A)
212
236
fill! (newA,true )
0 commit comments