From 878c9a2683b01927a95bd6074cf807f63874b68e Mon Sep 17 00:00:00 2001 From: Chih-Jen Lin Date: Mon, 17 Dec 2018 19:10:11 +0800 Subject: [PATCH] set a max_cg_iter for the CG while loop. --- tron.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tron.cpp b/tron.cpp index f149553..c9292ca 100644 --- a/tron.cpp +++ b/tron.cpp @@ -217,8 +217,9 @@ int TRON::trpcg(double delta, double *g, double *M, double *s, double *r, bool * zTr = ddot_(&n, z, &inc, r, &inc); cgtol = eps_cg*sqrt(zTr); int cg_iter = 0; + int max_cg_iter = max(n, 5); - while (1) + while (cg_iter < max_cg_iter) { if (sqrt(zTr) <= cgtol) break; @@ -262,6 +263,9 @@ int TRON::trpcg(double delta, double *g, double *M, double *s, double *r, bool * zTr = znewTrnew; } + if (cg_iter == max_cg_iter) + info("WARNING: reaching maximal number of CG steps\n"); + delete[] d; delete[] Hd; delete[] z; -- 2.50.1