La mejor solución que conozco es programar las expresiones simbólicas en Mathematica , Maple o SymPy ; Todos los enlaces van directamente a la documentación de generación de código. Todos los programas anteriores pueden generar código en C o Fortran.
Ninguno de los programas anteriores menciona precisión en aritmética IEEE 754; en general, sería difícil anticipar todas las fuentes de cancelación catastrófica, como señala @dmckee. Es difícil reemplazar la experiencia humana en análisis numérico.
Para proporcionar un ejemplo concreto, considere calcular las funciones trigonométricas con alta precisión para entradas arbitrarias en . Hay muchas estrategias para hacerlo, algunas incluso dependen del hardware, como se ve en el artículo de Wikipedia Trigonometric Tables . Todos los algoritmos requieren ingenio y análisis numérico, incluso los algoritmos que dependen de tablas de búsqueda y series o interpolación de Taylor (consulte el artículo de Wikipedia The Table-Maker's Dilemma ). Para obtener más detalles, consulte la pregunta relacionada sobre el desbordamiento de pila ¿ Cómo funcionan las funciones trigonométricas? .[ 0 , 2 π]
El software que generó código o rutinas para calcular funciones arbitrarias con alta precisión no solo necesitaría tener en cuenta los errores de cancelación, sino también las aproximaciones de series (Taylor, Padé, Chebyshev, racionales, etc.) para calcular funciones que no están definidas en términos de un número finito de sumas, restas, multiplicaciones, divisiones y cambios de bits. (Ver Teoría de la aproximación ).