[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#255525: gij-3.3: Incorrect result due to computations in extended precision on x86



Package: gij-3.3
Version: 1:3.3.4-1
Severity: normal

Concerning the following Java source:

------------------------------------------------------------------
// $Id: test.java 3734 2004-06-21 15:36:52Z lefevre $

public class test {
    public static void main(String[] args) throws Exception {
        test t = new test();
        t.doTest();
    }

    volatile double x, y, z, d;

    public void doTest() {
        x = 9007199254740994.0; /* 2^53 + 2 */
        y = 1.0 - 1/65536.0;
        z = x + y;
        d = z - x;
        System.out.println("z = " + z);
        System.out.println("d = " + d);
    }
}
------------------------------------------------------------------

I've compiled it with "gcj -C test.java" (GCC 3.3.4).

Both IBM's and Sun's JVM give the correct result:

greux:~/wd/src/fp> /global/greux/lefevre/IBMJava2-131/jre/bin/java test
z = 9.007199254740994E15
d = 0.0

greux:~/wd/src/fp> /usr/local/j2re1.4.1/bin/java test
z = 9.007199254740994E15
d = 0.0

but not gij-wrapper:

greux:~/wd/src/fp> /usr/bin/gij-wrapper-3.3 test
z = 9.007199254740996E15
d = 2.0

gij-wrapper (or ... ?) should switch the FPU of the x86 processor
(Pentium III in my case) to rounding in double precision to avoid the
effect of the "double rounding" (you may find some information about
this effect here: <http://www.srware.com/linux_numerics.txt>).

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.6
Locale: LANG=POSIX, LC_CTYPE=en_US.ISO8859-1

Versions of packages gij-3.3 depends on:
ii  gcc-3.3-base                1:3.3.4-1    The GNU Compiler Collection (base 
ii  libc6                       2.3.2.ds1-13 GNU C Library: Shared libraries an
ii  libgcc1                     1:3.3.4-1    GCC support library
ii  libgcj4                     1:3.3.4-1    Java runtime library for use with 
ii  zlib1g                      1:1.2.1.1-3  compression library - runtime

-- no debconf information



Reply to: