A melhor solução que eu conheço é programar as expressões simbólicas no Mathematica , Maple ou SymPy ; todos os links vão diretamente para a documentação de geração de código. Todos os programas acima podem gerar código em C ou Fortran.
Nenhum dos programas acima menciona precisão na aritmética IEEE 754; em geral, seria difícil prever todas as fontes de cancelamento catastrófico, como observa @dmckee. É difícil substituir a experiência humana em análise numérica.
Para fornecer um exemplo concreto, considere calcular as funções trigonométricas com alta precisão para entradas arbitrárias em . Existem muitas estratégias para fazê-lo, algumas até dependentes de hardware, como pode ser visto no artigo Trigonometric Tables da Wikipedia . Todos os algoritmos exigem engenhosidade e análise numérica, mesmo algoritmos que dependem de tabelas de pesquisa e séries ou interpolação de Taylor (consulte o artigo da Wikipedia O dilema do criador de tabelas ). Para obter mais detalhes, consulte a pergunta Estouro de pilha relacionada. Como funcionam as funções trigonométricas? .[ 0 , 2 π]
O software que gerou código ou rotinas para calcular funções arbitrárias com alta precisão não precisaria apenas estar ciente dos erros de cancelamento, mas também aproximações em série (Taylor, Padé, Chebyshev, racional etc.) para calcular funções que não são definidas em termos de um número finito de adições, subtrações, multiplicações, divisões e mudanças de bits. (Veja Teoria da Aproximação .)