From d9a2c203ca924b6bb5dc30d109d774b1dd2ef633 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 9 Feb 2018 15:01:25 +0100 Subject: nlsolve: do not add the delta after we declare convergence Also, log the lowest-order coeff for all the variables --- nlsolve.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'nlsolve.c') diff --git a/nlsolve.c b/nlsolve.c index cdc403e..960a8e9 100644 --- a/nlsolve.c +++ b/nlsolve.c @@ -203,7 +203,6 @@ int tdi_nlsolve_solve(NLSolveContext *ctx, NLEqCallback eq_eval, if (ret < 0) return ret; - cblas_daxpy(s->solve_order, 1.0, s->delta, 1, coeffs, 1); max_idx = cblas_idamax(s->solve_order, s->delta, 1); if (fabs(s->delta[max_idx]) < ctx->atol) { tdi_log(&ctx->logger, 2, "Converged on iteration %d: max(delta) %g, tolerance %g\n", @@ -212,8 +211,14 @@ int tdi_nlsolve_solve(NLSolveContext *ctx, NLEqCallback eq_eval, goto finish; } - tdi_log(&ctx->logger, 3, "Iteration %d, max(delta) %g coeffs[0] %g\n", - it, s->delta[max_idx], coeffs[0]); + cblas_daxpy(s->solve_order, 1.0, s->delta, 1, coeffs, 1); + + tdi_log(&ctx->logger, 3, "Iteration %d, max(delta) %g ", + it, s->delta[max_idx]); + for (int i = 0; i < s->nb_vars; i++) + tdi_log(&ctx->logger, 3, "coeffs%d[0] %g ", + i, coeffs[s->vars[i].coeffs_offset]); + tdi_log(&ctx->logger, 3, "\n"); } tdi_log(&ctx->logger, 0, "The solver did not converge\n"); -- cgit v1.2.3