This is the mail archive of the
java-prs@gcc.gnu.org
mailing list for the Java project.
libgcj/10632: Numerical result differs from Sun JDK
- From: jens dot mueller at ira dot uka dot de
- To: gcc-gnats at gcc dot gnu dot org
- Date: 5 May 2003 21:32:34 -0000
- Subject: libgcj/10632: Numerical result differs from Sun JDK
- Reply-to: jens dot mueller at ira dot uka dot de
>Number: 10632
>Category: libgcj
>Synopsis: Numerical result differs from Sun JDK
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon May 05 21:36:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: jens.mueller@ira.uka.de
>Release: unknown-1.0
>Organization:
>Environment:
>Description:
Please look at the file.
I compiled it with java from Sun (Blackdown) JDK 1.4.1, and ran it
with java from the same package:
jens@debian:~/studium/semester2/info2/ue1java$ java PiApproximationRecursive 20000
3.1415426535898248
Approximierter Wert für pi: 3.1415426535898248
I also compiled it with
gcj --main=PiApproximationRecursive PiApproximationRecursive.java
I got this result:
jens@debian:~/studium/semester2/info2/ue1java$ ./a.out 20000
3.1415426535898208
Approximierter Wert für pi: 3.1415426535898208
I think that the Java Language Standard clearly specifies the order in
which expressions are evaluated. The result of a single floating point
operation is specified in the respective IEEE standards.
So either gcj's or JDK's behavior is broken here ...
I suppose the former.
P.S.: Compiling to a .class file with gcj-wrapper-3.2 and
running with gij (3.0, in that case) gives yet another result ...
-- System Information
Debian Release: testing/unstable
Kernel Version: Linux debian 2.4.20-k7 #1 Tue Jan 14 00:29:06 EST 2003 i686 unknown unknown GNU/Linux
Versions of the packages gcj-3.2 depends on:
ii gcc-3.2 3.2.3-0pre9 The GNU C compiler
ii gcc-3.2-base 3.2.3-0pre9 The GNU Compiler Collection (base package)
ii java-common 0.19 Base of all Java packages
ii libc6 2.3.1-16 GNU C Library: Shared libraries and Timezone
ii libgcj3 3.2.3-0pre9 Java runtime library for use with gcj
ii libgcj3-dev 3.2.3-0pre9 Java development headers and static library
ii zlib1g 1.1.4-11 compression library - runtime
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-java; name="PiApproximationRecursive.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="PiApproximationRecursive.java"
LyoqCiAqIEBhdXRob3IgSmVucyBN/GxsZXIKICoKICovCi8qCiAqIENyZWF0ZWQgb24gMDUuMDUu
MjAwMwogKgogKi8KCi8qKgogKiBAYXV0aG9yIEplbnMgTfxsbGVyCiAqCiAqLwpwdWJsaWMgY2xh
c3MgUGlBcHByb3hpbWF0aW9uUmVjdXJzaXZlIHsKICAgIC8qKgogICAgICogVGhpcyB2YXJpYWJs
ZSBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHJlY3Vyc2lvbiBzdGVwcywgaWYgbm9u
ZSB3YXMgZ2l2ZW4gb24gdGhlCiAgICAgKiBjb21tYW5kIGxpbmUuCiAgICAgKi8KICAgIHB1Ymxp
YyBzdGF0aWMgaW50IERlZmF1bHROdW1iZXJPZlJlY3Vyc2lvblN0ZXBzID0gMTAwMDsKCiAgICAv
KioKICAgICAqIEBwYXJhbSBudW1iZXJPZlN0ZXBzIE51bWJlciBvZiBzdGVwcyBmb3IgYXBwcm94
aW1hdGlvbi4KICAgICAqIEByZXR1cm4gVGhlIGFwcHJveGltYXRlZCB2YWx1ZSBvZiB0aGUgbnVt
YmVyIHBpLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGRvdWJsZSBjYWxjdWxhdGVQaShpbnQg
bnVtYmVyT2ZTdGVwcykgewogICAgICAgIHJldHVybiA0ICogKGRvUG9zaXRpdmVSZWN1cnNpb25T
dGVwKDAsIDEsIG51bWJlck9mU3RlcHMpKTsKICAgIH0KCiAgIAogICAgcHJpdmF0ZSBzdGF0aWMg
ZG91YmxlIGRvUG9zaXRpdmVSZWN1cnNpb25TdGVwKAogICAgICAgIGRvdWJsZSBjdXJyZW50VmFs
dWUsCiAgICAgICAgaW50IGN1cnJlbnREaXZpc29yLAogICAgICAgIGludCBzdGVwc1RvR28pIHsK
ICAgICAgICBpZiAoc3RlcHNUb0dvID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRW
YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkb3VibGUgbmV3VmFsdWUgPSBjdXJy
ZW50VmFsdWUgKyAxLjAgLyBjdXJyZW50RGl2aXNvcjsKICAgICAgICAgICAgaW50IG5ld0Rpdmlz
b3IgPSBjdXJyZW50RGl2aXNvciArIDI7CiAgICAgICAgICAgIHJldHVybiBkb05lZ2F0aXZlUmVj
dXJzaW9uU3RlcChuZXdWYWx1ZSwgbmV3RGl2aXNvciwgc3RlcHNUb0dvIC0gMSk7CiAgICAgICAg
fQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGRvdWJsZSBkb05lZ2F0aXZlUmVjdXJzaW9uU3Rl
cCgKICAgICAgICBkb3VibGUgY3VycmVudFZhbHVlLAogICAgICAgIGludCBjdXJyZW50RGl2aXNv
ciwKICAgICAgICBpbnQgc3RlcHNUb0dvKSB7CiAgICAgICAgaWYgKHN0ZXBzVG9HbyA9PSAwKSB7
CiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgZG91YmxlIG5ld1ZhbHVlID0gY3VycmVudFZhbHVlIC0gMS4wIC8gY3VycmVudERpdmlz
b3I7CiAgICAgICAgICAgIGludCBuZXdEaXZpc29yID0gY3VycmVudERpdmlzb3IgKyAyOwogICAg
ICAgICAgICByZXR1cm4gZG9Qb3NpdGl2ZVJlY3Vyc2lvblN0ZXAobmV3VmFsdWUsIG5ld0Rpdmlz
b3IsIHN0ZXBzVG9HbyAtIDEpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAgKiBAcGFy
YW0gYXJncyBUaGUgZmlyc3QgY29tbWFuZCBsaW5lIGFyZ3VtZW50LCBpZiBnaXZlbiwgc3BlY2lm
aWVzIHRoZSBudW1iZXIgb2YgcmVjdXJzaW9uIHN0ZXBzLgogICAgICAqICBPdGhlcndpc2UsIHRo
ZSBkZWZhdWx0IHZhbHVlIGlzIDIwMDAuCiAgICAgICogCiAgICAgICovCgogICAgcHVibGljIHN0
YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludCBudW1iZXJPZlJlY3Vy
c2lvbnMgPSBEZWZhdWx0TnVtYmVyT2ZSZWN1cnNpb25TdGVwczsKICAgICAgICBpZiAoYXJncy5s
ZW5ndGggPj0gMSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbnVtYmVyT2ZS
ZWN1cnNpb25zID0gSW50ZWdlci5wYXJzZUludChhcmdzWzBdKTsKICAgICAgICAgICAgfSBjYXRj
aCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhp
bmcsIGtlZXAgZGVmYXVsdCB2YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvdWJsZSBw
aSA9IGNhbGN1bGF0ZVBpKG51bWJlck9mUmVjdXJzaW9ucyk7CiAgICAgICAgICAgIFN5c3RlbS5v
dXQucHJpbnRsbihwaSk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXBwcm94aW1p
ZXJ0ZXIgV2VydCBm/HIgcGk6ICIrcGkpOwogICAgICAgIH0KICAgIH0KfQo=