---------------
1.  WHAT's NEW
---------------
A list of changes in recent versions:


1.1.7:
         * [BUG] PRD-2717: A copy/paste error prevented quoting in CSVTEXT
           function from working.

1.1.6: (2010-04-27)
         * PRD-2345, PRD-2435: Messages and evaluation errors must be human
           readable and localizable.

         * [BUG] TRIM function failed on empty strings

         * [BUG] PRD-2576: Number-parsing was not strict enough causing the
           EXACT function to fail on certain strings.

         * [BUG] PRD-2611: CSVArray function used CSVTokenizer and thus
           auto-trimmed the text it was given to parse.

0.1.18.4: (2010-04-07)
         * Backported new Exception handling for more performance.

1.1.5: (2010-01-15)
         * PRD-2378: Added PARSEDATE function.

         * Converting CLOBs into Strings was buggy due to a 1-index error.

1.1.4: (2009-12-15)
         * Added IFNA() function.

         * PRD-2367: Enabled strict date parsing so that we can parse
           strings into dates and can be sure we do not accidentally interpret
           numbers as dates.

1.1.3: (2009-11-13)
         * [BUG] PRD-2289: TextFunction now accepts a second parameter
           as format string so that the string-conversion can be more
           controlled.

         * [BUG] Quote-handling inside references was handled in a invalid way by
           the parser

         * [BUG] Value-function returned the wrong function category.

         * [BUG] When a formula was parsed but not initialized, any call
           to query a Term's child values failed with a NullPointerException.

         * PRD-2240: Moved NumberSequence to parent package to resolve
           circular dependency issue

         * PRD-2242: Created "InvalidFunction" category to make parsing and
           introspecting of functions more reliable.

         * PRD-2239: Move DivideOperator.divide() to NumberUtil class, as
           it is also reused from the functions.

         * Added MESSAGE function.

         * Added NORMALIZEARRAY function.

         * Type registry now also accepts java.util.Collections as array and
           sequence sources.

         * PRD-2235: CSVARRAY function added.

1.1.2: (2009-09-25)
        * The parser contained code to escape special characters via backslashes.
          The standard does not mention such a mechanism. The only escape that
          is mentioned is the quote quotes by printing them twice.

        * Removed the obsolete and defunctional PARAMETER function.

1.1.1: (2009-08-21)
        * Reworked the Exception handling and Exception generation. We now
          reuse a single Exception per formula instance for improved performance.

1.1.0: (2009-07-29)
        * [API] Added a helper method to FormulaUtil to extract all external
          references a Formula has.

        * [BUG] Term#getOperands and Term#getOperators were totally wrong.

        * [BUG] DATEDIF must return the absolute values; and must be more
          faster.

        * [BUG] Parser did not handle empty parameters correctly, so that
          "IF(TRUE();;7)" was returned as "IF(TRUE();7)".

        * [BUG] Replace and Find now check the indexes for negative values
          so that we catch these errors as Index-Errors instead of
          Unexpected errors.

        * [BUG] Date-conversion was invalid and did not return the same
          numbers as OpenOffice. The reworked version can handle the various
          Excel implementation quirks (see KB-214326) correctly.

        * All arithmetics use BigDecimals now. Before doing any calculations
          we convert the various numbers into BigDecimals so that we work
          with the highest level of precision possible.

        * Added new translations based on OpenOffice 3.0 formula function
          descriptions.

        * [BUG] The formula parser must reject extra content at the end
          of the parsing. A trailing semicolon is as invalid as a trailing
          term or text.

        * [BUG] MID function must not die if it has invalid start values.

        * [BUG] PRD-502: Right-Function description was invalid.

        * [BUG] Hour and Minute functions suffered from inexact
          calculations

        * [BUG] Trim function returned "LOWER" as canonical name.

        * [API] FunctionDescription now carries the canonical name of the
          formula function it describes, so that we can match the description
          with an implementation.

        * Converted all TestNG testcases into JUnit tests so that they integrate
          better with the established tools.

        * Added open-formula like NumberSequence support.

        * Added CSVText, Index, Choose, Value, Power, CountA, CountBlank,
          Hour and Minute function.

        * Added ACos, ACosH, ASin, ATan, ATan2, Cos, Exp, Ln, Log, Log10, Pi,
          Sin, Sqrt and Var function.

        * Moved all code from org.jfree.repository to the new package space
          org.pentaho.reporting.libraries.repository

