Changes from version 4.1 to 5.0:
================================
Critical bug fixes:
  * Fixed bug #20056: an integer division by zero occurred when using
    the degree() operator on certain polynomial expressions of high
    degree.

Major bug fixes:
  * Fixed bug #17197: when compiled in a VPATH build, Sollya did not
    allow the Sollya test infrastructure to be executed.
  * Fixed bug #20369: a double-rounding issue could occur under some
    circumstances for the round() operator. This issue has been fixed.

Changes of syntax and output:
  * Fixed bug #19925: Sollya followed no clear convention for
    hexadecimal output. The hexadecimal output of Sollya is now
    standardized for non-zero real numbers: they are always printed
    with a leading one before the hexadecimal point.
  * The @ operator now also works on externalprocedures, not only
    procedures. See documentation for details.

Major new functionnalities:
  * New --args option to pass command line (bash) arguments to a
    Sollya script.
  * New feature __unique_id. See documentation for details.
  * New feature annotatefunction for allowing the user to add
    annotations to functional expressions.
  * New features getbacktrace and objectname allowing the Sollya
    procedure stack to be investigated and objects to be retranslated
    into object identifiers.
  * The Sollya execute command is now available in the Sollya library.
    Sollya scripts can hence be executed out of code using the Sollya
    library.

Minor new functionnalities:
  * New function sollya_lib_printlibrarymessage. See documentation for
    details.
  * New functions sollya_lib_execute_procedure and
    sollya_lib_v_execute_procedure. See documentation for details.
  * New function sollya_lib_obj_is_procedure.
  * New --oldexternalprocprint command line option. See documentation
    for details.
  * New function sollya_lib_hash.
  * New library functions for external procedures, library constants and
    library functions:
      - sollya_lib_externalprocedure
      - sollya_lib_externalprocedure_with_data
      - sollya_lib_decompose_externalprocedure_with_data
      - sollya_lib_obj_is_externalprocedure
      - sollya_lib_libraryconstant_with_data
      - sollya_lib_libraryconstant_with_data
      - sollya_lib_libraryfunction_with_data
      - sollya_lib_build_function_libraryfunction_with_data
      - sollya_lib_decompose_libraryconstant_with_data
      - sollya_lib_decompose_libraryfunction_with_data.
    See documentation for details.
  * New library functions allowing functions to be constructed and
    deconstructed:
      - sollya_lib_construct_function
      - sollya_lib_v_construct_function
      - sollya_lib_get_nth_subfunction.
    See documentation for details.

Improvements in internal handling:
  * Sollya is now always compiled with memory reference counting. The
    compile time option --enable-legacy-memory-management is no longer
    supported.
  * Improved execution speed of code used for faithful evaluation of
    a Sollya function.
  * Heavily improved handling of polynomial expressions.
  * The practical complexity of decimal display was improved by a
    certain amount. This is related to bug #12665.
  * Improved handling of temporary files generated by Sollya when
    calling gnuplot.

And some bugs fixed.

----------------------------------------------------------------------

