¿Qué es una buena biblioteca para analizar expresiones matemáticas en java?

Soy un desarrollador de Android y como parte de mi próxima aplicación, tendré que evaluar una gran variedad de ecuaciones y expresiones matemáticas creadas por el usuario. Estoy buscando una buena biblioteca de Java que sea liviana y pueda evaluar expresiones matemáticas usando variables definidas por el usuario y constantes, funciones trigonométricas y exponenciales, etc.

He mirado alrededor y Jep parece ser popular, pero me gustaría escuchar más sugerencias, especialmente de personas que han usado estas bibliotecas anteriormente.

JEval es una buena alternativa. Abandoné Jep debido a que se volvió comercial. La única preocupación es que JEval parece estar un poco dormido en este momento (último lanzamiento en 2008).

Hace un tiempo escribí un Evaluador de expresiones matemáticas simple pero capaz, que es gratuito y de código abierto. Su principal ventaja es ser rápido y pequeño: ambos son buenos con los dispositivos manuales. Si satisface su necesidad, puede usarlo.

Características principales:

  • Operadores matemáticos básicos, con precedencia inferida (^ * × · / ÷% + -).
  • Precedencia explícita con paréntesis.
  • Multiplicación implícita de subexpresiones entre corchetes.
  • Corrija la asociatividad a la derecha de exponenciales (operador de potencia).
  • Soporte directo para números hexadecimales con el prefijo 0x.
  • Constantes y variables
  • Operadores extensibles
  • Funciones extensibles.
  • 20 KiB de huella.

Ejemplo

MathEval math=new MathEval(); math.setVariable("Top", 5); math.setVariable("Left", 20); math.setVariable("Bottom",15); math.setVariable("Right", 60); System.out.println("Middle: "+math.evaluate("floor((Right+1-Left)/2)")); 

Pruebe https://code.google.com/p/expressionoasis/ . Es un marco extensible de evaluación de expresiones y cumplirá dichos requisitos.

Esto no se ajusta exactamente a mis condiciones iniciales, pero encontré un maravilloso analizador escrito en C ++. Estoy intentando descubrir el soporte de código nativo de Android para ver si puedo usarlo. Es exactamente lo que necesito.

Aquí está la documentación para el proyecto.
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx

Hay una nueva herramienta comercial llamada formula4j , que puede ser de interés para algunos.