30 lines
728 B
C
30 lines
728 B
C
|
|
#ifndef __LEVMARQ_H__
|
|
#define __LEVMARQ_H__
|
|
|
|
typedef struct {
|
|
int max_it;
|
|
float init_lambda;
|
|
float up_factor;
|
|
float down_factor;
|
|
float target_derr;
|
|
int final_it;
|
|
float final_err;
|
|
float final_derr;
|
|
} LMstat;
|
|
|
|
void levmarq_init(LMstat *lmstat);
|
|
|
|
int levmarq(int npar, float *par, int ny, float *y, float *dysq,
|
|
float (*func)(float *, int, void *),
|
|
void (*grad)(float *, float *, int, void *),
|
|
void *fdata, LMstat *lmstat);
|
|
|
|
float error_func(float *par, int ny, float *y, float *dysq,
|
|
float (*func)(float *, int, void *), void *fdata);
|
|
|
|
void solve_axb_cholesky(int n, float l[n][n], float x[n], float b[n]);
|
|
|
|
int cholesky_decomp(int n, float l[n][n], float a[n][n]);
|
|
|
|
#endif /* __LEVMARQ_H__ */
|