[kaffe] Simple program shows strange results

Ito Kazumitsu kaz@maczuka.gcd.org
Mon Mar 3 08:58:01 2003


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 <robilad@yahoo.com>

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.