@@ -49,17 +49,11 @@ function reinit_cache!(cache::LinearSolverCache, args...; kwargs...)
4949 cache. nfactors = 0
5050end
5151
52- @inline function LinearSolverCache (alg, linsolve, A:: Number , b:: Number , u; kwargs... )
53- return LinearSolverCache (nothing , nothing , A, b, nothing , 0 , 0 )
54- end
55- @inline function LinearSolverCache (alg, :: Nothing , A:: SMatrix , b, u; kwargs... )
56- # Default handling for SArrays caching in LinearSolve is not the best. Override it here
57- return LinearSolverCache (nothing , nothing , A, b, nothing , 0 , 0 )
58- end
59- @inline function LinearSolverCache (alg, linsolve, A:: Diagonal , b, u; kwargs... )
60- return LinearSolverCache (nothing , nothing , A, b, nothing , 0 , 0 )
61- end
6252function LinearSolverCache (alg, linsolve, A, b, u; kwargs... )
53+ if (A isa Number && b isa Number) || (linsolve === nothing && A isa SMatrix) ||
54+ (A isa Diagonal) || (linsolve isa typeof (\ ))
55+ return LinearSolverCache (nothing , nothing , A, b, nothing , 0 , 0 )
56+ end
6357 @bb b_ = copy (b)
6458 @bb u_ = copy (u)
6559 linprob = LinearProblem (A, b_; u0 = u_, kwargs... )
193187@inline __needs_square_A (:: Nothing , :: Number ) = false
194188@inline __needs_square_A (:: Nothing , _) = false
195189@inline __needs_square_A (linsolve, _) = LinearSolve. needs_square_A (linsolve)
190+ @inline __needs_square_A (:: typeof (\ ), _) = false
191+ @inline __needs_square_A (:: typeof (\ ), :: Number ) = false # Ambiguity Fix
0 commit comments