fparse
A JavaScript Formula Parser
fparse provides a Formula class that parses strings containing mathematical formulas (e.g. x*sin(PI*x/2)
) into an evaluationable object.
One can then provide values for all unknown variables / functions and evaluate a numeric value from the formula.
For an example application, see http://fparse.alexi.ch/.
Features
Parses a mathematical formula from a string. Known expressions:
- Numbers in the form [-]digits[.digits], e.g. "-133.2945"
- simple operators: '+','-','*','/', '^' expanded in correct order
- parentheses '(', ')' for grouping (e.g. "5*(3+2)")
- all JavaScript Math object functions (e.g. "sin(3.14)")
- all JavaScript Math constants like PI, E
- the use of own functions
- the use of variables
- use it in Web pages and as Node module
- Example:
-1*(sin(2^x)/(PI*x))*cos(x))
Usage
<script src="fparser.js"></script>
var Formula = require('./fparser');
var fObj = new Formula('2^x');
var result = fObj.evaluate({x: 3});
var results = fObj.evaluate([{x: 2},{x: 4},{x: 8}]);
var result = Formula.calc('2^x',{x: 3});
var results = fObj.calc('2^x',[{x: 2},{x: 4},{x: 8}]);
var Formula = require('./fparser');
var fObj = new Formula('2^x)');
Advanced Usage
Using multiple variables
var fObj = new Formula('a*x^2 + b*x + c');
var result = fObj.evaluate({a:2,b:-1,c:3,x:3});
Using user-defined functions
var fObj = new Formula('sin(inverse(x))');
fObj.inverse = function(value){
return 1/value;
};
var results = fObj.evaluate({x: 1,x:2,x:3});
var result = fObj.evaluate({
x: 2/Math.PI,
inverse: function(value){
return -1*value;
}
});
If defined in the value object AND on the formula object, the Value object has the precedence