0.1.18.3: (2008-09-12)
(Note: This version was released after version 0.2.0)
        * [BUG] Comparing values was slow as we tried to convert all values
          into Dates or Numbers instead of comparing without type conversion
          (as requested by the standard).

0.1.18.2: (2008-09-12)
(Note: This version was released after version 0.2.0)
        * [BUG] PRE-381: MID function used a wrong index and thus produced
          invalid results

        * [BUG] ODD and EVEN  functions suffered from inexact
          calculations

        * [BUG] NullPointerException was raised if a invalid locale was specified
          for the date-formats

0.2.0: (30-May-2008)
        * Switched from JCommon to LibBase. All version information is now contained in
          the manifest. The Project-Info implementation reads the version numbers from
          the Jar's Manifest or the compiler-output-directory.

        * Formulas can now define inline arrays using the OpenFormula syntax.

        * CLOB objects are now properly converted into Strings.

        * SUBST function now uses a single Stringbuffer instead of creating new
          temporary strings all the time resulting in less memory consumption and
          a slightly higher performance.

        * Error handling is now more consistent. Instead of returning error tokens,
          all formula functions now throw exceptions.

          Parse errors in the formula-parser now return the location of the error
          so that it is easier to find out why a function is rejected by the parser.

        * Function now always use BigDecimals when creating new Number-Instances.
          This reduces the number of objects created during conversion operations
          and improves performance.

        * Creating Dates from Numbers is now more performant as we reduce the
          reliance on Calendard-Operations.

        * [API] MappedFunction and ArrayConverter classes have been removed, as these
          classes were never implemented and are no longer needed anyway.

        * [BUG] MOD function declared to have 12 parameters, but only requires 2.

        * [BUG] ISREF function had no valid metadata due to a typo in a filename.

        * [BUG] PRE-361 - ODD and EVEN functions failed to produce correct
          results.

        * [BUG] REPT function did not handle null-values according to the
          specification.

        * [BUG] SUBSTITUTE function did not handle empty strings as second
          parameter according to the spec.

        * [BUG] PRE-363 - Extra comma on "Checks whether" comments and
          descriptions removed.

0.1.18: (21-Feb-2008)
        * PRE-257 - Properly escaped double-quotes in a formula were not
          translated into proper quotes in the parsed formula-tree
          afterwards.

0.1.17: (04-Feb-2008)
        * PRE-231 - Fixed bug where parsing of numerics stopped after first
          non-numeric (including a decimal).


0.1.16: (30-Nov-2007)
        * PRE-161 - Fixed a bug with MIN() and MAX() functions not handling strings correctly

        * PRE-162 - Fixed a bug with the minus sign operation (-) and percentage operator (%)
          returning the wrong type if the wrong type is supplied

0.1.15: (02-Nov-2007)
        * Upgraded to jcommon-1.0.12

0.1.14: (16-Oct-2007)
        * Automatic fixes as reported by IntelliJ-IDEA's inspections

        * Updated the copyright header on all java-files

0.1.13: (12-Oct-2007)
        * [BUG] Fixed divide operations that nad no defined scale.

0.1.12: (24-Sep-2007)
        * All releases are now built with JDK 1.4. However, we are still compatible
          with JDK 1.2.2 and all releases run and compile under that release.

        * [BUG] The boot-class always reconfigured the logging system to use
          System.out logging, even if the user configured something else.

        * [BUG] The DefaultFunctionRegistry should have cached the loaded
          class-objects to avoid resource-contentions in the JDK's classloader.

0.1.11: (15-Aug-2007)
        * Added MIN, MAX, and MOD functions

        * [BUG] NumberSequence and Arrays from ranges should now work

        * Marked unimplemented methods with UnsupportedOperationException

        * Removed use of System.out in favor of JCommon logging

        * [BUG] Reworked some functionality that was not Java 1.2 compliant

        * Removed some old CVS artifacts

0.1.10: (30-Jul-2007)
        * [BUG] A misplaced instanceof test prevented the distinction between
          java.sql.Date and java.sql.Time objects.

        * [BUG] A rouge System.out statement was left in the generated formula
          parser and caused funny messages.

