Я ищу хороший открытый исходный код Math Library, которые могут делать такие вещи, как:OpenSouce C/C++ Math анализатор выражений Библиотеки
- Разбора по математике. выражения "1 + 1 * (3/5)"
- Интеграция
Кто-нибудь знает что-то вроде этого?
Я ищу хороший открытый исходный код Math Library, которые могут делать такие вещи, как:OpenSouce C/C++ Math анализатор выражений Библиотеки
Кто-нибудь знает что-то вроде этого?
Octave может это сделать и может называться от within a C++ program. Вы можете даже вызвать код C++ из октавы с помощью SWIG, чтобы сгенерировать интерфейс.
Другой подход заключается в том, чтобы внедрить интерпретируемый язык в ваше приложение и использовать парсер langauge для математики.
LUA становится популярным для этого - см How to embed lua in c++ via SWIG
ae Попробуйте мою библиотеку, которая основана на Lua. См. Также Evaluating Mathematical Expressions using Lua
У меня была аналогичная потребность в программировании, где я использовал Shunting yard algorithm. Полезно для разбора infix notation, как и у вас.
Я всегда использовал muParser, написанный на C++, для синтаксического анализа. Вы не получите библиотеку, которая может интегрировать; просто слишком сложно без серьезной тяжеловесной библиотеки. Существуют символические интеграторы с открытым исходным кодом, такие как Maxima, Octave и т. Д., Но с ними трудно взаимодействовать, и эта функциональность не может быть легко отделена от остальной части проекта.
Существует также GNU libmatheval, что делает оценку и дифференциацию. Интеграция - это проблема harder, даже для невинно выглядящих подынтегральных выражений.
+1, я бы не встретил это раньше, и это выглядит довольно интересно. – Flexo
Существует библиотека MathPresso, которая является парсером, а также JIT-компилятор математических выражений, я использую его, когда производительность важна.
Некоторые тесты: Оценка выражения "x/y + (x * x * y + 18.243 * y)/z" - где переменные представляют собой числа с плавающей запятой двойной точности. Функция
выражения синтаксического анализа и интеграции, а разные, в зависимости от того, насколько сложной интеграции вам нужно –
Некоторые бесплатно Реализации Java и C++ алгоритма Shunting Yard для преобразования выражений в обратную польскую нотацию, а затем их оценку можно найти здесь: http://www.technical-recipes.com/2011/a-matimate-expression-parser-in-java -and-cpp/ – AndyUK
пример синтаксического анализа математических выражений: https: // stack overflow.com/a/32853177 –