Changes from version 7.0 to 8.0:
================================
Changes of syntax and output:
  * Hexadecimal constants ending on '+' or '-' (e.g., 0x123p-) now
    provoke a syntax error (as it always should have).
  * The match construct on error now matches (it used to return
    error).
  * In certain cases, procedures could not be applied to an empty set
    of arguments because a syntax error occurred before. This is now
    possible.
  * The meaning and use of infinities and signed zeros in intervals
    has been changed (see documentation for details).
  * Input and output of decimal constants is now fully exact in
    rationalmode. In all other instances, a warning message is now
    produced when an internal constant gets printed in decimal and a
    rounding occurs.

Critical bug fixes:
  * Making Sollya compile again with recent versions of fplll (at
    least on the Linux side).

Improvements in internal handling:
  * Improved performance on manipulation of polynomials.

Major bug fixes:
  * Patched a bug in interval erfc.
  * Patched a bug preventing match to work on unary minus.

Major new functionalities:
  * The interpolate command allows for polynomial interpolation with
    and without error (see documentation for details).
  * The bezout command allows for computation of a gcd along with
    matching cofactors (see documentation for details).

Minor new functionalities:
  * The externaldata command now allows generic external library
    symbols to be bound to Sollya objects (see documentation for
    details).
  * Improvements on use of the L'Hopital rule for function
    evaluations.
  * When started as an interactive tool or as a library, Sollya now
    binds the executable's 0th argument to the Sollya identifier
    __program_name.
  * In situations when the user wishes to provide the minimax with
    real coefficients to fpminimax, it is now possible to give a list
    of coefficients instead of the expression of the real minimax (see
    documentation for details).
  * The free mathematical variable can now be unbound with the rename
    command (see documentation for details).
  * The bind command now allows for procedures with an arbitrary
    number of arguments (see documentation for details).
  * The char *sollya_lib_get_help_text(char *topic) function now
    allows for access to the help text of a certain topic.

Others:
  * In certain circumstances, the printing of a list may have had
    quadratic complexity in the past. This has been corrected.
  * If the compiler supports the -flto flag; this option is disabled
    by default though. To enable LTO compilation, use
    --enable-lto-compilation. On certain systems the -flto flag is
    supported by the compiler but LTO compilation fails. In this case,
    it is recommended not to enable LTO compilation.
  * dirtyfindzeros used to include in the list of zeros any point
    where the expression given as input evaluated to NaN. Such points
    are now included only when there is a real suspicion that it could
    be a true zero of the expression.
  * externalprocedure, externalfunction and externaldata entries can
    have cross-dependencies for their symbols. The tool now makes sure
    all symbols are unloaded in the precise inverse order of their
    loading, to allow for such cross-dependencies.
  * chebyshevform command can now be used out of execute() statements.
  * remez command now tries to recognize the situation when the
    optimal error function is identically 0.
  * configure now allows for cross-compilation.

Deprecated functionalities:
  * Deprecated readxml and printxml.
  * Deprecated the proof generation feature of the infnorm command.
  * Deprecated end-elliptic lists ending with a number as a format
    list in fpminimax.

And many bugs fixed.

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

Changes from version 6.0 to 7.0:
================================
Critical bug fixes:
  * Some particular combinations of calls to the plot command,
    together with external procedures and forks could lead to
    inappropriate behaviors. This has been fixed.
  * Fixed the bug [#21376] in implementpoly that made the tool crash.
  * Fixed a segmentation fault issue with fpminimax command (when
    called in a fixed-point context, with a list of points, and
    without providing pstar).

Major bug fixes:
  * Fixed a bug in remez command leading to evaluating the function on
    points outside its domain.
  * The zeros of a function lying very close to 0 where not properly
    recovered by dirtyfindzeros. This is fixed.
  * Fixed bug [#21592]: differentiation of some polynomials was
    wrongly computed.
  * The 'file' option of plot did now work properly: this is fixed.
  * Fixed bug [#21658] regarding elliptic lists defined with too large
    integers.
  * Fixed bug [#21680] regarding faithful evaluation of expressions
    involving infinities.

Changes of syntax and output:
  * The read keyword that was deprecated since Sollya 2.0 is now
    removed.
  * Expressions involving log10 and negative powers of 10, together
    with "exact" functions like floor, ceil, etc., are now
    automatically simplified.
  * Comparisons involving NaN now behave according to the philosophy
    of IEEE 754-2008 standard.
  * The environment variable SOLLYA_GNUPLOT now allows the user to
    specify their desired gnuplot binary.
  * Most messages of remez command now only display for higher
    verbosity than the default one.
  * Expressions returned by diff have been changed to gain homogeneity
    from a base function to another.

Major new functionnalities:
  * New commands gcd, mod and div allow for computation of gcds,
    remainders and quotients of polynomials or integers (see
    documentation for details).

Minor new functionnalities:
  * The library provides a new function
    sollya_lib_get_constant_as_uint64_array (see documentation for
    details).

Improvements in internal handling:
  * Multiplication of polynomials is now sub-quadratic (and most often
    quasi-linear).
  * Practical performance of polynomial arithmetic has been improved.
  * Made many internal operations more efficient by using the DAG
    structure of expressions.
  * The command annotate now returns faster when annotating a function
    with a polynomial.
  * Improved precision handling in commands dirtyfindzeros,
    dirtyinfnorm and remez.
  * Improved precision handling in calls to library functions.
  * The sort command is now faster.
  * The plot command now produces a window that is alive (allowing,
    e.g., for zooming with certain gnuplot terminals).

Others:
  * Sollya can now be also compiled as a shared library on Cygwin.

And many bugs fixed.

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

Changes from version 5.0 to 6.0:
================================
Critical bug fixes:
  * Fixed a bug leading min and max commands to return wrong results
    when infinities were involved.

Major bug fixes:
  * Many cases that used to make remez command enter into an infinite
    loop are now correctly handled. This fixes bugs [#8867] and
    [#12892], and also partly [#17200].

Changes of syntax and output:
  * Changed the way negative constants are displayed, so as to grant
    the property that an expression displayed by the tool and then
    parsed by the tool leads to the reconstruction of the exact same
    expression tree when autosimplify is set to off and
    fullparentheses is set to on (see bug [#20818]).
  * Patched a minor issue with displaying of code elements in
    match-with constructs.

Improvements in internal handling:
  * Slight improvement in numberroots command.
  * Slight changes in what remez and fpminimax commands display at
    verbosity levels higher or equal than 2.
  * The interactive tool is now built upon the the library.
  * The tool now accepts without an error files containing DOS-style
    new line characters, i.e., "\r\n".

Others:
  * Made Sollya compatible with the new API and requirements of
    recent versions of FPLLL.
  * configure now uses silent-mode, providing a more readable output.
  * LaTex sources of the documentation are now distributed with the
    released tarballs (notice that they always have been available
    under the same licence as the rest of Sollya sources in the public
    cvs/svn/git repositories. The only change is that they are now
    also distributed with the tarballs).
  * Tests that check execution timings are now skipped when they do
    not pass instead of being marked as 'FAIL', because running them
    on a busy machine could prevent them from passing (notice however
    that systematic failure of these tests on a non-busy machine
    should not be regarded as completely normal and is worth being
    reported).
  * A certain number of performance bugs fixed, in particular with
    respect to low precision evaluations and evaluations involving
    NaNs.
  * Fixed a problem with the environment variable 'showmessagenumbers'
    that was not recognized when used in a file read by the execute
    command.

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

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

