// SPDX-FileCopyrightText: The Eigen Authors // SPDX-License-Identifier: MPL-2.0 #include #include #include #include struct ExampleFunctor { typedef Eigen::Vector2d InputType; typedef Eigen::Vector2d ValueType; template void operator()(const Eigen::Matrix& x, Eigen::Matrix* y) const { using std::sin; (*y)[0] = x[0] * x[0] + x[1]; (*y)[1] = x[0] * sin(x[1]); } }; int main() { Eigen::AutoDiffJacobian functor; Eigen::Vector2d x; Eigen::Vector2d y; Eigen::AutoDiffJacobian::JacobianType jacobian; x << 2.0, 0.5; functor(x, &y, &jacobian); std::cout << "value:\n" << y << "\n\n"; std::cout << "jacobian:\n" << jacobian << "\n"; }