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
>
>