diff options
author | Anton Khirnov <anton@khirnov.net> | 2018-02-09 15:01:25 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2018-02-09 15:06:35 +0100 |
commit | d9a2c203ca924b6bb5dc30d109d774b1dd2ef633 (patch) | |
tree | d987dfd02795949d4c405ceae80dd67e1c59c392 | |
parent | 9c53354d9af808f36e668579a54a45af4ed8f722 (diff) |
nlsolve: do not add the delta after we declare convergence
Also, log the lowest-order coeff for all the variables
-rw-r--r-- | nlsolve.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -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"); |