|
||||||
Description:
This library and stand alone test app can parse numerical
expressions or functions such as "sqrt( sin( 1.2e-3) - 2*y)",
containing variables with arbitrary names. It is written with function
plotters, spreadsheets and curve fitters in mind -- programs which
need to very quickly evaluate the same function many times, changing
the values of variables inbetween.
The following operators and functions are supported: +, -, *,
/, %, ^ (power), &&, ||, !, &, |, !& (XOR), ~, -(unary), >, <, ==, >=,
<=, sin(), cos(), tan(), sec(), csc(), cot(), asin(), acos(), atan(),
asec(), acsc(), acot(), sinh(), cosh(), tanh(), sech(), csch(),
coth(), exp(), ln(), log(), abs(), sqrt(), ceil(), floor() and rand().
New Features as of version 1.2 include symbolic math operations via
common C syntax, stack allocation, better expression simplification
and support for predefined numerical constants such as "pi" and "e".
The parser can also take derivatives -- Why laboriously calculate
derivatives with numerical methods when you can do it symbolically and
then evaluate the expression thousands of times for different
variables with little additional overhead!
Version 1.2.1 adds a few bug fixes and fleshes out the symbolic math
capabilities. Version 1.2.2 adds ceil() and floor() to the library of
standard function types, corrected documentation,
links to other parser libraries, direct Expression construction
from '\0' terminated char[], and an Expression::GetVariableValue()
method. Version 1.2.3 fixes a number of exception related memory leaks and
adds a few small tweaks to the test app.
As always, x86 users should be wary of possible endian-ness bugs.
I lack the hardware to test the code on x86 processors.
If you have any questions about the information provided for a specific application, please e-mail the author. If you have any questions about the BeWare pages themselves, though, feel free to e-mail webmaster@be.com. | ||||||
Copyright © 1999 by Be, Inc. All rights reserved. Legal information (includes icon usage info). Comments, questions, or confessions about our site? Please write the Webmaster. | ||||||