Beispiel #1
0
 public void testRoundLog2Half() {
   // We don't expect perfect rounding accuracy.
   for (int exp : asList(-1022, -50, -1, 0, 1, 2, 3, 4, 100, 1022, 1023)) {
     for (RoundingMode mode : asList(HALF_EVEN, HALF_UP, HALF_DOWN)) {
       double x = Math.scalb(Math.sqrt(2) + 0.001, exp);
       double y = Math.scalb(Math.sqrt(2) - 0.001, exp);
       if (exp < 0) {
         assertEquals(exp + 1, DoubleMath.log2(x, mode));
         assertEquals(exp, DoubleMath.log2(y, mode));
       } else {
         assertEquals(exp + 1, DoubleMath.log2(x, mode));
         assertEquals(exp, DoubleMath.log2(y, mode));
       }
     }
   }
 }