1 #ifndef CPPAD_CG_CPPADCG_EIGEN_INCLUDED
2 #define CPPAD_CG_CPPADCG_EIGEN_INCLUDED
18 # include <cppad/cg.hpp>
19 # include <Eigen/Dense>
31 template<
typename Base>
32 struct NumTraits<
CppAD::cg::CG<Base> > {
50 RequireInitialization = 1 ,
62 return CppAD::numeric_limits<CppAD::cg::CG<Base> >::epsilon();
70 return 100. * CppAD::numeric_limits<CppAD::cg::CG<Base> >::epsilon();
77 return CppAD::numeric_limits<CppAD::cg::CG<Base> >::min();
84 return CppAD::numeric_limits<CppAD::cg::CG<Base> >::max();
91 return CppAD::numeric_limits<CppAD::cg::CG<Base> >::digits10;
101 template <
typename Base>
102 struct NumTraits<
CppAD::AD<CppAD::cg::CG<Base> > > {
121 RequireInitialization = 1 ,
133 return CppAD::numeric_limits<CppAD::AD<CGBase> >::epsilon();
141 return 100. * CppAD::numeric_limits<CppAD::AD<CGBase> >::epsilon();
148 return CppAD::numeric_limits<CppAD::AD<CGBase> >::min();
155 return CppAD::numeric_limits<CppAD::AD<CGBase> >::max();
162 return CppAD::numeric_limits<CGBase>::digits10;
167 #if EIGEN_VERSION_AT_LEAST(3,2,93)
173 template<
typename Base,
typename BinOp>
174 struct ScalarBinaryOpTraits<
CppAD::AD<CppAD::cg::CG<Base> >, Base, BinOp> {
178 template<
typename Base,
typename BinOp>
179 struct ScalarBinaryOpTraits<Base,
CppAD::AD<CppAD::cg::CG<Base> >, BinOp> {
183 template<
typename Base,
typename BinOp>
184 struct ScalarBinaryOpTraits<
CppAD::AD<CppAD::cg::CG<Base> >,
CppAD::cg::CG<Base>, BinOp> {
188 template<
typename Base,
typename BinOp>
189 struct ScalarBinaryOpTraits<
CppAD::cg::CG<Base>,
CppAD::AD<CppAD::cg::CG<Base> >, BinOp> {
198 template<
typename Base,
typename BinOp>
199 struct ScalarBinaryOpTraits<
CppAD::cg::CG<Base>, Base, BinOp> {
203 template<
typename Base,
typename BinOp>
204 struct ScalarBinaryOpTraits<Base,
CppAD::cg::CG<Base>, BinOp> {
208 #endif // #ifdef EIGEN_VERSION_AT_LEAST(3,2,93)
220 template <
class Base>
225 template <
class Base>
231 template <
class Base>
236 template <
class Base>
246 template <
class Base>
251 template <
class Base>
257 template <
class Base>
262 template <
class Base>