Introduction
Features
Build instructions
Math parser interface
Current version
|
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:
- Easy to use
- Optimized for speed
- 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
- Project / makefiles for MSVC, mingw, autoconf, bcc
- 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)
- Localization
- Argument separator, decimal separator, thousands separator can be adjusted to your locale
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.
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 |
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 |
The following table lists the default binary operators supported by the parser.
Operator | Meaning | Priority |
= | assignement | -1 |
&& | logical and | 1 |
|| | logical or | 2 |
<= | less or equal | 4 |
>= | greater or equal | 4 |
!= | not equal | 4 |
== | equal | 4 |
> | greater than | 4 |
< | less than | 4 |
+ | addition | 5 |
- | subtraction | 5 |
* | multiplication | 6 |
/ | division | 6 |
^ | raise x to the power of y | 7 |
*The assignment operator is special since it changes one of its
arguments and can only by applied to variables.
muParser has built in support for the if then else operator. It uses lazy evaluation in order
to make sure only the necessary branch of the expression is evaluated.
Operator | Meaning | Remarks |
?: | if then else operator | C++ style syntax |
© 2005-2011 Ingo Berg |
^ TOP
|
|