code: public static int hash(double value) {
          assert !Double.isNaN(value) : "Values of NaN are not supported.";
  
          long bits = Double.doubleToLongBits(value);
          return (int) (bits ^ (bits >>> 32));
          //return (int) Double.doubleToLongBits(value*663608941.737);
          // This avoids excessive hashCollisions in the case values are of the form (1.0, 2.0, 3.0, ...)
      }
docs: Returns a hashcode for the specified value.
  
  @return a hash code value for the specified value.