I've written (yet another!) Dual Number implementation for automatic
differentiation.  It is meant to be used as the value-type in Eigen
matrices, and has templates for vectorization (shockingly) similar to (and
based on) Eigen's complex-type vectorizations.  It is quite fast for
first-order forward diff, and imho pretty easy to use.  There are also
SSE/SSE3/AVX vectorizations for std::complex<dual< float | double >> types.

The library is here: https://gitlab.com/tesch1/cppduals , and there's a
small paper in JOSS too: https://doi.org/10.21105/joss.01487

I hope this could be useful for someone and would be glad for any feedback,
improvements, etc.

It would be interesting to compare this approach to others, by hand-wavey
arguments I believe it should ultimately be faster in certain cases.


Reply via email to