Extensions Version History

Version 2.1

New Lambda functions package

Add new package which allows anonymous lambda functions to be defined in expressions x=>x^2. The package adds higher order like map and fold which take lambda functions as arguments. It also adds a range operator [1..10] for easily specifying a range of numbers.

Bug fixes

Breaking changes

MrpeEval RpEval in multiple threads

MrpeEval now has facilities to make it easier to use in multiple threads. The getLightWeightInstance() returns a new instance which can be safely used for evaluation in multiple threads. This has copies of internal data so the evaluate(MrpCommandList) can be used with a given command list.

Instances created in this way lose information about Jep variable. Variable values can be accessed using the getVarValue(MrpVarRef ref) and the various setVarValue(MrpVarRef ref, double d) methods. But method using Jep Variable, i.e. updateFromJepVariables(), updateToJepVariables getVariable(MrpVarRef ref) getVarRef(String name) getVarRef(Variable var), do not work.

The instance also lose information about the matrix factory used to convert vector and matrix results. So the methods convertToVector(MrpRes res) convertToMatrix(MrpRes res) and convertResult(MrpRes res) don't work. But you can use the MrpRes.copyToVec(VectorI), MrpRes.copyToMat(MatrixI) and other methods of MrpRes.

A second method getLightWeightInstance(Jep jep) uses the Variable and MatrixFactory information from the new Jep instance. So the above methods are safe to use.

The RpEval class has similar methods. With and instance created using getLightWeightInstance() variable values can be accessed using getVarValue(int ref) and setVarValue(int ref, double val). When using getLightWeightInstance(Jep jep) references can be found using int getVarRef(Variable var) int getVarRef(String name).

Add a chargeFunctionName(String oldname, String newname) method to AbstractEval allowing alternative names for built in functions.

Add a String toString(RpCommandList coms1) to RpEval to print a more detailed version of a command list.

The RpEval, MrpEval, RpCommandList, MrpCommandList and related classes are all Serializable.

Other changes











Version 2.0 (released 2018/07/05)

Major re-release to match the Jep 3.5 release.

All packages moved to the com.singularsys.extensions and reworked to use the Jep 3 framework.

New packages


Incorporated in main jep release


In development

Version 1.1.1 (released 2007/04/25)

Version 1.1.0

New Features

Minor Improvments

Version 2.3.0 release (renamed to DJEP 1.0.0)

No major changes were made for the release.

Version 2.3.0 beta 1 - 12 April 2004 (formerly known as 2.3.2 beta)

This version now has a stable API an should be used in preference to earlier versions.

Main changes since 2.3.0a:

Features yet to come

A few new functions to be added, min, max, sgn, differentiation for if.
Vector and matrix functions: det, inverse, transpose ....
Faster evaluation, possibly based of a reverse polish type of evaluation scheme, eliminating as much object creation as possible.
Various conversion routines to other formats MathML etc.

Version 2.3.0 alpha - 28 Feb 2004 (formerly known as 2.3.1 alpha)

This is the third release of the package, released 28/Feb/04. I'm really just rushing this out as some people have been asking for documentation which is included here. Still more documentation to come. Also the code is still in a fairly mutable state and I still expect to move some things around so don't expect the the API to be stable. Hopefully it will just be the inner workings which change the main interface for users is nearly fixed. The most important changes in this package are

Version 2.3.0a - Jan 04

First release as an official part of JEP.

Added support for vectors and matrices.
Major reworking of differentiation, functionality now split into two packages org.lsmp.djep.xjep - printing, tree manipulation etc, and org.lsmp.djep.djep - differentiation.
Changed the org.nfunk.jep.SymbolTable class so the elements are now of type org.nfunk.jep.Variable rather than just its value. ASTVarNodes now refer to the variable object.
Several changes in exposed API for JEP.
Introduced an org.nfunk.jep.Operator and org.nfunk.jep.OperatorSet types which represent the basic +,-,*,/,etc operators. Eliminates the excess creation of one object for each instance of an operator.

Known bugs in version 2.3.0a

Several bugs are known in version 2.3.0a.

First release

The first release of the package was about September last year. It just included differentiation facilities. The package has had a major rework since then.