10 #ifndef EIGEN_AUTODIFF_JACOBIAN_H 11 #define EIGEN_AUTODIFF_JACOBIAN_H 23 #if EIGEN_HAS_VARIADIC_TEMPLATES 24 template<
typename...
T>
29 template<
typename T0,
typename T1>
31 template<
typename T0,
typename T1,
typename T2>
53 #if EIGEN_HAS_VARIADIC_TEMPLATES 61 template<
typename... ParamsType>
62 void operator() (
const InputType&
x, ValueType*
v, JacobianType* _jac,
63 const ParamsType&...
Params)
const 65 void operator() (
const InputType& x, ValueType* v, JacobianType* _jac=0) const
72 #if EIGEN_HAS_VARIADIC_TEMPLATES 73 Functor::operator()(x, v, Params...);
75 Functor::operator()(x, v);
80 JacobianType& jac = *_jac;
82 ActiveInput ax = x.template cast<ActiveScalar>();
83 ActiveValue av(jac.
rows());
86 for (Index
j=0;
j<jac.
rows();
j++)
87 av[
j].derivatives().
resize(x.rows());
89 for (Index
i=0;
i<jac.
cols();
i++)
90 ax[
i].derivatives() = DerivativeType::Unit(x.rows(),
i);
92 #if EIGEN_HAS_VARIADIC_TEMPLATES 93 Functor::operator()(ax, &av, Params...);
95 Functor::operator()(ax, &av);
98 for (Index
i=0;
i<jac.
rows();
i++)
100 (*v)[
i] = av[
i].value();
101 jac.row(
i) = av[
i].derivatives();
108 #endif // EIGEN_AUTODIFF_JACOBIAN_H EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index cols() const
AutoDiffJacobian(const T0 &a0)
#define EIGEN_STRONG_INLINE
JacobianType::Index Index
Matrix< ActiveScalar, ValuesAtCompileTime, 1 > ActiveValue
A scalar type replacement with automatic differentation capability.
AutoDiffJacobian(const Functor &f)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const
Namespace containing all symbols from the Eigen library.
Pose2 T2(M_PI/2.0, Point2(0.0, 2.0))
Matrix< Scalar, InputsAtCompileTime, 1 > DerivativeType
Matrix< Scalar, InputsAtCompileTime, 1 > InputType
AutoDiffScalar< DerivativeType > ActiveScalar
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Matrix< Scalar, ValuesAtCompileTime, 1 > ValueType
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Matrix< ActiveScalar, InputsAtCompileTime, 1 > ActiveInput
Functor::InputType InputType
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
static boost::shared_ptr< PreintegratedCombinedMeasurements::Params > Params()
AutoDiffJacobian(const T0 &a0, const T1 &a1, const T2 &a2)
Functor::ValueType ValueType
std::vector< float > Values
void operator()(const InputType &x, ValueType *v, JacobianType *_jac=0) const
AutoDiffJacobian(const T0 &a0, const T1 &a1)
Pose2 T1(M_PI/4.0, Point2(sqrt(0.5), sqrt(0.5)))
The matrix class, also used for vectors and row-vectors.
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Matrix< Scalar, ValuesAtCompileTime, InputsAtCompileTime > JacobianType