summaryrefslogtreecommitdiff
path: root/controller/fw/levmarq/levmarq.h
diff options
context:
space:
mode:
authorjaseg <git-bigdata-wsl-arch@jaseg.de>2020-03-02 19:45:47 +0100
committerjaseg <git-bigdata-wsl-arch@jaseg.de>2020-03-02 19:45:47 +0100
commitd493d9e99c28e7c3245b1cc2bfbbbe8b44db301a (patch)
tree438da13ccee52eabe08d0b7a2cba93ca078e194e /controller/fw/levmarq/levmarq.h
parent331ce442c4b8879af41332eebfae14bf29b74fba (diff)
downloadmaster-thesis-d493d9e99c28e7c3245b1cc2bfbbbe8b44db301a.tar.gz
master-thesis-d493d9e99c28e7c3245b1cc2bfbbbe8b44db301a.tar.bz2
master-thesis-d493d9e99c28e7c3245b1cc2bfbbbe8b44db301a.zip
foo
Diffstat (limited to 'controller/fw/levmarq/levmarq.h')
-rw-r--r--controller/fw/levmarq/levmarq.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/controller/fw/levmarq/levmarq.h b/controller/fw/levmarq/levmarq.h
new file mode 100644
index 0000000..dff13ab
--- /dev/null
+++ b/controller/fw/levmarq/levmarq.h
@@ -0,0 +1,30 @@
+
+#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__ */