<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <link rel="stylesheet" type="text/css" href="style/formate.css"/> <meta name="author" content="Ingo Berg"/> <!-- $META --> <meta name="keywords" content="features, muparser, operator, function, math parser, C++"/> <meta name="description" content="List of operators and functions supported by muparser"/> <title>List of muparser features</title> <script src="script/functions.js" language="javascript" type="text/javascript"></script> <script type="text/javascript"> imgHome=new Image(); imgHome.src="images/home.png"; imgHomeDark=new Image(); imgHomeDark.src="images/home_dark.png"; imgApi=new Image(); imgApi.src="images/api.png"; imgApiDark=new Image(); imgApiDark.src="images/api_dark.png"; function ChangeButtonImage(num,obj) { window.document.images[num].src=obj.src; } </script> </head> <body> <div class="gradient" id="top"> <div class="header"> muParser - a fast math parser library <br/> <div style="font-size:14pt;">Version 1.32</div> </div> <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center"> <a href="http://sourceforge.net/projects/muparser"> <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&type=15" width="150" height="40" border="0" alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" /> </a> </div> <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;"> <a class="white" href="http://www.beltoforion.de" onmouseover="ChangeButtonImage(1,imgHome)" onmouseout="ChangeButtonImage(1,imgHomeDark)"> <img src="images/home_dark.png" border="0" height="40" alt="My home page"/> <br/> <span class="tiny_text">My home<br/>page</span> </a> </div> <div style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;"> <a class="white" href="http://muparser.sourceforge.net/classdocu/index.html" onmouseover="ChangeButtonImage(2,imgApi)" onmouseout="ChangeButtonImage(2,imgApiDark)"> <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/> <br/> <span class="tiny_text">muParser<br/>API-doc</span> </a> </div> <!-- <div style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;"> <a class="white" href="http://sourceforge.net/project/showfiles.php?group_id=137191" onmouseover="ChangeButtonImage(3,imgDown)" onmouseout="ChangeButtonImage(3,imgDownDark)"> <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/> <br/> <span class="tiny_text">muParser<br/>Download</span> </a> </div> --> </div> <!-- class="gradient" --> <!-- Tabelle mit Hauptinhalt der Seite --> <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;"> <tbody> <tr> <td style="vertical-align: top; text-align: center" width="230"> <h3 class="navi_heading navi_info">Introduction</h3> <div class="sidebarlink"> <a href="index.html">About the parser</a><br/> <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/> <a href="mup_links.html">Software using muParser</a><br/> <a href="mup_licence.html">Licence</a><br/> </div> <h3 class="navi_heading navi_blocks">Features</h3> <div class="sidebarlink"> <a href="mup_features.html">Features</a><br/> <a href="mup_features.html#idFeatureOverview">Overview</a><br/> <a href="mup_features.html#idDef2">Built in functions</a><br/> <a href="mup_features.html#idDef3">Built in binary operators</a><br/> </div> <h3 class="navi_heading navi_build">Build instructions</h3> <div class="sidebarlink"> <a href="mup_usage.html#idInstWin">Building on Win32</a><br/> <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/> <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/> <a href="mup_usage.html#idInstInc">Including the files</a><br/> <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/> </div> <h3 class="navi_heading navi_list">Math parser interface</h3> <div class="sidebarlink"> <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/> <a href="mup_interface.html#idEval">Evaluating an expression</a><br/> <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/> <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/> <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/> <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/> <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/> <a href="mup_interface.html#idDefConst">Defining constants</a><br/> <a href="mup_interface.html#idDefFun">Defining functions</a><br/> <a href="mup_interface.html#idDefOprt">Defining operators</a><br/> <a href="mup_interface.html#idUnOp">Unary operators</a><br/> <a href="mup_interface.html#idBinOp">Binary operators</a><br/> <a href="mup_interface.html#idQueryVar">Querying variables</a><br/> <a href="mup_interface.html#idQueryConst">Querying constants</a><br/> <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/> <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/> <a href="mup_locale.html#idLoc">Localization</a><br/> <a href="mup_interface.html#idErrors">Error handling</a><br/> <a href="mup_version.html#idExample">Example code</a><br/> </div> <h3 class="navi_heading navi_question">Current version</h3> <div class="sidebarlink"> <a href="mup_version.html#idRelNote">Release notes</a><br/> <a href="mup_version.html#idBench">Benchmarks</a><br/> </div> <br/> <div align="center"> <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a> <br/> <br/> <a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/> </a> <br/> <br/> <a href="http://jigsaw.w3.org/css-validator/check/referer"> <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" /> </a> </div> </td> <td style="height: 100%; padding: 1em; vertical-align: top;"> <!-- This section contains the real page content. pages are created automatically by using the script "build_page.sh" which combines section templated with the navigation bar. This creates webpages that do not rely on php3 or Javascript for serverside or client side html inclusion. //--> <!-- $PLACEHOLDER --> <!-- // // // // Features // // // --> <br/> <h2><a name="idFeature">Features</a></h2> <p> The following is a list of the features currently supported by the parser library. The primary objective is to keep it as extensible as possible whilst ensuring a maximum parsing speed. Extending the parser is mostly based on allowing a user to add custom callbacks which require only an absolute minimum of code. For instance you need exactly 2 lines of code to add a new function. But extending the parser may not be necessary at all since it comes with a powerful default implementation. Here is the (incomplete) list of features: </p> <!-- // // Features / Overview // --> <h3><a name="idFeatureOverview">Overview</a></h3> <ul> <li><b>Easy to use</b> <ul> <li>You need only a <a href="mup_version.html#idExample">few lines of code</a> to evaluate en expression</li> </ul> </li> <li><b>Extremely fast</b> <ul> <li><a href="mup_version.html#idBench">faster than similar commercial parsers</a></li> </ul> </li> <li><b>User-defined operators</b> <ul> <li>binary operators</li> <li>postfix operators</li> <li>infix operators</li> </ul> </li> <li><b>User-defined functions</b> <ul> <li>with a fixed number of up to five arguments</li> <li>with variable number of arguments</li> <li>with a single string argument (for database queries)</li> </ul> </li> <li><b>User-defined constants.</b> <ul> <li>numeric constants</li> <li>string constants</li> </ul> </li> <li><b>User-defined variables.</b> <ul> <li>unlimited in number</li> <li>definable at parser runtime by the parser</li> <li>assigning variables in terms of other variables is possible</li> </ul> </li> <li><b>Custom value recognition callbacks</b> <ul> <li>support for binary and hex values.</li> <li>can be used to implement database queries</li> </ul> </li> <li><b>Default implementaion with many features</b> <ul> <li>26 <a href="#idDef1">predefined functions</a>.</li> <li>15 <a href="#idDef2">predefined operators</a>.</li> <li>Supports numerical differentiation with respect to a given variable.</li> <li>Assignement operator is supported</li> </ul> </li> <li><b>Portability</b> <ul> <li>Project / makefiles for MSVC, mingw, autoconf, bcc</li> <li>ISO 14882 compliant code</li> <li>DLL version usable from every language able to use function exported in C-style</li> </ul> </li> <li><b>Unit support</b> <ul> <li>Use postfix operators as unit multipliers <code>(3m -> 0.003)</code></li> </ul> </li> <li><b>Localization</b> <ul> <li>Argument separator, decimal separator, thousands separator can be adjusted to your locale</code></li> </ul> </li> </ul> <!-- // // // // Default implementation // // // --> <h3><a name="idDef1">The default implementation</a></h3> <p> This section gives an overview on the default features supported by the parser. The default implementation is defined in the class <code>mu::Parser</code> located in the file <i>muParser.cpp</i>. The DLL-version uses this class internally. </p> <!-- // // Features / Built in functions // --> <h4><a name="idDef2">Built-in functions</a></h4> <p> The following table gives an overview of the functions supported by the default implementation. It lists the function names, the number of arguments and a brief description. </p> <table border="1"> <thead> <tr> <td><b>Name</b></td> <td><b>Argc.</b></td> <td><b>Explanation</b></td> </tr> </thead> <tbody> <tr><td><code>sin</code></td> <td align="center">1</td> <td>sine function</td></tr> <tr><td><code>cos</code></td> <td align="center">1</td> <td>cosine function</td></tr> <tr><td><code>tan</code></td> <td align="center">1</td> <td>tangens function</td></tr> <tr><td><code>asin</code></td> <td align="center">1</td> <td>arcus sine function</td></tr> <tr><td><code>acos</code></td> <td align="center">1</td> <td>arcus cosine function</td></tr> <tr><td><code>atan</code></td> <td align="center">1</td> <td>arcus tangens function</td></tr> <tr><td><code>sinh</code></td> <td align="center">1</td> <td>hyperbolic sine function</td></tr> <tr><td><code>cosh</code></td> <td align="center">1</td> <td>hyperbolic cosine</td></tr> <tr><td><code>tanh</code></td> <td align="center">1</td> <td>hyperbolic tangens function</td></tr> <tr><td><code>asinh</code></td> <td align="center">1</td> <td>hyperbolic arcus sine function</td></tr> <tr><td><code>acosh</code></td> <td align="center">1</td> <td>hyperbolic arcus tangens function</td></tr> <tr><td><code>atanh</code></td> <td align="center">1</td> <td>hyperbolic arcur tangens function</td></tr> <tr><td><code>log2</code></td> <td align="center">1</td> <td>logarithm to the base 2</td></tr> <tr><td><code>log10</code></td> <td align="center">1</td> <td>logarithm to the base 10</td></tr> <tr><td><code>log</code></td> <td align="center">1</td> <td>logarithm to the base 10</td></tr> <tr><td><code>ln</code></td> <td align="center">1</td> <td>logarithm to base e (2.71828...)</td></tr> <tr><td><code>exp</code></td> <td align="center">1</td> <td>e raised to the power of x</td></tr> <tr><td><code>sqrt</code></td> <td align="center">1</td> <td>square root of a value</td></tr> <tr><td><code>sign</code></td> <td align="center">1</td> <td>sign function -1 if x<0; 1 if x>0</td></tr> <tr><td><code>rint</code></td> <td align="center">1</td> <td>round to nearest integer</td></tr> <tr><td><code>abs</code></td> <td align="center">1</td> <td>absolute value</td></tr> <tr><td><code>if</code></td> <td align="center">3</td> <td>if ... then ... else ...</td></tr> <tr><td><code>min</code></td> <td align="center">var.</td> <td>min of all arguments</td></tr> <tr><td><code>max</code></td> <td align="center">var.</td> <td>max of all arguments</td></tr> <tr><td><code>sum</code></td> <td align="center">var.</td> <td>sum of all arguments</td></tr> <tr><td><code>avg</code></td> <td align="center">var.</td> <td>mean value of all arguments</td></tr> </tbody> </table> <h4><a name="idDef3">Built-in binary operators</a></h4> <p> The following table lists the default binary operators supported by the parser. </p> <table border="1"> <thead> <tr><td><b>Operator</b></td> <td><b>Meaning</b></td> <td><b>Priority</b></td></tr> </thead> <tbody> <tr><td><code>=</code></td> <td>assignement*</td> <td>-1</td></tr> <tr><td><code>and</code></td> <td>logical and</td> <td>1</td></tr> <tr><td><code>or</code></td> <td>logical or</td> <td>1</td></tr> <tr><td><code>xor</code></td> <td>logical xor</td> <td>1</td></tr> <tr><td><code><=</code></td> <td>less or equal</td> <td>2</td></tr> <tr><td><code>>=</code></td> <td>greater or equal</td> <td>2</td></tr> <tr><td><code>!=</code></td> <td>not equal</td> <td>2</td></tr> <tr><td><code>==</code></td> <td>equal</td> <td>2</td></tr> <tr><td><code>></code></td> <td>greater than</td> <td>2</td></tr> <tr><td><code><</code></td> <td>less than</td> <td>2</td></tr> <tr><td><code>+</code></td> <td>addition</td> <td>3</td></tr> <tr><td><code>-</code></td> <td>subtraction</td> <td>3</td></tr> <tr><td><code>*</code></td> <td>multiplication</td> <td>4</td></tr> <tr><td><code>/</code></td> <td>division</td> <td>4</td></tr> <tr><td><code>^</code></td> <td>raise x to the power of y</td> <td>5</td></tr> </tbody> </table> <small>*The assignment operator is special since it changes one of its arguments and can only by applied to variables.</small> <hr/> <table border="0" style="width:100%"> <tr> <td>© 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td> <td style="text-align:right; padding-right: 3em;"> <a href="#top">^ TOP</a> </td> </tr> </table> <br/> <br/> </td> </tr> </tbody> </table> <!-- <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-1019178-1"); pageTracker._trackPageview(); } catch(err) {} </script> --> </body> </html>