MathParser.org-mXparser

Math Parser: Java, C#, C++, Kotlin, Android, and all .NET platforms (Nuget, Maven, CMake). Supports .NET Framework, .NET Core, .NET Standard, Xamarin, and more. Features: rich built-in library of math functions, operators, constants. Flexible in user-defined arguments, functions. Expressions provided as plain text. Easy to use. Well documented.

OTHER License

Downloads
558
Stars
908
Committers
10

Bot releases are visible (Hide)

Latest release

v.5.1.0 (2022-11-13): Libris: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register, Serialization Support

v.5.0.7 (2022-08-21): Leonis - a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register

Did you find the software useful?

  • please consider donation
  • purchase the commercial license from here or from here

Android App that is powered by MathParser.org-mXparser:

Other websites:

v.5.0.6 (2022-05-31): Leonis - a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register

Did you find the software useful?

  • please consider donation
  • purchase the commercial license from here or from here

Android App that is powered by MathParser.org-mXparser:

Other websites:

v.5.0.5 (2022-05-29): Leonis - a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register

Did you find the software useful?

  • please consider donation
  • purchase the commercial license from here or from here

Android App that is powered by MathParser.org-mXparser:

Other websites:

v.5.0.4 (2022-05-22): Leonis - a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register

Did you find the software useful?

  • please consider donation
  • purchase the commercial license from here or from here

Android App that is powered by MathParser.org-mXparser:

Other websites:

v.5.0.3 (2022-05-21): Leonis - a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register

Did you find the software useful?

  • please consider donation
  • purchase the commercial license from here or from here

Android App that is powered by MathParser.org-mXparser:

Other websites:

MathParser.org-mXparser - v.5.0.2 (Leonis): fix #258

Published by mariuszgromada over 2 years ago

#258

MathParser.org-mXparser - Gemoni - bugs fixing

Published by mariuszgromada over 4 years ago

v.4.4.2 (2020-01-25): Gemoni - bugs fixing

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Gemoni

Published by mariuszgromada almost 5 years ago

v.4.4.0 (2020-01-14): Gemoni - API improvement

Canonical rounding: Bye bye floating point arithmetic artifacts

ULP rounding is switched of as a default setting (can be enabled / disabled). As a default canonical rounding is switched on (can be disabled / enabled). New methods:

  • mXparser.enableCanonicalRounding()
  • mXparser.disableCanonicalRounding()
  • mXparser.setCanonicalRounding(boolean)
  • mXparser.checkIfCanonicalRounding

Example 1

Expression e = new Expression("0.1 + 0.1 + 0.1");
System.out.println("Pure Java             : 0.1 + 0.1 + 0.1 = " + (0.1 + 0.1 + 0.1));
System.out.println("mXparser              : 0.1 + 0.1 + 0.1 = " + e.calculate());
mXparser.disableCanonicalRounding();
System.out.println("mXparser canonical off: 0.1 + 0.1 + 0.1 = " + e.calculate());
===========
Pure Java             : 0.1 + 0.1 + 0.1 = 0.30000000000000004
mXparser              : 0.1 + 0.1 + 0.1 = 0.3
mXparser canonical off: 0.1 + 0.1 + 0.1 = 0.30000000000000004

Example 2

Expression e = new Expression("(-1/6.2)^(-3)");
System.out.println("Pure Java             : (-1/6.2)^(-3) = " + Math.pow(-1/6.2, -3));
System.out.println("mXparser              : (-1/6.2)^(-3) = " + e.calculate());
mXparser.disableCanonicalRounding();
System.out.println("mXparser canonical off: (-1/6.2)^(-3) = " + e.calculate());
===========
Pure Java             : (-1/6.2)^(-3) = -238.32800000000003
mXparser              : (-1/6.2)^(-3) = -238.328
mXparser canonical off: (-1/6.2)^(-3) = -238.32800000000003

Argument extension - analogy to Function Extension

Now you can define user arguments implementing your own algorithm in source code.

Example

class PiMultArgExt implements ArgumentExtension {
	private int multiple = 0;
	public double getArgumentValue() {
	    multiple++;
		return  MathConstants.PI * multiple;
	}
	public PiMultArgExt clone() {
	    return new PiMultArgExt();
	}
}

Argument x = new Argument("x", new PiMultArgExt());
Expression e = new Expression("x/pi", x);
System.out.println("1st calc exec: " + e.calculate());
System.out.println("2nd calc exec: " + e.calculate());
System.out.println("3rd calc exec: " + e.calculate());
===========
1st calc exec: 1.0
2nd calc exec: 2.0
3rd calc exec: 3.0

