== JEP Core ===========================================================
Jan 19 07 njf - Renamed resetParser to initMultiParse
Dec 11 07 rjm - Multi-dimensional element access.
Dec 08 07 rjm - Enhance TreeAnalyser, method to get names of variables 
Dec 05 07 rjm - Line number and column numbers now reported in ParseExceptions
		      - Successive equations can be read from a single reader with 
		        equations separated by ; (by default), by using restartParser() 
		        and continueParsing() methods in Jep.
Nov 30 07 rjm - Change exception thrown by NodeFactory methods. 
Nov 29 07 rjm - New addConstant() method in Jep, methods to allow copying of 
                constants from one VariableTable instance to another.
Nov 05 07 rjm - New setSymbol(String sym) method for Operator.
Nov 05 07 rjm - New UpperCaseOperatorTokenMatcher class for case-insensitive 
                alphabetical operators.
Nov 04 07 rjm - Rewrote StringTokenMatcher
	  		  - works with escape characters
	  		  - fixes bug with greedy matching "(a == '1') && (b =='2')"
	  		  - delimiting character can be returned
	  		  - TokenMatcher.match() can now throw ParseException
Nov 04 07 rjm - Fix precedence of negation and power so -3^2 = -(3^2) = -9.
Oct 23 07 rjm - Add a JavaOperatorTable with a?b:c, x+=1, ++x, etc.
Oct 22 07 rjm - Add a VariableTableObserver class to add observing a 
                 VariableTable and other fixes to the observing API.	  		  
Oct 15 07 rjm - Rework ConfigurableParser API
			  - Normal use should now use StandardConfigurableParser
			  - new methods in ConfigurableParser to make configuration easier. 
Oct 14 07 rjm - Add a BitwiseOperatorTable with bitwise operators: a|b, a<<2.
Oct 14 07 rjm - Rework OperatorTable API.
Sep 25 07 rjm - Add hexNumberTokenMatcher

----

Sep 23 07 njf - added min, max and avg functions
Sep 17 07 njf - fixed bug in CP causing adding AND operator to fail
Sep 12 07 njf - added automatic appending of header to source files
Aug  3 07 rjm - added MacroFunction class

Jul 27 07 njf - Added JepException and changed exception class heirarchy
              - Tree-related classes now throw JepExceptions
              - EvaluationException and ParseException now extend JepException 
                (Changeset 381)
Jul 27 07 rjm - made Binomial.java threadsafe
Jul 26 07 rjm - added diagnostic code
Jul    07 rjm - implemented serialization
Jul  4 07 njf - renamed EQUIVILENCE to EQUIVALENCE in Operator.java and
                dependent files
              - major spelling corrections for javadocs and 

---- 3.0.0 release (Jul 1, 2007) ------------------------------------

Jun 21 07 njf - added tests for RealEvaluator
Jun 19 07 njf - added SerialVersionUIDs set to 300L
Jun 18 07 njf - changed Logical and Comparative classes to output Boolean
                objects rather than Doubles
              - added lg() function
Jun 07 07 njf - added logical and relational operators for BigDecimal numbers
Jun 01 07 njf - added tests for double and bigDecimal evaluation
May 16 07 njf - updated example applets work with JEP 3
Apr 04 07 njf - added rounding functions round ceil floor
Mar    07 njf - created a compatibility layer for using old org.nfunk.jep.JEP class

Jan 15 07 rjm - Restructured JEP classes with component model
                allows modular plugging of parsers, evaluators, number factories, 
                nodefactories, Variable tables, operator tables and more
              - Added BigDecimal support through BigDecimalComponents
              - Added a configurable parser

Jul 23 06 rjm - Added methods to VariableFactory to allow a default value to be set.
Jul 16 06 rjm - Reworked interface to EvaluationVisitor. 
				Jep.getEvaluationVisitor() noew returns a type of EvaluationI.
				Constructor now requires a SymbolTable as argument.
Jul 16 06 rjm - Speed up the Power function when power is an integer.

---- 2.4.1 release (Apr 25, 2007) ------------------------------------

Apr 23 06 njf - added rounding functions round, ceil, and floor
              - added tests and updated JEPTest
              - applied fix for [ 1563324 ] getValueAsObject always returns null after an error
              - applied fix for [ 1670974 ] String to double <= comparison message incorrect
              - applied fix for [ 1706295 ] Wrong error output when evaluating variables

Apr 22 06 njf - created branch for JEP 2.4.0 patches
              - updated build.xml (automatic building of commercial dist)
              - added classes for additional tests
              - added new license files
              
---- 2.4.0 release (Jun 8, 2006) ------------------------------------

Jun  8 06 njf - Revisions to the documentation

Jun  6 06 njf - Added a COPYRIGHT.txt file including copyright and license 
                information
              - Enabled deprecation output while compiling with build.xml
              
May 26 06 njf - Switched back to JavaCC 3.2 to maintain compatibility with 
                Java 1.2
                
May 20 06 rjm - Added a ElementComparative function, changed visability of field 
                in Comparative.
                
May 18 06 rjm - Changes to allow the a[5] syntax for access to array elements
			  - Changed parser to handle the a[5] syntax 
			  - Added an LValueI interface for functions which can be used on 
			    lhs of an asignment,
			  - Change Assign to work with LValueI.
			  - Added new OP_ELEMENT to OperatorSet
			  
May 12 06 njf - Changed GraphCanvas to use Java2D anti aliasing for prettier 
                curve drawing in function plotter applet
                
