|
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