if (!rb_tree_insert(&d.pts, (rb_key) p)) {
free(p); ret = NLOPT_OUT_OF_MEMORY;
}
- if (nlopt_stop_evals(stop)) ret = NLOPT_MAXEVAL_REACHED;
+ if (nlopt_stop_forced(stop)) ret = NLOPT_FORCE_STOP;
+ else if (nlopt_stop_evals(stop)) ret = NLOPT_MAXEVAL_REACHED;
else if (nlopt_stop_time(stop)) ret = NLOPT_MAXTIME_REACHED;
else if (p->f < stop->minf_max) ret = NLOPT_MINF_MAX_REACHED;
if (!rb_tree_insert(&d.pts, (rb_key) p)) {
free(p); ret = NLOPT_OUT_OF_MEMORY;
}
- if (nlopt_stop_evals(stop)) ret = NLOPT_MAXEVAL_REACHED;
+ if (nlopt_stop_forced(stop)) ret = NLOPT_FORCE_STOP;
+ else if (nlopt_stop_evals(stop)) ret = NLOPT_MAXEVAL_REACHED;
else if (nlopt_stop_time(stop)) ret = NLOPT_MAXTIME_REACHED;
else if (p->f < stop->minf_max) ret = NLOPT_MINF_MAX_REACHED;
else {
double *lm;
double t = nlopt_seconds();
+ if (nlopt_stop_forced(stop)) {
+ ret = NLOPT_FORCE_STOP; break;
+ }
if (nlopt_stop_evals(stop)) {
ret = NLOPT_MAXEVAL_REACHED; break;
}
if (!rb_tree_insert(&d.lms, lm)) {
free(lm); ret = NLOPT_OUT_OF_MEMORY;
}
+ else if (nlopt_stop_forced(stop)) ret = NLOPT_FORCE_STOP;
else if (*lm < stop->minf_max)
ret = NLOPT_MINF_MAX_REACHED;
else if (nlopt_stop_evals(stop))