arbitrary precision floats?

Michael Vanier mvanier at cs.caltech.edu
Sun Nov 3 07:41:33 UTC 2002


I agree with your criticisms.  However, what I want is to be able to set
the float precision on a project-wide basis.  In other words, I want to be
able to say "all BigFloats now have 10 decimal places" and do some
computations.  If I suspect that the results are incorrect due to
compounding of numerical errors, I want to be able to change this to 100
decimal places in one place only and recompute my results.  It may not be
thread safe or modular, but it's what I want to be able to do.  Having to
adjust float precision in a zillion different places is simply
unmaintainable.

Mike

> From: Lex Spoon <lex at cc.gatech.edu>
> Date: Sat, 2 Nov 2002 15:11:08 -0500
> 
> "Viktor" <vi.ki at worldonline.cz> wrote:
> > > The interface might look like:
> > > 
> > >     BigFloat setPrecision: 100. "100 decimal place precision."
> > >     a := BigFloat fromFloat: 5.0.
> > 
> > 
> > Not thread-safe.
> > 
> 
> It's also not modular.  What happens when one module wants 100 places
> and another wants 1000 ?  One of them will win and--especially if it's
> the one with 100 places--the other module will suffer.
> 
> Per-float precision seems to be the most direct thing to do.  You have
> to decide what precision each operation will return.  One reasonable
> thing is to return the precision of the more precise number, but then
> again some operations may want to increase or decrease precision.
> 
> 
> I don't think adding lexical support would be anywhere close to as
> difficult as implementing all the floating-point operations is going to
> be!  Look at class Scanner....  I guess you might do:
> 
> 	1.1e10p100
> 
> For a number with 100 bits of precision.
> 
> Oh, and if you specifically want *decimal* numbers, then it is likely
> that the ANSI ScaledDecimal will do what you want.  Except *possibly*
> for the lexical changes, I think this is available in the Squeak ANSI
> patches.
> 
> 
> 
> -Lex
> 
> 



More information about the Squeak-dev mailing list