Why not use a multi-precision program?

I have U-BASIC but it is for DOS.

There are a number of programs. Most are written in C++ and some in FORTRAN 90. I remember a SUN computer having quadruple precision (128 bits with: 112 for fraction and 15 for exponent).

I tried to implement routines published for DOUBLE-DOUBLE but I got strange results. I tried to do Kahan sum routine and found the same trouble. DOUBLE-DOUBLE runs faster than multiprecision methods. I also looked into QUAD-DOUBLE but gave up because of the above problems.

There are packages that use DOUBLE-DOUBLE internally to do linear algebra and get better results. I was trying to do least squares fit for 20 degree polynomial. The problem is known to have an ill-conditioned matrix. Higher precision would help.

I resorted to storing extended result to string and picking out the 15 digits for double and then taking two 15 digit numbers, spliting each of them and multiplying to get 30 digit result. I also resorted to storing a string with 30 digits and spliting it up into integers and doing math with those. They require housekeeping to work. These routines are more proof of concept.

I used a very crude way of getting the various parts of a floating-point number. That is why I asked the question.

I have U-BASIC but it is for DOS.

There are a number of programs. Most are written in C++ and some in FORTRAN 90. I remember a SUN computer having quadruple precision (128 bits with: 112 for fraction and 15 for exponent).

I tried to implement routines published for DOUBLE-DOUBLE but I got strange results. I tried to do Kahan sum routine and found the same trouble. DOUBLE-DOUBLE runs faster than multiprecision methods. I also looked into QUAD-DOUBLE but gave up because of the above problems.

There are packages that use DOUBLE-DOUBLE internally to do linear algebra and get better results. I was trying to do least squares fit for 20 degree polynomial. The problem is known to have an ill-conditioned matrix. Higher precision would help.

I resorted to storing extended result to string and picking out the 15 digits for double and then taking two 15 digit numbers, spliting each of them and multiplying to get 30 digit result. I also resorted to storing a string with 30 digits and spliting it up into integers and doing math with those. They require housekeeping to work. These routines are more proof of concept.

I used a very crude way of getting the various parts of a floating-point number. That is why I asked the question.

## Comment