mXparser - v.4.0.0 - released! Major update!

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 🙂

2 thoughts on “mXparser - v.4.0.0 - released! Major update!

  1. This seems like a great package, I was going to incorporate it into my program but then found out that it's missing support for hexadecimal numbers.
    My use case calls for decimal, hexadecimal, scientific notation (decimal) and it's not necessary but would like support for binary and octal, in order of priority.

    Can I incorporate your parser into a C# DLL project with VS2010, is that supported? How big would the DLL be if it has very minimal and simple usage, evaluate simple things like basic algebra, no loops, no variable arguments?

    Thanks

    1. Thanks for the feedback! Code for scientific notation is already on GitHub. HEX/OCT/BIN will be also delivered with new 4.1 version. mXparser dll i c.a 0.5 MB.

Leave a Reply

Your email address will not be published. Required fields are marked *