sadET
autodiff
Our great sponsors
sadET | autodiff | |
---|---|---|
1 | 7 | |
1 | 1,532 | |
- | 2.5% | |
6.6 | 7.5 | |
about 1 month ago | 22 days ago | |
C++ | C++ | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sadET
-
Assign expression-template to variable in C++
Then, each expression should carry enough information that you can call different member functions, such as derivative for their derivative, or conjugate to take its complex conjugate, etc. Now, the conjugate (and derivative) member function should somehow inherit its behaviour from the sub expressionss. You only need to define what conjugate means for the Number class, and then all other expressions, just apply this function to its sub expressions, until a Number is reached. I am not sure if this is detailed enough, but I apply this logic here. In this piece of code, I am using ETs to that define expressions, and then use these expressions to take their derivatives. This is an autodiff library (without dual numbers), which works well, but it suffers from the the problem; can't find a way to assign and reassign variables to expressions.
autodiff
- The Elements of Differentiable Programming
-
Astray: A performance-portable geodesic ray tracing library.
I completely agree. Specifying the metric rather than the Christoffel symbols would make it much easier for the users. Something like https://github.com/autodiff/autodiff might just work as the metric tensor is made up of primitives.
-
Point-to-Point Distance Constraint: Gradient of Forward Kinematics
Old username :D So far I have been using Eigen for linear algebra and NLOPT for optimization algorithms. I have found "autodiff" that hopefully looks easy to use: https://github.com/autodiff/autodiff
- Autodiff: Simple C++17 library for Automatic Differentiation
-
Gradients Without Backpropagation
Forward-mode differentiation is easy to implement in C++ with templates, operator overloading, and dual numbers (https://en.wikipedia.org/wiki/Automatic_differentiation#Auto...). Some libraries such as autodiff (https://github.com/autodiff/autodiff) and CppAD (https://github.com/coin-or/CppAD) use this method.
- Ensmallen: A C++ Library for Efficient Numerical Optimization
-
I am creating a fast, header-only, C++ library for control algorithms
I was thinking of adding [autodiff](https://github.com/autodiff/autodiff) in the future, mainly because it works seamlessly with *Eigen*. One big advantage would be that I could use it for AD for NonlinearSystems as well.
What are some alternatives?
Zygote.jl - 21st century AD
CppAD - A C++ Algorithmic Differentiation Package: Home Page
FastAD - FastAD is a C++ implementation of automatic differentiation both forward and reverse mode.
MathNet - Math.NET Numerics
MKL.NET - A simple cross platform .NET API for Intel MKL
CppRobotics - Header-only C++ library for robotics, control, and path planning algorithms. Work in progress, contributions are welcome!
PythonRobotics - Python sample codes for robotics algorithms.
Microsoft Automatic Graph Layout - A set of tools for graph layout and viewing
allwpilib - Official Repository of WPILibJ and WPILibC
geodesic_raytracing
Rationals - 🔟 Implementation of rational number arithmetic for .NET with arbitrary precision.
Math3D - A .NET Standard 2.0 library for simple and efficient 3D math that is a feature-rich replacement for System.Numerics https://vimaec.github.io/Math3D