/// <summary>
 ///   Adjusts a double precision floating point value by the specified amount of
 ///   neighbouring representable values
 /// </summary>
 /// <param name="value">Double precision floating point value to be adjusted</param>
 /// <param name="ulps">Numbers of neighbouring representable values to step</param>
 /// <returns>The adjusted double precision floating point value</returns>
 private static double adjust(double value, long ulps)
 {
     return(FloatHelper.ReinterpretAsDouble(FloatHelper.ReinterpretAsLong(value) + ulps));
 }