chiark / gitweb /
recommend building in a subdir
[nlopt.git] / direct / direct-internal.h
1 #ifndef DIRECT_INTERNAL_H
2 #define DIRECT_INTERNAL_H
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <math.h>
7
8 #include "direct.h"
9 #include "nlopt-util.h"
10
11 #ifdef __cplusplus
12 extern "C"
13 {
14 #endif /* __cplusplus */
15
16 typedef int integer;
17 typedef double doublereal;
18 typedef direct_objective_func fp;
19
20 #define ASRT(c) if (!(c)) { fprintf(stderr, "DIRECT assertion failure at " __FILE__ ":%d -- " #c "\n", __LINE__); exit(EXIT_FAILURE); }
21
22 #define MIN(a,b) ((a) < (b) ? (a) : (b))
23 #define MAX(a,b) ((a) > (b) ? (a) : (b))
24
25 /* DIRsubrout.c */
26
27 extern void direct_dirheader_(
28      FILE *logfile, integer *version,
29      doublereal *x, integer *n, doublereal *eps, integer *maxf, integer *
30      maxt, doublereal *l, doublereal *u, integer *algmethod, integer *
31      maxfunc, const integer *maxdeep, doublereal *fglobal, doublereal *fglper,
32      integer *ierror, doublereal *epsfix, integer *iepschange, doublereal *
33      volper, doublereal *sigmaper);
34 extern void direct_dirinit_(
35      doublereal *f, fp fcn, doublereal *c__,
36      integer *length, integer *actdeep, integer *point, integer *anchor,
37      integer *free, FILE *logfile, integer *arrayi,
38      integer *maxi, integer *list2, doublereal *w, doublereal *x,
39      doublereal *l, doublereal *u, doublereal *minf, integer *minpos,
40      doublereal *thirds, doublereal *levels, integer *maxfunc, const integer *
41      maxdeep, integer *n, integer *maxor, doublereal *fmax, integer *
42      ifeasiblef, integer *iinfeasible, integer *ierror, void *fcndata,
43      integer jones, double starttime, double maxtime, int *force_stop);
44 extern void direct_dirinitlist_(
45      integer *anchor, integer *free, integer *
46      point, doublereal *f, integer *maxfunc, const integer *maxdeep);
47 extern void direct_dirpreprc_(doublereal *u, doublereal *l, integer *n, 
48                               doublereal *xs1, doublereal *xs2, integer *oops);
49 extern void direct_dirchoose_(
50      integer *anchor, integer *s, integer *actdeep,
51      doublereal *f, doublereal *minf, doublereal epsrel, doublereal epsabs, doublereal *thirds,
52      integer *maxpos, integer *length, integer *maxfunc, const integer *maxdeep,
53      const integer *maxdiv, integer *n, FILE *logfile,
54      integer *cheat, doublereal *kmax, integer *ifeasiblef, integer jones);
55 extern void direct_dirdoubleinsert_(
56      integer *anchor, integer *s, integer *maxpos, integer *point, 
57      doublereal *f, const integer *maxdeep, integer *maxfunc, 
58      const integer *maxdiv, integer *ierror);
59 extern integer direct_dirgetmaxdeep_(integer *pos, integer *length, integer *maxfunc,
60                               integer *n);
61 extern void direct_dirget_i__(
62      integer *length, integer *pos, integer *arrayi, integer *maxi, 
63      integer *n, integer *maxfunc);
64 extern void direct_dirsamplepoints_(
65      doublereal *c__, integer *arrayi, 
66      doublereal *delta, integer *sample, integer *start, integer *length, 
67      FILE *logfile, doublereal *f, integer *free, 
68      integer *maxi, integer *point, doublereal *x, doublereal *l,
69      doublereal *minf, integer *minpos, doublereal *u, integer *n, 
70      integer *maxfunc, const integer *maxdeep, integer *oops);
71 extern void direct_dirdivide_(
72      integer *new__, integer *currentlength, 
73      integer *length, integer *point, integer *arrayi, integer *sample, 
74      integer *list2, doublereal *w, integer *maxi, doublereal *f, 
75      integer *maxfunc, const integer *maxdeep, integer *n);
76 extern void direct_dirinsertlist_(
77      integer *new__, integer *anchor, integer *point, doublereal *f, 
78      integer *maxi, integer *length, integer *maxfunc, 
79      const integer *maxdeep, integer *n, integer *samp, integer jones);
80 extern void direct_dirreplaceinf_(
81      integer *free, integer *freeold, 
82      doublereal *f, doublereal *c__, doublereal *thirds, integer *length, 
83      integer *anchor, integer *point, doublereal *c1, doublereal *c2, 
84      integer *maxfunc, const integer *maxdeep, integer *maxdim, integer *n, 
85      FILE *logfile, doublereal *fmax, integer jones);
86 extern void direct_dirsummary_(
87      FILE *logfile, doublereal *x, doublereal *l, doublereal *u, 
88      integer *n, doublereal *minf, doublereal *fglobal, 
89      integer *numfunc, integer *ierror);
90 extern integer direct_dirgetlevel_(
91      integer *pos, integer *length, 
92      integer *maxfunc, integer *n, integer jones);
93 extern void direct_dirinfcn_(
94      fp fcn, doublereal *x, doublereal *c1, 
95      doublereal *c2, integer *n, doublereal *f, integer *flag__, 
96      void *fcn_data);
97
98 /* DIRserial.c / DIRparallel.c */
99 extern void direct_dirsamplef_(
100      doublereal *c__, integer *arrayi, doublereal 
101      *delta, integer *sample, integer *new__, integer *length, 
102      FILE *logfile, doublereal *f, integer *free, integer *maxi, 
103      integer *point, fp fcn, doublereal *x, doublereal *l, doublereal *
104      minf, integer *minpos, doublereal *u, integer *n, integer *maxfunc, 
105      const integer *maxdeep, integer *oops, doublereal *fmax, integer *
106      ifeasiblef, integer *iinfesiblef, void *fcn_data, int *force_stop);
107
108 /* DIRect.c */
109 extern void direct_direct_(
110      fp fcn, doublereal *x, integer *n, doublereal *eps, doublereal epsabs,
111      integer *maxf, integer *maxt, 
112      double starttime, double maxtime, 
113      int *force_stop, doublereal *minf, doublereal *l, 
114      doublereal *u, integer *algmethod, integer *ierror, FILE *logfile, 
115      doublereal *fglobal, doublereal *fglper, doublereal *volper, 
116      doublereal *sigmaper, void *fcn_data);
117
118 #ifdef __cplusplus
119 }  /* extern "C" */
120 #endif /* __cplusplus */
121
122 #endif /* DIRECT_INTERNAL_H */