0.1.9: (24-Jun-2007)
        * [BUG] Percentage Operator did not set the scale correctly

        * [BUG] Divide operator did not remove unneccessary trailing zeros.

        * [BUG] Fixed a NullPointerException in the Numeric-Operators.

        * [BUG] Some operations returned 'null' instead of a NA()-TypeValue-Pair.

        * [BUG] The parser did not handle parenthesis correctly resulting in
          invalid results in computations.

        * Added support for inline arrays to the parser.

        * NULL-Values (aka NA()) are now treated like in Excel. Any operation
          performed on an NA() value results in NA(). There is no implicit
          conversion into ZERO for numeric operations anymore.

0.1.8: (21-May-2007)
        * [BUG] The automatic type conversion was not always working.

        * [BUG] The 'greater equal', 'lower equal' and 'not equal'
          operators did not work as expected.

        * The date-formats used in the automatic conversion can now
          be configured using the global configuration.

        * New functions added
          Date:
          - DAY()
          - HOUR()
          - MONTH()
          - WEEKDAY()
          - YEAR()

          Math:
          - EVEN()
          - ODD()
          - AVERAGE()

          Information:
          - ISNONTEXTFUNCTION()
          - ISEVEN()
          - ISODD()
          - ISNUMBER()
          - ISREF()

0.1.7: (27-Apr-2007)
        * [BUG] Fixed a couple of type-conversion issues when converting from and
          to numeric types. Now, if a value is not convertible, a
          TypeConversionException will be thrown.

0.1.6: (01-Apr-2007)
        * [BUG] Comparing two untyped (Any-Type) values always failed. The new
          implementation now tries to convert these values into Numbers, Dates,
          and Strings to compare them. (This is a quick-fix for Bug #1680148;
          however, it needs more testing before we can close that bug.)

        * New functions added
          Date:
          - NOW()
          - TODAY()

0.1.5: (07-Mar-2007)
        * Exposed some previously private variables to allow proper inspection
          of formulas.

0.1.4: (01-Mar-2007)
        * [BUG] The parser did not accept empty parameters so that syntactilly
          valid formulas like "IF(;;;)" failed to parse.

        * [BUG] The TRIM(..) function was invalid. TRIM has to remove all
          leading, trailing and all duplicate inner whitespaces from the give
          text.

        * New functions added
          Text:
          - REPLACE(
          - SUBSTITUTE(text, old_text, new_text, nth_appearance )

          Math:
          - ABS(number)

          Date:
          - DATEDIF(date1,date2,interval)

0.1.3: (25-Jan-2007)
        * [BUG] The power operator was not registered.

        * [BUG] The 'minus' prefix operator did not work.

        * New functions added
          Text:
          - LEFT(text[,length=1])
          - EXACT(text1,text2)
          - FIND(needle,hay[,startIndex])
          - LEN(text)
          - LOWER(text)
          - MID(text,start,length)
          - REPT(text,count)
          - TEXT(value)
          - T(value)
          - TRIM(text)
          - UPPER(text)
          - URLENCODE(text[,encoding])

          Information:
          - NA
          - ISNA(value)
          - ISTEXT(value)
          - ISLOGICAL(value)
          - ISERROR(value)
          - CHOOSE(condition,value[,..])
          - ISBLANK(value)

0.1.2: (22-Dec-2006)
        * [BUG] The parser failed when being faced with functions that have
          no parameters.

        * New function NULL allows to return a NULL-reference.

        * Added the 'ISBLANK' function from OpenFormula.

0.1.1: (11-Dec-2006)
        * The FormulaContext now is able to signal errors using Exceptions.

          The To-Do list has grown a bit after studying the holy books of
          Formula-computation. Version 0.2 will see some major internal API
          changes.

0.1.0: (03-Dec-2006)
        * Initial version. This version happily deals with plain types and
          somehow it even handles arrays without crashing. Code for database
          support exists, but is not in a usable state (yet).

          I don't even think about OLAP cubes now.

        * Functions use a parameter callback now. This way, we avoid to pre-
          evaluate all the parameters and therefore optimize the evaluation of
          the whole formula.

