Welcome

            ..\NlfitSub

            The complete set of files needed for this folder is in Nlfitsub.zip

1.      NlfitSub is initiated by  ..\NlfitM\NlfitM.vfproj .wpj – There are no quadruple precision operatons in NlfitM

2.      NlfitSub.vfproj .wpj -

a.       NlfitSub writes cons to NLFIT.TMP, then calls POLYSA which reads NLFIT.TMP – puts double precision fA(x), fA(x), and, if requested by the value of mp, multiple precision ∂fA(x) for each value of x in the file FAPFA.TMP

b.      NlfitSub reads FDAT.TMP and FAPFA.TMP as it calculates the first and second derivatives of χ2 with respect to the cons that at this point are only known to POLTSA. 

c.       NlfitSub calls robmin(init,iend) which finds new values of these cons. 

d.      If (iend>0)Go to #a

3.      When IEND becomes zero, NlfitSub includes a part also found in RobMinSA.for that calculates the inverse of the PPCC with no Marquardt parameter so that (PPCC)-1 becomes the error matrix ..\..\ErrorMatrix\Welcome.htm.  The diagonal elements of the error matrix give the standard deviations of the fitting parameters. The error in the fit utilizes the entire error matrix.  This is found for each fitted point in the last part of NlfitM.

4.      For rather typical one dimensional data the code ..\..\robfit\TemplFit\eff\mkgrf.wpj produces a logarithmically spaced set points and the original data in a file ready for plotting by Giraffe. ..\..\robfit\Giraffe

Old

NlfitSub is a stand alone code that is called by begins with cI, Npow, and the values {fi, erri, fA(xi), fA(xi)/∂cI,k} and returns χ2I and  cI+1.  The chiders and robmin routines are incorporated into nlfitsub as subroutines rather than as standalone codes saving some system overhead.  chiders\Welcome.docx .htm Robmin\RobminSA\Welcome.doc .htm. Nlfitsub is initiated by NlfitM.  ..\NlfitM\Welcome.htm.  Then it initiates PolySA many times.  ..\PolySA\Welcome to POLYSA.htm.              

1.      NlfitSub.wpj – makes NlfitSub.exe in this directory.  Uses robminW – This differs from robmin only by the commenting out of a few quadruple calls.

2.       

3.      NlfitSubM.wpj –DM--

 

  1. NlfitSubSL.wpj – Makes NlfitSubSL – (..\..\..\MultiplePrecision\Bob\ShiftLess\Welcome.htm) The multiple precision code ~ 10% slower does not need double precision variables that match the IEEE standard – different numbers of bits for exponents and mantissa can be used within limits.
  2. NlfitSubq.vfproj – makes \watcom\binnt\NlfitSub.  Uses quad precision sminv and second derivatives.  The PolySA should return double precision partials.
  3. NlfitSubqq.vfproj – makes \watcom\binnt\NlfitSub.exe, differs from #1 above in that the derivatives of fA are quadruple precision requiring the I-10 compiler for POLYSA.
  4. NlfitSubM.vfproj NlfitSubM.wpj This routine uses a double precision ∂χ2/∂ck, PC, and multiple precision ∂2χ2/(ck∂cj), MPPPCC.  This routine is similar to the Cambio robmin, but the matrix inversions use MPSminv.  The matrix is constructed in the subroutine ChiDsub by first making all of the elements if Öw´fA/∂ck multiple precision, then constructing the multiple precsion PPCC array from these.  The values in MatrixInverse\Cholesky\Singular.doc .htm indicate that this matrix “almost always” has an inverse.  Testing in ..\..\robfit\TemplFit\eff\TestingNlfit.docx shows that the method can solve for all coefficients in pade1´exp(pade2) starting from a set of zeroes and one coefficient guess to give the denominator in the exponent a chance.  The I-10 version of f-90 requires an allocatable statement, while the Watcom version gives an error if it encounter this.  These are in:

a.       NlfitSubM.for

b.      ..\..\chiders\ChiDsub.for

c.       ..\..\..\optimization\Robmin\Cambio\RobminSA\MProbmin.for

8.      NlfitSubC.wpj – makes NlfitSubC.exe.  Double precision extendable with Bailey’s routines. NlfitSub needs to open and close unit 10, simple rewinding is not enough.

  1. NlfitsubCq.vfproj  - makes \watcom\binnt\NlfitSub.exe.  Quad precision ∂2χ2/(∂ck∂ck) – Cambio is in extended precision (half way between a and b)