diff --git a/nonlin.cpp b/nonlin.cpp index cfe4d9f10b2eb5e47b977477f93a5b00213aa497..084045dc2e9e6f83abb0b0bb1a2abddc9bf16385 100644 --- a/nonlin.cpp +++ b/nonlin.cpp @@ -622,6 +622,7 @@ NonlinOut varmet(const NonlinParam& p, const NonlinCF& cfo) else if (status == LM_LAMBDA_NILL) { // This means we might be heading uphill and should restart if (p.NextRestart()) { // If we have spare restarts p.SetCF(p.CF()); // Another copy of old value + p.SetPar(p.Par()); // Another copy of old values iH.reset(); // Back to being unity matrix pdir = -grad; continue; @@ -634,7 +635,10 @@ NonlinOut varmet(const NonlinParam& p, const NonlinCF& cfo) ColumnVector dpar = newpar - p.Par(); p.SetPar(newpar); p.SetCF(newcf); - if (zero_par_step_conv(dpar,p.Par(),p.FractionalParameterTolerance())) {p.SetStatus(NL_PARCONV); return(p.Status());} + // cout << "p.FractionalParameterTolerance() = " << p.FractionalParameterTolerance() << endl; + // cout << "P.Par() = " << p.Par() << endl; + // cout << "dpar = " << dpar << endl; + if (zero_par_step_conv(p.Par(),dpar,p.FractionalParameterTolerance())) {p.SetStatus(NL_PARCONV); return(p.Status());} // Get gradient at new point ColumnVector newgrad = sf*cfo.grad(p.Par()); // Test for convergence based on "zero" gradient