summaryrefslogtreecommitdiff
path: root/numlib/dhsx.h
diff options
context:
space:
mode:
Diffstat (limited to 'numlib/dhsx.h')
-rw-r--r--numlib/dhsx.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/numlib/dhsx.h b/numlib/dhsx.h
new file mode 100644
index 0000000..828b8b2
--- /dev/null
+++ b/numlib/dhsx.h
@@ -0,0 +1,42 @@
+#ifndef DHSX_H
+#define DHSX_H
+
+/* A general purpose downhill simplex multivariate optimser, */
+/* as described in */
+/* "Numerical Recipes in C", by W.H.Press, B.P.Flannery, */
+/* S.A.Teukolsky & W.T.Vetterling. */
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Down hill simplex function */
+/* return err on sucess, -1.0 on failure */
+/* Result will be in cp */
+/* Arrays start at 0 */
+
+/* Standard interface for optimizer function */
+/* return 0 on sucess, 1 on failure due to excessive itterations */
+/* Result will be in cp */
+/* Arrays start at 0 */
+int dhsx(
+double *rv, /* If not NULL, return the residual error */
+int di, /* Dimentionality */
+double cp[], /* Initial starting point */
+double s[], /* Size of initial search area */
+double ftol, /* Tollerance of error change to stop on */
+double atol, /* Absolute return value tollerance */
+int maxit, /* Maximum iterations allowed */
+double (*funk)(void *fdata, double tp[]), /* Error function to evaluate */
+void *fdata /* Data needed by function */
+);
+
+double dhsx_funk( /* Return function value */
+ void *fdata, /* Opaque data pointer */
+ double tp[]); /* Multivriate input value */
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* DHSX_H */