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

Macros

#define VERIFY_IMPLICIT_CONVERSION_3(DIAGTYPE, V0, V1, V2)
 
#define VERIFY_IMPLICIT_CONVERSION_4(DIAGTYPE, V0, V1, V2, V3)
 
#define VERIFY_IMPLICIT_CONVERSION_5(DIAGTYPE, V0, V1, V2, V3, V4)
 

Functions

template<typename Scalar >
void constructorTest ()
 
template<>
void constructorTest< float > ()
 
 EIGEN_DECLARE_TEST (diagonal_matrix_variadic_ctor)
 

Macro Definition Documentation

◆ VERIFY_IMPLICIT_CONVERSION_3

#define VERIFY_IMPLICIT_CONVERSION_3 (   DIAGTYPE,
  V0,
  V1,
  V2 
)
Value:
DIAGTYPE d(V0, V1, V2); \
DIAGTYPE::DenseMatrixType Dense = d.toDenseMatrix(); \
VERIFY_IS_APPROX(Dense(0, 0), (Scalar)V0); \
VERIFY_IS_APPROX(Dense(1, 1), (Scalar)V1); \
VERIFY_IS_APPROX(Dense(2, 2), (Scalar)V2);
SCALAR Scalar
Definition: bench_gemm.cpp:45
double V0
Coeff for (time-)constant variation of temperature in inner circle.
Definition: stefan_boltzmann_melt.cc:227
Definition: Constants.h:519

◆ VERIFY_IMPLICIT_CONVERSION_4

#define VERIFY_IMPLICIT_CONVERSION_4 (   DIAGTYPE,
  V0,
  V1,
  V2,
  V3 
)
Value:
DIAGTYPE d(V0, V1, V2, V3); \
DIAGTYPE::DenseMatrixType Dense = d.toDenseMatrix(); \
VERIFY_IS_APPROX(Dense(0, 0), (Scalar)V0); \
VERIFY_IS_APPROX(Dense(1, 1), (Scalar)V1); \
VERIFY_IS_APPROX(Dense(2, 2), (Scalar)V2); \
VERIFY_IS_APPROX(Dense(3, 3), (Scalar)V3);

◆ VERIFY_IMPLICIT_CONVERSION_5

#define VERIFY_IMPLICIT_CONVERSION_5 (   DIAGTYPE,
  V0,
  V1,
  V2,
  V3,
  V4 
)
Value:
DIAGTYPE d(V0, V1, V2, V3, V4); \
DIAGTYPE::DenseMatrixType Dense = d.toDenseMatrix(); \
VERIFY_IS_APPROX(Dense(0, 0), (Scalar)V0); \
VERIFY_IS_APPROX(Dense(1, 1), (Scalar)V1); \
VERIFY_IS_APPROX(Dense(2, 2), (Scalar)V2); \
VERIFY_IS_APPROX(Dense(3, 3), (Scalar)V3); \
VERIFY_IS_APPROX(Dense(4, 4), (Scalar)V4);

Function Documentation

◆ constructorTest()

template<typename Scalar >
void constructorTest ( )
37  {
38  typedef DiagonalMatrix<Scalar, 0> DiagonalMatrix0;
39  typedef DiagonalMatrix<Scalar, 3> DiagonalMatrix3;
40  typedef DiagonalMatrix<Scalar, 4> DiagonalMatrix4;
41  typedef DiagonalMatrix<Scalar, Dynamic> DiagonalMatrixX;
42 
43  Scalar raw[7];
44  for (int k = 0; k < 7; ++k) raw[k] = internal::random<Scalar>();
45 
46  // Fixed-sized matrices
47  {
48  DiagonalMatrix0 a{{}};
49  VERIFY(a.rows() == 0);
50  VERIFY(a.cols() == 0);
51  typename DiagonalMatrix0::DenseMatrixType m = a.toDenseMatrix();
52  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
53  }
54  {
55  DiagonalMatrix3 a{{raw[0], raw[1], raw[2]}};
56  VERIFY(a.rows() == 3);
57  VERIFY(a.cols() == 3);
58  typename DiagonalMatrix3::DenseMatrixType m = a.toDenseMatrix();
59  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
60  }
61  {
62  DiagonalMatrix4 a{{raw[0], raw[1], raw[2], raw[3]}};
63  VERIFY(a.rows() == 4);
64  VERIFY(a.cols() == 4);
65  typename DiagonalMatrix4::DenseMatrixType m = a.toDenseMatrix();
66  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
67  }
68 
69  // dynamically sized matrices
70  {
71  DiagonalMatrixX a{{}};
72  VERIFY(a.rows() == 0);
73  VERIFY(a.rows() == 0);
74  typename DiagonalMatrixX::DenseMatrixType m = a.toDenseMatrix();
75  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
76  }
77  {
78  DiagonalMatrixX a{{raw[0], raw[1], raw[2], raw[3], raw[4], raw[5], raw[6]}};
79  VERIFY(a.rows() == 7);
80  VERIFY(a.rows() == 7);
81  typename DiagonalMatrixX::DenseMatrixType m = a.toDenseMatrix();
82  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
83  }
84 }
Represents a diagonal matrix with its storage.
Definition: DiagonalMatrix.h:172
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
char char char int int * k
Definition: level2_impl.h:374
#define VERIFY(a)
Definition: main.h:362
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83

