code: public static double log2_c11(double x)
      {
          if(x < 0)
              return Double.NaN;
          long rawBits = doubleToLongBits(x);
          long mantissa = getMantissa(rawBits);
          int e = Math.getExponent(x);
          
          return log2Cache11[(int)(mantissa >>> (52-11))] + e;
      }
docs: Computes log<sub>2</sub>(x) using a cache of 2<sup>11</sup> values,
  consuming approximately 17 kilobytes of memory.<br>
  The results are generally accurate to an absolute and relative error of
  10<sup>-4</sup>
  @param x the input
  @return the log base 2 of {@code x}