5 #ifndef __pinocchio_codegen_ccpadcg_hpp__
6 #define __pinocchio_codegen_ccpadcg_hpp__
8 #define PINOCCHIO_WITH_CPPADCG_SUPPORT
13 #include <boost/mpl/int.hpp>
14 #include <cppad/cg/support/cppadcg_eigen.hpp>
26 template<
typename Scalar>
27 struct constant_pi<
CppAD::cg::CG<Scalar>> : constant_pi<Scalar>
34 return CGScalar(constant_pi<Scalar>::get(
n));
37 #if BOOST_VERSION >= 107700
38 template<
class T, T value>
39 static inline CGScalar get(
const std::integral_constant<T, value> &
n)
41 return CGScalar(constant_pi<Scalar>::get(
n));
44 template<
class T, T value>
45 static inline CGScalar get(
const boost::integral_constant<T, value> &
n)
47 return CGScalar(constant_pi<Scalar>::get(
n));
61 template<
typename Scalar>
64 #if EIGEN_VERSION_AT_LEAST(3, 2, 90)
67 static inline Scalar run(
const CppAD::cg::CG<Scalar> & x)
74 template<
typename Scalar>
77 #if EIGEN_VERSION_AT_LEAST(3, 2, 90)
80 static inline Scalar run(
const CppAD::AD<CppAD::cg::CG<Scalar>> & x)
82 return CppAD::Value(
x).getValue();
93 template<
class Scalar>
103 template<
typename Scalar>
112 return CGScalar(Base::template precision<degree>());
116 template<
typename NewScalar,
typename Scalar>
119 static NewScalar
cast(
const CppAD::cg::CG<Scalar> & cg_value)
121 return static_cast<NewScalar
>(cg_value.getValue());
127 #endif // #ifndef __pinocchio_codegen_ccpadcg_hpp__