#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__ */