Rigid Body Dynamics Library
MX_Xd_static.h
Go to the documentation of this file.
1/*
2 * RBDL - Rigid Body Dynamics Library
3 * Copyright (c) 2011-2018 Martin Felis <martin@fysx.org>
4 *
5 * Licensed under the zlib license. See LICENSE for more details.
6 */
7
8#ifndef MX_XD_STATIC_H
9#define MX_XD_STATIC_H
10
11#include <vector>
12#include <string>
13#include <memory>
14
15#include <casadi.hpp>
16#include "MX_Xd_scalar.h"
17#include "MX_Xd_dynamic.h"
18
19
20namespace RBDLCasadiMath {
21
22template <unsigned int nrows, unsigned int ncols>
23class MX_Xd_static : public casadi::MX{
24public:
25 MX_Xd_static() : casadi::MX(nrows, ncols){
26
27 }
28
29 virtual ~MX_Xd_static(){
30
31 }
32
33 MX_Xd_static(const double val) : casadi::MX(1, 1)
34 {
35 (*this)(0, 0) = val;
36 }
37
38 MX_Xd_static(const casadi::MX& m) : casadi::MX(m){
39 }
40
42 const MX_Xd_scalar& v0,
43 const MX_Xd_scalar& v1) :
44 casadi::MX(2, 1)
45 {
46 (*this)(0) = v0(0);
47 (*this)(1) = v1(0);
48 }
50 const MX_Xd_scalar& v0,
51 const MX_Xd_scalar& v1,
52 const MX_Xd_scalar& v2) :
53 casadi::MX(3, 1)
54 {
55 this->casadi::MX::operator ()(0) = v0(0);
56 (*this)(1) = v1(0);
57 (*this)(2) = v2(0);
58
59 }
61 const MX_Xd_scalar& v1,
62 const MX_Xd_scalar& v2,
63 const MX_Xd_scalar& v3) :
64 casadi::MX(4, 1)
65 {
66 (*this)(0) = v0(0);
67 (*this)(1) = v1(0);
68 (*this)(2) = v2(0);
69 (*this)(3) = v3(0);
70 }
72 const MX_Xd_scalar& v1,
73 const MX_Xd_scalar& v2,
74 const MX_Xd_scalar& v3,
75 const MX_Xd_scalar& v4,
76 const MX_Xd_scalar& v5) :
77 casadi::MX(6, 1)
78 {
79 (*this)(0) = v0(0);
80 (*this)(1) = v1(0);
81 (*this)(2) = v2(0);
82 (*this)(3) = v3(0);
83 (*this)(4) = v4(0);
84 (*this)(5) = v5(0);
85 }
86
88 const MX_Xd_scalar& v1,
89 const MX_Xd_scalar& v2,
90 const MX_Xd_scalar& v3,
91 const MX_Xd_scalar& v4,
92 const MX_Xd_scalar& v5,
93 const MX_Xd_scalar& v6,
94 const MX_Xd_scalar& v7) :
95 casadi::MX(8, 1)
96 {
97 (*this)(0) = v0(0);
98 (*this)(1) = v1(0);
99 (*this)(2) = v2(0);
100 (*this)(3) = v3(0);
101 (*this)(4) = v4(0);
102 (*this)(5) = v5(0);
103 (*this)(6) = v6(0);
104 (*this)(7) = v7(0);
105
106 }
107 MX_Xd_static(const MX_Xd_scalar& v00, const MX_Xd_scalar& v01, const MX_Xd_scalar& v02,
108 const MX_Xd_scalar& v10, const MX_Xd_scalar& v11, const MX_Xd_scalar& v12,
109 const MX_Xd_scalar& v20, const MX_Xd_scalar& v21, const MX_Xd_scalar& v22) :
110 casadi::MX(3, 3)
111 {
112 (*this)(0,0) = v00(0, 0);
113 (*this)(0,1) = v01(0, 0);
114 (*this)(0,2) = v02(0, 0);
115 (*this)(1,0) = v10(0, 0);
116 (*this)(1,1) = v11(0, 0);
117 (*this)(1,2) = v12(0, 0);
118 (*this)(2,0) = v20(0, 0);
119 (*this)(2,1) = v21(0, 0);
120 (*this)(2,2) = v22(0, 0);
121 }
122
123 MX_Xd_static(const MX_Xd_scalar& v00, const MX_Xd_scalar& v01, const MX_Xd_scalar& v02, const MX_Xd_scalar& v03,
124 const MX_Xd_scalar& v10, const MX_Xd_scalar& v11, const MX_Xd_scalar& v12, const MX_Xd_scalar& v13,
125 const MX_Xd_scalar& v20, const MX_Xd_scalar& v21, const MX_Xd_scalar& v22, const MX_Xd_scalar& v23,
126 const MX_Xd_scalar& v30, const MX_Xd_scalar& v31, const MX_Xd_scalar& v32, const MX_Xd_scalar& v33) :
127 casadi::MX(4, 4)
128 {
129 (*this)(0,0) = v00(0, 0);
130 (*this)(0,1) = v01(0, 0);
131 (*this)(0,2) = v02(0, 0);
132 (*this)(0,3) = v03(0, 0);
133 (*this)(1,0) = v10(0, 0);
134 (*this)(1,1) = v11(0, 0);
135 (*this)(1,2) = v12(0, 0);
136 (*this)(1,3) = v13(0, 0);
137 (*this)(2,0) = v20(0, 0);
138 (*this)(2,1) = v21(0, 0);
139 (*this)(2,2) = v22(0, 0);
140 (*this)(2,3) = v23(0, 0);
141 (*this)(3,0) = v30(0, 0);
142 (*this)(3,1) = v31(0, 0);
143 (*this)(3,2) = v32(0, 0);
144 (*this)(3,3) = v33(0, 0);
145 }
146
147 MX_Xd_static(const MX_Xd_scalar& v00, const MX_Xd_scalar& v01, const MX_Xd_scalar& v02, const MX_Xd_scalar& v03, const MX_Xd_scalar& v04, const MX_Xd_scalar& v05,
148 const MX_Xd_scalar& v10, const MX_Xd_scalar& v11, const MX_Xd_scalar& v12, const MX_Xd_scalar& v13, const MX_Xd_scalar& v14, const MX_Xd_scalar& v15,
149 const MX_Xd_scalar& v20, const MX_Xd_scalar& v21, const MX_Xd_scalar& v22, const MX_Xd_scalar& v23, const MX_Xd_scalar& v24, const MX_Xd_scalar& v25,
150 const MX_Xd_scalar& v30, const MX_Xd_scalar& v31, const MX_Xd_scalar& v32, const MX_Xd_scalar& v33, const MX_Xd_scalar& v34, const MX_Xd_scalar& v35,
151 const MX_Xd_scalar& v40, const MX_Xd_scalar& v41, const MX_Xd_scalar& v42, const MX_Xd_scalar& v43, const MX_Xd_scalar& v44, const MX_Xd_scalar& v45,
152 const MX_Xd_scalar& v50, const MX_Xd_scalar& v51, const MX_Xd_scalar& v52, const MX_Xd_scalar& v53, const MX_Xd_scalar& v54, const MX_Xd_scalar& v55) :
153 casadi::MX(6, 6)
154 {
155 (*this)(0,0) = v00(0, 0);
156 (*this)(0,1) = v01(0, 0);
157 (*this)(0,2) = v02(0, 0);
158 (*this)(0,3) = v03(0, 0);
159 (*this)(0,4) = v04(0, 0);
160 (*this)(0,5) = v05(0, 0);
161
162 (*this)(1,0) = v10(0, 0);
163 (*this)(1,1) = v11(0, 0);
164 (*this)(1,2) = v12(0, 0);
165 (*this)(1,3) = v13(0, 0);
166 (*this)(1,4) = v14(0, 0);
167 (*this)(1,5) = v15(0, 0);
168
169 (*this)(2,0) = v20(0, 0);
170 (*this)(2,1) = v21(0, 0);
171 (*this)(2,2) = v22(0, 0);
172 (*this)(2,3) = v23(0, 0);
173 (*this)(2,4) = v24(0, 0);
174 (*this)(2,5) = v25(0, 0);
175
176 (*this)(3,0) = v30(0, 0);
177 (*this)(3,1) = v31(0, 0);
178 (*this)(3,2) = v32(0, 0);
179 (*this)(3,3) = v33(0, 0);
180 (*this)(3,4) = v34(0, 0);
181 (*this)(3,5) = v35(0, 0);
182
183 (*this)(4,0) = v40(0, 0);
184 (*this)(4,1) = v41(0, 0);
185 (*this)(4,2) = v42(0, 0);
186 (*this)(4,3) = v43(0, 0);
187 (*this)(4,4) = v44(0, 0);
188 (*this)(4,5) = v45(0, 0);
189
190 (*this)(5,0) = v50(0, 0);
191 (*this)(5,1) = v51(0, 0);
192 (*this)(5,2) = v52(0, 0);
193 (*this)(5,3) = v53(0, 0);
194 (*this)(5,4) = v54(0, 0);
195 (*this)(5,5) = v55(0, 0);
196 }
197
204 void set(
205 const MX_Xd_scalar& v0,
206 const MX_Xd_scalar& v1,
207 const MX_Xd_scalar& v2){
208 (*this)(0) = v0;
209 (*this)(1) = v1;
210 (*this)(2) = v2;
211 }
219 void set(
220 const MX_Xd_scalar& v0,
221 const MX_Xd_scalar& v1,
222 const MX_Xd_scalar& v2,
223 const MX_Xd_scalar& v3){
224 (*this)(0) = v0;
225 (*this)(1) = v1;
226 (*this)(2) = v2;
227 (*this)(3) = v3;
228 }
238 void set(
239 const MX_Xd_scalar& v0,
240 const MX_Xd_scalar& v1,
241 const MX_Xd_scalar& v2,
242 const MX_Xd_scalar& v3,
243 const MX_Xd_scalar& v4,
244 const MX_Xd_scalar& v5){
245 (*this)(0) = v0;
246 (*this)(1) = v1;
247 (*this)(2) = v2;
248 (*this)(3) = v3;
249 (*this)(4) = v4;
250 (*this)(5) = v5;
251 }
252
254 return casadi::MX::eye(ncols);
255 }
257 *this = casadi::MX::eye(ncols);
258 return *this;
259 }
260
262 return MX_Xd_static<nrows, ncols>::zeros(nrows, ncols);
263 }
265 *this = casadi::MX::zeros(this->rows(), this->cols());
266 return *this;
267 }
268
270 return MX_Xd_static<nrows, ncols>::ones(nrows, ncols);
271 }
273 *this = casadi::MX::ones(this->rows(), this->cols());
274 return *this;
275 }
276
277
278 unsigned int rows() const {
279 return static_cast<unsigned int>(this->casadi::MX::rows());
280 }
281
282 unsigned int cols() const {
283 return static_cast<unsigned int>(this->casadi::MX::columns());
284 }
285
286 unsigned int size() const {
287 return rows() * cols();
288 }
289
290 template <unsigned int row_count, unsigned int col_count>
292 unsigned int row_start,
293 unsigned int col_start)
294 {
295 return this->casadi::MX::operator()(
296 casadi::Slice(static_cast<casadi_int>(row_start), static_cast<casadi_int>(row_start+row_count)),
297 casadi::Slice(static_cast<casadi_int>(col_start), static_cast<casadi_int>(col_start+col_count)));
298 }
299 template <unsigned int row_count, unsigned int col_count>
301 unsigned int row_start,
302 unsigned int col_start) const
303 {
304 return this->casadi::MX::operator()(
305 casadi::Slice(static_cast<casadi_int>(row_start), static_cast<casadi_int>(row_start+row_count)),
306 casadi::Slice(static_cast<casadi_int>(col_start), static_cast<casadi_int>(col_start+col_count)));
307 }
309 unsigned int row_start,
310 unsigned int col_start,
311 unsigned int row_count,
312 unsigned int col_count)
313 {
314 return this->casadi::MX::operator()(
315 casadi::Slice(static_cast<casadi_int>(row_start), static_cast<casadi_int>(row_start+row_count)),
316 casadi::Slice(static_cast<casadi_int>(col_start), static_cast<casadi_int>(col_start+col_count)));
317 }
319 unsigned int row_start,
320 unsigned int col_start,
321 unsigned int row_count,
322 unsigned int col_count) const
323 {
324 return this->casadi::MX::operator()(
325 casadi::Slice(static_cast<casadi_int>(row_start), static_cast<casadi_int>(row_start+row_count)),
326 casadi::Slice(static_cast<casadi_int>(col_start), static_cast<casadi_int>(col_start+col_count)));
327 }
328
329 MX_Xd_SubMatrix operator[](unsigned int i) {
330 return (*this)(i);
331 }
332 MX_Xd_SubMatrix operator()(unsigned int i, unsigned int j=0) {
333 return this->casadi::MX::operator()(
334 casadi::Slice(static_cast<casadi_int>(i), static_cast<casadi_int>(i+1)),
335 casadi::Slice(static_cast<casadi_int>(j), static_cast<casadi_int>(j+1)));
336 }
337 MX_Xd_scalar operator[](unsigned int i) const {
338 return (*this)(i);
339 }
340 MX_Xd_scalar operator()(unsigned int i, unsigned int j=0) const {
341 return this->casadi::MX::operator()(i, j);
342 }
343
344
345 MX_Xd_scalar dot(const MX_Xd_static<ncols, 1> &other_vector) const {
346 return casadi::MX::dot(*this, other_vector);
347 }
348
349 MX_Xd_static<3, 1> cross(const MX_Xd_static<3, 1> &other_vector) const {
350 MX_Xd_static<3, 1> result;
351 result[0] = (*this)[1] * other_vector[2] - (*this)[2] * other_vector[1];
352 result[1] = (*this)[2] * other_vector[0] - (*this)[0] * other_vector[2];
353 result[2] = (*this)[0] * other_vector[1] - (*this)[1] * other_vector[0];
354
355 return result;
356 }
357
359 return T();
360 }
362 if (ncols == 3 && nrows == 3){
363 // computes the inverse of a matrix m
364 MX_Xd_scalar det = (*this)(0, 0) * ((*this)(1, 1) * (*this)(2, 2) - (*this)(2, 1) * (*this)(1, 2)) -
365 (*this)(0, 1) * ((*this)(1, 0) * (*this)(2, 2) - (*this)(1, 2) * (*this)(2, 0)) +
366 (*this)(0, 2) * ((*this)(1, 0) * (*this)(2, 1) - (*this)(1, 1) * (*this)(2, 0));
367
368 MX_Xd_scalar invdet = 1 / det;
369
370 MX_Xd_static<3, 3> minv; // inverse of matrix m
371 minv(0, 0) = ((*this)(1, 1) * (*this)(2, 2) - (*this)(2, 1) * (*this)(1, 2)) * invdet;
372 minv(0, 1) = ((*this)(0, 2) * (*this)(2, 1) - (*this)(0, 1) * (*this)(2, 2)) * invdet;
373 minv(0, 2) = ((*this)(0, 1) * (*this)(1, 2) - (*this)(0, 2) * (*this)(1, 1)) * invdet;
374 minv(1, 0) = ((*this)(1, 2) * (*this)(2, 0) - (*this)(1, 0) * (*this)(2, 2)) * invdet;
375 minv(1, 1) = ((*this)(0, 0) * (*this)(2, 2) - (*this)(0, 2) * (*this)(2, 0)) * invdet;
376 minv(1, 2) = ((*this)(1, 0) * (*this)(0, 2) - (*this)(0, 0) * (*this)(1, 2)) * invdet;
377 minv(2, 0) = ((*this)(1, 0) * (*this)(2, 1) - (*this)(2, 0) * (*this)(1, 1)) * invdet;
378 minv(2, 1) = ((*this)(2, 0) * (*this)(0, 1) - (*this)(0, 0) * (*this)(2, 1)) * invdet;
379 minv(2, 2) = ((*this)(0, 0) * (*this)(1, 1) - (*this)(1, 0) * (*this)(0, 1)) * invdet;
380 return minv;
381 } else {
382 return inv(*this);
383 }
384 }
385
387 return casadi::MX::norm_2(*this);
388 }
389
391 return norm() * norm();
392 }
393
394 void normalize() {
395 *this /= norm();
396 }
397
398
400 const MX_Xd_static<nrows, ncols>& other) {
401 this->casadi::MX::operator+=(other);
402 }
404 const MX_Xd_static<nrows, ncols>& other) const {
406 return out.casadi::MX::operator+=(other);
407 }
409 const MX_Xd_static<nrows, ncols>& other) {
410 this->casadi::MX::operator-=(other);
411 }
413 const MX_Xd_static<nrows, ncols>& other) const {
415 return out.casadi::MX::operator-=(other);
416 }
417 template <unsigned int ncols2>
419 const MX_Xd_static<ncols, ncols2>& m2) {
420 *this = casadi::MX::mtimes(*this, m2);
421 }
422 template <unsigned int ncols2>
424 return casadi::MX::mtimes(*this, other);
425 }
427 const MX_Xd_scalar& other) const {
428 return casadi::MX::mtimes(*this, other);
429 }
431 const MX_Xd_scalar& other) {
432 *this = casadi::MX::mtimes(*this, other);
433 }
434
435 void operator/=(const MX_Xd_scalar &scalar) {
436 this->casadi::MX::operator/=(scalar(0, 0));
437 }
439 MX_Xd_static<nrows, ncols> result (*this);
440 for (unsigned int i = 0; i < nrows * ncols; i++)
441 result[i] /= scalar;
442 return result;
443 }
445 const MX_Xd_SubMatrix& scalar) const {
446 MX_Xd_static<nrows, ncols> result (*this);
447 for (unsigned int i = 0; i < nrows * ncols; i++)
448 result[i] /= scalar;
449 return result;
450 }
451};
452
453}
454
455/* MX_XD_STATIC_H */
456#endif
457
unsigned int rows() const
Definition: MX_Xd_static.h:278
unsigned int cols() const
Definition: MX_Xd_static.h:282
static MX_Xd_static Identity()
Definition: MX_Xd_static.h:253
MX_Xd_static< row_count, col_count > block(unsigned int row_start, unsigned int col_start) const
Definition: MX_Xd_static.h:300
MX_Xd_static(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2, const MX_Xd_scalar &v3, const MX_Xd_scalar &v4, const MX_Xd_scalar &v5, const MX_Xd_scalar &v6, const MX_Xd_scalar &v7)
Definition: MX_Xd_static.h:87
MX_Xd_static< ncols, nrows > transpose() const
Definition: MX_Xd_static.h:358
MX_Xd_static(const casadi::MX &m)
Definition: MX_Xd_static.h:38
void operator+=(const MX_Xd_static< nrows, ncols > &other)
Definition: MX_Xd_static.h:399
MX_Xd_static< nrows, ncols > operator/(const MX_Xd_SubMatrix &scalar) const
Definition: MX_Xd_static.h:444
MX_Xd_static(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2, const MX_Xd_scalar &v3, const MX_Xd_scalar &v4, const MX_Xd_scalar &v5)
Definition: MX_Xd_static.h:71
MX_Xd_static< nrows, ncols2 > operator*(const MX_Xd_static< ncols, ncols2 > &other) const
Definition: MX_Xd_static.h:423
MX_Xd_static(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2, const MX_Xd_scalar &v3)
Definition: MX_Xd_static.h:60
MX_Xd_static & setIdentity()
Definition: MX_Xd_static.h:256
MX_Xd_dynamic block(unsigned int row_start, unsigned int col_start, unsigned int row_count, unsigned int col_count) const
Definition: MX_Xd_static.h:318
MX_Xd_static< ncols, nrows > inverse() const
Definition: MX_Xd_static.h:361
void operator*=(const MX_Xd_scalar &other)
Definition: MX_Xd_static.h:430
MX_Xd_scalar operator[](unsigned int i) const
Definition: MX_Xd_static.h:337
void operator-=(const MX_Xd_static< nrows, ncols > &other)
Definition: MX_Xd_static.h:408
MX_Xd_static< nrows, ncols > operator+(const MX_Xd_static< nrows, ncols > &other) const
Definition: MX_Xd_static.h:403
unsigned int size() const
Definition: MX_Xd_static.h:286
static MX_Xd_static One()
Definition: MX_Xd_static.h:269
MX_Xd_SubMatrix operator()(unsigned int i, unsigned int j=0)
Definition: MX_Xd_static.h:332
MX_Xd_static< nrows, ncols > operator/(const MX_Xd_scalar &scalar) const
Definition: MX_Xd_static.h:438
MX_Xd_static(const MX_Xd_scalar &v00, const MX_Xd_scalar &v01, const MX_Xd_scalar &v02, const MX_Xd_scalar &v03, const MX_Xd_scalar &v10, const MX_Xd_scalar &v11, const MX_Xd_scalar &v12, const MX_Xd_scalar &v13, const MX_Xd_scalar &v20, const MX_Xd_scalar &v21, const MX_Xd_scalar &v22, const MX_Xd_scalar &v23, const MX_Xd_scalar &v30, const MX_Xd_scalar &v31, const MX_Xd_scalar &v32, const MX_Xd_scalar &v33)
Definition: MX_Xd_static.h:123
void set(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2, const MX_Xd_scalar &v3)
set For Quaternion
Definition: MX_Xd_static.h:219
MX_Xd_scalar dot(const MX_Xd_static< ncols, 1 > &other_vector) const
Definition: MX_Xd_static.h:345
MX_Xd_static(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1)
Definition: MX_Xd_static.h:41
static MX_Xd_static Zero()
Definition: MX_Xd_static.h:261
void operator/=(const MX_Xd_scalar &scalar)
Definition: MX_Xd_static.h:435
MX_Xd_SubMatrix block(unsigned int row_start, unsigned int col_start, unsigned int row_count, unsigned int col_count)
Definition: MX_Xd_static.h:308
void set(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2, const MX_Xd_scalar &v3, const MX_Xd_scalar &v4, const MX_Xd_scalar &v5)
set For SpatialVector
Definition: MX_Xd_static.h:238
MX_Xd_static(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2)
Definition: MX_Xd_static.h:49
MX_Xd_SubMatrix operator[](unsigned int i)
Definition: MX_Xd_static.h:329
MX_Xd_scalar squaredNorm() const
Definition: MX_Xd_static.h:390
MX_Xd_static(const MX_Xd_scalar &v00, const MX_Xd_scalar &v01, const MX_Xd_scalar &v02, const MX_Xd_scalar &v10, const MX_Xd_scalar &v11, const MX_Xd_scalar &v12, const MX_Xd_scalar &v20, const MX_Xd_scalar &v21, const MX_Xd_scalar &v22)
Definition: MX_Xd_static.h:107
void set(const MX_Xd_scalar &v0, const MX_Xd_scalar &v1, const MX_Xd_scalar &v2)
set For 3d Vector
Definition: MX_Xd_static.h:204
MX_Xd_scalar norm() const
Definition: MX_Xd_static.h:386
MX_Xd_scalar operator()(unsigned int i, unsigned int j=0) const
Definition: MX_Xd_static.h:340
MX_Xd_static< 3, 1 > cross(const MX_Xd_static< 3, 1 > &other_vector) const
Definition: MX_Xd_static.h:349
MX_Xd_static< nrows, ncols > operator-(const MX_Xd_static< nrows, ncols > &other) const
Definition: MX_Xd_static.h:412
MX_Xd_static(const MX_Xd_scalar &v00, const MX_Xd_scalar &v01, const MX_Xd_scalar &v02, const MX_Xd_scalar &v03, const MX_Xd_scalar &v04, const MX_Xd_scalar &v05, const MX_Xd_scalar &v10, const MX_Xd_scalar &v11, const MX_Xd_scalar &v12, const MX_Xd_scalar &v13, const MX_Xd_scalar &v14, const MX_Xd_scalar &v15, const MX_Xd_scalar &v20, const MX_Xd_scalar &v21, const MX_Xd_scalar &v22, const MX_Xd_scalar &v23, const MX_Xd_scalar &v24, const MX_Xd_scalar &v25, const MX_Xd_scalar &v30, const MX_Xd_scalar &v31, const MX_Xd_scalar &v32, const MX_Xd_scalar &v33, const MX_Xd_scalar &v34, const MX_Xd_scalar &v35, const MX_Xd_scalar &v40, const MX_Xd_scalar &v41, const MX_Xd_scalar &v42, const MX_Xd_scalar &v43, const MX_Xd_scalar &v44, const MX_Xd_scalar &v45, const MX_Xd_scalar &v50, const MX_Xd_scalar &v51, const MX_Xd_scalar &v52, const MX_Xd_scalar &v53, const MX_Xd_scalar &v54, const MX_Xd_scalar &v55)
Definition: MX_Xd_static.h:147
void operator*=(const MX_Xd_static< ncols, ncols2 > &m2)
Definition: MX_Xd_static.h:418
MX_Xd_SubMatrix block(unsigned int row_start, unsigned int col_start)
Definition: MX_Xd_static.h:291
MX_Xd_static< nrows, ncols > operator*(const MX_Xd_scalar &other) const
Definition: MX_Xd_static.h:426
MX_Xd_static(const double val)
Definition: MX_Xd_static.h:33