65.9K
CodeProject is changing. Read more.
Home

A powerful function parser

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (18 votes)

Feb 23, 2000

viewsIcon

144205

downloadIcon

2179

A simple yet powerful function parser that parses and evaluates standard mathematical functions

  • Download source files - 82 Kb
  • The inspiration to write this code was to have an easy-to-use parser for functions given as string. You have a string like "cos(x)-7*x/(1+x)", and you want to compute some values, maybe for displaying the graph of the function. You can write code like this:

    CFunction<long double>* fkt = CFunction<long double>::Parse("cos(x)-7*x/(1+x)");
    long double y = fkt->Execute(1.5);

    There are lots of definitions in the background, but the result is easy and fast! There is a one-time pasing step to construct the function tree, and function evaluations are only calls of standard math functions like sin, +, *, sqrt. When you want to know details about the implementaion, you should look into the source code. It would be too complex to describe the parsing algorithm here.