1 |
aw0a |
1 |
/* |
2 |
|
|
* External Definitions of CONOPT Subroutines |
3 |
|
|
* by Vicente Rico Ramirez |
4 |
|
|
* Created: 05/97 |
5 |
|
|
* Version: $Revision: 1.9 $ |
6 |
|
|
* Version control file: $RCSfile: conopt.h,v $ |
7 |
|
|
* Date last modified: $Date: 1998/02/26 15:57:56 $ |
8 |
|
|
* Last modified by: $Author: mthomas $ |
9 |
|
|
* |
10 |
|
|
* This file is part of the SLV solver. |
11 |
|
|
* |
12 |
|
|
* The SLV solver is free software; you can redistribute |
13 |
|
|
* it and/or modify it under the terms of the GNU General Public License as |
14 |
|
|
* published by the Free Software Foundation; either version 2 of the |
15 |
|
|
* License, or (at your option) any later version. |
16 |
|
|
* |
17 |
|
|
* The SLV solver is distributed in hope that it will be |
18 |
|
|
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 |
|
|
* General Public License for more details. |
21 |
|
|
* |
22 |
|
|
* You should have received a copy of the GNU General Public License |
23 |
|
|
* along with the program; if not, write to the Free Software Foundation, |
24 |
|
|
* Inc., 675 Mass Ave, Cambridge, MA 02139 USA. Check the file named |
25 |
|
|
* COPYING. COPYING is found in ../compiler. |
26 |
|
|
* |
27 |
|
|
*/ |
28 |
|
|
|
29 |
|
|
#ifndef conopt__already_included |
30 |
|
|
#define conopt__already_included |
31 |
|
|
|
32 |
|
|
/* |
33 |
|
|
* Macros defined because of the different convention of Fortran from C about |
34 |
|
|
* the use of an index in arrays (starting from zero or from one). |
35 |
|
|
*/ |
36 |
|
|
#define F2C(x) x - 1 |
37 |
|
|
#define C2F(x) x + 1 |
38 |
|
|
|
39 |
|
|
/* |
40 |
|
|
* Parameter required for CONOPT subroutines |
41 |
|
|
*/ |
42 |
|
|
#define NINTGR 3 |
43 |
|
|
#define MAX_INT 20000 |
44 |
|
|
#define MAX_REAL 10e300 |
45 |
|
|
|
46 |
|
|
/* |
47 |
|
|
* CONOPT data structure. |
48 |
|
|
*/ |
49 |
|
|
struct conopt_data { |
50 |
|
|
int32 n; /* number of columns */ |
51 |
|
|
int32 m; /* number of rows */ |
52 |
|
|
int32 nz; /* number of nonzeros */ |
53 |
|
|
int32 maxrow; /* number of elements in densest row */ |
54 |
|
|
int32 modsta; /* model status */ |
55 |
|
|
int32 solsta; /* solver status */ |
56 |
|
|
int32 iter; /* # of conopt iterations */ |
57 |
|
|
real64 obj; /* objective value */ |
58 |
|
|
|
59 |
|
|
real64 *work; /* work space */ |
60 |
|
|
int32 minmem; /* minimum memory suggested by conopt */ |
61 |
|
|
int32 estmem; /* estimated memory suggested by conopt */ |
62 |
|
|
int32 lwork; /* size of allocated workspace */ |
63 |
|
|
int32 nintgr; /* size of problem size vector */ |
64 |
|
|
int32 ipsz[NINTGR]; /* problem size vector */ |
65 |
|
|
|
66 |
|
|
int32 kept; /* if 1 can call warm conopt restart */ |
67 |
|
|
|
68 |
|
|
int32 optimized; /* has conopt been called? */ |
69 |
|
|
int32 maxusd; /* maximum work space used */ |
70 |
|
|
int32 curusd; /* current work space used */ |
71 |
|
|
int32 opt_count; /* count of calls to coiopt */ |
72 |
|
|
int32 progress_count; /* count of calls to coiprg */ |
73 |
|
|
}; |
74 |
|
|
|
75 |
|
|
/* |
76 |
|
|
* Structure of function pointers, so that a particular solver can define |
77 |
|
|
* its user-defined CONOPT subroutines independently |
78 |
|
|
*/ |
79 |
|
|
struct conopt_function_pointers { |
80 |
|
|
void (*coirms_ptr)(); |
81 |
|
|
void (*coifbl_ptr)(); |
82 |
|
|
void (*coifde_ptr)(); |
83 |
|
|
void (*coista_ptr)(); |
84 |
|
|
void (*coirs_ptr)(); |
85 |
|
|
void (*coiusz_ptr)(); |
86 |
|
|
void (*coiopt_ptr)(); |
87 |
|
|
void (*coipsz_ptr)(); |
88 |
|
|
void (*coimsg_ptr)(); |
89 |
|
|
void (*coiscr_ptr)(); |
90 |
|
|
void (*coiec_ptr)(); |
91 |
|
|
void (*coier_ptr)(); |
92 |
|
|
void (*coienz_ptr)(); |
93 |
|
|
void (*coiprg_ptr)(); |
94 |
|
|
void (*coiorc_ptr)(); |
95 |
|
|
}; |
96 |
|
|
|
97 |
|
|
/* |
98 |
|
|
* Pointer to the previous structure |
99 |
|
|
*/ |
100 |
|
|
typedef struct conopt_function_pointers *conopt_pointers; |
101 |
|
|
|
102 |
|
|
|
103 |
|
|
/* |
104 |
|
|
* is CONOPT available ? |
105 |
|
|
*/ |
106 |
|
|
#if (defined(STATIC_CONOPT) || defined(DYNAMIC_CONOPT)) |
107 |
|
|
#define CONOPT_ACTIVE TRUE |
108 |
|
|
#else /* defined(STATIC_CONOPT) */ |
109 |
|
|
#define CONOPT_ACTIVE FALSE |
110 |
|
|
#endif /* defined(STATIC_CONOPT) */ |
111 |
|
|
|
112 |
|
|
|
113 |
|
|
#if CONOPT_ACTIVE /* code used if CONOPT is available */ |
114 |
|
|
/* |
115 |
|
|
* Take care of fortran underbar madness |
116 |
|
|
*/ |
117 |
|
|
#ifdef sun |
118 |
|
|
#define FORTRAN_UNDERBARS |
119 |
|
|
#endif /* sun */ |
120 |
|
|
|
121 |
|
|
#ifdef __alpha |
122 |
|
|
#define FORTRAN_UNDERBARS |
123 |
|
|
#endif /* __alpha */ |
124 |
|
|
|
125 |
|
|
#ifdef __sgi |
126 |
|
|
#define FORTRAN_UNDERBARS |
127 |
|
|
#endif /* __sgi */ |
128 |
|
|
|
129 |
|
|
#ifdef __WIN32__ |
130 |
|
|
/* dec visual fortran */ |
131 |
|
|
#define COICSM COICSM |
132 |
|
|
#define COIMEM COIMEM |
133 |
|
|
#define COIRMS COIRMS |
134 |
|
|
#define COIFBL COIFBL |
135 |
|
|
#define COIFDE COIFDE |
136 |
|
|
#define COISTA COISTA |
137 |
|
|
#define COIRS COIRS |
138 |
|
|
#define COIUSZ COIUSZ |
139 |
|
|
#define COIOPT COIOPT |
140 |
|
|
#define COIPSZ COIPSZ |
141 |
|
|
#define COIMSG COIMSG |
142 |
|
|
#define COISCR COISCR |
143 |
|
|
#define COIEC COIEC |
144 |
|
|
#define COIER COIER |
145 |
|
|
#define COIENZ COIENZ |
146 |
|
|
#define COIPRG COIPRG |
147 |
|
|
#define COIORC COIORC |
148 |
|
|
#else |
149 |
|
|
/* unixisms */ |
150 |
|
|
#ifdef FORTRAN_UNDERBARS |
151 |
|
|
#define COICSM coicsm_ |
152 |
|
|
#define COICRM coicrm_ |
153 |
|
|
#define COIMEM coimem_ |
154 |
|
|
#define COIRMS coirms_ |
155 |
|
|
#define COIFBL coifbl_ |
156 |
|
|
#define COIFDE coifde_ |
157 |
|
|
#define COISTA coista_ |
158 |
|
|
#define COIRS coirs_ |
159 |
|
|
#define COIUSZ coiusz_ |
160 |
|
|
#define COIOPT coiopt_ |
161 |
|
|
#define COIPSZ coipsz_ |
162 |
|
|
#define COIMSG coimsg_ |
163 |
|
|
#define COISCR coiscr_ |
164 |
|
|
#define COIEC coiec_ |
165 |
|
|
#define COIER coier_ |
166 |
|
|
#define COIENZ coienz_ |
167 |
|
|
#define COIPRG coiprg_ |
168 |
|
|
#define COIORC coiorc_ |
169 |
|
|
#else |
170 |
|
|
#define COICSM coicsm |
171 |
|
|
#define COICRM coicrm |
172 |
|
|
#define COIMEM coimem |
173 |
|
|
#define COIRMS coirms |
174 |
|
|
#define COIFBL coifbl |
175 |
|
|
#define COIFDE coifde |
176 |
|
|
#define COISTA coista |
177 |
|
|
#define COIRS coirs |
178 |
|
|
#define COIUSZ coiusz |
179 |
|
|
#define COIOPT coiopt |
180 |
|
|
#define COIPSZ coipsz |
181 |
|
|
#define COIMSG coimsg |
182 |
|
|
#define COISCR coiscr |
183 |
|
|
#define COIEC coiec |
184 |
|
|
#define COIER coier |
185 |
|
|
#define COIENZ coienz |
186 |
|
|
#define COIPRG coiprg |
187 |
|
|
#define COIORC coiorc |
188 |
|
|
#endif /* FORTRAN_UNDERBARS */ |
189 |
|
|
#endif /* !WIN */ |
190 |
|
|
|
191 |
|
|
|
192 |
|
|
/* |
193 |
|
|
* Optimization subroutines for CONOPT |
194 |
|
|
* --------------------------------- |
195 |
|
|
*/ |
196 |
|
|
|
197 |
|
|
extern void COIRMS(real64 *, real64 *, real64 *, int32 *, int32 *, real64 *, |
198 |
|
|
real64 *, int32 *, int32 *, int32 *, real64 *, int32 *, |
199 |
|
|
int32 *, int32 *, int32 *, int32 *, real64 *); |
200 |
|
|
/* |
201 |
|
|
* COIRMS Based on the information provided in Coispz, CONOPT will |
202 |
|
|
* allocate the number of vectors into which the user can define |
203 |
|
|
* the details of the model. The details of the model are defined |
204 |
|
|
* here. |
205 |
|
|
* |
206 |
|
|
* COIRMS(lower, curr, upper, vsta, type,rhs, fv, esta, colsta, |
207 |
|
|
* rowno, value, nlflag, n, m, n1, nz, usrmem) |
208 |
|
|
* |
209 |
|
|
* lower - lower bounds on the variables |
210 |
|
|
* curr - intial values of the variables |
211 |
|
|
* upper - upper bounds on the variables |
212 |
|
|
* vsta - initial status of the variable(o nonbasic, 1 basic) |
213 |
|
|
* type - types of equations (0 equality,1 greater,2 less) |
214 |
|
|
* rhs - values of the right hand sides |
215 |
|
|
* fv - sum of the nonlinear terms in the initial point |
216 |
|
|
* esta - initial status of the slack in the constraint (nonbasic,basic) |
217 |
|
|
* colsta- start of column pointers |
218 |
|
|
* rowno - row or equation numbers of the nonzeros |
219 |
|
|
* value - values of the jacobian elements |
220 |
|
|
* nlflag- nonlinearity flags(0 nonzero constant,1 varying) |
221 |
|
|
* n - number of variables |
222 |
|
|
* m - number of constraints |
223 |
|
|
* n1 - n+1 |
224 |
|
|
* nz - number of jacobian elements |
225 |
|
|
* usrmem- user memory defined by conopt |
226 |
|
|
*/ |
227 |
|
|
|
228 |
|
|
|
229 |
|
|
extern void COIFBL(real64 *, real64 *, int32 *, int32 *, int32 *, int32 *, |
230 |
|
|
real64 *, int32 *, int32 *, int32 *, int32 *, int32 *, |
231 |
|
|
int32 *, int32 *, int32 *, int32 *, int32 *, int32 *, |
232 |
|
|
int32 *, int32 *, int32 *, real64 *); |
233 |
|
|
/* |
234 |
|
|
* COIFBL Defines the nonlinearities of the model by returning |
235 |
|
|
* numerical values. It works on a block of rows during each call. |
236 |
|
|
* COIFBL( x, g, otn, nto, from, to, jac, stcl, rnum, cnum, nl, strw, |
237 |
|
|
* llen, indx, mode, errcnt, n, m, n1, m1, nz, usrmem) |
238 |
|
|
* |
239 |
|
|
* x - punt of evaluation provided by conopt |
240 |
|
|
* g - vector of function values |
241 |
|
|
* otn - old to new permutation vector |
242 |
|
|
* nto - new to old permutation vector |
243 |
|
|
* from - range in permutation |
244 |
|
|
* to - range in permutation |
245 |
|
|
* jac - vector of jacobian values. |
246 |
|
|
* The following are vectors defining the jacobian structure |
247 |
|
|
* stcl - start of column pointers |
248 |
|
|
* rnum - row numbers |
249 |
|
|
* cnum - column numbers |
250 |
|
|
* nl - nonlinearity flags |
251 |
|
|
* strw - start row pointers |
252 |
|
|
* llen - count of linear jacobian elements |
253 |
|
|
* indx - pointers from the row-wise representation |
254 |
|
|
* mode - indicator of mode of evaluation |
255 |
|
|
* errcnt- number of function evaluation errors |
256 |
|
|
* n - umber of variables |
257 |
|
|
* m - number of constraints |
258 |
|
|
* n1 - n+1 |
259 |
|
|
* m1 - m+1 |
260 |
|
|
* nz - number of jacobian elements |
261 |
|
|
* usrmem- user memory defined by conopt |
262 |
|
|
*/ |
263 |
|
|
|
264 |
|
|
|
265 |
|
|
extern void COIFDE(real64 *, real64 *, real64 *, int32 *, int32 *, int32 *, |
266 |
|
|
int32 *, int32 *, int32 *, int32 *, real64 *); |
267 |
|
|
/* |
268 |
|
|
* COIFDE Defines the nonlinearities of the model by returning |
269 |
|
|
* numerical values. It works on one row or equation at a time |
270 |
|
|
* COIFDE(x, g, jac, rowno, jcnm, mode, errcnt, newpt, n, nj, usrmem) |
271 |
|
|
* |
272 |
|
|
* x - punt of evaluation provided by conopt |
273 |
|
|
* g - function value |
274 |
|
|
* jac - jacobian values |
275 |
|
|
* rowno - number of the row for which nonlinearities will be eval |
276 |
|
|
* jcnm - list of column number fon the NL nonzeros |
277 |
|
|
* mode - indicator of mode of evaluation |
278 |
|
|
* errcnt - sum of number of func evaluation errors thus far |
279 |
|
|
* newpt - new point indicator |
280 |
|
|
* nj - number of nonlinear nonzero jacobian elements |
281 |
|
|
* n - number of variables |
282 |
|
|
* usrmem - user memory |
283 |
|
|
*/ |
284 |
|
|
|
285 |
|
|
|
286 |
|
|
extern void COISTA(int32 *, int32 *, int32 *, real64 *, real64 *); |
287 |
|
|
/* |
288 |
|
|
* COISTA Pass the solution from CONOPT to the modeler. It returns |
289 |
|
|
* completion status |
290 |
|
|
* COISTA(modsta, solsts, iter, objval, usrmem) |
291 |
|
|
* |
292 |
|
|
* modsta - model status |
293 |
|
|
* solsta - solver status |
294 |
|
|
* iter - number of iterations |
295 |
|
|
* objval - objective value |
296 |
|
|
* usrmem - user memory |
297 |
|
|
*/ |
298 |
|
|
|
299 |
|
|
|
300 |
|
|
extern void COIRS(real64 *, real64 *, int32 *, int32 *, real64 *, real64 *, |
301 |
|
|
int32 *, int32 *, int32 *, int32 *, real64 *); |
302 |
|
|
/* |
303 |
|
|
* COIRS passes the solution from CONOPT to the modeler. It returns |
304 |
|
|
* solution values |
305 |
|
|
* COIRS(val, xmar, xbas, xsta, yval, ymar, ybas, ysta, n, m, usrmem) |
306 |
|
|
* |
307 |
|
|
* xval - the solution values of the variables |
308 |
|
|
* xmar - corresponding marginal values |
309 |
|
|
* xbas - basis indicator for column (at bound, basic, nonbasic) |
310 |
|
|
* xsta - status of column (normal, nonoptimal, infeasible,unbounded) |
311 |
|
|
* yval - values of the left hand side in all the rows |
312 |
|
|
* ymar - corresponding marginal values |
313 |
|
|
* ybas - basis indicator for row |
314 |
|
|
* ysta - status of row |
315 |
|
|
* n - number of variables |
316 |
|
|
* m - number of constraints |
317 |
|
|
* usrmem - user memory |
318 |
|
|
*/ |
319 |
|
|
|
320 |
|
|
|
321 |
|
|
extern void COIUSZ(int32 *, int32 *, int32 *, real64 *, real64 *); |
322 |
|
|
/* |
323 |
|
|
* COIUSZ communicates and update of an existing model to CONOPT |
324 |
|
|
* COIUSZ(nintg, ipsz, nreal, rpsz, usrmem) |
325 |
|
|
* |
326 |
|
|
* nintg - number of positions in ipsz |
327 |
|
|
* ipsz - array describing problem size and options |
328 |
|
|
* nreal - number of positions in rpsz |
329 |
|
|
* rpsz - array of reals describing problem size and options |
330 |
|
|
* usrmem- user memory |
331 |
|
|
*/ |
332 |
|
|
|
333 |
|
|
|
334 |
|
|
extern void COIOPT(char *, real64 *, int32 *, int32 *, real64 *); |
335 |
|
|
/* |
336 |
|
|
* COIOPT communicates non-default option values to CONOPT |
337 |
|
|
* COIOPT(name, rval, ival, lval, usrmem) |
338 |
|
|
* name - the name of a CONOPT CR-cell defined by the modeler |
339 |
|
|
* rval - the value to be assigned to name if the cells contains a real |
340 |
|
|
* ival - the value to be assigned to name if the cells contains an int |
341 |
|
|
* lval - the value to be assigned to name if the cells contains a log value |
342 |
|
|
* usrmem - user memory |
343 |
|
|
*/ |
344 |
|
|
|
345 |
|
|
|
346 |
|
|
extern void COIPSZ(int32 *, int32 *, int32 *, real64 *, real64 *); |
347 |
|
|
/* |
348 |
|
|
* COIPSZ communicates the model size and structure to CONOPT |
349 |
|
|
* COIPSZ(nintg, ipsz, nreal, rpsz, usrmem) |
350 |
|
|
* |
351 |
|
|
* ningt - number of positions in ipsz |
352 |
|
|
* ipsz - array describing problem size and options |
353 |
|
|
* nreal - number of positions in rpsz |
354 |
|
|
* rpsz - array of reals describing problem size and options |
355 |
|
|
* usrmem - user memory |
356 |
|
|
*/ |
357 |
|
|
|
358 |
|
|
extern void COIMSG (int32 *nmsg, int32 *smsg, int32 *llen, |
359 |
|
|
char msgv[80*15],real64 *usrmem); |
360 |
|
|
|
361 |
|
|
extern void COISCR (char msg[80], int32 *len); |
362 |
|
|
|
363 |
|
|
extern void COIEC (int32 *colno, int32 *msglen, char msg[80],real64 *usrmem); |
364 |
|
|
|
365 |
|
|
extern void COIER (int32 *rowno, int32 *msglen, char msg[80],real64 *usrmem); |
366 |
|
|
|
367 |
|
|
extern void COIENZ (int32 *colno, int32 *rowno, int32 *posno, |
368 |
|
|
int32 *msglen, char msg[80],real64 *usrmem); |
369 |
|
|
|
370 |
|
|
extern void COIPRG (int32 *nintgr, int32 *intrep, int32 *nreal, |
371 |
|
|
real64 *rl, real64 *x, real64 *usrmem, int32 *finish); |
372 |
|
|
|
373 |
|
|
extern void COIORC (int32 *colno, int32 *rowno, real64 *value, |
374 |
|
|
real64 *resid,real64 *usrmem); |
375 |
|
|
|
376 |
|
|
/* |
377 |
|
|
* IMPORTANT: The use of the following functions is a H A C K to avoid |
378 |
|
|
* unresolved externals while linking to the CONOPT library. For some |
379 |
|
|
* reason, the linker wants the calls to the provided subroutines |
380 |
|
|
* COICSM and COIMEM in the same file as the definition of the user |
381 |
|
|
* defined CONOPT subroutines |
382 |
|
|
*/ |
383 |
|
|
|
384 |
|
|
/* |
385 |
|
|
* Passes arguments to COIMEM |
386 |
|
|
*/ |
387 |
|
|
extern void conopt_estimate_memory(int32 *, int32 *, int32 *, int32 *); |
388 |
|
|
|
389 |
|
|
/* |
390 |
|
|
* Passes arguments to COICRM |
391 |
|
|
*/ |
392 |
|
|
extern void conopt_restart(int32 *, real64 **, int32 *, real64 *, int32 *, |
393 |
|
|
int32 *); |
394 |
|
|
|
395 |
|
|
/* |
396 |
|
|
* Passes arguments to COICSM |
397 |
|
|
*/ |
398 |
|
|
extern void conopt_start(int32 *, real64 **, int32 *, real64 *, int32 *, |
399 |
|
|
int32 *); |
400 |
|
|
|
401 |
|
|
|
402 |
|
|
#if defined(DYNAMIC_CONOPT) |
403 |
|
|
/* |
404 |
|
|
* conopt_load attempts to dynamically load CONOPT. |
405 |
|
|
* Returns 0 for success, 1 for failure. |
406 |
|
|
*/ |
407 |
|
|
int32 conopt_load(void); |
408 |
|
|
#else |
409 |
|
|
/* |
410 |
|
|
* CONOPT Provided Subroutines.Only the external definition. The |
411 |
|
|
* code for the subroutines is provided by CONOPT. |
412 |
|
|
*/ |
413 |
|
|
|
414 |
|
|
/* |
415 |
|
|
* Memory estimation by using CONOPT subroutine coimem |
416 |
|
|
* |
417 |
|
|
* COIMEM Estimates the amount of memory needed by CONOPT |
418 |
|
|
* COIMEM(nintgr, ipsz, minmem, estmem) |
419 |
|
|
* |
420 |
|
|
* nintgr - number of elements in the array ipsz. Should be 3. |
421 |
|
|
* ipsz - vector of integers to describe the size of the model |
422 |
|
|
* minmem - Minimum estimate for the memory needed. Measured in |
423 |
|
|
* number of real elements of work |
424 |
|
|
* estmem - Estimate of the amount of memory |
425 |
|
|
*/ |
426 |
|
|
extern void COIMEM(int32 *, int32 *, int32 *, int32 *); |
427 |
|
|
|
428 |
|
|
/* |
429 |
|
|
* COICRM restarts CONOPT with user memory |
430 |
|
|
* COICRM(kept, usrmem, lwork, work, maxusd, curusd) |
431 |
|
|
* |
432 |
|
|
* kept - Whether CONOPT has kept the model after solving it or not |
433 |
|
|
* usrmem - array passed to all subroutines. If not needed is dummy array |
434 |
|
|
* lwork - lenght of working array work |
435 |
|
|
* work - working array supplied by the user |
436 |
|
|
* maxusd - maximum amount of memory in work used during optimization |
437 |
|
|
* curusd - current amount of memory in use |
438 |
|
|
*/ |
439 |
|
|
extern void COICRM(int32 *, real64 *, int32 *, real64 *, int32 *, int32 *); |
440 |
|
|
|
441 |
|
|
/* |
442 |
|
|
* COICSM starts up CONOPT with user memory |
443 |
|
|
* COICSM(kept, usrmem, lwork, work, maxusd, curusd) |
444 |
|
|
* |
445 |
|
|
* kept - Whether CONOPT has kept the model after solving it or not |
446 |
|
|
* usrmem - array passed to all subroutines. If not needed is dummy array |
447 |
|
|
* lwork - lenght of working array work |
448 |
|
|
* work - working array supplied by the user |
449 |
|
|
* maxusd - maximum amount of memory in work used during optimization |
450 |
|
|
* curusd - current amount of memory in use |
451 |
|
|
*/ |
452 |
|
|
extern void COICSM(int32 *, real64 *, int32 *, real64 *, int32 *, int32 *); |
453 |
|
|
#endif /* DYNAMIC_CONOPT */ |
454 |
|
|
#endif /* if CONOPT_ACTIVE */ |
455 |
|
|
#endif /* conopt__already_included */ |
456 |
|
|
|
457 |
|
|
|