diff options
Diffstat (limited to 'unsupported/Eigen/NonLinear')
-rw-r--r-- | unsupported/Eigen/NonLinear | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/unsupported/Eigen/NonLinear b/unsupported/Eigen/NonLinear index ae51cdf1e..5606b7b42 100644 --- a/unsupported/Eigen/NonLinear +++ b/unsupported/Eigen/NonLinear @@ -48,7 +48,78 @@ namespace Eigen { #define p001 .001 #define p0001 1e-4 +#if 1 #include <cminpack.h> +#else + +/* Declarations for minpack */ +typedef int (*minpack_func_nn)(void *p, int n, const double *x, double *fvec, int iflag ); +typedef int (*minpack_funcder_nn)(void *p, int n, const double *x, double *fvec, double *fjac, int ldfjac, int iflag ); +typedef int (*minpack_func_mn)(void *p, int m, int n, const double *x, double *fvec, int iflag ); +typedef int (*minpack_funcder_mn)(void *p, int m, int n, const double *x, double *fvec, double *fjac, int ldfjac, int iflag ); +typedef int (*minpack_funcderstr_mn)(void *p, int m, int n, const double *x, double *fvec, double *fjrow, int iflag ); + +/* MINPACK functions: */ +int hybrd1 ( minpack_func_nn fcn, void *p, int n, double *x, double *fvec, double tol, + double *wa, int lwa ); +int hybrd ( minpack_func_nn fcn, + void *p, int n, double *x, double *fvec, double xtol, int maxfev, + int ml, int mu, double epsfcn, double *diag, int mode, + double factor, int nprint, int *nfev, + double *fjac, int ldfjac, double *r, int lr, double *qtf, + double *wa1, double *wa2, double *wa3, double *wa4); + +int hybrj1 ( minpack_funcder_nn fcn, void *p, int n, double *x, + double *fvec, double *fjac, int ldfjac, double tol, + double *wa, int lwa ); +int hybrj ( minpack_funcder_nn fcn, void *p, int n, double *x, + double *fvec, double *fjac, int ldfjac, double xtol, + int maxfev, double *diag, int mode, double factor, + int nprint, int *nfev, int *njev, double *r, + int lr, double *qtf, double *wa1, double *wa2, + double *wa3, double *wa4 ); + +int lmdif1 ( minpack_func_mn fcn, + void *p, int m, int n, double *x, double *fvec, double tol, + int *iwa, double *wa, int lwa ); +int lmdif ( minpack_func_mn fcn, + void *p, int m, int n, double *x, double *fvec, double ftol, + double xtol, double gtol, int maxfev, double epsfcn, + double *diag, int mode, double factor, int nprint, + int *nfev, double *fjac, int ldfjac, int *ipvt, + double *qtf, double *wa1, double *wa2, double *wa3, + double *wa4 ); + +int lmder1 ( minpack_funcder_mn fcn, + void *p, int m, int n, double *x, double *fvec, double *fjac, + int ldfjac, double tol, int *ipvt, + double *wa, int lwa ); +int lmder ( minpack_funcder_mn fcn, + void *p, int m, int n, double *x, double *fvec, double *fjac, + int ldfjac, double ftol, double xtol, double gtol, + int maxfev, double *diag, int mode, double factor, + int nprint, int *nfev, int *njev, int *ipvt, + double *qtf, double *wa1, double *wa2, double *wa3, + double *wa4 ); + +int lmstr1 ( minpack_funcderstr_mn fcn, void *p, int m, int n, + double *x, double *fvec, double *fjac, int ldfjac, + double tol, int *ipvt, double *wa, int lwa ); +int lmstr ( minpack_funcderstr_mn fcn, void *p, int m, + int n, double *x, double *fvec, double *fjac, + int ldfjac, double ftol, double xtol, double gtol, + int maxfev, double *diag, int mode, double factor, + int nprint, int *nfev, int *njev, int *ipvt, + double *qtf, double *wa1, double *wa2, double *wa3, + double *wa4 ); + +void chkder ( int m, int n, const double *x, double *fvec, double *fjac, + int ldfjac, double *xp, double *fvecp, int mode, + double *err ); +#endif + + + #include "src/NonLinear/lmder1.h" #include "src/NonLinear/lmder.h" #include "src/NonLinear/hybrd1.h" |