Click here to Skip to main content
Click here to Skip to main content
Go to top

Math Parser

, 25 Aug 2005
Rate this:
Please Sign up or sign in to vote.
Solve mathematical equations

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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Paratrooper666

Germany Germany
No Biography provided

Comments and Discussions

 
QuestionHow to add % Pinmembererror_5057-Sep-13 23:27 
Question++ | +- | -- | -+ can occur Pinmembermirtes_992-Jun-13 4:03 
GeneralClaro y sencillo PinmemberMember 42650077-Sep-12 11:20 
QuestionSolution General, thanks for it! PinmemberMember 773069628-Sep-11 14:13 
QuestionRe: Problem with expression PinmemberMember 77306968-Sep-11 17:36 
GeneralMy vote of 1 Pinmembersepehr101417-Jul-11 5:05 
QuestionMultiplying by 0.6 PinmemberMember 427553922-Jul-10 12:22 
General2*8,7-(24,8+1500*0,8*0,00004-0,04*25-2*LOG(150*25)) Pinmemberfdepijper@ziggo.nl8-Jul-10 19:27 
GeneralRe: 2*8,7-(24,8+1500*0,8*0,00004-0,04*25-2*LOG(150*25)) PinmemberBiedermannS14-Mar-13 21:26 
GeneralIgnoring comma when called by SQL Assembly PinmemberLeo Kruz25-Nov-09 2:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140916.1 | Last Updated 25 Aug 2005
Article Copyright 2005 by Paratrooper666
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid