From f286d8a93af059e7209c60f3e29c0422b55747dd Mon Sep 17 00:00:00 2001 From: BenjaminPINEAU Date: Fri, 1 May 2026 10:08:37 -0400 Subject: [PATCH 1/3] Set default stopping tolerances to epsilon^1/3 --- src/AL_alg.jl | 2 +- src/LMTR_alg.jl | 6 +++--- src/LM_alg.jl | 4 ++-- src/R2DH.jl | 4 ++-- src/R2N.jl | 4 ++-- src/R2_alg.jl | 4 ++-- src/TRDH_alg.jl | 4 ++-- src/TR_alg.jl | 6 +++--- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/AL_alg.jl b/src/AL_alg.jl index c4cc8ec5..62dfe933 100644 --- a/src/AL_alg.jl +++ b/src/AL_alg.jl @@ -209,7 +209,7 @@ function SolverCore.solve!( callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, y::V = reg_nlp.model.meta.y0, - atol::T = √eps(T), + atol::T = eps(T)^(1 / 3), verbose::Int = 0, max_iter::Int = 10000, max_time::Float64 = 30.0, diff --git a/src/LMTR_alg.jl b/src/LMTR_alg.jl index 26187432..a3d59eec 100644 --- a/src/LMTR_alg.jl +++ b/src/LMTR_alg.jl @@ -190,9 +190,9 @@ function SolverCore.solve!( stats::GenericExecutionStats{T, V}; callback = (args...) -> nothing, x::V = reg_nls.model.meta.x0, - atol::T = √eps(T), - sub_atol::T = atol, - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + sub_atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = zero(T), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/LM_alg.jl b/src/LM_alg.jl index ef514b44..1163f566 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -190,8 +190,8 @@ function SolverCore.solve!( callback = (args...) -> nothing, x::V = reg_nls.model.meta.x0, nonlinear::Bool = true, - atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = zero(T), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/R2DH.jl b/src/R2DH.jl index de93ffcb..4a0861fe 100644 --- a/src/R2DH.jl +++ b/src/R2DH.jl @@ -223,8 +223,8 @@ function SolverCore.solve!( stats::GenericExecutionStats{T, V}; callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, - atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/R2N.jl b/src/R2N.jl index acb05d94..59f07009 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -216,8 +216,8 @@ function SolverCore.solve!( qn_update_y!::Function = _qn_grad_update_y!, qn_copy!::Function = _qn_grad_copy!, x::V = reg_nlp.model.meta.x0, - atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/R2_alg.jl b/src/R2_alg.jl index 08b058d5..96b99f34 100644 --- a/src/R2_alg.jl +++ b/src/R2_alg.jl @@ -313,8 +313,8 @@ function SolverCore.solve!( stats::GenericExecutionStats{T, V}; callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, - atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/TRDH_alg.jl b/src/TRDH_alg.jl index 6a76ce0c..5b116ad4 100644 --- a/src/TRDH_alg.jl +++ b/src/TRDH_alg.jl @@ -237,8 +237,8 @@ function SolverCore.solve!( stats::GenericExecutionStats{T, V}; callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, - atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0, max_iter::Int = 10000, diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 7ebec003..8699c55f 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -211,9 +211,9 @@ function SolverCore.solve!( stats::GenericExecutionStats{T, V}; callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, - atol::T = √eps(T), - sub_atol::T = √eps(T), - rtol::T = √eps(T), + atol::T = eps(T)^(1 / 3), + sub_atol::T = eps(T)^(1 / 3), + rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0, subsolver_logger::Logging.AbstractLogger = Logging.SimpleLogger(), From 04b06721df5e7da9099882fb9a25ce4f1ee27940 Mon Sep 17 00:00:00 2001 From: Benjamin Pineau Date: Tue, 5 May 2026 11:27:57 -0400 Subject: [PATCH 2/3] Update src/LMTR_alg.jl Co-authored-by: Maxence Gollier <134112149+MaxenceGollier@users.noreply.github.com> --- src/LMTR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/LMTR_alg.jl b/src/LMTR_alg.jl index a3d59eec..dd063cb0 100644 --- a/src/LMTR_alg.jl +++ b/src/LMTR_alg.jl @@ -191,7 +191,7 @@ function SolverCore.solve!( callback = (args...) -> nothing, x::V = reg_nls.model.meta.x0, atol::T = eps(T)^(1 / 3), - sub_atol::T = eps(T)^(1 / 3), + sub_atol::T = atol, rtol::T = eps(T)^(1 / 3), neg_tol::T = zero(T), verbose::Int = 0, From 5eedfc9c7125d38300430c789df61c3236a183a1 Mon Sep 17 00:00:00 2001 From: Benjamin Pineau Date: Tue, 5 May 2026 11:28:08 -0400 Subject: [PATCH 3/3] Update src/TR_alg.jl Co-authored-by: Maxence Gollier <134112149+MaxenceGollier@users.noreply.github.com> --- src/TR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 8699c55f..d92dca9a 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -212,7 +212,7 @@ function SolverCore.solve!( callback = (args...) -> nothing, x::V = reg_nlp.model.meta.x0, atol::T = eps(T)^(1 / 3), - sub_atol::T = eps(T)^(1 / 3), + sub_atol::T = atol, rtol::T = eps(T)^(1 / 3), neg_tol::T = eps(T)^(1 / 4), verbose::Int = 0,