Re: [Maxima-commits] CVS: maxima/src clmacs.lisp,1.6,1.7



Oops, I'm wrong, Stavros is right.

My calculation gave (for IEEE double)
2.220446049250313d-16
half of that is
1.1102230246251565d-16
   but that is slightly too small.
The slightly larger number is correct...
long-float-epsilon  value: 1.1102230246251568d-16

Stavros Macrakis wrote:

>>3. Something having to do with finding the smallest epsilon such that
>>(+ 1.0d0 epsilon) is different from 1.0d0.  I think this can be
>>computed at read time on any of the participating lisps as
>>
>>   #. (do ((i 0 (1+ i)))
>>     ((= (+ 1.0d0 (expt 2.0d0 (- i)))1.0d0)
>>      (expt 2.0d0 (- 1 i))))
>>
> 
> This actually gives about twice the true eps both in IEEE arithmetic
> (as in GCL) and in x86 extended precision (which no Lisp should be 
> using, but...).  In IEEE arithmetic, the mantissa of eps is of the
> form 0.100...001; in x86 extended precision (with a store after each
> operation), it is of the form 0.100...010...001.
> 
> Someone (Camm?) sent around correct code for this case, which will
> find the true eps regardless of its form (at least on machines with
> floating-point base of 2 -- System/360, anyone? :-) ).
> 
>       -s
> 
>