X-pop3-spooler: POP3MAIL 2.1.0 b 3 961213 -bs- Delivered-To: pcg AT goof DOT com Message-ID: Date: Mon, 16 Mar 1998 00:39:18 +0000 Cc: beastium From: Paul Shirley Subject: Re: paranoia & extra precision [was -fno-float-store in pgcc] In-Reply-To: <19980312074656.14562@cerebro.laendle> MIME-Version: 1.0 X-Mailer: Turnpike (32) Version 3.05 Sender: Marc Lehmann Resent-From: Marc Lehmann Resent-Date: Mon, 4 May 1998 18:11:11 +0200 Resent-To: Marc Lehmann Resent-Message-Id: Status: RO X-Status: A Content-Length: 858 Lines: 19 In message <19980312074656 DOT 14562 AT cerebro DOT laendle>, Marc Lehmann writes >This is why the loop stops at y = 5*10^-17. This is compliant to the ieee >rule that intermediate values have to be at the same precision as the >result. > >Now, when optimizing, gcc tries to keep values in the floating point >registers. But other than, say, the m68k fpu, the x86 fpu has no notion of >different data types, all fpu registers have the same type, long double (80 >bits extended format). 80 bits extended format => 64 bits mantissa => ~19 >digits precision. This puzzles me, in the past I have had to force various C compilers to keep intermediates on the fpu stack (by defining them as long doubles), even when optimising. Is a C compiler really allowed to make this change without explicit permission? (ie not just a general -On flag) -- Paul Shirley