float lower limit at given precision

Richard B. Kreckel kreckel at ginac.de
Fri Feb 24 10:08:36 CET 2012


On 02/24/2012 01:48 AM, Slava Feshchenko wrote:
> The mantissa [is] stored in binary, as might be imagined from the fact
> precisions are expressed in bits. One consequence of this is that decimal
> fractions like 0.1 cannot be represented exactly. The same is true of plain
> IEEE double floats. This makes both highly unsuitable for calculations
> involving money or other values that should be exact decimal fractions.
> (Suitably scaled integers, or perhaps rationals, are better choices.)
> Therefore, in the absence of complete understanding of that person's
> computation requirements, especially if he stated that he needs high
> precision calculations, I thought it would be prudent to warn him of this
> limitation of mpf_t type. In the end it's up to him to decide what base is
> acceptable: 10 or 2 and wheather he wants to specify precision in bits or
> decimals digits.

Jacopo said he is "a student in theoretical physics" on a quest to 
"diagonalise a matrix with great precision" and, in particular, "to chop 
off the small elements from a vector". He did /not/ say he wants to chop 
off the small decimal digits of elements of a vector and he is /not/ 
doing "calculations involving money or other values that should be exact 
decimal fractions".

I'm quite sure that in this context the issue of base 10 vs. base 2 is a 
complete red herring. His problem can be solved in any base, and any 
base other than base 2 is a waste of CPU cycles.

Richard B. Kreckel

More information about the gmp-discuss mailing list