Precision of float and bfloat



Hi,

I have some questions and remarks about precision of floats and bigfloats.

I construct

f(i):=block([u], u:sqrt(10^(2*i)+1)/10^i, print(bfloat(u)),print(float(u)));

then :
(%i3) f(2);
1.000049998750063b0
1.000049998750062

**** this is ok, just slightly strange that float gives a better result 
than bfloat (the right answer is 1.000049998750062496..., so should be 
rounded to ...0062 and not ...0063).
By the way, I cannot find in the documentation (at least in chapter 10, 
floating point) the definition and precision of a float.

(%i4) f(50);
1.0b0
1.0

**** this rounding is ok.


(%i5) f(200);
1.0b0
Maxima encountered a Lisp error:

 Error in PROGN [or a callee]: Can't print a non-number.

Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.

**** bfloat is ok. But float cannot calculate this since some 
intermediate result is too big (once again, is the limit for the 
exponent given in the documentation ?), although the result itself is a 
perfectly nice number. Would it be possible to improve the float 
algorithm to avoid this problem ?


(%i6) f(1000);
1.0b0
0.0

**** this time, no error message, just a stupid result from float ! is 
it a bug, or just a feature ? bfloat is ok.

Eric Reyssat