1 /**************************************************************************** 2 * 3 * ViSP, open source Visual Servoing Platform software. 4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved. 5 * 6 * This software is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * See the file LICENSE.txt at the root directory of this source 11 * distribution for additional information about the GNU GPL. 12 * 13 * For using ViSP with software that can not be combined with the GNU 14 * GPL, please contact Inria about acquiring a ViSP Professional 15 * Edition License. 16 * 17 * See http://visp.inria.fr for more information. 18 * 19 * This software was developed at: 20 * Inria Rennes - Bretagne Atlantique 21 * Campus Universitaire de Beaulieu 22 * 35042 Rennes Cedex 23 * France 24 * 25 * If you have questions regarding the use of this file, please contact 26 * Inria at visp@inria.fr 27 * 28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 30 * 31 * Description: 32 * Levenberg Marquartd. 33 * 34 * Authors: 35 * Eric Marchand 36 * Francois Chaumette 37 * 38 *****************************************************************************/ 39 40 #ifndef vpLevenbergMarquartd_h 41 #define vpLevenbergMarquartd_h 42 43 #include <visp3/core/vpConfig.h> 44 #include <visp3/core/vpMath.h> 45 46 #include <errno.h> 47 #include <float.h> 48 #include <math.h> 49 #include <stdio.h> 50 #include <stdlib.h> 51 52 int VISP_EXPORT qrsolv(int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double *x, double *sdiag, 53 double *wa); 54 55 double VISP_EXPORT enorm(const double *x, int n); 56 57 int VISP_EXPORT lmpar(int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double *delta, double *par, 58 double *x, double *sdiag, double *wa1, double *wa2); 59 60 double VISP_EXPORT pythag(double a, double b); 61 62 int VISP_EXPORT qrfac(int m, int n, double *a, int lda, int *pivot, int *ipvt, int lipvt, double *rdiag, double *acnorm, 63 double *wa); 64 65 int VISP_EXPORT qrsolv(int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double *x, double *sdiag, 66 double *wa); 67 68 int VISP_EXPORT lmder(void (*ptr_fcn)(int m, int n, double *xc, double *fvecc, double *jac, int ldfjac, int iflag), 69 int m, int n, double *x, double *fvec, double *fjac, int ldfjac, double ftol, double xtol, 70 double gtol, unsigned int maxfev, double *diag, int mode, const double factor, int nprint, 71 int *info, unsigned int *nfev, int *njev, int *ipvt, double *qtf, double *wa1, double *wa2, 72 double *wa3, double *wa4); 73 74 int VISP_EXPORT lmder1(void (*ptr_fcn)(int m, int n, double *xc, double *fvecc, double *jac, int ldfjac, int iflag), 75 int m, int n, double *x, double *fvec, double *fjac, int ldfjac, double tol, int *info, 76 int *ipvt, int lwa, double *wa); 77 78 #endif 79 80 /* 81 * Local variables: 82 * c-basic-offset: 2 83 * End: 84 */ 85