/* L500: */
suma += zmat[knew + jj * zmat_dim1] * zmat[k + jj * zmat_dim1];
}
+ if (nlopt_isinf(suma)) {
+ /* SGJ: detect singularity here (happend if we run
+ for too many iterations) ... is there another way to recover? */
+ rc = NLOPT_ROUNDOFF_LIMITED;
+ goto L720;
+ }
sumb = zero;
i__2 = *n;
for (j = 1; j <= i__2; ++j) {
printf("Minimum at x = [");
for (i = 0; i < func.n; ++i) printf(" %g", x[i]);
printf("]\n");
- printf("|f - minf| = %g, |f - minf| / |minf| = %e\n",
- fabs(minf - func.minf), fabs(minf - func.minf) / fabs(func.minf));
+ if (func.minf == 0)
+ printf("|f - minf| = %g\n", fabs(minf - func.minf));
+ else
+ printf("|f - minf| = %g, |f - minf| / |minf| = %e\n",
+ fabs(minf - func.minf), fabs(minf - func.minf) / fabs(func.minf));
total_err += fabs(minf - func.minf);
if (fabs(minf - func.minf) > max_err)
max_err = fabs(minf - func.minf);