TO SUPPORT MY WORK, ORDER A COMMERCIAL LICENSE
THANK YOU!
Tutorial Math Collection API spec Download
Below is the code for JAVA, the code for C# is almost identical.
Case 1: Removing built-in tokens
import org.mariuszgromada.math.mxparser.*; ... /* * Removing built-in tokens methods: * * mXparser.removeBuiltinTokens(String... tokens) * mXparser.unremoveBuiltinTokens(String... tokens) * mXparser.unremoveAllBuiltinTokens() * mXparser.getBuiltinTokensToRemove() */ Expression e; /* * Example 1: Before tokens removal */ e = new Expression("sin(pi)+cos(pi)"); e.checkSyntax(); mXparser.consolePrintln("*** Example 1: Before tokens removal"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 2: Removing "sin", "cos" tokens */ mXparser.removeBuiltinTokens("sin", "cos"); e = new Expression("sin(pi)+cos(pi)"); e.checkSyntax(); mXparser.consolePrintln("*** Example 2: Removing \"sin\", \"cos\" tokens"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 3: Printing removed built-in tokens */ mXparser.consolePrint("*** Example 4: Printing removed built-in tokens : "); for (String t : mXparser.getBuiltinTokensToRemove() ) mXparser.consolePrint(t + ", "); mXparser.consolePrintln(); mXparser.consolePrintln(); /* * Example 4: Un-removing built-in token */ mXparser.unremoveBuiltinTokens("cos"); e.checkSyntax(); mXparser.consolePrintln("*** Example 4: Un-removing built-in token"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 5: Un-removing all built-in token */ mXparser.unremoveAllBuiltinTokens(); e.checkSyntax(); mXparser.consolePrintln("*** Example 5: Un-removing all built-in token"); mXparser.consolePrintln("\n\n" + e.getErrorMessage());
[mXparser-v.5.0.0] *** Example 1: Before tokens removal [mXparser-v.5.0.0] [sin(pi)+cos(pi)] checking ... [sin(pi)+cos(pi)] no errors. [mXparser-v.5.0.0] *** Example 2: Removing "sin", "cos" tokens [mXparser-v.5.0.0] [sin(pi)+cos(pi)] checking ... [sin(pi)+cos(pi)] (sin, 0) invalid <TOKEN>. [sin(pi)+cos(pi)] (cos, 5) invalid <TOKEN>. [sin(pi)+cos(pi)] errors were found. [mXparser-v.5.0.0] *** Example 4: Printing removed built-in tokens : sin, cos, [mXparser-v.5.0.0] [mXparser-v.5.0.0] *** Example 4: Un-removing built-in token [mXparser-v.5.0.0] [sin(pi)+cos(pi)] checking ... [sin(pi)+cos(pi)] (sin, 0) invalid <TOKEN>. [sin(pi)+cos(pi)] errors were found. [mXparser-v.5.0.0] *** Example 5: Un-removing all built-in token [mXparser-v.5.0.0] [sin(pi)+cos(pi)] checking ... [sin(pi)+cos(pi)] no errors. [mXparser-v.5.0.0]
Case 2: Modifying built-in tokens
import org.mariuszgromada.math.mxparser.*; ... /* * Modifying built-in tokens methods: * * mXparser.modifyBuiltinToken(String currentToken, String newToken) * mXparser.modifyBuiltinToken(String currentToken, String newToken, String newTokenDescription) * mXparser.unmodifyBuiltinTokens(String... currentOrNewTokens) * mXparser.unmodifyAllBuiltinTokens() * mXparser.getBuiltinTokensToModify() */ Expression e; /* * Example 1: "sine" and "cosine" are not defined */ e = new Expression("sine(pi)+cosine(pi)"); e.checkSyntax(); mXparser.consolePrintln("*** Example 1: \"sine\" and \"cosine\" are not defined"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 2: Changing "sin" to "sine" */ mXparser.modifyBuiltinToken("sin", "sine"); e.checkSyntax(); mXparser.consolePrintln("*** Example 2: Changing \"sin\" to \"sine\""); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 3: Changing "cos" to "cosine" + setting new description */ mXparser.modifyBuiltinToken("cos", "cosine", "My new cosine token"); e.checkSyntax(); mXparser.consolePrintln("*** Example 3: Changing \"cos\" to \"cosine\" + setting new description"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); mXparser.consolePrintHelp("My new cosine"); mXparser.consolePrintln(); /* * Example 4: Printing modified built-in tokens */ mXparser.consolePrintln("*** Example 4: Printing modified built-in tokens: "); String[][] modifiedTokens = mXparser.getBuiltinTokensToModify(); mXparser.consolePrintln(); for (int i = 0; i < modifiedTokens.length; i++) { String currentToken = modifiedTokens[i][0]; String newToken = modifiedTokens[i][1]; String newTokenDescription = modifiedTokens[i][2]; mXparser.consolePrintln(currentToken + " -> " + newToken + ", " + newTokenDescription); } mXparser.consolePrintln(); /* * Example 5: Un-modifying "sin" token */ e = new Expression("sine(pi)+cosine(pi)"); mXparser.unmodifyBuiltinTokens("sin"); e.checkSyntax(); mXparser.consolePrintln("*** Example 5: Un-modifying \"sin\" token"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 6: Un-modifying all modified token */ mXparser.unmodifyAllBuiltinTokens(); e.checkSyntax(); mXparser.consolePrintln("*** Example 6: Un-modifying all modified token"); mXparser.consolePrintln("\n\n" + e.getErrorMessage());
[mXparser-v.5.0.0] [sine(pi)+cosine(pi)] checking ... [sine(pi)+cosine(pi)] (sin, 0) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] (cos, 8) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] (in, 10) invalid <TOKEN>. [sine(pi)+cosine(pi)] errors were found. [mXparser-v.5.0.0] *** Example 2: Changing "sin" to "sine" [mXparser-v.5.0.0] [sine(pi)+cosine(pi)] checking ... [sine(pi)+cosine(pi)] (cos, 5) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] (in, 7) invalid <TOKEN>. [sine(pi)+cosine(pi)] errors were found. [mXparser-v.5.0.0] *** Example 3: Changing "cos" to "cosine" + setting new description [mXparser-v.5.0.0] [sine(pi)+cosine(pi)] checking ... [sine(pi)+cosine(pi)] no errors. [mXparser-v.5.0.0] Help content: # key word type syntax since description - -------- ---- ------ ----- ----------- 73. cosine <Unary Function> cosine(x) 1.0 My new cosine token [mXparser-v.5.0.0] *** Example 4: Printing modified built-in tokens: [mXparser-v.5.0.0] [mXparser-v.5.0.0] sin -> sine, null [mXparser-v.5.0.0] cos -> cosine, My new cosine token [mXparser-v.5.0.0] [mXparser-v.5.0.0] *** Example 5: Un-modifying "sin" token [mXparser-v.5.0.0] [sine(pi)+cosine(pi)] checking ... [sine(pi)+cosine(pi)] (sin, 0) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] errors were found. [mXparser-v.5.0.0] *** Example 6: Un-modifying all modified token [mXparser-v.5.0.0] [sine(pi)+cosine(pi)] checking ... [sine(pi)+cosine(pi)] (sin, 0) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] (cos, 8) <FUNCTION> expecting 1 argument. [sine(pi)+cosine(pi)] (in, 10) invalid <TOKEN>. [sine(pi)+cosine(pi)] errors were found. [mXparser-v.5.0.0]
Case 3: Overriding built-in tokens
import org.mariuszgromada.math.mxparser.*; ... /* * Overriding built-in tokens methods: * * mXparser.setToOverrideBuiltinTokens(); * mXparser.setNotToOverrideBuiltinTokens(); * mXparser.checkIfsetToOverrideBuiltinTokens(); */ Expression e; /* * Example 1: user defined function and user defined constant with name conflict */ Function sin = new Function("sin(x) = 2*x"); Constant pi = new Constant("pi = 1"); e = new Expression("sin(pi)", sin, pi); e.checkSyntax(); mXparser.consolePrintln("*** Example 1: user defined function and user defined constant with name conflict"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); /* * Example 2: Setting option to override built-in tokens */ mXparser.setToOverrideBuiltinTokens(); e.checkSyntax(); mXparser.consolePrintln("*** Example 2: Setting option to override built-in tokens"); mXparser.consolePrintln("\n\n" + e.getErrorMessage()); mXparser.consolePrintln(); mXparser.consolePrintln(e.getExpressionString() + " = " + e.calculate()); /* * Example 3: Checking override built-in tokens option */ mXparser.consolePrintln(); mXparser.consolePrintln("*** Example 3: Checking override built-in tokens option"); mXparser.consolePrintln(" Option = " + mXparser.checkIfsetToOverrideBuiltinTokens()); /* * Example 4: Setting option not to override built-in tokens */ mXparser.consolePrintln(); e = new Expression("sin(pi)", sin, pi); mXparser.setNotToOverrideBuiltinTokens(); e.checkSyntax(); mXparser.consolePrintln("*** Example 4: Setting option not to override built-in tokens"); mXparser.consolePrintln("\n\n" + e.getErrorMessage());
[mXparser-v.5.0.0] *** Example 1: user defined function and user defined constant with name conflict [mXparser-v.5.0.0] [sin(pi)] checking ... [sin(pi)] (pi) Duplicated <KEYWORD>. [sin(pi)] (sin) Duplicated <KEYWORD>. [sin(pi)] errors were found. [mXparser-v.5.0.0] *** Example 2: Setting option to override built-in tokens [mXparser-v.5.0.0] [sin(pi)] checking ... [sin(pi)] (sin, 0) checking user defined function ... [sin(pi)] -> [sin] = [ 2*x] checking ... [sin(pi)] -> [sin] = [ 2*x] no errors. [sin(pi)] no errors. [mXparser-v.5.0.0] [mXparser-v.5.0.0] sin(pi) = 2.0 [mXparser-v.5.0.0] [mXparser-v.5.0.0] *** Example 3: Checking override built-in tokens option [mXparser-v.5.0.0] Option = true [mXparser-v.5.0.0] [mXparser-v.5.0.0] *** Example 4: Setting option not to override built-in tokens [mXparser-v.5.0.0] [sin(pi)] checking ... [sin(pi)] (pi) Duplicated <KEYWORD>. [sin(pi)] (sin) Duplicated <KEYWORD>. [sin(pi)] errors were found. [mXparser-v.5.0.0]
Nuget
Install-Package MathParser.org-mXparser -Version 5.0.2
Maven
<dependency>
<groupid>org.mariuszgromada.math</groupid>
<artifactid>MathParser.org-mXparser</artifactid>
<version>5.0.2</version>
</dependency>
Gradle
implementation 'org.mariuszgromada.math:MathParser.org-mXparser:5.0.2'
Gradle (Kotlin)
implementation("org.mariuszgromada.math:MathParser.org-mXparser:5.0.2")
GitHub
git clone https://github.com/mariuszgromada/MathParser.org-mXparser
OTHER DOWNLOAD OPTIONS
Download latest release – v.5.0.2 Leonis: bin + docDownload latest release – v.5.0.2 Leonis: bin only, includes separate binaries for various .NET platforms and Java versions
Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl