MathLib - Extending the core functionality

By default, JBEE only knows it's operators and a basic set of safe to call functions (safe to call in the sense that they may fail, but will never compute a result with precision loss). The core functionality can be enhanced by either implementing the MathLib interface or extending the DefaultMathLib class and passing an instance to the Evaluator like this:


MathLib myLib = new MyLib();
DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance();
Evaluator e = new Evaluator(df, myLib);

The MathLib interface is a very powerful concept, allowing for hooking into nearly every part of the parsing process. Care should be taken when implementing it. In most cases (such as when only new functions are needed), it is usually a better idea to extend the DefaultMathLib interface instead.