Что такое хорошая библиотека для анализа математических выражений в java?

Я разработчик Android и как часть моего следующего приложения мне нужно будет оценить большое количество пользовательских математических выражений и уравнений. Я ищу хорошую библиотеку java, которая легка и может оценивать математические выражения с использованием пользовательских переменных и констант, триггерных и экспоненциальных функций и т. Д.

Я огляделся, и Jep, похоже, был популярен, но мне хотелось бы услышать больше предложений, особенно от людей, которые раньше использовали эти библиотеки.

JEval – хорошая альтернатива. Я отказался от Jep из-за того, что он стал коммерческим. Единственное беспокойство заключается в том, что JEval, кажется, немного спящий на данный момент (последний релиз в 2008 году).

Я написал простой, но способный Math Expression Evaluator некоторое время назад, что является бесплатным и открытым исходным кодом. Главное преимущество – быть быстрым и крошечным – оба хороши с ручными устройствами. Если это соответствует вашим потребностям, вы можете его использовать.

Основные характеристики:

  • Основные математические операторы с предполагаемым приоритетом (^ * × · / ÷% + -).
  • Явный приоритет с круглыми скобками.
  • Неявное умножение заключенных в скобки подвыражений.
  • Правильная правая ассоциативность экспонент (оператор мощности).
  • Прямая поддержка шестнадцатеричных чисел с префиксом 0x.
  • Константы и переменные.
  • Расширяемые операторы.
  • Расширяемые функции.
  • 20 KiB.

пример

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)")); 

Попробуйте https://code.google.com/p/expressionoasis/ . Это расширяемая система оценки выражений и будет отвечать таким требованиям.

Это не совсем соответствует моим начальным условиям, но я нашел замечательный парсер, написанный на C ++. Я пытаюсь выяснить поддержку собственного кода Android, чтобы узнать, могу ли я его использовать. Это именно то, что мне нужно.

Вот документация для проекта.
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx

Существует новый коммерческий инструмент под названием formula4j , который может представлять интерес для некоторых.

  • Обновите обновление ProgressBar
  • Android: определить яркость (количество света) в окружении телефона с помощью камеры?
  • скопируйте 2d-массив в java
  • Действительно ли невозможно защитить приложения Android от обратного проектирования?
  • Как использовать перехватчик для добавления заголовков в «Дооснащение 2.0»
  • Несколько версий Java, работающих одновременно под Windows
  • Как я могу представить диапазон в Java?
  • Не удалось указать целевые платформы. Проверьте правильность пути sdk android.
  • Проект Android Studio Gradle «Невозможно запустить процесс / инициализацию виртуальной машины»
  • Как получить часть после десятичной точки в Java?
  • Java - Нулевая переменная требует пространства в памяти
  • Давайте будем гением компьютера.