public static boolean fastMultiply5x5HalfWords(
      FastHiveDecimal fastLeft,
      FastHiveDecimal fastRight,
      FastHiveDecimal fastResult) {
    return
        fastMultiply5x5HalfWords(
            fastLeft.fast0, fastLeft.fast1, fastLeft.fast2,
            fastRight.fast0, fastRight.fast1, fastRight.fast2,
            fastResult);
  }
*********************************************************************************************
  // Decimal Multiply.

  private static boolean doMultiply(
      int leftSignum, long leftFast0, long leftFast1, long leftFast2,
      int leftIntegerDigitCount, int leftScale,
      int rightSignum, long rightFast0, long rightFast1, long rightFast2,
      int rightIntegerDigitCount, int rightScale,
      FastHiveDecimal fastResult) {

    // Set signum before; if result is zero, fastMultiply will set signum to 0.
    fastResult.fastSignum = (leftSignum == rightSignum ? 1 : -1);
    int resultScale = leftScale + rightScale;

    /*
For multiplicands with scale 0, trim trailing zeroes.
storage-api/src/java/org/apache/hadoop/hive/common/type/FastHiveDecimalImpl.java