master-thesis/reset-controller/fw/levmarq/levmarq.h
2021-04-09 18:38:57 +02:00

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