References a, k, m, and VERIFY.

Referenced by EIGEN_DECLARE_TEST().

◆ constructorTest< float >()

template<>
void constructorTest< float > ( )
87  {
88  typedef float Scalar;
89 
90  typedef DiagonalMatrix<Scalar, 0> DiagonalMatrix0;
91  typedef DiagonalMatrix<Scalar, 3> DiagonalMatrix3;
92  typedef DiagonalMatrix<Scalar, 4> DiagonalMatrix4;
93  typedef DiagonalMatrix<Scalar, 5> DiagonalMatrix5;
94  typedef DiagonalMatrix<Scalar, Dynamic> DiagonalMatrixX;
95 
96  Scalar raw[7];
97  for (int k = 0; k < 7; ++k) raw[k] = internal::random<Scalar>();
98 
99  // Fixed-sized matrices
100  {
101  DiagonalMatrix0 a{{}};
102  VERIFY(a.rows() == 0);
103  VERIFY(a.cols() == 0);
104  typename DiagonalMatrix0::DenseMatrixType m = a.toDenseMatrix();
105  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
106  }
107  {
108  DiagonalMatrix3 a{{raw[0], raw[1], raw[2]}};
109  VERIFY(a.rows() == 3);
110  VERIFY(a.cols() == 3);
111  typename DiagonalMatrix3::DenseMatrixType m = a.toDenseMatrix();
112  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
113  }
114  {
115  DiagonalMatrix4 a{{raw[0], raw[1], raw[2], raw[3]}};
116  VERIFY(a.rows() == 4);
117  VERIFY(a.cols() == 4);
118  typename DiagonalMatrix4::DenseMatrixType m = a.toDenseMatrix();
119  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
120  }
121 
122  // dynamically sized matrices
123  {
124  DiagonalMatrixX a{{}};
125  VERIFY(a.rows() == 0);
126  VERIFY(a.rows() == 0);
127  typename DiagonalMatrixX::DenseMatrixType m = a.toDenseMatrix();
128  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
129  }
130  {
131  DiagonalMatrixX a{{raw[0], raw[1], raw[2], raw[3], raw[4], raw[5], raw[6]}};
132  VERIFY(a.rows() == 7);
133  VERIFY(a.rows() == 7);
134  typename DiagonalMatrixX::DenseMatrixType m = a.toDenseMatrix();
135  for (Index k = 0; k < a.rows(); ++k) VERIFY(m(k, k) == raw[k]);
136  }
137  { VERIFY_IMPLICIT_CONVERSION_3(DiagonalMatrix3, 1.2647, 2.56f, -3); }
138  { VERIFY_IMPLICIT_CONVERSION_4(DiagonalMatrix4, 1.2647, 2.56f, -3, 3.23f); }
139  { VERIFY_IMPLICIT_CONVERSION_5(DiagonalMatrix5, 1.2647, 2.56f, -3, 3.23f, 2); }
140 }
#define VERIFY_IMPLICIT_CONVERSION_4(DIAGTYPE, V0, V1, V2, V3)
Definition: diagonal_matrix_variadic_ctor.cpp:19
#define VERIFY_IMPLICIT_CONVERSION_5(DIAGTYPE, V0, V1, V2, V3, V4)
Definition: diagonal_matrix_variadic_ctor.cpp:27
#define VERIFY_IMPLICIT_CONVERSION_3(DIAGTYPE, V0, V1, V2)
Definition: diagonal_matrix_variadic_ctor.cpp:12

References a, k, m, VERIFY, VERIFY_IMPLICIT_CONVERSION_3, VERIFY_IMPLICIT_CONVERSION_4, and VERIFY_IMPLICIT_CONVERSION_5.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( diagonal_matrix_variadic_ctor  )
142  {
143  CALL_SUBTEST_2(constructorTest<unsigned char>());
145  CALL_SUBTEST_2(constructorTest<Index>());
146  CALL_SUBTEST_2(constructorTest<int>());
147  CALL_SUBTEST_2(constructorTest<long int>());
148  CALL_SUBTEST_2(constructorTest<std::ptrdiff_t>());
149  CALL_SUBTEST_2(constructorTest<std::complex<double>>());
150 }
void constructorTest< float >()
Definition: diagonal_matrix_variadic_ctor.cpp:87
void constructorTest()
Definition: diagonal_matrix_variadic_ctor.cpp:37
#define CALL_SUBTEST_2(FUNC)
Definition: split_test_helper.h:10

References CALL_SUBTEST_2, constructorTest(), and constructorTest< float >().