TO SUPPORT MY WORK, ORDER A COMMERCIAL LICENSE
THANK YOU!
v.5.0.4 (2022-05-22): Leonis – a major release: Implied Multiplication, Unicode Math Symbols, Additional Probability Distributions, Calculation Steps Register:
- Implied Multiplication, click to see usage example
- Unicode Math Symbols, click to see usage example
- Calculation Steps Register, click to see usage example
- An Attempt To Fix Expression String
- Student’s t-distribution: Probabilisty Density Function, Cumulative Distribution Function, Quantile Function
- Chi-Squared Distribution: Probabilisty Density Function, Cumulative Distribution Function, Quantile Function
- Minor Bug fixing: 259, 258, 252
- Regression tests refactoring
- License update
v.4.4.2 (2020-01-25): Gemoni – bugs fixing
- #200 System.OutOfMemoryException: Array dimensions exceeded supported range (#200)
- #199 cancelCurrentCalculation does not stop for some expressions (#199)
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
Argument extension – analogy to Function Extension
Now you can define user arguments implementing your own algorithm in source code.
Bugs fixed
- #168, #18 Exact special trigonometric values
- #192, #178 Logical operators precedence
- #172 “x + 4 * – 2”
v.4.3.3 (2019-01-27): Bug fix
v.4.3.2 (2019-01-25): Nuget package fix
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
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
- Argument.checkSyntax() #145
- Endless loop with factorial #136
- StringIndexOutOfBoundsException asking for tokens of empty expression #135
- Function.checkSyntax() always returns true #111
- Syntax for unary complement #114
- Iterative operators descending sequence #119
- checkSyntax() bug #80
- Very very very long processing time of gcd #91
- Priorities of “if”, “iff” and other calculus operations #82
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
v.4.1.1 (2017-07-28): Aeries – checkSyntax() bug fixing
- Fixed: checkSyntax() returns true “already checked no errors” #75
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
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
- – 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 🙂
Nuget – Package Manager
Install-Package
MathParser.org-mXparser
-Version
6.0.0
dotnet add package
MathParser.org-mXparser
--version
6.0.0
<PackageReference Include=
"MathParser.org-mXparser"
Version=
"6.0.0"
/>
Maven – Dependency
<dependency>
<groupid>org.mariuszgromada.math
</groupid>
<artifactid>MathParser.org-mXparser
</artifactid>
<version>6.0.0
</version>
</dependency>
Maven – Gradle
implementation
'org.mariuszgromada.math:MathParser.org-mXparser:6.0.0'
Maven – Gradle (Kotlin)
implementation(
"org.mariuszgromada.math:MathParser.org-mXparser:6.0.0"
)
GitHub
git clone
https://github.com/mariuszgromada/MathParser.org-mXparser
OTHER DOWNLOAD OPTIONS
Download latest release – v.6.0.0 Picon: .NET bin onlyDownload latest release – v.6.0.0 Picon: JAVA bin onlyDownload latest release – v.6.0.0 Picon: bin + doc
NEWS FROM MATHPARSER.ORG
SOURCE CODE
Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl