qpmad
Eigen-based C++ QP solver.
eigenut_types.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4  @author Jan Michalczyk
5  @copyright 2019 Alexander Sherikov. Licensed under the Apache License, Version 2.0.
6  @copyright 2014-2017 INRIA. Licensed under the Apache License, Version 2.0.
7  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
8 
9  @brief
10 */
11 
12 
13 #ifndef H_QPMAD_UTILS_TYPES
14 #define H_QPMAD_UTILS_TYPES
15 
16 
17 /// @ingroup eigenut
18 namespace qpmad_utils
19 {
20  typedef Eigen::Matrix<unsigned int, Eigen::Dynamic, 1> IndexVector;
21 
22  /**
23  * Index type used by Eigen. We should not use Eigen::DenseIndex since it
24  * is going to be deprecated in new versions of Eigen. May be EigenIndex
25  * should be defined depending on the version of Eigen.
26  */
27  typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE EigenIndex;
28 
29 
30  typedef double DefaultScalar;
31 
32 
33  typedef Eigen::Matrix<DefaultScalar, Eigen::Dynamic, Eigen::Dynamic> DefaultDynamicMatrix;
34 
35 
36 /// @attention Won't work if 'Scalar' contains commas.
37 #define QPMAD_UTILS_DYNAMIC_MATRIX(Scalar) Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
38 
39 /// @attention Won't work if 'Scalar' contains commas.
40 #define QPMAD_UTILS_DYNAMIC_VECTOR(Scalar) Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
41 
42 
43 #ifdef QPMAD_UTILS_DISABLE_ALIGNMENT_OF_STATIC_MATRICES
44 # define QPMAD_UTILS_CONSTANT_SIZE_ALIGN_TYPE Eigen::DontAlign
45 #else
46 # define QPMAD_UTILS_CONSTANT_SIZE_ALIGN_TYPE Eigen::AutoAlign
47 #endif
48 
49 #define QPMAD_UTILS_CONSTANT_SIZE_VECTOR(rows) Eigen::Matrix<DefaultScalar, rows, 1, QPMAD_UTILS_CONSTANT_SIZE_ALIGN_TYPE>
50 #ifdef EIGEN_DEFAULT_TO_ROW_MAJOR
51 // This may not work
52 # define QPMAD_UTILS_CONSTANT_SIZE_MATRIX(rows, cols) \
53  Eigen::Matrix<DefaultScalar, rows, cols, QPMAD_UTILS_CONSTANT_SIZE_ALIGN_TYPE>
54 #else
55 # define QPMAD_UTILS_CONSTANT_SIZE_MATRIX(rows, cols) \
56  Eigen::Matrix<DefaultScalar, rows, cols, QPMAD_UTILS_CONSTANT_SIZE_ALIGN_TYPE | ((rows == 1) ? (Eigen::RowMajor) : (Eigen::ColMajor))>
57 #endif
58 
59  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(2) Vector2;
60  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(3) Vector3;
61  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(4) Vector4;
62  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(5) Vector5;
63  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(6) Vector6;
64  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(7) Vector7;
65  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(8) Vector8;
66  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(9) Vector9;
67  typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(10) Vector10;
68 
69  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 2) Matrix2;
70  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 3) Matrix3;
71  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 4) Matrix4;
72  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 5) Matrix5;
73  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 6) Matrix6;
74  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 7) Matrix7;
75  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 8) Matrix8;
76  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 9) Matrix9;
77  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 10) Matrix10;
78 
79  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 2) Matrix1x2;
80  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 3) Matrix1x3;
81  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 4) Matrix1x4;
82  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 5) Matrix1x5;
83  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 6) Matrix1x6;
84  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 7) Matrix1x7;
85  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 8) Matrix1x8;
86  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 9) Matrix1x9;
87  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(1, 10) Matrix1x10;
88  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 3) Matrix2x3;
89  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 4) Matrix2x4;
90  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 5) Matrix2x5;
91  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 6) Matrix2x6;
92  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 7) Matrix2x7;
93  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 8) Matrix2x8;
94  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 9) Matrix2x9;
95  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 10) Matrix2x10;
96  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 2) Matrix3x2;
97  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 4) Matrix3x4;
98  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 5) Matrix3x5;
99  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 6) Matrix3x6;
100  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 7) Matrix3x7;
101  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 8) Matrix3x8;
102  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 9) Matrix3x9;
103  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(3, 10) Matrix3x10;
104  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 2) Matrix4x2;
105  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 3) Matrix4x3;
106  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 5) Matrix4x5;
107  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 6) Matrix4x6;
108  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 7) Matrix4x7;
109  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 8) Matrix4x8;
110  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 9) Matrix4x9;
111  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(4, 10) Matrix4x10;
112  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 2) Matrix5x2;
113  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 3) Matrix5x3;
114  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 4) Matrix5x4;
115  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 6) Matrix5x6;
116  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 7) Matrix5x7;
117  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 8) Matrix5x8;
118  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 9) Matrix5x9;
119  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(5, 10) Matrix5x10;
120  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 2) Matrix6x2;
121  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 3) Matrix6x3;
122  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 4) Matrix6x4;
123  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 5) Matrix6x5;
124  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 7) Matrix6x7;
125  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 8) Matrix6x8;
126  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 9) Matrix6x9;
127  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(6, 10) Matrix6x10;
128  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 2) Matrix7x2;
129  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 3) Matrix7x3;
130  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 4) Matrix7x4;
131  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 5) Matrix7x5;
132  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 6) Matrix7x6;
133  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 8) Matrix7x8;
134  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 9) Matrix7x9;
135  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(7, 10) Matrix7x10;
136  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 2) Matrix8x2;
137  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 3) Matrix8x3;
138  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 4) Matrix8x4;
139  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 5) Matrix8x5;
140  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 6) Matrix8x6;
141  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 7) Matrix8x7;
142  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 9) Matrix8x9;
143  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(8, 10) Matrix8x10;
144  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 2) Matrix9x2;
145  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 3) Matrix9x3;
146  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 4) Matrix9x4;
147  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 5) Matrix9x5;
148  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 6) Matrix9x6;
149  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 7) Matrix9x7;
150  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 8) Matrix9x8;
151  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(9, 10) Matrix9x10;
152  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 2) Matrix10x2;
153  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 3) Matrix10x3;
154  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 4) Matrix10x4;
155  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 5) Matrix10x5;
156  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 6) Matrix10x6;
157  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 7) Matrix10x7;
158  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 8) Matrix10x8;
159  typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(10, 9) Matrix10x9;
160 } // namespace qpmad_utils
161 
162 #endif
Eigen::Matrix< DefaultScalar, Eigen::Dynamic, Eigen::Dynamic > DefaultDynamicMatrix
Definition: eigenut_types.h:33
double DefaultScalar
Definition: eigenut_types.h:30
EIGEN_DEFAULT_DENSE_INDEX_TYPE EigenIndex
Definition: eigenut_types.h:27
typedef QPMAD_UTILS_CONSTANT_SIZE_VECTOR(2) Vector2
Eigen::Matrix< unsigned int, Eigen::Dynamic, 1 > IndexVector
Definition: eigenut_types.h:20
typedef QPMAD_UTILS_CONSTANT_SIZE_MATRIX(2, 2) Matrix2