From: Bruno H. <ha...@il...> - 2000-05-02 18:47:59
|
Raymond Toy writes: > Bruno> Computing 1+double-float-epsilon gives 1+2^(-53)+2^(-105), > Bruno> which takes more than 52 bits to represent. With default > Bruno> IEEE rounding, this rounds to 1+2^(-52). > > So, does this mean that IEEE requires 2*53 bits to store the result so > it can properly round the result? Or do they peek at the operands > first to see how to round the result? Either way, that seems like a > lot of hardware. I assumed relatively simple HW with only a few extra > bits stored. 3 extra bits suffice. Think about it: round-to-even means that all "extra" bits from the second one on must be zero. Otherwise the rounding direction is given by the first extra bit. Thus you can OR all these bits together into one. > I note that with CMUCL (sparc), CLISP, and LWW, 1+double-float-epsilon IS > different from 1. With CMUCL on x86, this isn't true. On FreeBSD or Linux? I remember that at some time, the default FPU mode, set in a process' startup code, was different in FreeBSD and Linux. Bruno |