Boost logo

Boost :

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:
> 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

Hi,

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.

Thanks,
Raffi


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