2007-08-05    Alexey Beshenov            <al@beshenov.ru>

    * initialization.cpp: The initialization of mpfr::Parameters and
      mpfr::Real::params_ should be executed first.

2007-06-04    Alexey Beshenov            <al@beshenov.ru>

    * First order Bessel functions: BesselJ0, BesselJ1, BesselJn.
      Second order Bessel functions: BesselY0, BesselY1, BesselYn.
      Fast multiplication-subtraction: Fms.
      Remainder of division: Remainder.

    * Several bugs were found by testing on g++ 4.1.2.

    * src/mpfrcpp/extra/fp_comparator.hpp should not contain
      ``using namespace nacre::comparator'' string.

    * In examples/nacre_polynomial_roots.cpp ``mpfr::Polynomial<mpfr::Real>''
      should be replaced with ``mpfr::Polynomial'' as well as
      ``mpfr::Polynomial<mpfr::Complex>'' should be replaced with
      ``nacre::polynomial::Polynomial<mpfr::Complex>''.

2007-05-13    Alexey Beshenov            <al@beshenov.ru>

    * std::ostream& operator<< (std::ostream&, const Real&) uses
      Real::getParameters().getDefaultBase() instead of Base(10).

    * std::istream& operator>> (std::istream&, Real&) uses
      Real::getParameters().getDefaultBase().

2007-05-13    Alexey Beshenov            <al@beshenov.ru>

    * Some corrections in the <mpfrcpp/extra/std_overloads.hpp>

    * std::numeric_limits specialization moved to the
      <mpfrcpp/extra/limits.hpp>

2007-05-10    Alexey Beshenov            <al@beshenov.ru>

    * Many changes in the headers and sources structure.
          Thanks to Brian Gladman.

    * The global objects could be embeded in the static library.

    * <mpfrcpp/mpfrcpp_uninitialized.hpp> header for the MPFRCPP
      without pre-defined global objects.

    * <mpfrcpp/extra/boost_interval.hpp>, boost::numeric::interval_lib
          specification for mpfrcpp::Real.

2007-04-15    Alexey Beshenov            <al@beshenov.ru>

    throw(invalidNumberStringError) for operator>> replaced by
    setting std::ios_base::failbit.

