Cálculo de una raíz cúbica de punto flotante correctamente redondeada / casi redondeada

Supongamos que las funciones de biblioteca estándar redondeadas correctamente, como las que se encuentran enCRIBA están disponibles. Entonces, ¿cómo se podría calcular la raíz cúbica correctamente redondeada de una entrada de doble precisión?

Esta pregunta no es un "problema real al que me enfrento", para citar las preguntas frecuentes. Es un poco como la tarea de esta manera. Pero la raíz cúbica es una operación frecuente y uno podría imaginar que esta pregunta es un problema real que alguien enfrenta.

Ya que "las mejores preguntas de desbordamiento de pila tienen un poco de código fuente en ellas", aquí hay un poco de código fuente:

  y = pow(x, 1. / 3.);

Lo anterior no calcula una raíz cúbica correctamente redondeada porque 1/3 no se puede representar exactamente comodouble.

NOTAS ADICIONALES:

Unartículo describe cómo calcular una raíz cúbica de punto flotante, pero la última iteración (s) del algoritmo recomendado de Newton-Raphson tendría que realizarse con una mayor precisión para que el algoritmo calcule una raíz cúbica de doble precisión correctamente redondeada. Esa puede ser la mejor manera de calcularlo, pero todavía estoy buscando un atajo que aproveche las funciones estandarizadas correctamente redondeadas existentes.

C99 incluye uncbrt() función, pero no se puede esperar que se redondee correctamenteo incluso fiel para todos los compiladores. Los diseñadores de CRlibm podrían haber elegido incluircbrt() En la lista de funciones proporcionadas, pero no lo hicieron. Las referencias a implementaciones disponibles en otras bibliotecas de funciones matemáticas redondeadas correctamente son bienvenidas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta