forward_adolc.cpp File Reference
#include "main.h"
#include <Eigen/Dense>
#include <unsupported/Eigen/AdolcForward>

Classes

struct  TestFunc1< Scalar_, NX, NY >
 

Macros

#define NUMBER_DIRECTIONS   16
 

Functions

template<typename Vector >
EIGEN_DONT_INLINE Vector::Scalar foo (const Vector &p)
 
template<typename Func >
void adolc_forward_jacobian (const Func &f)
 
 EIGEN_DECLARE_TEST (forward_adolc)
 

Macro Definition Documentation

◆ NUMBER_DIRECTIONS

#define NUMBER_DIRECTIONS   16

Function Documentation

◆ adolc_forward_jacobian()

template<typename Func >
void adolc_forward_jacobian ( const Func &  f)
86  {
87  typename Func::InputType x = Func::InputType::Random(f.inputs());
88  typename Func::ValueType y(f.values()), yref(f.values());
89  typename Func::JacobianType j(f.values(), f.inputs()), jref(f.values(), f.inputs());
90 
91  jref.setZero();
92  yref.setZero();
93  f(x, &yref, &jref);
94  // std::cerr << y.transpose() << "\n\n";;
95  // std::cerr << j << "\n\n";;
96 
97  j.setZero();
98  y.setZero();
99  AdolcForwardJacobian<Func> autoj(f);
100  autoj(x, &y, &j);
101  // std::cerr << y.transpose() << "\n\n";;
102  // std::cerr << j << "\n\n";;
103 
104  VERIFY_IS_APPROX(y, yref);
105  VERIFY_IS_APPROX(j, jref);
106 }
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
Scalar * y
Definition: level1_cplx_impl.h:128
list x
Definition: plotDoE.py:28
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References f(), j, VERIFY_IS_APPROX, plotDoE::x, and y.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( forward_adolc  )
108  {
109  adtl::setNumDir(NUMBER_DIRECTIONS);
110 
111  for (int i = 0; i < g_repeat; i++) {
117  }
118 
119  {
120  // simple instantiation tests
122  foo(x);
124  ;
125  A.selfadjointView<Lower>().eigenvalues();
126  }
127 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
EIGEN_DONT_INLINE Vector::Scalar foo(const Vector &p)
Definition: forward_adolc.cpp:17
#define NUMBER_DIRECTIONS
Definition: forward_adolc.cpp:13
void adolc_forward_jacobian(const Func &f)
Definition: forward_adolc.cpp:86
@ Lower
Definition: Constants.h:211
#define CALL_SUBTEST(FUNC)
Definition: main.h:382
static int g_repeat
Definition: main.h:191
Definition: autodiff.cpp:32

References adolc_forward_jacobian(), CALL_SUBTEST, foo(), Eigen::g_repeat, i, Eigen::Lower, NUMBER_DIRECTIONS, and plotDoE::x.

◆ foo()

template<typename Vector >
EIGEN_DONT_INLINE Vector::Scalar foo ( const Vector p)
17  {
18  typedef typename Vector::Scalar Scalar;
19  return (p - Vector(Scalar(-1), Scalar(1.))).norm() + (p.array().sqrt().abs() * p.array().sin()).sum() + p.dot(p);
20 }
float * p
Definition: Tutorial_Map_using.cpp:9
SCALAR Scalar
Definition: bench_gemm.cpp:45
internal::traits< Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ > >::Scalar Scalar
Definition: PlainObjectBase.h:127
Matrix< Type, Size, 1 > Vector
\cpp11 SizeƗ1 vector of type Type.
Definition: Eigen/Eigen/src/Core/Matrix.h:515

References p.

Referenced by EIGEN_DECLARE_TEST().