Interestingly enough, if I run either an interpretive kaffe 1.0.7 plus my MIPS patches, or an interpretive MIPS build of the current kaffe.org CVS sources on a little-endian MIPS/Linux box (a MIPS "Malta" board with a 5Kc processor on it), I get::
[EMAIL PROTECTED] BUGS]$ javac Test.java [EMAIL PROTECTED] BUGS]$ ls Hello.class Hello.java Test.class Test.java [EMAIL PROTECTED] BUGS]$ java Test 9.999999 x>pf: 9.999999 9.0 x pe pf =9.0 7.0 9.0 which looks to me to be your "correct" result. So the problem may be unique to x86 platforms, and if so, that vastly reduces the number of places one needs to look for the problem. It may be an x86 JIT bug, for example. Could someone run the test on an interpretive-only x86 kaffe? Kevin K. ----- Original Message ----- From: "Ito Kazumitsu" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, March 03, 2003 5:59 PM Subject: [kaffe] Simple program shows strange results > The following program: > > public class Test { > public static void main(String[] args) { > float x = 0f; > > float pb = 15.0f; > float pc = 2.0f; > float pd = 6.0f; > float pe = 7.0f; > float pf = 9.0f; > > x = (1.0f - (pc / pd)) * pb; > System.err.println(x); > if (x < pe) { > System.err.println("x<pe: " + x + " " + pe); > x = pe; > } > else if (x > pf) { > System.err.println("x>pf: " + x + " " + pf); > x = pf; > } > System.err.println("x pe pf =" + x + " " + pe + " "+ pf); > } > } > > shows the following output when run with j2sdk1.4.0: > > bash$ java Test > 9.999999 > x>pf: 9.999999 9.0 > x pe pf =9.0 7.0 9.0 > > which is what I expect. But when run with kaffe, it shows: > > bash-2.05b$ java Test > 9.999999 > x<pe: 0.0 7.0 > x pe pf =7.0 7.0 9.0 > > The kaffe version is > > Engine: Just-in-time v3 Version: 1.1.x-cvs Java Version: 1.1 > Configuration/Compilation options: > Compile date : Sun Feb 23 11:17:00 JST 2003 > Compile host : ph.maczuka.gcd.org > Install prefix: /usr/local/kaffe > Thread system : unix-jthreads > CC : gcc > CFLAGS : -g -O2 -Wall -Wstrict-prototypes > LDFLAGS : > ChangeLog head: 2003-02-12 Dalibor Topic <[EMAIL PROTECTED]> > > By the way, changing the said program as follows, that is > changing the System.err.println(x) to System.err.println("x=" + x), > I get expected output. > > public class Test { > public static void main(String[] args) { > float x = 0f; > > float pb = 15.0f; > float pc = 2.0f; > float pd = 6.0f; > float pe = 7.0f; > float pf = 9.0f; > > x = (1.0f - (pc / pd)) * pb; > System.err.println("x=" + x); > if (x < pe) { > System.err.println("x<pe: " + x + " " + pe); > x = pe; > } > else if (x > pf) { > System.err.println("x>pf: " + x + " " + pf); > x = pf; > } > System.err.println("x pe pf =" + x + " " + pe + " "+ pf); > } > } > > bash-2.05b$ java Test > x=9.999999 > x>pf: 9.999999 9.0 > x pe pf =9.0 7.0 9.0 > > I wonder what is happening. > > _______________________________________________ > kaffe mailing list > [EMAIL PROTECTED] > http://kaffe.org/cgi-bin/mailman/listinfo/kaffe > _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe