class DoublePrint {

  static final double[] dcases = {
    0.0,
    Double.longBitsToDouble(0x8000000000000000L),
    Double.NaN,
    Double.POSITIVE_INFINITY,
    Double.NEGATIVE_INFINITY,
    Double.MIN_VALUE,
    Double.MAX_VALUE,
    123.75,
    -0.9e7,
    1e-3,
    1.05e9,
  };

  static final float[] fcases = {
    0.0f,
    Float.intBitsToFloat(0x80000000),
    Float.NaN,
    Float.POSITIVE_INFINITY,
    Float.NEGATIVE_INFINITY,
    Float.MIN_VALUE,
    Float.MAX_VALUE,
    123.75f,
    1e7f,
    -1e-3f,
  };

  public static void main(String[] args) {
    System.out.println("Double values:");
    System.out.println("  NaN -> " +
      Long.toHexString(
      Double.doubleToLongBits(
      Double.longBitsToDouble(0x7ff000abacab0000L))));
    for (int k = 0; k < dcases.length; k++) {
      System.out.println("  " + dcases[k]);
    }
    System.out.println("  0.0/0.0 = " + (dmeth() / dmeth()));

    System.out.println();

    System.out.println("Float values:");
    System.out.println("  NaN -> " +
      Integer.toHexString(
      Float.floatToIntBits(
      Float.intBitsToFloat(0x7f80cb01))));
    for (int k = 0; k < fcases.length; k++) {
      System.out.println("  " + fcases[k]);
    }
    System.out.println("  0.0/0.0 = " + (dmeth() / dmeth()));
    System.exit(77); // SKIP it while we decide what to do about it
    // Note (Un)expected output below
  }

  public static double dmeth() {
    return 0.0;
  }

  public static float fmeth() {
    return 0.0f;
  }
}

/* Expected output:
Double values:
  NaN -> 7ff8000000000000
  0.0
  -0.0
  NaN
  Infinity
  -Infinity
  4.9406564584124654E-324
  1.7976931348623157E308
  123.75
  -9000000.0
  0.001
  1.05E9
  0.0/0.0 = NaN

Float values:
  NaN -> 7fc00000
  0.0
  -0.0
  NaN
  Infinity
  -Infinity
  1.4012985E-45
  3.4028235E38
  123.75
  1.0E7
  -0.001
  0.0/0.0 = NaN
*/

// On Solaris/sparc with Sun JDK:
/* (Un)Expected output:
Double values:
  NaN -> 7ff8000000000000
  0.0
  -0.0
  NaN
  Infinity
  -Infinity
  4.9E-324             <--- this is wrong
  1.7976931348623157E308
  123.75
  -9000000.0
  0.0010               <--- this is wrong
  1.05E9
  0.0/0.0 = NaN

Float values:
  NaN -> 7fc00000
  0.0
  -0.0
  NaN
  Infinity
  -Infinity
  1.4E-45               <--- this is wrong
  3.4028235E38
  123.75
  1.0E7
  -0.0010               <--- this is wrong
  0.0/0.0 = NaN
*/

@@ -1274,114 +1274,8 @@
 ));%0A
-    System.exit(77); // SKIP it while we decide what to do about it%0A    // Note (Un)expected output below%0A
   %7D%0A
@@ -1513,16 +1513,36 @@
 654E-324
+%09%3C--- kaffe is wrong
 %0A  1.797
@@ -1704,16 +1704,38 @@
 2985E-45
+%09%09%09%3C--- kaffe is wrong
 %0A  3.402
@@ -1943,39 +1943,8 @@
 -324
-             %3C--- this is wrong
 %0A  1
@@ -1991,24 +1991,25 @@
 0.0%0A  0.0010
+%09
             
@@ -2008,36 +2008,35 @@
            %3C--- 
-this
+JDK
  is wrong%0A  1.05
@@ -2142,41 +2142,8 @@
 E-45
-               %3C--- this is wrong
 %0A  3
@@ -2180,16 +2180,17 @@
  -0.0010
+%09
         
@@ -2205,12 +2205,11 @@
 --- 
-this
+JDK
  is 

Update comments in this test.