sqrt interpreter Q

Andreas Tobler toa@pop.agri.ch
Thu Feb 7 11:25:00 GMT 2002


Hi,

I see something strange here. (Actually testing my libffi port on darwin)

I compile the following snippet:
import java.math.*;

---
public class my_sqrt {
        public static void main (String[] args) {
        double my_double;
        long my_long;
        int my_int;
        my_long = -1;
        my_double = -1;
        my_int = -1;
        double d_last = (double)(Math.sqrt(my_double));
        long l_last = (long)(Math.sqrt(my_long));
        int l_int =(int)Math.sqrt(my_int);
        System.out.println ("sqrt_int: "+l_int);
        System.out.println ("sqrt_double: "+d_last);
        System.out.println ("sqrt_long: "+l_last);
       }
}
---

With a binary and with sun java I get this (as expected):

[titanium:~] andreast% ./my_sqrt
sqrt_int: 0
sqrt_double: NaN
sqrt_long: 0

Doing it with gij I get the following:

[titanium:~] andreast% gij my_sqrt
sqrt_int: -2147483648
sqrt_double: NaN
sqrt_long: -9223372034707292160

Is this obviously a problem in the libffi ? Or somewhere else?

One strange thing I see is, the integer is the biggest negativ one
defined. The long on the otherside is not the biggest negativ one. (-9223372036854775808)

Any lights?

Thanks,
Andreas



More information about the Java mailing list