Skip to content

Commit 3a0b031

Browse files
Preserve aliased matrix in fallback solve
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
1 parent 45832fa commit 3a0b031

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

lib/NonlinearSolveBase/src/utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ function linsolve_identity!!(workspace, A::AbstractMatrix)
311311
return LinearAlgebra.ldiv!(LinearAlgebra.LowerTriangular(A_solve), ws.rhs)
312312
end
313313
end
314-
return ws.lincache(; A, b = ws.rhs).u
314+
return ws.lincache(; A = A_solve, b = ws.rhs).u
315315
end
316316

317317
function initial_jacobian_scaling_alpha(α, u, fu, ::Any)

lib/NonlinearSolveBase/test/linsolve_workspace.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ end
4040
expected_reset = Matrix{Float64}(I, 3, 3)
4141
ldiv!(LowerTriangular(A_reset), expected_reset)
4242
@test Utils.linsolve_identity!!(workspace, A_reset) == expected_reset
43+
44+
A_general = [2.0 1.0 0.0; 0.0 3.0 1.0; 1.0 0.0 4.0]
45+
copyto!(workspace.rhs, A_general)
46+
@test Utils.linsolve_identity!!(workspace, workspace.rhs) inv(A_general)
4347
end
4448

4549
@testset "singular input takes the pivoted-QR rescue" begin

0 commit comments

Comments
 (0)