Changes from version 4.0 to 4.1:
================================
Critical bug fixes:
  * Patched a bug on printing library functions: printing second or
    higher derivatives of functions bound to Sollya using library
    might have led to a segmentation fault.
  * Fixed a bug in fpminimax that might have led to a possible
    segmentation fault (bug #16164).

Major bug fixes:
  * Fixed some problems with Sollya's configure, leading to an error
    related to FPLLL during the compilation of Sollya. This error was
    especially observed when compiling Sollya under certain versions
    of Ubuntu.
  * Fixed bug #8306: older versions of Sollya used directed roundings
    on positive constants used in point-intervals and rounding to
    nearest for both bounds on negative constants. This led to point
    intervals not containing the decimal constant when the constant
    was not representable and negative.
  * Fixed bug #16155: older versions of Sollya were affected by a
    double rounding problem for ceil, floor and nearestint
    computation, yielding to incorrect results such as ceil(X) < X,
    floor(X) > X or abs(nearestint(X) - X) > 0.5.
  * Fixed bug #10322: older versions of Sollya disregarded the
    rounding mode when the single precision rounding to nearest led to
    overflow.
  * Fixed bug #15256: older versions of Sollya rounded NaN to Infinity
    under certain circumstances.

Changes of syntax and output:
  * Making Gappa proof generation work better with recent versions of
    Gappa. The Gappa proof generated by this version of Sollya
    generally leads to tighter error enclosures.
  * Changed simplify to dirtysimplify and aliased simplifysafe with
    simplify. See documentation.
  * In order to allow users to include C code produced by Sollya using
    implementpoly or implementconstant in their own projects without
    making their own project available as works derived from Sollya,
    Sollya now includes a copyright exception text in such code
    sequences. See the actual text produced for details. The exception
    text was derived from the bison exception text and has informally
    been checked by Red Hat Inc. legal personnel.
  * New safe simplification procedures, solving bug #13046 and
    partially #16434. Older versions of Sollya performed illegal
    simplifications of expressions f - f to 0 and f/f to 1 even if f
    could become infinity resp. 0 over a whole interval.
  * Corrected a bug affecting the way rational numbers were displayed
    with sollya_lib_printf using %r conversion modifier: the displayed
    numerator and denominator were rounded values in some cases.
  * New conversion specifier %k in sollya_lib_printf to display mpz_t
    values.

Minor new functionnalities:
  * Added support for an optional destructor function in an external
    library. See the documentation for library, libraryconstant or
    externalproc for details.
  * New functions sollya_lib_constant_from_mpz(),
    sollya_lib_constant_from_mpq(), sollya_lib_get_constant_as_mpz()
    and sollya_lib_get_constant_as_mpq() in the library. See
    documentation for details.

And some bugs fixed.

----------------------------------------------------------------------

Changes from version 3.0 to 4.0:
================================
Critical bug fixes:
  * Fixed a bug in rationalapprox leading to possible segmentation
    fault (bug #13943).
  * Fixed a bug in horner with expressions containing NaNs leading the
    tool to exit (bug #15249).
  * Patched segfaulting behavior of comparisons of accesses to
    structures (bug #15162).
  * Avoided GMP overflow on simplification of powers on 64-bit
    machines (bug #14259).
  * Fixed a bug in simplification of some polynomials that resulted in
    a crash of the tool (bug #13930).
  * Fixed a bug when comparing unevaluated apply statements with
    themselves, possibly yielding to a segmentation fault.

Major bug fixes:
  * Fixed hornerization algorithm to run in linear time in most cases
    (bug #15363).
  * Patched: the first tail operation on a list passed in argument of
    a procedure reverts the list (bug #15147).
  * Faithful rounding on evaluation of point intervals done too lower
    precisions as it should (bug #13902).
  * Patched a bug in supnorm that could yield to completely wrong
    results.
  * Patched: error-free simplification of divisions might yield
    incorrect answers if the denominator is 0 but cannot be proven to
    be so.
  * Patched: substitution of one polynomial into another could yield a
    completely wrong result, as constant coefficients could be omitted
    at some places.

Changes of syntax and output:
  * Implicit parenthezation of .: operator has changed. a.:b.:c now
    reads a.:(b.:c).
  * () is now always allowed when (void) is.
  * parse and parse_string do no longer accept non-blank characters in
    excess (but one single occurrence of ';').
  * The derivative of acos, asin, tan and tanh now all use squares.
  * When a comparison is hard to decide or undecidable, the result now
    produced is the one that would be produced if both members of the
    comparison were equal.
  * Introduced a default name for the free mathematical variable.
    _x_ is a permanent placeholder for the free variable.
  * Remez function now accepts a sixth parameter that allows the user
    to stop the computation as soon as a given accuracy is reached, or
    on the contrary, as soon as it may be proven that a given accuracy
    is unreachable.
  * The warning message displayed when a faithful rounding is
    performed now displays the precision the result is rounded at.
  * In cases when an evaluation is unable to perform faithful rounding
    because the real value of an expression is too close to 0, the
    returned value is now 0.
  * The behavior of expansion of end-elliptic lists has changed (see
    Section "Data Types > Lists" of the documentation for details).
  * void is no longer displayed by autoprint when verbosity is at
    least 2.

Major new functionnalities:
  * New Sollya library, with a real interface. This interface will be
    officially supported and maintained in the future.
  * The round command now provides correct rounding of any constant
    expression given as argument, avoiding double-rounding (the
    previous behavior consisted in rounding it first faithfully to the
    current precision of the tool, and then rounding correctly that
    value at the required precision).
  * New chebyshevform command for computing Chebyshev Models (see
    documentation for details).
  * The commands remez and fpminimax can now take any list of base
    functions, and not only monomials.
  * Partial application of procedures is now available through the
    bind command (see documentation for details).

Minor new functionnalities:
  * Faithful evaluation has been optimized (in particular, it now
    favors correct rounding whenever possible at low cost).
  * New command composepolynomials (see documentation for details).
  * New optional argument to guessdegree indicating the maximum degree
    the algorithm should allow (see documentation for details).
  * Sollya now compiles with icc.
  * New commands suppressmessage, unsuppressmessage,
    getsuppressedmessages and showmessagenumbers allowing for
    particular messages to be suppressed.

Improvements in internal handling:
  * Various algorithms have been optimized for performance.
  * Memory usage of the tool has been improved a lot. In particular:
      - Copies of sollya objects now use reference counting.
      - Useless repeated evaluations are now detected and avoided.
      - Constant expressions are not evaluated again if some previous
        evaluation at a higher precision has already been performed.
      - For debugging purposes, a new configure option
        --enable-legacy-management allows the user to compile Sollya
        without these new optimizations. This option is for the
        developers of Sollya and is useless for the users of the tool
        (in particular, it is *expected* that 'make check' fails if
        this option is enabled).
  * Performance of handling lists has been optimized a lot:
      - The following instructions have now O(1) complexity in most
        cases: head(L), L=tail(L), L=a.:L where 'L' is a list and 'a'
        is some sollya object (notice that the same variable 'L' is
        used at both sides of the assignments).
      - Random read access to an element of a list has now
        O(1) complexity (except maybe the first access).
  * The definition of nop(n) has been changed so as to improve the
    stability of timings using it accross different architectures.
  * The temporary files used for the plot and externalplot commands
    now use unique names so as to avoid conflicts with other instances
    of the tool running at the same time.

And many bugs fixed.

----------------------------------------------------------------------

Changes from version 2.9 to 3.0:
================================
Major new functionnalities:
  * Added expression matching support to the Sollya language. It is
    now possible to perform pattern matching on the objects of the
    Sollya language (expressions, lists, intervals, etc.). This is
    documented in a new section called "Pattern matching" in the
    User's Manual.
  * Added bashevaluate command.
  * Added operators halfprecision (or equivalently HP) and quad (or
    equivalently QD).

Minor new functionnalities:
  * The Sollya executable now returns a meaningful error code:
      0 - the tool has been quit with a "quit;"
      1 - the tool has died because of an internal error that should
          never happen
      2 - the tool has died because it was in "dieonerrormode = on"
          and an error has occurred
      3 - the tool has been quit without a "quit;" but the last
          command was syntactically correct and got correctly executed
      4 - the tool has been quit on an incomplete input
  * Added a fitfth optional argument to guessdegree that is used as a
    maximal allowed degree.
  * Changed behavior of doubleextended (resp. DE) with respect to
    subnormal rounding. Now, doubleextended correctly performs
    subnormal rounding for an exponent width of 15 bits.
    (see documentation on doubleextended for details).

Improvements in internal handling:
  * A new technique gives sharper remainder bounds when taylorform
    is used in relative mode.

Others:
  * Sollya was not compatible with FPLLL 3.0 or later. This is now
    fixed.
  * Two important bugs fixed in taylorform. Results obtained with an
    older version of taylorform often were incorrect.

And some bugs fixed.

----------------------------------------------------------------------

Changes from version 2.0 to 2.9:
================================
Changes of syntax and output:
  * The addition of the min and max commands (see below) reserves the
    identifiers min and max as Sollya keywords, impacting legacy
    scripts which might have used these identifiers as variable names

Major new functionnalities:
  * Added supnorm command
  * Added libraryconstant command
  * Added implementconstant command
  * Added function command for turning procedures into functions
  * Added support for user-defined structures into the Sollya language
  * Added min and max commands

Minor new functionnalities:
  * Added --warnonstderr, --warninfile and --warninfileappend options
    to Sollya
  * Added MPFR, GMP and MPFI version printing to version and --help

Improvements in internal handling:
  * Equality and inequality tests optimized when simple interval
    evaluation allows the result to be immediately decided upon.
  * Added a wrapper around MPFI for interval arithmetic computations
    within Sollya. As a consequence, the behaviors of Sollya and MPFI
    on some operations may now be different. See the new Appendix in
    the user's manual.
  * For the users of libsollya: new sollya_mpfi_t type must now be
    used instead of mpfi_t. Currently, they are exactly the same type,
    but they might differ in future versions.
  * The performance of Sollya's internal algorithms used for shifting
    a polynomial have been greatly improved. There is still headroom,
    though.

Others:
  * Multiplications, divisions or powers involving infinities, zeros,
    or NaNs now produce different results, compared to older versions
    of Sollya. This is documented in the new Appendix of the user's
    manual.

And some bugs fixed.

----------------------------------------------------------------------

Changes from version 1.1 to version 2.0:
========================================
Changes of syntax and output:

  * When the evaluation of an expression seems to be zero but cannot
    be proven to be exactly zero, the value zero is now returned
    (instead of a very small value as before)
  * Added %precision%constant parsing capability for numerical point
    constants
  * printhexa, printfloat are now deprecated. They should be replaced
    by printdouble and printsingle
  * Syntax like prec = ? is still supported but deprecated. It should
    be replaced by prec (or any other global variable).
  * The syntax *< interval >*, *< interval >_, *<interval>. is
    deprecated. It should be replaced by sup(), inf() and mid()
  * The read keyword is deprecated. It should be replaced by #include
    or even execute()
  * The begin and end keywords are deprecated. They should be replaced
    by { and }
  * Polymorphic prepend :: is now deprecated. It should be replaced by
    .: and :.

Major new functionnalities:
  * Added nearestint function
  * Added single precision rounding function
  * Added taylorform command
  * Added autodiff command
  * Added numberroots command
  * Added support for procedures with an arbitrary number of arguments
  * Added time command
  * Made Sollya accept an input file as a command line argument (in
    particular, it makes shebangs possible)
  * Updated parse command with all new functionnalities
  * Added rationalmode mode
  * Added support for interval arithmetic
  * Added "in" operator for testing if a value belongs to an interval
  * Equality and inequality tests now automatically adapt the
    precision for guaranteeing safe results whenever possible (or
    display a warning)

Minor new functionnalities:
  * Added dieonerror mode
  * Added --flush option to Sollya
  * Added support for integer arguments in nop
  * Extended syntax of roundcoefficients command
  * Extended syntax of round command

Improvements in internal handling:

  * Added smart sign test used for proving that some constant
    expressions are constant zero
  * Made exact simplifier simplify things like D(sin(3)),
    ceil(log(pi)), etc. where possible with a little more than the
    working precision
  * Improvement of fpminimax (some infinite loops are now avoided)
  * Infinities and NaN behavior is now IEEE 754-like
  * Rewrote dirtyinfnorm command and remez command for better
    performance
  * Randomized sampling in plot in order to avoid regular patterns

Others:
  * Enable linkage of sollya.h with C++
  * Added -Xlinker --allow-multiple-definition for CygWin users
  * Added --help option
  * Slight changes in the behavior of autoprint. Introduced new option
    --oldautoprint for recovering the old behavior
  * The option --oldrlwrapcompatible is now deprecated. Users should
    use a recent version of rlwrap supporting "-A" option.

And many bugs fixed.

----------------------------------------------------------------------

Changes from version 1.0 to version 1.1:
========================================
Critical bug fixes:
  * Patched expansion of polynomial terms. Signs and coefficient
    values could be completely wrong All results previously obtained
    using Sollya should be re-checked

Changes of syntax and output:
  * Unary + and - are now correctly parsed
  * Changes in midpointmode. In particular, midpoint values are now
    parsed back as ranges.
  * Changed implicit parenthesation order for power operator ^: 2^3^4
    is now understood as 2^(3^4)
  * Integers and binary representations are now read without rounding
    (see documentation for details)
  * Added infty, @Inf@, nan, NaN, NAN, @NaN@ lexing/parsing capability

Major new functionnalities:
  * Remez' algorithm is now able to correctly handle cases where the
    Haar condition is not fulfilled
  * Added fpminimax command (see documentation for details)
  * Added ~ operator for evaluating constant expressions
  * Added roundingwarnings mode (see documentation for details)

Improvements in internal handling:
  * Speeded up dirtyfindzeros when 0 is a zero of the function
  * Improvement in execution speed of guessdegree

Others:
  * Fixes of many slight bugs and memory leaks
  * Made Sollya compile under Cygwin (Sollya library untested)
  * Removed dependance to PARI/GP
  * New dependency to Damien Stehle's fplll library
  * Added --help, --oldrlwrapcompatible, --nocolor and --noprompt
    command-line options
  * Added check environment
  * Added color printing

