64 Tmat6(
const double in00,
const double in01,
const double in02,
const double in03,
const double in04,
const double in05,
65 const double in10,
const double in11,
const double in12,
const double in13,
const double in14,
const double in15,
66 const double in20,
const double in21,
const double in22,
const double in23,
const double in24,
const double in25,
67 const double in30,
const double in31,
const double in32,
const double in33,
const double in34,
const double in35,
68 const double in40,
const double in41,
const double in42,
const double in43,
const double in44,
const double in45,
69 const double in50,
const double in51,
const double in52,
const double in53,
const double in54,
const double in55);
96 void set(
const DT val);
122 DT
determinantLower5(
const int col1,
const int col2,
const int col3,
const int col4,
const int col5)
const;
158 this->v[0] = this->v[1] = this->v[2] = this->v[3] = this->v[4] = this->v[5] =
Tvec6<DT>(0);
165 this->v[0][0] = this->v[1][1] = this->v[2][2] = this->v[3][3] = this->v[4][4] = this->v[5][5] = diagValue;
166 this->v[1][0] = this->v[2][0] = this->v[3][0] = this->v[4][0] = this->v[5][0] = this->v[2][1] = this->v[3][1] = this->v[4][1] = this->v[5][1] = this->v[3][2] = this->v[4][2] = this->v[5][2] = this->v[4][3] = this->v[5][3] = this->v[5][4] = 0;
167 this->v[0][1] = this->v[0][2] = this->v[0][3] = this->v[0][4] = this->v[0][5] = this->v[1][2] = this->v[1][3] = this->v[1][4] = this->v[1][5] = this->v[2][3] = this->v[2][4] = this->v[2][5] = this->v[3][4] = this->v[3][5] = this->v[4][5] = 0;
187 this->v[0] = mat.
v[0];
188 this->v[1] = mat.
v[1];
189 this->v[2] = mat.
v[2];
190 this->v[3] = mat.
v[3];
191 this->v[4] = mat.
v[4];
192 this->v[5] = mat.
v[5];
213 return Tmat6<DT>(val, val, val, val, val, val,
214 val, val, val, val, val, val,
215 val, val, val, val, val, val,
216 val, val, val, val, val, val,
217 val, val, val, val, val, val,
218 val, val, val, val, val, val);
225 this->v[0] = this->v[1] = this->v[2] = this->v[3] = this->v[4] = this->v[5] =
Tvec6<DT>(val);
248 this->v[0] += m.
v[0];
249 this->v[1] += m.
v[1];
250 this->v[2] += m.
v[2];
251 this->v[3] += m.
v[3];
252 this->v[4] += m.
v[4];
253 this->v[5] += m.
v[5];
262 this->v[0] -= m.
v[0];
263 this->v[1] -= m.
v[1];
264 this->v[2] -= m.
v[2];
265 this->v[3] -= m.
v[3];
266 this->v[4] -= m.
v[4];
267 this->v[5] -= m.
v[5];
309 return Tmat6<DT>(a) *=
static_cast<DT
>(-1.0);
364Tmat6<DT>::Tmat6(
const double in00,
const double in01,
const double in02,
const double in03,
const double in04,
const double in05,
365 const double in10,
const double in11,
const double in12,
const double in13,
const double in14,
const double in15,
366 const double in20,
const double in21,
const double in22,
const double in23,
const double in24,
const double in25,
367 const double in30,
const double in31,
const double in32,
const double in33,
const double in34,
const double in35,
368 const double in40,
const double in41,
const double in42,
const double in43,
const double in44,
const double in45,
369 const double in50,
const double in51,
const double in52,
const double in53,
const double in54,
const double in55)
371 this->v[0][0]=
static_cast<DT
>(in00); this->v[0][1]=
static_cast<DT
>(in01); this->v[0][2]=
static_cast<DT
>(in02); this->v[0][3]=
static_cast<DT
>(in03); this->v[0][4]=
static_cast<DT
>(in04); this->v[0][5]=
static_cast<DT
>(in05);
372 this->v[1][0]=
static_cast<DT
>(in10); this->v[1][1]=
static_cast<DT
>(in11); this->v[1][2]=
static_cast<DT
>(in12); this->v[1][3]=
static_cast<DT
>(in13); this->v[1][4]=
static_cast<DT
>(in14); this->v[1][5]=
static_cast<DT
>(in15);
373 this->v[2][0]=
static_cast<DT
>(in20); this->v[2][1]=
static_cast<DT
>(in21); this->v[2][2]=
static_cast<DT
>(in22); this->v[2][3]=
static_cast<DT
>(in23); this->v[2][4]=
static_cast<DT
>(in24); this->v[2][5]=
static_cast<DT
>(in25);
374 this->v[3][0]=
static_cast<DT
>(in30); this->v[3][1]=
static_cast<DT
>(in31); this->v[3][2]=
static_cast<DT
>(in32); this->v[3][3]=
static_cast<DT
>(in33); this->v[3][4]=
static_cast<DT
>(in34); this->v[3][5]=
static_cast<DT
>(in35);
375 this->v[4][0]=
static_cast<DT
>(in40); this->v[4][1]=
static_cast<DT
>(in41); this->v[4][2]=
static_cast<DT
>(in42); this->v[4][3]=
static_cast<DT
>(in43); this->v[4][4]=
static_cast<DT
>(in44); this->v[4][5]=
static_cast<DT
>(in45);
376 this->v[5][0]=
static_cast<DT
>(in50); this->v[5][1]=
static_cast<DT
>(in51); this->v[5][2]=
static_cast<DT
>(in52); this->v[5][3]=
static_cast<DT
>(in53); this->v[5][4]=
static_cast<DT
>(in54); this->v[5][5]=
static_cast<DT
>(in55);
387 this->v[0][0] =
static_cast<DT
>(m[ 0]); this->v[0][1] =
static_cast<DT
>(m[ 1]); this->v[0][2] =
static_cast<DT
>(m[ 2]); this->v[0][3] =
static_cast<DT
>(m[ 3]); this->v[0][4] =
static_cast<DT
>(m[ 4]); this->v[0][5] =
static_cast<DT
>(m[ 5]);
388 this->v[1][0] =
static_cast<DT
>(m[ 6]); this->v[1][1] =
static_cast<DT
>(m[ 7]); this->v[1][2] =
static_cast<DT
>(m[ 8]); this->v[1][3] =
static_cast<DT
>(m[ 9]); this->v[1][4] =
static_cast<DT
>(m[10]); this->v[1][5] =
static_cast<DT
>(m[11]);
389 this->v[2][0] =
static_cast<DT
>(m[12]); this->v[2][1] =
static_cast<DT
>(m[13]); this->v[2][2] =
static_cast<DT
>(m[14]); this->v[2][3] =
static_cast<DT
>(m[15]); this->v[2][4] =
static_cast<DT
>(m[16]); this->v[2][5] =
static_cast<DT
>(m[17]);
390 this->v[3][0] =
static_cast<DT
>(m[18]); this->v[3][1] =
static_cast<DT
>(m[19]); this->v[3][2] =
static_cast<DT
>(m[20]); this->v[3][3] =
static_cast<DT
>(m[21]); this->v[3][4] =
static_cast<DT
>(m[22]); this->v[3][5] =
static_cast<DT
>(m[23]);
391 this->v[4][0] =
static_cast<DT
>(m[24]); this->v[4][1] =
static_cast<DT
>(m[25]); this->v[4][2] =
static_cast<DT
>(m[26]); this->v[4][3] =
static_cast<DT
>(m[27]); this->v[4][4] =
static_cast<DT
>(m[28]); this->v[4][5] =
static_cast<DT
>(m[29]);
392 this->v[5][0] =
static_cast<DT
>(m[30]); this->v[5][1] =
static_cast<DT
>(m[31]); this->v[5][2] =
static_cast<DT
>(m[32]); this->v[5][3] =
static_cast<DT
>(m[33]); this->v[5][4] =
static_cast<DT
>(m[34]); this->v[5][5] =
static_cast<DT
>(m[35]);
404 m[ 0] =
static_cast<float>(this->v[0][0]); m[ 1] =
static_cast<float>(this->v[0][1]); m[ 2] =
static_cast<float>(this->v[0][2]); m[ 3] =
static_cast<float>(this->v[0][3]); m[ 4] =
static_cast<float>(this->v[0][4]); m[ 5] =
static_cast<float>(this->v[0][5]);
405 m[ 6] =
static_cast<float>(this->v[1][0]); m[ 7] =
static_cast<float>(this->v[1][1]); m[ 8] =
static_cast<float>(this->v[1][2]); m[ 9] =
static_cast<float>(this->v[1][3]); m[10] =
static_cast<float>(this->v[1][4]); m[11] =
static_cast<float>(this->v[1][5]);
406 m[12] =
static_cast<float>(this->v[2][0]); m[13] =
static_cast<float>(this->v[2][1]); m[14] =
static_cast<float>(this->v[2][2]); m[15] =
static_cast<float>(this->v[2][3]); m[16] =
static_cast<float>(this->v[2][4]); m[17] =
static_cast<float>(this->v[2][5]);
407 m[18] =
static_cast<float>(this->v[3][0]); m[19] =
static_cast<float>(this->v[3][1]); m[20] =
static_cast<float>(this->v[3][2]); m[21] =
static_cast<float>(this->v[3][3]); m[22] =
static_cast<float>(this->v[3][4]); m[23] =
static_cast<float>(this->v[3][5]);
408 m[24] =
static_cast<float>(this->v[4][0]); m[25] =
static_cast<float>(this->v[4][1]); m[26] =
static_cast<float>(this->v[4][2]); m[27] =
static_cast<float>(this->v[4][3]); m[28] =
static_cast<float>(this->v[4][4]); m[29] =
static_cast<float>(this->v[4][5]);
409 m[30] =
static_cast<float>(this->v[5][0]); m[31] =
static_cast<float>(this->v[5][1]); m[32] =
static_cast<float>(this->v[5][2]); m[33] =
static_cast<float>(this->v[5][3]); m[34] =
static_cast<float>(this->v[5][4]); m[35] =
static_cast<float>(this->v[5][5]);
419 this->v[0][0] =
static_cast<DT
>(m[ 0]); this->v[0][1] =
static_cast<DT
>(m[ 1]); this->v[0][2] =
static_cast<DT
>(m[ 2]); this->v[0][3] =
static_cast<DT
>(m[ 3]); this->v[0][4] =
static_cast<DT
>(m[ 4]); this->v[0][5] =
static_cast<DT
>(m[ 5]);
420 this->v[1][0] =
static_cast<DT
>(m[ 6]); this->v[1][1] =
static_cast<DT
>(m[ 7]); this->v[1][2] =
static_cast<DT
>(m[ 8]); this->v[1][3] =
static_cast<DT
>(m[ 9]); this->v[1][4] =
static_cast<DT
>(m[10]); this->v[1][5] =
static_cast<DT
>(m[11]);
421 this->v[2][0] =
static_cast<DT
>(m[12]); this->v[2][1] =
static_cast<DT
>(m[13]); this->v[2][2] =
static_cast<DT
>(m[14]); this->v[2][3] =
static_cast<DT
>(m[15]); this->v[2][4] =
static_cast<DT
>(m[16]); this->v[2][5] =
static_cast<DT
>(m[17]);
422 this->v[3][0] =
static_cast<DT
>(m[18]); this->v[3][1] =
static_cast<DT
>(m[19]); this->v[3][2] =
static_cast<DT
>(m[20]); this->v[3][3] =
static_cast<DT
>(m[21]); this->v[3][4] =
static_cast<DT
>(m[22]); this->v[3][5] =
static_cast<DT
>(m[23]);
423 this->v[4][0] =
static_cast<DT
>(m[24]); this->v[4][1] =
static_cast<DT
>(m[25]); this->v[4][2] =
static_cast<DT
>(m[26]); this->v[4][3] =
static_cast<DT
>(m[27]); this->v[4][4] =
static_cast<DT
>(m[28]); this->v[4][5] =
static_cast<DT
>(m[29]);
424 this->v[5][0] =
static_cast<DT
>(m[30]); this->v[5][1] =
static_cast<DT
>(m[31]); this->v[5][2] =
static_cast<DT
>(m[32]); this->v[5][3] =
static_cast<DT
>(m[33]); this->v[5][4] =
static_cast<DT
>(m[34]); this->v[5][5] =
static_cast<DT
>(m[35]);
434 m[ 0] =
static_cast<double>(this->v[0][0]); m[ 1] =
static_cast<double>(this->v[0][1]); m[ 2] =
static_cast<double>(this->v[0][2]); m[ 3] =
static_cast<double>(this->v[0][3]); m[ 4] =
static_cast<double>(this->v[0][4]); m[ 5] =
static_cast<double>(this->v[0][5]);
435 m[ 6] =
static_cast<double>(this->v[1][0]); m[ 7] =
static_cast<double>(this->v[1][1]); m[ 8] =
static_cast<double>(this->v[1][2]); m[ 9] =
static_cast<double>(this->v[1][3]); m[10] =
static_cast<double>(this->v[1][4]); m[11] =
static_cast<double>(this->v[1][5]);
436 m[12] =
static_cast<double>(this->v[2][0]); m[13] =
static_cast<double>(this->v[2][1]); m[14] =
static_cast<double>(this->v[2][2]); m[15] =
static_cast<double>(this->v[2][3]); m[16] =
static_cast<double>(this->v[2][4]); m[17] =
static_cast<double>(this->v[2][5]);
437 m[18] =
static_cast<double>(this->v[3][0]); m[19] =
static_cast<double>(this->v[3][1]); m[20] =
static_cast<double>(this->v[3][2]); m[21] =
static_cast<double>(this->v[3][3]); m[22] =
static_cast<double>(this->v[3][4]); m[23] =
static_cast<double>(this->v[3][5]);
438 m[24] =
static_cast<double>(this->v[4][0]); m[25] =
static_cast<double>(this->v[4][1]); m[26] =
static_cast<double>(this->v[4][2]); m[27] =
static_cast<double>(this->v[4][3]); m[28] =
static_cast<double>(this->v[4][4]); m[29] =
static_cast<double>(this->v[4][5]);
439 m[30] =
static_cast<double>(this->v[5][0]); m[31] =
static_cast<double>(this->v[5][1]); m[32] =
static_cast<double>(this->v[5][2]); m[33] =
static_cast<double>(this->v[5][3]); m[34] =
static_cast<double>(this->v[5][4]); m[35] =
static_cast<double>(this->v[5][5]);
449 this->v[0][0] = scale; this->v[0][1] = 0; this->v[0][2] = 0; this->v[0][3] = 0; this->v[0][4] = 0; this->v[0][5] = 0;
450 this->v[1][0] = 0; this->v[1][1] = scale; this->v[1][2] = 0; this->v[1][3] = 0; this->v[1][4] = 0; this->v[1][5] = 0;
451 this->v[2][0] = 0; this->v[2][1] = 0; this->v[2][2] = scale; this->v[2][3] = 0; this->v[2][4] = 0; this->v[2][5] = 0;
452 this->v[3][0] = 0; this->v[3][1] = 0; this->v[3][2] = 0; this->v[3][3] = scale; this->v[3][4] = 0; this->v[3][5] = 0;
453 this->v[4][0] = 0; this->v[4][1] = 0; this->v[4][2] = 0; this->v[4][3] = 0; this->v[4][4] = scale; this->v[4][5] = 0;
454 this->v[5][0] = 0; this->v[5][1] = 0; this->v[5][2] = 0; this->v[5][3] = 0; this->v[5][4] = 0; this->v[5][5] = scale;
470 return Tmat5<DT>(this->v[1][col1], this->v[1][col2], this->v[1][col3], this->v[1][col4], this->v[1][col5],
471 this->v[2][col1], this->v[2][col2], this->v[2][col3], this->v[2][col4], this->v[2][col5],
472 this->v[3][col1], this->v[3][col2], this->v[3][col3], this->v[3][col4], this->v[3][col5],
473 this->v[4][col1], this->v[4][col2], this->v[4][col3], this->v[4][col4], this->v[4][col5],
474 this->v[5][col1], this->v[5][col2], this->v[5][col3], this->v[5][col4], this->v[5][col5]).
det();
483 return ( this->v[0][0] * determinantLower5(1, 2, 3, 4, 5)
484 - this->v[0][1] * determinantLower5(0, 2, 3, 4, 5)
485 + this->v[0][2] * determinantLower5(0, 1, 3, 4, 5)
486 - this->v[0][3] * determinantLower5(0, 1, 2, 4, 5)
487 + this->v[0][4] * determinantLower5(0, 1, 2, 3, 5)
488 - this->v[0][5] * determinantLower5(0, 1, 2, 3, 4));
504 static const DT Epsilon =
static_cast<DT
>(10e-12);
510 "Tmat6<DT> Tmat6<DT>::inverse(bool* isInvertible) const, matrix not invertable",
522 return Tmat6<DT>(
Tvec6<DT>(this->v[0][0], this->v[1][0], this->v[2][0], this->v[3][0], this->v[4][0], this->v[5][0]),
523 Tvec6<DT>(this->v[0][1], this->v[1][1], this->v[2][1], this->v[3][1], this->v[4][1], this->v[5][1]),
524 Tvec6<DT>(this->v[0][2], this->v[1][2], this->v[2][2], this->v[3][2], this->v[4][2], this->v[5][2]),
525 Tvec6<DT>(this->v[0][3], this->v[1][3], this->v[2][3], this->v[3][3], this->v[4][3], this->v[5][3]),
526 Tvec6<DT>(this->v[0][4], this->v[1][4], this->v[2][4], this->v[3][4], this->v[4][4], this->v[5][4]),
527 Tvec6<DT>(this->v[0][5], this->v[1][5], this->v[2][5], this->v[3][5], this->v[4][5], this->v[5][5]));
550 this->v[0].
apply(fct);
551 this->v[1].apply(fct);
552 this->v[2].apply(fct);
553 this->v[3].apply(fct);
554 this->v[4].apply(fct);
555 this->v[5].apply(fct);
561#define _ML_MAT6_RC(i, j) a[i][0]*b[0][j] + a[i][1]*b[1][j] + a[i][2]*b[2][j] + \
562a[i][3]*b[3][j] + a[i][4]*b[4][j] + a[i][5]*b[5][j]
569 return Tmat6<DT>(
Tvec6<DT>(
_ML_MAT6_RC(0,0),
_ML_MAT6_RC(0,1),
_ML_MAT6_RC(0,2),
_ML_MAT6_RC(0,3),
_ML_MAT6_RC(0,4),
_ML_MAT6_RC(0,5)),
570 Tvec6<DT>(
_ML_MAT6_RC(1,0),
_ML_MAT6_RC(1,1),
_ML_MAT6_RC(1,2),
_ML_MAT6_RC(1,3),
_ML_MAT6_RC(1,4),
_ML_MAT6_RC(1,5)),
571 Tvec6<DT>(
_ML_MAT6_RC(2,0),
_ML_MAT6_RC(2,1),
_ML_MAT6_RC(2,2),
_ML_MAT6_RC(2,3),
_ML_MAT6_RC(2,4),
_ML_MAT6_RC(2,5)),
572 Tvec6<DT>(
_ML_MAT6_RC(3,0),
_ML_MAT6_RC(3,1),
_ML_MAT6_RC(3,2),
_ML_MAT6_RC(3,3),
_ML_MAT6_RC(3,4),
_ML_MAT6_RC(3,5)),
573 Tvec6<DT>(
_ML_MAT6_RC(4,0),
_ML_MAT6_RC(4,1),
_ML_MAT6_RC(4,2),
_ML_MAT6_RC(4,3),
_ML_MAT6_RC(4,4),
_ML_MAT6_RC(4,5)),
574 Tvec6<DT>(
_ML_MAT6_RC(5,0),
_ML_MAT6_RC(5,1),
_ML_MAT6_RC(5,2),
_ML_MAT6_RC(5,3),
_ML_MAT6_RC(5,4),
_ML_MAT6_RC(5,5)));
584 return (a[0] == b[0]) &&
602#define _ML_MAT6_RC(i) a[i][0]*v[0] + a[i][1]*v[1] + a[i][2]*v[2] + a[i][3]*v[3] + a[i][4]*v[4] + a[i][5]*v[5]
648 inline std::ostream&
operator<<(std::ostream& os,
const ML_LA_NAMESPACE::Tmat6<DT> & m)
650 return os << m[0] <<
'\n' << m[1] <<
'\n' << m[2] <<
'\n' << m[3] <<
'\n' << m[4] <<
'\n' << m[5];
657 inline std::istream&
operator>>(std::istream& is, ML_LA_NAMESPACE::Tmat6<DT> & m)
659 ML_LA_NAMESPACE::Tmat6<DT> m_tmp;
661 is >> m_tmp[0] >> m_tmp[1] >> m_tmp[2] >> m_tmp[3] >> m_tmp[4] >> m_tmp[5];
662 if (is){ m = m_tmp; }
Base class of all matrix classes which holds the data buffer and provides some general access methods...
VectorT v[size]
The rows constituting the matrix.
A five by five matrix class of five row vectors.
DT det() const
Returns the determinant of this matrix.
A six by six matrix class of six row vectors.
Tmat6()
Builds a 6x6 matrix from 36 0 elements.
Tmat6 transpose() const
Returns the transposed of this matrix.
const Tmat6< DT > & operator*=(const DT d)
Multiplies by a constant.
void setValues(const float m[36])
Copies the contents from float array m into *this.
const Tmat6< DT > & apply(MLDblFuncPtr fct)
Applies the function fct to each component.
static Tmat6< DT > getMat(const double val)
Returns a matrix filled with values val.
Tmat6(const double in00, const double in01, const double in02, const double in03, const double in04, const double in05, const double in10, const double in11, const double in12, const double in13, const double in14, const double in15, const double in20, const double in21, const double in22, const double in23, const double in24, const double in25, const double in30, const double in31, const double in32, const double in33, const double in34, const double in35, const double in40, const double in41, const double in42, const double in43, const double in44, const double in45, const double in50, const double in51, const double in52, const double in53, const double in54, const double in55)
Initializes all matrix elements explicitly with scalars, filling it row by row.
Tmat6(const Tmat6< DT > &m)
Copy constructor from the Tmat6 mat.
void set(const DT val)
Sets all values to val.
void setScaleMatrix(const DT scale)
Sets the diagonal matrix with scale on diagonal.
bool operator<(const Tmat6< DT > &) const
Dummy "lesser than operator" which always returns false.
DT determinantLower5(const int col1, const int col2, const int col3, const int col4, const int col5) const
Determines the (sub)determinant of columns given by col1, col2, col3, col4 and col5.
void getValues(float m[36]) const
Copies the contents of *this into float array m.
DT det() const
Returns the determinant of this matrix.
const Tmat6< DT > & operator+=(const Tmat6< DT > &m)
Adds component wise by a Tmat6.
Tmat6(const double mat[36])
Constructor from 36 doubles given as array mat.
Tmat6(const DT diagValue)
void getValues(double m[36]) const
Copies the contents of *this into m, where m must provide at least 36 accessible entries.
const Tmat6< DT > & operator-=(const Tmat6< DT > &m)
Subtracts component wise by a Tmat6.
Tmat6(const float mat[36])
Constructor from 36 floats given as array mat.
DT ComponentType
A typedef to "export" the type of components.
const Tmat6< DT > & operator=(const Tmat6< DT > &m)
Assignment of a Tmat6.
const Tmat6< DT > & operator/=(const DT d)
Divides by a constant. Division by zero is not handled and must be avoided by caller.
static Tmat6 getIdentity()
Returns the identity matrix.
void setValues(const double m[36])
Copies the contents of m into *this, where m must provide at least 36 accessible entries.
Tmat6< DT > inverse(bool *isInvertible=nullptr) const
Returns the inverse.
Tmat6(const Tvec6< DT > &row0, const Tvec6< DT > &row1, const Tvec6< DT > &row2, const Tvec6< DT > &row3, const Tvec6< DT > &row4, const Tvec6< DT > &row5)
Builds a matrix of the six row vectors row0, ..., row5.
A six dimensional vector class for floating point types.
bool MLValueIs0WOM(MLint8 a)
Returns true if value is 0, otherwise false.
#define ML_CHECK_THROW(x)
#define ML_CHECK_FLOAT_THROW(x)
#define _ML_MAT6_RC(i, j)
Internal helper macro to multiply two matrices, do not use.
double(* MLDblFuncPtr)(double)
A function pointer type to a function which returns a double and takes a double as argument.
FloatingPointVector< T, size, DataContainer > operator/(FloatingPointVector< T, size, DataContainer > lhs, MLdouble rhs)
Component wise division of lhs by specialized rhs of type MLdouble.
bool operator==(const Tmat2< DT > &a, const Tmat2< DT > &b)
a == b ? Return true if yes.
T operator*(const FloatingPointVector< T, size, DataContainer > &a, const FloatingPointVector< T, size, DataContainer > &b)
Dot product, returns a.dot(b).
bool operator!=(const Tmat2< DT > &a, const Tmat2< DT > &b)
a != b ? Return true if yes.
FloatingPointVector< T, size, DataContainer > operator-(FloatingPointVector< T, size, DataContainer > lhs, const FloatingPointVector< T, size, DataContainer > &rhs)
Return value is the component wise subtraction of rhs from lhs.
BASE_TYPE MLInverseMatHelper(const BASE_TYPE &origMat, bool *isInvertible, const typename BASE_TYPE::ComponentType, const char *const ZeroDetErrString, const BASE_TYPE &Identity, const size_t Dim)
Computes an N dimensional inverse from given default parameters.
MLEXPORT std::ostream & operator<<(std::ostream &s, const ml::Field &v)
Overloads the operator "<<" for stream output of Field objects.
istream & operator>>(istream &is, ml::FloatingPointVector< T, size, DataContainer > &v)
Reads a vector from std::istream.