Bugs fixed

  • #168, #18 Exact special trigonometric values
  • #192, #178 Logical operators precedence
  • #172 "x + 4 * - 2"

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Caprica - bugs fixing

Published by mariuszgromada over 5 years ago

v.4.3.3 (2019-01-27): Bug fix

v.4.3.2 (2019-01-25): Nuget package fix

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Caprica

Published by mariuszgromada almost 6 years ago

v.4.3.0 (2019-01-19): Caprica - API improvement

Cancel ongoing calculation

  • mXparser.cancelCurrentCalculation()
  • mXparser.resetCancelCurrentCalculationFlag();

Set default options

  • mXparser.setDefaultOptions()

User defined constants / units

  • constant name can be surrounded by square bracket, i.e. [const]
  • Expression.getMissingUserDefinedUnits()

Bug fixing

  • #153, #162 Endless Loop
  • #164 PrimeCache out of memory - handling error / exception

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Aquaria

Published by mariuszgromada over 6 years ago

v.4.2.0 (2018-07-15): Aquaria - Major release

Broader types of decimal number literals

  • No leading zero, i.e.: .2, .312, -.21

Fraction as number literals

  • 1_2 is recognized as 1/2
  • 2_3_4 is recognized as 2 + 3/4
  • 17_5 is recognized as 17/5
  • Just use Expression e = new Expression("2_3_2 + 1_2")

Double to fraction conversion

  • mXparser.toFraction(double value) - double[]
  • mXparser.toMixedFraction(double value) - double[]
  • mXparser.fractionToString(double[] fraction) - String
  • mXparser.toFractionString(double value) - String
  • mXparser.toMixedFractionString(double value) - String

Disable / enable almost int rounding

  • mXparser.enableAlmostIntRounding()
  • mXparser.disableAlmostIntRounding()
  • mXparser.checkIfAlmostIntRounding()
  • mXparser.getEpsilon()
  • mXparser.setEpsilon()

Variadic user defined functions

  • Function f = new Function("f(...) = sum(i, 1, [npar], par(i)^2 )");
  • [npar] - number of available parameters
  • par(i) - parameter value
  • body extended is supported

New special functions

  • Gamma(x) - Gamma special function Γ(s)
  • LambW0(x) - Lambert-W special function, principal branch 0, also called the omega function or product logarithm
  • LambW1(x) - Lambert-W special function, branch -1, also called the omega function or product logarithm
  • sgnGamma(x) - Signum of Gamma special function, Γ(s)
  • logGamma(x) - Log Gamma special function, lnΓ(s)
  • diGamma(x) - Digamma function as the logarithmic derivative of the Gamma special function, ψ(x)
  • GammaL(s,x) - Lower incomplete gamma special function, γ(s,x)
  • GammaU(s,x) - Upper incomplete Gamma special function, Γ(s,x)
  • GammaP(s,x), GammaRegL(s,x) - Lower regularized P gamma special function, P(s,x)
  • GammaQ(s,x), GammaRegU(s,x) - Upper regularized Q Gamma special function, Q(s,x)
  • Beta(x,y) - The Beta special function B(x,y), also called the Euler integral of the first kind
  • logBeta(x,y) - The Log Beta special function ln B(x,y), also called the Log Euler integral of the first kind, ln B(x,y)
  • BetaInc(x,a,b) - The incomplete beta special function B(x; a, b), also called the incomplete Euler integral of the first kind
  • BetaI(x,a,b), BetaReg(x,a,b) - The regularized incomplete beta (or regularized beta) special function I(x; a, b), also called the regularized incomplete Euler integral of the first kind

Degrees / Radians mode for trigonometrix

  • mXparser.setDegreesMode()
  • mXparser.setRadiansMode()
  • mXparser.checkIfDegreesMode()
  • mXparser.checkIfRadiansMode()

New operator - Tetration

  • a^^n is recognized as a^a^a...^a - n times

Bugs fixed

Other framework support (binaries)

  • .NET Core: 2.0, 2.1
  • .NET Standard: 2.0
  • .NET Framework: 4.7, 4.7.2
  • JAVA: 1.9, 1.10

New regression tests - current tests coverage:

  • 1155 expression related tests
  • 245 syntax related tests
  • 65 API related tests
  • 20 performance tests

https://github.com/mariuszgromada/MathParser.org-mXparser/milestone/2

