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