Xref: news2.mv.net comp.lang.c:54379 comp.lang.c++:69864 comp.os.msdos.djgpp:651 gnu.g++.help:4421 gnu.gcc.help:5635 From: axl AT zedat DOT fu-berlin DOT de (Axel Thimm) Newsgroups: comp.lang.c,comp.lang.c++,gnu.gcc.help,gnu.g++.help,comp.os.msdos.djgpp Subject: Re: float != float and floats as return types Date: Tue, 30 Jan 1996 13:19:40 GMT Organization: FU Berlin Lines: 25 Message-ID: <4el5qt$j5j@fu-berlin.de> References: <4ej9lb$mpc AT fu-berlin DOT de> Reply-To: axl AT zedat DOT fu-berlin DOT de NNTP-Posting-Host: axl.dialup.fu-berlin.de (160.45.218.93) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Many thanks to all who have answered, I have received lots of mail about this. The problem is that gcc sometimes uses the coprocessor registers/stack to store floating point values. This is done in long double precision for i386. This should also happen with 68000 processors. This can be turned off in gcc with the following switch, which is rather self-explaining. -ffloat-store Do not store floating point variables in registers. This prevents undesirable excess precision on ma- chines such as the 68000 where the floating regis- ters (of the 68881) keep more precision than a dou- ble is supposed to have. For most programs, the excess precision does only good, but a few programs rely on the precise defi- nition of IEEE floating point. Use `-ffloat-store' for such programs. === Axel Thimm Freie Universitaet Berlin ===