Este artículo explora las técnicas para manejar eficientemente los errores de coma flotante en C++. Se abordan métodos como la inspección directa de resultados (verificación de infinito y NaN), el uso de bits de 'sticky' en el registro de estado de coma flotante y la habilitación de 'traps' de hardware. Se analiza el rendimiento de cada enfoque a través de un ejemplo práctico. El artículo también cubre la teoría detrás de los errores de coma flotante, incluyendo representaciones de infinito y NaN, y las excepciones IEEE-754. Se discuten las compensaciones entre la detección de errores mediante software (inspección de resultados) y hardware (bits 'sticky' y 'traps'), destacando que los 'traps' son significativamente más lentos y deben reservarse para casos de excepciones muy poco frecuentes. Finalmente, se ofrece código fuente de ejemplo en un repositorio de GitHub para ilustrar las técnicas descritas.
Manejo de errores de coma flotante en C++: lo que realmente funciona
