Automatic Differentiation Library
AUTOmatic Derivatives & Jacobians
by djmaxus and you
- pre-alpha
- play-ready
Contents
Motivation
For the living (and for my heart), I do research & development in the area of computational mathematics and wrote a whole bunch of sophisticated Jacobians by hand.
One day, I learned about automatic differentiation based on dual numbers. Almost the same day, I learned about Rust as well :crab:
- No more devastating hand-written derivatives!
- No more unsafe code!
Project goals
- Develop open-source automatic differentiation library for both academic and commercial computational mathematitians
- Gain experience of Rust programming
Anticipated features
-
Basic dual arithmetics as standalone feature
-
Number of variables
- single
- multiple
- static
- dynamic
-
Calculation tracking (partial derivatives of intermediate values)
-
Third-party crates support (as features)
-
num - linear algebra crates
-
-
Advanced features
-
Inter-operability of different dual types (e.g., single and multiple dynamic)
-
Arbitrary type of dual number components
-
Rust-alike safety of interfaces
e.g.,
Fn(...) -> Result<_,_>for binary operations and UUID-based tracking of variables -
Numerical verification (or replacement) of derivatives (by definition)
-
Macro for automatic extensions of regular (i.e. non-dual) functions
-
no
std
-
You are very welcome to introduce issues to promote most wanted features or to report a bug.