Enjoy :-)

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Aeries - checkSyntax() bug fixing

Published by mariuszgromada about 7 years ago

v.4.1.1 (2017-07-28): Aeries - checkSyntax() bug fixing

  • Fixed: checkSyntax() returns true "already checked no errors" #75

Enjoy :-)

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Aeries

Published by mariuszgromada over 7 years ago

v.4.1.0 (2017-07-09): Aeries - Major update

Various numeral systems

  • Binary numbers literals
  • Octal numbers literals
  • Hexadecimal numbers literals
  • Number literals with base between 1 and 36
  • base(b, digit1, ..., digitn) function to generate numbers in any given base

Leading zeros support

  • 0001
  • 0001.12e10
  • ...

Working with digits

  • ndig(number, targetBase) function - number of digits - specified numeral system base
  • ndig10(number) function - number of digits - base 10
  • dig(number, targetBase, position) - digit at position - specified numeral system base
  • dig10(number, position) - digit at position - base 10

Prime factorization

  • nfact(number) - number of prime factors
  • factval(number, factorId) - factor value
  • factexp(number, factorId) - factor exponent

Not-a-Number

  • [NaN] symbol
  • isNaN(x) function
  • coalesce(a1,...,an) function - first non-NaN value

Statistics

  • med(a1, a2, ..., an) - sample median
  • mode(a1, a2, ..., an) - sample mode

Boolean logic

  • [true] symbol
  • [false] symbol
  • or(a1,...an) - variadic or
  • and(a1,...an) - variadic and
  • xor(a1,...an) - variadic xor

Other functions

  • root(order, number) - root + support for negative numbers and odd-order
  • arcsec(x) - inverse trigonometric secant
  • arccsc(x) - inverse trigonometric cosecant
  • ndist(v1, v2, ... vn) - number of distinct values
  • argmin(v1, v2, ... vn) - index of minimum
  • argmax(v1, v2, ... vn) - index of maximum

New operator

  • % support (i.e. 2%, x%)

Calculus

  • der( f(x), x, x0 ) - alternative syntax for derivative (no need to define x as argument)

Built-in tokens

  • Option to override built-in tokens
  • Possibility to remove built-in tokens
  • Possibility to change built-in token
  • Key words: syntax + since
  • Get key words list

Working with expression tokens

  • Get missing user defined arguments
  • Get missing user defined functions

Bugs fixed

  • Dependent arguments and StackOverflowError #35 (introduction of recursion calls counter)
  • FunctionExtension.calculate #32

New regression tests - current tests coverage:

  • 829 expression related tests
  • 207 syntax related tests
  • 51 api related tests
  • 20 performance tests

Enjoy :-)

Download mXparser - Math Parser Java C# Library

MathParser.org-mXparser - Port to various .NET frameworks

Published by mariuszgromada over 7 years ago

v.4.0.0.2 (2017-04-17): Port to various .NET frameworks

  • .NET Core
  • .NET Standard
  • .NET PCL (supporting i.e.: Windows Phone, MonoTouch, etc.)
  • Xamarin.Android
  • Xamarin.iOS

Enjoy :-)

Download mXparser - Math Parser Java C# Library

