/*
 Copyright (C) 2000-2018 StatPro Italia srl

 This file is part of QuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://quantlib.org/

 QuantLib is free software: you can redistribute it and/or modify it
 under the terms of the QuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 <quantlib-dev@lists.sf.net>. The license is also available online at
 <http://quantlib.org/license.shtml>.

 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the license for more details.
*/

/*! \page history Version history

    <strong>Release 1.38 - April 2025</strong>

    PORTABILITY
    - **Future change of default:** as already announced, in the next
      release we're going to switch the default for `ext::any` and
      `ext::optional` from the Boost implementation to the standard one.
      Using `boost::any` and `boost::optional` is still possible
      for the time being but deprecated.
    - **Possible future breaking change**: in the next release, the
      `SimpleQuote` class might be made `final`.  If you're inheriting
      from it, drop us a line.

    DATES AND CALENDARS
    - The `Schedule` class now honors the passed business day convention
      when end-of-month is enabled.  Previously, enabling
      end-of-month caused it to always use the Modified Following
      convention.
    - Added Chinese holidays for 2025; thanks to Cheng Li.
    - Added Thailand holidays for 2025; thanks to Paolo D'Elia.
    - Added Hong Kong holidays for 2025; thanks to Ka Wai Lee.

    INDEXES
    - Year-or-year inflation indexes can (and should) now be built without
      an `interpolated` flag.  As for zero inflation indexes,
      the interpolation was moved into the coupons using the indexes.
    - Fixed obsolete conventions for the (now discountinued) EUR LIBOR
      index; thanks to Eugene Toder.

    INSTRUMENTS AND PRICING ENGINES
    - Added implementation of partial-time barrier put options; thanks to
      Paolo D'Elia.
    - The `OvernightIndexFuture` class would not receive notifications
      when the convexity quote or the evaluation date changed; this is now
      fixed.  Thanks to Eugene Toder.
    - The experimental `BlackCallableFixedRateBondEngine` wouldn't take
      discount correctly into account when evaluation the embedded option;
      this is now fixed.  Thanks to GitHub user RobertS548 for the heads-up.
    - Moved a few instruments and engines from the experimental folder to
      the core library:
      - `HolderExtensibleOption` and `AnalyticHolderExtensibleOptionEngine`;
      - `WriterExtensibleOption` and `AnalyticWriterExtensibleOptionEngine`;
      - `PartialTimeBarrierOption` and `AnalyticPartialTimeBarrierOptionEngine`;
      - `TwoAssetBarrierOption` and `AnalyticTwoAssetBarrierEngine`;
      - `TwoAssetCorrelationOption` and ``AnalyticTwoAssetCorrelationEngine`;
      - `ContinuousArithmeticAsianLevyEngine`;
      - `AnalyticPDFHestonEngine`.

    TERM STRUCTURES
    - The `DepositRateHelper` and `FraRateHelper` classes can now be built
      specifying fixed dates instead of a tenor; thanks to Eugene Toder.
    - The cross-currency basis-swap rate helpers can now be passed an
      overnight index and a corresponding payment frequency; it is also
      possible to pass a payment lag.  Thanks to GitHub user kp9991-git.
    - The additional penalty functions passed to the `GlobalBootstrap`
      class can now take the curve nodes as arguments; thanks to Eugene
      Toder.  This makes it possible, for example, to penalize
      gradients to make the curve smoother.  It is also possible to
      specify additional variables to be optimized, e.g., futures
      convexity adjustments.
    - Added a piecewise forward-spreaded term structure; thanks to
      Paolo D'Elia.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.33:
      - the constructors of `Currency` and `Currency::Data` taking a
        format string, the `format` method of the `Currency` class and the
        `formatString` data member of `Currency::Data`.
    - Deprecated the constructors of year-on-year inflation indexes taking
      an `interpolated` argument; use the other constructors instead.
    - Deprecated the header files in `ql/experimental/exoticoptions` for
      some classes moved to the core library (see above); use the
      corresponding new headers in `ql/instruments` and
      `ql/pricingengines` instead.

    Thanks go also to Eugene Toder, Konstantin Novitsky, Tomas
    Kalibera and GitHub user raneamri for miscellaneous smaller fixes,
    improvements or reports.

    <strong>Release 1.37 - January 21st, 2025</strong>

    PORTABILITY
    - **Future change of default:** as already announced, in the next
      release we're going to switch the default for `ext::any` and
      `ext::optional` from the Boost implementation to the standard one.

    DATES AND CALENDARS
    - Added closure for President Carter's funeral to the NYSE calendar;
      thanks to Dirk Eddelbuettel.
    - Added distinct Wellington and Auckland variants for New Zealand
      calendar.

    INDEXES
    - Improved the performance of the `addFixing` and `addFixings` method
      in the `Index` class; thanks to Peter Caspers.
    - Added the KOFR index; thanks to Jongbong An.

    INSTRUMENTS AND PRICING ENGINES
    - Added Choi pricing engine for Asian options; thanks to Klaus
      Spanderen.
    - Passing a risk-free overnight index to an asset swap now implies
      using OIS-like coupons.
    - Added Bjerksund-Stensland, Operator-Splitting, Deng-Li-Zhou, Choi
      and n-dim PDE engines for spread options; thanks to Klaus Spanderen.
    - Deng-Li-Zhou, Choi and n-dim PDE engines for basket options; thanks
      to Klaus Spanderen.

    TERM STRUCTURES
    - **Possibly breaking**: better upper and lower bounds for global
      bootstrap; thanks to Eugene Toder.  If you created your own
      bootstrap traits, you'll need to add `minValueGlobal` and
      `maxValueGlobal` methods for them to work with the
      `GlobalBootstrap` class.
    - Fitted bond curves can now be passed precomputed parameters without
      the need for bond helpers.
    - Use correct guess in SABR swaption vol cube.
    - OIS rate helpers can now be passed a date-generation rule; thanks to
      Sotirios Papathanasopoulos.
    - Swap rate helpers can now be passed explicit start and end dates;
      thanks to Eugene Toder.
    - OIS rate helpers can now be passed explicit start and end dates,
      making a distinct `DatedOISRateHelper` class unnecessary; thanks to
      Eugene Toder.

    CASH FLOWS
    - Added new `MultipleResetsCoupon` and `MultipleResetsLeg` classes to
      manage coupons with multiple resets.  They fix and
      replace `SubPeriodsCoupon` and `SubPeriodsLeg`.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.32:
      - the `FixedRateBondForward` class;
      - the `SampledCurve` and `SampledCurveSet` classes;
      - the `StepConditionSet` and `BoundaryConditionSet` classes;
      - the `ParallelEvolver` and `ParallelEvolverTraits` classes;
      - the `FDVanillaEngine` and `FDMultiPeriodEngine` classes;
      - the `BSMTermOperator`, `StandardFiniteDifferenceModel`,
        `StandardSystemFiniteDifferenceModel` and `StandardStepCondition`
        typedefs;
      - the `QL_NULL_FUNCTION` macro;
      - the overloads of `DigitalCmsLeg::withReplication` ,
        `DigitalCmsSpreadLeg::withReplication` and
        `DigitalIborLeg::withReplication` taking no arguments;
      - the empty headers `analyticamericanmargrabeengine.hpp`,
        `analyticcomplexchooserengine.hpp`,
        `analyticcomplexchooserengine.hpp`,
        `analyticcompoundoptionengine.hpp`,
        `analyticeuropeanmargrabeengine.hpp`,
        `analyticsimplechooserengine.hpp`, `complexchooseroption.hpp`,
        `compoundoption.hpp`, `margrabeoption.hpp` and
        `simplechooseroption.hpp` in the `ql/experimental/exoticoptions`
        folder;
      - the empty header `ql/experimental/termstructures/multicurvesensitivities.hpp`;
      - the empty headers `pdeshortrate.hpp` and `shoutcondition.hpp` in
        the `ql/methods/finitedifferences` folder;
      - the empty header `ql/models/marketmodels/duffsdeviceinnerproduct.hpp`;
      - the empty headers `fdconditions.hpp`, `fddividendengine.hpp` and
        `fdstepconditionengine.hpp` in the `ql/pricingengines/vanilla`
        folder.
    - Deprecated the `SubPeriodsCoupon`, `SubPeriodsPricer`,
      `AveragingRatePricer` and `CompoundingRatePricer` classes; renamed
      to `MultipleResetsCoupon`, `MultipleResetsPricer`,
      `AveragingMultipleResetsPricer` and
      `CompoundingMultipleResetsPricer`, respectively.
    - Deprecated the `SubPeriodsLeg` class; use `MultipleResetsLeg` instead.
    - Deprecated the `MultipleResetsCoupon` constructor without a reset
      schedule; use the other constructor.
    - Deprecated the `calendar`, `price`, `addQuote`, `addQuotes`,
      `clearQuotes`, `isValidQuoteDate` and `quotes` methods in the
      `CommodityIndex` class; use `fixingCalendar`, `fixing`, `addFixing`,
      `addFixings`, `clearFixings`, `isValidFixingDate` and `timeSeries`
      instead.
    - Deprecated the experimental `SpreadOption` and `KirkSpreadOptionEngine`
      classes; use `BasketOption` and `KirkEngine` instead.
    - Deprecated the `TransformedGrid` and `LogGrid` classes and the
      `CenteredGrid`, `BoundedGrid` and `BoundedLogGrid` functions; use
      the new FD framework instead.
    - Deprecated the `PdeOperator` and `BSMOperator` classes; use the new
      FD framework instead.
    - Deprecated the `PdeSecondOrderParabolic`, `PdeConstantCoeff`,
      `PdeBSM` and `GenericTimeSetter` classes; use the new FD framework
      instead.
    - Deprecated the `hasHistory`, `getHistory`, `clearHistory`,
      `hasHistoricalFixing` and `setHistory` in the `IndexManager` class;
      use `Index::hasHistoricalFixing`, `Index::timeSeries`,
      `Index::clearFixings`, `Index::hasHistoricalFixing` and
      `Index::addFixings` instead.
    - Deprecated the `notifier` method in the `IndexManager` class;
      register with the relevant index instead.
    - Deprecated one of the `AssetSwap` constructors; use the other overload.
    - Deprecated the `fcn` and `jacFcn` methods in the
      `LevenbergMarquardt` class; they are for internal use only.
    - Deprecated the `indexIsInterpolated` parameter in YoY inflation
      curve constructors; use another overload.  Fixings will be
      interpolated by coupons instead, so curves and indexes will only be
      asked for fixing at the start of a month.
    - Deprecated the `indexIsInterpolated` method and the
      `indexIsInterpolated_` data member in the
      `YoYInflationTermStructure` class.
    - Deprecated the `DatedOISRateHelper` class; use `OISRateHelper`
      instead.

    Thanks go also to Eugene Toder, Ben Watson
    and the XAD team for miscellaneous
    smaller fixes, improvements or reports.

    <strong>Release 1.36 - October 14th, 2024</strong>

    PORTABILITY
    - **New minimum C++ standard:** starting from this release, a compiler
      supporting C++17 is required.  Passing `--enable-std-classes` to
      `configure` now causes `std::any` and `std::optional` to be used.
    - **End of support:** related to the above, and as announced since
      release 1.32, this release drops support Visual C++ 2015, g++ up to
      version 6.x, and clang up to version 4.  Also, given the testing
      environments available on GitHub actions, clang 5 and 6 are no
      longer available to us for testing, and the same holds for g++ 7.
      Therefore, it is suggested to upgrade to a newer version if
      possible.
    - **End of support:** this release also removes the configure switch
      that allowed to use `boost::tuple`, `boost::function` and
      `boost::bind` instead of their `std` counterparts; the `std` classes
      were already the default since release 1.32.  The corresponding
      classes in the `ext` namespace are now deprecated.
    - **Future change of default:** in a couple of releases, we're going
      to switch the default for `ext::any` and `ext::optional` from the
      Boost implementation to the standard one.

    DATES AND CALENDARS
    - Added `startOfMonth` and `isStartOfMonth` methods to both `Date` and
    `Calendar`; thanks to Francois Botha.
    - Added specialized Warsaw Stock Exchange (WSE) calendar to Poland;
      thanks to Marcin Bogusz.
    - Added a new one-off holiday to South Korean calendar; thanks to
      Jongbong An.

    CASH FLOWS
    - Made` OvernightIndexedCouponPricer` public and renamed to
      `CompoundingOvernightIndexedCouponPricer`, and moved
      `ArithmeticAveragedOvernightIndexedCouponPricer` from experimental
      to core library; thanks to Ralf Konrad Eckel.

    INDEXES
    - **Possibly breaking:** inherited the `Index` class from `Observer`
      and added a virtual `pastFixing` method.  If you inherited a class
      from both `Index` and `Observer`, change your code to avoid
      inheriting twice from `Observer`.  Thanks to Ralf Konrad Eckel.
    - Added currency information to `EquityIndex`; thanks to Ralf Konrad
      Eckel.

    INFLATION
    - Inflation indexes are now better at deciding when to forecast;
      also added a `needsForecast` method that makes the
      information available.
    - Added `CPI::laggedYoYRate`; also, `YoYInflationCoupon`,
      `yoyInflationLeg`, `CappedFlooredYoYInflationCoupon`,
      `YearOnYearInflationSwap`, `MakeYoYInflationCapFloor`,
      `YearOnYearInflationSwapHelper`, `YoYOptionletHelper` and the
      experimental `YoYCapFloorTermPriceSurface` and
      `InterpolatedYoYCapFloorTermPriceSurface` can now take an explicit
      `CPI::InterpolationType` parameter instead of relying on the index
      being defined as interpolated or not.  This is a first
      step in removing interpolation from `YoYInflationIndex` and moving
      it into the coupons where it belongs.
    - Added method to YoY inflation index returning the date of the last
      available fixing.

    TERM STRUCTURES
    - Allow passing a pricer to the constructor of the `OISRateHelper` and
      `DatedOISRateHelper` classes; this makes it possible to
      use arithmetic averaging of overnight rates.
    - Allow custom constraint in non-linear fitting methods; thanks to Kai
      Lin.
    - Allow creating a swap helper with frequency "Once".
    - The `GlobalBootstrap` constructor can now take an optional optimizer
      and end criteria, allowing for better configuration; thanks to
      Eugene Toder.

    VOLATILITY
    - Added exact Bachelier implied-vol formula from Jäckel's paper; thanks
      to Peter Caspers.


    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.31:
      - the `BlackVanillaOptionPricer` typedef;
      - the constructors of `CPICoupon` taking a `spread` parameter, its
        `spread` method, and its protected `spread_` data member;
      - the `withSpreads` method of `CPILeg`;
      - the protected `adjustedFixing` method and `spread_` data member of
        `CPICouponPricer`;
      - the `YYAUCPIr`, `YYEUHICPr`, `YYFRHICPr`, `YYUKRPIr`, `YYUSCPIr`
        and `YYZACPIr` indexes and the experimental `YYGenericCPIr` class;
      - the constructor of `YoYInflationIndex` taking a `ratio` parameter;
      - a couple of constructors of `ForwardRateAgreement`;
      - the empty files `ql/math/curve.hpp`, `ql/math/lexicographicalview.hpp`,
        `ql/termstructures/yield/drifttermstructure.hpp`
        and `ql/patterns/composite.hpp`;
      - the `const_iterator` and `const_value_iterator` typedefs in the
        `Garch11` class;
      - the `const_time_iterator`, `const_value_iterator`,
        `const_reverse_time_iterator` and `const_reverse_value_iterator`
        typedefs and the `cbegin_values`, `cend_values`, `crbegin_values`,
        `crend_values`, `cbegin_time`, `cend_time`, `crbegin_time` and
        `crend_time` methods of the `TimeSeries` class;
      - the `base`, `increment`, `decrement`, `advance` and `distance_to`
        method of the `step_iterator` class.
    - Deprecated `ext::function`, `ext::bind`, `ext::ref`, `ext::cref`,
      `ext::placeholders`, `ext::tuple`, `ext::make_tuple`, `ext::get` and
      `ext::tie`; use the corresponding `std::` classes and functions
      instead.
    - Deprecated the `ArithmeticAverageOIS`, `MakeArithmeticAverageOIS`
      and `ArithmeticOISRateHelper` classes; use `OvernightIndexedSwap`,
      `MakeOIS` and `OISRateHelper` instead.
    - Deprecated the `YoYInflationCoupon`, `yoyInflationLeg`,
      `CappedFlooredYoYInflationCoupon`, `YearOnYearInflationSwap`,
      `MakeYoYInflationCapFloor`, `YearOnYearInflationSwapHelper`,
      `YoYOptionletHelper`, `YoYCapFloorTermPriceSurface` and
      `InterpolatedYoYCapFloorTermPriceSurface` constructors that don't
      take an explicit CPI interpolation type.
    - Deprecated the `getInfo` method of `LevenbergMarquardt`; inspect the
      result of `minimize` instead.
    - Deprecated the
      `ql/experimental/averageois/averageoiscouponpricer.hpp` file;
      include `ql/cashflows/overnightindexedcouponpricer.hpp` instead.
    - Deprecated the somewhat out-of-scope and experimental
      `CreditRiskPlus`, `SensitivityAnalysis`, `aggregateNPV`,
      `parallelAnalysis` and `bucketAnalysis`.

    Thanks go also to Jonathan Sweemer, Eugene Toder, Ralf Konrad
    Eckel, Tony Wang and the XAD team for miscellaneous smaller fixes,
    improvements or reports.

    <strong>Release 1.35 - July 23rd, 2024</strong>

    PORTABILITY
    - **Future end of support:** as announced since release 1.32, this
      release is the last to support Visual C++ 2015, g++ up to version
      6.x, and clang up to version 4; support for those compilers will be
      dropped in next release, 1.36, about three months from now.  From
      that point onwards, this will allows us to enable the use of C++17
      in the code base.  Also, given the testing environments available on
      GitHub actions, clang 5 and 6 are no longer available to us for
      testing, and the same holds for g++ 7.  Therefore, it is suggested
      to upgrade to a newer version if possible.
    - **Future end of support:** at the same time as the above, we'll also
      remove the configure switch that allows to use `boost::tuple`,
      `boost::function` and `boost::bind` instead of their `std`
      counterparts; the `std` classes are already the default since
      release 1.32.
    - The `config.hpp` generated by cmake now behaves like the one
      generated by autotools and provides values for the defines so that
      they can be used in `static_assert`.  Thanks to Tom
      Anderson for the heads-up.

    CALENDARS
    - Some fixes for the Chilean calendar; thanks to Eugene Toder.
    - Better NFP/SIFMA rule for Good Friday in U.S. government bond
      calendar; thanks to Eugene Toder.
    - Updated Indian NSE holidays for 2024; thanks to Fredrik Gerdin
      Börjesson.
    - Some fixes for the Mexican calendar; thanks to Lucas Dias.

    CASH FLOWS
    - Added lookback days, lockout days and observation shift to
      overnight-indexed coupons; thanks to Marcin Rybacki.
      The same parameters were propagated to
      overnight-indexed swaps and to the corresponding helpers.
    - Added the `hasFixed` method to IBOR coupons that detects whether
      they have fixed or still need to be forecast; thanks to Tom Anderson.

    INSTRUMENTS
    - Overnight index futures didn't manage a start date falling on a
      holiday; this is now fixed.  Thanks to GitHub user
      `JustCallMeDavid` for the heads-up.
    - Callable bonds didn't account for nominal when calculating OAS; this
      is now fixed.  Thanks to Hristo Raykov.
    - For European swaption, sometimes the price is quoted as a forward
      price to be paid at exercise time.  Such a quoted price can now be
      used for implied-volatility calculation. The forward price is also
      returned by the Black and Bachelier swaption engines as an
      additional result.

    RANDOM NUMBERS
    - Added the fast `ZigguratGaussianRng` generator; thanks to Ralf
      Konrad Eckel.

    TERM STRUCTURES
    - Fix treatment of custom end date in `FuturesRateHelper`.
    - Add possibility to reset guess in fitted bond curves.
      Thanks to GitHub user `klin333` for the suggestion.

    UTILITIES
    - Overloaded `Handle` and `RelinkableHandle` constructors on lvalue
      and rvalue references for performance; thanks to Jonathan Sweemer.

    TOOLS
    - Better benchmark utility; thanks to Jacques du Toit.

    EXAMPLES
    - Reworked bond example.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.30:
      - the `DividendVanillaOption` and `DividendBarrierOption` classes;
      - the constructor of `AnalyticDividendEuropeanEngine` taking only a
        process and no dividends;
      - the `SwaptionVolCube1`, `SwaptionVolCube1a`, `SwaptionVolCube1x`
        and `SwaptionVolCube2` typedefs and the empty headers
        `ql/experimental/volatility/swaptionvolcube1.hpp`,
        `ql/experimental/volatility/swaptionvolcube1a.hpp` and
        `ql/experimental/volatility/swaptionvolcube2.hpp`;
      - the `setCommon` method of `CappedFlooredYoYInflationCoupon`.
    - Deprecated the constructor of `DatedOISRateHelper` taking a forward
      start; use the other overload instead.
    - Deprecated the specialized `Bibor9M`, `Euribor2W`, `Euribor3W`,
      `Euribor2M`, `Euribor4M`, `Euribor5M`, `Euribor7M`, `Euribor8M`,
      `Euribor9M`, `Euribor10M`, `Euribor11M`, `Euribor365_SW`,
      `Euribor365_2W`, `Euribor365_3W`, `Euribor365_1M`, `Euribor365_2M`,
      `Euribor365_3M`, `Euribor365_4M`, `Euribor365_5M`, `Euribor365_6M`,
      `Euribor365_7M`, `Euribor365_8M`, `Euribor365_9M`, `Euribor365_10M`,
      `Euribor365_11M`, `Euribor365_1Y`, `EURLiborSW`, `EURLibor2W`,
      `EURLibor2M`, `EURLibor4M`, `EURLibor5M`, `EURLibor7M`,
      `EURLibor8M`, `EURLibor9M`, `EURLibor10M`, `EURLibor11M`; if needed,
      use the corresponding generic class and pass the tenor (for
      instance, `Euribor(4 * Months)`).
    - Renamed `EuriborSW` to `Euribor1W` and deprecated the old name.
    - Deprecated the constructor of `RelinkableHandle` taking a raw
      pointer.

    Thanks go also to Dmitri Goloubentsev, Eleanor Green, Tom
    Anderson, Peter Caspers, Jonghee Lee, Ralf Konrad Eckel and the
    XAD team for miscellaneous fixes, improvements or reports.

    <strong>Release 1.34 - April 24th, 2024</strong>

    PORTABILITY
    - **Future end of support:** as announced in release 1.32, we're
      targeting next release (1.35) as the last to support Visual C++
      2015, g++ up to version 6.x, and clang up to version 4; support for
      those compilers will be dropped in release 1.36, about six months
      from now.  From that point onwards, this will allows us to enable
      the use of C++17 in the code base.
      Also, given the testing environments available on GitHub actions,
      clang 5 is already no longer available to us for testing, and in a
      while the same will hold for clang 6 and g++ 7.  Therefore, it is
      suggested to upgrade to a newer version if possible.
    - **Future end of support:** at the same time as the above, we'll also
      remove the configure switch that allows to use `boost::tuple`,
      `boost::function` and `boost::bind` instead of their `std`
      counterparts; the `std` classes are already the default since
      release 1.32.
    - Generate and install pkg-config files in CMake builds; thanks to
      GitHub user jez6.

    DATES AND CALENDARS
    - Prevent `Calendar::advance` from returning the business end of month
      (instead of the calendar end) when `endOfMonth` is `true` and
      `convention` is `Unadjusted`; thanks to GitHub user DeimosXing.
    - Add good Friday holiday for SOFR fixing; thanks to GitHub user
      PaulXiCao.
    - Properly restrict São Paulo city holiday to years before 2022;
      thanks to Marco Bruno Ferreira Vasconcellos.
    - Update holidays for 2023 and 2024 in calendars for India, Thailand,
      Singapore and South Africa; thanks to Fredrik Gerdin Börjesson.

    CASH FLOWS
    - Fixed a couple of cases in which notifications were not forwarded
      properly; thanks to GitHub user djkrystul for the heads-up.
    - Fixed past payment dates and added support for OIS in
      `LinearTsrPricer`; thanks to Peter Caspers.

    INSTRUMENTS
    - Swaptions can now take an OIS as underlying; thanks to Guillaume
      Horel  and Peter Caspers.  So far, only
      `BlackSwaptionEngine` manages OIS explicitly; other engines might
      work and return approximated values.
    - More methods in `MakeOIS` and `MakeVanillaSwap`; thanks to Eugene Toder.
    - More methods in the `BondFunctions` class now support either clean or
      dirty prices; thanks to Francois Botha.
    - The `basisPointValue` and `yieldValueBasisPoint` methods in
      `BondFunctions` didn't always manage the settlement date correctly;
      this is now fixed (thanks to GitHub user jez6).
    - Add `Custom` to `Futures::Type` enumeration to allow passing custom
      dates to futures; thanks to Eugene Toder.

    TERM STRUCTURES
    - Inflation curves can now be built passing an explicit base date
      (corresponding to the last published fixing) instead of an
      observation lag.
    - Fixed calculation of year fraction under Actual/365 Canadian
      convention in `FuturesRateHelper`; thanks to GitHub user PaulXiCao.
    - Fixed settlement date calculation in cross-currency basis-swap rate
      helpers in some cases; thanks to Marcin Rybacki
      for the fix and to Aleksis Ali Raza for the heads-up.

    MATH
    - Handle non-equidistant grids and arbitrary dimensions in Laplace
      interpolation; thanks to Peter Caspers.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.29:
      - The `argument_type`, `first_argument_type`, `second_argument_type`
        and `result_type` typedefs in several classes;
      - The overloads of zero-rate inflation index constructors taking an
        `interpolated` argument;
      - The `interpolated` method and the protected `interpolated_` data
        member in `InflationIndex`;
      - The overload of `CashFlows::npvbps` taking the result by reference;
      - The protected `rateCurve_` method in `InflationCouponPricer`;
      - The `ThreadKey` typedef;
      - The empty header `ql/experimental/credit/riskybond.hpp`.
    - Deprecated the constructors of `InflationTermStructure`,
      `ZeroInflationTermStructure`, `YoYInflationTermStructure`,
      `InterpolatedZeroInflationCurve`, `InterpolatedYoYInflationCurve`,
      `PiecewiseZeroInflationCurve` and `PiecewiseYoYInflationCurve`
      taking an observation lag; use the overloads taking an explicit base
      date instead.
    - Deprecated the `Bond::yield`, `BondFunctions::atmRate`,
      `BondFunctions::yield` and `BondFunctions::zSpread` overloads taking
      a clean price as a number; use the overloads taking a `Bond::Price`
      instead.
    - Deprecated the `InflationTermStructure::setSeasonality` overload
      taking no arguments; use the overload taking a pointer and pass an
      empty one to remove seasonality.
    - Deprecated the `InflationTermStructure::setBaseRate` method; set
      `baseRate_` directly if needed.
    - Deprecated the `Swaption::underlyingSwap` and
      `SwaptionHelper::underlyingSwap` methods; use `underlying` instead.
    - Deprecated the broken `FixedRateBondHelper::fixedRateBond` and
      `CPIBondHelper::cpiBond` methods and the corresponding
      `fixedRateBond_` and `cpiBond_` data members.

    Thanks go also to Isuru Fernando, Viktor Zhou, Stephen Dacek, Yi
    Jiang, Jonathan Sweemer, Eugene Toder, the XAD team and GitHub
    user PaulXiCao and klin333 for miscellaneous fixes, improvements
    or reports.

    <strong>Release 1.33 - January 22nd, 2024</strong>

    PORTABILITY
    - **Future end of support:** as announced in release 1.32, we're
      targeting the future release 1.35 as the last to support Visual C++
      2015, g++ up to version 6.x, and clang up to version 4; support for
      those compilers will be dropped in release 1.36, about nine months
      from now.  From that point onwards, this will allows us to enable
      the use of C++17 in the code base.
    - **Future end of support:** at the same time as the above, we'll also
      remove the configure switch that allows to use `boost::tuple`,
      `boost::function` and `boost::bind` instead of their `std`
      counterparts; the `std` classes are already the default since
      release 1.32.
    - Added CMake presets for Apple; thanks to Christian Köhnenkamp.

    DATES AND CALENDARS
    - Added New Year's Eve as a holiday to the Chilean calendar; thanks to
      GitHub user MoixaStrikes.
    - Added Black Awareness Day as a holiday to the Brazilian calendar
      starting from 2024; thanks to GitHub user PaulXiCao.
    - Added Inauguration Day as a holiday to the Mexican calendar starting
      from 2024; thanks to Fredrik Gerdin Börjesson.
    - Added Chinese holidays for 2024; thanks to Cheng Li.
    - Updated list of known ECB dates; thanks to GitHub user PaulXiCao.
    - Added Thailandese and Taiwanese holidays up to 2024; thanks to
      Fredrik Gerdin Börjesson.
    - Added a one-time holiday to the South African calendar; thanks to
      Francois Botha.

    MODELS
    - Added support for angled contour shift integrals to Heston model;
      thanks to Klaus Spanderen.

    INSTRUMENTS
    - Allow different calendars and frequencies for different legs in
      `MakeOIS` and `OISRateHelper`; thanks to Eugene Toder.
    - Enabled negative payment lag in swap legs; thanks to GitHub user
      Stoozy.

    RANDOM NUMBERS
    - Added Burley 2020 scrambled Sobol sequence generator; thanks to
      Peter Caspers.

    TESTS
    - Use automated registration of unit tests; thanks to Siddharth
      Mehrotra.
    - Added a few fuzzing tests; thanks to Nathaniel Brough.
    - Improved test coverage for a few classes; thanks to GitHub user
      PaulXiCao.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.28:
      - The overload of `CallableBond::impliedVolatility` taking an NPV as target.
      - The constructor of `AmortizingFixedRateBond` taking a sinking frequency.
      - The constructor of `AmortizingFixedRateBond` taking a vector of
        `InterestRate` instances.
      - The constructor of `FixedRateBond` taking start date, maturity
        date etc. instead of a schedule.
      - The constructor of `FixedRateBond` taking a vector of
        `InterestRate` instances.
      - The constructor of `FloatingRateBond` taking start date, maturity
        date etc. instead of a schedule.
      - The constructor of `CPICapFloor` taking a handle to an
        interest-rate index.
      - The `CPICapFloor::inflationIndex` method.
      - The `infIndex` data member of the `CPICapFloor::arguments` class.
      - A redundant constructor of `SabrSmileSection`.
      - The empty headers
        `ql/experimental/amortizingbonds/amortizingcmsratebond.hpp`,
        `ql/experimental/amortizingbonds/amortizingfixedratebond.hpp` and
        `ql/experimental/amortizingbonds/amortizingfloatingratebond.hpp`.
    - Deprecated the constructor of `Currency` and `Currency::Data` taking
      a format string, and the `Currency::format` method.

    Thanks go also to Yi Jiang, Hoang Giap Vu, Jonathan Sweemer and
    the XAD team for smaller fixes and improvements.

    <strong>Release 1.32 - October 20th, 2023</strong>

    PORTABILITY
    - **Possibly breaking change:** the protected `evaluationDate_` data
      member of the `SwaptionVolatilityDiscrete` class was renamed to
      `cachedReferenceDate_`.
    - **Future end of support:** we're targeting the future release 1.35
      as the last to support Visual C++ 2015, g++ up to version 6.x, and
      clang up to version 4; support for those compilers will be dropped
      in release 1.36, about one year from now.  From that point onwards,
      this will allows us to enable the use of C++17 in the code base.
    - **Future end of support:** at the same time as the above, we'll also
      remove the configure switch that allows to use `boost::tuple`,
      `boost::function` and `boost::bind` instead of their `std`
      counterparts; starting from this release, the `std` classes are
      already the default.
    - Reorganized the CMake presets; thanks to the XAD team.

    CASH FLOWS
    - All cash flows are now lazy; thanks to Peter Caspers.

    INSTRUMENTS
    - Overnight-indexed swaps can now have different schedules and
      nominals on the two legs; thanks to Tom Anderson.
    - Margrabe options, compound options and chooser options were moved
      from experimental to core.
    - Introduced common base class `FixedVsFloatingSwap` for vanilla swap
      and overnight-indexed swaps; this will be used in the future to help
      a few existing swap engines support OIS.
    - Added optional `redemptions` argument to amortizing bond
      constructors.  This allows them to be used for pools of loans where a
      certain proportion of the underlying loans are subject to defaults
      and losses.  Thanks to Gyan Sinha.
    - It is now possible to manually prune the notification tree for swaps
      and bonds if one knows that the cashflows won't change pricer;
      thanks to Peter Caspers.

    MODELS
    - Fixed the algorithm to add instruments to the calibration set of the
      Markov model; thanks to Peter Caspers for the fix and
      Giuseppe Trapani for the heads-up.

    TERM STRUCTURES
    - Time-to-date conversion in some swaption volatility classes could
      return the wrong date before the first exercise date; this is now
      fixed, thanks to Peter Caspers.
    - It's now possible to specify the maximum number of iteration for the
      solver inside a bootstrapped term structure; thanks to Jonathan
      Sweemer for the change and Daniel Ángeles Ortiz
      for the heads-up.
    - Reduced the number of notifications for bootstrap helpers; thanks to
      Peter Caspers.

    RANDOM NUMBERS
    - Added the xoshiro265** random-number generator; thanks to Ralf
      Konrad.  It is faster than the Mersenne Twister and
      might be used as default in the future.

    EXAMPLES
    - The code of the examples has been modernized a bit; thanks to
      Jonathan Sweemer.

    PATTERNS
    - Avoided a possible crash when using observables in a multi-threaded
      setting; thanks to Peter Caspers.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.27:
      - The `QL_NULL_INTEGER`, `QL_NULL_REAL`, `QL_NOEXCEPT`,
        `QL_CONSTEXPR` and `QL_USE_STD_UNIQUE_PTR` macros.
      - The `MultiCurveSensitivities` class.
      - The `constant`, `identity`, `square`, `cube`, `fourth_power`,
        `add`, `subtract`, `subtract_from`, `multiply_by`, `divide`,
        `divide_by`, `less_than`, `greater_than`, `greater_or_equal_to`,
        `not_zero`, `not_null`, `everywhere`, `nowhere`, `equal_within`,
        `clipped_function`, `clip`, `composed_function`, `compose`,
        `binary_compose3_function` and `compose3` functors.
      - The `PdeShortRate`, `ShoutCondition`, `FDShoutCondition`,
        `FDStepConditionEngine` and `FDEngineAdapter` classes from the old
        finite-differences framework.
      - The `dsd::inner_product` function.
      - The `FDDividendEngineBase`, `FDDividendEngineMerton73`,
        `FDDividendEngineShiftScale` and `FDDividendEngine` pricing
        engines.
      - The empty headers `ql/auto_ptr.hpp`, `ql/math/initializers.hpp`,
        `ql/methods/finitedifferences/americancondition.hpp`,
        `ql/methods/finitedifferences/onefactoroperator.hpp`,
        `ql/pricingengines/vanilla/fddividendshoutengine.hpp`,
        `ql/pricingengines/vanilla/fdshoutengine.hpp` and
        `ql/utilities/disposable.hpp`.
    - Deprecated the `StandardFiniteDifferenceModel`,
      `StandardSystemFiniteDifferenceModel` and `StandardStepCondition`
      typedefs; define your own typedefs if needed.
    - Deprecated the `FDVanillaEngine`, `FDMultiPeriodEngine`,
      `StepConditionSet`, `ParallelEvolverTraits`, `ParallelEvolver` and
      `SampledCurve`classes and the `BSMTermOperator` and
      `SampledCurveSet` typedefs; use the new finite-differences framework
      instead.
    - Deprecated the `QL_NULL_FUNCTION` macro; to check if a function is
      empty, use it in a bool context instead.
    - Deprecated the now empty headers
      `ql/experimental/exoticoptions/margrabeoption.hpp`,
      `ql/experimental/exoticoptions/analyticcomplexchooserengine.hpp`,
      `ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.hpp`,
      `ql/experimental/exoticoptions/analyticcompoundoptionengine.hpp`,
      `ql/experimental/exoticoptions/simplechooseroption.hpp`,
      `ql/experimental/exoticoptions/compoundoption.hpp`,
      `ql/experimental/exoticoptions/analyticamericanmargrabeengine.hpp`,
      `ql/experimental/exoticoptions/analyticsimplechooserengine.hpp`,
      `ql/experimental/exoticoptions/complexchooseroption.hpp`,
      `ql/experimental/termstructures/multicurvesensitivities.hpp`,
      `ql/methods/finitedifferences/shoutcondition.hpp`,
      `ql/methods/finitedifferences/pdeshortrate.hpp`,
      `ql/pricingengines/vanilla/fddividendengine.hpp`,
      `ql/pricingengines/vanilla/fdstepconditionengine.hpp`,
      `ql/pricingengines/vanilla/fdconditions.hpp` and
      `ql/models/marketmodels/duffsdeviceinnerproduct.hpp`.

    Thanks go also to Jonathan Sweemer, Ralf Konrad, Klaus Spanderen,
    Peter Caspers, Tom Anderson, Fredrik Gerdin Börjesson, Guillaume
    Horel and the XAD team for a number of smaller fixes and
    improvements.

    <strong>Release 1.31.1 - July 24th, 2023</strong>

    QuantLib 1.31.1 is a bug-fix release for QuantLib 1.31.

    It fixes a regression that could cause a segmentation fault when
    bootstrapping an interest-rate curve using OIS rates.

    <strong>Release 1.31 - July 18th, 2023</strong>

    PORTABILITY
    - **Future end of support:** as announced in the notes for the
      previous release, after this release using `std::tuple`,
      `std::function` and `std::bind` (instead of their `boost`
      counterparts) will become the default.  If you're using `ext::tuple`
      etc. in your code (which is suggested), this should be a transparent
      change.  If not, you'll still be able to choose the `boost` versions
      via a configure switch for a while; but we do suggest you start
      using `ext::tuple` etc. in the meantime.
    - The cmake build now creates (but doesn't install) a
      `quantlib-config` script that can be used to retrieve flags for
      compiling QuantLib-dependent projects; thanks to Christian
      Köhnenkamp.
    - A number of Boost classes and functions only used internally were
      replaced by their standard-library equivalent; thanks to Jonathan
      Sweemer.

    PATTERNS
    - **Optional change of behavior:** by default, the `LazyObject`
      class forwards only one notification after recalculating and
      silently ignores the others.  In some edge cases, this could
      lead to objects not being updated.  It's now possible to enable
      a different behavior where all notifications are forwarded; the
      new behavior can be chosen at compile time via the configure
      option `--disable-faster-lazy-objects` (or disabling
      `QL_FASTER_LAZY_OBJECTS` in cmake or `userconfig.hpp`) or at run
      time by calling
      `LazyObject::Defaults::instance().alwaysForwardNotifications()`.
      This might cause a slow down, so you're invited to try it out
      and report on the mailing list.  If there are no problems, the
      new behavior might become the default in future releases.  Also,
      a new configure option `--enable-throwing-in-cycles`
      (`QL_THROW_IN_CYCLES` in cmake or `userconfig.hpp`) is
      optionally available; when both this option and the new behavior
      are enabled, notifications cycles involving a lazy object will
      throw an exception.  It is suggested to try enabling the option
      and removing such loops, if any.  Thanks to Peter Caspers for
      the change and to Ralf Konrad, Jonathan Sweemer and GitHub user
      `djkrystul` for feedback.

    DATE/TIME
    - **Change of behavior:** when the end-of-month option is true, the
      constructor of a schedule no longer adjust to the end of their month
      the effective date and the termination date if they were passed
      explicitly.  Thanks to Hristo Raykov.
    - Added separate US SOFR calendar to manage days that are business
      days for the US government bond market but in which SOFR doesn't
      fix; for instance, Good Friday 2023.  Thanks to Tom
      Anderson for reporting the issue.
    - Fixed some rolling rules for South Korean calendar; thanks to Jonghee
      Lee.
    - Fixed incorrect 2023 holidays for Hong Kong calendar; thanks to
      Fredrik Gerdin Börjesson.
    - Added Hong Kong holidays for 2021-2024; thanks to Rémy Frèrebeau
      and Binrui Dong.
    - Added Singapore holidays for 2019-2023; thanks to Rémy Frèrebeau.
    - Added Indian holidays for 2021-2025; thanks to Fredrik Gerdin
      Börjesson.
    - Added Taiwanese holidays for 2020-2023; thanks to GitHub user `jsmx`.
    - Added a few election days for South African and South Korean
      calendar; thanks to Fredrik Gerdin Börjesson.
    - Updated Danish calendar; starting in 2024, General Prayer Day will
      no longer be a holiday.  Thanks to Fredrik Gerdin Börjesson.
    - Fixed a few holidays in Finland and Singapore calendars; Thanks to
      Fredrik Gerdin Börjesson.
    - More day counters (Act/364, Act/365.25, Act/366) now take into
      account intraday resolution when enabled; thanks to Klaus Spanderen.

    CASH FLOWS
    - The accrued amount for CPI coupons is now correctly based on the
      index ratio at settlement date.  An inspector for retrieving the
      index ratio at a given date was also added.
    - Enabled the use of normal volatilities in Hagan pricer for CMS
      coupons; thanks to Andre Miemiec.
    - Floating-rate coupons are now lazy; thanks to Peter Caspers.

    INDEXES
    - When passed a tenor of 7 or 14 business days, interest-rate indexes
      would wrongly convert it to 1 or 2 weeks.  This is now fixed.
      Thanks to Eugene Toder for reporting the issue.
    - Added DESTR and SWESTR indexes; thanks to Fredrik Gerdin Börjesson.
    - Added CORRA index; thanks to GitHub user `AND2797`.
    - When an YoY inflation index is calculated as a ratio, the underlying
      inflation index is available through an inspector and its fixings
      are used to calculate the fixing of the YoY index.

    INSTRUMENTS
    - Instruments now register automatically with the global evaluation
      date and are notified when it changes.  This makes sense in general
      (if the evaluation date changes, you probably want to recalculate)
      and can also help avoid some edge cases when lazy objects only
      forward their first notification.
    - Allowed passing a schedule without a regular tenor to callable
      fixed-rate bonds; thanks to Hristo Raykov for the
      fix and to GitHub user `OleBueker` for reporting the issue.
    - Reorganized the constructors of FRA instruments; thanks to Jake Heke.

    TERM STRUCTURES
    - Ensures that upfront CDS helpers update correctly when the global
      evaluation date changes; thanks to Andrea Pellegatta
      for the fix and to GitHub user `bkhoor` for reporting the issue.
    - Allow more maturities for SOFR quarterly contract in SOFR futures
      rate helper; thanks to Jake Heke.
    - Added constructor for date-dependent strikes to StrippedOptionlet;
      thanks to Peter Caspers.

    TEST SUITE
    - Global settings (such as the evaluation date) are now restored and
      index fixings are now cleaned automatically at the end of each test
      case, making it unnecessary to clean them up manually.  Thanks to
      Eugene Toder.
    - The parallel unit-test runner now passes the `--run_test=<filter>`
      option down to the underlying Boost.Test implementation.  Thanks to
      Eugene Toder.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.26:
      - The `CPICoupon` constructor taking a number of fixing days and its
        `indexObservation`, `adjustedFixing` and `indexFixing(date)` methods.
      - The `CPICashFlow` constructor taking a fixing date.
      - The `withFixingDays` methods of `CPILeg`.
      - The `ZeroInflationCashFlow` constructor taking a calendar and
        business-day convention.
      - The `LsmBasisSystem::PolynomType` typedef and the
        `MakeMCAmericanEngine::withPolynomOrder` method.
      - The `Observer::set_type` and `Observable::set_type` typedefs.
      - The `Curve` class.
      - The `LexicographicalView` class.
      - The `Composite` class.
      - The `DriftTermStructure` class.
    - Deprecated the various `time_iterator` and `value_iterator` types in
      `TimeSeries`, as well as methods returning them.  The more general
      `const_iterator` and `const_reverse_iterator` types can be used
      instead.
    - Deprecated the constructors of `CPICoupon` taking a spread, as well
      as its `spread` method, its protected `spread_` data member, and the
      `withSpreads` methods of `CPILeg`.
    - Deprecated the `adjustedFixing` method and the protected `spread_`
      data member of `CPICouponPricer`.
    - Renamed `BlackVanillaOptionPricer` to `MarketQuotedOptionPricer` and
      deprecated the old name.
    - Deprecated a couple of constructors of `ForwardRateAgreement`.
    - Deprecated the constructor of `YoYInflationIndex` taking a `ratio`.
      Also, deprecated explicit classes for YoY ratio indexes
      `YYGenericCPIr`, `YYAUCPIr`, `YYEUHICPr`, `YYFRHICPr`, `YYUKRPIr`,
      `YYUSCPIr` and `YYZACPIr`.
    - Deprecated the `base`, `increment`, `decrement`, `advance` and
      `distance_to` methods of the `step_iterator` class.

    Thanks go also to Jonathan Sweemer, Jose Garcia, Jake Heke, Eugene
    Toder, Binrui Dong, the Xcelerit Dev Team, Ralf Konrad, Tom
    Anderson and Fredrik Gerdin Börjesson for a number of smaller
    fixes and improvements.

    <strong>Release 1.30 - April 19th, 2023</strong>

    PORTABILITY
    - **Future end of support:** as announced in the notes for the
      previous release, after this release and the next, using
      `std::tuple`, `std::function` and `std::bind` (instead of their
      `boost` counterparts) will become the default.  If you're using
      `ext::tuple` etc. in your code (which is suggested), this should be
      a transparent change.  If not, you'll still be able to choose the
      `boost` versions via a configure switch for a while; but we do
      suggest you start using `ext::tuple` etc. in the meantime.
    - CMake builds now use a stricter warning level by default; thanks to
      Ralf Konrad.
    - Is it now possible to use `std::any` and `std::optional` (and the
      related `std::any_cast` and `std::nullopt`) instead of their `boost`
      counterparts by setting new compilation switches; thanks to Jonathan
      Sweemer.  Using the `std` classes requires C++17.  We
      expect the `boost` classes to remain the default for a while, but in
      the meantime we encourage to start using `ext::any` and
      `ext::optional` in preparation for a new default.

    DATE/TIME
    - Good Friday 2023 is now a business day for the US government bond
      calendar; thanks to Anastasiia Shumyk.
    - Added specialized Australian calendar for ASX; thanks to Trent
      Maetzold.
    - Fixed Turkish holidays between 2019 and 2023; thanks to Fredrik
      Gerdin Börjesson.
    - Added a few missing holidays to Danish calendar; thanks to Fredrik
      Gerdin Börjesson.
    - Added the Matariki holiday to the New Zealand calendar; thanks to
      Jake Heke.

    CASHFLOWS
    - Added a new equity cash flow class to model equity legs in total
      return swaps; thanks to Marcin Rybacki.  Quanto
      pricing is also supported.
    - Added an overloaded constructor for CPI coupons that allows to
      specify a base date instead of a base CPI value; thanks to Matthias
      Groncki.

    INSTRUMENTS
    - Added a new total-return swap; thanks to Marcin Rybacki.
      An equity-index class was also added to support
      this instrument.
    - The analytic engine for barrier options would return NaN for low
      values of volatility; this is now fixed.
    - The `VanillaOption` and `BarrierOption` classes can now be used to
      model vanilla and barrier options with discrete dividends; the
      future dividends (not being part of the terms and conditions of the
      contract) should be passed to the pricing engine instead.
    - Added analytical Greeks to Bjerksund-Stensland engine; thanks to
      Klaus Spanderen.

    INDEXES
    - Added UKHICP inflation index; thanks to Fredrik Gerdin Börjesson.

    TERM STRUCTURES
    - Renamed `SwaptionVolCube1`, `SwaptionVolCube1x`, `SwaptionVolCube1a`
      and `SwaptionVolCube2` to `SabrSwaptionVolatilityCube`,
      `XabrSwaptionVolatilityCube`, `NoArbSabrSwaptionVolatilityCube` and
      `InterpolatedSwaptionVolatilityCube`, respectively; thanks to
      Ignacio Anguita.  The old names are deprecated but
      still available for a few releases.
    - Ensure that inflation curves are re-bootstrapped correctly when
      seasonality is added.

    MODELS
    - Moved the Heston SLV model from experimental to main; thanks to
      Klaus Spanderen.

    MATH
    - Added a few overloads to Array and Matrix operators taking rvalue
      references for increased speed; thanks to Jonathan Sweemer.

    DEPRECATED FEATURES
    - **Removed** features deprecated in version 1.24:
      - the protected `spreadLegValue_` data member of `BlackIborCouponPricer`;
      - the `WulinYongDoubleBarrierEngine` alias for `SuoWangDoubleBarrierEngine`;
      - the `settlementDate`, `incomeDiscountCurve`, `spotIncome`,
        `spotValue`, `impliedYield` and `forwardValue` methods of
        `ForwardRateAgreement`, as well as its protected
        `underlyingIncome_`, `underlyingSpotValue_`, `settlementDays_`,
        `payoff_` and `incomeDiscountCurve_` data members;
      - constructors for `InflationTermStructure`,
        `ZeroInflationTermStructure`, `InterpolatedZeroInflationCurve`,
        `PiecewiseZeroInflationCurve` taking an `indexIsInterpolated`
        parameter;
      - the `indexIsInterpolated` method of `InflationTermStructure` and
        its protected `indexIsInterpolated_` data member;
      - some overloaded constructors of `SofrFutureRateHelper`.
    - Deprecated the `DividendVanillaOption` and `DividendBarrierOption`
      classes; use `VanillaOption` and `BarrierOption` instead (see
      above).
    - Deprecated the constructor of `AnalyticDividendEuropeanEngine` that
      takes no dividend information; use the other overload instead.
    - Deprecated the names `SwaptionVolCube1`, `SwaptionVolCube1x`,
      `SwaptionVolCube1a` and `SwaptionVolCube2` (see above).
    - Deprecated the protected `setCommon` method of
      `CappedFlooredYoYInflationCoupon`.

    Thanks go also to Jonathan Sweemer, the Xcelerit Dev
    Team, Fredrik Gerdin Börjesson, Klaus
    Spanderen and Peter Caspers for a number
    of smaller fixes and improvements, and to Matthias Groncki
    and GitHub user `lukey8767` for raising issues.

    <strong>Release 1.29 - January 17th, 2023</strong>

    PORTABILITY
    - <b>End of support:</b> as announced in the notes for the previous
      release, this release no longer manages thread-local singletons via
      a user-provided `sessionId` function, and therefore the latter is no
      longer needed.  Instead, the code now uses the built-in language
      support for thread-local variables.  Thanks go to Peter Caspers.
    - **Future end of support:** as announced in the notes for the
      previous release, after the next couple of releases, using
      `std::tuple`, `std::function` and `std::bind` (instead of their
      `boost` counterparts) will become the default.  If you're using
      `ext::tuple` etc. in your code (which is suggested), this should be
      a transparent change.  If not, you'll still be able to choose the
      `boost` versions via a configure switch for a while; but we do
      suggest you start using `ext::tuple` etc. in the meantime.
    - Replaced internal usage of `boost::thread` with `std::thread`;
      thanks to Jonathan Sweemer.  This removed our last dependency on
      Boost binaries and makes it possible to compile QuantLib using a
      header-only Boost installation.
    - On Windows, it is now possible to use the MSVC dynamic runtime when
      using cmake by passing
      `-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL`
      on the command line; thanks to Jonathan Sweemer.  The
      static runtime remains the default.
    - It is now possible to build QuantLib with Intel's `icpx` compiler
      using cmake; thanks to Jonathan Sweemer.  Note that in order to get
      all the unit tests passing, `-fp-model=precise` must be added to
      `CMAKE_CXX_FLAGS`.

    DATE/TIME
    - Updated Chinese holidays for 2023; thanks to Cheng Li.
    - Added in-lieu holiday for Christmas 2022 to South-African calendar;
      thanks to Joshua Hayes.
    - Added King Charles III coronation holiday to UK calendar; thanks to
      Fredrik Gerdin Börjesson.
    - Added holiday for National Day of Mourning to Australian calendar;
      thanks to Fredrik Gerdin Börjesson.

    INSTRUMENTS
    - Added high performance/precision American engine based on
      fixed-point iteration for the exercise boundary; thanks to Klaus
      Spanderen.
    - Bonds with draw-down (i.e., increasing notionals) are now allowed;
      thanks to Oleg Kulkov.
    - Added `withIndexedCoupons` and `withAtParCoupons` methods to
      `MakeSwaption` for easier initialization; thanks to Ralf Konrad.
    - It is now possible to use the same pricing engine for vanilla and
      dividend vanilla options, or for barrier and dividend barrier
      options.

    INDEXES
    - Creating a zero inflation index as "interpolated" is now deprecated;
      thanks to Ralf Konrad.  The index should only return
      monthly fixings.  Interpolation is now the responsibility of
      inflation-based coupons.

    TERM STRUCTURES
    - The `ConstantCPIVolatility` constructor can now take a handle to a
      volatility quote, instead of just an immutable number.

    DEPRECATED FEATURES
    - <b>Removed</b> features deprecated in version 1.24:
      - the `createAtParCoupons`, `createIndexedCoupons` and
        `usingAtParCoupons` methods of `IborCoupon`;
      - the `RiskyBond` class and its subclasses `RiskyFixedBond` and
        `RiskyFloatingBond`;
      - the `CrossCurrencyBasisSwapRateHelper` typedef;
      - the `termStructure_` data member of `BlackCalibrationHelper`;
      - the static `baseCurrency` and `conversionType` data members of `Money`;
      - the `nominalTermStructure` method and the `nominalTermStructure_`
        data member of `InflationTermStructure`;
      - the constructor of the `UnitedStates` calendar not taking an
        explicit market.
    - Deprecated the `argument_type`, `first_argument_type`,
      `second_argument_type` and `result_type` typedefs in a number of
      classes; use `auto` or `decltype` instead.
    - Deprecated the constructors of `InflationIndex`,
      `ZeroInflationIndex`, `FRHICP`, `ZACPI`, `UKRPI`, `EUHICP`,
      `EUHICPXT`, `USCPI`, `AUCPI` and `GenericCPI` taking an
      `interpolated` parameter; use another constructor.
    - Deprecated the `interpolated` method and the `interpolated_` data
      member of `InflationIndex`.
    - Deprecated the `ThreadKey` typedef.  It was used in the signature of
      `sessionId`, which is no longer needed after the changes in the
      `Singleton` implementation.
    - Deprecated the `rateCurve_` data member of the
      `InflationCouponPricer` base class.  If you need it, provide it in
      your derived class.
    - Deprecated the `npvbps` function taking NPV and BPS as references.
      Use the overload returning a pair of `Real`s.

    Thanks go also to Matthias Groncki, Jonathan Sweemer
    and Nijaz Kovacevic for a number of smaller fixes
    and improvements, to the Xcelerit Dev Team for
    improvements to the automated CI builds, and to Vincenzo Ferrazzanno
    and GitHub users alienbrett, xuruilong100 and philippb90 for raising issues.

    <strong>Release 1.28 - October 25th, 2022</strong>

    PORTABILITY
    - <b>New language standard:</b> as announced in the notes for the
      previous release, this release started using some C++14 syntax.
      This should be supported by most compilers released in the past
      several years.
    - <b>End of support:</b> as announced in the notes for the previous
      release, this release is the last to manage thread-local singletons
      via a user-provided `sessionId` function.  Future releases will use
      the built-in language support for thread-local variables.
    - <b>Future end of support:</b> after the next two or three releases,
      using `std::tuple`, `std::function` and `std::bind` (instead of
      their `boost` counterparts) will become the default.  If you're
      using `ext::tuple` etc. in your code (which is suggested), this
      should be a transparent change.  If not, you'll still be able to
      choose the `boost` versions via a configure switch for a while.

    DATE/TIME
    - Added Act/366 and Act/365.25 day counters; thanks to Ignacio Anguita.
    - Added H.M. the Queen's funeral to the UK calendars; thanks to Tomass
      Wilson.

    INSTRUMENTS
    - Amortizing bonds were moved out of the experimental folder.  Also, a
      couple of utility functions were provided to calculate amortization
      schedules and notionals.

    PRICING ENGINES
    - Fixed results from `COSHestonEngine` in the case of an option with
      short time to expiration and deep ITM or deep OTM strike prices;
      thanks to Ignacio Anguita.
    - The ISDA engine for CDS could calculate the fair upfront with the
      wrong sign; this is now fixed, thanks to Gualtiero Chiaia.

    TERM STRUCTURES
    - The constructor for `OISRateHelper` now allows to specify the
      `endOfMonth` parameter; thanks to Guillaume Horel.

    FINITE DIFFERENCES
    - Fixed computation of cds boundaries in `LocalVolRNDCalculator`;
      thanks to GitHub user mdotlic.

    EXPERIMENTAL FOLDER

    The `ql/experimental` folder contains code whose interface is not
    fully stable, but is released in order to get user
    feedback. Experimental classes make no guarantees of backward
    compatibility; their interfaces might change in future releases.

    - <b>Breaking change</b>: the constructor of the
      `CPICapFloorTermPriceSurface` class now also takes an explicit
      interpolation type.
    - <b>Possibly breaking</b>: the protected constructor for `CallableBond`
      changes its arguments.  If you inherited from this class, you'll
      need to update your code.  If you're using the existing derived bond
      classes, the change will be transparent.
    - Pricing engines for callable bonds worked incorrectly when the face
      amount was not 100. This is now fixed.
    - The `impliedVolatility` method for callable bonds was taking a
      target NPV, not a price. This implementation is now deprecated, and
      a new overload was added taking a price in base 100.

    DEPRECATED FEATURES
    - <b>Removed</b> features deprecated in version 1.23:
      - the constructors of `ZeroCouponInflationSwap` and
        `ZeroCouponInflationSwapHelper` missing an explicit CPI
        interpolation type;
      - the constructors of `ActualActual` and `Thirty360` missing an
        explicit choice of convention, and the constructor of `Thirty360`
        passing an `isLastPeriod` boolean flag.
    - Deprecated the constructors of `FixedRateBond` taking an
      `InterestRate` instance or not taking a `Schedule` instance.
    - Deprecated the constructor of `FloatingRateBond` not taking a
      `Schedule` instance.
    - Deprecated the constructors of `AmortizingFixedRateBond` taking a
      sinking frequency or a vector of `InterestRate` instances.
    - Deprecated the constructor of `CPICapFloor` taking a `Handle` to an
      inflation index, and its `inflationIndex` method returning a `Handle`.
      New versions of both were added using `shared_ptr` instead.
    - Deprecated one of the constructors of `SabrSmileSection`; a new
      version was added also taking an optional reference date.
    - Deprecated the old `impliedVolatility` method for callable bonds;
      see above.

    Thanks go also to Konstantin Novitsky, Peter Caspers, Klaus
    Spanderen, Fredrik Gerdin Börjesson and Dirk Eddelbuettel for a
    number of smaller fixes, and to Jonathan Sweemer for various
    improvements to the automated CI builds.

    <strong>Release 1.27.1 - August 30th, 2022</strong>

    QuantLib 1.27.1 is a bug-fix release.

    It restores the old implementation of `Null<T>` which was replaced
    in version 1.27 with a new one; the latter was reported to cause
    an internal compiler error under Visual C++ 2022 for some client code.
    The new version (which avoids some problems when replacing `Real`
    with some AAD-enabled types) is still available; depending on how
    you compile QuantLib, it can be enabled through the
    `--enable-null-as-functions` configure flag, the cmake variable
    `QL_NULL_AS_FUNCTIONS`, or the define with the same name in the
    `ql/userconfig.hpp` header.

    <strong>Release 1.27 - July 22nd, 2022</strong>

    PORTABILITY
    - <b>Removed support:</b> as announced in the notes for the previous
      release, support for Visual Studio 2013 was dropped.
    - <b>End of support:</b> as announced in the notes for the previous
      release, this release will be the last to avoid C++14 syntax.
      Allowing the newer (but still oldish) standard should still support
      most compilers released in the past several years.
    - <b>Future end of support:</b> this release and the next will be the
      last to manage thread-local singletons via a user-provided
      `sessionId` function.  Future releases will use the built-in
      language support for thread-local variables.
    - The `Real` type is now used consistently throughout the codebase,
      thanks to the Xcelerit dev team.  This, along with
      other changes, allows its default definition to `double` to be
      replaced with one of the available third-party AAD types.
    - The test suite is now built using the header-only version of
      Boost.Test, thanks to Jonathan Sweemer.  This might
      simplify Boost installation for some users, since in the default
      configuration QuantLib now only needs the Boost headers.
    - Replaced some Boost facilities with the corresponding C++11
      counterparts; thanks to Klaus Spanderen and
      Jonathan Sweemer.

    DATE/TIME
    - Fixed the behavior of a couple of Australian holidays; thanks to
      Pradeep Krishnamurthy and Fredrik Gerdin Börjesson.

    INSTRUMENTS
    - Added the Turnbull-Wakeman engine for discrete Asian options; thanks
      to Fredrik Gerdin Börjesson for the main engine code
      and to Jack Gillett for the Greeks.
    - Added more validation to barrier options; thanks to Jonathan Sweemer.

    MODELS
    - Fixed the start date of the underlying swap in swaption calibration
      helpers; thanks to Peter Caspers.
    - Fixed parameter checks in SVI volatility smiles; thanks to Fredrik
      Gerdin Börjesson.

    PATTERNS
    - Avoid possible iterator invalidation while notifying observers;
      thanks to Klaus Spanderen.

    DEPRECATED FEATURES
    - <b>Removed</b> the `--enable-disposable` and `--enable-std-unique-ptr`
      configure switches.
    - <b>Removed</b> features deprecated in version 1.22:
      - the unused `AmericanCondition` and `FDAmericanCondition` classes;
      - the old-style FD shout and dividend shout engines;
      - the unused `OneFactorOperator` class;
      - the `io::to_integer` function;
      - the `ArrayProxy` and `MatrixProxy` classes.
    - Deprecated the `QL_NOEXCEPT` and `QL_CONSTEXPR` macros.
    - Deprecated the `QL_NULL_INTEGER` and `QL_NULL_REAL` macros.
    - Deprecated some unused parts of the old-style FD framework:
      - the `PdeShortRate` class;
      - the `ShoutCondition` and `FDShoutCondition` classes;
      - the `FDDividendEngineBase`, `FDDividendEngineMerton73`,
        `FDDividendEngineShiftScale` and `FDDividendEngine` classes;
      - the `FDStepConditionEngine` and `FDEngineAdapter` classes.
    - Deprecated a number of function objects in the
      `ql/math/functional.hpp` header.
    - Deprecated the unused `MultiCurveSensitivities` class.
    - Deprecated the unused `inner_product` function.

    Thanks go also to Ryan Russell for documentation fixes.

    <strong>Release 1.26 - April 20th, 2022</strong>

    PORTABILITY
    - <b>End of support:</b> as announced in the notes for the previous
      release, this release is the last to support Visual Studio 2013.
    - <b>End of support:</b> this release is the last to support the
      long-deprecated configure switches `--enable-disposable` and
      `--enable-std-unique-ptr`.  From the next release, `Disposable` will
      always be disabled (and eventually removed) and `std::unique_ptr`
      will always be used instead of `std::auto_ptr`.  This has already
      been the default in the last few releases.
    - <b>Future end of support:</b> this release and the next will be the
      last to avoid C++14 syntax.  This should still support most
      compilers released in the past several years (except for Visual
      Studio 2013, which we're already dropping in this release).
    - If tagged libraries are specified, as is the default on Windows,
      CMake now gives the built libraries the same names as the Visual
      Studio solution (for instance, `QuantLib-x64-mt-s` instead of
      `QuantLib-mt-s-x64`) so that the pragma in `ql/auto_link.hpp` works.
    - QuantLib can now also be built as a subproject in a larger CMake
      build (thanks to Peter Caspers).

    DATE/TIME
    - When printed, `Period` instances now display transparently what
      their units and length are, instead of doing more fancy formatting
      (e.g., "16 months" is now displayed instead of "1 year 4 months").
      Also, `Period` instances that compare as equal now return the same
      period from their `normalize` method.

    INDEXES
    - Added Tona (Tokyo overnight average) index (thanks to Jonghee Lee).
    - Added static `laggedFixing` method to `CPI` structure which provides
      interpolation of inflation index fixings.

    CASH FLOWS
    - The `CPICoupon` and `CPICashFlow` classes now take into account the
      correct dates and observation lag for interpolation.

    INSTRUMENTS
    - Added a `BondForward` class that generalizes the existing
      `FixedRateBondForward` to any kind of bond (thanks to Marcin
      Rybacki).
    - Avoided unexpected jumps in callable bond OAS (thanks to Ralf Konrad).
    - Fixed `TreeSwaptionEngine` mispricing when adjusting the instrument
      schedule to a near exercise date (thanks to Ralf Konrad).
    - the `ForwardRateAgreement` class now works correctly without an
      explicit discount curve.

    TERM STRUCTURES
    - Dates explicitly passed to `InterpolatedZeroInflationCurve` are no
      longer adjusted automatically to the beginning of their inflation period.

    DEPRECATED FEATURES
    - <b>Removed</b> the `MCDiscreteAveragingAsianEngine` class,
      deprecated in version 1.21.
    - Deprecated the `LsmBasisSystem::PolynomType` typedef, now renamed to
      `PolynomialType`; `MakeMCAmericanEngine::withPolynomOrder` was also
      deprecated and renamed to `withPolynomialOrder`.
    - Deprecated the `ZeroInflationCashFlow` constructor taking an unused
      calendar and business-day convention.
    - Deprecated the `CPICoupon` constructor taking a number of fixing
      days, as well as the `CPICoupon::indexObservation`,
      `CPICoupon::adjustedFixing` and `CPICoupon::indexFixing` methods
      and the `CPILeg::withFixingDays` method.
    - Deprecated the `CPICashFlow` constructor taking a precalculated fixing date and a frequency.
    - Deprecated the `Observer::set_type` and `Observable::set_type` typedefs.
    - Deprecated the unused `Curve` class.
    - Deprecated the unused `LexicographicalView` class.
    - Deprecated the unused `Composite` class.
    - Deprecated the unused `DriftTermStructure` class.

    Thanks go also to Matthias Groncki, Jonathan Sweemer and Li Zhong
    for smaller fixes, enhancements and bug reports.

    <strong>Release 1.25 - January 18th, 2022</strong>

    PORTABILITY
    - <b>End of support:</b> this release and the next will be the last
      two to support Visual Studio 2013.
    - Added a few CMake presets for building the library (thanks to
      Jonathan Sweemer).
    - When built and installed through CMake, the library now installs
      a `QuantLibConfig.cmake` file that allows other CMake projects
      to find and use QuantLib (thanks to Jonathan Sweemer).

    CASHFLOWS
    - Fixed the accrual calculation in overnight-indexed coupons
      (thanks to Mohammad Shojatalab).
    - Fixed fixing-days usage in `SubPeriodsCoupon` class (thanks to
      Marcin Rybacki).
    - IBOR coupons fixed in the past no longer need a forecast curve
      to return their amount.

    INDEXES

    - <b>Important change:</b> inflation indexes inherited from the
      `ZeroInflationIndex` class no longer rely on their forecast
      curve for interpolation.  For coupons that already took care of
      interpolation (as in the case of `CPICoupon` and
      `ZeroInflationCashFlow`) this should not change the results. In
      other cases, figures will change but should be more correct as
      the interpolation is now performed according to market
      conventions.  Also, most inflation curves now assume that the
      index is not implemented.  Year-on-year inflation indexes and
      curves are not affected.

    INSTRUMENTS
    - <b>Breaking change:</b> convertible bonds were moved out of the
      `ql/experimental` folder.  Also, being market values and not
      part of the contract, dividends and credit spread were moved
      from the bond to the `BinomialConvertibleEngine` class (thanks
      to Lew Wei Hao).
    - The `ForwardRateAgreement` no longer inherits from `Forward`.
      This also made it possible to implement the `amount` method
      returning the expected cash settlement (thanks to Lew Wei Hao).
      The methods from `Forward` were kept available but deprecated so
      code using them won't break.  Client code might break if it
      performed casts to `Forward`.

    MODELS
    - Fixed formula for discount bond option in CIR++ model (thanks to
      Magnus Mencke).

    TERM STRUCTURES
    - It is now possible to use normal volatilities in SABR smile
      sections, and thus in the `SabrSwaptionVolatilityCube` class (thanks to
      Lew Wei Hao).

    DATE/TIME
    - Added Chinese holidays for 2022 (thanks to Cheng Li).

    CURRENCIES
    - Added a number of African, American, Asian and European
      currencies from Quaternion's `QuantExt` project (thanks to Ole
      Bueker).

    EXPERIMENTAL FOLDER

    The `ql/experimental` folder contains code whose interface is not
    fully stable, but is released in order to get user
    feedback. Experimental classes make no guarantees of backward
    compatibility; their interfaces might change in future releases.

    - Added experimental rate helpers for LIBOR-LIBOR and
      Overnight-LIBOR basis swaps.
    - Renamed `WulinYongDoubleBarrierEngine` to
     `SuoWangDoubleBarrierEngine` (thanks to Adityakumar Sinha for the
     fix and Ruilong Xu for the heads-up).

    DEPRECATED FEATURES
    - Deprecated the constructors of zero-coupon inflation term
      structures taking an `indexIsInterpolated` boolean argument.
    - Deprecated a number of methods in the `ForwardRateAgreement`
      class that used to be inherited from `Forward`.
    - Deprecated a couple of constructors in the
      `SofrFutureRateHelper` class.
    - Deprecated the `WulinYongDoubleBarrierEngine` alias for
      `SuoWangDoubleBarrierEngine`.
    - Deprecated the protected `spreadLegValue_` data member in the
      `BlackIborCouponPricer` class.

    Thanks go also to Tom Anderson, Francois Botha, Matthew Kolbe,
    Benson Luk, Marcin Rybacki, Henning Segger, Klaus Spanderen, and
    GitHub users jxcv0 and azsrz for smaller fixes, enhancements and
    bug reports.

    <strong>Release 1.24 - October 2021</strong>

    PORTABILITY
    - Overhauled the CMake build system (thanks to Philip Kovacs).  Among
      other things, it now allows to specify the available configuration
      options from the `cmake` invocation and adds the required Boost
      libraries accordingly.

    INSTRUMENTS
    - Avoid callable-bond mispricing when a call date is close but not equal
      to a coupon date (thanks to Ralf Konrad for the fix and to GitHub user
      aichao for the analysis).
      See <https://github.com/lballabio/QuantLib/issues/930> for details.
    - A new `RiskyBondEngine` is available for bonds (thanks to Lew Wei
      Hao).  It prices bonds based on a risk-free discount cure and a
      default-probability curve used to assess the probability of each
      coupon payment.  It makes accessible to all bonds the calculations
      previously available in the experimental `RiskyBond` class.

    CASHFLOWS
    - The choice between par and indexed coupons was moved to
      `IborCouponPricer` (thanks to Peter Caspers).  This also made it
      possible to override the choice locally when building a
      `VanillaSwap` or a `SwapRateHelper`, so that coupons with both
      behaviors can now be used at the same time.

    TERM STRUCTURES
    - Cross-currency basis swap rate helpers now support both
      constant-notional and marked-to-market swaps (thanks to Marcin
      Rybacki).

    DATE/TIME
    - Added Chilean calendar (thanks to Anubhav Pandey).
    - Added new `ThirdWednesdayInclusive` date-generation rule that also
      adjusts start and end dates (thanks to Lew Wei Hao).

    PATTERNS
    - Overhauled `Singleton` implementation (thanks to Peter Caspers).
      Singletons are now initialized in a thread-safe way when sessions
      are enabled, global singletons (that is, independent of sessions)
      were made available, and static initialization was made safer.

    TEST SUITE
    - Sped up some of the longer-running tests (thanks to Mohammad Shojatalab).

    DEPRECATED FEATURES
    - Deprecated default constructor for the U.S. calendar; the desired
      market should now be passed explicitly.
    - Deprecated the `nominalTermStructure` method and the corresponding
      data member in inflation term structures.  Any object needing the
      nominal term structure should have it passed explicitly.
    - Deprecated the `termStructure_` data member in
      `BlackCalibrationHelper`.  It you're inheriting from
      `BlackCalibrationHelper` and need it, declare it in your derived
      class.
    - Deprecated the `createAtParCoupons`, `createIndexedCoupons` and
      `usingAtParCoupons` methods of `IborCoupon`, now moved to a new
      `IborCoupon::Settings` singleton (thanks to Philip Kovacs).
    - Deprecated the `conversionType` and `baseCurrency` static data
      members of `Money`, now moved to a new `Money::Settings` singleton
      (thanks to Philip Kovacs).
    - Removed features deprecated in version 1.19: the `BMAIndex`
      constructor taking a calendar, the `AmericanCondition` and
      `ShoutCondition` constructors taking an option type and strike, the
      `CurveDependentStepCondition` class and the
      `StandardCurveDependentStepCondition` typedef, the
      `BlackCalibrationHelper` constructor taking a yield term structure,
      the various inflation term structure constructors taking a yield
      term structure, the various yield term constructors taking a vector
      of jumps but not specifying a reference date.

    Thanks go also to Mickael Anas Laaouini, Jack Gillett, Bojan Nikolic
    and Klaus Spanderen for smaller fixes, enhancements and bug reports.

    <strong>Release 1.23 - July 14th, 2021</strong>

    PORTABILITY
    - On Mac OS, the `-std=c++11` flag is now added automatically when
      needed.  This applies to both `configure` and `cmake` (thanks to
      Leander Schulten).
    - We now assume that the compiler supports Boost::uBLAS and no longer
      check for it in configure.  (The check was originally introduced for
      versions of gcc before 4.x, which don't support C++ anyway.)
      Please let us know if this causes problems on some systems.
    - The `Period`, `InterestRate` and `InterestRateIndex` classes are now
      visualized more clearly in the Visual Studio debugger (thanks to
      Francois Botha).

    CASHFLOWS
    - Year-on-year and CPI legs are now set a default coupon pricer.  In
      most cases, this removes the need for setting it explicitly.
    - Add new `ZeroInflationCashFlow` class, used in zero-coupon inflation
      swaps (thanks to Ralf Konrad).

    CURRENCIES
    - Added custom constructor that allows to create bespoke currencies
      not already included in the library (thanks to Marcin Rybacki).

    DATE/TIME
    - Fixed implementation of U.S. 30/360 convention (the old one is still
      available as 30/360 NASD).
    - The 30/360 ISDA convention can now take the termination date as a
      constructor argument and use it to adjust the calculation properly.
    - Added the 30/360 ISMA convention; the Bond-Basis convention is now
      an alias to the former.
    - The 30/360 German convention was renamed to ISDA; "German" remains
      as an alias.
    - Added new Canadian holiday (National Day for Truth and
      Reconciliation) established in 2021 (thanks to GitHub user `qiubill`
      for the heads-up).
    - Added new U.S. holiday (Juneteenth) established in 2021.
    - Added new Platinum Jubilee U.K. holiday for 2022 (thanks to Ioannis
      Rigopoulos for the heads-up.)
    - Added missing Christmas Eve holiday to Norwegian calendar (thanks to
      Prince Nanda).

    INDEXES
    - Added ESTR index (thanks to Magnus Mencke).

    INSTRUMENTS
    - Added zero-coupon swap (thanks to Marcin Rybacki).
    - The `Type` enumeration defined in several swap classes was moved to
      their base `Swap` class.
    - Fixed sign of theta in experimental Kirk engine for spread options
      (thanks to Xu Ruilong for the heads-up).

    PROCESSES
    - Improved discretization of Cox-Ingersoll-Ross process to avoid
      occasional divergence (thanks to Magnus Mencke).

    DEPRECATED FEATURES
    - Deprecated default constructor for actual/actual and 30/360 day
      counters; the desired convention should now be passed explicitly.
    - Removed features deprecated in version 1.18: the
      `CalibrationHelperBase` typedef (now `CalibrationHelper`), some
      overloads of the `CalibratedModel::calibrate` and
      `CalibratedModel::value` methods, the constructors of
      `PiecewiseYieldCurve` and `PiecewiseDefaultCurve` taking an
      `accuracy` parameter, the constructors of `BondHelper`,
      `FixedRateBondHelper` and `CPIBondHelper` taking a boolean
      `useCleanPrice` parameter, the `BondHelper::useCleanPrice()` method,
      and the non-static `Calendar::holidayList` method.

    Thanks go also to Francis Duffy, Kevin Kirchhoff, Magnus Mencke and
    Klaus Spanderen for smaller fixes, enhancements and bug reports.

    <strong>Release 1.22 - April 15th, 2021</strong>

    PORTABILITY
    - As previously announced, this release drops support for Visual
      C++ 2012.  VC++ 2013 or later is now required.
    - The `Date` and `Array` classes are now visualized more clearly in
      the Visual Studio debugger (thanks to Francois Botha).

    LANGUAGE STANDARD
    - QuantLib now uses the C++11 standard and no longer compiles in C++03
      mode.  As before, it can be compiled with later versions of the
      standard.  For details on the C++11 features used, see the pull
      requests marked "C++11 modernization" at the above link; for
      information on possible problems, see
      <https://www.implementingquantlib.com/2021/02/leaving-03-for-real.html>.

    CASHFLOWS
    - Revised and tested the `SubPeriodCoupon` class (thanks to Marcin
      Rybacki).  The class was moved out of the `ql/experimental` folder
      and its interface can now be considered stable.
    - Add simple averaging to overnight-index coupons in addition to the
      existing compound averaging (thanks to Marcin Rybacki).
    - Fixed accrual calculation for inflation coupon when trading
      ex-coupon (thanks to GitHub user `bachhani`).

    CURRENCIES
    - Added the Nigerian Naira (thanks to Bryte Morio).

    DATE/TIME
    - Fixed actual/actual (ISMA) day counter calculation for long/short
      final periods (thanks to Francois Botha).
    - Updated a couple of changed rules for New Zealand calendar (thanks
      to Paul Giltinan).

    INDEXES
    - Added `hasHistoricalFixing` inspector to `Index` class to check if
      the fixing for a given past date is available (thanks to Ralf
      Konrad).

    INSTRUMENTS
    - Added new-style finite-difference engine for shout options (thanks
      to Klaus Spanderen).  In the case of dividend shout options, an
      escrowed dividend model is used.
    - Revised the `OvernightIndexFutures` class.  The class was moved out
      of the `ql/experimental` folder and its interface can now be
      considered stable.
    - Added an overloaded constructor for Asian options that takes all
      past fixings and thus allows to reprice them correctly when the
      evaluation date changes (thanks to Jack Gillett).
    - Added support for seasoned geometric Asian options to the Heston
      engine (thanks to Jack Gillett).

    PATTERNS
    - Faster implementation of the `Observable` class in the thread-safe
      case (thanks to Klaus Spanderen).

    TERM STRUCTURES
    - Added experimental rate helper for constant-notional cross-currency
      basis swaps (thanks to Marcin Rybacki).
    - Added volatility type and displacements to year-on-year inflation
      volatility surfaces (thanks to Peter Caspers).

    DEPRECATED FEATURES
    - Removed features deprecated in version 1.17: the `Callability::Type`
      typedef (now `Bond::Price`), the `FdmOrnsteinUhlenbackOp` typedef
      (now correctly spelled as `FdmOrnsteinUhlenbeckOp`, and a number of
      old-style finite-difference engines (`FDAmericanEngine`,
      `FDBermudanEngine`, `FDDividendAmericanEngine` and its variants,
      `FDDividendEuropeanEngine` and its variants, and `FDEuropeanEngine`)
      all replaced by the `FdBlackScholesVanillaEngine` class.
    - Deprecated the old-style finite difference engines for shout
      options; they are now replaced by the new `FDDividendShoutEngine`
      class.
    - Deprecated a few unused parts of the old-style finite-differences
      framework: the `AmericanCondition` class, the `OneFactorOperator`
      typedef, and the `FDAmericanCondition` class.

    TEST SUITE
    - Reduced the run time for the longest-running test cases.

    Thanks go also to Francis Duffy and Cay Oest for smaller fixes,
    enhancements and bug reports.

    <strong>Release 1.21 - January 20th, 2021</strong>

    PORTABILITY
    - As previously announced, this is the last release to support
      Visual C++ 2012.  Starting from next release, VC++ 2013 or later
      will be required in order to enable use of C++11 features.

    INSTRUMENTS
    - Improve date generation for CDS schedules under the post-big-bang
      rules (thanks to Francis Duffy).
    - Amortizing fixed-rate bonds can now use a generic `InterestRate`
      object (thanks to Piter Dias).
    - Added Monte Carlo pricer for discrete-average arithmetic Asian
      options under the Heston model (thanks to Jack Gillett).
    - Added analytic and Monte Carlo pricers for discrete-average
      geometric Asian options under the Heston model (thanks to Jack
      Gillett).  Together, they can also be used as a control variate in
      Monte Carlo models for arithmetic Asian options.
    - Added analytic pricer for continuous-average geometric Asian
      options under the Heston model (thanks to Jack Gillett).
    - Added analytic pricer for forward options under the Heston model
      (thanks to Jack Gillett).
    - Added Monte Carlo pricers for forward options under the
      Black-Scholes and the Heston models (thanks to Jack Gillett).

    TERM STRUCTURES
    - Added Dutch regulatory term structure, a.k.a. ultimate forward term
      structure (thanks to Marcin Rybacki).
    - Generalized exponential spline fitting to an arbitrary number of
      parameters; it is now also possible to fix kappa (thanks to David
      Sansom).
    - Fixed averaging period for 1-month SOFR futures rate helper (thanks
      to Eisuke Tani).

    DATE/TIME
    - Fixed a bug and added 2017 holidays in Thailand calendar (thanks to
      GitHub user `phil-zxx` for the heads-up).
    - Updated Chinese calendar for 2021 (thanks to Cheng Li).
    - Updated Japanese calendar for 2021 (thanks to Eisuke Tani).

    Thanks go also to Francois Botha, Peter Caspers, Ralf Konrad,
    Matthias Siemering, Klaus Spanderen and Joseph Wang for smaller
    fixes, enhancements and bug reports.

    <strong>Release 1.20 - October 26th, 2020</strong>

    PORTABILITY
    - Support for Visual C++ 2012 is being deprecated.  It will be dropped
      after the next release in order to enable use of C++11 features.
    - It is now possible to opt into using `std::tuple` instead of
      `boost::tuple` when the compiler allows it.  The default is still to
      use the Boost implementation.  The feature can be enabled by
      uncommenting the `QL_USE_STD_TUPLE` macro in `ql/userconfig.hpp` on
      Visual C++ or by passing the `--enable-std-tuple` switch to
      `./configure` on other systems.  The `--enable-std-tuple` switch is
      also implied by `--enable-std-classes`.  (Thanks to Joseph Wang.)

    INSTRUMENTS
    - Added mixing-factor parameter to Heston finite-differences barrier,
      rebate and double-barrier engines (thanks to GitHub user
      `jackgillett101`).
    - Added a few additional results to Black swaption engine and to
      analytic European option engine (thanks to Peter Caspers and Marcin
      Rybacki).
    - Improved calculation of spot date for vanilla swap around holidays
      (thanks to Paul Giltinan).
    - Added ex-coupon feature to amortizing bonds, callable bonds and
      convertible bonds.
    - Added optional first-coupon day counter to fixed-rate bonds (thanks
      to Jacob Lee-Howes).

    MATH
    - Added convenience classes `LogCubic` and `LogMixedLinearCubic`
      hiding a few default parameters (thanks to Andrea Maffezzoli).

    MODELS
    - Added control variate based on asymptotic expansion for the Heston
      model (thanks to Klaus Spanderen).

    DATE/TIME
    - Added missing Hong Kong holiday (thanks to GitHub user `CarrieMY`).
    - Added a couple of one-off closing days to the Romanian calendar.
    - Added a one-off holiday to South Korean calendar (thanks to GitHub
      user `fayce66`).
    - Added a missing holiday to Turkish calendar (thanks to Berat
      Postalcioglu).

    DOCUMENTATION
    - Added basic documentation to optimization methods (thanks to GitHub
      user `martinbrose`).

    DEPRECATED FEATURES
    - Features deprecate in version 1.16 were removed: a constructor of
      the `FdmOrnsteinUhlenbeckOp` class and a constructor of the
      `SwaptionVolatilityMatrix` class.

    <strong>Release 1.19 - July 20th, 2020</strong>

    PORTABILITY
    - Support for Visual C++ 2012 is being deprecated.  It will be dropped
      around the end of 2020 or the beginning of 2021 in order to enable
      use of C++11 features.
    - Avoided use in Makefiles of functions only available to GNU Make
      (thanks to GitHub user `UnitedMarsupials` for the heads-up).

    BUILD
    - Automated builds on Travis and GitHub Actions were extended.  We now
      have a build for Mac OS X, as well as a few builds that run a number
      of checks on the code (including clang-tidy) and automatically open
      pull requests with fixes.

    TERM STRUCTURES
    - Added options for iterative bootstrap to widen the search domain or
      to keep the best result upon failure (thanks to Francis Duffy).
    - Added flat-extrapolation option to fitted bond curves (thanks to
      Peter Caspers).

    INSTRUMENTS
    - Added finite-difference pricing engine for equity options under the
      Cox-Ingersoll-Ross process (thanks to Lew Wei Hao).
    - Added Heston engine based on exponentially-fitted Laguerre
      quadrature rule (thanks to Klaus Spanderen).
    - Added Monte Carlo pricing engines for lookback options (thanks to
      Lew Wei Hao).
    - Added Monte Carlo pricing engine for double-barrier options (thanks
      to Lew Wei Hao).
    - Added analytic pricing engine for equity options under the
      Vasicek model (thanks to Lew Wei Hao).
    - The `Bond::yield` method can now specify a guess and whether the
      passed price is clean or dirty (thanks to Francois Botha).

    MODELS
    - Improved grid scaling for FDM Heston SLV calibration, and fixed
      drift and diffusion for Heston SLV process (thanks to Klaus
      Spanderen and Peter Caspers).
    - Added mixing factor to Heston SLV process (thanks to Lew Wei Hao).

    MATH
    - Improved nodes/weights for the exponentially fitted Laguerre
      quadrature rule and added sine and cosine quadratures (thanks to
      Klaus Spanderen).

    DATE/TIME
    - Improved performance of the Calendar class (thanks to Leonardo Arcari).
    - Updated holidays for Indian and Russian calendars (thanks to Alexey
      Indiryakov).
    - Added missing All Souls Day holiday to Mexican calendar (thanks to
      GitHub user `phil-zxx` for the heads-up).
    - Restored New Year's Eve holiday to Eurex calendar (thanks to Joshua
      Engelman).

    DEPRECATED FEATURES
    - Features deprecate in version 1.15 were removed: constructors of
      inflation swap helpers, inflation-based pricing engines and
      inflation coupon pricers that didn't take a nominal term structure.
    - The constructor of `BMAIndex` taking a calendar was deprecated.
    - The constructors of several interest-rate term structures taking
      jumps without a reference date were deprecated.
    - The `CurveDependentStepCondition` class and related typedefs were
      deprecated.
    - The constructor of `BlackCalibrationHelper` taking an interest-rate
      structure was deprecated.
    - The constructors of several inflation curves taking a nominal curve
      were deprecated.  The nominal curve should now be passed to the used
      coupon pricers.

    <strong>Release 1.18 - March 23rd, 2020</strong>

    PORTABILITY
    - As announced in the past release, support of Visual C++ 2010 is
      dropped.  Also, we'll probably deprecate Visual C++ 2012 in the
      next release in order to drop it around the end of 2020.

    BUILD
    - Cmake now installs headers with the correct folder hierarchy
      (thanks to Cheng Li).
    - The `--enable-unity-build` flag passed to configure now also
      causes the test suite to be built as a single source file.
    - The Visual Studio projects now allow enabling unity builds as
      described at
      <https://devblogs.microsoft.com/cppblog/support-for-unity-jumbo-files-in-visual-studio-2017-15-8-experimental/>

    TERM STRUCTURES
    - A new `GlobalBootstrap` class can now be used with
      `PiecewiseYieldCurve` and other bootstrapped curves (thanks to
      Peter Caspers).  It allows to produce curves close to
      Bloomberg's.
    - The experimental `SofrFutureRateHelper` class and its parent
      `OvernightIndexFutureRateHelper` can now choose to use either
      compounding or averaging, in order to accommodate different
      conventions for 1M and 3M SOFR futures (thanks to GitHub user
      `tani3010`).
    - The `FraRateHelper` class has new constructors that take IMM
      start / end offsets (thanks to Peter Caspers).
    - It is now possible to pass explicit minimum and maximum values
      to the `IterativeBootstrap` class.  The accuracy parameter was
      also moved to the same class; passing it to the curve
      constructor is now deprecated.

    INSTRUMENTS
    - It is now possible to build fixed-rate bonds with an arbitrary
      schedule, even without a regular tenor (thanks to Steven Van
      Haren).

    MODELS
    - It is now possible to use normal volatilities to calibrate a
      short-rate model over caps.

    DATE/TIME
    - The Austrian calendar was added (thanks to Benjamin
      Schwendinger).
    - The German calendar incorrectly listed December 31st as a
      holiday; this is now fixed (thanks to Prasad Somwanshi).
    - Chinese holidays were updated for 2020 and the coronavirus event
      (thanks to Cheng Li).
    - South Korea holidays were updated for 2016-2020 (thanks to
      GitHub user `fayce66`).
    - In the calendar class, `holidayList` is now an instance method;
      the static version is deprecated.  The `businessDayList` method
      was also added.  (Thanks to Piotr Siejda.)
    - A bug in the 30/360 German day counter was fixed (thanks to Kobe
      Young for the heads-up).

    OPTIMIZERS
    - The differential evolution optimizer was updated (thanks to
      Peter Caspers).

    CURRENCIES
    - Added Kazakstani Tenge to currencies (thanks to Jonathan Barber).

    DEPRECATED FEATURES
    - Features deprecate in version 1.14 were removed: one of the
      constructors of the `BSMOperator` class, the whole
      `OperatorFactory` class, and the typedef `CalibrationHelper`
      which was used to alias the `BlackCalibrationHelper` class.
    - The `CalibrationHelperBase` class is now called
      `CalibrationHelper`. The old name remains as a typedef but is
      deprecated.
    - The overload of `CalibratedModel::calibrate` and
      `CalibratedModel::value` taking a vector of
      `BlackCalibrationHelper`s are deprecated in favor of the ones
      taking a vector of `CalibrationHelper`s.
    - The static method `Calendar::holidayList` is deprecated in favor
      of the instance method by the same name.
    - The constructors of `PiecewiseDefaultCurve` and
      `PiecewiseYieldCurve` taking an accuracy parameter are
      deprecated in favor of passing the parameter to an instance of
      the bootstrap class.
    - The constructors of `BondHelper` and derived classes taking a
      boolean flag to choose between clean and dirty price are
      deprecated in favor of the ones taking a `Bond::Price::Type`
      argument.  The `useCleanPrice` method is also deprecated in
      favor of `priceType`.

    <strong>Release 1.17 - December 3rd, 2019</strong>

    PORTABILITY
    - As of this release, support of Visual C++ 2010 is deprecated; it
      will be dropped in next release.  Also, we'll probably deprecate
      Visual C++ 2012 in one of the next few releases in order to drop
      it around the end of 2020.

    CONFIGURATION
    - A new function `compiledBoostVersion()` is available, (thanks to
      Andrew Smith).  It returns the version of Boost used to compile
      the library, as reported by the `BOOST_VERSION` macro.  This can
      help avoid linking the library with user code compiled with a
      different Boost version (which can result in erratic behavior).
    - It is now possible to specify at run time whether to use indexed
      coupons (thanks to Ralf Konrad).  The compile-time configuration
      is still used as a default, but it is also possible to call
      either of the static methods `IborCoupon::createAtParCoupons` or
      `IborCoupon::createIndexedCoupons` to specify your preference.
      For the time being, the methods above must necessarily be called
      before creating any instance of `IborCoupon` or of its derived
      classes.

    BUILD
    - As of this version, the names of the binaries produced by the
      included Visual C++ solution no longer contain the toolset
      version (e.g., v142).

    INSTRUMENTS
    - Added ex-coupon functionality to floating-rate bonds (thanks to
      Steven Van Haren).
    - The inner structure `Callability::Price` was moved to the class
      `Bond` and can now be used to specify what kind of price was
      passed to the `BondFunctions::yield` method (thanks to Francois
      Botha).
    - It is now possible to use a par-coupon approximation for FRAs
      like the one used in Ibor coupons (thanks to Peter Caspers).

    PRICING ENGINES
    - Added escrowed dividend model to the new-style FD engine for
      `DividendVanillaOption` (thanks to Klaus Spanderen).
    - Black cap/floor engine now also returns caplet deltas (thanks to
      Wojciech Slusarski).

    TERM STRUCTURES
    - OIS rate helpers can now choose whether to use as a pillar for
      the bootstrap either their maturity date or the end date of the
      last underlying fixing.  This provides an alternative if the
      bootstrap should fail.  (Thanks to Drew Saunders for the
      heads-up.)
    - Instances of the `FittedBondDiscountCurve` class now behave as
      simple evaluators (that is, they use the given parameters without
      performing root-solving) when the `maxIterations` parameter is
      set to 0.  (Thanks to Nick Firoozye for the heads-up.)

    DATE/TIME
    - Added a few special closing days to the US government bond
      calendar (thanks to Mike DelMedico).
    - Fixed an incorrect 2019 holiday in Chinese calendar (thanks to
      Cheng Li).
    - Added missing holiday to Swedish calendar (thanks to GitHub
      users `periculus` and `tonyzhipengzhou`).

    DEPRECATED FEATURES
    - The classes `FDEuropeanEngine`, `FDAmericanEngine`,
      `FDBermudanEngine`, `FDDividendEuropeanEngine`,
      `FDDividendEuropeanEngineShiftScale`,
      `FDDividendAmericanEngine`, `FDDividendAmericanEngineShiftScale`
      are now deprecated.  They are superseded by
      `FdBlackScholesVanillaEngine`.

    <strong>Release 1.16 - August 5th, 2019</strong>

    PORTABILITY
    - Added support for Visual Studio 2019 (thanks to Paul Giltinan).

    CONFIGURATION
    - As announced in past release, the compile-time switch to force
      non-negative rates was removed.

    PRICING ENGINES
    - Added constant elasticity of variance (CEV) pricing engines for
      vanilla options.  Analytic, FD and SABR engines are available
      (thanks to Klaus Spanderen).
    - Added quanto pricing functionality to a couple of FD engines for
      DividendVanillaOption (thanks to Klaus Spanderen).

    CASH FLOWS
    - Digital coupons can now optionally return the value of the naked
      option (thanks to Peter Caspers).

    DATE/TIME
    - Updated Taiwan holidays for 2019 (thanks to Hank Liu).
    - Added two newly announced holidays to Chinese calendar (thanks to
      Cheng Li).
    - Updated Japan calendar (thanks to Eisuke Tani).
    - Fixed New Year's day adjustment for Canadian calendar (thanks to Roy
      Zywina).
    - Added a couple of exceptions for UK bank holidays (thanks to GitHub
      user Vililikku for the heads-up).
    - Added French calendar (thanks to GitHub user NJeanray).
    - Added public methods to expose a calendar's added and removed
      holidays (thanks to Francois Botha).
    - Allow the stub date of a schedule to equal the maturity.

    DEPRECATED FEATURES
    - Deprecated a constructor of the SwaptionVolatilityMatrix class that
      didn't take a calendar.
    - Removed typedefs GammaDistribution, ChiSquareDistribution,
      NonCentralChiSquareDistribution and
      InverseNonCentralChiSquareDistribution, deprecated in version 1.12.
      Use CumulativeGammaDistribution, CumulativeChiSquareDistribution,
      NonCentralCumulativeChiSquareDistribution and
      InverseNonCentralCumulativeChiSquareDistribution instead.
    - Removed Actual365NoLeap class, deprecated in version 1.11.  It was
      folded into Actual365Fixed.

    TERM STRUCTURES
    - Take payment days into account when calculating the nodes of a
      bootstrapped curve based on overnight swaps.

    <strong>Release 1.15 - February 19th, 2019</strong>

    PORTABILITY
    - This release drops support for Boost version 1.43 to 1.47; the
      minimum required version is now Boost 1.48, released in 2011.
    - Added a `.clang-format` file to the repository.  The format is
      not going to be enforced, but the style file is provided as a
      convenience in case you want to format new code according to the
      conventions of the library.
    - `boost::function`, `boost::bind` and a few related classes and
      functions were imported into the new namespace `QuantLib::ext`.
      This allows them to be conditionally replaced with their `std::`
      versions (see the "opt-in features" section below).  The default
      is still to use the Boost implementation.  Client code using the
      `boost` namespace explicitly doesn't need to be updated.

    MODELS
    - Added an experimental volatility basis model for caplet and
      swaptions (thanks to Sebastian Schlenkrich).

    PRICING ENGINES
    - It is now possible to specify polynomial order and type when
      creating a `MCAmericanBasketEngine` instance (thanks to Klaus
      Spanderen).

    TERM STRUCTURES
    - Inflation curves used to store the nominal curve used during
      their construction.  This is still supported for backward
      compatibility, but is deprecated.  You should instead pass the
      nominal curve explicitly to objects that need one (e.g.,
      inflation helpers, engines, or cashflow pricers).
    - Added experimental helpers to bootstrap an interest-rate curve
      on SOFR futures (thanks to Roy Zywina).

    INDEXES
    - It is now possible to choose the fixing calendar for the BMA
      index (thanks to Jan Ladislav Dussek).

    CASH FLOWS
    - Fixed broken observability in CMS-spread coupon pricer (thanks
      to Peter Caspers).

    DATE/TIME
    - Fix implementation of Actual/Actual (ISMA) day counter in case a
      schedule is provided (thanks to Philip Stephens).
    - Fix implementation of `Calendar::businessDaysBetween` method
      when the initial and final date are the same (thanks to Weston
      Steimel).
    - Added day of mourning for G.H.W. Bush to the list of United
      States holidays (thanks to Joshua Engelman).
    - Updated list of Chinese holidays for 2019 (thanks to Cheng Li).
    - Added basic unit tests for the `TimeGrid` class (thanks to Kai
      Striega).

    MATH
    - Prevent solver failure in Richardson extrapolation (thanks to
      Klaus Spanderen).

    EXAMPLES
    - Added multi-curve bootstrapping example (thanks to Jose
      Garcia). This examples supersedes the old swap-valuation
      example, that was therefore removed.

    NEW OPT-IN FEATURES
    - It is now possible to use `std::function`, `std::bind` and their
      related classes instead of `boost::function` and `boost::bind`.
      The feature can be enabled by uncommenting the
      `QL_USE_STD_FUNCTION` macro in `ql/userconfig.hpp` on Visual C++
      or by passing the `--enable-std-function` to `./configure` on
      other systems.  This requires using at least the C++11 standard
      during compilation.
    - A new `./configure` switch, `--enable-std-classes`, was added as
      a shortcut for `--enable-std-pointers` `--enable-std-unique-ptr`
      `--enable-std-function`.

    <strong>Release 1.14 - October 1st, 2018</strong>

    PORTABILITY
    - In April 2018, Microsoft ended its support for Microsoft Visual
      C++ 2008. As previously announced, this release drops support
      for it.
    - Fixed generation of RPM from QuantLib.spec (thanks to Simon Rees).
    - Avoided uses of some features removed in C++17 so that the
      library can be compiled under the latest standard if needed.
    - `boost::shared_ptr` and a few related classes and functions were
      imported into the new namespace `QuantLib::ext`.  This allows them
      to be conditionally replaced with their `std::` versions (see the
      "opt-in features" section below).  The default is still to use
      the boost implementation.  Client code using the `boost` namespace
      explicitly doesn't need to be updated.
    - Fixed build and tests on FreeBSD-11 (thanks to Klaus Spanderen
      and to Mikhail Teterin for the heads-up).
    - Fixed tests with the `-ffast-math` compilation flag enabled
      (thanks to Klaus Spanderen and to Jon Davies for the heads-up).

    INSTRUMENTS AND PRICING ENGINES
    - Add different settlement methods for swaptions (thanks to Peter
      Caspers).
    - Take into account distinct day-count conventions for different
      curves in the analytic barrier-option engine (thanks to GitHub
      user cosplay-raven).
    - Extract the correct constant coefficients to use in
      finite-difference vanilla-option engine when using a
      time-dependent Black-Scholes process (thanks to GitHub user
      Grant6899 for the analysis).

    CASH FLOWS AND INTEREST RATES
    - Added Bibor and THBFIX indices (thanks to Matthias Lungwitz).

    MODELS
    - Added a hook for using a custom smile model in the Markov functional
      model (thanks to Peter Caspers).
    - Added a base class CalibrationHelperBase to the hierarchy of
      calibration helpers in order to allow for helpers not using the
      Black model.
    - Return underlying dynamics from Black-Karasinski model (thanks
      to Fanis Antoniou).

    FINITE DIFFERENCES
    - Added higher-order spatial operators (thanks to Klaus Spanderen).
    - Added TR-BDF2 finite-difference scheme (thanks to Klaus Spanderen).

    TERM STRUCTURES
    - Allow swap helpers to specify end-of-month convention (thanks to
      Matthias Lungwitz).

    DATE/TIME
    - Prevented division by zero in Actual/365 Canadian day counter
      (thanks to Ioannis Rigopoulos for the heads-up).
    - Added Children's Day to the list of Romanian holidays (thanks to
      Matthias Lungwitz).
    - Added new calendar for Thailand (thanks to Matthias Lungwitz).
    - Added 30/360 German day counter (thanks to Peter Caspers and
      Alexey Indiryakov).

    MATH
    - Fixed bug in convex-monotone interpolation (thanks to Peter
      Caspers for the fix and to Tom Anderson for finding the bug).

    NEW OPT-IN FEATURES
    - It is now possible to use `std::shared_ptr` and its related
      classes instead of `boost::shared_ptr`.  Note that, unlike its
      boost counterpart, `std::shared_ptr` doesn't check for null
      pointers before access; this can lead to crashes.  The feature
      can be enabled by uncommenting the `QL_USE_STD_SHARED_PTR` macro
      in `ql/userconfig.hpp` on Visual C++ or by passing the
      `--enable-std-pointers` to `./configure` on other systems.  This
      requires using at least the C++11 standard during compilation.
    - It is now possible to use `std::unique_ptr` instead of
      `std::auto_ptr`; this makes it possible to compile the library in
      strict C++17 mode and to avoid deprecation warnings in C++11 and
      C++14 mode.  The feature can be enabled by uncommenting the
      `QL_USE_STD_UNIQUE_PTR` macro in `ql/userconfig.hpp` on Visual C++
      or by passing the `--enable-std-unique-ptr` to `./configure` on
      other systems.

    Thanks go also to Sam Danbury, Barry Devlin, Roland Kapl, and GitHub
    user todatamining for smaller fixes, enhancements, and bug reports.

    <strong>Release 1.13 - May 24th, 2018</strong>

    PORTABILITY
    - In April 2018, Microsoft ended its support for Microsoft Visual
      C++ 2008. This release still includes a solution file for VC++
      2008, but we won't support it further or take bug reports for
      it. The next release will only contain project files for Visual
      C++ 2010 and later.
    - Fixed build on Solaris 12.5 in C++11 mode (thanks to Nick Glass).

    INSTRUMENTS AND PRICING ENGINES
    - Fix CDS calculation when the start date falls during the
      week-end (thanks to Guillaume Horel).
    - Allow construction of a `ForwardRateAgreement` instance even if
      the interest-rate curve is not yet linked (thanks to Tom
      Anderson).

    CASH FLOWS AND INTEREST RATES
    - Added Mosprime, Pribor, Robor and Wibor indices (thanks to
      Matthias Lungwitz).
    - Improved performance of Black pricer for LIBOR coupons (thanks
      to Peter Caspers).
    - Fixed experimental quanto coupon pricer (thanks to Peter
      Caspers).
    - Revised experimental CMS-spread coupon pricer (thanks to Peter
      Caspers).

    MODELS
    - Improvements for the experimental generalized Hull-White model
      (thanks to Roy Zywina).
    - Fixed drift in GSR process (thanks to Peter Caspers for the fix
      and to Seung Beom Bang for the heads up).
    - Fixed an out-of-bound access in the
      TwoFactorModel::ShortRateDynamics::process method (thanks to
      Weston Steimel).

    FINITE DIFFERENCES
    - Improved Black-Scholes mesher for low volatilities and high
      discrete dividends (thanks to Klaus Spanderen).
    - Added method-of-lines scheme (thanks to Klaus Spanderen).

    DATE/TIME
    - Schedule::until can now be used with schedules built from
      vectors of dates (thanks to GitHub user Grant6899).
    - Added Good Friday to the list of Hungarian and Czech holidays
      (thanks to Matthias Lungwitz).
    - Updated the list of Turkish holidays after 2014 (thanks to
      Matthias Lungwitz).

    MATH
    - Added convenience operators to initialize array and matrices
      (thanks to Peter Caspers).

    TEST SUITE
    - Added test case for CIR++ model (thanks to Klaus Spanderen).

    Thanks go also to Jose Aparicio, Roland Kapl and GitHub user
    lab4quant for smaller fixes and enhancements.


    <strong>Release 1.12.1 - April 16th, 2018</strong>

    %QuantLib 1.12.1 is a bug-fix release for version 1.12.

    It fixes an error that would occur during initialization of the
    test suite when using the newly released Boost 1.67.0.
    Thanks to Klaus Spanderen for the prompt fix.

    The library code is unchanged from version 1.12.

    <strong>Release 1.12 - February 1st, 2018</strong>

    PORTABILITY
    - As announced in the previous release, support for the Dev-C++
      IDE was removed.
    - In April 2018, Microsoft will end its support for Microsoft
      Visual C++ 2008.  Therefore, this is the last version of
      QuantLib to support it with maintained project files.
    - It is now possible to build a usable library with CMake on
      Windows (thanks to Javier G. Sogo).
    - Fix autotools build outside the source tree (thanks to Joshua
      Ulrich).

    INSTRUMENTS AND PRICING ENGINES
    - Added OAS calculation to experimental callable bonds (thanks to
      Bojan Nikolic).
    - Avoided infinite loop for some sets of parameters in
      experimental variance-gamma engine (thanks to Roy Zywina).

    CASH FLOWS
    - It is now possible to build a cash-flow leg from a schedule
      created from a precalculated vector of dates (thanks to Peter
      Caspers).

    MODELS
    - Affine models can now be used to bootstrap a default-probability
      curve (thanks to Jose Aparicio).
    - Added Andreasen-Huge volatility interpolation and local
      volatility calibration (thanks to Klaus Spanderen).
    - Added Rannacher smoothing steps for Heston stochastic local
      volatility calibration (thanks to Klaus Spanderen).

    TERM STRUCTURES
    - Added L2 penalty to fitted parameters of fitted bond discount
      curve (thanks to Robin Northcott).
    - Added an optional trading calendar to the FX-swap rate helper
      and and optional payment lag to the OIS rate helper (thanks to
      Wojciech Slusarski).
    - Fixed inconsistent treatment of strike in experimental CPI
      cap/floor term price surface (thanks to Francis Duffy).
    - Correctly handled the case of overlapping strike regions for
      caps and floors in experimental CPI cap/floor term price surface
      (thanks to Peter Caspers).
    - Fixed calculation of seasonality correction for interpolated
      inflation indexes (thanks to Francis Duffy).
    - Implemented composite zero-yield curve as combination of two
      existing curves via a given binary function (thanks to Francois
      Botha).
    - Fixed interpolation of shift in swaption volatility matrix
      (thanks to Peter Caspers).

    DATE/TIME
    - Updated Chinese calendar for 2018 (thanks to Cheng Li).
    - Added Botswana calendar (thanks to Francois Botha).
    - Fixed a few problems with US calendars (thanks to Mike DelMedico
      and to GitHub user ittegrat).
    - User-added holidays now work correctly when intraday
      calculations are enabled (thanks to Klaus Spanderen for the fix
      and to GitHub user volchemist for the report).

    MATH
    - Fixed monotonicity of Fritsch-Butland and prevented NaNs in some
      cases (thanks to GitHub user Grant6899 for the fix and to Tom
      Anderson for the report).

    DEPRECATED FEATURES
    - The ChiSquareDistribution, NonCentralChiSquareDistribution,
      InverseNonCentralChiSquareDistribution and GammaDistribution
      were renamed to CumulativeChiSquareDistribution,
      NonCentralCumulativeChiSquareDistribution,
      InverseNonCentralCumulativeChiSquareDistribution and
      CumulativeGammaDistribution, respectively (thanks to GitHub user
      IGonza).  The old names are still available as typedefs and will
      be removed in a future release.

    Thanks go also to Marco Craveiro, Dirk Eddelbuettel, Lakshay Garg,
    Guillaume Horel, Alix Lassauzet, Patrick Lewis, and GitHub users
    bmmay, bingoko and tournierjc for smaller fixes and enhancements.


    <strong>Release 1.11 - October 2nd, 2017</strong>

    PORTABILITY
    - This is the last version of QuantLib to support the now obsolete
      Dev-C++ IDE with a maintained project file.  The project will be
      removed in next release.

    INSTRUMENTS AND PRICING ENGINES
    - Added ISDA pricing engine for credit default swaps (thanks to
      Guillaume Horel, Jose Aparicio and Peter Caspers).
    - Added Andersen-Piterbarg engine for the Heston model (thanks to
      Klaus Spanderen).
    - Improved experimental vanna-volga engine for double-barrier
      knock-in options (thanks to Giorgio Pazmandi).
    - Added theta calculation to experimental Kirk spread-option
      engine (thanks to Krzysztof Wos).

    CASH FLOWS
    - Added optional payment lag to fixed, floating and OIS legs
      (thanks to Fabrice Lecuyer and Joseph Jeisman).
    - Fixed yield calculation with 30/360 US day count convention and
      settlement on the 31st of the month (thanks to Frank Xue).

    MODELS
    - Added adaptive successive over-relaxation method for implied
      volatility calculation (thanks to Klaus Spanderen).

    INDEXES
    - Fixed day-count convention and spot lag for CAD LIBOR (thanks to
      Oleg Kulkov).

    TERM STRUCTURES
    - Optionally optimize setting up OIS helpers (thanks to Peter
      Caspers).

    DATE/TIME
    - Added Actual/365 Canadian day count convention (thanks to Andrea
      Maggiulli).

    MATH
    - Added GMRES iterative solver for large linear systems (thanks to
      Klaus Spanderen).
    - Updated Hong Kong calendar up to 2020 (thanks to Nicholas
      Bertocchi and Alix Lassauzet).

    BUILD
    - Added configure switch to enable unity build.

    TEST SUITE
    - Added --fast and --faster flags to the test-suite executable.
      When passed, slower tests are discarded so that the test suite
      runs in just a few minutes.

    DEPRECATED FEATURES
    - Remove the HestonExpansionEngine::numberOfEvaluations method
      (deprecated in version 1.9).
    - Remove the MixedLinearCubicInterpolation and MixedLinearCubic
      constructors not specifying the behavior of the mixed
      interpolation (deprecated in version 1.8).
    - Remove deprecated overloads of the Swaption::impliedVolatility
      and CapFloor::impliedVolatility methods (deprecated in version
      1.9).
    - Remove NoArbSabrModel::checkAbsorptionMatrix method (deprecated
      in version 1.8.1).

    <strong>Release 1.10.1 - August 31st, 2017</strong>

    %QuantLib 1.10.1 is a bug-fix release for version 1.10.

    - Prevented a name clash when using the newly-released Boost 1.65.0
      with g++ 6.3.
    - Added a few missing function declarations in the
      SwaptionVolatilityStructure class (thanks to Peter Caspers).

    <strong>Release 1.10 - May 16th, 2017</strong>

    PORTABILITY
    - Added support for the recently released Visual Studio 2017.
    - Unified Visual Studio solution file.  The provided QuantLib.sln
      file works for all versions from 2010 to 2017.
    - Added support for the recently released Boost 1.64.0 (thanks to
      Klaus Spanderen).
    - Converted non-ASCII characters in source files to UTF-8; this
      should make them work with most editors (thanks to Krzysztof Woś
      and Jose Aparicio).
    - Fixed some compilation issues with older versions of the Sun CC
      compiler and with the gcc 3.4 series.  The offending code has
      simply been disabled; when using those compilers, is also
      suggested to downgrade Boost to an older version since more
      recent ones can give problems.  Boost 1.54.0 was reported to
      work.  It is likely that no further support will be given to
      these compilers in future releases.

    INSTRUMENTS AND PRICING ENGINES
    - Added Heston pricing engine based on Fourier-Cosine series
      expansion (thanks to Klaus Spanderen).
    - Added cash annuity model in Black swaption engine (thanks to
      Peter Caspers, Werner Kuerzinger and Paul Giltinan).
    - Add an optional exogenous discount curve to analytic Black
      European option engine (thanks to Paul Giltinan).

    MODELS
    - Added collocating local-volatility model (thanks to Klaus
      Spanderen).
    - Optionally disable Feller constraint in Cox-Ingersoll-Ross model
      (thanks to Oleksandr Khomenko).

    INTEREST RATES
    - Allow using an arbitrary solver to calculate yield (thanks to
      Daniel Hrabovcak).
    - Update handling of July 4th for US LIBOR fixings (thanks to Oleg
      Kulkov).
    - Added CompoundingThenSimple convention (thanks to Martin Ross).

    INFLATION
    - Use the lagged reference period to interpolate inflation fixings
      (thanks to Francois Botha).

    VOLATILITY
    - Reduce the memory footprint of OptionletStripper1 (thanks to
      Matthias Lungwitz)

    DATE/TIME
    - Updated Chinese calendar for 2017 (thanks to Cheng Li).
    - Added CDS2015 date-generation rule with the correct semiannual
      frequency (thanks to Guillaume Horel).
    - The Iceland calendar used to incorrectly adjust New Year's Day
      to the next Monday when falling on a holiday. That's now fixed
      (thanks to Stefan Gunnsteinsson for the heads-up).
    - Fixed bug that prevented correct calculation of an ECB date on
      the first day of a month (thanks to Nicholas Bertocchi).
    - Fixed bug in Schedule that ignored end-of-month convention when
      calculating reference dates for irregular coupons (thanks to
      Ryan Taylor).
    - Allow passing a schedule to Actual/Actual day counter for
      correct calculation of reference dates (thanks to Ryan Taylor).

    MATH
    - Added harmonic spline interpolation (thanks to Nicholas Bertocchi).

    EXAMPLES
    - Added examples for global optimizers (thanks to Andres Hernandez).

    DEPRECATED FEATURES
    - Removed the SwaptionHelper constructors not taking an explicit
      volatility type (deprecated in version 1.8).
    - Removed the SwaptionVolatilityMatrix constructors not taking an
      explicit volatility type (deprecated in version 1.8).
    - Removed the BlackSwaptionEngine constructor overriding the
      displacement from the given volatility structure (deprecated in
      version 1.8).
    - Removed the FlatSmileSection and InterpolatedSmileSection
      constructors not taking an explicit volatility type (deprecated
      in version 1.8).
    - Removed the RiskyAssetSwapOption constructor taking a side
      (deprecated in version 1.8).

    POSSIBLY BREAKING CHANGES
    - The constructors of a few Libor-like indexes were made
      explicit. This means that code such as the following, which used
      to compile, will now break.  That's probably a good thing.
      \code
      Handle<YieldTermStructure> forecast_curve;
      Euribor6M index = forecast_curve;
      \endcode

    <strong>Release 1.9.2 - February 27th, 2017</strong>

    %QuantLib 1.9.2 is a bug-fix release for version 1.9.1.

    - Prevented errors in yield-curve bootstrapping tests due to an
      incorrect test setup (thanks to Peter Caspers for the heads-up).

    <strong>Release 1.9.1 - January 5th, 2017</strong>

    %QuantLib 1.9.1 is a bug-fix release for version 1.9.

    - Prevented a linking error when multiple compilation units
      included the global ql/quantlib.hpp header (thanks to Dirk
      Eddelbuettel).
    - Prevented a compilation error with gcc 4.4 on RedHat (thanks to
      GitHub user aloupos for the heads-up).
    - Prevented a compilation error with the parallel unit runner and
      the recently released Boost 1.63.0.

    <strong>Release 1.9 - November 8th, 2016</strong>

    PORTABILITY
    - Dropped support for Visual C++ 8 (2005).  As of April 2016, the
      compiler is no longer supported by Microsoft.
    - Allow the parallel test runner to work with Boost 1.62 (thanks
      to Klaus Spanderen for the fix and to Andrei Borodaenko for the
      heads-up).

    INTEREST RATES
    - Allow negative jumps in interest-rate curves. Previously, trying
      to pass one would result in an exception (thanks to Leanpub
      reader Jeff for the heads-up).
    - Added BBSW and Aonia indexes from Australia and BKBM and NZOCR
      indexes from New Zealand (thanks to Fabrice Lecuyer).

    VOLATILITY
    - Added normal implied-volatility calculation to caps/floors
      (thanks to Paolo Mazzocchi).

    INSTRUMENTS
    - Fix a scenario in which a `CompositeInstrument` instance would
      stop receiving notifications (thanks to Peter Caspers for the
      heads-up).
    - Added a few safety checks to the CVA swap engine (thanks to
      Andrea Maggiulli).
    - Auto-deactivate Boyle-Lau optimization for barrier options when
      not using a CRR tree (thanks to Riccardo Ghetta).

    DATE/TIME
    - Changed data type for `Date` serial numbers to `int_fast_32t` to
      improve performance of date calculations (thanks to Peter
      Caspers).
    - Added ECB maintenance period dates for 2017 (thanks to Paolo
      Mazzocchi).
    - Fixed rule for the Japanese Mountain Day holiday (thanks to
      Eisuke Tani).
    - Fixed United States holidays before 1971 (thanks to Nick Glass
      for the heads-up).
    - Added a missing Chinese holiday (thanks to Cheng Li).
    - Ensure correct formatting when outputting dates (thanks to Peter
      Caspers).

    NEW OPT-IN FEATURES

    These features are disabled by default and can be enabled by
    defining a macro or passing a flag to `./configure`.  Feedback is
    appreciated.
    - Enable thread-safe singleton initialization (thanks to GitHub
      user sdgit). The feature can be enabled by uncommenting the
      `QL_ENABLE_SINGLETON_THREAD_SAFE_INIT` macro in
      `ql/userconfig.hpp` on Visual C++ or by passing the
      `--enable-thread-safe-singleton-init` to `./configure` on other
      systems.

    EXPERIMENTAL FOLDER

    The `ql/experimental` folder contains code whose interface is not
    fully stable, but is released in order to get user feedback.
    Experimental classes make no guarantees of backward compatibility;
    their interfaces might change in future releases.

    Changes and new contributions for this release were:
    - OIS with arithmetic average (thanks to Stefano Fondi). A
      corresponding bootstrap helpers is also available.
    - a function to calculate multi-curve sensitivities (thanks to
      Michael von den Driesch).

    <strong>Release 1.8.1 - September 23rd, 2016</strong>

    %QuantLib 1.8.1 is a bug-fix release for version 1.8.

    - A test failure with Visual C++ 14 (2015) was avoided. Up to
      VC++14 update 2, the compiler would inline a call to std::min
      and std::max incorrectly causing a calculation to fail (thanks
      to Ivan Cherkasov for the heads-up).
    - A test failure with the upcoming Boost 1.62 was avoided.  A
      QuantLib test was checking for the stored value of a hash whose
      value changed in Boost 1.62.
    - Miscellaneous fixes for the g1d swaption engine and instrument
      (thanks to Peter Caspers).
    - Whit Monday was no longer a holiday in Sweden since 2005 (thanks
      to Stefano Fondi).
    - A new holiday for election day 2016 was added to the South
      African calendar (thanks to Jasen Mackie).
    - A few missing CMakeLists were added to the distributed release
      (thanks to izavyalov for the heads-up).
    - An irregular last period in a schedule was not reported as such
      (thanks to Schmidt for the heads-up).

    <strong>Release 1.8 - May 18th, 2016</strong>

    PORTABILITY
    - The minimum required Boost version is now Boost 1.43 (May
      2010). However, it is strongly suggested to use a recent
      version, or at least Boost 1.48 (November 2011).
    - Added initial CMake support (thanks to Dmitri Nesteruk). This
      makes it possible to compile %QuantLib on CLion and other
      CMake-based tools.
    - The build now generates and installs pkg-config file on Linux
      systems (thanks to GitHub user njwhite).

    INTEREST RATES
    - Fixed links to documentation for LIBOR indexes (thanks to Jose
      Magana).

    VOLATILITY
    - Added the possibility to price swaptions and to calculate their
      implied volatilities in a Black-like model with normal
      volatilities as well as shifted lognormal (thanks to Peter
      Caspers).
    - Added the possibility to price caps in a Black-like model with
      normal volatilities as well as shifted lognormal (thanks to
      Michael von den Driesch).
    - Caplet strike is correctly recomputed during stripping (thanks
      to Michael von den Driesch).

    INSTRUMENTS
    - Added basic CVA IRS pricing engine (stand alone, no portfolio;
      no WWR, no collateral). Thanks to Jose Aparicio.

    MODELS
    - Black-Scholes processes now return the closed-formula
      expectation, standard deviation and variance over long periods
      (thanks to Peter Caspers).

    CURRENCIES
    - Added Ukrainian hryvnia (thanks to GitHub user
      maksym-studenets).

    MONTE CARLO
    - Use different random-number generators for calibration and
      pricing in Longstaff-Schwartz engine (thanks to Peter Caspers).

    DATE/TIME
    - Added forecast dates for moving holidays to Saudi Arabia
      calendar up to 2022 (thanks to Jayanth R. Varma).
    - Added new Ukrainian holiday, Defender's Day (thanks to GitHub
      user maksym-studenets).
    - Added a few more holidays for South Korea (thanks to Faycal El
      Karaa).

    MATH
    - Added mixed log interpolation (thanks to GitHub user sfondi).
    - Avoid mixing different types while bit-shifting in fast Fourier
      transform on 64-bit systems (thanks to Nikolai Nowaczyk).

    DEPRECATED FEATURES
    - Removed `DateParser::split` method (deprecated in version 1.6).

    TEST SUITE
    - The test suite is now run with a fixed evaluation date instead
      of using today's date. This helps avoid transient errors due to
      holidays. It is still possible to use today's date (or any other
      date) by running it as:
      \code
      quantlib-test-suite -- --date=today
      \endcode
      or
      \code
      quantlib-test-suite -- --date=2016-02-08
      \endcode
      (Thanks to Peter Caspers.)

    NEW OPT-IN FEATURES
    - Added a parallel unit-test runner (thanks to Klaus
      Spanderen). This was successfully used under Linux, but problems
      were reported on Mac OS X and occasionally on Visual C++ 2010.
      The feature requires Boost 1.59 or later and can be enabled by
      uncommenting the `QL_ENABLE_PARALLEL_UNIT_TEST_RUNNER` macro in
      `ql/userconfig.hpp` on Visual C++ or by passing the
      `--enable-parallel-unit-test-runner` to `./configure` on other
      systems.

    EXPERIMENTAL FOLDER
    - Stochastic local-volatility Heston model, (thanks to Klaus
      Spanderen and Johannes Göttker-Schnetmann). Both a Monte Carlo
      and a finite-difference calibration and calculation are
      provided.
    - Laplace interpolation (thanks to Peter Caspers).
    - Global optimizers: Hybrid Simulated Annealing, Particle Swarm
      Optimization, Firefly Algorithm, and Differential Evolution
      (thanks to Andres Hernandez).
    - A SVD-based calculation of the Moore-Penrose inverse matrix
      (thanks to Peter Caspers).

    <strong>Release 1.7.1 - January 18th, 2016</strong>

    %QuantLib 1.7.1 is a bug-fix release for version 1.7.

    - an unneeded dependency on the Boost.Thread library had slipped into
      version 1.7. It is now removed (thanks to GitHub user MattPD).
    - Trying to build a schedule with a 4-weeks tenor would fail. This is
      now fixed (thanks to GitHub user smallnamespace for the heads-up).
    - A couple of errors in the list of past holidays for the Russian MOEX
      calendar was fixed, and the list of holidays for 2016 was added
      (thanks to Dmitri Nesteruk).
    - Chinese holidays for 2016 were updated (thanks to Cheng Li).
    - The correct curve is now used when calculating the at-the-money swap
      rate while building swaptions (thanks to Peter Caspers).

    <strong>Release 1.7 - November 23rd, 2015</strong>

    INTEREST RATES
    - Added rate helper to bootstrap on cross-currency swaps (thanks
      to Maddalena Zanzi). The curve to be bootstrapped can be the one
      for either of the two currencies.
    - Added the possibility for bootstrap helpers to define their
      pillar date in different ways (thanks to Paolo Mazzocchi).  For
      each helper, the date of the corresponding node can be defined
      as the maturity date of the corresponding instrument, as the
      latest date used on the term structure to price the instrument,
      or as a custom date. Currently, the feature is enabled for FRAs
      and swaps.
    - Added the possibility to pass weight when fitting a bond
      discount curve. Also, it is now possible to fit a spread over an
      existing term structure (thanks to Andres Hernandez).

    INFLATION
    - Added Kerkhof seasonality model (thanks to Bernd Lewerenz).
    - Retrieve inflation fixings from the first day of the month
      (thanks to Gerardo Ballabio). This avoids the need to store them
      for each day of the corresponding month.

    VOLATILITY
    - Improve consistency between caplet stripping and pricing (thanks
      to Michael von den Driesch)

    INSTRUMENTS
    - Fixed usage of dividend yield in double-barrier formula (Thanks
      to Dean Raf for the heads-up).
    - Fixed perturbation formula for barrier options.

    MODELS
    - Refine update behavior of GSR model. Depending on the market
      change, only the appropriate recalculations are performed
      (thanks to Peter Caspers).
    - Improve calibration of Heston model (thanks to Peter Caspers).

    MONTE CARLO
    - Added the possibility to return the estimated exercise
      probability from a Longstaff-Schwartz engine (thanks to Giorgio
      Pazmandi).

    SETTINGS
    - Added the possibility to temporarily disable notifications to
      observers (thanks to Chris Higgs). When re-enabled, any pending
      notifications are sent.

    DATE/TIME
    - Added Romanian and Israelian calendars (thanks to Riccardo
      Barone).
    - Added ECB reserve maintenance periods for 2016 (thanks to Paolo
      Mazzocchi).
    - Updated South Korean calendar until the end of 2032 (thanks to
      Paolo Mazzocchi and Faycal El Karaa).
    - Added new Mountain Day holiday for Japan (thanks to Aaron
      Stephanic for the heads-up).
    - Remove MLK day from list of US holidays before 1983 (thanks to
      John Orford for the heads-up).
    - Added Christmas Eve to BOVESPA holidays (thanks to Daniel Beren
      for the heads-up).

    MATH
    - Added polynomial and abcd functions.
    - Added Pascal triangle coefficients.
    - Replaced home-grown implementation of incremental statistics
      with Boost implementation (thanks to Peter Caspers).
    - Added Goldstein line-search method (thanks to Cheng Li).

    NEW OPT-IN FEATURES
    - Added intraday component to dates (thanks to Klaus Spanderen).
      Date specifications now include hours, minutes, seconds,
      milliseconds and microseconds.  Day counters are aware of the
      added data and include them in results.
      The feature can be enabled by uncommenting the
      `QL_HIGH_RESOLUTION_DATE` macro in `ql/userconfig.hpp` on Visual
      C++ or by passing the `--enable-intraday` flag to `./configure`
      on other systems.
    - Added thread-safe implementation of the Observer pattern (thanks
      to Klaus Spanderen). This can be used to avoid crashes when
      using %QuantLib from languages (such as C# or Java) that run a
      garbage collector in a separate thread.
      The feature requires Boost 1.58 or later and can be enabled by
      uncommenting the `QL_ENABLE_THREAD_SAFE_OBSERVER_PATTERN` macro
      in `ql/userconfig.hpp` on Visual C++ or by passing the
      `--enable-thread-safe-observer-pattern` to `./configure` on
      other systems.

    <strong>Release 1.6.2 - September 2015</strong>

    %QuantLib 1.6.2 is a compatibility release. It solves an ambiguous
    name resolution in the test-suite code when Visual Studio and the
    newly released Boost 1.59.0 are used together.

    The library code did not change.

    <strong>Release 1.6.1 - August 3rd, 2015</strong>

    %QuantLib 1.6.1 is a compatibility release. It adds out-of-the-box
    support for the newly released Visual Studio 2015, and avoids use
    of deprecated Boost macros that will be removed in the upcoming
    Boost 1.59.0 release.

    <strong>Release 1.6 - June 23rd, 2015</strong>

    PORTABILITY
    - Enable successful compilation with Boost 1.58 and either gcc or clang.
    - Enable multi-processor compilation on Visual C++ as a project switch
      (thanks to Giorgio Pazmandi).

    DATE/TIME
    - Added Moscow Exchange calendar (thanks to Dmitri Nesteruk).
    - Added 70th anniversary of anti-Japanese day to Chinese calendar
      (thanks to Cheng Li).
    - Fixed Chinese New Year date for 2010 (thanks to Cheng Li).
    - Added nearest-trading-day business day convention (thanks to
      Francois Botha).
    - Prevented normalization of a 7-days period to a 1-week period, since
      this doesn't apply to business days (thanks to Paolo Mazzocchi).
    - Allowed schedules built with a vector of dates to be used for coupon
      generation, given that the required information was provided (thanks
      to Peter Caspers).
    - Added support for Australian Security Exchange (ASX) dates (thanks
      to Maddalena Zanzi).
    - Added ECB dates for April and June 2016 (thanks to Paolo Mazzocchi).

    INSTRUMENTS
    - Extended digital American options to handle knock-off case (thanks
      to Riccardo Ghetta).
    - Extended barrier options to handle KIKO/KOKI barriers (thanks to
      Riccardo Ghetta).
    - Added Ikeda/Kunitomo engine, binomial engine and binary/digital
      engine for double-barrier option (thanks to Riccardo Ghetta).
    - Added Bachelier engine for caps/floors based on normal volatility
      (thanks to Michael von den Driesch).
    - Allowed non strike/type payoffs in finite-differences engine for
      vanilla options (thanks to Joseph Wang).
    - Fixed settlement days of BTP bonds.
    - Fixed generation of schedule for OIS and vanilla swaps.
    - Added support for ASX dates to futures rate helper (thanks to
      Maddalena Zanzi).

    MODELS
    - Moved Markov functional model, GSR model, Gaussian 1D model and
      related engines, processes and term structures from the experimental
      folder to the code library (thanks to Peter Caspers).

    CASH FLOWS
    - Added CMS-spread coupons, including digital (thanks to Peter Caspers).

    INDEXES
    - Added CMS-spread index (thanks to Peter Caspers).
    - Fixed day-count convention for Fed Funds rate.

    TERM STRUCTURES
    - Fixed bug where a valid previous curve state could be a bad guess
      for the next and lead to a bootstrap failure.
    - Allow negative adjustment for futures rate helpers (thanks to Paolo
      Mazzocchi).

    VOLATILITY
    - Added support for normal and displaced lognormal volatility to
      optionlet stripper (thanks to Michael von den Driesch).
    - Allowed calibration of the alpha of the SABR model to the ATM point
      while keeping beta, nu and rho fixed (thanks to Peter Caspers).
    - Added Chambers-Nawalkha implied-volatility approximation (thanks to
      Peter Caspers).
    - Added displaced lognormal swaption volatilities (thanks to Peter
      Caspers).
    - Allowed the optionlet boostrap to continue if one caplet can no be
      matched (thanks to Peter Caspers).
    - Added flat-extrapolation option to swaption ATM volatility matrix
      (thanks to Peter Caspers).
    - Implied swaption volatility cube for Gaussian 1-D model (thanks to
      Peter Caspers).

    MATH
    - Allowed user-defined Jacobian in optimization (thanks to Peter Caspers).

    MISCELLANEA
    - Added IDR, MYR, RUB and VND currencies (thanks to Lucy King).

    DEPRECATED FEATURES
    - Removed deprecated methods and constructors from the
      BlackVarianceTermStructure, BlackVolTermStructure,
      CapFloorTermVolatilityStructure, DateParser,
      FittedBondDiscountCurve, GeneralLinearLeastSquares, Handle,
      LocalVolTermStructure, OptionletVolatilityStructure, Settings,
      SwaptionVolatilityStructure and VolatilityTermStructure classes.

    EXPERIMENTAL FOLDER
    - Finite-difference meshers based on multi-dimensional integrals
      (thanks to Klaus Spanderen).
    - SVI interpolation and a corresponding smile section (thanks to Peter
      Caspers).
    - ZABR volatility model (thanks to Peter Caspers).

    <strong>Release 1.5 - February 10th, 2015</strong>

    PORTABILITY
    - Unified project files for Visual Studio 10 and above.  Different
      solutions are still provided for Visual Studio 10, 11 and 12.

    DATE/TIME
    - Added China Inter-Bank calendar (thanks to Cheng Li).
    - Added half-month modified following convention (thanks to Paolo
      Mazzocchi).
    - Added a few more historical closings for NYSE.
    - Updated the Hong Kong and China calendar for 2015.
    - Updated list of ECB dates up to the first two dates for 2016 (thanks
      to Paolo Mazzocchi).

    INSTRUMENTS
    - Improved Storage and Swing engine (thanks to Klaus Spanderen).
    - Fixed behavior of the Bjerksund Stensland engine for very small
      volatilities (thanks to Klaus Spanderen).
    - Add Heston expansion engine for European options (thanks to Fabien
      Le Floc'h).
    - Caps, floors and swaptions can use a displacement in
      implied-volatility calculation.
    - Added partial-time fixed and floating strike lookback options
      (thanks to Francois Botha).
    - Added binary barrier options (thanks to Riccardo Ghetta).
    - Added binomial engine for barrier options (thanks to Riccardo Ghetta).
    - Added Vecer engine for continuous-averaging Asian options (thanks to
      Bernd Lewerenz).

    CASH FLOWS
    - Added ex-coupon feature to fixed-rate bonds, CPI bonds and bond
      helpers (thanks to Francois Botha).
    - Fix calculation of sinking notionals when the coupon rate is very
      near 0 (thanks to Cheng Li).

    INDEXES
    - Added Shanghai Inter-bank Offering Rate index (thanks to Cheng Li).
    - Added Fed Fund index.
    - Added South-African CPI (thanks to Francois Botha).

    TERM STRUCTURES
    - Improvement to CMS market calibration: enabled use of general coupon
      pricers, added calibration to a term structure of betas (thanks to
      Peter Caspers).
    - InterpolatedZeroCurve can be passed rates with any compounding
      convention and frequency (thanks to Alexandre Radicchi).
    - Bond helpers can now use quotes for either clean or dirty prices
      (thanks to Francois Botha).
    - Added CPI bond helper (thanks to Francois Botha).
    - Better handling in rate helpers of evaluation dates which are not
      business dates.
    - Spreaded curves allow extrapolation if their underlying curve does
      (thanks to Peter Caspers).
    - Fixed inflation-rate interpolation (thanks to Amine Ifri).

    MATH
    - Added generation of student-t distributed random numbers
      (thanks to Jose Aparicio).
    - Added Folin's integration methods (thanks to Klaus Spanderen).
    - Added mixed backward-flat/linear interpolation (thanks to Peter
      Caspers).
    - Improved performance of matrix multiplication (thanks to Peter
      Caspers).
    - Fixed wrong primitive calculation in mixed interpolation (thanks to
      Peter Caspers).
    - Fixed corner case for finite-difference Newton solver leading to
      infinite derivative (thanks to Peter Caspers).
    - Added Maddock's cumulative normal distribution (thanks to Klaus
      Spanderen).
    - Added bivariate cumulative student t distribution (thanks to Michal
      Kaut).

    LATTICES
    - Calculate option delta/gamma on binomial trees using Hull formulas
      (thanks to Riccardo Ghetta).

    MISCELLANEA
    - A number of small performance improvements (thanks to Michael Sharpe).

    EXAMPLES
    - Added example for Gaussian 1-D models (thanks to Peter Caspers).
    - Added examples for latent models and basket losses (thanks to Jose
      Aparicio).
    - Added example for multi-dimensional integral (thanks to Jose Aparicio).

    DEPRECATED CLASSES
    - Removed deprecated Domain and Surface classes.

    EXPERIMENTAL FOLDER
    - Extended credit risk plus model (thanks to Peter Caspers).
    - No-arbitrage Sabr model with corresponding volatility-cube, smile
      section and interpolation classes (thanks to Peter Caspers).
    - A number of latent models for basket losses (thanks to Jose Aparicio).
    - Complex chooser option (thanks to Nathan Kruck, Ahmed Ayadi and
      Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
    - Holder-extensible option (thanks to Nathan Kruck, Ahmed Ayadi and
      Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
    - Partial-time barrier option (thanks to Nathan Kruck, Ahmed Ayadi and
      Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
    - Two-asset correlation option (thanks to Ilyas Rahbaoui and Driss
      Aouad from the IMAFA program at Polytech'Nice Sophia).

    <strong>Release 1.4.1 - November 17th, 2014</strong>

    %QuantLib 1.4.1 is a compatibility release. It fixes a number of
    compilation errors that surfaced when using %QuantLib 1.4 with
    Clang 3.5 and Boost 1.57. Thanks to Tim Smith for the heads-up.

    If you are not using Clang, you don't need to upgrade from
    %QuantLib 1.4 to 1.4.1.

    <strong>Release 1.4 - February 26th, 2014</strong>

    PORTABILITY
    - Boost 1.39 or later is now required.
      We felt this could be enforced without causing grief to
      virtually anyone, given that 1.39 was released back in May 2009.
      We don't expect many people being stuck with an earlier version.
      This allows one to use make_shared to create shared_ptr
      instances, which has a number of advantages.  Unfortunately, the
      C++03 implementation (which is still used by a number of older
      compiler that we're supporting) only allows a maximum of 9
      constructor arguments, so we won't be able to use it everywhere.
    - Support for Visual C++ 2003 (VC++7) was dropped.
      The compiler is now more than 10 years old and no longer
      supported by Microsoft.  Keeping the support is not worth the
      time and effort required.  Anybody who is still stuck with this
      compiler and needs the support can fork the repository and
      maintain the changes.
    - Specific support for Visual C++ 2013 (VC++12) is not yet
      available; however, version checks in the code were relaxed so
      that one can import and convert the VC++11 solution without
      causing errors when auto-linking the generated libraries.
    - Fixed Clang warnings.
    - Use deprecated attribute of supported compilers.
      This replaces the QL_DISABLE_DEPRECATED mechanism that
      conditionally removes the features and causes the compiler
      itself to emit warnings if the features are used.  The user
      can enable or disable the warnings by the means provided by
      the compiler.
    - Allow singletons to work under Visual C++ when CLR is enabled
      (thanks to Simon Shakeshaft).
    - Fixed compilation errors when using STLport (thanks to Marcello
      Pietrobon for the heads-up).

    CONFIGURATION
    - Added switch to enable OpenMP-based parallelism (thanks to
      Joseph Wang).  Currently, this is only used in a few loops in
      the finite-differences and tree frameworks.

    DATE/TIME
    - Added Diamond Jubilee bank holiday to UK calendar.
    - Added Royal Wedding bank holiday to UK calendar (thanks to
      Whit Armstrong for the heads-up).
    - Added utilities to parse and format a date with the extended
      format implemented in Boost.Date (thanks to Michael von den
      Driesch).  The previous parsing utility was deprecated.
    - Added Actual/365 (No Leap) day counter (thanks to Nick Glass).
    - Updated most moving holidays for 2014.
    - Fixed a Schedule bug where a combination of backwards generation
      and end-of-month convention would result in missing or
      duplicated dates (thanks to Nicholas Manganaro for the heads-up).

    INSTRUMENTS
    - Fixed Delta and Gamma calculation in Ju quadratic engine (thanks
      to Fabien Le Floc'h).
    - Improved calculation in finite-differences Asian options when
      the running average is much greater than the forward value
      (thanks to Klaus Spanderen).
    - Fixed Theta issue for some American FDM engines (thanks to Klaus
      Spanderen).
    - Fix annuity computation for CMS coupons (thanks to Peter Caspers).
    - Enabled case r=0 in Barone-Adesi/Whaley approximation engine
      (thanks to Klaus Spanderen).
    - When building a swaption with MakeSwaption, use the fixed tenor
      of the underlying swap index if none is given explicitly.

    MODELS
    - Allow for calibration of just a subset of a model's parameters.
      Pre-built constraint are provided for calibration of an
      Hull-White model while fixing the mean reversion, and for
      calibration of a Markov functional model while fixing the first
      component of the piecewise volatility. (Thanks to Peter Caspers.)
    - Allow recalculation of exercise and end dates in swaption and
      cap helpers when the evaluation date changes (thanks to Peter
      Caspers).
    - Allowed negative strikes in BlackFormula, as long as the strike
      plus the displacement is still positive (thanks to Peter
      Caspers).
    - Added calculation of implied volatility from Bachelier price in
      BlackFormula (thanks to Gary Kennedy).
    - Added Broadie-Kaya exact simulation schema to Heston model
      (thanks to Klaus Spanderen).
    - Fixed upper/lower bound calculation for internal constraint in
      calibrated model (thanks to Peter Caspers).

    CASH FLOWS
    - Added support for ex-coupon dates to cashflow calculations
      (thanks to Nick Glass). Currently, ex-coupons dates can be
      specified for fixed rate bonds.
    - Fixed calculation of duration and convexity when using
      Act/Act(ISMA) (thanks to Nick Glass).

    INDEXES
    - Fixed IborCoupon construction with null fixing days.
      The coupon was used the passed fixing days instead of the ones
      previously processed by the base class constructor (thanks to
      Lisa Ann and Gerardo Ballabio for the heads-up).
    - Add a clone() method to SwapIndex which allows to change the
      tenor (thanks to Peter Caspers).
    - Ignore inflation-index fixings stored at dates later than the
      evaluation date.
    - Added utility class for creating custom Region instances to be
      passed to inflation indexes.

    TERM STRUCTURES
    - Prevent some errors when linking a null term structure to a Handle.
      When settings a null term structure to a Handle used as an
      underlying for another curve (say, a zero-spreaded curve), the
      latter tries to reset the jumps in the base class and fails.
      This error is now trapped. (Thanks to Christoph Breig for
      the heads-up.)
    - Fix interpolation of option dates in SwaptionVolatilityDiscrete
      and derived classes when evaluation date changes (thanks to Shen
      Hui).
    - Piecewise-spreaded curve can now choose interpolation (thanks to
      Mario Aleppo).

    MATH
    - Extended Sobol direction numbers up to 21200 dimensions with Joe
      Kuo 6 searching rule (thanks to Cheng Li).
    - Added class for two-dimensional integration (thanks to Klaus
      Spanderen).
    - Added Maddock inverse-cumulative normal distribution from Boost
      (thanks to Klaus Spanderen).
    - Added modified Bessel functions (thanks to Klaus Spanderen).

    EXPERIMENTAL FOLDER
    - Deprecated features were removed from experimental code.
    - Added initial implementation of catastrophe bond (thanks to
      Grzegorz Andruszkiewicz).
    - Added Vanna/Volga pricing engine for FX barrier options.
      Engines were provided for both single- and double-barrier FX
      options. An analytic engine was also provided for double-barrier
      equity options (thanks to Yue Tian).
    - Added Hagan pricing engine for irregular swaptions (thanks to
      Andre Miemiec).
    - Added simulated-annealing optimizer (thanks to Peter Caspers).
    - Added rebated exercise class (thanks to Peter Caspers).
    - Added pricing engine for arbitrary European payoffs under the
      Heston model (thanks to Klaus Spanderen).
    - Added linear terminal swap rate model pricer for CMS coupons
      (thanks to Peter Caspers).
    - Reorganized functional Markov model.  Added one-factor GSR
      model, and float/float swap and swaption with a number of
      corresponding engines. (Thanks to Peter Caspers.)
    - The Levy engine for continuous-averaging Asian option now checks
      that the averaging period doesn't start in the future. Also, it
      allows the b=0 case that would raise an exception until now.
      (Thanks to Klaus Spanderen.)
    - Convertible bond now updates correctly when any of its
      observables changes.
    - Extended generalized Hull-White model (thanks to Cavit Hafizoglu).
      The model now allows to choose the mapping function between short
      rate and state variable, and includes the case of constant
      parameters.

    <strong>Release 1.3 - July 24th, 2013</strong>

    PORTABILITY
    - Enabled g++ compilation in C++11 mode.
    - Added VC++11 projects (thanks to Edouard Tallent).
    - Added x64 target to VC++10 and VC++11 projects (thanks to Johannes
      G&ouml;ttker-Schnetmann).
    - Removed most level-4 warnings in VC++ (thanks to Michael Sharpe).
    - Removed warnings in VC++ when compiling for the x64 platform (thanks
      to Johannes G&ouml;ttker-Schnetmann).

    DATE/TIME
    - Fixed holiday for Japanese calendar (thanks to Sebastien Gurrieri).
    - Added Epiphany (introduced in 2011) to Polish calendar (thanks to
      katastrofa).
    - Updated South-Korean calendar for 2013 (thanks to Faycal El Karaa).
    - Updated Chinese calendar for 2012 (thanks to Cheng Li).
    - Updated calendar for 2013 for China, Hong Kong, India, Indonesia,
      Singapore, Taiwan and Turkey.
    - Fixed a few Mexican holidays.
    - Prevented out-of-bound access to degenerate schedule.

    INSTRUMENTS
    - Finite-difference Bermudan swaption engines for the G2++ and the
      Hull-White models (thanks to Klaus Spanderen).
    - Added analytic Heston-Hull-White pricing engine for vanilla option
      using the H1HW approximation (thanks to Klaus Spanderen).
    - Managed underlying start delay in Jamshidian swaption engine (thanks
      to Peter Caspers).

    MODELS
    - Added calibration to GARCH model (thanks to Slava Mazur).
    - Fixed forward-looking bias in Garch11 calculation (thanks to Slava
      Mazur).

    CASH FLOWS
    - Use correct default for evaluation date in a few CashFlows methods
      (thanks to Peter Caspers).
    - Yield-based NPV calculation now uses coupon reference dates; this
      fixes small discrepancies when using day counters such as ISMA
      act/act (thanks to Henri Gough and Nick Glass).
    - Fixed start and end dates for convexity adjustment of in-arrears
      floating-rate coupon (thanks to Peter Caspers).

    INDEXES
    - Added inspector for the joint calendar used by Libor indexes.
    - Added method to clone a swap index with a different discount curve
      (thanks to Peter Caspers).

    TERM STRUCTURES
    - Fixed degenerate case for ABCD volatility (thanks to Peter Caspers).
    - Relaxed extrapolation check for default-probability curves.  When
      calculating default probabilities between two dates or times, allow
      the first to precede the reference date. This effectively assumes
      that the default probability before the reference is null, and helps
      in cases where a coupon protection extends a couple of days before
      the reference due to adjustments (for instance, when the protection
      starts on a Saturday and the reference is rolled to the following
      Monday).
    - Pass correct ATM forward rate to smile section of InterpolatedSwaptionVolatilityCube
      (thanks to Peter Caspers).
    - Added exogenous discount to OptionletStripper1 (thanks to Peter
      Caspers).

    MATH
    - Added Sobol brownian-bridge random sequence generator (thanks to
      Klaus Spanderen).
    - Added Richardson-extrapolation utility for numerical methods (thanks
      to Klaus Spanderen).
    - Added differential evolution optimizer (thanks to Ralph Schreyer and
      Mateusz Kapturski).
    - Added special case to close()/close_enough() when either value is 0;
      previously, they would always return false which could be surprising
      (thanks to Simon Shakeshaft for the fix).
    - Fixed Gamma distribution tail (thanks to Ian Qsong).
    - Ensure that the last function call inside a solver is passed the
      root (thanks to Francis Duffy).
    - Implemented Lagrange boundary condition for cubic interpolation
      (thanks to Peter Caspers).
    - Increased precision in tail of West's bivariate cumulative normal
      (thanks to Fabien Le Floc'h).
    - Improved calibration of SABR interpolation by allowing different
      starting points (thanks to Peter Caspers).
    - Moved FFT and autocovariance implementations from experimental
      folder to core library.

    FINITE DIFFERENCES
    - Added time-dependent Dirichlet boundary condition (thanks to Peter
      Caspers).

    UTILITIES
    - Implicit conversions of shared_ptr to bool are now explicit; they
      have been removed in C++11 (thanks to Scott Condit).

    EXPERIMENTAL FOLDER

    The ql/experimental folder contains code which is still not fully
    integrated with the library or even fully tested, but is released in
    order to get user feedback.  Experimental classes are considered
    unstable; their interfaces might change in future releases.

    New contributions for this release were:
    - Two-asset barrier option and related engine (thanks to
      IMAFA/Polytech'Nice students Qingxiao Wang and Nabila Barkati).
    - ODE solver (thanks to Peter Caspers).
    - Markov functional model (thanks to Peter Caspers).

    <strong>Release 1.2.1 - September 10th, 2012</strong>

    Bug-fix release.

    <strong>Release 1.2 - March 6th, 2012</strong>

    PORTABILITY
    - Microsoft Visual C++ 2010 no longer needs to disable uBlas code.
    - %QuantLib now ships with an updated specification file for
      building RPMs (thanks to Matt Fair).

    DATE/TIME
    - When EOM was specified, a schedule's end date was moved to the
      end of month even if the 'Unadjusted' convention was given.
      This is now fixed.
    - When a daily frequency was used, a schedule could end up
      containing duplicated dates.  This is now fixed (thanks to
      Simone Medori for the bug report).
    - Added method to return truncated schedule.
    - Fixed Swedish Midsummer Eve's date (thanks to Gary Kennedy).
    - Added South Korea holidays for 2011/2012 (thanks to Charles
      Chongseok Hyun and Faycal El Karaa).
    - Added holidays for 2011 to China, Hong Kong, India, Indonesia,
      Saudi Arabia, and Taiwan calendars.
    - Added ECB maintenance dates for 2012 and 2013.
    - Greatly improved performance of business/252 day counter.  The
      previous implementation would count the business days between
      two dates at each invocation. The new implementation caches
      dynamically the count of business days for whole months and
      years, so that after a while only the first and last few days
      are counted.

    INSTRUMENTS
    - The AssetSwap instrument now supports non-par repayment.
    - Added specialized class for Italian CCTEU (certificato di
      credito del tesoro).
    - Added CPI-linked swaps, bonds, and cap/floors.

    CASH FLOWS
    - Added CashFlows::npvbps() method to calculate NPV and BPS in a
      single loop to improve performance.

    INDEXES
    - Better detection of forecast/past fixings for inflation indexes.
      When an interpolated index is asked for a fixing at the
      beginning of a month, the fixing for the following (which would
      have zero weight in the interpolation) is no longer required.
      Also, if a fixing is loaded in the index time series, it can be
      used even its observation lag has not fully elapsed.

    TERM STRUCTURES
    - Vastly improved the performance of piecewise yield curve
      bootstrap.  Anchoring the evaluation date (see below) provides a
      further improvement.
    - Moved CPI-volatility interface from experimental folder to the
      core library.

    MATH
    - Added Newton 1-D solver with finite difference derivatives.
    - Improved interface for linear least-square regression (thanks to
      Slava Mazur).

    FINITE DIFFERENCES
    - Added TR-BDF2 scheme (thanks to Fabien Le Floc'h).
    - Moved stable parts of 2D finite-difference framework from the
      experimental folder to the core library.

    UTILITIES
    - Added resetEvaluationDate() and anchorEvaluationDate() methods
      to enable/disable change of evaluation date at midnight,
      respectively.  Anchoring the evaluation date also improves the
      performance of some calculations.

    PATTERNS
    - Fixed possible problem in LazyObject notification logic.  The
      previous implementation would pass obsolete information to
      observers that asked for data in their update() method (which is
      not advised, but possible).  This is no longer the case.

    EXPERIMENTAL FOLDER

    The ql/experimental folder contains code which is still not fully
    integrated with the library or even fully tested, but is released
    in order to get user feedback.  Experimental classes are
    considered unstable; their interfaces might change in future
    releases.

    New contributions for this release were:
    - Spread option and related engine (thanks to IMAFA/Polytech'Nice
      students Meryem Chibo and Samad Abdessadki).
    - Writer-extensible option and related engine (thanks to
      IMAFA/Polytech'Nice students Delphine Bouthier, Marine Casanova,
      and Xavier Caron).
    - Levy engine for continuous-averaging Asian options (thanks to
      IMAFA/Polytech'Nice students Yasmine Lahlou and Amine Samani).
    - Simple Virtual Power Plant and related finite-difference (FD)
      engine (thanks to Klaus Spanderen).
    - FD solver and vanilla spread engine for Kluge-Ornstein-Uhlenbeck
      process (thanks to Klaus Spanderen).
    - Added generic n-dimensional FD solver (thanks to Klaus Spanderen).
    - Added FD pricing engine for a simple storage option based on an
      exponential Ornstein Uhlenbeck process (thanks to Klaus
      Spanderen).
    - Added vanilla and swing option FD pricer for Kluge model (thanks
      to Klaus Spanderen).
    - Added FD pricing engine for a simple swing option based on the
      Black-Scholes model (thanks to Klaus Spanderen).

    <strong>Release 1.1 - May 23rd, 2011</strong>

    PORTABILITY
    - Added support for Microsoft Visual C++ 2010.
    - Fixed m4 macro for %QuantLib detection.  It now works also when asked
      for versions such as 1.1 (as opposed to 1.1.0).

    DATE/TIME
    - Added Russian calendar.
    - Revamped time-series iterators (thanks to Slava Mazur.)  Iterators
      on dates and values were added, as well as C++0X-style cbegin() and
      cend() iterators.

    INSTRUMENTS
    - Added a few inspectors to zero-coupon inflation swaps.
    - Added Kirk approximation for two-asset spread options.
    - Added specialized BTP class (Italian government bonds) and related
      RendistatoCalculator class to help instantiation of this type of
      FixedRateBond.
    - Added analytic pricing engine for the piecewise-constant
      time-dependent Heston model.
    - Added paymentCalendar to FixedRateBond, possibly different
      than the one used for accrual-date calculation.

    PROCESSES
    - Added Quadratic Exponential discretization scheme for the Heston
      process, including martingale correction.

    INDEXES
    - Added inspector for discounting curve to swap index (thanks to Peter
      Caspers.)
    - Added exogenous discounting to all swap indexes.
    - Added SONIA index.
    - Added HICPXT indexes.

    TERM STRUCTURES
    - Added time-based interface to inflation curves.
    - Piecewise zero-spreaded term structure can now manage spread with
      any compounding (thanks to Robert Philipp.)
    - FittedBondDiscountCurve now works with any BondHelpers, not only
      FixedRateBondHelpers.
    - Added Svensson curve-fitting method (thanks to Alessandro Roveda.)

    MATH
    - Added Ziggurat random-number generator (thanks to Kakhkhor
      Abdijalilov.)
    - Added experimental copula-based random-number generators (thanks to
      Hachemi Benyahia.)
    - More performant implementation of inverse cumulative distribution
      (thanks to Kakhkhor Abdijalilov.)
    - More performant mt19937 implementation (thanks to Kakhkhor
      Abdijalilov.)
    - Added more copulas (thanks to Hachemi Benyahia.)  The new formulas
      are for Ali-Mikhail-Haq copula, Galambos copula, Husler-Reiss
      copula, and Plackett copula.
    - Added autocovariance calculation (thanks to Slava Mazur.)

    MONTE CARLO
    - Improved LSM basis system (thanks to Kakhkhor Abdijalilov.)

    UTILITIES
    - Reworked Null class template (thanks to Kakhkhor Abdijalilov.)  The
      new implementation avoids the need for a macro on 64-bit systems and
      automatically covers all floating-point and integer types.

    EXPERIMENTAL FOLDER

    The ql/experimental folder contains code which is still not fully
    integrated with the library or even fully tested, but is released in
    order to get user feedback.  Experimental classes are considered
    unstable; their interfaces might change in future releases.

    New contributions for this release were:
    - 2D finite-difference Bates engine based on the partial integro
      differential equation.
    - 2D finite-difference engine for Black-Scholes processes (including
      local volatility.)
    - Black-Scholes process with support for vega stress test (thanks to
      Michael Heckl.)
    - Extended Ornstein-Uhlenbeck process.
    - Margrabe option (thanks to IMAFA/Polytech'Nice students Marius Akre,
      Michael Benguigui, and Yanice Cherrak.)
    - Simple chooser option (thanks to IMAFA/Polytech'Nice students
      Clement Barret, Fakher Braham, and Mohamed Amine Sadaoui.)
    - Generalized Hull-White model (thanks to Cavit Hafizoglu.)  The
      generalized model can take piecewise-constant parameters instead of
      constant ones. A matching generalized Ornstein-Uhlenbeck process was
      also added.
    - Variance-gamma implementation (thanks to Adrian O'Neill.)
      Contributed classes include a variance-gamma process and model (with
      data but no behavior at this time) and a couple of working engines
      for European options.
    - Hybrid products in the McBasket framework (thanks to Andrea Odetti.)
      Path pricers now take a vector of YieldTermStructures that contains
      the (possibly stochastic) yield curves.
    - Delta calculator for FX options (thanks to Dimitri Reiswich.)

    <strong>Release 1.0.1 - September 17th, 2010</strong>

    Bug-fix release.

    <strong>Release 1.0 - February 24th, 2010</strong>

    PORTABILITY
    - Fixes for x64 Visual Studio compilation (thanks to Craig Miller.)
    - Enabled language extensions in Visual Studio projects.
    - Prevented make errors with older shells (thanks to Walter Eaves.)

    DATE/TIME
    - Changes to end-of-month adjustment. In a schedule, the Unadjusted
      convention now supersedes a non-null calendar and causes dates to
      roll on the unadjusted end of month (possibly a holiday.)
    - Added new date-generation rule for CDS (thanks to Jose Aparicio.)
    - Fix for CDS fair-upfront calculation (thanks to Jose Aparicio.)
      Previously, fair-upfront calculation required a non-null upfront
      to begin with. This is no longer the case.

    INSTRUMENTS
    - Fixed discounting of dividends on convertible-bond grid (thanks to
      Benoit Houzelle and Samuel Lerouge.)

    CASH FLOWS
    - A number of CashFlows methods now return a meaningful result even
      if the passed leg is empty.

    PROCESSES
    - Changed default discretization for Heston process.  The new
      default (giving a better performance) is quadratic exponential
      with Martingale correction.

    TERM STRUCTURES
    - Removed ambiguous parRate member functions from YieldTermStructure
      interface.

    EXAMPLES
    - Added market-model example.

    EXPERIMENTAL FOLDER

    The ql/experimental folder contains code which is still not fully
    integrated with the library or even fully tested, but is released in
    order to get user feedback.  Experimental classes are considered
    unstable; their interfaces might change in future releases.

    New contributions for this release were:
    - Longstaff-Schwartz algorithm for basket products including coupon
      payments (thanks to Andrea Odetti;)
    - added sparse incomplete LU preconditioner for 2D finite-difference
      models (thanks to Ralph Schreyer.)


    <strong>Release 0.9.9 - November 2009</strong>

    PORTABILITY
    - Fixes for 64-bit compilation.
    - Fixes for Sun Solaris compilation (thanks to Andreas Spengler.)

    CASH FLOWS
    - Added overnight-index coupon.
    - Added inflation coupons.
    - Parameterized CashFlows functions with explicit flag specifying
      whether to include settlement-date cash flows.
    - Added cash-flow related flags to Settings class. They determine
      whether or not to include today's and/or settlement date's cash
      flows. They can be overridden while calling CashFlows functions.

    DATE/TIME
    - Added EUWAX calendar.
    - Updated 2009 holidays for China, Hong Kong, India, Indonesia,
      Singapore, and Taiwan.
    - Removed Easter Monday from Canadian holidays (thanks to Matt Knox.)
    - Added weekend-only calendar.

    INDEXES
    - Added EONIA index.
    - Added French HICP and Australian CPI inflation indexes.

    INSTRUMENTS
    - Added overnight-index swaps (including helper for yield-curve bootstrap.)
    - Added inflation cap/floors (including interface for inflation cap/floor
      volatility structures.)
    - Added inspectors for previous and next coupon dates to Bond class.
    - Added implied z-spread calculation for bonds (thanks to Nathan Abbott.)
    - Added inspector to see whether a bond is still tradable (as opposed
      to not expired.)
    - Added constructor for fixed-rate bonds taking a generic InterestRate
      instance (thanks to Piter Dias.)
    - Added upfront to credit default swaps, including application to CDS
      helpers (thanks to Jose Aparicio.)
    - Added conventional CDS spread calculation (thanks to Jose Aparicio.)
    - Enabled non-spot inflation swaps.
    - Migrated asset swaps to pricing-engine framework.
    - Migrated inflation swaps to pricing-engine framework.
    - Migrated old average-strike Asian option pricer to pricing-engine
      framework (thanks to IMAFA students Jean Nkeng, Adrien Pinatton,
      and Alpha Sanou Toure.)

    PRICING ENGINES
    - Added builders for a few Monte Carlo engines.
    - Most Monte Carlo engines can now specify either relative or absolute
      target tolerance.
    - Some Monte Carlo engines can now specify either an absolute number
      of time steps or a number of time steps per year.
    - Added choice of evolver scheme to finite-difference vanilla engines.

    MATH
    - Implemented Parabolic and Fritsch-Butland cubic interpolations.
    - Added BFGS optimizer (thanks to Frederic Degraeve.)
    - Added 1D and 2D kernel interpolation (thanks to Dimitri Reiswich.)
    - Added Akima and overshooting-minimization spline algorithms (thanks
      to Sylvain Bertrand.)
    - Added FFT implementation (thanks to Slava Mazur.)

    RANDOM NUMBERS
    - Added Luescher's luxury random number generator (a proxy for Boost
      implementation.)

    TERM STRUCTURES
    - Added hook to swap-rate helpers for external discounting term
      structure (thanks to Roland Lichters.)
    - Added seasonality to inflation term structures (thanks to Piero Del
      Boca and Chris Kenyon.)

    EXPERIMENTAL FOLDER

    New contributions for this release were:
    - risky bonds and asset-swap options (thanks to Roland Lichters;)
    - spreaded hazard-rate curves (thanks to Roland Lichters;)
    - compound options (thanks to Dimitri Reiswich;)
    - refactored CDS options (thanks to Jose Aparicio;)
    - finite-differences solver for the hybrid Heston Hull-White model,
      including calibration (thanks to Klaus Spanderen;)
    - finite-differences Asian-option engines (thanks to Ralph Schreyer;)
    - machinery for default-event specification (thanks to Jose Aparicio;)
    - recursive CDO engine (thanks to Jose Aparicio.)


    <strong>Release 0.9.7 - November 18th, 2008</strong>

    PORTABILITY
    - Microsoft Visual C++ configurations have been renamed. The
      default Debug and Release configurations now link to the DLL
      version of the common runtime library. The names of other
      configuration should now be more descriptive.
    - Fixes for Solaris build.

    BONDS
    - Added bond example (thanks to Florent Grenier.)
    - Added support for amortizing bonds (thanks to Simon Ibbotson.)

    CASH FLOWS
    - Added two more cashflow analysis functions (thanks to Toyin Akin.)

    DATE/TIME
    - Added bespoke calendar.

    INDEXES
    - Added GBP/USD/CHF/JPY swap-rate indexes.
    - Fixed USD LIBOR calendar (settlement, not NYSE.)

    MARKET MODELS
    - Added first displaced-diffusion stochastic-volatility evolver.

    PRICING ENGINES
    - Monte Carlo average-price options now uses past fixings correctly.

    QUOTES
    - added LastFixingQuote, a Quote adapter for the last available
      fixing of a given index.

    EXPERIMENTAL FOLDER

    New contributions for this release were:
    - time-dependent binomial trees (thanks to John Maiden.)
    - a new multidimensional FDM framework based on operator splitting
      using Craig-Sneyd, Hundsdorfer or Douglas schemes (thanks to
      Andreas Gaida, Ralph Schreyer, and Klaus Spanderen.)
    - implementations of Black-variance curve and surface taking a set
      of quotes as input (thanks to Frank Hövermann.)
    - synthetic CDO engines (thanks to Roland Lichters.)
    - variance options, together with a Heston-process engine (thanks
      to Lorella Fatone, Francesca Mariani, Maria Cristina Recchioni,
      and Francesco Zirilli.)
    - a commodity framework, including instruments such as energy
      futures and energy swaps (thanks to J. Erik Radmall.)
    - quanto-barrier options (thanks to Paul Farrington.)
    - amortizing bonds (thanks to Simon Ibbotson.)
    - a perturbative engine for barrier options (thanks to Lorella
      Fatone, Maria Cristina Recchioni, and Francesco Zirilli.)

    <strong>Release 0.9.6 - August 6th, 2008</strong>

    Bug-fix release for %QuantLib 0.9.5.  It fixes a bug that would
    cause bootstrapped term structures to silently switch to linear
    interpolation when log-linear was requested.

    <strong>Release 0.9.5 - July 30th, 2008</strong>

    CREDIT FRAMEWORK

    New credit framework due to the joint efforts of StatPro Italia,
    Roland Lichters, Chris Kenyon, and Jose Aparicio. The framework
    currently include:
    - Interface for default-probability term structure and adapters for
      hazard-rate and default-density structures.
    - Flat hazard-rate curve.
    - Interpolated hazard-rate and default-density curves.
    - Credit-default swaps (mid-point and integral engines.)
    - Bootstrapped piecewise default-probability curve.
    - CDS example.

    PORTABILITY
    - Added support for Microsoft Visual C++ 2008 (Boost 1.35 is required
      for this compiler.)
    - Fixes for Cygwin build.

    EXPERIMENTAL FOLDER

    The new ql/experimental folder contains code which is still not
    fully integrated with the library, but is released in order to get
    user feedback.  Experimental classes are considered unstable;
    their interfaces are likely to change in future releases. The
    folder currently include:
    - Generic MC basket option (thanks to Andrea Odetti.)
    - CDS option (thanks to Roland Stamm.)
    - Nth-to-default swap (thanks to Roland Lichters.)
    - Extended Black-Scholes-Merton process (thanks to Frank H&ouml;vermann.)
    - Quanto-adjusted coupons and averaged coupons (thanks to Toyin Akin.)
    - Callable bonds (thanks to Allen Kuo.)
    - New framework for volatility term structures.
    - Sensitivity analysis functions.

    CALENDARS
    - Added 2008 holidays for China, India, Indonesia, Singapore, and Taiwan.
    - Added one-off holiday (President Reagan's and Ford's funerals) to
      NYSE calendar.
    - Fixed South Korea calendar (thanks to Charles Chongseok Hyun.)

    CURRENCIES
    - Added Peruvian currency.

    DATES
    - Added date-generation rules for CDS schedules (i.e., rolling to the
      20th of the month.)

    INDEXES
    - Added SEK LIBOR index.

    INSTRUMENTS
    - Ported Himalaya and Everest options to pricing-engine framework
      (thanks to the IMAFA students at Polytech'Nice Sophia:
      J&eacute;r&ocirc;me Bessi, S&eacute;bastien Bonifaci, Benjamin
      Degerbaix and Renaud Pentel.)

    MATH
    - Added matrix determinant.
    - Added QR matrix decomposition.
    - Added a number of copulas (thanks to Marek Glowacki.)
    - Added constrained cubic spline.
    - Implemented derivative and second derivative of log-interpolations.
    - Added Gauss-Lobatto integration.
    - Added student-t distribution (thanks to Roland Lichters.)

    MODELS
    - Added calibrated GJR-GARCH model (thanks to Yee Man Chan.)
    - Added Feller constraint to Heston model.

    PRICING ENGINES
    - Refactored variance-swap engines (the underlying stochastic process
      is now passed to the pricing engine.)
    - Added GJR-GARCH pricing engines for vanilla options (thanks to Yee
      Man Chan.)

    PROCESSES
    - Added Euler end-point discretization (thanks to Frank H&ouml;vermann.)
    - Added GJR-GARCH process (thanks to Yee Man Chan.)
    - Added Bates process.

    TERM STRUCTURES
    - Added turn-of-year effect to yield-curve bootstrapping (generalized
      to multiple jumps at arbitrary dates.)
    - Added local bootstrap of forward rates (thanks to Simon Ibbotson.)
    - Disabled copies of interpolated curves (the existing behavior was
      incorrect. A fix to re-enable copying will be included in a future
      release.)

    VOLATILITY
    - Added constant cap/floor term volatility structure.
    - Added stripped optionlet.


    <strong>Release 0.9.0 - December 24th, 2007</strong>

    PORTABILITY
    - Fixes for MSYS and Cygwin build.
    - Fixes for VC++ build with CLR support enabled.
    - Dropped MetroWerks CodeWarrior support.

    CALENDARS
    - Fix for business-days calculation (thanks to Piter Dias.)
    - Updated Hong Kong's holidays for 2008 and China's for 2007.
    - Added new holiday to Canadian calendars (thanks to Matt Knox.)
    - Fixed joint-calendar specification (thanks to Jay Walters.)
    - Split Canadian calendar into settlement and TSX (thanks to Matt Knox.)
    - Added Brazilian exchange calendar (thanks to Richard Gomes.)
    - Fixes for the Brazilian calendars (thanks to Piter Dias.)

    CASH FLOWS
    - Added average-BMA coupon (thanks to Roland Lichters.)
    - Fixed-rate coupons can now accept an InterestRate instance (thanks
      to Piter Dias.)
    - implemented cash-flow vector builders as helper classes to ease
      skipping default parameters and single/multiple inputs.

    DATES
    - Extended date range up to year 2199.
    - Fixed period comparison (thanks to Chris Kenyon.)
    - Fixed short date formatting (thanks to Robert Lopez.)
    - Enhanced period algebra.

    INDEXES
    - Added BMA index (thanks to Roland Lichters.)
    - Added inflation indexes (thanks to Chris Kenyon.)
    - Added historical interest-rate index analysis.

    INSTRUMENTS
    - Added BMA swaps (thanks to Roland Lichters.)
    - Added year-on-year and zero-coupon inflation swaps (thanks to
      Chris Kenyon.)
    - Fixed stub-date management and backward date generation for
      fixed-rate bonds (thanks to Toyin Akin.)
    - Added clean/dirty bond-price calculation from Z-spread.

    LATTICES
    - Fixed Tsiveriotis-Fernandes tree initialization (thanks to John Maiden.)

    MATH
    - Added multi-dimensional cost function for least-square problems
      (thanks to Guillaume Pealat.)
    - Added histogram class (thanks to Gang Liang.)
    - Added log-cubic interpolation.
    - Fixed conjugate-gradient bug.
    - Fixed nested Levenberg-Marquardt bug.

    PRICING ENGINES
    - Refactored option engines (the underlying stochastic process is now
      passed to the pricing engine.)
    - Refactored bond, cap/floor, swap, and swaption engines (the discount
      curve is now passed to the pricing engine.)
    - Added Heston/Hull-White analytic and Monte Carlo engines for
      vanilla options.
    - Fixed bug in blackFormulaCashItmProbability in case of non null
      displacement.

    PROCESSES
    - Added hybrid Heston/Hull-White process.
    - Fixed joint-process bug.

    QUOTES
    - Added forward-swap quote.

    RANDOM NUMBERS
    - Fixed ordering of primitive polynomials for Sobol/Levitan and
      Sobol/Levitan/Lemieux methods.
    - Added JoeKuoD5, JoeKuoD6 and JoeKuoD7 direction integers for
      Sobol generator.
    - Added Kuo, Kuo2 and Kuo3 direction integers for Sobol generator.
    - Added class to generate low-discrepancy sequences using a lattice rule.

    TERM STRUCTURES
    - Added discount curve fitted on bond prices (thanks to Allen Kuo.)
    - Added BMA-swap rate helper (thanks to Roland Lichters.)
    - Made SwapRateHelper forward-start enabled.
    - Added universal term-structure bootstrapper (thanks to Chris Kenyon.)
    - Added abstract inflation term structures (thanks to Chris Kenyon.)
    - Added piecewise inflation curves (thanks to Chris Kenyon.)


    <strong>Release 0.8.1 - June 4th, 2007</strong>

    PORTABILITY
    - Version 0.8.1 adds support for Boost 1.34 on Linux systems. If
      you are using version 0.8.0 on Windows systems, you do not need
      this upgrade.


    <strong>Release 0.8.0 - May 30th, 2007</strong>

    PORTABILITY
    - Version 0.8.0 is the last %QuantLib release to support the
      Metrowerks CodeWarrior compiler (which was discountinued by
      Metrowerks.)  If you use such compiler and want support to
      continue, you can volunteer for maintaining the necessary
      patches: contact the %QuantLib developers for information.

    SOURCE TREE
    - Files and folders in the source tree have been reorganized
      (hopefully for th ebetter.) If you only included
      <ql/quantlib.hpp>, all changes were taken care of for you. if
      you included specific headers, you might want to check its
      current location; in particular, all folder names are now
      lowercase.

    CALENDARS
    - Added 2007 holidays for Indonesia, Saudi Arabia, and South Korea
      calendars.

    CASH FLOWS
    - Added floater range-accrual coupons.

    INDEXES
    - Added EuriborSwapFixB family.

    INSTRUMENTS
    - Added capped/floored floating-rate bond. It can also be used for
      reverse floaters.
    - Added delta, gamma and theta to binomial option engines (thanks
      to Steve Cook.)
    - Refactored basket engines to allow for more payoffs.

    LIBOR MARKET MODEL
    - This release includes an experimental implementation of a Libor
      market model developed with Mark Joshi.  Improvements since
      release 0.4.0 include normal forward-rate market model,
      lognormal CMS market model, lognormal coterminal-swap market
      model, and calibration to caplets and coterminal swaptions.  The
      interface of the model and its integration with the bulk of the
      library are still in development.

    MATH
    - Adaptive Gauss-Kronrod integration added.
    - Added Higham's nearest correlation matrix method (thanks to Neil
      Firth)
    - Refactored optimization framework.

    PROCESSES
    - Added new discretization schema to Heston process.

    UTILITIES
    - The Handle class was split into RelinkableHandle (behaving like
      the old Handle class) and Handle (which is notified when its
      copies are relinked, but cannot itself be relinked.) The former
      can safely be returned from inspectors.


    <strong>Release 0.4.0 - February 20th, 2007</strong>

    PORTABILITY
    - Starting with release 0.4.0, the Borland free compiler 5.5 and
      Microsoft Visual C++ 6.0 are no longer supported.  If you use
      one of these compilers and want support to continue, you can
      volunteer for maintaining the necessary patches: contact the
      %QuantLib developers for information.

    CALENDARS
    - Added 2007 holidays for Hong Kong, India, Singapore, and Taiwan
      exchanges.

    LIBOR MARKET MODEL
    - This release includes an experimental implementation of a Libor
      market model developed with Mark Joshi.  Improvements since
      release 0.3.14 include the use of quasi-random number generators
      and the calculation of Greeks and of upper bounds for
      instruments with early-exercise features.  The interface of the
      model and its integration with the bulk of the library are still
      in development.

    INSTRUMENTS
    - Added helper classes to make it easier to instantiate swaps,
      caps/floors, and CMS instruments.

    INTEREST RATES
    - Added capped/floored floating-rate coupons (including convexity
      adjustment.)

    MATH
    - Curve, domain and surface interfaces added.

    PROCESSES
    - Added reversion level to Ornstein-Uhlenbeck process (thanks to
      Roland Lichters.)

    VOLATILITY TERM STRUCTURES
    - Added stripping of caplet-volatility term structure from cap
      quotes.
    - Improved SABR interpolation and calibration.


    <strong>Release 0.3.14 - November 6th, 2006</strong>

    PORTABILITY
    - Version 0.3.14 is the last %QuantLib release to support the Borland
      free compiler 5.5 and Microsoft Visual C++ 6.0. If you use one
      of these compilers and want support to continue, you can volunteer
      for maintaining the necessary patches: contact the %QuantLib
      developers for information.

    LIBOR MARKET MODEL
    - This release includes an experimental implementation of a Libor
      market model developed with Mark Joshi.  The interface and its
      integration with the bulk of the library are still in development.

    CURRENCIES
    - Added Romanian new lev.

    DATES, CALENDARS, AND DAY COUNTERS
    - Added all serial 3M IMM futures (thanks to Toyin Akin.)
    - Reworked the Schedule class so that it follows market
      conventions more closely.
    - Added business/252 day-count convention (thanks to Piter Dias.)

    INTEREST RATES
    - Added base swap-rate class and a number of actual swap rates.
    - Added constant-maturity swap coupons (including convexity
      adjustment.)

    INSTRUMENTS
    - Added asset swaps.
    - Added face amount to bonds (defaulting to 100.)

    MATH
    - Added hypersphere and lower-diagonal salvaging algorithms
      (thanks to Yiping Chen.)

    PRICING ENGINES
    - Added Longstaff-Schwartz Monte-Carlo algorithm for
      American/Bermudan equity options with deterministic interest
      rates.

    TERM STRUCTURE
    - Added piecewise-spreaded yield curve (thanks to Roland Lichters.)


    <strong>Release 0.3.13 - July 31st, 2006</strong>

    CALENDARS
    - Added NERC calendar (thanks to Joe Byers.)

    INSTRUMENTS AND PRICING ENGINES
    - Added continuous fixed and floating lookback options (thanks to
      Warren Chou.)
    - Added FRA and forward fixed-coupon bonds; examples provided
      (thanks to Allen Kuo.)
    - Added variance swaps (thanks to Warren Chou.)
    - Added composite instrument; example provided.
    - Added cash-settled swaption pricing in Black swaption engine;
      test provided.
    - Added discrete dividends and soft callability to convertible bonds.

    INTEREST RATES
    - Fixed business-day conventions for Euribor and LIBOR indices
      (following below one month, month-end from one month onwards.)

    MODELS
    - Added more complex market parameterizations and performance
      improvements for Libor market model (thanks to Klaus Spanderen.)

    PROCESSES
    - Renamed BlackScholedProcess to GeneralizedBlackScholedProcess;
      specialized classes added for Black-Scholes, Merton, Black and
      Garman-Kohlhagen processes.
    - Added Hull-White and G2 processes for Monte Carlo simulation
      (thanks to Banca Profilo.)

    RANDOM NUMBERS
    - Added possibility to skip directly to the n-th item in a Sobol
      sequence (thanks to Richard Gould.)

    MATH
    - Added SABR interpolation for volatilities.
    - Added general linear least-squares regression (thanks to Klaus
      Spanderen.)


    <strong>Release 0.3.12 - March 27th, 2006</strong>

    CALENDARS
    - Added Brazilian calendar (thanks to Piter Dias.)
    - Added Argentinian, Icelandic, Indonesian, Mexican, and Ukrainian
      calendars.

    INSTRUMENTS AND PRICING ENGINES
    - Added convertible bonds (thanks to Theo Boafo.)
    - The cash flows returned by the Bond::cashflows method now
      include the redemption.
    - SimpleSwap can now be set an engine. If none is set, the old
      cash-flow-based calculation is used.
    - Generalized McVanillaEngine so that it can manage n-dimensional
      processes; it now subsumes McHestonEngine.
    - Added pricing of Bermudan options on binomial trees (thanks to
      Enrico Michelotti.)
    - Separated accrual and payment conventions for bonds.
    - Modified basis-point sensitivity calculation so that it returns
      the cash variation for a basis-point change in rate (it used to
      return the figure to be multiplied by the variation in order to
      obtain the same result.)

    MODELS
    - Added weights to short-rate model calibration (thanks to Enrico
      Michelotti.)
    - Added Libor market model (thanks to Klaus Spanderen.)

    OPTIMIZATION
    - Added Levenberg-Marquardt optimization method (thanks to Klaus
      Spanderen.)

    EXAMPLES
    - Merged American and European option examples; added Bermudan
      option.
    - Added convertible-bond example (thanks to Theo Boafo.)


    <strong>Release 0.3.11 - October 20th, 2005</strong>

    GLOBAL FEATURES
    - Added configuration option for adding current function
      information to error messages.
    - Added hook for multiple sessions to Singleton.

    CALENDARS
    - Added Bombay and Taipei calendars.

    CURRENCIES
    - Added new Turkish lira.

    INDEXES
    - More accurate LIBOR calendars (thanks to Daniele de Francesco.)
    - Added DKKLibor, EURLibor, and NZDLibor indexes.
    - Added TRLibor index (thanks to Sercan Atalik.)

    PRICING ENGINES
    - Added Bates stochastic-volatility model; tests provided (thanks
      to Klaus Spanderen.)
    - Added vega to analytic discrete-averaging Asian engine; test
      provided (thanks to Gary Kennedy.)
    - Added stochastic process for caplet Libor market model; tests
      provided (thanks to Klaus Spanderen.)

    TERM STRUCTURES
    - Added fixed-coupon bond helper for curve bootstrapping (thanks
      to Toyin Akin.)

    MATH
    - Added tabulated Gauss-Legendre quadratures (thanks to Gary
      Kennedy.)
    - Added more precise implementation of bivariate cumulative normal
      distribution (thanks to Gary Kennedy.)


    <strong>Release 0.3.10 - July 14th, 2005</strong>

    GLOBAL FEATURES
    - The suggested syntax for setting and registering with the global
      evaluation date is now:
      \code
      Settings::instance().evaluationDate() = date;
      registerWith(Settings::instance().evaluationDate());
      \endcode

    CALENDARS
    - Istanbul calendar added (thanks to Serkan Atalik.)

    LATTICE FRAMEWORK
    - Faster implementation of binomial and trinomial trees.

    MONTE CARLO FRAMEWORK
    - Added generic multi-dimensional stochastic process.
    - Added stochastic process array (thanks to Klaus Spanderen.)
    - Multi-path generator now takes a generic stochastic process;
      tests provided.
    - New Path class implemented which stores asset values rather than
      variations; this makes pricers independent on whether or not
      log-variations were calculated. The new class is enabled when
      QL_DISABLE_DEPRECATED is defined; the old class is used
      otherwise.

    INSTRUMENTS
    - Multi-asset option now takes a generic stochastic process.

    MODELS
    - Added Heston stochastic-volatility model; tests provided (thanks
      to Klaus Spanderen.) Provided code include:
      - a corresponding stochastic process;
      - analytic and Monte Carlo option-pricing engines;
      - parameter calibration.

    CASH FLOWS
    - Cash-flow analyses such as NPV, IRR, convexity and duration added
      (thanks to Charles Whitmore.)

    MATH
    - Added Gaussian orthogonal polynomials and Gaussian quadratures;
      tests provided (thanks to Klaus Spanderen.)
    - Convergence statistics added; tests provided (thanks to Gary
      Kennedy.)


    <strong>Release 0.3.9 - May 2nd, 2005</strong>

    GLOBAL FEATURES
    - QL_SQRT, QL_MIN etc. deprecated in favor of std::sqrt,
      std::min...
    - Added a tentative tracing facility to ease debugging.
    - Formatters deprecated in favor of output manipulators. A number
      of data types can now be sent directly to output streams.
    - Stream-based implementation of QL_REQUIRE, QL_TRACE and similar
      macros. Together with manipulators, this allows one to write
      simpler error messages, as in:
      \code
      QL_FAIL("forward at date " << d << " is " << io::rate(f));
      \endcode

    INSTRUMENTS
    - Improved Bond class
      - yield-related calculation can be performed with either
        compounded or continuous compounding;
      - added theoretical price based on discount curve;
      - fixed-rate coupon bonds can define different rates for each
        coupon;
      - added zero-coupon and floating-rate bonds (thanks to StatPro.)
    - Option instruments now take a generic StochasticProcess;
      however, most pricing engines still require a
      BlackScholesProcess. They should be checked to see whether the
      requirement can be relaxed.  Following this change,
      Merton76Process no longer inherits from
      BlackScholesProcess. This avoids erroneous upcasts.
    - Partial fix for Bermudan swaptions with exercise lag (thanks to
      Luca Berardi for the report and discussion.)
    - Fix for analytic cap/floor engine; caplets/floorlets whose
      fixing is in the past are now calculated correctly (thanks to
      Aurelien Chanudet.)

    CALENDARS
    - Added Bratislava and Prague calendars.

    INDICES
    - Fixed calendars for LIBOR fixings (thanks to Daniele De
      Francesco.)

    FINITE_DIFFERENCES FRAMEWORK
    - Migrated finite-difference pricers to pricing-engine framework
      (thanks to Joseph Wang.)

    YIELD TERM STRUCTURES
    - Added generic piecewise yield term structure. Client code can
      choose what to interpolate (discounts, zero yields, forwards)
      and how (linear, log-linear, flat) by instantiating types such
      as:
      \code
      PiecewiseYieldCurve<Discount,LogLinear>
      PiecewiseYieldCurve<ZeroYield,Linear>
      PiecewiseYieldCurve<ForwardRate,Linear>
      \endcode
    - Interpolated discount, zero-yield and forward-rate curves can
      now be set any interpolation.
    - FlatForward can now take rates with compounding other than
      continuous.
    - Fix for extrapolation in zero-spreaded and forward-spreaded
      yield term structure (thanks to Adjriou Belak for the report.)

    MATH
    - Added backward- and forward-flat interpolations.


    <strong>Release 0.3.8 - December 22nd, 2004</strong>

    REQUIRED PACKAGES
    - Boost version 1.31.0 or later is now required.

    DOCUMENTATION
    - Documentation now includes a FAQ page.

    GLOBAL FEATURES
    - Global evaluation date added through Settings class.  Used for
      index-fixing and exchange-rate lookup.
    - added InterestRate class, which encapsulate the interest rate
      compounding algebra. It manages day-counting convention,
      compounding convention, conversion between different
      conventions, and discount/compounding factor calculations. It
      also has its own formatter.

    INSTRUMENTS

    - Bond and FixedCouponBond classes added (thanks to Jeff Yu)
      providing price/yield conversions; tests provided.

    DATE, CALENDARS, AND DAY COUNT CONVENTIONS
    - Reworked Date interface. Added nextWeekday() and nthWeekday()
      static methods to the class Date. Added nextIMM() for the
      calculation of the next IMM date.
    - Added WeekdayFormatter and FrequencyFormatter
    - Added "1/1" day counter. The Actual365 is deprecated: as per
      ISDA documentation "Actual/365" is the same as
      "Actual/Actual". Use the ActualActual class instead, or the
      Actual365Fixed class.
    - Added dayCounterFromString(std::string) to QuantLibFunctions.
    - Improved Beijing calendar (thanks to Zhou Wu.)

    CURRENCIES AND FX RATES
    - Added currency classes; CurrencyTag replaced in library code.
    - Added money class providing arithmetic with or without
      conversions; tests provided.
    - Added exchange-rate class; tests provided.
    - Added exchange-rate manager with smart rate lookup, i.e., able
      to derive a missing exchange rate as a chain of provided rates;
      tests provided.

    MONTE CARLO FRAMEWORK
    - Added Faure low-discrepancy sequence (thanks to Gianni Piolanti;)
      tests provided.
    - Added randomized (shifted) low discrepancy sequences that will
      be used for randomized quasi Monte Carlo.
    - Added SeedGenerator class, for random generation of seeds when
      they are not given by the user.
    - Added the implementation of Sobol sequences using the
      coefficients of the free direction integers as provided by
      Bratley and Fox, who credited unpublished work of Sobol's and
      Levitan's.
    - Added an implementation of Sobol sequences using the
      coefficients of the free direction integers of Lemieux, Cieslak,
      and Luttmer. Coefficients for d<=40 are the same as in
      Bradley-Fox. For dimension 40<d<=360 the coefficients have been
      calculated as optimal values based on the "resolution"
      criterion. The values has been provided by Christiane Lemieux,
      private communication, September 2004.
    - PathGenerator now works correctly with processes describing S
      instead of log S. Geometric Brownian process added (thanks to
      Walter Penschke.)

    LATTICE FRAMEWORK
    - Reworked the DiscretizedAsset interface.

    PRICING ENGINES FRAMEWORK
    - Added pricing engine for American options with Ju quadratic
      approximation.
    - Average-price Asian pricers have been deprecated. New equivalent
      pricing engines added.

    FIXED INCOME
    - Added current coupon to discretized swap and cap/floor.
    - Added IndexManager as a singleton (will replace
      XiborManager--already obsoleted in library code.)
    - Added DayCounter parameter to ParCoupon (to be used for accruing
      spreads and past fixings.) When missing, it defaults to that of
      the term structure.
    - Added compilation flag to select default floating-coupon type.
    - IndexedCoupon can now take a generic index rather than a Libor
      (thanks to Daniele De Francesco.)
    - Added hooks for convexity adjustment in floating-rate coupons;
      implemented adjustment for InArrearIndexedCoupon.

    YIELD TERM STRUCTURE
    - TermStructure renamed to YieldTermStructure (the former name was
      deprecated.)
    - New base class BaseTermStructure which can calculate its
      reference date based on the global evaluation date.
      YieldTermStructure, BlackVolTermStructure,
      LocalVolTermStructure, CapFlatVolatilityStructure,
      CapletForwardVolatilityStructure, and
      SwaptionVolatilityStructure are now derived from
      BaseTermStructure so that they inherit its functionality.

    PATTERNS
    - Added Singleton pattern.

    MATH
    - Added N-dimensional cubic spline (thanks to Roman Gitlin.)
    - Added CovarianceDecomposition class (decomposes a covariance
      matrix into standard deviations and correlations)

    MISCELLANEA
    - Renamed RelinkableHandle to Handle.

    PORTABILITY
    - Support for Dev-C++ IDE added.
    - Fixes for gcc 2.95 added (thanks to Michael Dirkmann.)


    <strong>Release 0.3.7 - July 23rd, 2004</strong>

    <center>IMPORTANT</center>

    %QuantLib now depends on the Boost library (www.boost.org).

    You will need a working Boost installation in order to compile and
    use %QuantLib. Instructions for installing Boost from sources are
    available at <http://www.boost.org/more/getting_started.html>.
    Pre-packaged binaries might be available from other sources.
    Google is your friend (or Debian, or Fink...)

    <HR>

    DATE, CALENDARS, AND DAY COUNT CONVENTIONS
    - Working on differentiating calendars depending on country or
      exchange, instead of city.
    - Added Italy (Settlement, Exchange),
      United Kingdom (Settlement, Exchange, Metals),
      United States (Settlement, Exchange, GovermentBond), Xetra.
    - Milan, London, and NewYork calendars have been deprecated.
    - Added (old-style) calendars: Beijing, Hong Kong, Riyadh, Seoul,
      Singapore, Taiwan.
    - RollingConvention has been renamed BusinessDayConvention, as for
      ISDA definitions.

    MATH
    - Added rounding algorithms as per OMG enumeration/definition.

    TEST SUITE
    - Moved to Boost unit test framework. CppUnit is no longer needed.
    - Added test for quanto and forward compound engines.
    - Added test for roundings.
    - Added test for discrete dividend European options.
    - Added test for cliquet options.

    MISCELLANEA
    - enable/disableExtrapolation() methods were added to a few classes
      such as TermStructure. They make it possible to persistently allow
      extrapolation without the need of specifying it at every method
      call.
    - Added user-configurable flag to disable usage of deprecated
      classes.

    PORTABILITY
    - Fink package available
    - Visual C++ 7.x project files added


    <strong>Release 0.3.6 - April 15th, 2004</strong>

    Bug-fix release for %QuantLib 0.3.5. A bug was removed where calls
    to impliedVolatility() would break the state of the option and of
    all options sharing the same stochastic process.


    <strong>Release 0.3.5 - March 31th, 2004</strong>

    BOOST SUPPORT
    - When available, %QuantLib 0.3.5 now uses parts of the Boost
      library.  The presence of Boost is detected automatically under
      Unix/Linux systems; on Windows systems, it must be enabled by
      uncommenting the relevant line in ql/userconfig.hpp.

    - In the next %QuantLib release, the presence of the Boost library
      will be mandatory.

    MONTE CARLO FRAMEWORK
    - Modified MultiPath interface to remove drifts. They are now in
      the stochastic processes.
    - Preliminary implementation of Longstaff-Schwartz least-squares
    - Monte Carlo pricer for European basket options
    - Brownian-bridge bugs fixed
    - StochasticProcess base class and derived classes (diffusion,
      jump-diffusion, etc.) have been created.

    PRICING ENGINES FRAMEWORK
    - Pricing engines now use Payoff and Exercise classes.
    - American basket options.
    - Binary barrier option replaced by vanilla option with digital payoff.
    - Stulz engine for max and min basket calls and puts on two assets.
    - American binary option added (a.k.a. one-touch, american digital,
      americal barrier, etc.) with different payoffs (cash/asset at
      hit/expiry, etc.)
    - Added engine for Merton 1976 jump-diffusion process.
    - Added Bjerksund and Stensland approximation for American option
      (still unstable.)
    - Added Barone-Adesi and Whaley approximation for American option.
    - Improved Black formula engine with more greeks added.
    - Discrete geometric asian option.
    - Added Leisen-Reimer binomial tree.

    SHORT RATE MODELS
    - Model renamed to ShortRateModel. A typedef is provided for backward
      compatibility--it will be removed in subsequent releases.

    VOLATILITY FRAMEWORK
    - bug fix for short time (0<=t<=Tmin) interpolation

    OPTIMIZATION FRAMEWORK
    - Method renamed to OptimizationMethod. A typedef is provided for
      backward compatibility--it will be removed in subsequent releases.

    PATTERNS
    - Composite pattern

    MATH
    - Improved cubic spline interpolation. It now handles end conditions
      such as first derivative value, second derivative value, not-a-knot.
      Hyman filter for monotonically constrained interpolation has been
      implemented. Primitive calculation has been enabled in
      addition to derivative and second derivative.
    - Primitive, first derivative, and second derivative functions are available
      for linear interpolator.
    - Singular value decomposition improved.
    - Added bivariate cumulative normal distribution.
    - Added binomial coefficient calculation, binomial distribution,
      cumulative binomial distribution, and	Peizer-Pratt inversion (method 2.)
    - Added beta functions.
    - Added Poisson distribution and cumulative distribution.
    - Added incomplete gamma functions.
    - Added factorial calculation.
    - Added rank-reduced square root and improved pseudo-square root
      of square symmetric matrices.
    - Added Cholesky decomposition.

    TEST SUITE
    - Added test for cubic spline interpolation.
    - Added test for singular value decomposition.
    - Added test for two-asset baskets using the Stulz pricing engine.
    - Added test for Monte Carlo American cash-at-hit options.
    - Added test for jump-diffusion engine.
    - Added test for American and European digital options.

    MISCELLANEA
    - Inner namespaces have been deprecated.
    - Added frequency enumeration, including 'once'.
    - MarketElement renamed to Quote.
    - Handling strike=0.0 where possible.
    - More Payoff classes have been introduced: gap, asset-or-nothing,
      cash-or-nothing. Payoff is now extensively used.
    - Exercise class is now polymorphic. More derived classes have been
      introduced, and they are now extensively used.
    - Introduced QL_FAIL macro.
    - Added calendar for Copenhagen
    - 14 April 2004 (election day) added to Johannesburg calendar as
      a one-off holiday.
    - Documentation generated with Doxygen 1.3.6.
    - Win32 installer generated with NSIS 2.0.


    <strong>Release 0.3.4 - November 21th, 2003</strong>

    MONTE CARLO FRAMEWORK
    - MC European in one step with strike-independent vol curve (hopefully)
    - Path pricer for Binary options. It should cover both European and
      American style options.  Also known as: Digital, Binary, Cash-At-Hit,
      Cash-At-Expiry.
    - Path pricers for barrier options

    PRICING ENGINES FRAMEWORK
    - More options moved to the new pricing engine framework: binary, barrier
    - Changed setupEngine() into setupArguments(args)
    - Moved pricing-engine machinery up to Instrument class

    FIXED INCOME
    - New basis-point sensitivity functions
    - Added Swap::startDate() and maturity()
    - Cap/floor fixing days taken into account

    SHORT RATE MODELS
    - An additional constraint can now be passed to the calibration

    VOLATILITY FRAMEWORK
    - Visitable volatility term structures

    OPTIMIZATION FRAMEWORK
    - Added composite constraint

    PATTERNS
    - Visitor, Alexandrescu-style (saves some code duplication)

    MATH
    - Added more integration algorithms contributed by Roman Gitlin
    - Relaxed constaints on interval boundaries for integration algorithms
    - Interpolation traits

    TEST SUITE
    - Added implied cap/floor term volatility test
    - Added test for binary options in PricingEngine Framework.
    - Added tests for Barrier options in PricingEngine Framework. Some Monte
      Carlo tests, but not comprehensive.

    MISCELLANEA
    - Conditionally allowed negative yields (disabled by default)
    - Null calendar and simple day counter for reproducing theoretical
      calculations
    - Fixed for VC++.Net compilation
    - Added spec file for RPMs
    - Added global flag for early/late payments
    - Enabled test suite for Borland
    - Removed OnTheEdge VC++ configurations
    - Added VC++ configurations for static and dynamic Multithread libraries
    - Upgraded to use Doxygen 1.3.4


    <strong>Release 0.3.3 - September 3rd, 2003</strong>

    MONTE CARLO FRAMEWORK
    - Re-templatized Monte Carlo model based on traits.
    - New path generator based on DiffusionProcess, TimeGrid,
      and externally initialized random number generator.
    - Added Halton low discrepancy sequence.
    - Added sequence generators: random sequence generator creates
      a sequence generator out of a random number generator.
      InvCumGaussianRsg creates a gaussian sequence generator out of a
      uniform (random or low discrepancy) sequence generator.
    - RNG as constructor input constructor( long seed) deprecated.
    - Mersenne Twister random number generator added
    - Old PathPricers, PathGenerators, etc are available with a trailing _old
    - Added J&auml;ckel's Brownian Bridge (not used yet.)
    - Sobol Random Sequence Generator. Unit and J&auml;ckel.
    - Added randomized Halton sequences.

    FINITE DIFFERENCE FRAMEWORK
    - Old class Grid no longer exists, use CenteredGrid to obtain the
      same result.

    LATTICE FRAMEWORK
    - Abstracted discretized option.
    - Additive binomial trees.  All binomial trees now use DiffusionProcess.
    - Added Tian binomial tree.

    PRICING ENGINES FRAMEWORK
    - Partially implemented.
    - Quanto forward compounded engines.
    - Integral (european) pricing engine.

    YIELD TERM STRUCTURE
    - ZeroCurve: a term structure based on linear interpolation of
      zero yields.

    FIXED INCOME
    - Up-front and in-arrear indexed coupon.
    - Specific implementation of compound forward rate from zero yield.
    - Added compound forward and zero coupon implementations.
    - Added Futures rate helper with specified maturity date.
    - Added bucketed bps calculation.
    - Added swap constructor using specified maturity date as well as
      added functionality in Scheduler.
    - Added date-bucketed basis point sensitivity based on 1st derivative
      of zero coupon rate.

    OPTIMIZATION FRAMEWORK
    - Solvers now take any function. ObjectiveFunction disappeared.

    PATTERNS
    - Abstracted lazy object.
    - Abstracted the curiously recurring template pattern.

    DATE AND CALENDARS
    - Added joint calendars.
    - Tokyo, Stockholm, Johannesburg calendar improved.
    - "MonthEndReference" business day rolling convention. Similar to
      "ModifiedFollowing", unless where original date is last business
      day of month all resulting dates will also be last business day of
      month.
    - Added basic date generation starting from the end.

    MATH
    - Added Gauss-Kronrod integration algorithm.
    - Added primitive polynomial modulo 2 up to dimension 18 (available up
      to dimension 27.)
    - Added BicubicSplineInterpolation.
    - Numerical Recipes algorithm is back since there is a problem with
      Nicolas' code: it is unable to fit a straight line, it waves around
      the line.
    - Prime number generation.
    - Acklam's approximation for inverse cumulative normal distribution
      function (replaced Moro's algorithm as default.)
    - Added error function.
    - Improved Cumulative Normal Distribution function using the
      error function.
    - Matrix pseudo square algorithm using salvaging algorithm(s).
    - Added SequenceStatistics.
    - Major Statistic reworking.
    - Added DiscrepancyStatistic that inherits from SequenceStatistic and
      extends it with the calculation of L2-discrepancy.
    - HStatistics.
    - Added first and second derivative ot cubic splines.

    RISK MEASURES
    - Introduced semiVariance and regret.
    - Redefinition of average shorfall (normalization factor now is
      cumulative(target) instead of 1.0)

    MISCELLANEA
    - QuEP 9 "generic disposable objects" implemented.
    - Added test suite.
    - Dataformatters extended to format long integers, Ordinal numerals,
      power of two formatting.
    - Exercise class adopted.
    - Added user configuration section.
    - Inhibited automatic conversion of Handle<T> to RelinkableHandle<T>.
    - Diffusion process extended.
    - Added strikeSensitivity to the Greeks.
    - BS does handle t==0.0 and sigma==0.0.
    - TimeGrid has been reworked.
    - Added payoff file for Payoff classes.  Added Cash-Or-Nothing and
      Asset-Or-Nothing payoff classes.
    - Upgraded to use Doxygen 1.3.

    <strong>Release 0.3.1 - February 4th, 2003</strong>

    FINITE DIFFERENCE FRAMEWORK
    - partially implemented QuEP 2 (http://quantlib.org/quep.shtml)

    VOLATILITY FRAMEWORK
    - added Black and local volatility interface

    PRICING ENGINES FRAMEWORK
    - partially implemented QuEP 5 (http://quantlib.org/quep.shtml)

    YIELD TERM STRUCTURE
    - interface revisited
    - added discrete time forward methods
    - added DiscountCurve (loglinear interpolated) and CompoundForward term
      structures
    - ForwardSpreadedTermStructure moved under QuantLib::TermStructures
      namespace

    FIXED INCOME
    - Modified coupons so that the payment date can be after the end of the
      accrual period

    MISCELLANEA
    - added/verified holidays of many calendars
    - added new calendars
    - added new currencies
    - more date formatters
    - added Period(std::string&)
    - it is now possible to advance a calandar using a Period
    - added LogLinear Interpolation
    - the allowExtrapolation boolean in interpolation classes has been removed
      from constructors and added to the operator()
    - Renamed Solver1D::lowBound and hiBound
    - bug fixes

    BUILD PROCESS
    - More autoconfiscated time functions and types
    - Migrated to latest autotools
    - added patches for Darwin and Solaris


    <strong>Release 0.3.0 - May 6th, 2002</strong>

        MONTE CARLO FRAMEWORK
        - Path and MultiPath are time-aware
        - McPricer: extended interface, improved convergency algorithm

        FINITE DIFFERENCE FRAMEWORK
        - added mixed (implicit/explicit) scheme, from which Crank-Nicolson,
          ImplicitEuler, and ExplicitEuler are now derived
        - Finite Difference exercise conditions are now in the
          FiniteDifferences folder/namespace
        - Finite Difference pricers now start with 'Fd' letters
        - BSMNumericalOption became BsmFdOption

        LATTICE FRAMEWORK
        - introduced first version of the framework
        - CRR and JR binomial trees

        VOLATILITY FRAMEWORK
        - early works on reorganization of vol structures

        YIELD TERM STRUCTURE
        - new TermStructure class based on affine model
        - yield curves can be spreaded in term of zeros
         (ZeroSpreadedTermStructure) and forwards
         (ForwardSpreadedTermStructure)
        - Added dates() and times() to PiecewiseFlatForward
        - discount factor accuracy in the yield curve bootstrapping is an
          input
        - added single factor short-rate models (Hull-White, Black-Karasinski)
        - added two factor short-rate models framework
        - cap/floor and swaption calibration helpers
        - added bermudan swaption pricing example (including BK and HW
          calibrations)

        FIXED INCOME
        - cap/floor and  swaption tree pricer
        - cap/floor analytical pricer
        - vanilla swaption Jamshidian pricer
        - Added	accruedAmount() to coupons
        - Made cash	flow vector builders into functions

        OPTIMIZATION FRAMEWORK
        - added conjugate gradient, simplex

        PATTERNS
        - implemented QuEP 8 and 10

        MISCELLANEA
        - added allowExtrapolation parameter to interpolaton classes
        - added 2D bilinear interpolation
        - better spline interpolation algorithm
        - Added non-central chi-square distribution function.
        - Improved Inverse Cumulative Normal Distribution using Moro's
          algorithm
        - Introduced class representing stochastic processes
        - added isExpired() to Instrument interface
        - added functions folder and namespace for %QuantLibXL and any other
          function-like interface to %QuantLib
        - Handle is now castable to an Handle of a compatible type
        - added downsideVariance to the Statistics class
        - kustosis() and skewness() now handles the case of stddev == 0 and/or
          variance == 0
        - added Correlation Matrix to MultiVariateAccumulator
        - enforced MS VC compilation settings
        - added "-debug" to the QL_VERSION version string ifdef QL_DEBUG
        - "make check" runs the example programs under Borland C++
        - fixed compilation with "g++ -pedantic"
        - Spread as market element
        - new calendars introduced
        - new Xibor Indexes introduced
        - Added optional day count to libor indexes
        - Shortened file names within 31 char limit to support HFS


    <strong>Release 0.2.1 - December 3rd, 2001</strong>

        MONTE CARLO FRAMEWORK
        - Path and MultiPath are now classes on their own
        - PathPricer now handles both Path and MultiPath
        - MonteCarloModel now handles both single factor and
          multi factors simulations.
        - McPricer now handles both single factor and
          multi factors pricing. New pricing interface
        - antithetic variance-reduction technique made possible in Monte Carlo
          for both single factor and multi factors
        - Control Variate specific class removed: control variation
          technique is now handled by the general MC model
        - average price and average strike asian option refactored
        - Sample as a (value,weight) struct
        - random number generators moved under RandomNumbers folder and
          namespace

        FINITE DIFFERENCE FRAMEWORK
        - BackwardEuler and ForwardEuler renamed ImplicitEuler and
          ExplicitEuler,
          respectively
        - refactoring of TridiagonalOperator and derived classes

        YIELD TERM STRUCTURE AND FIXED INCOME
        - Added some useful methods to term structure classes
        - Allowed passing a quote to RateHelpers as double
        - added FuturesRateHelpers (no convexity adjustment yet)
        - PiecewiseFlatForward now observer of rates passed as MarketElements
        - Unified Date and Time interface in TermStructure
        - Added BPS to generic swap legs
        - added term_structure+swap example
        - Fixing days introduced for floating-coupon bond

        PATTERNS
        - Added factory pattern
        - Calendar and DayCounter now use the Strategy pattern

        VARIOUS
        - used do-while-false idiom in QL_REQUIRE-like macros
        - now using size_t where appropriate
        - dividendYield is now a Spread instead of a Rate (that is: cost of
          carry is allowed)
        - RelinkableHandle initialized with an optional Handle
        - Worked around VC++ problems in History constructor
        - added QL_VERSION and QL_HEX_VERSION
        - generic bug fixes
        - removed classes deprecated in 0.2.0

       INSTALLATION FACILITIES
        - improved and smoother Win32 binary installer

       DOCUMENTATION
        - general re-hauling
        - improved and extended Monte Carlo documentation
        - improved and extended examples
        - Upgraded to Doxygen 1.2.11.1
        - Added man pages for installed executables
        - added docs in Windows Help format
        - added info on "Win32 OnTheEdgeRelease" and  "Win32 OnTheEdgeDebug"
          MS VC++ configurations
        - additional information on how to create a MS VC++ project based on
          %QuantLib

    <strong>Release 0.2.0 - September 18th, 2001</strong>

    - Library:
        - source code moved under ql, better GNU standards
        - gcc build dir can now be separated from source tree
        - gcc 3.0.1 port
        - clean compilation (no warnings)
        - bootstrap script on cygwin
        - Fixed automatic choice of seed for random number generators
        - Actual/actual classes
        - extended platform support (see table in documentation)
        - antithetic variance-reduction technique made possible in Monte
          Carlo
        - added dividend-Rho greek
        - First implementation of segment integral (to be redesigned)
        - Knuth random generator
        - Cash flows, scheduler, and swap (both generic and simple) added
        - added ICGaussian random generator
        - generic bug fixes
    - Installation facilities:
        - improved and smoother Win32 binary installer
        - better distribution
        - debian packages available
    - Documentation:
        - general re-hauling
        - added examples of using %QuantLib and of projects based on QL

    <strong>Release 0.1.9 - May 31st, 2001</strong>

    - Library:
      - Style guidelines introduced (see http://quantlib.org/style.shtml)
        and partially enforced
      - full support for Microsoft Visual Studio
      - full support for Linux/gcc
      - momentarily broken support for Metrowerks CodeWarrior
      - autoconfiscation (with specialized config.*.hpp files for platforms
        without automake/autoconf support)
      - Include files moved under Include/ql folder and referenced as
        "ql/header.hpp"
      - Implemented expression templates techniques for array algebra
        optimization
      - Added custom iterators
      - Improved term structure
      - Added Asian, Bermudan, Shout, Cliquet, Himalaya, and Barrier
        options (all with greeks calculation, control variated where
        possible)
      - Added Helsinki and Wellington calendars
      - Improved Normal distribution related functions: cumulative, inverse
        cumulative, etc.
      - Added uniform and Gaussian random number generators
      - Added Statistics class (mean, variance, skewness, downside variance,
        etc.)
      - Added RiskMeasures class: VAR, average shortfall, expected shortfall,
        etc.
      - Added RiskStatistics class combining Statistics and RiskMeasures
      - Added sample accumulator for multivariate analysis
      - Added Monte Carlo tools
      - Added matrix-related functions (square root, symmetric Schur
        decomposition)
      - Added interpolation framework (linear and cubic spline interpolation
        implemented).
    - Installation facilities:
      - Added Win32 GUI installer for binaries
    - Documentation:
      - support for Doxygen 1.2.7
      - Added man documentation

    <strong>Release 0.1.1 - November 21st, 2000</strong>

    Initial release.

*/
