@Override
  public int hashCode() {

    // note: v[0] ^ v[1] ^ v[2] ^ v[3] would cause too many hash collisions
    return (v[0] * 0x2AB19E23) + (v[1] * 0x4918EACB) + (v[2] * 0xF03051A7)
        + v[3];
  }
Compares with the given object after scaling up/down it for 10**scaleUp.
This method is not destructive. Used from {@link Decimal128}.

@param o
         the object to compare with
@param tenScale
         power of 10 to scale up (if positive) or down (if negative) the
         given object.
@return a negative integer, zero, or a positive integer as this object is
        less than, equal to, or greater than the specified object.
common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java