1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2013 - Scilab Enterprises - Cedric DELAMARRE
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15 /*--------------------------------------------------------------------------*/
16 
17 #include "dynlib_optimization.h"
18 
19 // optim
20 typedef void (*costf_t)(int *ind, int *n, double *x, double *f, double *g, int *ti, float *tr, double *td);
21 typedef void (*fuclid_t)(int *n, double *x, double *y, double *ps, int *ti, float *tr, double *td);
22 typedef void (*ctonb_t)(int *n, double *u, double *v, int *ti, float *tr, double *td);
23 typedef void (*ctcab_t)(int *n, double *u, double *v, int *ti, float *tr, double *td);
24 extern void C2F(n1qn1)(costf_t, int*, double*, double*, double*, double*, double*, int*, int*, int*, int*, int*, double*, int*, float*, double*);
25 extern void C2F(n1qn3)(costf_t, fuclid_t, ctonb_t, ctcab_t, int*, double*, double*, double*, double*, double*, double*, int*, int*, int*, int*, int*, double*, int*, int*, float*, double*);
26 extern void C2F(n1fc1)(costf_t, fuclid_t, int*, double*, double*, double*, double*, double*, double*, double*, int*, int*, int*, int*, int*, int*, int*, double*, double*, int*, float*, double*);
27 extern void C2F(qnbd)(int*, costf_t, int*, double*, double*, double*, int*, int*, double*, int*, int*, double*, double*, double*, double*, double*, double*, int*, double*, int*, int*, int*, int*, float*, double*);
28 extern void C2F(gcbd)(int*, costf_t, char*, int*, double*, double*, double*, int*, int*, double*, int*, int*, double*, double*, double*, double*, double*, double*, int*, double*, int*, int*, int*, int*, float*, double*);
29 OPTIMIZATION_IMPEXP void costf(int *ind, int *n, double *x, double *f, double *g, int *ti, float *tr, double *td);
30 OPTIMIZATION_IMPEXP void C2F(fuclid)(int *n, double *x, double *y, double *ps, int *ti, float *tr, double *td);
31 OPTIMIZATION_IMPEXP void C2F(ctonb)(int *n, double *u, double *v, int *ti, float *tr, double *td);
32 OPTIMIZATION_IMPEXP void C2F(ctcab)(int *n, double *u, double *v, int *ti, float *tr, double *td);
33 
34 // fsolve
35 typedef void (*fct_t)(int *n, double *x, double *v, int *iflag);
36 typedef void (*jac_t)(int *n, double *x, double *v, double *jac, int *ldjac, int *iflag);
37 extern void C2F(hybrd1)(fct_t, int* n, double* x, double* v, double* tol, int* info, double* pdblWork, int* iWorkSize);
38 extern void C2F(hybrj1)(jac_t, int* n, double* x, double* v, double* jac, int* ldjac, double* tol, int* info, double* pdblWork, int* iWorkSize);
39 OPTIMIZATION_IMPEXP void fct(int *n, double *x, double *v, int *iflag);
40 OPTIMIZATION_IMPEXP void jac(int *n, double *x, double *v, double *jac, int *ldjac, int *iflag);
41 
42 // lsqrsolve
43 typedef void (*lsqrfct_t)(int *m, int *n, double *x, double *v, int *iflag);
44 typedef void (*lsqrjac_t)(int *m, int *n, double *x, double *v, double *jac, int *ldjac, int *iflag);
45 typedef void (*lsqrjac_ext_t)(int *m, int *n, double *x, double *jac, int *ldjac, int *iflag);
46 extern void C2F(lmder)( lsqrjac_t, int*, int*, double*, double*, double*, int*, double*, double*, double*, int*, double*, int*, double*, int*, int*, int*, int*, int*, double*, double*, double*, double*, double*);
47 extern void C2F(lmdif)( lsqrfct_t, int*, int*, double*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*, int*, int*, double*, int*, int*, double*, double*, double*, double*, double*);
48 OPTIMIZATION_IMPEXP void lsqrfct(int *m, int *n, double *x, double *v, int *iflag);
49 OPTIMIZATION_IMPEXP void lsqrjac(int *m, int *n, double *x, double *v, double *jac, int *ldjac, int *iflag);
50