| // SPDX-FileCopyrightText: The Eigen Authors | |
| // SPDX-License-Identifier: MPL-2.0 | |
| #include <Eigen/Dense> | |
| #include <cmath> | |
| #include <iostream> | |
| #include <contrib/Eigen/AutoDiff> | |
| template <typename Scalar> | |
| Scalar f(const Scalar& x, const Scalar& y) { | |
| using std::sin; | |
| return x * x * y + sin(y); | |
| } | |
| int main() { | |
| typedef Eigen::AutoDiffScalar<Eigen::Vector2d> ADScalar; | |
| ADScalar x(2.0, Eigen::Vector2d::UnitX()); | |
| ADScalar y(0.5, Eigen::Vector2d::UnitY()); | |
| ADScalar z = f(x, y); | |
| std::cout << "f(x,y) = " << z.value() << "\n"; | |
| std::cout << "df/dx = " << z.derivatives()[0] << "\n"; | |
| std::cout << "df/dy = " << z.derivatives()[1] << "\n"; | |
| } |