shift_test_impl< ArrayType > Struct Template Reference

Public Types

typedef ArrayType::Scalar Scalar
 

Static Public Member Functions

template<size_t N = 1>
static std::enable_if_t<(N > MaxShift), void > run (const ArrayType &)
 
template<size_t N = 1>
static std::enable_if_t<(N<=MaxShift), void > run (const ArrayType &m)
 

Static Public Attributes

static constexpr size_t Size = sizeof(Scalar)
 
static constexpr size_t MaxShift = (CHAR_BIT * Size) - 1
 

Member Typedef Documentation

◆ Scalar

template<typename ArrayType >
typedef ArrayType::Scalar shift_test_impl< ArrayType >::Scalar

Member Function Documentation

◆ run() [1/2]

template<typename ArrayType >
template<size_t N = 1>
static std::enable_if_t<(N > MaxShift), void> shift_test_impl< ArrayType >::run ( const ArrayType &  )
inlinestatic
1130 {}

Referenced by shift_test().

◆ run() [2/2]

template<typename ArrayType >
template<size_t N = 1>
static std::enable_if_t<(N <= MaxShift), void> shift_test_impl< ArrayType >::run ( const ArrayType &  m)
inlinestatic
1132  {
1133  const Index rows = m.rows();
1134  const Index cols = m.cols();
1135 
1136  ArrayType m1 = ArrayType::Random(rows, cols), m2(rows, cols), m3(rows, cols);
1137 
1138  m2 = m1.unaryExpr([](const Scalar& v) { return numext::logical_shift_left(v, N); });
1139  m3 = m1.unaryExpr(logical_left_shift_op<N, Scalar>());
1141 
1142  m2 = m1.unaryExpr([](const Scalar& v) { return numext::logical_shift_right(v, N); });
1143  m3 = m1.unaryExpr(logical_right_shift_op<N, Scalar>());
1145 
1146  m2 = m1.unaryExpr([](const Scalar& v) { return numext::arithmetic_shift_right(v, N); });
1147  m3 = m1.unaryExpr(arithmetic_right_shift_op<N, Scalar>());
1149 
1150  run<N + 1>(m);
1151  }
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
Matrix3d m1
Definition: IOFormat.cpp:2
MatrixType m2(n_dims)
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
@ N
Definition: constructor.cpp:22
int * m
Definition: level2_cplx_impl.h:294
#define VERIFY_IS_CWISE_EQUAL(a, b)
Definition: main.h:375
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar logical_shift_left(const Scalar &a, int n)
Definition: MathFunctions.h:1827
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar arithmetic_shift_right(const Scalar &a, int n)
Definition: MathFunctions.h:1838
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar logical_shift_right(const Scalar &a, int n)
Definition: MathFunctions.h:1832
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: array_cwise.cpp:1104
Definition: array_cwise.cpp:1088
Definition: array_cwise.cpp:1096
ArrayType::Scalar Scalar
Definition: array_cwise.cpp:1125

References Eigen::numext::arithmetic_shift_right(), cols, Eigen::numext::logical_shift_left(), Eigen::numext::logical_shift_right(), m, m1, m2(), N, rows, v, and VERIFY_IS_CWISE_EQUAL.

Member Data Documentation

◆ MaxShift

template<typename ArrayType >
constexpr size_t shift_test_impl< ArrayType >::MaxShift = (CHAR_BIT * Size) - 1
staticconstexpr

◆ Size

template<typename ArrayType >
constexpr size_t shift_test_impl< ArrayType >::Size = sizeof(Scalar)
staticconstexpr

The documentation for this struct was generated from the following file: