Bob’s comments

            Nlfit sums a second derivative estimate at each point in the matrix PPCC.  This effectively contains all of the information needed to fit a curve through the points.  This matrix is symmetric and positive definite in principle, but it is subject to truncation errors in the sum which make it not positive definite.  This feature shows up in Cholesky inversion as the square root of a negative number after a series of subtractions.  These problems are minimized by making the matrix PPCC multiple precision by making the steps leading to the diagonal of the inverse multiple precision. 

            Multiple Precision.doc .htm– This is a general description of multi-precision fundamentals.

            bailey\Welcome.doc .htm – This is the fastest method for very large number of integers.  The transmp code combined with comments enables the easiest conversion of nlfit to multiple precision.  Bailey uses a real representation of integers to expand in.  This allows larger words and takes advantage of the 1990’s RISC architecture.  The larger word makes multiplication for small digit sizes ~128 faster while an FFT expansion makes very large digit sizes go as T log(T).  – For nlfit, addition of double precision variables to multi-precision reals is the time limiting factor.  Addition should be faster with integers.  For this reason  nlfit’s multi-precision starts from the older work of Brendt.  Of interest is the fact that Bailey uses his conversion method to convert an FFT to multiple precision.  It runs 135 times slower than the double precision version.  He blames this on the large number of subroutine calls needed to do addition and multiplication. 

            fpvsintmult.doc .htm – semi-documentation from the web that integer multiplies in 2007 are as fast as floating point multiplies.

            brent\Welcome.doc .htmBrendt’s multi-precision is used to test the codes that end up in the nlfit version.  Brent has a collection of routines in mp.f combines with error analysis in istkgt.f that enable a relatively painless beginning to multi-precision work and allow the routines needed for nlfit to be compared with working routines.

            Bob\Welcome.doc .htm – The routines needed for nlfit are developed.  These differ from Brendt’s in that they use signed integers in the expansion.  The code segments have almost no subroutine calls which if Bailey is correct should speed them up.  As discussed in Multiple Precision.doc the multiple precision PPCC matrix is a sum of doubles.  The time required to construct this is independent of the number of digits in PPCC.  Subsequent multiplications limit the simplest expansion to 63 terms or 62*14*16/52 ~  267 digits. 

 

From the Web

http://gmplib.org/

The GNU MP Bignum Library

Here you can find information about the GNU Multiple Precision Arithmetic Library, the fastest bignum library on the planet! ...

gmp-4.2.1.tar.gz  -- C code

 

brent\Welcome.doc – This is probably the oldest version.

bailey\Welcome.doc bailey\Welcome.htm

 

Fortran Software for Multiple Precision Arithmetic

David Smith's package for multi-precision arithmetic. Unlike most other packages, the components of these large numbers are stored as REALs.
myweb.lmu.edu/dmsmith/FMLIB.html - 13k - Cached - Similar pages

FMLIBv1.htm

FMZM.tar.gzfortran 90, but see the readme

            Brent pre-dates Smith.  Smith improves speed for some elementary functions

 

High-Precision Software Directory

... quad-double precision and arbitrary precision (also termed "multiprecision" or "multiple precision") software, which has been written over a period of ...

            This has some C, much f90 and links to Bailey.  I have already put Bailey’s f77 stuff into my website.  Bailey uses a DFT method for extended precision.  This is faster when the precision is very large.

·  Bailey's website

·  Li's website

·  Hida's website

 

http://www.mpfr.org/