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 .htm – Brendt’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.
|
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. |
FMZM.tar.gz – fortran 90, but see the readme
Brent pre-dates Smith. Smith improves speed for some elementary functions
...
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.