7092404: Add Math.nextDown and Double.isFinite

Reviewed-by: mduigou
This commit is contained in:
Joe Darcy 2011-09-21 23:22:11 -07:00
parent 035522bd7a
commit 82e488e3ae
36 changed files with 269 additions and 142 deletions

@ -276,7 +276,7 @@ public final class Double extends Number implements Comparable<Double> {
* 7.19.6.1; however, the output of this method is more * 7.19.6.1; however, the output of this method is more
* tightly specified. * tightly specified.
*/ */
if (!FpUtils.isFinite(d) ) if (!isFinite(d) )
// For infinity and NaN, use the decimal output. // For infinity and NaN, use the decimal output.
return Double.toString(d); return Double.toString(d);
else { else {
@ -548,7 +548,7 @@ public final class Double extends Number implements Comparable<Double> {
* @return {@code true} if the value of the argument is NaN; * @return {@code true} if the value of the argument is NaN;
* {@code false} otherwise. * {@code false} otherwise.
*/ */
static public boolean isNaN(double v) { public static boolean isNaN(double v) {
return (v != v); return (v != v);
} }
@ -560,10 +560,24 @@ public final class Double extends Number implements Comparable<Double> {
* @return {@code true} if the value of the argument is positive * @return {@code true} if the value of the argument is positive
* infinity or negative infinity; {@code false} otherwise. * infinity or negative infinity; {@code false} otherwise.
*/ */
static public boolean isInfinite(double v) { public static boolean isInfinite(double v) {
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY); return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
} }
/**
* Returns {@code true} if the argument is a finite floating-point
* value; returns {@code false} otherwise (for NaN and infinity
* arguments).
*
* @param d the {@code double} value to be tested
* @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise.
* @since 1.8
*/
public static boolean isFinite(double d) {
return Math.abs(d) <= DoubleConsts.MAX_VALUE;
}
/** /**
* The value of the Double. * The value of the Double.
* *

@ -459,7 +459,7 @@ public final class Float extends Number implements Comparable<Float> {
* @return {@code true} if the argument is NaN; * @return {@code true} if the argument is NaN;
* {@code false} otherwise. * {@code false} otherwise.
*/ */
static public boolean isNaN(float v) { public static boolean isNaN(float v) {
return (v != v); return (v != v);
} }
@ -471,10 +471,25 @@ public final class Float extends Number implements Comparable<Float> {
* @return {@code true} if the argument is positive infinity or * @return {@code true} if the argument is positive infinity or
* negative infinity; {@code false} otherwise. * negative infinity; {@code false} otherwise.
*/ */
static public boolean isInfinite(float v) { public static boolean isInfinite(float v) {
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY); return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
} }
/**
* Returns {@code true} if the argument is a finite floating-point
* value; returns {@code false} otherwise (for NaN and infinity
* arguments).
*
* @param f the {@code float} value to be tested
* @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise.
* @since 1.8
*/
public static boolean isFinite(float f) {
return Math.abs(f) <= FloatConsts.MAX_VALUE;
}
/** /**
* The value of the Float. * The value of the Float.
* *

@ -1649,6 +1649,79 @@ public final class Math {
} }
} }
/**
* Returns the floating-point value adjacent to {@code d} in
* the direction of negative infinity. This method is
* semantically equivalent to {@code nextAfter(d,
* Double.NEGATIVE_INFINITY)}; however, a
* {@code nextDown} implementation may run faster than its
* equivalent {@code nextAfter} call.
*
* <p>Special Cases:
* <ul>
* <li> If the argument is NaN, the result is NaN.
*
* <li> If the argument is negative infinity, the result is
* negative infinity.
*
* <li> If the argument is zero, the result is
* {@code -Double.MIN_VALUE}
*
* </ul>
*
* @param d starting floating-point value
* @return The adjacent floating-point value closer to negative
* infinity.
* @since 1.8
*/
public static double nextDown(double d) {
if (Double.isNaN(d) || d == Double.NEGATIVE_INFINITY)
return d;
else {
if (d == 0.0)
return -Double.MIN_VALUE;
else
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
((d > 0.0d)?-1L:+1L));
}
}
/**
* Returns the floating-point value adjacent to {@code f} in
* the direction of negative infinity. This method is
* semantically equivalent to {@code nextAfter(f,
* Float.NEGATIVE_INFINITY)}; however, a
* {@code nextDown} implementation may run faster than its
* equivalent {@code nextAfter} call.
*
* <p>Special Cases:
* <ul>
* <li> If the argument is NaN, the result is NaN.
*
* <li> If the argument is negative infinity, the result is
* negative infinity.
*
* <li> If the argument is zero, the result is
* {@code -Float.MIN_VALUE}
*
* </ul>
*
* @param f starting floating-point value
* @return The adjacent floating-point value closer to negative
* infinity.
* @since 1.8
*/
public static float nextDown(float f) {
if (Float.isNaN(f) || f == Float.NEGATIVE_INFINITY)
return f;
else {
if (f == 0.0f)
return -Float.MIN_VALUE;
else
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
((f > 0.0f)?-1:+1));
}
}
/** /**
* Return {@code d} &times; * Return {@code d} &times;

@ -1396,6 +1396,64 @@ public final class StrictMath {
return Math.nextUp(f); return Math.nextUp(f);
} }
/**
* Returns the floating-point value adjacent to {@code d} in
* the direction of negative infinity. This method is
* semantically equivalent to {@code nextAfter(d,
* Double.NEGATIVE_INFINITY)}; however, a
* {@code nextDown} implementation may run faster than its
* equivalent {@code nextAfter} call.
*
* <p>Special Cases:
* <ul>
* <li> If the argument is NaN, the result is NaN.
*
* <li> If the argument is negative infinity, the result is
* negative infinity.
*
* <li> If the argument is zero, the result is
* {@code -Double.MIN_VALUE}
*
* </ul>
*
* @param d starting floating-point value
* @return The adjacent floating-point value closer to negative
* infinity.
* @since 1.8
*/
public static double nextDown(double d) {
return Math.nextDown(d);
}
/**
* Returns the floating-point value adjacent to {@code f} in
* the direction of negative infinity. This method is
* semantically equivalent to {@code nextAfter(f,
* Float.NEGATIVE_INFINITY)}; however, a
* {@code nextDown} implementation may run faster than its
* equivalent {@code nextAfter} call.
*
* <p>Special Cases:
* <ul>
* <li> If the argument is NaN, the result is NaN.
*
* <li> If the argument is negative infinity, the result is
* negative infinity.
*
* <li> If the argument is zero, the result is
* {@code -Float.MIN_VALUE}
*
* </ul>
*
* @param f starting floating-point value
* @return The adjacent floating-point value closer to negative
* infinity.
* @since 1.8
*/
public static float nextDown(float f) {
return Math.nextDown(f);
}
/** /**
* Return {@code d} &times; * Return {@code d} &times;
* 2<sup>{@code scaleFactor}</sup> rounded as if performed * 2<sup>{@code scaleFactor}</sup> rounded as if performed

@ -50,7 +50,6 @@ import java.text.NumberFormat;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
import sun.misc.FormattedFloatingDecimal; import sun.misc.FormattedFloatingDecimal;
@ -3417,7 +3416,7 @@ public final class Formatter implements Closeable, Flushable {
// Method assumes that d > 0. // Method assumes that d > 0.
private String hexDouble(double d, int prec) { private String hexDouble(double d, int prec) {
// Let Double.toHexString handle simple cases // Let Double.toHexString handle simple cases
if(!FpUtils.isFinite(d) || d == 0.0 || prec == 0 || prec >= 13) if(!Double.isFinite(d) || d == 0.0 || prec == 0 || prec >= 13)
// remove "0x" // remove "0x"
return Double.toHexString(d).substring(2); return Double.toHexString(d).substring(2);
else { else {

@ -202,9 +202,11 @@ public class FpUtils {
* @param d the {@code double} value to be tested * @param d the {@code double} value to be tested
* @return {@code true} if the argument is a finite * @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise. * floating-point value, {@code false} otherwise.
* @deprecated Use Double.isFinite.
*/ */
@Deprecated
public static boolean isFinite(double d) { public static boolean isFinite(double d) {
return Math.abs(d) <= DoubleConsts.MAX_VALUE; return Double.isFinite(d);
} }
/** /**
@ -215,9 +217,11 @@ public class FpUtils {
* @param f the {@code float} value to be tested * @param f the {@code float} value to be tested
* @return {@code true} if the argument is a finite * @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise. * floating-point value, {@code false} otherwise.
* @deprecated Use Float.isFinite.
*/ */
@Deprecated
public static boolean isFinite(float f) { public static boolean isFinite(float f) {
return Math.abs(f) <= FloatConsts.MAX_VALUE; return Float.isFinite(f);
} }
/** /**
@ -746,17 +750,11 @@ public class FpUtils {
* @return The adjacent floating-point value closer to negative * @return The adjacent floating-point value closer to negative
* infinity. * infinity.
* @author Joseph D. Darcy * @author Joseph D. Darcy
* @deprecated Use Math.nextDown.
*/ */
@Deprecated
public static double nextDown(double d) { public static double nextDown(double d) {
if( isNaN(d) || d == Double.NEGATIVE_INFINITY) return Math.nextDown(d);
return d;
else {
if (d == 0.0)
return -Double.MIN_VALUE;
else
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
((d > 0.0d)?-1L:+1L));
}
} }
/** /**
@ -783,17 +781,11 @@ public class FpUtils {
* @return The adjacent floating-point value closer to negative * @return The adjacent floating-point value closer to negative
* infinity. * infinity.
* @author Joseph D. Darcy * @author Joseph D. Darcy
* @deprecated Use Math.nextDown.
*/ */
@Deprecated
public static double nextDown(float f) { public static double nextDown(float f) {
if( isNaN(f) || f == Float.NEGATIVE_INFINITY) return Math.nextDown(f);
return f;
else {
if (f == 0.0f)
return -Float.MIN_VALUE;
else
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
((f > 0.0f)?-1:+1));
}
} }
/** /**

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -30,7 +30,6 @@
import java.util.regex.*; import java.util.regex.*;
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
public class ParseHexFloatingPoint { public class ParseHexFloatingPoint {
@ -227,7 +226,7 @@ public class ParseHexFloatingPoint {
new PairSD("0x1.000000000000001p-1075", Double.MIN_VALUE), new PairSD("0x1.000000000000001p-1075", Double.MIN_VALUE),
// More subnormal rounding tests // More subnormal rounding tests
new PairSD("0x0.fffffffffffff7fffffp-1022", FpUtils.nextDown(DoubleConsts.MIN_NORMAL)), new PairSD("0x0.fffffffffffff7fffffp-1022", Math.nextDown(DoubleConsts.MIN_NORMAL)),
new PairSD("0x0.fffffffffffff8p-1022", DoubleConsts.MIN_NORMAL), new PairSD("0x0.fffffffffffff8p-1022", DoubleConsts.MIN_NORMAL),
new PairSD("0x0.fffffffffffff800000001p-1022",DoubleConsts.MIN_NORMAL), new PairSD("0x0.fffffffffffff800000001p-1022",DoubleConsts.MIN_NORMAL),
new PairSD("0x0.fffffffffffff80000000000000001p-1022",DoubleConsts.MIN_NORMAL), new PairSD("0x0.fffffffffffff80000000000000001p-1022",DoubleConsts.MIN_NORMAL),
@ -242,10 +241,10 @@ public class ParseHexFloatingPoint {
new PairSD("0x1.fffffffffffff8p1023", infinityD), new PairSD("0x1.fffffffffffff8p1023", infinityD),
new PairSD("0x1.fffffffffffff8000001p1023", infinityD), new PairSD("0x1.fffffffffffff8000001p1023", infinityD),
new PairSD("0x1.ffffffffffffep1023", FpUtils.nextDown(Double.MAX_VALUE)), new PairSD("0x1.ffffffffffffep1023", Math.nextDown(Double.MAX_VALUE)),
new PairSD("0x1.ffffffffffffe0000p1023", FpUtils.nextDown(Double.MAX_VALUE)), new PairSD("0x1.ffffffffffffe0000p1023", Math.nextDown(Double.MAX_VALUE)),
new PairSD("0x1.ffffffffffffe8p1023", FpUtils.nextDown(Double.MAX_VALUE)), new PairSD("0x1.ffffffffffffe8p1023", Math.nextDown(Double.MAX_VALUE)),
new PairSD("0x1.ffffffffffffe7p1023", FpUtils.nextDown(Double.MAX_VALUE)), new PairSD("0x1.ffffffffffffe7p1023", Math.nextDown(Double.MAX_VALUE)),
new PairSD("0x1.ffffffffffffeffffffp1023", Double.MAX_VALUE), new PairSD("0x1.ffffffffffffeffffffp1023", Double.MAX_VALUE),
new PairSD("0x1.ffffffffffffe8000001p1023", Double.MAX_VALUE), new PairSD("0x1.ffffffffffffe8000001p1023", Double.MAX_VALUE),
}; };
@ -284,8 +283,8 @@ public class ParseHexFloatingPoint {
}; };
double [] answers = { double [] answers = {
FpUtils.nextDown(FpUtils.nextDown(2.0)), Math.nextDown(Math.nextDown(2.0)),
FpUtils.nextDown(2.0), Math.nextDown(2.0),
2.0 2.0
}; };

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -27,7 +27,6 @@
* @summary Check for correct implementation of Math.ceil and Math.floor * @summary Check for correct implementation of Math.ceil and Math.floor
*/ */
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
public class CeilAndFloorTests { public class CeilAndFloorTests {
@ -69,7 +68,7 @@ public class CeilAndFloorTests {
for(int i = Double.MIN_EXPONENT; i <= Double.MAX_EXPONENT; i++) { for(int i = Double.MIN_EXPONENT; i <= Double.MAX_EXPONENT; i++) {
double powerOfTwo = Math.scalb(1.0, i); double powerOfTwo = Math.scalb(1.0, i);
double neighborDown = FpUtils.nextDown(powerOfTwo); double neighborDown = Math.nextDown(powerOfTwo);
double neighborUp = Math.nextUp(powerOfTwo); double neighborUp = Math.nextUp(powerOfTwo);
if (i < 0) { if (i < 0) {
@ -114,7 +113,7 @@ public class CeilAndFloorTests {
for(int i = -(0x10000); i <= 0x10000; i++) { for(int i = -(0x10000); i <= 0x10000; i++) {
double d = (double) i; double d = (double) i;
double neighborDown = FpUtils.nextDown(d); double neighborDown = Math.nextDown(d);
double neighborUp = Math.nextUp(d); double neighborUp = Math.nextUp(d);
failures += testCeilCase( d, d); failures += testCeilCase( d, d);
@ -140,8 +139,8 @@ public class CeilAndFloorTests {
double [][] testCases = { double [][] testCases = {
{ Double.MIN_VALUE, 1.0}, { Double.MIN_VALUE, 1.0},
{-Double.MIN_VALUE, -0.0}, {-Double.MIN_VALUE, -0.0},
{ FpUtils.nextDown(DoubleConsts.MIN_NORMAL), 1.0}, { Math.nextDown(DoubleConsts.MIN_NORMAL), 1.0},
{-FpUtils.nextDown(DoubleConsts.MIN_NORMAL), -0.0}, {-Math.nextDown(DoubleConsts.MIN_NORMAL), -0.0},
{ DoubleConsts.MIN_NORMAL, 1.0}, { DoubleConsts.MIN_NORMAL, 1.0},
{-DoubleConsts.MIN_NORMAL, -0.0}, {-DoubleConsts.MIN_NORMAL, -0.0},
@ -157,8 +156,8 @@ public class CeilAndFloorTests {
{ 2.5, 3.0}, { 2.5, 3.0},
{-2.5, -2.0}, {-2.5, -2.0},
{ FpUtils.nextDown(1.0), 1.0}, { Math.nextDown(1.0), 1.0},
{ FpUtils.nextDown(-1.0), -1.0}, { Math.nextDown(-1.0), -1.0},
{ Math.nextUp(1.0), 2.0}, { Math.nextUp(1.0), 2.0},
{ Math.nextUp(-1.0), -0.0}, { Math.nextUp(-1.0), -0.0},
@ -166,17 +165,17 @@ public class CeilAndFloorTests {
{ 0x1.0p51, 0x1.0p51}, { 0x1.0p51, 0x1.0p51},
{-0x1.0p51, -0x1.0p51}, {-0x1.0p51, -0x1.0p51},
{ FpUtils.nextDown(0x1.0p51), 0x1.0p51}, { Math.nextDown(0x1.0p51), 0x1.0p51},
{-Math.nextUp(0x1.0p51), -0x1.0p51}, {-Math.nextUp(0x1.0p51), -0x1.0p51},
{ Math.nextUp(0x1.0p51), 0x1.0p51+1}, { Math.nextUp(0x1.0p51), 0x1.0p51+1},
{-FpUtils.nextDown(0x1.0p51), -0x1.0p51+1}, {-Math.nextDown(0x1.0p51), -0x1.0p51+1},
{ FpUtils.nextDown(0x1.0p52), 0x1.0p52}, { Math.nextDown(0x1.0p52), 0x1.0p52},
{-Math.nextUp(0x1.0p52), -0x1.0p52-1.0}, {-Math.nextUp(0x1.0p52), -0x1.0p52-1.0},
{ Math.nextUp(0x1.0p52), 0x1.0p52+1.0}, { Math.nextUp(0x1.0p52), 0x1.0p52+1.0},
{-FpUtils.nextDown(0x1.0p52), -0x1.0p52+1.0}, {-Math.nextDown(0x1.0p52), -0x1.0p52+1.0},
}; };
for(double[] testCase : testCases) { for(double[] testCase : testCases) {

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -28,7 +28,6 @@
* @author Joseph D. Darcy * @author Joseph D. Darcy
*/ */
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
public class CubeRootTests { public class CubeRootTests {
@ -245,8 +244,8 @@ public class CubeRootTests {
double pc = Math.scalb(1.0, 3*i); double pc = Math.scalb(1.0, 3*i);
pcNeighbors[2] = pc; pcNeighbors[2] = pc;
pcNeighbors[1] = FpUtils.nextDown(pc); pcNeighbors[1] = Math.nextDown(pc);
pcNeighbors[0] = FpUtils.nextDown(pcNeighbors[1]); pcNeighbors[0] = Math.nextDown(pcNeighbors[1]);
pcNeighbors[3] = Math.nextUp(pc); pcNeighbors[3] = Math.nextUp(pc);
pcNeighbors[4] = Math.nextUp(pcNeighbors[3]); pcNeighbors[4] = Math.nextUp(pcNeighbors[3]);
@ -284,8 +283,8 @@ public class CubeRootTests {
double pc = Math.scalb(1.0, 3*i); double pc = Math.scalb(1.0, 3*i);
pcNeighbors[2] = pc; pcNeighbors[2] = pc;
pcNeighbors[1] = FpUtils.nextDown(pc); pcNeighbors[1] = Math.nextDown(pc);
pcNeighbors[0] = FpUtils.nextDown(pcNeighbors[1]); pcNeighbors[0] = Math.nextDown(pcNeighbors[1]);
pcNeighbors[3] = Math.nextUp(pc); pcNeighbors[3] = Math.nextUp(pc);
pcNeighbors[4] = Math.nextUp(pcNeighbors[3]); pcNeighbors[4] = Math.nextUp(pcNeighbors[3]);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -29,7 +29,6 @@
*/ */
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
import sun.misc.FpUtils;
/* /*
* The Taylor expansion of expxm1(x) = exp(x) -1 is * The Taylor expansion of expxm1(x) = exp(x) -1 is
@ -143,8 +142,8 @@ public class Expm1Tests {
double pc = StrictMath.log(2)*i; double pc = StrictMath.log(2)*i;
pcNeighbors[2] = pc; pcNeighbors[2] = pc;
pcNeighbors[1] = FpUtils.nextDown(pc); pcNeighbors[1] = Math.nextDown(pc);
pcNeighbors[0] = FpUtils.nextDown(pcNeighbors[1]); pcNeighbors[0] = Math.nextDown(pcNeighbors[1]);
pcNeighbors[3] = Math.nextUp(pc); pcNeighbors[3] = Math.nextUp(pc);
pcNeighbors[4] = Math.nextUp(pcNeighbors[3]); pcNeighbors[4] = Math.nextUp(pcNeighbors[3]);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -29,7 +29,6 @@
*/ */
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
import sun.misc.FpUtils;
public class HyperbolicTests { public class HyperbolicTests {
private HyperbolicTests(){} private HyperbolicTests(){}
@ -280,7 +279,7 @@ public class HyperbolicTests {
long trans22 = Double.doubleToLongBits(22.0); long trans22 = Double.doubleToLongBits(22.0);
// (approximately) largest value such that exp shouldn't // (approximately) largest value such that exp shouldn't
// overflow // overflow
long transExpOvfl = Double.doubleToLongBits(FpUtils.nextDown(709.7827128933841)); long transExpOvfl = Double.doubleToLongBits(Math.nextDown(709.7827128933841));
for(long i = trans22; for(long i = trans22;
i < transExpOvfl; i < transExpOvfl;
@ -639,7 +638,7 @@ public class HyperbolicTests {
long trans22 = Double.doubleToLongBits(22.0); long trans22 = Double.doubleToLongBits(22.0);
// (approximately) largest value such that exp shouldn't // (approximately) largest value such that exp shouldn't
// overflow // overflow
long transExpOvfl = Double.doubleToLongBits(FpUtils.nextDown(709.7827128933841)); long transExpOvfl = Double.doubleToLongBits(Math.nextDown(709.7827128933841));
for(long i = trans22; for(long i = trans22;
i < transExpOvfl; i < transExpOvfl;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -156,8 +156,8 @@ public class HypotTests {
double pc = Math.scalb(1.0, i); double pc = Math.scalb(1.0, i);
pcNeighbors[2] = pc; pcNeighbors[2] = pc;
pcNeighbors[1] = FpUtils.nextDown(pc); pcNeighbors[1] = Math.nextDown(pc);
pcNeighbors[0] = FpUtils.nextDown(pcNeighbors[1]); pcNeighbors[0] = Math.nextDown(pcNeighbors[1]);
pcNeighbors[3] = Math.nextUp(pc); pcNeighbors[3] = Math.nextUp(pc);
pcNeighbors[4] = Math.nextUp(pcNeighbors[3]); pcNeighbors[4] = Math.nextUp(pcNeighbors[3]);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -623,8 +623,11 @@ public class IeeeRecommendedTests {
}; };
for(int i = 0; i < testCases.length; i++) { for(int i = 0; i < testCases.length; i++) {
failures+=Tests.test("FpUtils.nextDown(float)", failures+=Tests.test("Math.nextDown(float)",
testCases[i][0], FpUtils.nextDown(testCases[i][0]), testCases[i][1]); testCases[i][0], Math.nextDown(testCases[i][0]), testCases[i][1]);
failures+=Tests.test("StrictMath.nextDown(float)",
testCases[i][0], StrictMath.nextDown(testCases[i][0]), testCases[i][1]);
} }
return failures; return failures;
@ -659,8 +662,11 @@ public class IeeeRecommendedTests {
}; };
for(int i = 0; i < testCases.length; i++) { for(int i = 0; i < testCases.length; i++) {
failures+=Tests.test("FpUtils.nextDown(double)", failures+=Tests.test("Math.nextDown(double)",
testCases[i][0], FpUtils.nextDown(testCases[i][0]), testCases[i][1]); testCases[i][0], Math.nextDown(testCases[i][0]), testCases[i][1]);
failures+=Tests.test("StrictMath.nextDown(double)",
testCases[i][0], StrictMath.nextDown(testCases[i][0]), testCases[i][1]);
} }
return failures; return failures;
@ -706,8 +712,8 @@ public class IeeeRecommendedTests {
FpUtils.isNaN(testCases[i]), (i ==0)); FpUtils.isNaN(testCases[i]), (i ==0));
// isFinite // isFinite
failures+=Tests.test("FpUtils.isFinite(float)", testCases[i], failures+=Tests.test("Float.isFinite(float)", testCases[i],
FpUtils.isFinite(testCases[i]), (i >= 3)); Float.isFinite(testCases[i]), (i >= 3));
// isInfinite // isInfinite
failures+=Tests.test("FpUtils.isInfinite(float)", testCases[i], failures+=Tests.test("FpUtils.isInfinite(float)", testCases[i],
@ -756,8 +762,8 @@ public class IeeeRecommendedTests {
FpUtils.isNaN(testCases[i]), (i ==0)); FpUtils.isNaN(testCases[i]), (i ==0));
// isFinite // isFinite
failures+=Tests.test("FpUtils.isFinite(double)", testCases[i], failures+=Tests.test("Double.isFinite(double)", testCases[i],
FpUtils.isFinite(testCases[i]), (i >= 3)); Double.isFinite(testCases[i]), (i >= 3));
// isInfinite // isInfinite
failures+=Tests.test("FpUtils.isInfinite(double)", testCases[i], failures+=Tests.test("FpUtils.isInfinite(double)", testCases[i],

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -28,7 +28,6 @@
* @author Joseph D. Darcy * @author Joseph D. Darcy
*/ */
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
public class Log10Tests { public class Log10Tests {
@ -98,13 +97,13 @@ public class Log10Tests {
// within a few ulps of log(x)/log(10) // within a few ulps of log(x)/log(10)
for(int i = 0; i < 10000; i++) { for(int i = 0; i < 10000; i++) {
double input = Double.longBitsToDouble(rand.nextLong()); double input = Double.longBitsToDouble(rand.nextLong());
if(! FpUtils.isFinite(input)) if(! Double.isFinite(input))
continue; // avoid testing NaN and infinite values continue; // avoid testing NaN and infinite values
else { else {
input = Math.abs(input); input = Math.abs(input);
double expected = StrictMath.log(input)/LN_10; double expected = StrictMath.log(input)/LN_10;
if( ! FpUtils.isFinite(expected)) if( ! Double.isFinite(expected))
continue; // if log(input) overflowed, try again continue; // if log(input) overflowed, try again
else { else {
double result; double result;
@ -154,15 +153,15 @@ public class Log10Tests {
if (i == 0) { if (i == 0) {
input[half] = 1.0; input[half] = 1.0;
up = Math.nextUp(1.0); up = Math.nextUp(1.0);
down = FpUtils.nextDown(1.0); down = Math.nextDown(1.0);
} else { } else {
input[half + i] = up; input[half + i] = up;
input[half - i] = down; input[half - i] = down;
up = Math.nextUp(up); up = Math.nextUp(up);
down = FpUtils.nextDown(down); down = Math.nextDown(down);
} }
} }
input[0] = FpUtils.nextDown(input[1]); input[0] = Math.nextDown(input[1]);
for(int i = 0; i < neighbors.length; i++) { for(int i = 0; i < neighbors.length; i++) {
neighbors[i] = Math.log10(input[i]); neighbors[i] = Math.log10(input[i]);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -135,8 +135,8 @@ public class Log1pTests {
double pc = StrictMath.pow(Math.E, i) - 1; double pc = StrictMath.pow(Math.E, i) - 1;
pcNeighbors[2] = pc; pcNeighbors[2] = pc;
pcNeighbors[1] = FpUtils.nextDown(pc); pcNeighbors[1] = Math.nextDown(pc);
pcNeighbors[0] = FpUtils.nextDown(pcNeighbors[1]); pcNeighbors[0] = Math.nextDown(pcNeighbors[1]);
pcNeighbors[3] = Math.nextUp(pc); pcNeighbors[3] = Math.nextUp(pc);
pcNeighbors[4] = Math.nextUp(pcNeighbors[3]); pcNeighbors[4] = Math.nextUp(pcNeighbors[3]);
@ -202,5 +202,4 @@ public class Log1pTests {
throw new RuntimeException(); throw new RuntimeException();
} }
} }
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,10 +25,8 @@
* @test * @test
* @bug 4101566 4831589 * @bug 4101566 4831589
* @summary Check for correct implementation of Math.rint(double) * @summary Check for correct implementation of Math.rint(double)
*
*/ */
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
public class Rint { public class Rint {
@ -53,22 +51,22 @@ public class Rint {
double [][] testCases = { double [][] testCases = {
{0.0, 0.0}, {0.0, 0.0},
{Double.MIN_VALUE, 0.0}, {Double.MIN_VALUE, 0.0},
{FpUtils.nextDown(DoubleConsts.MIN_NORMAL), 0.0}, {Math.nextDown(DoubleConsts.MIN_NORMAL), 0.0},
{DoubleConsts.MIN_NORMAL, 0.0}, {DoubleConsts.MIN_NORMAL, 0.0},
{0.2, 0.0}, {0.2, 0.0},
{FpUtils.nextDown(0.5), 0.0}, {Math.nextDown(0.5), 0.0},
{ 0.5, 0.0}, { 0.5, 0.0},
{ Math.nextUp(0.5), 1.0}, { Math.nextUp(0.5), 1.0},
{0.7, 1.0}, {0.7, 1.0},
{FpUtils.nextDown(1.0), 1.0}, {Math.nextDown(1.0), 1.0},
{ 1.0, 1.0}, { 1.0, 1.0},
{ Math.nextUp(1.0), 1.0}, { Math.nextUp(1.0), 1.0},
{FpUtils.nextDown(1.5), 1.0}, {Math.nextDown(1.5), 1.0},
{ 1.5, 2.0}, { 1.5, 2.0},
{ Math.nextUp(1.5), 2.0}, { Math.nextUp(1.5), 2.0},
{4.2, 4.0}, {4.2, 4.0},
@ -82,7 +80,7 @@ public class Rint {
{150000.75, 150001.0}, {150000.75, 150001.0},
{300000.5, 300000.0}, {300000.5, 300000.0},
{Math.nextUp(300000.5), 300001.0}, {Math.nextUp(300000.5), 300001.0},
{FpUtils.nextDown(300000.75), 300001.0}, {Math.nextDown(300000.75), 300001.0},
{300000.75, 300001.0}, {300000.75, 300001.0},
{Math.nextUp(300000.75), 300001.0}, {Math.nextUp(300000.75), 300001.0},
{300000.99, 300001.0}, {300000.99, 300001.0},
@ -91,7 +89,7 @@ public class Rint {
{524287.75, 524288.0}, //(2^19 -1) + 0.75 {524287.75, 524288.0}, //(2^19 -1) + 0.75
{524288.75, 524289.0}, {524288.75, 524289.0},
{FpUtils.nextDown(twoToThe52), twoToThe52}, {Math.nextDown(twoToThe52), twoToThe52},
{twoToThe52, twoToThe52}, {twoToThe52, twoToThe52},
{Math.nextUp(twoToThe52), Math.nextUp(twoToThe52)}, {Math.nextUp(twoToThe52), Math.nextUp(twoToThe52)},
@ -118,5 +116,4 @@ public class Rint {
throw new RuntimeException(); throw new RuntimeException();
} }
} }
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -36,7 +36,6 @@ import java.math.BigInteger;
import java.text.DateFormatSymbols; import java.text.DateFormatSymbols;
import java.util.*; import java.util.*;
#if[double] #if[double]
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
#end[double] #end[double]
@ -1301,9 +1300,9 @@ public class Basic$Type$ extends Basic {
test("%.11a", "0x1.00000000000p-1022", DoubleConsts.MIN_NORMAL); test("%.11a", "0x1.00000000000p-1022", DoubleConsts.MIN_NORMAL);
test("%.1a", "0x1.0p-1022", DoubleConsts.MIN_NORMAL); test("%.1a", "0x1.0p-1022", DoubleConsts.MIN_NORMAL);
test("%.11a", "0x1.00000000000p-1022", test("%.11a", "0x1.00000000000p-1022",
FpUtils.nextDown(DoubleConsts.MIN_NORMAL)); Math.nextDown(DoubleConsts.MIN_NORMAL));
test("%.1a", "0x1.0p-1022", test("%.1a", "0x1.0p-1022",
FpUtils.nextDown(DoubleConsts.MIN_NORMAL)); Math.nextDown(DoubleConsts.MIN_NORMAL));
test("%.11a", "0x1.ffffffffffep-1023", test("%.11a", "0x1.ffffffffffep-1023",
Double.parseDouble("0x0.fffffffffffp-1022")); Double.parseDouble("0x0.fffffffffffp-1022"));
test("%.1a", "0x1.0p-1022", test("%.1a", "0x1.0p-1022",

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;
import static java.util.SimpleTimeZone.*; import static java.util.SimpleTimeZone.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -36,7 +36,6 @@ import java.math.BigInteger;
import java.text.DateFormatSymbols; import java.text.DateFormatSymbols;
import java.util.*; import java.util.*;
import sun.misc.FpUtils;
import sun.misc.DoubleConsts; import sun.misc.DoubleConsts;
@ -1301,9 +1300,9 @@ public class BasicDouble extends Basic {
test("%.11a", "0x1.00000000000p-1022", DoubleConsts.MIN_NORMAL); test("%.11a", "0x1.00000000000p-1022", DoubleConsts.MIN_NORMAL);
test("%.1a", "0x1.0p-1022", DoubleConsts.MIN_NORMAL); test("%.1a", "0x1.0p-1022", DoubleConsts.MIN_NORMAL);
test("%.11a", "0x1.00000000000p-1022", test("%.11a", "0x1.00000000000p-1022",
FpUtils.nextDown(DoubleConsts.MIN_NORMAL)); Math.nextDown(DoubleConsts.MIN_NORMAL));
test("%.1a", "0x1.0p-1022", test("%.1a", "0x1.0p-1022",
FpUtils.nextDown(DoubleConsts.MIN_NORMAL)); Math.nextDown(DoubleConsts.MIN_NORMAL));
test("%.11a", "0x1.ffffffffffep-1023", test("%.11a", "0x1.ffffffffffep-1023",
Double.parseDouble("0x0.fffffffffffp-1022")); Double.parseDouble("0x0.fffffffffffp-1022"));
test("%.1a", "0x1.0p-1022", test("%.1a", "0x1.0p-1022",

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -39,7 +39,6 @@ import java.util.*;
import static java.util.Calendar.*; import static java.util.Calendar.*;