@@ -200,13 +200,37 @@ end
200200init_cacheval (alg:: GenericFactorization{typeof(lu)} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
201201init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
202202
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)
203205init_cacheval (alg:: GenericFactorization{typeof(lu)} , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
204206init_cacheval (alg:: GenericFactorization{typeof(lu)} , A:: Tridiagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
205207init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
206208init_cacheval (alg:: GenericFactorization{typeof(lu!)} , A:: Tridiagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface. lu_instance (A)
207209
208210init_cacheval (alg:: GenericFactorization , A:: Diagonal , b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = Diagonal (inv .(A. diag))
209211init_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.
210234function init_cacheval (alg:: Union{QRFactorization,SVDFactorization,GenericFactorization} , A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
211235 newA = copy (A)
212236 fill! (newA,true )
0 commit comments