Boost logo

Boost :

Subject: [boost] New library proposal: Autodiff
From: Matt Pulver (mpulver_at_[hidden])
Date: 2018-12-18 16:37:35


Hello,

An automatic differentiation
<https://en.wikipedia.org/wiki/Automatic_differentiation> C++ library -
Autodiff - is released under the Boost License and is proposed for
inclusion into Boost:

   - Github: https://github.com/pulver/autodiff
   - Boost Library Incubator:
   http://blincubator.com/bi_library/autodiff-2/?gform_post_id=1716

Features:

   - Instances of autodiff variables satisfy Boost's Conceptual
   Requirements for Real Number Types
   <https://www.boost.org/doc/libs/1_69_0/libs/math/doc/html/math_toolkit/real_concepts.html>.
   In fact the class and function template definitions are based upon the
   tables in this page.
   - No use of dynamic memory. The only member variable is a std::array<>.
   - Consistent with Boost's type promotion templates. When
   adding/multiplying/etc. variables of differing dimension number and sizes,
   the resulting data type is calculated at compile-time.
   - Single header-only file.
   - Intuitive and minimal API.

Requirements:

   - C++17 compiler that supports constexpr if statements. There are a fair
   amount of calculations done at compile-time which would require messy
   SFINAE hacks to make this C++14-compatible.

Todo:

   - A github build matrix that also includes clang and MSVC.
   - Additional documentation, including the mathematics.

Feedback and endorsements for Boost Library inclusion are welcome and
requested.

Best regards,
Matt


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk