symbolic_index.cpp File Reference
#include "main.h"

Macros

#define VERIFY_EQ_INT(A, B)   VERIFY_IS_APPROX(int(A), int(B))
 

Functions

template<typename T1 , typename T2 >
bool is_same_symb (const T1 &a, const T2 &b, Index size)
 
template<typename T >
void check_is_symbolic (const T &)
 
template<typename T >
void check_isnot_symbolic (const T &)
 
void check_symbolic_index ()
 
 EIGEN_DECLARE_TEST (symbolic_index)
 

Macro Definition Documentation

◆ VERIFY_EQ_INT

#define VERIFY_EQ_INT (   A,
  B 
)    VERIFY_IS_APPROX(int(A), int(B))

Function Documentation

◆ check_is_symbolic()

template<typename T >
void check_is_symbolic ( const T )
22  {
24 }
#define STATIC_CHECK(COND)
Definition: main.h:380
Definition: SymbolicIndex.h:179

References STATIC_CHECK.

Referenced by check_symbolic_index().

◆ check_isnot_symbolic()

template<typename T >
void check_isnot_symbolic ( const T )

References STATIC_CHECK.

Referenced by check_symbolic_index().

◆ check_symbolic_index()

void check_symbolic_index ( )
33  {
38  check_is_symbolic(2 * last - lastp1 / 2);
39  check_isnot_symbolic(fix<3>());
40 
41  Index size = 100;
42 
43  // First, let's check FixedInt arithmetic:
44  VERIFY(is_same_type((fix<5>() - fix<3>()) * fix<9>() / (-fix<3>()), fix<-(5 - 3) * 9 / 3>()));
45  VERIFY(is_same_type((fix<5>() - fix<3>()) * fix<9>() / fix<2>(), fix<(5 - 3) * 9 / 2>()));
46  VERIFY(is_same_type(fix<9>() / fix<2>(), fix<9 / 2>()));
47  VERIFY(is_same_type(fix<9>() % fix<2>(), fix<9 % 2>()));
48  VERIFY(is_same_type(fix<9>() & fix<2>(), fix<9 & 2>()));
49  VERIFY(is_same_type(fix<9>() | fix<2>(), fix<9 | 2>()));
50  VERIFY(is_same_type(fix<9>() / 2, int(9 / 2)));
51 
53  VERIFY(is_same_symb(lastp1 - fix<1>(), last, size));
54 
55  VERIFY_IS_EQUAL(((last * 5 - 2) / 3).eval(last = size - 1), ((size - 1) * 5 - 2) / 3);
56  VERIFY_IS_EQUAL(((last * fix<5>() - fix<2>()) / fix<3>()).eval(last = size - 1), ((size - 1) * 5 - 2) / 3);
57  VERIFY_IS_EQUAL((-last * lastp1).eval(last = size - 1), -(size - 1) * size);
58  VERIFY_IS_EQUAL((lastp1 - 3 * last).eval(last = size - 1), size - 3 * (size - 1));
59  VERIFY_IS_EQUAL(((lastp1 - 3 * last) / lastp1).eval(last = size - 1), (size - 3 * (size - 1)) / size);
60 
61  {
62  struct x_tag {};
63  static const symbolic::SymbolExpr<x_tag> x;
64  struct y_tag {};
65  static const symbolic::SymbolExpr<y_tag> y;
66  struct z_tag {};
67  static const symbolic::SymbolExpr<z_tag> z;
68 
69  VERIFY_IS_APPROX(int(((x + 3) / y + z).eval(x = 6, y = 3, z = -13)), (6 + 3) / 3 + (-13));
70  }
71 }
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Definition: SymbolicIndex.h:320
static constexpr const last_t last
Definition: IndexedViewHelper.h:48
static constexpr lastp1_t lastp1
Definition: IndexedViewHelper.h:72
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
Scalar * y
Definition: level1_cplx_impl.h:128
#define VERIFY(a)
Definition: main.h:362
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
std::enable_if_t< internal::is_same< T1, T2 >::value, bool > is_same_type(const T1 &, const T2 &)
Definition: main.h:407
constexpr internal::FixedInt< N > fix
Definition: IntegralConstant.h:214
list x
Definition: plotDoE.py:28
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Definition: sparse_permutations.cpp:47
void check_isnot_symbolic(const T &)
Definition: symbolic_index.cpp:27
bool is_same_symb(const T1 &a, const T2 &b, Index size)
Definition: symbolic_index.cpp:17
void check_is_symbolic(const T &)
Definition: symbolic_index.cpp:22

References check_is_symbolic(), check_isnot_symbolic(), eval(), Eigen::fix, is_same_symb(), Eigen::is_same_type(), Eigen::placeholders::last, Eigen::placeholders::lastp1, size, VERIFY, VERIFY_IS_APPROX, VERIFY_IS_EQUAL, plotDoE::x, and y.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( symbolic_index  )
#define CALL_SUBTEST_1(FUNC)
Definition: split_test_helper.h:4
void check_symbolic_index()
Definition: symbolic_index.cpp:33

References CALL_SUBTEST_1, and check_symbolic_index().

◆ is_same_symb()

template<typename T1 , typename T2 >
bool is_same_symb ( const T1 &  a,
const T2 &  b,
Index  size 
)
17  {
18  return a.eval(last = size - 1) == b.eval(last = size - 1);
19 }
Scalar * b
Definition: benchVecAdd.cpp:17
const Scalar * a
Definition: level2_cplx_impl.h:32

References a, b, Eigen::placeholders::last, and size.

Referenced by check_symbolic_index().