11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.math; 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.math.MathTesting.ALL_BIGINTEGER_CANDIDATES; 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.math.MathTesting.ALL_DOUBLE_CANDIDATES; 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.math.MathTesting.EXPONENTS; 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.math.MathTesting.FINITE_DOUBLE_CANDIDATES; 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.math.BigInteger; 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase; 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport sun.misc.FpUtils; 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class DoubleUtilsTest extends TestCase { 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public strictfp void testScalbPositiveExponent() { 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (int k : EXPONENTS) { 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (double d : ALL_DOUBLE_CANDIDATES) { 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(d * StrictMath.pow(2.0, k), DoubleUtils.scalb(d, k)); 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testGetExponent() { 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (double d : ALL_DOUBLE_CANDIDATES) { 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(FpUtils.getExponent(d), DoubleUtils.getExponent(d)); 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNextUp() { 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (double d : FINITE_DOUBLE_CANDIDATES) { 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(FpUtils.nextUp(d), DoubleUtils.next(d, true)); 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNextDown() { 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (double d : FINITE_DOUBLE_CANDIDATES) { 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(FpUtils.nextDown(d), DoubleUtils.next(d, false)); 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBigToDouble() { 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BigInteger b : ALL_BIGINTEGER_CANDIDATES) { 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(b.doubleValue(), DoubleUtils.bigToDouble(b)); 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 46