Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug
Bug#: 14367
Product:  
Component:  
Status: RESOLVED
Resolution: DUPLICATE of bug 323
Assigned To: Not yet assigned to anyone <unassigned@gcc.gnu.org>
Host:
Reported against  
Priority:  
Severity:  
Target Milestone:  
 
 
Target:
Reporter: Diab Jerius <djerius@cfa.harvard.edu>
Add CC:
CC:
Remove selected CCs
Build:
URL:
Summary:
Keywords:
Known to work:
Known to fail:

Attachment Description Type Created Size Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 14367 depends on: Show dependency tree
Show dependency graph
Bug 14367 blocks:

Additional Comments:






View Bug Activity   |   Format For Printing   |   Clone This Bug


Description:   Last confirmed: Opened: 2004-03-01 16:56
A floating point calculation returns different results when performed in a
class's *= method vs. in main().  I'm not sure if the *= method is special, but
that's where it shows up.  The inconsistency is triggered by particular values
used in the calculation. 

I've seen this behavior in 3.3.3, and 3.2.3.  It does not appear in 3.1.
I've seen the behavior in the Debain (unstable) version of 3.3.3, as well as in
a personally compiled version of 3.2.3.  The resultant compiled code exhibits
the inconsistency on an AthlonMP, an Athlon, and an Intel Xeon.


At the end of this message is a uuencoded preprocessed program which exhibits
the behavior.  The code prints out the input and resultant values for the
calculation as done in the *= method and in main.  The resultant values should
be the same, but differ.  On my machines, here's the output:

1> 1582081461419629824 = 1804289383 * 1681692777 - 846930886 * 1714636915
2> 1582081461419630080 = 1804289383 * 1681692777 - 846930886 * 1714636915
1 != 2

The second value is the correct one.


malaise% /usr/bin/g++ -v -save-temps -O2 std_complex_dbl.cc -o std_complex_dbl
Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.3/specs
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info
--with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib
--enable-nls --without-included-gettext --enable-__cxa_atexit
--enable-clocale=gnu --enable-debug --enable-java-gc=boehm
--enable-java-awt=xlib --enable-objc-gc i486-linux
Thread model: posix
gcc version 3.3.3 (Debian)
 /usr/lib/gcc-lib/i486-linux/3.3.3/cc1plus -E -D__GNUG__=3 -quiet -v
-D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3 -D_GNU_SOURCE
std_complex_dbl.cc -O2 std_complex_dbl.ii
ignoring nonexistent directory "/usr/i486-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/3.3
 /usr/include/c++/3.3/i486-linux
 /usr/include/c++/3.3/backward
 /usr/local/include
 /usr/lib/gcc-lib/i486-linux/3.3.3/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-linux/3.3.3/cc1plus -fpreprocessed std_complex_dbl.ii
-quiet -dumpbase std_complex_dbl.cc -auxbase std_complex_dbl -O2 -version -o
std_complex_dbl.s
GNU C++ version 3.3.3 (Debian) (i486-linux)
        compiled by GNU C version 3.3.3 (Debian).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
 as -V -Qy -o std_complex_dbl.o std_complex_dbl.s
GNU assembler version 2.14.90.0.7 (i386-linux) using BFD version 2.14.90.0.7
20031029 Debian GNU/Linux
 /usr/lib/gcc-lib/i486-linux/3.3.3/collect2 --eh-frame-hdr -m elf_i386
-dynamic-linker /lib/ld-linux.so.2 -o std_complex_dbl
/usr/lib/gcc-lib/i486-linux/3.3.3/../../../crt1.o
/usr/lib/gcc-lib/i486-linux/3.3.3/../../../crti.o
/usr/lib/gcc-lib/i486-linux/3.3.3/crtbegin.o -L/usr/lib/gcc-lib/i486-linux/3.3.3
-L/usr/lib/gcc-lib/i486-linux/3.3.3/../../.. std_complex_dbl.o -lstdc++ -lm
-lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc-lib/i486-linux/3.3.3/crtend.o
/usr/lib/gcc-lib/i486-linux/3.3.3/../../../crtn.o

begin 644 std_complex_dbl.ii.bz2
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
A4MW@<*HY.V$`D!D$D!_J$B<^#8213_Q=R13A0D*0X(/`
`
end

------- Comment #1 From Andrew Pinski 2004-03-01 17:28 -------
In fact neither is correct (well really both are as for rounding errors which
can happen and does).
The correct answer is 1582081461419629901.
But really this is a non-bug as you are dealing with FP and x86 where different
precision can happen.
This is a dup of bug 323.

*** This bug has been marked as a duplicate of 323 ***

Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug