Stimfit @PACKAGE_VERSION@
Loading...
Searching...
No Matches
levmar.h
Go to the documentation of this file.
1/*
3//
4// Prototypes and definitions for the Levenberg - Marquardt minimization algorithm
5// Copyright (C) 2004 Manolis Lourakis (lourakis at ics forth gr)
6// Institute of Computer Science, Foundation for Research & Technology - Hellas
7// Heraklion, Crete, Greece.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; either version 2 of the License, or
12// (at your option) any later version.
13//
14// This program is distributed in the hope that it will be useful,
15// but WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17// GNU General Public License for more details.
18//
20*/
21
22#ifndef _LEVMAR_H_
23#define _LEVMAR_H_
24
25/************************************* Start of configuration options *************************************/
26/* Note that when compiling with CMake, this configuration section is automatically generated
27 * based on the user's input, see levmar.h.in
28 */
29
30/* specifies whether to use LAPACK or not. Using LAPACK is strongly recommended */
31#ifndef HAVE_LAPACK
32#define HAVE_LAPACK
33#endif
34
35/* specifies whether the PLASMA parallel library for multicore CPUs is available */
36/* #undef HAVE_PLASMA */
37
38/* to avoid the overhead of repeated mallocs(), routines in Axb.c can be instructed to
39 * retain working memory between calls. Such a choice, however, renders these routines
40 * non-reentrant and is not safe in a shared memory multiprocessing environment.
41 * Bellow, an attempt is made to issue a warning if this option is turned on and OpenMP
42 * is being used (note that this will work only if omp.h is included before levmar.h)
43 */
44#define LINSOLVERS_RETAIN_MEMORY
45#if (defined(_OPENMP))
46# ifdef LINSOLVERS_RETAIN_MEMORY
47# ifdef _MSC_VER
48# pragma message("LINSOLVERS_RETAIN_MEMORY is not safe in a multithreaded environment and should be turned off!")
49# else
50# warning LINSOLVERS_RETAIN_MEMORY is not safe in a multithreaded environment and should be turned off!
51# endif /* _MSC_VER */
52# endif /* LINSOLVERS_RETAIN_MEMORY */
53#endif /* _OPENMP */
54
55/* specifies whether double precision routines will be compiled or not */
56#define LM_DBL_PREC
57/* specifies whether single precision routines will be compiled or not */
58#define LM_SNGL_PREC
59
60/****************** End of configuration options, no changes necessary beyond this point ******************/
61
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
67/* work arrays size for ?levmar_der and ?levmar_dif functions.
68 * should be multiplied by sizeof(double) or sizeof(float) to be converted to bytes
69 */
70#define LM_DER_WORKSZ(npar, nmeas) (2*(nmeas) + 4*(npar) + (nmeas)*(npar) + (npar)*(npar))
71#define LM_DIF_WORKSZ(npar, nmeas) (4*(nmeas) + 4*(npar) + (nmeas)*(npar) + (npar)*(npar))
72
73/* work arrays size for ?levmar_bc_der and ?levmar_bc_dif functions.
74 * should be multiplied by sizeof(double) or sizeof(float) to be converted to bytes
75 */
76#define LM_BC_DER_WORKSZ(npar, nmeas) (2*(nmeas) + 4*(npar) + (nmeas)*(npar) + (npar)*(npar))
77#define LM_BC_DIF_WORKSZ(npar, nmeas) LM_BC_DER_WORKSZ((npar), (nmeas)) /* LEVMAR_BC_DIF currently implemented using LEVMAR_BC_DER()! */
78
79/* work arrays size for ?levmar_lec_der and ?levmar_lec_dif functions.
80 * should be multiplied by sizeof(double) or sizeof(float) to be converted to bytes
81 */
82#define LM_LEC_DER_WORKSZ(npar, nmeas, nconstr) LM_DER_WORKSZ((npar)-(nconstr), (nmeas))
83#define LM_LEC_DIF_WORKSZ(npar, nmeas, nconstr) LM_DIF_WORKSZ((npar)-(nconstr), (nmeas))
84
85/* work arrays size for ?levmar_blec_der and ?levmar_blec_dif functions.
86 * should be multiplied by sizeof(double) or sizeof(float) to be converted to bytes
87 */
88#define LM_BLEC_DER_WORKSZ(npar, nmeas, nconstr) LM_LEC_DER_WORKSZ((npar), (nmeas)+(npar), (nconstr))
89#define LM_BLEC_DIF_WORKSZ(npar, nmeas, nconstr) LM_LEC_DIF_WORKSZ((npar), (nmeas)+(npar), (nconstr))
90
91/* work arrays size for ?levmar_bleic_der and ?levmar_bleic_dif functions.
92 * should be multiplied by sizeof(double) or sizeof(float) to be converted to bytes
93 */
94#define LM_BLEIC_DER_WORKSZ(npar, nmeas, nconstr1, nconstr2) LM_BLEC_DER_WORKSZ((npar)+(nconstr2), (nmeas)+(nconstr2), (nconstr1)+(nconstr2))
95#define LM_BLEIC_DIF_WORKSZ(npar, nmeas, nconstr1, nconstr2) LM_BLEC_DIF_WORKSZ((npar)+(nconstr2), (nmeas)+(nconstr2), (nconstr1)+(nconstr2))
96
97#define LM_OPTS_SZ 5 /* max(4, 5) */
98#define LM_INFO_SZ 10
99#define LM_ERROR -1
100#define LM_INIT_MU 1E-03
101#define LM_STOP_THRESH 1E-17
102#define LM_DIFF_DELTA 1E-06
103#define LM_VERSION "2.6 (November 2011)"
104
105#ifdef LM_DBL_PREC
106/* double precision LM, with & without Jacobian */
107/* unconstrained minimization */
108extern int dlevmar_der(
109 void (*func)(double *p, double *hx, int m, int n, void *adata),
110 void (*jacf)(double *p, double *j, int m, int n, void *adata),
111 double *p, double *x, int m, int n, int itmax, double *opts,
112 double *info, double *work, double *covar, void *adata);
113
114extern int dlevmar_dif(
115 void (*func)(double *p, double *hx, int m, int n, void *adata),
116 double *p, double *x, int m, int n, int itmax, double *opts,
117 double *info, double *work, double *covar, void *adata);
118
119/* box-constrained minimization */
120extern int dlevmar_bc_der(
121 void (*func)(double *p, double *hx, int m, int n, void *adata),
122 void (*jacf)(double *p, double *j, int m, int n, void *adata),
123 double *p, double *x, int m, int n, double *lb, double *ub, double *dscl,
124 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
125
126extern int dlevmar_bc_dif(
127 void (*func)(double *p, double *hx, int m, int n, void *adata),
128 double *p, double *x, int m, int n, double *lb, double *ub, double *dscl,
129 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
130
131#ifdef HAVE_LAPACK
132/* linear equation constrained minimization */
134 void (*func)(double *p, double *hx, int m, int n, void *adata),
135 void (*jacf)(double *p, double *j, int m, int n, void *adata),
136 double *p, double *x, int m, int n, double *A, double *b, int k,
137 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
138
140 void (*func)(double *p, double *hx, int m, int n, void *adata),
141 double *p, double *x, int m, int n, double *A, double *b, int k,
142 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
143
144/* box & linear equation constrained minimization */
146 void (*func)(double *p, double *hx, int m, int n, void *adata),
147 void (*jacf)(double *p, double *j, int m, int n, void *adata),
148 double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k, double *wghts,
149 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
150
152 void (*func)(double *p, double *hx, int m, int n, void *adata),
153 double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k, double *wghts,
154 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
155
156/* box, linear equations & inequalities constrained minimization */
158 void (*func)(double *p, double *hx, int m, int n, void *adata),
159 void (*jacf)(double *p, double *j, int m, int n, void *adata),
160 double *p, double *x, int m, int n, double *lb, double *ub,
161 double *A, double *b, int k1, double *C, double *d, int k2,
162 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
163
165 void (*func)(double *p, double *hx, int m, int n, void *adata),
166 double *p, double *x, int m, int n, double *lb, double *ub,
167 double *A, double *b, int k1, double *C, double *d, int k2,
168 int itmax, double *opts, double *info, double *work, double *covar, void *adata);
169
170/* box & linear inequality constraints */
172 void (*func)(double *p, double *hx, int m, int n, void *adata),
173 void (*jacf)(double *p, double *j, int m, int n, void *adata),
174 double *p, double *x, int m, int n, double *lb, double *ub, double *C, double *d, int k2,
175 int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
176
178 void (*func)(double *p, double *hx, int m, int n, void *adata),
179 double *p, double *x, int m, int n, double *lb, double *ub, double *C, double *d, int k2,
180 int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
181
182/* linear equation & inequality constraints */
184 void (*func)(double *p, double *hx, int m, int n, void *adata),
185 void (*jacf)(double *p, double *j, int m, int n, void *adata),
186 double *p, double *x, int m, int n, double *A, double *b, int k1, double *C, double *d, int k2,
187 int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
188
190 void (*func)(double *p, double *hx, int m, int n, void *adata),
191 double *p, double *x, int m, int n, double *A, double *b, int k1, double *C, double *d, int k2,
192 int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
193
194/* linear inequality constraints */
196 void (*func)(double *p, double *hx, int m, int n, void *adata),
197 void (*jacf)(double *p, double *j, int m, int n, void *adata),
198 double *p, double *x, int m, int n, double *C, double *d, int k2,
199 int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
200
202 void (*func)(double *p, double *hx, int m, int n, void *adata),
203 double *p, double *x, int m, int n, double *C, double *d, int k2,
204 int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata);
205#endif /* HAVE_LAPACK */
206
207#endif /* LM_DBL_PREC */
208
209
210#ifdef LM_SNGL_PREC
211/* single precision LM, with & without Jacobian */
212/* unconstrained minimization */
213extern int slevmar_der(
214 void (*func)(float *p, float *hx, int m, int n, void *adata),
215 void (*jacf)(float *p, float *j, int m, int n, void *adata),
216 float *p, float *x, int m, int n, int itmax, float *opts,
217 float *info, float *work, float *covar, void *adata);
218
219extern int slevmar_dif(
220 void (*func)(float *p, float *hx, int m, int n, void *adata),
221 float *p, float *x, int m, int n, int itmax, float *opts,
222 float *info, float *work, float *covar, void *adata);
223
224/* box-constrained minimization */
225extern int slevmar_bc_der(
226 void (*func)(float *p, float *hx, int m, int n, void *adata),
227 void (*jacf)(float *p, float *j, int m, int n, void *adata),
228 float *p, float *x, int m, int n, float *lb, float *ub, float *dscl,
229 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
230
231extern int slevmar_bc_dif(
232 void (*func)(float *p, float *hx, int m, int n, void *adata),
233 float *p, float *x, int m, int n, float *lb, float *ub, float *dscl,
234 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
235
236#ifdef HAVE_LAPACK
237/* linear equation constrained minimization */
239 void (*func)(float *p, float *hx, int m, int n, void *adata),
240 void (*jacf)(float *p, float *j, int m, int n, void *adata),
241 float *p, float *x, int m, int n, float *A, float *b, int k,
242 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
243
245 void (*func)(float *p, float *hx, int m, int n, void *adata),
246 float *p, float *x, int m, int n, float *A, float *b, int k,
247 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
248
249/* box & linear equation constrained minimization */
251 void (*func)(float *p, float *hx, int m, int n, void *adata),
252 void (*jacf)(float *p, float *j, int m, int n, void *adata),
253 float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k, float *wghts,
254 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
255
257 void (*func)(float *p, float *hx, int m, int n, void *adata),
258 float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k, float *wghts,
259 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
260
261/* box, linear equations & inequalities constrained minimization */
263 void (*func)(float *p, float *hx, int m, int n, void *adata),
264 void (*jacf)(float *p, float *j, int m, int n, void *adata),
265 float *p, float *x, int m, int n, float *lb, float *ub,
266 float *A, float *b, int k1, float *C, float *d, int k2,
267 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
268
270 void (*func)(float *p, float *hx, int m, int n, void *adata),
271 float *p, float *x, int m, int n, float *lb, float *ub,
272 float *A, float *b, int k1, float *C, float *d, int k2,
273 int itmax, float *opts, float *info, float *work, float *covar, void *adata);
274
275/* box & linear inequality constraints */
277 void (*func)(float *p, float *hx, int m, int n, void *adata),
278 void (*jacf)(float *p, float *j, int m, int n, void *adata),
279 float *p, float *x, int m, int n, float *lb, float *ub, float *C, float *d, int k2,
280 int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
281
283 void (*func)(float *p, float *hx, int m, int n, void *adata),
284 float *p, float *x, int m, int n, float *lb, float *ub, float *C, float *d, int k2,
285 int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
286
287/* linear equality & inequality constraints */
289 void (*func)(float *p, float *hx, int m, int n, void *adata),
290 void (*jacf)(float *p, float *j, int m, int n, void *adata),
291 float *p, float *x, int m, int n, float *A, float *b, int k1, float *C, float *d, int k2,
292 int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
293
295 void (*func)(float *p, float *hx, int m, int n, void *adata),
296 float *p, float *x, int m, int n, float *A, float *b, int k1, float *C, float *d, int k2,
297 int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
298
299/* linear inequality constraints */
301 void (*func)(float *p, float *hx, int m, int n, void *adata),
302 void (*jacf)(float *p, float *j, int m, int n, void *adata),
303 float *p, float *x, int m, int n, float *C, float *d, int k2,
304 int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
305
307 void (*func)(float *p, float *hx, int m, int n, void *adata),
308 float *p, float *x, int m, int n, float *C, float *d, int k2,
309 int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata);
310#endif /* HAVE_LAPACK */
311
312#endif /* LM_SNGL_PREC */
313
314/* linear system solvers */
315#ifdef HAVE_LAPACK
316
317#ifdef LM_DBL_PREC
318extern int dAx_eq_b_QR(double *A, double *B, double *x, int m);
319extern int dAx_eq_b_QRLS(double *A, double *B, double *x, int m, int n);
320extern int dAx_eq_b_Chol(double *A, double *B, double *x, int m);
321extern int dAx_eq_b_LU(double *A, double *B, double *x, int m);
322extern int dAx_eq_b_SVD(double *A, double *B, double *x, int m);
323extern int dAx_eq_b_BK(double *A, double *B, double *x, int m);
324#endif /* LM_DBL_PREC */
325
326#ifdef LM_SNGL_PREC
327extern int sAx_eq_b_QR(float *A, float *B, float *x, int m);
328extern int sAx_eq_b_QRLS(float *A, float *B, float *x, int m, int n);
329extern int sAx_eq_b_Chol(float *A, float *B, float *x, int m);
330extern int sAx_eq_b_LU(float *A, float *B, float *x, int m);
331extern int sAx_eq_b_SVD(float *A, float *B, float *x, int m);
332extern int sAx_eq_b_BK(float *A, float *B, float *x, int m);
333#endif /* LM_SNGL_PREC */
334
335#else /* no LAPACK */
336
337#ifdef LM_DBL_PREC
338extern int dAx_eq_b_LU_noLapack(double *A, double *B, double *x, int n);
339#endif /* LM_DBL_PREC */
340
341#ifdef LM_SNGL_PREC
342extern int sAx_eq_b_LU_noLapack(float *A, float *B, float *x, int n);
343#endif /* LM_SNGL_PREC */
344
345#endif /* HAVE_LAPACK */
346
347#ifdef HAVE_PLASMA
348#ifdef LM_DBL_PREC
349extern int dAx_eq_b_PLASMA_Chol(double *A, double *B, double *x, int m);
350#endif
351#ifdef LM_SNGL_PREC
352extern int sAx_eq_b_PLASMA_Chol(float *A, float *B, float *x, int m);
353#endif
354extern void levmar_PLASMA_setnbcores(int cores);
355#endif /* HAVE_PLASMA */
356
357/* Jacobian verification, double & single precision */
358#ifdef LM_DBL_PREC
359extern void dlevmar_chkjac(
360 void (*func)(double *p, double *hx, int m, int n, void *adata),
361 void (*jacf)(double *p, double *j, int m, int n, void *adata),
362 double *p, int m, int n, void *adata, double *err);
363#endif /* LM_DBL_PREC */
364
365#ifdef LM_SNGL_PREC
366extern void slevmar_chkjac(
367 void (*func)(float *p, float *hx, int m, int n, void *adata),
368 void (*jacf)(float *p, float *j, int m, int n, void *adata),
369 float *p, int m, int n, void *adata, float *err);
370#endif /* LM_SNGL_PREC */
371
372/* miscellaneous: standard deviation, coefficient of determination (R2),
373 * Pearson's correlation coefficient for best-fit parameters
374 */
375#ifdef LM_DBL_PREC
376extern double dlevmar_stddev( double *covar, int m, int i);
377extern double dlevmar_corcoef(double *covar, int m, int i, int j);
378extern double dlevmar_R2(void (*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, void *adata);
379
380#endif /* LM_DBL_PREC */
381
382#ifdef LM_SNGL_PREC
383extern float slevmar_stddev( float *covar, int m, int i);
384extern float slevmar_corcoef(float *covar, int m, int i, int j);
385extern float slevmar_R2(void (*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, void *adata);
386
388 void (*func)(float *p, float *hx, int m, int n, void *adata),
389 float *p, float *x, int m, int n, void *adata,
390 int howto, float locscl[2], float **residptr);
391
392extern int slevmar_outlid(float *r, int n, float thresh, float ls[2], char *outlmap);
393
394#endif /* LM_SNGL_PREC */
395
396#ifdef __cplusplus
397}
398#endif
399
400#endif /* _LEVMAR_H_ */
WORD TpMarker int n
Definition Son.h:353
int dlevmar_lec_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *A, double *b, int k, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int slevmar_outlid(float *r, int n, float thresh, float ls[2], char *outlmap)
int slevmar_bc_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *dscl, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dAx_eq_b_Chol(double *A, double *B, double *x, int m)
int dlevmar_bleic_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k1, double *C, double *d, int k2, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int sAx_eq_b_SVD(float *A, float *B, float *x, int m)
double dlevmar_R2(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, void *adata)
int sAx_eq_b_Chol(float *A, float *B, float *x, int m)
#define LM_INFO_SZ
Definition levmar.h:98
int slevmar_bc_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *dscl, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dlevmar_blic_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *C, double *d, int k2, int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
void dlevmar_chkjac(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, int m, int n, void *adata, double *err)
int dlevmar_leic_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *A, double *b, int k1, double *C, double *d, int k2, int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
double dlevmar_corcoef(double *covar, int m, int i, int j)
int slevmar_blic_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *C, float *d, int k2, int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata)
int slevmar_lic_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *C, float *d, int k2, int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata)
int sAx_eq_b_BK(float *A, float *B, float *x, int m)
int dlevmar_lic_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *C, double *d, int k2, int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
float slevmar_corcoef(float *covar, int m, int i, int j)
int dlevmar_blec_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k, double *wghts, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
void slevmar_chkjac(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, int m, int n, void *adata, float *err)
void slevmar_locscale(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, void *adata, int howto, float locscl[2], float **residptr)
int dlevmar_blec_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k, double *wghts, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int slevmar_bleic_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k1, float *C, float *d, int k2, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dAx_eq_b_QRLS(double *A, double *B, double *x, int m, int n)
int dAx_eq_b_QR(double *A, double *B, double *x, int m)
double dlevmar_stddev(double *covar, int m, int i)
int sAx_eq_b_QRLS(float *A, float *B, float *x, int m, int n)
int slevmar_bleic_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k1, float *C, float *d, int k2, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int slevmar_blic_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *C, float *d, int k2, int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata)
float slevmar_R2(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, void *adata)
int slevmar_lec_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *A, float *b, int k, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int slevmar_leic_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *A, float *b, int k1, float *C, float *d, int k2, int itmax, float opts[4], float info[LM_INFO_SZ], float *work, float *covar, void *adata)
int dlevmar_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int slevmar_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int slevmar_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int slevmar_lec_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *A, float *b, int k, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dlevmar_bc_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *dscl, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int dlevmar_lec_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *A, double *b, int k, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
float slevmar_stddev(float *covar, int m, int i)
int dAx_eq_b_SVD(double *A, double *B, double *x, int m)
int slevmar_blec_der(void(*func)(float *p, float *hx, int m, int n, void *adata), void(*jacf)(float *p, float *j, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k, float *wghts, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dlevmar_blic_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *C, double *d, int k2, int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
int sAx_eq_b_LU(float *A, float *B, float *x, int m)
int dAx_eq_b_BK(double *A, double *B, double *x, int m)
int slevmar_leic_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *A, float *b, int k1, float *C, float *d, int k2, int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata)
int dAx_eq_b_LU(double *A, double *B, double *x, int m)
int dlevmar_bleic_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *A, double *b, int k1, double *C, double *d, int k2, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int sAx_eq_b_QR(float *A, float *B, float *x, int m)
int slevmar_blec_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *lb, float *ub, float *A, float *b, int k, float *wghts, int itmax, float *opts, float *info, float *work, float *covar, void *adata)
int dlevmar_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int dlevmar_lic_der(void(*func)(double *p, double *hx, int m, int n, void *adata), void(*jacf)(double *p, double *j, int m, int n, void *adata), double *p, double *x, int m, int n, double *C, double *d, int k2, int itmax, double opts[4], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
int dlevmar_leic_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *A, double *b, int k1, double *C, double *d, int k2, int itmax, double opts[5], double info[LM_INFO_SZ], double *work, double *covar, void *adata)
int dlevmar_bc_dif(void(*func)(double *p, double *hx, int m, int n, void *adata), double *p, double *x, int m, int n, double *lb, double *ub, double *dscl, int itmax, double *opts, double *info, double *work, double *covar, void *adata)
int slevmar_lic_dif(void(*func)(float *p, float *hx, int m, int n, void *adata), float *p, float *x, int m, int n, float *C, float *d, int k2, int itmax, float opts[5], float info[LM_INFO_SZ], float *work, float *covar, void *adata)