v.4.0.0 (2017-03-27): Major update: Bitwise Operators, Numbers in scientific notation, Units, Physical & Astronomical Constants, Equations solving via finding function root, Better tokens handling, Function Extensions - possibility of using your own implementation, Bugs fixed!

  • Bitwise Operators

  • @~ - Bitwise unary complement

  • @& - Bitwise AND

  • @^ - Bitwise exclusive OR

  • @| - Bitwise inclusive OR

  • @<< - Signed left shift

  • @>> - Signed right shift

  • Numbers in scientific notation

  • 1.2e10

  • 1.2e-10

  • 1.2e+10

  • 1.2E10

  • 1.2E-10

  • 1.2E+10

  • ...

  • Units

  • [%] - <Ratio, Fraction> Percentage = 0.01

  • [%%] - <Ratio, Fraction> Promil, Per mille = 0.001

  • [Y] - Septillion / Yotta = 10^24

  • [sept] - Septillion / Yotta = 10^24

  • [Z] - Sextillion / Zetta = 10^21

  • [sext] - Sextillion / Zetta = 10^21

  • [E] - Quintillion / Exa = 10^18

  • [quint] - Quintillion / Exa = 10^18

  • [P] - Quadrillion / Peta = 10^15

  • [quad] - Quadrillion / Peta = 10^15

  • [T] - Trillion / Tera = 10^12

  • [tril] - Trillion / Tera = 10^12

  • [G] - Billion / Giga = 10^9

  • [bil] - Billion / Giga = 10^9

  • [M] - Million / Mega = 10^6

  • [mil] - Million / Mega = 10^6

  • [k] - Thousand / Kilo = 10^3

  • [th] - Thousand / Kilo = 10^3

  • [hecto] - Hundred / Hecto = 10^2

  • [hund] - Hundred / Hecto = 10^2

  • [deca] - Ten / Deca = 10

  • [ten] - Ten / Deca = 10

  • [deci] - Tenth / Deci = 0.1

  • [centi] - Hundredth / Centi = 0.01

  • [milli] - Thousandth / Milli = 0.001

  • [mic] - Millionth / Micro = 10^-6

  • [n] - Billionth / Nano = 10^-9

  • [p] - Trillionth / Pico = 10^-12

  • [f] - Quadrillionth / Femto = 10^-15

  • [a] - Quintillionth / Atoo = 10^-18

  • [z] - Sextillionth / Zepto = 10^-21

  • [y] - Septillionth / Yocto = 10^-24

  • [m] - Metre / Meter (m=1)

  • [km] - Kilometre / Kilometer (m=1)

  • [cm] - Centimetre / Centimeter (m=1)

  • [mm] - Millimetre / Millimeter (m=1)

  • [inch] - Inch (m=1)

  • [yd] - Yard (m=1)

  • [ft] - Feet (m=1)

  • [mile] - Mile (m=1)

  • [nmi] - Nautical mile (m=1)

  • [m2] - Square metre / Square meter (m=

  • [cm2] - Square centimetre / Square cent

  • [mm2] - Square millimetre / Square mill

  • [are] - Are (m=1)

  • [ha] - Hectare (m=1)

  • [acre] - Acre (m=1)

  • [km2] - Square kilometre / Square kilom

  • [mm3] - Cubic millimetre / Cubic mill

  • [cm3] - Cubic centimetre / Cubic cent

  • [m3] - Cubic metre / Cubic meter (m=

  • [km3] - Cubic kilometre / Cubic kilom

  • [ml] - Millilitre / Milliliter (m=1)

  • [l] - Litre / Liter (m=1)

  • [gall] - Gallon (m=1)

  • [pint] - Pint (m=1)

  • [s] - Second (s=1)

  • [ms] - Millisecond (s=1)

  • [min] - Minute (s=1)

  • [h] - Hour (s=1)

  • [day] - Day (s=1)

  • [week] - Week (s=1)

  • [yearj] - Julian year = 365.25 days (s=1)

  • [kg] - Kilogram (kg=1)

  • [gr] - Gram (kg=1)

  • [mg] - Milligram (kg=1)

  • [dag] - Decagram (kg=1)

  • [t] - Tonne (kg=1)

  • [oz] - Ounce (kg=1)

  • [lb] - Pound (kg=1)

  • [b] - Bit (bit=1)

  • [kb] - Kilobit (bit=1)

  • [Mb] - Megabit (bit=1)

  • [Gb] - Gigabit (bit=1)

  • [Tb] - Terabit (bit=1)

  • [Pb] - Petabit (bit=1)

  • [Eb] - Exabit (bit=1)

  • [Zb] - Zettabit (bit=1)

  • [Yb] - Yottabit (bit=1)

  • [B] - Byte (bit=1)

  • [kB] - Kilobyte (bit=1)

  • [MB] - Megabyte (bit=1)

  • [GB] - Gigabyte (bit=1)

  • [TB] - Terabyte (bit=1)

  • [PB] - Petabyte (bit=1)

  • [EB] - Exabyte (bit=1)

  • [ZB] - Zettabyte (bit=1)

  • [YB] - Yottabyte (bit=1)

  • [J] - Joule (m=1, kg=1, s=1)

  • [eV] - Electronovolt (m=1, kg=1, s=1

  • [keV] - Kiloelectronovolt (m=1, kg=1,

  • [MeV] - Megaelectronovolt (m=1, kg=1,

  • [GeV] - Gigaelectronovolt (m=1, kg=1,

  • [TeV] - Teraelectronovolt (m=1, kg=1,

  • [m/s] - Metre / Meter per second (m=1,

  • [km/h] - Kilometre / Kilometer per hour

  • [mi/h] - Mile per hour (m=1, s=1)

  • [knot] - Knot (m=1, s=1)

  • [m/s2] - Metre / Meter per squar

  • [km/h2] - Kilometre / Kilometer p

  • [mi/h2] - Mile per square hour (m

  • [rad] - Radian (rad=1)

  • [deg] - Degree of arc (rad=1)

  • ['] - Minute of arc (rad=1)

  • [''] - Second of arc (rad=1)

  • Physical Constants

  • [c] - Light speed in vacuum [m/s] (m=1, s=1)

  • [G.] - Gravitational constant (m=1, kg=1, s=1)]

  • [g] - Gravitational acceleration on Earth [m/s^2] (m=1, s=1)

  • [hP] - Planck constant (m=1, kg=1, s=1)

  • [h-] - Reduced Planck constant / Dirac constant (m=1, kg=1, s=1)]

  • [lP] - Planck length [m] (m=1)

  • [mP] - Planck mass [kg] (kg=1)

  • [tP] - Planck time [s] (s=1)

  • Astronomical Constants

  • [ly] - Light year [m] (m=1)

  • [au] - Astronomical unit [m] (m=1)

  • [pc] - Parsec [m] (m=1)

  • [kpc] - Kiloparsec [m] (m=1)

  • [Earth-R-eq - ]Earth equatorial radius [m] (m=1)

  • [Earth-R-po] - Earth polar radius [m] (m=1)

  • [Earth-R] - Earth mean radius (m=1)

  • [Earth-M] - Earth mass [kg] (kg=1)

  • [Earth-D] - Earth-Sun distance - semi major axis [m] (m=1)

  • [Moon-R] - Moon mean radius [m] (m=1)

  • [Moon-M] - Moon mass [kg] (kg=1)

  • [Moon-D] - Moon-Earth distance - semi major axis [m] (m=1)

  • [Solar-R] - Solar mean radius [m] (m=1)

  • [Solar-M] - Solar mass [kg] (kg=1)

  • [Mercury-R] - Mercury mean radius [m] (m=1)

  • [Mercury-M] - - Mercury mass [kg] (kg=1)

  • [Mercury-D]Mercury-Sun distance - semi major axis [m] (m=1)

  • [Venus-R] - Venus mean radius [m] (m=1)

  • [Venus-M] - Venus mass [kg] (kg=1)

  • [Venus-D] - Venus-Sun distance - semi major axis [m] (m=1)

  • [Mars-R] - Mars mean radius [m] (m=1)

  • [Mars-M] - Mars mass [kg] (kg=1)

  • [Mars-D] - Mars-Sun distance - semi major axis [m] (m=1)

  • [Jupiter-R] - Jupiter mean radius [m] (m=1)

  • [Jupiter-M] - Jupiter mass [kg] (kg=1)

  • [Jupiter-D] - Jupiter-Sun distance - semi major axis [m] (m=1)

  • [Saturn-R] - Saturn mean radius [m] (m=1)

  • [Saturn-M] - Saturn mass [kg] (kg=1)

  • [Saturn-D] - Saturn-Sun distance - semi major axis [m] (m=1)

  • [Uranus-R] - Uranus mean radius [m] (m=1)

  • [Uranus-M] - Uranus mass [kg] (kg=1)

  • [Uranus-D] - Uranus-Sun distance - semi major axis [m] (m=1)

  • [Neptune-R] - Neptune mean radius [m] (m=1)

  • [Neptune-M] - Neptune mass [kg] (kg=1)

  • [Neptune-D] - Neptune-Sun distance - semi major axis [m] (m=1)

  • Equations solving via finding function root

  • solve( f(x), x, a, b ) - solving f(x) = 0

  • Better tokens handling

  • Better handling of invalid / not known tokens

  • Looks like functionality

  • Function Extensions - possibility of using your own implementation

  • FunctionExtension interface + new constructor in Function class

  • Bugs fixed

  • Exception thrown by getCopyOfInitialTokens() #21

  • System.format.exception - system.IO.EndOfStreamException #20

  • Expression relating factorial "!" cause the application to hang #17

  • Negative sign missing when is right of operators #16

  • Negative in if statement #12

  • Speed when debugging #11

  • User defined arguments ending in e #10

  • New regression tests - current tests coverage:

  • 622 expression related tests

  • 114 syntax related tests

  • 30 api related tests

  • 20 performance tests

Enjoy :-)

Package Rankings
Top 8.19% on Repo1.maven.org
Top 9.47% on Npmjs.org
Badges
Extracted from project README
Subscription-Form INFIMA Scalar-Lite paypal INFIMA
Related Projects