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