IntroductionFeaturesBuild instructionsMath parser interfaceCurrent version |
Example code
If you put all this together, you get the source code for a small application. The application defines a parser variables (" #include <iostream> #include "muParser.h" // Function callback double MySqr(double a_fVal) { return a_fVal*a_fVal; } // main program int main(int argc, char* argv[]) { using namespace mu; try { double fVal = 1; Parser p; p.DefineVar("a", &fVal); p.DefineFun("MySqr", MySqr); p.SetExpr("MySqr(a)*_pi+min(10,a)"); for (std::size_t a=0; a<100; ++a) { fVal = a; // Change value of variable a std::cout << p.Eval() << std::endl; } } catch (Parser::exception_type &e) { std::cout << e.GetMsg() << std::endl; } return 0; } BenchmarksFinally, I'd like to give you some benchmarks. The benchmarking was done on an Intel Pentium P-4 with 2.6 GHz, with a version compiled by using MSVC++ 7.1 (Standard edition). The diagram shows number of evaluations per seconds vs. expression length. I compared both the static lib and the dll version with two other parsers that are freely available on the net, very fast and have a similar set of features. One of them is a commercial product.
A higher curve means better performance. Expressions were created randomly. They used only
|