class documentation
class documentation
math parser download
math parser download

Start page
Features
Build instructions
Math parser interface
Current version


Features

The following is a list of the features currently supported by the parser library. The primary objective is to keep it as extensible as possible whilst ensuring a maximum parsing speed. Extending the parser is mostly based on allowing a user to add custom callbacks which require only an absolute minimum of code. For instance you need exactly 2 lines of code to add a new function. But extending the parser may not be necessary at all since it comes with a powerful default implementation. Here is the (incomplete) list of features:

Overview

  • Easy to use
  • Extremely fast
  • User-defined operators
    • binary operators
    • postfix operators
    • infix operators
  • User-defined functions
    • with a fixed number of up to five arguments
    • with variable number of arguments
    • with a single string argument (for database queries)
  • User-defined constants.
    • numeric constants
    • string constants
  • User-defined variables.
    • unlimited in number
    • definable at parser runtime by the parser
    • assigning variables in terms of other variables is possible
  • Custom value recognition callbacks
    • support for binary and hex values.
    • can be used to implement database queries
  • Default implementaion with many features
  • Portability
    • GNU Makefile included
    • BCB Project files included
    • MSVC 7.1 Project files for managed and unmanaged code
    • ISO 14882 compliant code
    • DLL version usable from every language able to use function exported in C-style
  • Unit support
    • Use postfix operators as unit multipliers (3m -> 0.003)

The default implementation

This section gives an overview on the default features supported by the parser. The default implementation is defined in the class mu::Parser located in the file muParser.cpp. The DLL-version uses this class internally.

Built-in functions

The following table gives an overview of the functions supported by the default implementation. It lists the function names, the number of arguments and a brief description.

Name Argc. Explanation
sin 1 sine function
cos 1 cosine function
tan 1 tangens function
asin 1 arcus sine function
acos 1 arcus cosine function
atan 1 arcus tangens function
sinh 1 hyperbolic sine function
cosh 1 hyperbolic cosine
tanh 1 hyperbolic tangens function
asinh 1 hyperbolic arcus sine function
acosh 1 hyperbolic arcus tangens function
atanh 1 hyperbolic arcur tangens function
log2 1 logarithm to the base 2
log10 1 logarithm to the base 10
log 1 logarithm to the base 10
ln 1 logarithm to base e (2.71828...)
exp 1 e raised to the power of x
sqrt 1 square root of a value
sign 1 sign function -1 if x<0; 1 if x>0
rint 1 round to nearest integer
abs 1 absolute value
if 3 if ... then ... else ...
min var. min of all arguments
max var. max of all arguments
sum var. sum of all arguments
avg var. mean value of all arguments

Built-in binary operators

The following table lists the default binary operators supported by the parser.

Operator Meaning Priority
= assignement* -1
and logical and 1
or logical or 1
xor logical xor 1
<= less or equal 2
>= greater or equal 2
!= not equal 2
== equal 2
> greater than 2
< less than 2
+ addition 3
- subtraction 3
* multiplication 4
/ division 4
^ raise x to the power of y 5
*The assignment operator is special since it changes one of its arguments and can only by applied to variables.


© 2005-2006 Ingo Berg ^ TOP