aboutsummaryrefslogtreecommitdiff
path: root/math/nlfit/nlfitdef.gh
diff options
context:
space:
mode:
Diffstat (limited to 'math/nlfit/nlfitdef.gh')
-rw-r--r--math/nlfit/nlfitdef.gh51
1 files changed, 51 insertions, 0 deletions
diff --git a/math/nlfit/nlfitdef.gh b/math/nlfit/nlfitdef.gh
new file mode 100644
index 00000000..62a542a8
--- /dev/null
+++ b/math/nlfit/nlfitdef.gh
@@ -0,0 +1,51 @@
+# The NLFIT data structure.
+
+# Structure length
+define LEN_NLSTRUCT 35
+
+
+# Structure definition
+define NL_TOL Mem$t[P2$T($1+0)] # Tolerance for convergence
+define NL_LAMBDA Mem$t[P2$T($1+2)] # Damping factor
+define NL_OLDSQ Mem$t[P2$T($1+4)] # Sum resid. squared last iter.
+define NL_SUMSQ Mem$t[P2$T($1+6)] # Sum of residuals squared
+define NL_REFSQ Mem$t[P2$T($1+8)] # Reference sum of squares
+define NL_SCATTER Mem$t[P2$T($1+10)] # Additional scatter
+
+define NL_FUNC Memi[$1+12] # Fitting function
+define NL_DFUNC Memi[$1+13] # Derivative function
+define NL_NPARAMS Memi[$1+14] # Number of parameters
+define NL_NFPARAMS Memi[$1+15] # Number of fitted parameters
+define NL_ITMAX Memi[$1+16] # Max number of iterations
+define NL_ITER Memi[$1+17] # Iteration counter
+define NL_NPTS Memi[$1+18] # Number of points in fit
+
+define NL_PARAM Memi[$1+19] # Pointer to parameter vector
+define NL_OPARAM Memi[$1+20] # Pointer to orignal parameter vector
+define NL_DPARAM Memi[$1+21] # Pointer to parameter change vector
+define NL_DELPARAM Memi[$1+22] # Pointer to delta param vector
+define NL_PLIST Memi[$1+23] # Pointer to parameter list
+define NL_ALPHA Memi[$1+24] # Pointer to alpha matrix
+define NL_COVAR Memi[$1+25] # Pointer to covariance matrix
+define NL_BETA Memi[$1+26] # Pointer to beta matrix
+define NL_TRY Memi[$1+27] # Pointer to trial vector
+define NL_DERIV Memi[$1+28] # Pointer to derivatives
+define NL_CHOFAC Memi[$1+29] # Pointer to Cholesky factorization
+
+# next free location ($1 + 30)
+
+# Access to buffers
+define PLIST Memi[$1] # Parameter list
+define OPARAM Mem$t[P2P($1)] # Original parameter vector
+define PARAM Mem$t[P2P($1)] # Parameter vector
+define DPARAM Mem$t[P2P($1)] # Parameter change vector
+define ALPHA Mem$t[P2P($1)] # Alpha matrix
+define BETA Mem$t[P2P($1)] # Beta matrix
+define TRY Mem$t[P2P($1)] # Trial vector
+define DERIV Mem$t[P2P($1)] # Derivatives
+define CHOFAC Mem$t[P2P($1)] # Cholesky factorization
+define COVAR Mem$t[P2P($1)] # Covariance matrix
+
+# Defined constants alter for tricky problems
+define LAMBDAMAX 1000.0
+define MINITER 3