aboutsummaryrefslogtreecommitdiff
path: root/math/nlfit/nldumpr.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /math/nlfit/nldumpr.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'math/nlfit/nldumpr.x')
-rw-r--r--math/nlfit/nldumpr.x160
1 files changed, 160 insertions, 0 deletions
diff --git a/math/nlfit/nldumpr.x b/math/nlfit/nldumpr.x
new file mode 100644
index 00000000..a81c6366
--- /dev/null
+++ b/math/nlfit/nldumpr.x
@@ -0,0 +1,160 @@
+include "nlfitdefr.h"
+
+# NL_DUMP -- Dump NLFIT structure to a file
+
+procedure nl_dumpr (fd, nl)
+
+int fd # file descriptor
+pointer nl # NLFIT descriptor
+
+int i, npars, nfpars
+
+begin
+ # Test NLFIT pointer
+ if (nl == NULL) {
+ call fprintf (fd, "\n****** nl_dump: Null NLFIT pointer\n")
+ call flush (fd)
+ return
+ }
+
+ # File and NLFIT descriptors
+ call fprintf (fd, "\n****** nl_dump: (fd=%d), (nl=%d)\n")
+ call pargi (fd)
+ call pargi (nl)
+ call flush (fd)
+
+ # Dump function and derivative addresses
+ call fprintf (fd, "Fitting function pointer = %d\n")
+ call pargi (NL_FUNC (nl))
+ call fprintf (fd, "Derivative function pointer = %d\n")
+ call pargi (NL_DFUNC (nl))
+ call flush (fd)
+
+ # Number of parameters
+ npars = NL_NPARAMS (nl)
+ nfpars = NL_NFPARAMS (nl)
+ call fprintf (fd, "Number of parameters = %d\n")
+ call pargi (npars)
+ call fprintf (fd, "Number of fitted parameters = %d\n")
+ call pargi (nfpars)
+ call flush (fd)
+
+ # Fit parameters
+ call fprintf (fd, "Max number of iterations = %d\n")
+ call pargi (NL_ITMAX (nl))
+ call fprintf (fd, "Tolerance for convergence = %g\n")
+ call pargr (NL_TOL (nl))
+ call flush (fd)
+
+ # Sums
+ call fprintf (fd, "Damping factor = %g\n")
+ call pargr (NL_LAMBDA (nl))
+ call fprintf (fd, "Sum of residuals squared last iteration = %g\n")
+ call pargr (NL_OLDSQ (nl))
+ call fprintf (fd, "Sum of residuals squared = %g\n")
+ call pargr (NL_SUMSQ (nl))
+ call flush (fd)
+
+ # Counters
+ call fprintf (fd, "Iteration counter = %d\n")
+ call pargi (NL_ITER (nl))
+ call fprintf (fd, "Number of points in fit = %d\n")
+ call pargi (NL_NPTS (nl))
+ call flush (fd)
+
+ # Parameter values
+ call fprintf (fd, "Parameter values (%d):\n")
+ call pargi (NL_PARAM (nl))
+ if (NL_PARAM (nl) != NULL) {
+ do i = 1, npars {
+ call fprintf (fd, "%d -> %g\n")
+ call pargi (i)
+ call pargr (Memr[NL_PARAM (nl) + i - 1])
+ }
+ } else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Parameter errors
+ call fprintf (fd, "Parameter errors (%d):\n")
+ call pargi (NL_DPARAM (nl))
+ if (NL_DPARAM (nl) != NULL) {
+ do i = 1, npars {
+ call fprintf (fd, "%d -> %g\n")
+ call pargi (i)
+ call pargr (Memr[NL_DPARAM (nl) + i - 1])
+ }
+ } else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Parameter list
+ call fprintf (fd, "Parameter list (%d):\n")
+ call pargi (NL_PLIST (nl))
+ if (NL_PLIST (nl) != NULL) {
+ do i = 1, npars {
+ call fprintf (fd, "%d -> %d\n")
+ call pargi (i)
+ call pargi (Memi[NL_PLIST (nl) + i - 1])
+ }
+ } else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Alpha matrix
+ call fprintf (fd, "Alpha matrix (%d):\n")
+ call pargi (NL_ALPHA (nl))
+ if (NL_ALPHA (nl) != NULL)
+ call nl_adumpr (fd, Memr[NL_ALPHA (nl)], nfpars, nfpars)
+ else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Beta matrix
+ call fprintf (fd, "Beta matrix (%d):\n")
+ call pargi (NL_BETA (nl))
+ if (NL_BETA (nl) != NULL)
+ call nl_adumpr (fd, Memr[NL_BETA (nl)], nfpars, 1)
+ else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Covariance matrix
+ call fprintf (fd, "Covariance matrix (%d):\n")
+ call pargi (NL_COVAR (nl))
+ if (NL_COVAR (nl) != NULL)
+ call nl_adumpr (fd, Memr[NL_COVAR (nl)], nfpars, nfpars)
+ else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+
+ # Cholesky factorization
+ call fprintf (fd, "Cholesky factorization matrix (%d):\n")
+ call pargi (NL_CHOFAC (nl))
+ if (NL_CHOFAC (nl) != NULL)
+ call nl_adumpr (fd, Memr[NL_CHOFAC (nl)], nfpars, nfpars)
+ else
+ call fprintf (fd, " Null pointer\n")
+ call flush (fd)
+end
+
+
+# NL_ADUMP -- Dump array to file
+
+procedure nl_adumpr (fd, a, nrows, ncols)
+
+int fd # file descriptor
+real a[nrows, ncols] # array
+int nrows, ncols # dimension
+
+int i, j
+
+begin
+ do i = 1, nrows {
+ do j = 1, ncols {
+ call fprintf (fd, "%g ")
+ call pargr (a[i, j])
+ }
+ call fprintf (fd, "\n")
+ }
+end