Introduction
This is a parser which uses RegEx to solve mathematical expressions.
How To Use It?
MathParser.Parser p = new MathParser.Parser();
if( p.Evaluate( "-(5-10)^(-1)(3+2(cos(3Pi)+(2+ln(exp(1)))^3))" ) )
Console.WriteLine( p.Result );
else Console.WriteLine( "Error." );
Features
- Functions
abs
acos
asin
atan
cos
cosh
floor
ln
log
sign
sin
sinh
sqrt
tan
tanh
- Operators: +, -, *, , ^, !
- Constants:
Pi
Choose between RAD, DEG and GRAD.
p.Mode = MathParser.Mode.RAD;
p.Mode = MathParser.Mode.DEG;
p.Mode = MathParser.Mode.GRAD;
Or:
Parser p = new Parser( MathParser.Mode.DEG );
2(1+3(1e3+1)) = 2*(1+3*(1000+1)) = 2*(1+3(1000+1)) = 2(1+3*(10^3+1)) = 6008
2(1+4(5Pi+2,2e3)(5+2)^3)
is the same as 2*(1+4*(5*Pi+2200)*(5+2)^3)
.
Known Problems
I tested this parser on a German operating system (WinXP).
If I want to convert a string
to double
(e.g. "3.123
") the decimal point must be a ",
" (Convert.ToDouble("3.123"
) would throw an Exception).
I'm not sure if this works on an English version of WinXP.
If there are any problems with the decimal point, just report it and I will fix it.
Bug Fixes
- Fixed some problems with exponents