12,406,124 members (69,761 online)
alternative version

108.6K views
48 bookmarked
Posted

# Math Parser

, 25 Aug 2005 CPOL
 Rate this:
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`

```p.Mode = MathParser.Mode.RAD;
p.Mode = MathParser.Mode.DEG;

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

## Share

 Germany
No Biography provided

## You may also be interested in...

 First PrevNext
 known bug Member 113264231-Dec-15 20:48 Member 11326423 1-Dec-15 20:48
 How to add % error_5057-Sep-13 23:27 error_505 7-Sep-13 23:27
 ++ | +- | -- | -+ can occur mirtes_992-Jun-13 4:03 mirtes_99 2-Jun-13 4:03
 Claro y sencillo Member 42650077-Sep-12 11:20 Member 4265007 7-Sep-12 11:20
 Solution General, thanks for it! Member 773069628-Sep-11 14:13 Member 7730696 28-Sep-11 14:13
 Re: Problem with expression Member 77306968-Sep-11 17:36 Member 7730696 8-Sep-11 17:36
 My vote of 1 sepehr101417-Jul-11 5:05 sepehr1014 17-Jul-11 5:05
 Multiplying by 0.6 Member 427553922-Jul-10 12:22 Member 4275539 22-Jul-10 12:22
 2*8,7-(24,8+1500*0,8*0,00004-0,04*25-2*LOG(150*25)) fdepijper@ziggo.nl8-Jul-10 19:27 fdepijper@ziggo.nl 8-Jul-10 19:27
 Re: 2*8,7-(24,8+1500*0,8*0,00004-0,04*25-2*LOG(150*25)) BiedermannS14-Mar-13 21:26 BiedermannS 14-Mar-13 21:26
 Ignoring comma when called by SQL Assembly Leo Kruz25-Nov-09 2:59 Leo Kruz 25-Nov-09 2:59
 The Parser does not respect presedence her´minator4-Mar-09 20:20 her´minator 4-Mar-09 20:20
 (exp(2)) not working TominatorBelgium3-Mar-09 6:59 TominatorBelgium 3-Mar-09 6:59
 cos(8) bey0nd8511-Jan-09 23:08 bey0nd85 11-Jan-09 23:08
 10*20+5*10 - No Result ? Victor Vanchesa15-Nov-07 11:42 Victor Vanchesa 15-Nov-07 11:42
 Hi all, 1/ A simple way to add binary and hexadecimal support:....(see below) 2/ A bug with acos following cos (or asin following sin ...) 1/ Code to add hex/bin support (0xsomething and 0bsomething) ```Regex regEx = new Regex("0[xX][A-Fa-f0-9]+", RegexOptions.IgnoreCase); Match h = regEx.Match(Expression); while (h.Success) { Expression = Expression.Replace(h.Value, Convert.ToInt32(h.Value.Substring(2), 16).ToString()); h = regEx.Match(Expression); } ``` ```regEx = new Regex("0[bB][0-1]+", RegexOptions.IgnoreCase); h = regEx.Match(Expression); while (h.Success) { Expression = Expression.Replace(h.Value, Convert.ToInt32(h.Value.Substring(2), 2).ToString()); h = regEx.Match(Expression); } ``` 2/ acos bug If you've got an expression like `cos(0.1) + acos(0.2)` Regexp that replace first cos will also replace second one and expression become 0.9950041653 + a0.99500416530.2 Best regards pierre
 Problem with expression Avrin174-Oct-07 0:12 Avrin17 4-Oct-07 0:12
 Re: Problem with expression Member 773069617-Aug-11 16:24 Member 7730696 17-Aug-11 16:24
 ln(exp(1)) evaluating correctly for you? BreakableC21-Sep-07 1:13 BreakableC 21-Sep-07 1:13
 ACOS, ASIN , ATAN error roksy30-Aug-07 22:53 roksy 30-Aug-07 22:53
 Problem with EMT64/AMD64 Extensions? DocEvil796-Nov-06 7:51 DocEvil79 6-Nov-06 7:51
 Re: Problem with EMT64/AMD64 Extensions? fdafdafdsa16-Nov-06 15:37 fdafdafdsa 16-Nov-06 15:37
 Re: Problem with EMT64/AMD64 Extensions? Xynratron15-Mar-07 2:53 Xynratron 15-Mar-07 2:53
 Last Visit: 31-Dec-99 18:00     Last Update: 29-Jul-16 21:54 Refresh 12 Next »