Estoy haciendo cálculos científicos de alta precisión. Al buscar la mejor representación de varios efectos, sigo encontrando razones para querer obtener el siguiente número de precisión doble más alto (o más bajo) disponible. Básicamente, lo que quiero hacer es agregar uno al bit menos significativo en la representación interna de un doble.próximo más alto/más bajo IEEE precisión doble número
La dificultad es que el formato IEEE no es totalmente uniforme. Si se utilizara un código de bajo nivel y se agregara uno al bit menos significativo, el formato resultante podría no ser el siguiente doble disponible. Podría, por ejemplo, ser un número de caso especial como PositiveInfinity o NaN. También están los valores subnormales, que no pretendo entender, pero que parecen tener patrones de bits específicos diferentes del patrón "normal".
Hay disponible un valor "épsilon", pero nunca he entendido su definición. Como los valores dobles no están espaciados uniformemente, no se puede agregar ningún valor a un doble para obtener el siguiente valor más alto.
Realmente no entiendo por qué IEEE no ha especificado una función para obtener el siguiente valor más alto o más bajo. No puedo ser el único que lo necesita.
Hay una manera de obtener el siguiente valor (sin algún tipo de bucle que intente agregar valores cada vez más pequeños).
IEEE-754 * ha * especificado tales funciones - 'nextUp' y' nextDown' como se requiere en la sección 5.3.1 del estándar revisado (2008), y la función 'nextafter' anterior recomendada por el original (1985) estándar, y requerido en C99. –