dontalign.cpp File Reference
#include "main.h"
#include <Eigen/Dense>

Functions

template<typename MatrixType >
void dontalign (const MatrixType &m)
 
 EIGEN_DECLARE_TEST (dontalign)
 

Function Documentation

◆ dontalign()

template<typename MatrixType >
void dontalign ( const MatrixType m)
20  {
21  typedef typename MatrixType::Scalar Scalar;
24 
25  Index rows = m.rows();
26  Index cols = m.cols();
27 
28  MatrixType a = MatrixType::Random(rows, cols);
29  SquareMatrixType square = SquareMatrixType::Random(rows, rows);
30  VectorType v = VectorType::Random(rows);
31 
32  VERIFY_IS_APPROX(v, square * square.colPivHouseholderQr().solve(v));
33  square = square.inverse().eval();
34  a = square * a;
35  square = square * square;
36  v = square * v;
37  v = a.adjoint() * v;
38  VERIFY(square.determinant() != Scalar(0));
39 
40  // bug 219: MapAligned() was giving an assert with EIGEN_DONT_ALIGN, because Map Flags were miscomputed
41  Scalar* array = internal::aligned_new<Scalar>(rows);
42  v = VectorType::MapAligned(array, rows);
44 }
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
#define VERIFY(a)
Definition: main.h:362
EIGEN_DEVICE_FUNC void aligned_delete(T *ptr, std::size_t size)
Definition: Memory.h:430
std::array< T, N > array
Definition: EmulateArray.h:231
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
squared absolute sa ArrayBase::abs2 DOXCOMMA MatrixBase::cwiseAbs2 square(power 2)
Definition: fft_test_shared.h:66

References a, Eigen::internal::aligned_delete(), cols, m, rows, Eigen::square(), v, VERIFY, and VERIFY_IS_APPROX.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( dontalign  )
46  {
47 #if defined EIGEN_TEST_PART_1 || defined EIGEN_TEST_PART_5
48  dontalign(Matrix3d());
49  dontalign(Matrix4f());
50 #elif defined EIGEN_TEST_PART_2 || defined EIGEN_TEST_PART_6
51  dontalign(Matrix3cd());
52  dontalign(Matrix4cf());
53 #elif defined EIGEN_TEST_PART_3 || defined EIGEN_TEST_PART_7
55  dontalign(Matrix<std::complex<float>, 32, 32>());
56 #elif defined EIGEN_TEST_PART_4 || defined EIGEN_TEST_PART_8
57  dontalign(MatrixXd(32, 32));
58  dontalign(MatrixXcf(32, 32));
59 #endif
60 }
void dontalign(const MatrixType &m)
Definition: dontalign.cpp:20

References dontalign().