Оригинальный автор(ы) | Мариуш Громада |
---|---|
Первоначальный выпуск | Январь 2010 ( 2010-01 ) |
Стабильный релиз | 6.1.0 / 19 октября 2024 г. ( 2024-10-19 ) |
Репозиторий | github.com/mariuszgromada/MathParser.org-mXparser/ |
Написано в | Java , C# , C++ |
Платформа | JVM , Android , C++ , .NET , .NET Core , .NET Standard, Windows Phone , MONO , Xamarin , Xamarin.iOS , Xamarin.Android |
Веб-сайт | mathparser.org |
mXparser — это синтаксический анализатор /оценщик математических выражений с открытым исходным кодом , предоставляющий возможности для вычисления различных выражений во время выполнения . [1] Определения выражений задаются в виде обычного текста, затем проверяются с точки зрения грамматики/синтаксиса , и, наконец, вычисляются. Исходный код библиотеки поддерживается отдельно для Java и C# , предоставляя тот же API для Java/JVM , Android , .NET и Mono ( совместимый со спецификацией Common Language ).
mXparser предоставляет такие функциональные возможности, как: базовые вычисления, подразумеваемое умножение, встроенные константы и функции, операции числового исчисления, итерационные операторы, определяемые пользователем константы, определяемые пользователем функции, определяемая пользователем рекурсия, поддержка математических символов Unicode .
mXparser поддерживает основные операторы, такие как: сложение «+» , вычитание «-» , умножение «*» , деление «/» , факториал «!» , возведение в степень «^» , остаток от деления «#» .
Выражение e = новое выражение ( "2+3/(4+5)^4" ); double v = e . calculate ();
Выражение e = новое выражение ( "2(3+4)3" ); double v = e . calculate ();
Выражение e = новое выражение ( "2pi(3+4)2sin(3)e" ); double v = e . calculate ();
Можно комбинировать типичные выражения с бинарными отношениями (например, больше чем '>' , меньше чем '<' , равенство '=' , неравенство '<>' , больше или равно '>=', меньше или равно '<='), поскольку каждая оценка отношения дает либо '1' для истинного результата, либо '0' для ложного .
Выражение e = новое выражение ( "(2<3)+5" ); double v = e . calculate ();
Булева логика также работает, предполагая эквивалентность «1 как истина » и «0 как ложь ». Поддерживаемые булевы операторы включают: AND конъюнкция , OR дизъюнкция , NAND Шеффер штрих , NOR , XOR Исключающее ИЛИ , IMP импликация , CIMP обратная импликация , NIMP материальная неимпликация , CNIMP обратная неимпликация , EQV логическая двуусловная , отрицание .
Выражение e = новое выражение ( "1 --> 0" ); double v = e . calculate ();
Поддерживаются общие математические функции (унарные, бинарные и с переменным числом аргументов), в том числе: тригонометрические функции , обратные тригонометрические функции , логарифмические функции , показательные функции , гиперболические функции , обратные гиперболические функции , числа Белла , числа Люка , числа Стирлинга , функция подсчета простых чисел , показательная интегральная функция , логарифмическая интегральная функция , смещенный логарифмический интеграл , биномиальный коэффициент и другие.
Выражение e = новое выражение ( "sin(0)+ln(2)+log(3,9)" ); double v = e . calculate ();
Выражение e = новое выражение ( "min(1,2,3,4)+gcd ( 1000,100,10)" ); double v = e .calculate ();
Выражение e = новое выражение ( "if(2<1, 3 , 4)" ); double v = e .calculate ();
Выражение e = новое выражение ( "iff(2<1, 1; 3<4 , 2; 10<2, 3; 5<10, 4)" ); double v = e .calculate ();
Встроенные математические константы с высокой точностью.
Выражение e = новое выражение ( "sin(pi)+ln(e)" ); double v = e . calculate ();
Операторы итерационного суммирования и произведения .
Выражение e = новое выражение ( "sum(i, 1, 10, ln(i))" ); double v = e . calculate ();
Выражение e = новое выражение ( "prod(i, 1, 10, sin(i))" ); double v = e . calculate ();
mXparser обеспечивает реализацию следующих вычислительных операций: дифференцирование и интегрирование .
Выражение e = новое выражение ( "der( sin(x), x )" ); double v = e . calculate ();
Выражение e = новое выражение ( "int( sqrt(1-x^2), x, -1, 1)" ); double v = e . calculate ();
Выражение e = новое выражение ( "ispr(21)" ); double v = e . calculate ();
Выражение e = новое выражение ( "Pi(1000)" ); double v = e . calculate ();
Выражение e = новое выражение ( "√2" ); double v = e . calculate ();
Выражение e = новое выражение ( "∜16 + ∛27 + √16" ); double v = e . calculate ();
Выражение e = новое выражение ( "∑(i, 1, 5, i^2)" ); double v = e . calculate ();
Библиотека предоставляет API для создания пользовательских объектов, таких как: константы, аргументы, функции.
Константа t = новая Константа ( "t = 2*pi" ); Выражение e = новое Выражение ( " sin(t)" , t ); double v = e.calculate () ;
Аргумент x = новый аргумент ( "x = 5" ); Аргумент y = новый аргумент ( "y = 2*x" , x ); Выражение e = новое выражение ( " sin(x)+y" , x , y ); double v = e.calculate () ;
Функция f = новая Функция ( "f(x, y) = sin(x)+cos(y)" ) ; Выражение e = новое Выражение ( " f(1,2)" , f ); double v = e.calculate ();
Функция f = новая Функция ( "f(...) = сумма( i, 1, [npar], par(i) )" ); Выражение e = новое Выражение ( "f(1,2,3,4)" , f ); double v = e . calculate ();
Функция fib = новая Функция ( "fib(n) = iff(n>1, fib(n-1)+fib(n-2); n=1, 1; n=0, 0) )" ) ; Выражение e = новое Выражение ( "fib(10)" , fib ); double v = e .calculate ();
Исходный код поддерживается и доступен на GitHub . [5]