postfija expresiones expresion evaluar evaluador c++ math

c++ - evaluar - evaluador de expresiones en c



Biblioteca de analizador de expresiones matemáticas OpenSouce C/C++ (7)

Estoy buscando una buena Biblioteca de Matemáticas de código abierto que pueda hacer cosas como:

  • Analizar matemáticas. expresiones "1 + 1 * (3/5)"
  • Integración

¿Alguien sabe algo como esto?


Hay MathPresso biblioteca MathPresso que es analizador y también compilador JIT de expresiones matemáticas, lo uso cuando el rendimiento es importante.

Algunas pruebas: evaluando la expresión "x / y + (x * x * y + 18.243 * y) / z" - donde las variables son números de coma flotante de doble precisión.

  • Función C ++: 144.1 millones de evaluaciones por segundo.
  • MathPresso: 133.8 millones de evaluaciones por segundo



Siempre he usado muParser , escrito en C ++, para analizar. No vas a tener una biblioteca que pueda hacer integración; Simplemente demasiado difícil sin una biblioteca seria de peso pesado. Existen integradores simbólicos de código abierto como Maxima, Octave, etc., pero son difíciles de interactuar y esa funcionalidad no se puede separar fácilmente del resto del proyecto.


También está GNU libmatheval , que hace evaluación y diferenciación. La integración es un problema mucho harder , incluso para integrandes de aspecto inocente.



Octave puede hacer esto y puede ser llamado desde un programa C ++ . Incluso puede llamar código C ++ desde octava fácilmente usando SWIG para generar la interfaz.