Big float Round off errors



Barton Willis wrote:
> Try:
> 
> (%i1) fpprec : 15;
> (%o1) 15
> 
> 
> (%i2) :lisp(defun $bigfloatepsilon () ($bfloat (div 1 (expt 2 fpprec)))));
> $BIGFLOATEPSILON
> 
> (%i2) e : bigfloatepsilon();
> (%o2) 2.22044604925031b-16

And, just for completeness, fpprec (an internal Lisp variable) is 
derived from $fpprec (aka Maxima's fpprec in base 10) via:

(+ 2 (integer-length (expt 10. $fpprec))

That is, compute 10^fpprec, figure out how many bits are needed to 
represent that number, and add 2.

Ray