2007-04-14    Alexey Beshenov            <al@beshenov.ru>

    <mpfrcpp/extra/nacre/*> moved to the <nacre/*>

2007-04-13    Alexey Beshenov            <al@beshenov.ru>

    template<typename T> nacre::Rational::Rational<T>

2007-04-12    Alexey Beshenov            <al@beshenov.ru>

    template<typename T> nacre::polynomial::Polynomial<T>

2007-04-09    Alexey Beshenov            <al@beshenov.ru>

    General complex numbers implementation (class template) at
    <mpfrcpp/extra/nacre/complex/complex.hpp>.

    mpfrcpp::Complex is only synonym for nacre::complex::Complex<Real>.

2007-04-09    Alexey Beshenov            <al@beshenov.ru>

    1.
        mpfrcpp::Complex -- native complex numbers implementation
        mpfrcpp::test::NativeComplex
        mpfrcpp::test::Complex renamed to mpfrcpp::test::StdComplex

    2. The folowing headers were moved to the `extra' subdirectory:

        <mpfrcpp/initialization/std_overloads.hpp>
        <mpfrcpp/initialization/beta.hpp>

    It means that user should include them manually, if needed.

    3. `extra' items:

        <mpfrcpp/extra/beta.hpp>
        <mpfrcpp/extra/complex.hpp>
        <mpfrcpp/extra/fp_comparator.hpp>
        <mpfrcpp/extra/pminf.hpp>
        <mpfrcpp/extra/simple_functions.hpp>
        <mpfrcpp/extra/std_overloads.hpp>


2007-04-08    Alexey Beshenov            <al@beshenov.ru>

    All sources converted to DOS endline format.

2007-04-07    Alexey Beshenov            <al@beshenov.ru>

    test classes (mpfrcpp::test)

2007-04-06    Alexey Beshenov            <al@beshenov.ru>

    class RandomState

2007-04-06    Alexey Beshenov            <al@beshenov.ru>

    Pre-defined Version and RoundMode are constants now:

        extern const Version MPFRCPPVersion;
        extern const Version MPFRVersion;

        extern const RoundMode roundTowardZero;
        extern const RoundMode roundToNearest;
        extern const RoundMode roundTowardInfinity;
        extern const RoundMode roundTowardNegInfinity;

2007-04-03    Alexey Beshenov            <al@beshenov.ru>

    Constructors for every functor. For example, AcosClass:

        class AcosClass : public NumericFunction {
        public:
            AcosClass () throw() : NumericFunction () {}
            AcosClass (const Precision& pr, const RoundMode& rm) throw() :
                NumericFunction (pr, rm) {}
            AcosClass (const Precision& pr) throw() :
                    NumericFunction (pr) {}
            AcosClass (const RoundMode& rm) throw() :
                    NumericFunction (rm) {}
        // ...
        };

2007-04-01    Alexey Beshenov            <al@beshenov.ru>

    1. Unary + sign:

        Real Real::operator+ () const throw();

2007-03-31    Alexey Beshenov        <al@beshenov.ru>

    1. class Exp has been renamed to class Exponent.

    2. Real::getExp() and Real::setExp() are Real::getExponent() and
    Real::setExponent() now.

    The same new method names for GlobalParameters class:

        static int setExponentMin (const Exponent&) throw();
        static Exponent getExponentMin () throw();
        static int setExponentMax (const Exponent&) throw();
        static Exponent getExponentMax () throw();
        static Exponent getExponentMinMin() throw();
        static Exponent getExponentMinMax() throw();
        static Exponent getExponentMaxMin() throw();
        static Exponent getExponentMaxMax() throw();

    It is needed to prevent conflicts with new functor notation (see below).

    3. All default functors and functor classes have been renamed:

        absClass -> AbsClass
        abs -> Abs
        acosClass -> AcosClass
        acos -> Acos
        acoshClass -> AcoshClass
        acosh -> Acosh
        ...

    It is needed to prevent possible conflicts with functions of same
    name from the namespace std.

2007-03-28    Alexey Beshenov            <al@beshenov.ru>

    1. assignment for mpfrcpp::Real:

        Real& operator= (const Real&)               throw();
        Real& operator= (const unsigned long int&)  throw();
        Real& operator= (const unsigned int&)       throw();
        Real& operator= (const unsigned short int&) throw();
        Real& operator= (const long int&)           throw();
        Real& operator= (const int&)                throw();
        Real& operator= (const short int&)          throw();
        Real& operator= (const double&)             throw();
        Real& operator= (const long double&)        throw();
        Real& operator= (const mpz_t&)              throw();
        Real& operator= (const mpq_t&)              throw();
        Real& operator= (const mpf_t&)              throw();
    #ifdef GMP_CPP_INTERFACE
        Real& operator= (const mpz_class&)          throw();
        Real& operator= (const mpq_class&)          throw();
        Real& operator= (const mpf_class&)          throw();
    #endif    // GMP_CPP_INTERFACE
        Real& operator= (const std::string&)        throw();
        Real& operator= (const bool)                throw();

    2. The same assignment for class mpfrcpp::PrimitiveWrapper:

        PrimitiveWrapper& operator= (const T&) throw();
        PrimitiveWrapper& operator= (const PrimitiveWrapper&);
        PrimitiveWrapper& operator+= (const T&) throw();
        PrimitiveWrapper& operator-= (const T&) throw();
        PrimitiveWrapper& operator*= (const T&) throw();
        PrimitiveWrapper& operator/= (const T&) throw();
        PrimitiveWrapper& operator%= (const T&) throw();

    3. Operations with assignment:

        template<typename T> Real& operator+= (Real&, const T&) throw();
        template<typename T> Real& operator-= (Real&, const T&) throw();
        template<typename T> Real& operator*= (Real&, const T&) throw();
        template<typename T> Real& operator/= (Real&, const T&) throw();

    4. Errata in <mpfrcpp/real/to_string.hpp>:
    std::ostringstream<char> should be std::ostringstream.

    5. std::basic_istream and std::basic_ostream replaced by std::istream
    and std::ostream [mpfrcpp/real/stream.hpp].

    6. Stream output accepts std::ios_base::showpos and
    std::ios_base::uppercase flags. I decided to exclude
    std::ios_base::floatfield processing since only
    std::ios_base::scientific needed.

2007-03-30    Alexey Beshenov            <al@beshenov.ru>

        Real& Real::operator= (const mpfr_t&) throw();
