Subject: Re: [boost] New library proposal: Autodiff
From: Raffi Enficiaud (raffi.enficiaud_at_[hidden])
Date: 2018-12-20 06:34:30
On 18.12.18 17:37, Matt Pulver via Boost wrote:
> 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:
> - Instances of autodiff variables satisfy Boost's Conceptual
> Requirements for Real Number Types
> 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.
> - 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.
> - 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
> Best regards,
I like the idea very much, and it would be super useful. Having a quick
look at the documentation:
* it supports only compilation time expressions, is that correct? Would
it be possible to construct expressions at runtime and then call the
autodiff on that expression? I believe this would make the library
extremely useful and comparable to whatever tensorflow or caffe have
- does it handle vector/arrays/matrices already? It happens often that
we have a vector function returning eg. an array, and we want the
differential wrt. one element of that array. Same for matrices.