Apr 27 06 njf - changed build.xml to rely on setting a JRE instead of a JDK 
                enviroment variable
              - changed build.xml to allow compiling without having a 1.2 JRE 
                env. var. set (doesn't ensure compatibility to old version then)
                
Apr 26 06 njf - switched to JavaCC 4.0. Needed to regenerated 
                JavaCharStream.java.
                
Mar 11 06 rjm - Added serial version tags where needed

Feb 18 06 njf - removed creative commons references from all source files

Feb 15 06 njf - updated documentation by fixing some broken links and
                reapplying the dreamweaver template to all files
              - merged new tests from version 2.3.1 into JEPTestExpressions.txt

Jan    06 njf - Created a new branch "v230-patches" on which version 2.3.1
                was developed.

Dec 16 05 rjm - Added a checkNumberofParameters method to PostfixMathCommandI,
	and a default method to PostfixMathCommand and implementations for necessary functions.
	
May 02 05 rjm - Added more functionality to NumberFactory.
		CreateNumber(double) etc. and getZero() etc.

May 02 05 rjm - Changed error behaviour for addVariable and setVarValue.
		These now throw IllegalStateExceptions.
 
Apr 24 05 rjm - Created a CallbackEvaluationI interface which 
			replaces SpecialEvaluationI. This facilitates functions
			which need access to the node tree.
			
Apr 01 05 rjm - Variable: Fixed setting validValue for constants.
			Passes value to observers on setValue.
			
Apr 01 05 rjm - SymbolTable can now have observes passed to it.
			Added a clearNoConstants method.
			
Apr 01 05 rjm - Changed behaviour on errors. Removed references to
			Error list in EvaluationVisitor. ParseExceptions are thrown instead.
			
			getValueAsObject() traps all errors including RuntimeExceptions.			
			evaluate() now only throws ParseException.

Apr 01 05 rjm - trapNulls flag in evaluation visitor. Switchable to trap null nulles or not.

Apr 01 05 rjm - Jep copy constructor fixed.

Apr 01 05 rjm - If now works with Numbers
	
Feb 13 05 rjm - Added binom, conj functions.

Dec 19 njf - figured out documentation linking issues. Leaving docs as they were
             before Nov 1 (no frames, javadoc at /doc/javadoc)
             
Dec 10 rjm - nodeAccept method added to jep.EvaluationVisitor so that it
			 can be easier for sub classes to use visitor pattern.
			 
		   - Improved printing facilities for complex numbers.
		   
Nov  6 njf - Merged JEPTester and JEPTest into JEPTest, now in the JUnit framework

Nov  3 rjm - JEP.evaluate() method will throw an exception if this.hasErrors() is true.

Nov  1 njf - changed documentation to frames
           - added new FAQ item

Oct 23 njf - added source="1.2" to javac options in build.xml
             avoids compile time error with 1.5 compiler by ensuring
             1.2 source compatibility
       njf - fixed [ 1046349 ] bug in sum()
       njf - fixed [ 1051988 ] JEPTester falsely reports "No errors"
       njf - improved value comparison and error reporting in JEPTester
       njf - reformated Comparative.java, added comments

Oct 22 njf - added simple sum test to JEPTesterExpressions.txt

Oct  4 rjm - Changes the SpecialEvaluationI interface to include a 
             SymbolTable parameter.
       rjm - Added rules to differentiate atan2 removed support for angle
       rjm - Doc update for GroupJep, improved consol and unit test or 

---- 2.3.0 release (Oct 3, 2004) ------------------------------------
Oct  3 njf - created new features document for the core JEP and moved
             appropriate text from DJEP index.html there
       njf - changed "jar" and "dist" targets to create a separate djep
             jar without examples and test cases, then include both jars
             in a jep-djep-2.3.0.zip file
       njf - new jjdoc target in build.xml to generate grammar documentation
       njf - removed compile.bat and grammardoc.bat

Oct  2 njf - build.xml now creates javadoc using new breakiterator
             (gets rid of all the "helpful" output when running javadoc)
       njf - added package.html files to package directories
       njf - updated details in documentation
       njf - documented error handling using hasError() and getErrorInfo()
       njf - added 1.2 compatibility checking in build.xml
       
Oct  1 njf - removed org.lsmp.* from compile in build.xml
       njf - commented out addToErrorList("No expression entered"); from
             Start() in Parser.jjt
       njf - added getTraverse() method
       njf - changed @since version names in org.nfunk.* according to:
             2.3.0   ->  2.3.0 alpha
             2.3.1   ->  2.3.0 beta 1
             2.3.2   ->  2.3.0 beta 2
             2.3.3   ->  2.3.0 beta 2
             2.3.0.1 ->  2.3.0 alpha
---- 2.3.0 beta 2 ---------------------------------------------------

---- 2.3.0 beta 1 ---------------------------------------------------

---- 2.3.0 alpha ----------------------------------------------------
?      njf - NumberFactory has been changed to create the number from a String
             representation (in order to allow creation of arbitrary precision
             numbers without the limitations of double)

Many previous changes not included here. See the documentation for details.

==============================================================================
== JEP Extensions ============================================================

Aug 01 06 rjm - Fixed bug with setMode in PrintVisitor (got boolean logic wrong)
Aug 01 06 rjm - Fixed bug in XEvaluatorVisitor.visit(ASTVarNode node, Object data) which now sets
				the value of a variable when its evaluated using its equation.
Jul 22 06 rjm - Added routines for multiplying [1,2,3]*[1,2,3] in MRpe
Jul 16 06 rjm - Changes to reflect changes in EvaluationVisitor.
Jul 16 06 rjm - Way NodeFactory treats building a constant node from a function with constant arguments changed.
Jul 16 06 rjm - Above fixes bug with simplifying if(1,2,3). Unit test included.
Jul 16 06 rjm - Speed up calculation of integer powers in rpe and mrpe.
Jul 16 06 rjm - Added support for atan2 and if in rpe and mrpe.
Jul 16 06 rjm - New colsole applications for rpe and mrpe.
Jul 16 06 rjm - Documentation for rpe and mrpe added.
Jul 16 06 rjm - MRpRes now has a doubleValue function for quick access to Scaler values.
Jul 16 06 rjm - MRpCommandList now has method to get the Dimension of the result.
Jul 16 06 rjm - Fixed non critical bug with superflious command being added to command list.

Jul 15 06 rjm - Added methods to rpe to allow quicker setting of variables, new speed test.
Jul 07 06 rjm - Added interegation functions to allow the sjep representation to be interegated.
Jun 14 06 rjm - Fixed bug with multi-arg macro functions.
Jun 14 06 rjm - Added sample application illustrating nested block control stucture.

-- 1.1.1 (Apr 25, 2007) --------------------------------------------

Apr 25 07 njf - Added an AllTests class for easy execution of all tests from ant
Apr 24 07 njf - Applied patch for bug [ 1567116 ] VectorJep division
                in MDivide.java
              - made a few spelling corrections for the package.html files


-- 1.1.0 (Jun 9, 2006) --------------------------------------------

May 20 06 rjm - Fixed bug with differentation visitor. isConstant method returned true for b=a; a=x; when differentiating wrt x.
May 20 06 rjm - Added a ElementComparative function, changed visability of field in Comparative.
May 18 06 rjm - Changes to allow the a[5] syntax for access to array elements
			  - Created a ArrayAccess function 
			  - Modified OperatorSets
			  - Print rule for array access in MatrixJep.
Apr 07 06 rjm - Added several functions to allow interegation of command lists
Apr 04 06 rjm - Fixed bug with conversion of (a+b)-(c+d) to polynomial in sjep.
Mar 11 06 rjm - Added serial version tags where needed
Mar 4  06 rjm - fixed bug in SJep 2x+x now correctly simplifies to 3x.
Dec 16 05 rjm - Added implementations of checkNumberOfParameters
		for necessary functions.

Dec 08 05 rjm  - Added MDivide function
			   - Fixed bug in MMultiply dividing Tensor by a scaler.
				 
July 28 05 rjm - Added a Define function
			   - NodeFactory now calls the jep evaluator in buildConstantNode.
			   - SimplificationVisitor returns now returns null if null is parsed
			   	rather than throwing an error.
			   - added exp() function to XJep
			   - added macrocomplex to xjep (Why?)
			   	
July 14 05 rjm - Restructured DJep so standard diffrules in DJep rather than DiffVisitor

June 07 05 rjm - Fixed bug in ele which only accepted Double arguments.

May 02 05 rjm - added toBase pfmc and a BaseFormat NumberFormat object.

Apr 24 05 rjm - Reworked junit tests using inheretance.

Apr 24 05 rjm - Simpson and Trapesium functionsa added to XJep.

Apr 03 05 rjm - DifferentationVisitor is now smarter when calculating zero derivatives
			  - PrintVisitor.getMode(int testmode) added.
			  
Apr 01 05 rjm - MVector, Matrix, Tensor no longer extend number.

Apr 01 05 rjm - Added det(), trace(), vsum(), trans(), getDiag(), diag(), id(),
	GenMat, Map function to vectorJep. Need to check diff and matrixJep functionality.

Apr 01 05 rjm - added SpecialPreprocessorI interface for matrixJep functions.

Feb 13 05 rjm - added len() and size() functions
		   - added Scaler.getInstance() and Vector.getInstance() methods.
		   
Dec 21 rjm - xjep.PrintVisitor can now work with three or more arguments to + and *.

Dec 10 rjm - Implemented element by element multiplication in VectorJep
			 nodeAccept method added to jep.EvaluationVisitor so that it
			 can be easier for sub classes to use visitor pattern.
			 
		   - Improved printing facilities for complex numbers.
		   
		   - xjep.PrintVisitor now allows a NumberFormat object to be specified to control 
		     the printing of double values.
		     
		   - ExtendedFreeGroup added to GroupJep this allows a limited 
		     use of ^ and / for polynomials. Polynomials can be raised to 
		     positive integer powers and divided by constants.

Oct 4  rjm - Added rules to differentiate atan2 removed support for angle
       rjm - Doc update for GroupJep, improved consol and unit test or working with polynomials over the reals (Doubles).

Oct 1 rjm  - RewriteRulesI interface added and RewriteVisitor added.
			Begining of an improved simplification algorithm.

Sept  rjm  - added SumType functions equivilent to sigma notation.

-- 1.0.0 (Oct 3rd, 2004) --------------------------------------------

Many previous changes not included here. See the documentation for details.
