@GwtIncompatible // TODO
  @SuppressWarnings("fallthrough")
  // TODO(kevinb): remove after this warning is disabled globally
  public static int log10(long x, RoundingMode mode) {
    """
	Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.
	
	@throws IllegalArgumentException if {@code x <= 0}
	@throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
	is not a power of ten
    """
    checkPositive("x", x);
    int logFloor = log10Floor(x);
    long floorPow = powersOf10[logFloor];
    switch (mode) {
      case UNNECESSARY:
        checkRoundingUnnecessary(x == floorPow);
        // fall through
      case FLOOR:
      case DOWN:
        return logFloor;
      case CEILING:
      case UP:
        return logFloor + lessThanBranchFree(floorPow, x);
      case HALF_DOWN:
      case HALF_UP:
      case HALF_EVEN:
        // sqrt(10) is irrational, so log10(x)-logFloor is never exactly 0.5
        return logFloor + lessThanBranchFree(halfPowersOf10[logFloor], x);
      default:
        throw new AssertionError();
    }
  }
@GwtIncompatible // TODO
  @SuppressWarnings("fallthrough")
  // TODO(kevinb): remove after this warning is disabled globally
  public static int log10(long x, RoundingMode mode) {
    checkPositive("x", x);
    int logFloor = log10Floor(x);
    long floorPow = powersOf10[logFloor];
    switch (mode) {
      case UNNECESSARY:
        checkRoundingUnnecessary(x == floorPow);
        // fall through
      case FLOOR:
      case DOWN:
        return logFloor;
      case CEILING:
      case UP:
        return logFloor + lessThanBranchFree(floorPow, x);
      case HALF_DOWN:
      case HALF_UP:
      case HALF_EVEN:
        // sqrt(10) is irrational, so log10(x)-logFloor is never exactly 0.5
        return logFloor + lessThanBranchFree(halfPowersOf10[logFloor], x);
      default:
        throw new AssertionError();
    }
  }
@ GwtIncompatible // TODO @ SuppressWarnings ( "fallthrough" ) // TODO(kevinb): remove after this warning is disabled globally public static int log10 ( long x , RoundingMode mode ) { checkPositive ( "x" , x ) ; int logFloor = log10Floor ( x ) ; long floorPow = powersOf10 [ logFloor ] ; switch ( mode ) { case UNNECESSARY : checkRoundingUnnecessary ( x == floorPow ) ; // fall through case FLOOR : case DOWN : return logFloor ; case CEILING : case UP : return logFloor + lessThanBranchFree ( floorPow , x ) ; case HALF_DOWN : case HALF_UP : case HALF_EVEN : // sqrt(10) is irrational, so log10(x)-logFloor is never exactly 0.5 return logFloor + lessThanBranchFree ( halfPowersOf10 [ logFloor ] , x ) ; default : throw new AssertionError ( ) ; } }
Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.

@throws IllegalArgumentException if {@code x <= 0}
@throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
is not a power of ten
Returns the base - 10 logarithm of { @code x } rounded according to the specified rounding mode .