7 #endif /* __cplusplus */
9 typedef double (*nlopt_func)(int n, const double *x,
10 double *gradient, /* NULL if not needed */
14 /* non-gradient algorithms */
15 NLOPT_GLOBAL_DIRECT = 0,
18 /* gradient-based algorithms */
22 NLOPT_NUM_ALGORITHMS /* not an algorithm, just the number of them */
25 extern const char *nlopt_algorithm_name(nlopt_algorithm a);
28 NLOPT_FAILURE = -1, /* generic failure code */
29 NLOPT_INVALID_ARGS = -2,
30 NLOPT_OUT_OF_MEMORY = -3,
32 NLOPT_SUCCESS = 1, /* generic success code */
33 NLOPT_FMIN_MAX_REACHED = 2,
34 NLOPT_FTOL_REACHED = 3,
35 NLOPT_XTOL_REACHED = 4,
36 NLOPT_MAXEVAL_REACHED = 5,
37 NLOPT_MAXTIME_REACHED = 6
40 extern nlopt_result nlopt_minimize(
41 nlopt_algorithm algorithm,
42 int n, nlopt_func f, void *f_data,
43 const double *lb, const double *ub, /* bounds */
44 double *x, /* in: initial guess, out: minimizer */
45 double *fmin, /* out: minimum */
46 double fmin_max, double ftol_rel, double ftol_abs,
47 double xtol_rel, const double *xtol_abs,
48 int maxeval, double maxtime);
52 #endif /* __cplusplus */