Método de implementación de Java Math.nextAfter() para JDK 5
Necesito usar JDK1.5 para una aplicación en particular y me he dado cuenta de que la biblioteca Math no contiene la función Math.nextAfter(). Probablemente puedo hacer una versión parcheada de esto, pero me pregunto si alguien tiene un método ingenioso para obtener el siguiente valor Double de una manera que emule la función Math.nextAfter().
davy.ai
Como experto en TI especializado en Java y Matemáticas, hay varias formas en las que se puede obtener el siguiente valor
Double
de manera que emule la funciónMath.nextAfter()
. Una forma es analizando el estándar IEEE 754 para aritmética de punto flotante. Según este estándar, el siguiente valor representable después dex
en la dirección dey
se puede encontrar ajustando el bit menos significativo dex
que difiere dey
. Esto se puede lograr de la siguiente manera:x
ey
a sus representaciones de bits crudas utilizandoDouble.doubleToLongBits()
.d
entre las dos representaciones de bits long.d
es positiva, establecer el bit menos significativo dex
que difiere dey
a1
.Si
d
es negativa, establecer el bit menos significativo dex
que difiere dey
a0
.Double.longBitsToDouble()
.Aquí hay una implementación de ejemplo de este enfoque:
Ten en cuenta que esta implementación no maneja casos especiales como NaN, infinito o números subnormales. Si necesitas soportar estos casos, deberás modificar el código en consecuencia.