double validatedDouble(double doubleValue, String typeName) {
      switch (typeName) {
      case serdeConstants.FLOAT_TYPE_NAME:
        double absDoubleValue = (doubleValue < 0) ? (doubleValue * -1) : doubleValue;
        int exponent = Math.getExponent(doubleValue);
        isValid = ((absDoubleValue <= Float.MAX_VALUE) && (absDoubleValue >= Float.MIN_VALUE) &&
                   (exponent <= Float.MAX_EXPONENT) && (exponent >= Float.MIN_EXPONENT));
        break;
      case serdeConstants.BIGINT_TYPE_NAME:
        isValid = ((doubleValue <= Long.MAX_VALUE) && (doubleValue >= Long.MIN_VALUE) &&
                   (doubleValue % 1 == 0));
        break;
      case serdeConstants.INT_TYPE_NAME:
        isValid = ((doubleValue <= Integer.MAX_VALUE) && (doubleValue >= Integer.MIN_VALUE) &&
                   (doubleValue % 1 == 0));
        break;
      case serdeConstants.SMALLINT_TYPE_NAME:
        isValid = ((doubleValue <= Short.MAX_VALUE) && (doubleValue >= Short.MIN_VALUE) &&
                   (doubleValue % 1 == 0));
        break;
      case serdeConstants.TINYINT_TYPE_NAME:
        isValid = ((doubleValue <= Byte.MAX_VALUE) && (doubleValue >= Byte.MIN_VALUE) &&
                   (doubleValue % 1 == 0));
        break;
      default:
        isValid = true;
      }

      if (isValid) {
        return doubleValue;
      } else {
        return 0;
      }
    }
Helper function to validate double data.  Sets the isValid to true if the data is valid
for the type it will be read in, otherwise false.
@param doubleValue input value of long type to be validated.
@param typeName the hivetype to be used to read the doubleValue
@return 0 if the data is invalid, other doubleValue
ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/ParquetDataColumnReaderFactory.java