From 5e239e376d87c234ea9d063db589d243d5327185 Mon Sep 17 00:00:00 2001 From: Edmund Lam Date: Fri, 9 Oct 2026 09:58:52 -0700 Subject: [PATCH 1/3] prevent fp error from accepting bad steps --- src/jaxls/_py310/_solvers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jaxls/_py310/_solvers.py b/src/jaxls/_py310/_solvers.py index 4fc5983..a44845b 100644 --- a/src/jaxls/_py310/_solvers.py +++ b/src/jaxls/_py310/_solvers.py @@ -537,7 +537,7 @@ def lm_inner_step( step_quality = actual_reduction / predicted_reduction accepted = ~jnp.isnan(proposed_cost_info.cost_total) & ( step_quality >= self.trust_region.step_quality_min - ) + ) & predicted_reduction > 0 iterations = inner_state.summary.iterations + 1 term_criteria, term_deltas = self.termination._check_convergence( From 394c251d4c86856f835d3acb4403b5d3a6bc68af Mon Sep 17 00:00:00 2001 From: Edmund Lam Date: Fri, 9 Oct 2026 10:24:07 -0700 Subject: [PATCH 2/3] parens --- src/jaxls/_py310/_solvers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jaxls/_py310/_solvers.py b/src/jaxls/_py310/_solvers.py index a44845b..797de0d 100644 --- a/src/jaxls/_py310/_solvers.py +++ b/src/jaxls/_py310/_solvers.py @@ -537,7 +537,7 @@ def lm_inner_step( step_quality = actual_reduction / predicted_reduction accepted = ~jnp.isnan(proposed_cost_info.cost_total) & ( step_quality >= self.trust_region.step_quality_min - ) & predicted_reduction > 0 + ) & (predicted_reduction > 0) iterations = inner_state.summary.iterations + 1 term_criteria, term_deltas = self.termination._check_convergence( From bfa6ae4da60b0140bc335bc64b51e934656c8bad Mon Sep 17 00:00:00 2001 From: Edmund Lam Date: Fri, 9 Oct 2026 12:06:44 -0700 Subject: [PATCH 3/3] update non-py310 --- src/jaxls/_solvers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jaxls/_solvers.py b/src/jaxls/_solvers.py index 70ca8c9..454dae3 100644 --- a/src/jaxls/_solvers.py +++ b/src/jaxls/_solvers.py @@ -821,7 +821,7 @@ def lm_inner_step( step_quality = actual_reduction / predicted_reduction accepted = ~jnp.isnan(proposed_cost_info.cost_total) & ( step_quality >= self.trust_region.step_quality_min - ) + ) & (predicted_reduction > 0) iterations = inner_state.summary.iterations + 1 term_criteria, term_deltas = self.termination._check_convergence(