public static boolean isAllZeroesBelow(
      int fastSignum, long fast0, long fast1, long fast2,
      int power) {
    if (power < 0 || power > HiveDecimal.MAX_SCALE) {
      throw new IllegalArgumentException("Expecting power >= 0 and power <= 38");
    }

    if (fastSignum == 0) {
      return true;
    }

    if (power >= TWO_X_LONGWORD_DECIMAL_DIGITS) {
      if (fast0 != 0 || fast1 != 0) {
        return false;
      }
      final int adjustedPower = power - TWO_X_LONGWORD_DECIMAL_DIGITS;
      if (adjustedPower == 0) {
        return true;
      }
      long remainder = fast2 % powerOfTenTable[adjustedPower];
      return (remainder == 0);
    } else if (power >= LONGWORD_DECIMAL_DIGITS) {
      if (fast0 != 0) {
        return false;
      }
      final int adjustedPower = power - LONGWORD_DECIMAL_DIGITS;
      if (adjustedPower == 0) {
        return true;
      }
      long remainder = fast1 % powerOfTenTable[adjustedPower];
      return (remainder == 0);
    } else {
      if (power == 0) {
        return true;
      }
      long remainder = fast0 % powerOfTenTable[power];
      return (remainder == 0);
    }
  }
Fast decimal scale up by factor of 10.
@param fast0 word 0 of the internal representation
@param fast1 word 1
@param fast2 word 2
@param scaleUp the number of integer digits to scale up by
@param fastResult an object to reuse
@return was the operation successfule?
storage-api/src/java/org/apache/hadoop/hive/common/type/FastHiveDecimalImpl.java