Monthly Archives: March 2017

mXparser – v.5.0 – released! Major update!

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:

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
  • #153#162 Endless Loop
  • #164 PrimeCache out of memory – handling error / exception

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 5.2.1

Nuget – .NET CLI

dotnet add package MathParser.org-mXparser --version 5.2.1

Nuget – Package Reference

<PackageReference Include="MathParser.org-mXparser" Version="5.2.1"/>

Maven – Dependency

<dependency>
<groupid>
org.mariuszgromada.math</groupid>
<artifactid>
MathParser.org-mXparser</artifactid>
<version>
5.2.1</version>
</dependency>

Maven – Gradle

implementation 'org.mariuszgromada.math:MathParser.org-mXparser:5.2.1'

Maven – Gradle (Kotlin)

implementation("org.mariuszgromada.math:MathParser.org-mXparser:5.2.1")

GitHub

git clone https://github.com/mariuszgromada/MathParser.org-mXparser

OTHER DOWNLOAD OPTIONS

Download latest release – v.5.2.1 Orion: .NET bin onlyDownload latest release – v.5.2.1 Orion: JAVA bin onlyDownload latest release – v.5.2.1 Orion: bin + doc

NEWS FROM MATHPARSER.ORG
SOURCE CODE

Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl