Skip to content

Releases: auto-differentiation/xad

v1.8.0

05 Aug 17:39

Choose a tag to compare

Added

  • Vector Forward Mode: Added support for a vector forward mode, where multiple derivatives can be calculated at once (#177, @xcelerit-team)
  • Vector Adjoint Mode: Added support for a vector adjoint mode, where derivatives w.r.t. multiple outputs can be calculated jointly with AAD (#177, @xcelerit-team)
  • Direct Mode: Added a mode for forward and reverse mode without expression templates, to ease integration and debugging (#177, @xcelerit-team)
  • Added std::fma Function: Added support for the standard math function std::fma (#175, @xcelerit-team)
  • Eigen Compatibility: Added support and a wide range of tests for using XAD within the Eigen Library (#174, @xcelerit-team)
  • Jacobian Performance Optimisation: Faster discovery of Jacobian co-domain (#163)
  • Improved CI/CD Pipelines: Modern compilers, better tests, Windows fixes (#164), and further improvements (#177, @xcelerit-team)

Removed

  • Support for Visual Studio 2015 and 2017 (toolchains 14.0 and 14.1)
  • Support for GCC 5 and 6

Fixed

  • libc++ type trait fixes: Fixes for libc++ (MacOS) for random number type traits (#170)
  • copysign function in MSVC: fixed issues with the copysign function with the latest MSVC (#166)
  • Improved testing of chunk containers: The clear is now tested better (#157, by @rghouzra)

Full Changelog: v1.7.0...v1.8.0

v1.7.0

30 Nov 22:08

Choose a tag to compare

This release features extensive performance improvements.

Added

  • Template Variables: Added support for C++17 type traits such as std::is_floating_point_v (#127).
  • CI/CD Workflows: Updated workflows to target the C++17 standard (#127).
  • New Sample: Introduced a Monte-Carlo swaption portfolio pricer, including path-wise derivative calculations (#126).

Changed

  • Performance Improvements (#150):

    • Optimised OperationsContainer for handling slots and multipliers.
    • Enhanced iteration efficiency in computeAdjoints by avoiding redundant operations.
    • Implemented joint tape appending for multipliers and slots in a single operation.
    • Removed the overhead of std::fma calls, relying on compiler-level optimisations.
    • Added pre-checks to skip derivative calculations when tape is not required.
    • Provided branch prediction hints using XAD_LIKELY and XAD_UNLIKELY.
    • Introduced a paired operations container variant for improved performance at a slight memory cost, with a XAD_REDUCED_MEMORY CMake option to toggle memory usage.
  • Documentation Updates: Improved and expanded documentation (#125).

  • CMake Module Renaming: Renamed helper modules to avoid name clashes (by @raneamri, #123).

Fixed

  • Move Behaviour of ChunkContainer Fixed move behaviour of ChunkContainer (by @rghouzra, #152)

Contributors

This release is a testament to the hard work and dedication of our contributors.
We extend our heartfelt gratitude to everyone who contributed their time and expertise to achieve these performance advancements.
Below is the list of contributors for this release:

Full Changelog: v1.6.0...v1.7.0

v1.6.0

17 Jul 20:30
cb3d7eb

Choose a tag to compare

This release mainly adds support for more architectures and compilers and provides higher level derivative functions as well as examples.

Added

  • Support for Mac M1+ architecture (ARM) as well as AppleClang 15 support (by @raneamri #116)
  • High level functions to compute Jacobian and Hessian matrices (by @raneamri #117)

Removed

  • Moved website to its own repository and keeping only the reference manual #112

New Contributors

Full Changelog: v1.5.2...v1.6.0

v1.5.2

04 Apr 12:58

Choose a tag to compare

What's Changed

This is a patch release after factoring out the Python bindings, to get the versioning consistent with the xad-py repository.

Full Changelog: v1.5.1...v1.5.2

v1.5.1

28 Mar 16:15

Choose a tag to compare

This is a patch release to allow interoperability with the QuantLib-Risks Python package.

What's Changed

  • Adds static tape functions to control tape activation in #102

Full Changelog: v1.5.0...v1.5.1

v1.5.0

25 Mar 08:30

Choose a tag to compare

Added

  • Python bindings as xad-autodiff in #98
  • Added std::is_signed trait to StdCompatibility.hpp header for consistency
  • Added application areas to docs & readme in #97
  • Added Natvis file to display XAD types as values in Visual Studio debugger by @dholden3 in #94

Changed

  • Updated Quantlib-XAD build documentation in #96
  • Cleaned up output of Swap Pricer example

New Contributors

Full Changelog: v1.4.1...v1.5.0

v1.4.1

10 Jan 09:44

Choose a tag to compare

This is a patch release to ensure compatibility with QuantLib 1.33.

Further details are listed below.

Added

  • support for hypot math function

Fixed

  • avoid overflow with complex abs function when real / imaginary parts are large

v1.4.0

09 Jan 15:04

Choose a tag to compare

This release fixes an issue with complex XAD types, updates documentation, and improves compiler support.

Further details are listed below.

Added

  • Supporting Clang version 16 and added to CI/CD
  • Adding complex arithmetics between complex XAD types and std::complex<double>

Fixed

  • Documentation updates

v1.3.0

16 Aug 15:08

Choose a tag to compare

This release fixes issues for supporting a wider range of compilers, improves CI/CD, and improves the documentation.

Further details are listed below:

Added

  • Improved CI/CD workflows with better caching and latest compilers

Changed

  • Documentation updates

Fixed

  • Fixed missing include of <memory> in ChunkContainer.hpp

v1.2.0

24 May 10:09

Choose a tag to compare

This release revamps the documentation site, fixes issues for a wider range of compilers, improves CI/CD, and adds new math functions.

Further details are listed below:

Added

  • More CI/CD workflows for all supported compiler versions
  • Added math function copysign

Changed

  • Revamped documentation site using mkdocs
  • Improved tests and testing infrastructure

Fixed

  • Throw exception when no tape is set on derivative calls
  • Some test errors with GCC versions not previously tested