Jpp  18.0.1-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
JMATH::JMatrix5S Class Reference

5 x 5 symmetric matrix More...

#include <JMatrix5S.hh>

Inheritance diagram for JMATH::JMatrix5S:
JMATH::JMatrix5D JMATH::JMath< JMatrix5D > JLANG::JEquals< JFirst_t, JSecond_t >

Public Member Functions

 JMatrix5S ()
 Default constructor. More...
 
 JMatrix5S (const JMatrix5D &A)
 Contructor. More...
 
 JMatrix5S (const double __a00, const double __a10, const double __a11, const double __a20, const double __a21, const double __a22, const double __a30, const double __a31, const double __a32, const double __a33, const double __a40, const double __a41, const double __a42, const double __a43, const double __a44)
 Contructor. More...
 
void invert ()
 Invert matrix. More...
 
JMatrix5DsetIdentity ()
 Set to identity matrix. More...
 
void set (const JMatrix5D &A)
 Set matrix. More...
 
JMatrix5Dreset ()
 Set matrix to the null matrix. More...
 
JMatrix5Dtranspose ()
 Transpose. More...
 
JMatrix5Dnegate ()
 Negate matrix. More...
 
JMatrix5Dadd (const JMatrix5D &A)
 Matrix addition. More...
 
JMatrix5Dsub (const JMatrix5D &A)
 Matrix subtraction. More...
 
JMatrix5Dmul (const double factor)
 Scale matrix. More...
 
const JMatrix5Dmul (const JMatrix5D &A, const JMatrix5D &B)
 Matrix multiplication. More...
 
JMatrix5Dmul (const JNullType &object)
 Multiply with object. More...
 
JMatrix5Ddiv (const double factor)
 Scale matrix. More...
 
bool equals (const JMatrix5D &A, const double eps=std::numeric_limits< double >::min()) const
 Equality. More...
 
bool isIdentity (const double eps=std::numeric_limits< double >::min()) const
 Test identity. More...
 
double getDeterminant () const
 Get determinant of matrix. More...
 
void transform (double &__x0, double &__x1, double &__x2, double &__x3, double &__x4) const
 Transform. More...
 
double operator() (int row, int col) const
 Get matrix element. More...
 
double & operator() (int row, int col)
 Get matrix element. More...
 

Static Public Member Functions

static const JMatrix5DgetInstance ()
 Get reference to unique instance of this class object. More...
 
static const JMatrix5DgetIdentity ()
 Get reference to unique instance of this class object. More...
 

Public Attributes

double a00
 
double a01
 
double a02
 
double a03
 
double a04
 
double a10
 
double a11
 
double a12
 
double a13
 
double a14
 
double a20
 
double a21
 
double a22
 
double a23
 
double a24
 
double a30
 
double a31
 
double a32
 
double a33
 
double a34
 
double a40
 
double a41
 
double a42
 
double a43
 
double a44
 

Static Public Attributes

static const int NUMBER_OF_DIMENSIONS = 5
 

Detailed Description

5 x 5 symmetric matrix

Definition at line 26 of file JMatrix5S.hh.

Constructor & Destructor Documentation

JMATH::JMatrix5S::JMatrix5S ( )
inline

Default constructor.

Definition at line 33 of file JMatrix5S.hh.

33  :
34  JMatrix5D()
35  {}
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45
JMATH::JMatrix5S::JMatrix5S ( const JMatrix5D A)
inline

Contructor.

Parameters
Amatrix

Definition at line 43 of file JMatrix5S.hh.

43  :
44  JMatrix5D(A)
45  {}
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45
JMATH::JMatrix5S::JMatrix5S ( const double  __a00,
const double  __a10,
const double  __a11,
const double  __a20,
const double  __a21,
const double  __a22,
const double  __a30,
const double  __a31,
const double  __a32,
const double  __a33,
const double  __a40,
const double  __a41,
const double  __a42,
const double  __a43,
const double  __a44 
)
inline

Contructor.


The upper triangle is internally set.

Parameters
__a00(0,0)
__a10(1,0)
__a11(1,1)
__a20(2,0)
__a21(2,1)
__a22(2,2)
__a30(3,0)
__a31(3,1)
__a32(3,2)
__a33(3,3)
__a40(4,0)
__a41(4,1)
__a42(4,2)
__a43(4,3)
__a44(4,4)

Definition at line 68 of file JMatrix5S.hh.

72  :
73  JMatrix5D(__a00, __a10, __a20, __a30, __a40,
74  __a10, __a11, __a21, __a31, __a41,
75  __a20, __a21, __a22, __a32, __a42,
76  __a30, __a31, __a32, __a33, __a43,
77  __a40, __a41, __a42, __a43, __a44)
78  {}
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45

Member Function Documentation

void JMATH::JMatrix5S::invert ( )
inline

Invert matrix.

Definition at line 84 of file JMatrix5S.hh.

85  {
86  using std::swap;
87 
88  if (isIdentity()) {
89  return;
90  }
91 
92  // LDU decomposition
93 
94  int p0 = 0; // permute row 0
95  int p1 = 0; // permute row 1
96  int p2 = 0; // permute row 2
97  int p3 = 0; // permute row 3
98 
99  double val;
100 
101  val = a00;
102 
103  if (fabs(a10) > fabs(val)) {
104  p0 = 1;
105  val = a10;
106  }
107 
108  if (fabs(a20) > fabs(val)) {
109  p0 = 2;
110  val = a20;
111  }
112 
113  if (fabs(a30) > fabs(val)) {
114  p0 = 3;
115  val = a30;
116  }
117 
118  if (fabs(a40) > fabs(val)) {
119  p0 = 4;
120  val = a40;
121  }
122 
123  switch (p0) {
124 
125  case 1:
126  swap(a00,a10);
127  swap(a01,a11);
128  swap(a02,a12);
129  swap(a03,a13);
130  swap(a04,a14);
131  break;
132 
133  case 2:
134  swap(a00,a20);
135  swap(a01,a21);
136  swap(a02,a22);
137  swap(a03,a23);
138  swap(a04,a24);
139  break;
140 
141  case 3:
142  swap(a00,a30);
143  swap(a01,a31);
144  swap(a02,a32);
145  swap(a03,a33);
146  swap(a04,a34);
147  break;
148 
149  case 4:
150  swap(a00,a40);
151  swap(a01,a41);
152  swap(a02,a42);
153  swap(a03,a43);
154  swap(a04,a44);
155  break;
156  }
157 
158  if (val == 0) {
159  throw JDivisionByZero("LDU decomposition zero pivot");
160  }
161 
162  a10 /= val;
163  a11 -= a10 * a01;
164  a12 -= a10 * a02;
165  a13 -= a10 * a03;
166  a14 -= a10 * a04;
167 
168  a20 /= val;
169  a21 -= a20 * a01;
170  a22 -= a20 * a02;
171  a23 -= a20 * a03;
172  a24 -= a20 * a04;
173 
174  a30 /= val;
175  a31 -= a30 * a01;
176  a32 -= a30 * a02;
177  a33 -= a30 * a03;
178  a34 -= a30 * a04;
179 
180  a40 /= val;
181  a41 -= a40 * a01;
182  a42 -= a40 * a02;
183  a43 -= a40 * a03;
184  a44 -= a40 * a04;
185 
186  val = a11;
187 
188  if (fabs(a21) > fabs(val)) {
189  p1 = 2;
190  val = a21;
191  }
192 
193  if (fabs(a31) > fabs(val)) {
194  p1 = 3;
195  val = a31;
196  }
197 
198  if (fabs(a41) > fabs(val)) {
199  p1 = 4;
200  val = a41;
201  }
202 
203  switch (p1) {
204 
205  case 2:
206  swap(a10,a20);
207  swap(a11,a21);
208  swap(a12,a22);
209  swap(a13,a23);
210  swap(a14,a24);
211  break;
212 
213  case 3:
214  swap(a10,a30);
215  swap(a11,a31);
216  swap(a12,a32);
217  swap(a13,a33);
218  swap(a14,a34);
219  break;
220 
221  case 4:
222  swap(a10,a40);
223  swap(a11,a41);
224  swap(a12,a42);
225  swap(a13,a43);
226  swap(a14,a44);
227  break;
228  }
229 
230  if (val == 0) {
231  throw JDivisionByZero("LDU decomposition zero pivot");
232  }
233 
234  a21 /= val;
235  a22 -= a21 * a12;
236  a23 -= a21 * a13;
237  a24 -= a21 * a14;
238 
239  a31 /= val;
240  a32 -= a31 * a12;
241  a33 -= a31 * a13;
242  a34 -= a31 * a14;
243 
244  a41 /= val;
245  a42 -= a41 * a12;
246  a43 -= a41 * a13;
247  a44 -= a41 * a14;
248 
249  val = a22;
250 
251  if (fabs(a32) > fabs(val)) {
252  p2 = 3;
253  val = a32;
254  }
255 
256  if (fabs(a42) > fabs(val)) {
257  p2 = 4;
258  val = a42;
259  }
260 
261  switch (p2) {
262 
263  case 3:
264  swap(a20,a30);
265  swap(a21,a31);
266  swap(a22,a32);
267  swap(a23,a33);
268  swap(a24,a34);
269  break;
270 
271  case 4:
272  swap(a20,a40);
273  swap(a21,a41);
274  swap(a22,a42);
275  swap(a23,a43);
276  swap(a24,a44);
277  break;
278  }
279 
280  if (val == 0) {
281  throw JDivisionByZero("LDU decomposition zero pivot");
282  }
283 
284  a32 /= val;
285  a33 -= a32 * a23;
286  a34 -= a32 * a24;
287 
288  a42 /= val;
289  a43 -= a42 * a23;
290  a44 -= a42 * a24;
291 
292  val = a33;
293 
294  if (fabs(a43) > fabs(val)) {
295  p3 = 4;
296  val = a43;
297  }
298 
299  switch (p3) {
300 
301  case 4:
302  swap(a30,a40);
303  swap(a31,a41);
304  swap(a32,a42);
305  swap(a33,a43);
306  swap(a34,a44);
307  break;
308  }
309 
310  if (val == 0) {
311  throw JDivisionByZero("LDU decomposition zero pivot");
312  }
313 
314  a43 /= val;
315  a44 -= a43 * a34;
316 
317  // invert D
318 
319  if (a44 == 0) {
320  throw JDivisionByZero("D matrix not invertable");
321  }
322 
323  a00 = 1.0 / a00;
324  a11 = 1.0 / a11;
325  a22 = 1.0 / a22;
326  a33 = 1.0 / a33;
327  a44 = 1.0 / a44;
328 
329  // invert U
330 
331  a01 *= -a00;
332  a01 *= a11;
333 
334  a02 *= -a00;
335  a02 -= a01 * a12;
336  a02 *= a22;
337 
338  a03 *= -a00;
339  a03 -= a01 * a13;
340  a03 -= a02 * a23;
341  a03 *= a33;
342 
343  a04 *= -a00;
344  a04 -= a01 * a14;
345  a04 -= a02 * a24;
346  a04 -= a03 * a34;
347  a04 *= a44;
348 
349  a12 *= -a11;
350  a12 *= a22;
351 
352  a13 *= -a11;
353  a13 -= a12 * a23;
354  a13 *= a33;
355 
356  a14 *= -a11;
357  a14 -= a12 * a24;
358  a14 -= a13 * a34;
359  a14 *= a44;
360 
361  a23 *= -a22;
362  a23 *= a33;
363 
364  a24 *= -a22;
365  a24 -= a23 * a34;
366  a24 *= a44;
367 
368  a34 *= -a33;
369  a34 *= a44;
370 
371  // invert L
372 
373  a43 = -a43;
374 
375  a42 = -a42;
376  a42 -= a43 * a32;
377 
378  a41 = -a41;
379  a41 -= a42 * a21;
380  a41 -= a43 * a31;
381 
382  a40 = -a40;
383  a40 -= a41 * a10;
384  a40 -= a42 * a20;
385  a40 -= a43 * a30;
386 
387  a32 = -a32;
388 
389  a31 = -a31;
390  a31 -= a32 * a21;
391 
392  a30 = -a30;
393  a30 -= a31 * a10;
394  a30 -= a32 * a20;
395 
396  a21 = -a21;
397  a20 = -a20;
398  a20 -= a21 * a10;
399  a10 = -a10;
400 
401  // U^-1 x L^-1
402 
403  a00 += a01 * a10 + a02 * a20 + a03 * a30 + a04 * a40;
404  a01 += a02 * a21 + a03 * a31 + a04 * a41;
405  a02 += a03 * a32 + a04 * a42;
406  a03 += a04 * a43;
407 
408  a10 *= a11;
409  a10 += a12 * a20 + a13 * a30 + a14 * a40;
410  a11 += a12 * a21 + a13 * a31 + a14 * a41;
411  a12 += a13 * a32 + a14 * a42;
412  a13 += a14 * a43;
413 
414  a20 *= a22;
415  a20 += a23 * a30 + a24 * a40;
416  a21 *= a22;
417  a21 += a23 * a31 + a24 * a41;
418  a22 += a23 * a32 + a24 * a42;
419  a23 += a24 * a43;
420 
421  a30 *= a33;
422  a30 += a34 * a40;
423  a31 *= a33;
424  a31 += a34 * a41;
425  a32 *= a33;
426  a32 += a34 * a42;
427  a33 += a34 * a43;
428 
429  a40 *= a44;
430  a41 *= a44;
431  a42 *= a44;
432  a43 *= a44;
433 
434  switch (p3) {
435 
436  case 4:
437  swap(a03,a04);
438  swap(a13,a14);
439  swap(a23,a24);
440  swap(a33,a34);
441  swap(a43,a44);
442  break;
443  }
444 
445  switch (p2) {
446 
447  case 3:
448  swap(a02,a03);
449  swap(a12,a13);
450  swap(a22,a23);
451  swap(a32,a33);
452  swap(a42,a43);
453  break;
454 
455  case 4:
456  swap(a02,a04);
457  swap(a12,a14);
458  swap(a22,a24);
459  swap(a32,a34);
460  swap(a42,a44);
461  break;
462  }
463 
464  switch (p1) {
465 
466  case 2:
467  swap(a01,a02);
468  swap(a11,a12);
469  swap(a21,a22);
470  swap(a31,a32);
471  swap(a41,a42);
472  break;
473 
474  case 3:
475  swap(a01,a03);
476  swap(a11,a13);
477  swap(a21,a23);
478  swap(a31,a33);
479  swap(a41,a43);
480  break;
481 
482  case 4:
483  swap(a01,a04);
484  swap(a11,a14);
485  swap(a21,a24);
486  swap(a31,a34);
487  swap(a41,a44);
488  break;
489  }
490 
491  switch (p0) {
492 
493  case 1:
494  swap(a00,a01);
495  swap(a10,a11);
496  swap(a20,a21);
497  swap(a30,a31);
498  swap(a40,a41);
499  break;
500 
501  case 2:
502  swap(a00,a02);
503  swap(a10,a12);
504  swap(a20,a22);
505  swap(a30,a32);
506  swap(a40,a42);
507  break;
508 
509  case 3:
510  swap(a00,a03);
511  swap(a10,a13);
512  swap(a20,a23);
513  swap(a30,a33);
514  swap(a40,a43);
515  break;
516 
517  case 4:
518  swap(a00,a04);
519  swap(a10,a14);
520  swap(a20,a24);
521  swap(a30,a34);
522  swap(a40,a44);
523  break;
524  }
525  }
TPaveText * p1
bool isIdentity(const double eps=std::numeric_limits< double >::min()) const
Test identity.
Definition: JMatrix5D.hh:364
p2
Definition: module-Z:fit.sh:74
p3
Definition: module-Z:fit.sh:74
static const JMatrix5D& JMATH::JMatrix5D::getInstance ( )
inlinestaticinherited

Get reference to unique instance of this class object.

Returns
zero matrix

Definition at line 101 of file JMatrix5D.hh.

102  {
103  static JMatrix5D matrix;
104 
105  return matrix;
106  }
5 x 5 matrix
Definition: JMatrix5D.hh:33
JMatrix5D& JMATH::JMatrix5D::setIdentity ( )
inlineinherited

Set to identity matrix.

Returns
this matrix

Definition at line 114 of file JMatrix5D.hh.

115  {
116  a00 = 1.0; a01 = 0.0; a02 = 0.0; a03 = 0.0; a04 = 0.0;
117  a10 = 0.0; a11 = 1.0; a12 = 0.0; a13 = 0.0; a14 = 0.0;
118  a20 = 0.0; a21 = 0.0; a22 = 1.0; a23 = 0.0; a24 = 0.0;
119  a30 = 0.0; a31 = 0.0; a32 = 0.0; a33 = 1.0; a34 = 0.0;
120  a40 = 0.0; a41 = 0.0; a42 = 0.0; a43 = 0.0; a44 = 1.0;
121 
122  return *this;
123  }
static const JMatrix5D& JMATH::JMatrix5D::getIdentity ( )
inlinestaticinherited

Get reference to unique instance of this class object.

Returns
identity matrix

Definition at line 131 of file JMatrix5D.hh.

132  {
133  static JMatrix5D matrix(JMatrix5D().setIdentity());
134 
135  return matrix;
136  }
JMatrix5D & setIdentity()
Set to identity matrix.
Definition: JMatrix5D.hh:114
5 x 5 matrix
Definition: JMatrix5D.hh:33
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45
void JMATH::JMatrix5D::set ( const JMatrix5D A)
inlineinherited

Set matrix.

Parameters
Amatrix

Definition at line 144 of file JMatrix5D.hh.

145  {
146  static_cast<JMatrix5D&>(*this) = A;
147  }
5 x 5 matrix
Definition: JMatrix5D.hh:33
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
JMatrix5D& JMATH::JMatrix5D::reset ( )
inlineinherited

Set matrix to the null matrix.

Returns
this matrix

Definition at line 155 of file JMatrix5D.hh.

156  {
157  *this = JMatrix5D();
158 
159  return *this;
160  }
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45
JMatrix5D& JMATH::JMatrix5D::transpose ( )
inlineinherited

Transpose.

Returns
this matrix

Definition at line 168 of file JMatrix5D.hh.

169  {
170  using std::swap;
171 
172  swap(a10, a01);
173  swap(a20, a02);
174  swap(a21, a12);
175  swap(a30, a03);
176  swap(a31, a13);
177  swap(a32, a23);
178  swap(a40, a04);
179  swap(a41, a14);
180  swap(a42, a24);
181  swap(a43, a34);
182 
183  return *this;
184  }
JMatrix5D& JMATH::JMatrix5D::negate ( )
inlineinherited

Negate matrix.

Returns
-this matrix

Definition at line 192 of file JMatrix5D.hh.

193  {
194  a00 = -a00; a01 = -a01; a02 = -a02; a03 = -a03; a04 = -a04;
195  a10 = -a10; a11 = -a11; a12 = -a12; a13 = -a13; a14 = -a14;
196  a20 = -a20; a21 = -a21; a22 = -a22; a13 = -a23; a14 = -a24;
197  a30 = -a30; a31 = -a31; a32 = -a32; a33 = -a33; a34 = -a34;
198  a40 = -a40; a41 = -a41; a42 = -a42; a43 = -a43; a44 = -a44;
199 
200  return *this;
201  }
JMatrix5D& JMATH::JMatrix5D::add ( const JMatrix5D A)
inlineinherited

Matrix addition.

Parameters
Amatrix
Returns
this matrix + A

Definition at line 210 of file JMatrix5D.hh.

211  {
212  a00 += A.a00; a01 += A.a01; a02 += A.a02; a03 += A.a03; a04 += A.a04;
213  a10 += A.a10; a11 += A.a11; a12 += A.a12; a13 += A.a13; a14 += A.a14;
214  a20 += A.a20; a21 += A.a21; a22 += A.a22; a23 += A.a23; a24 += A.a24;
215  a30 += A.a30; a31 += A.a31; a32 += A.a32; a33 += A.a33; a34 += A.a34;
216  a40 += A.a40; a41 += A.a41; a42 += A.a42; a43 += A.a43; a44 += A.a44;
217 
218  return *this;
219  }
JMatrix5D& JMATH::JMatrix5D::sub ( const JMatrix5D A)
inlineinherited

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix - A

Definition at line 228 of file JMatrix5D.hh.

229  {
230  a00 -= A.a00; a01 -= A.a01; a02 -= A.a02; a03 -= A.a03; a04 -= A.a04;
231  a10 -= A.a10; a11 -= A.a11; a12 -= A.a12; a13 -= A.a13; a14 -= A.a14;
232  a20 -= A.a20; a21 -= A.a21; a22 -= A.a22; a23 -= A.a23; a24 -= A.a24;
233  a30 -= A.a30; a31 -= A.a31; a32 -= A.a32; a33 -= A.a33; a34 -= A.a34;
234  a40 -= A.a40; a41 -= A.a41; a42 -= A.a42; a43 -= A.a43; a44 -= A.a44;
235 
236  return *this;
237  }
JMatrix5D& JMATH::JMatrix5D::mul ( const double  factor)
inlineinherited

Scale matrix.

Parameters
factorfactor
Returns
this matrix * factor

Definition at line 246 of file JMatrix5D.hh.

247  {
248  a00 *= factor; a01 *= factor; a02 *= factor; a03 *= factor; a04 *= factor;
249  a10 *= factor; a11 *= factor; a12 *= factor; a13 *= factor; a14 *= factor;
250  a20 *= factor; a21 *= factor; a22 *= factor; a23 *= factor; a24 *= factor;
251  a30 *= factor; a31 *= factor; a32 *= factor; a33 *= factor; a34 *= factor;
252  a40 *= factor; a41 *= factor; a42 *= factor; a43 *= factor; a44 *= factor;
253 
254  return *this;
255  }
const JMatrix5D& JMATH::JMatrix5D::mul ( const JMatrix5D A,
const JMatrix5D B 
)
inlineinherited

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 283 of file JMatrix5D.hh.

285  {
286  a00 = A.a00 * B.a00 + A.a01 * B.a10 + A.a02 * B.a20 + A.a03 * B.a30 + A.a04 * B.a40;
287  a01 = A.a00 * B.a01 + A.a01 * B.a11 + A.a02 * B.a21 + A.a03 * B.a31 + A.a04 * B.a41;
288  a02 = A.a00 * B.a02 + A.a01 * B.a12 + A.a02 * B.a22 + A.a03 * B.a32 + A.a04 * B.a42;
289  a03 = A.a00 * B.a03 + A.a01 * B.a13 + A.a02 * B.a23 + A.a03 * B.a33 + A.a04 * B.a43;
290  a04 = A.a00 * B.a04 + A.a01 * B.a14 + A.a02 * B.a24 + A.a03 * B.a34 + A.a04 * B.a44;
291 
292  a10 = A.a10 * B.a00 + A.a11 * B.a10 + A.a12 * B.a20 + A.a13 * B.a30 + A.a14 * B.a40;
293  a11 = A.a10 * B.a01 + A.a11 * B.a11 + A.a12 * B.a21 + A.a13 * B.a31 + A.a14 * B.a41;
294  a12 = A.a10 * B.a02 + A.a11 * B.a12 + A.a12 * B.a22 + A.a13 * B.a32 + A.a14 * B.a42;
295  a13 = A.a10 * B.a03 + A.a11 * B.a13 + A.a12 * B.a23 + A.a13 * B.a33 + A.a14 * B.a43;
296  a14 = A.a10 * B.a04 + A.a11 * B.a14 + A.a12 * B.a24 + A.a13 * B.a34 + A.a14 * B.a44;
297 
298  a20 = A.a20 * B.a00 + A.a21 * B.a10 + A.a22 * B.a20 + A.a23 * B.a30 + A.a24 * B.a40;
299  a21 = A.a20 * B.a01 + A.a21 * B.a11 + A.a22 * B.a21 + A.a23 * B.a31 + A.a24 * B.a41;
300  a22 = A.a20 * B.a02 + A.a21 * B.a12 + A.a22 * B.a22 + A.a23 * B.a32 + A.a24 * B.a42;
301  a23 = A.a20 * B.a03 + A.a21 * B.a13 + A.a22 * B.a23 + A.a23 * B.a33 + A.a24 * B.a43;
302  a24 = A.a20 * B.a04 + A.a21 * B.a14 + A.a22 * B.a24 + A.a23 * B.a34 + A.a24 * B.a44;
303 
304  a30 = A.a30 * B.a00 + A.a31 * B.a10 + A.a32 * B.a20 + A.a33 * B.a30 + A.a34 * B.a40;
305  a31 = A.a30 * B.a01 + A.a31 * B.a11 + A.a32 * B.a21 + A.a33 * B.a31 + A.a34 * B.a41;
306  a32 = A.a30 * B.a02 + A.a31 * B.a12 + A.a32 * B.a22 + A.a33 * B.a32 + A.a34 * B.a42;
307  a33 = A.a30 * B.a03 + A.a31 * B.a13 + A.a32 * B.a23 + A.a33 * B.a33 + A.a34 * B.a43;
308  a34 = A.a30 * B.a04 + A.a31 * B.a14 + A.a32 * B.a24 + A.a33 * B.a34 + A.a34 * B.a44;
309 
310  a40 = A.a40 * B.a00 + A.a41 * B.a10 + A.a42 * B.a20 + A.a43 * B.a30 + A.a44 * B.a40;
311  a41 = A.a40 * B.a01 + A.a41 * B.a11 + A.a42 * B.a21 + A.a43 * B.a31 + A.a44 * B.a41;
312  a42 = A.a40 * B.a02 + A.a41 * B.a12 + A.a42 * B.a22 + A.a43 * B.a32 + A.a44 * B.a42;
313  a43 = A.a40 * B.a03 + A.a41 * B.a13 + A.a42 * B.a23 + A.a43 * B.a33 + A.a44 * B.a43;
314  a44 = A.a40 * B.a04 + A.a41 * B.a14 + A.a42 * B.a24 + A.a43 * B.a34 + A.a44 * B.a44;
315 
316  return *this;
317  }
JMatrix5D & JMATH::JMath< JMatrix5D , JNullType >::mul ( const JNullType object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355  {
356  return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357  }
JMatrix5D& JMATH::JMatrix5D::div ( const double  factor)
inlineinherited

Scale matrix.

Parameters
factorfactor
Returns
this matrix / factor

Definition at line 264 of file JMatrix5D.hh.

265  {
266  a00 /= factor; a01 /= factor; a02 /= factor; a03 /= factor; a04 /= factor;
267  a10 /= factor; a11 /= factor; a12 /= factor; a13 /= factor; a14 /= factor;
268  a20 /= factor; a21 /= factor; a22 /= factor; a23 /= factor; a24 /= factor;
269  a30 /= factor; a31 /= factor; a32 /= factor; a33 /= factor; a34 /= factor;
270  a40 /= factor; a41 /= factor; a42 /= factor; a43 /= factor; a44 /= factor;
271 
272  return *this;
273  }
bool JMATH::JMatrix5D::equals ( const JMatrix5D A,
const double  eps = std::numeric_limits<double>::min() 
) const
inlineinherited

Equality.

Parameters
Amatrix
epsnumerical precision
Returns
true if matrices identical; else false

Definition at line 327 of file JMatrix5D.hh.

329  {
330  return (fabs(a00 - A.a00) <= eps &&
331  fabs(a01 - A.a01) <= eps &&
332  fabs(a02 - A.a02) <= eps &&
333  fabs(a03 - A.a03) <= eps &&
334  fabs(a04 - A.a04) <= eps &&
335  fabs(a10 - A.a10) <= eps &&
336  fabs(a11 - A.a11) <= eps &&
337  fabs(a12 - A.a12) <= eps &&
338  fabs(a13 - A.a13) <= eps &&
339  fabs(a14 - A.a14) <= eps &&
340  fabs(a20 - A.a20) <= eps &&
341  fabs(a21 - A.a21) <= eps &&
342  fabs(a22 - A.a22) <= eps &&
343  fabs(a23 - A.a23) <= eps &&
344  fabs(a24 - A.a24) <= eps &&
345  fabs(a30 - A.a30) <= eps &&
346  fabs(a31 - A.a31) <= eps &&
347  fabs(a32 - A.a32) <= eps &&
348  fabs(a33 - A.a33) <= eps &&
349  fabs(a34 - A.a34) <= eps &&
350  fabs(a40 - A.a40) <= eps &&
351  fabs(a41 - A.a41) <= eps &&
352  fabs(a42 - A.a42) <= eps &&
353  fabs(a43 - A.a43) <= eps &&
354  fabs(a44 - A.a44) <= eps);
355  }
bool JMATH::JMatrix5D::isIdentity ( const double  eps = std::numeric_limits<double>::min()) const
inlineinherited

Test identity.

Parameters
epsnumerical precision
Returns
true if identity matrix; else false

Definition at line 364 of file JMatrix5D.hh.

365  {
366  return equals(getIdentity(), eps);
367  }
static const JMatrix5D & getIdentity()
Get reference to unique instance of this class object.
Definition: JMatrix5D.hh:131
bool equals(const JMatrix5D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
Definition: JMatrix5D.hh:327
double JMATH::JMatrix5D::getDeterminant ( ) const
inlineinherited

Get determinant of matrix.

Returns
determinant of matrix

Definition at line 375 of file JMatrix5D.hh.

376  {
377  double det = 0.0;
378 
379  det += a00 * JMatrix4D(a11, a12, a13, a14,
380  a21, a22, a23, a24,
381  a31, a32, a33, a34,
382  a41, a42, a43, a44).getDeterminant();
383 
384  det -= a01 * JMatrix4D(a10, a12, a13, a14,
385  a20, a22, a23, a24,
386  a30, a32, a33, a34,
387  a40, a42, a43, a44).getDeterminant();
388 
389  det += a02 * JMatrix4D(a10, a11, a13, a14,
390  a20, a21, a23, a24,
391  a30, a31, a33, a34,
392  a40, a41, a43, a44).getDeterminant();
393 
394  det -= a03 * JMatrix4D(a10, a11, a12, a14,
395  a20, a21, a22, a24,
396  a30, a31, a32, a34,
397  a40, a41, a42, a44).getDeterminant();
398 
399  det += a04 * JMatrix4D(a10, a11, a12, a13,
400  a20, a21, a22, a23,
401  a30, a31, a32, a33,
402  a40, a41, a42, a43).getDeterminant();
403 
404  return det;
405  }
4 x 4 matrix
Definition: JMatrix4D.hh:33
double getDeterminant() const
Get determinant of matrix.
Definition: JMatrix4D.hh:334
void JMATH::JMatrix5D::transform ( double &  __x0,
double &  __x1,
double &  __x2,
double &  __x3,
double &  __x4 
) const
inlineinherited

Transform.

Parameters
__x0x0 value
__x1x1 value
__x2x2 value
__x3x3 value
__x4x4 value

Definition at line 417 of file JMatrix5D.hh.

418  {
419  const double x0 = a00 * __x0 + a01 * __x1 + a02 * __x2 + a03 * __x3 + a04 * __x4;
420  const double x1 = a10 * __x0 + a11 * __x1 + a12 * __x2 + a13 * __x3 + a14 * __x4;
421  const double x2 = a20 * __x0 + a21 * __x1 + a22 * __x2 + a23 * __x3 + a24 * __x4;
422  const double x3 = a30 * __x0 + a31 * __x1 + a32 * __x2 + a33 * __x3 + a34 * __x4;
423  const double x4 = a40 * __x0 + a41 * __x1 + a42 * __x2 + a43 * __x3 + a44 * __x4;
424 
425  __x0 = x0;
426  __x1 = x1;
427  __x2 = x2;
428  __x3 = x3;
429  __x4 = x4;
430  }
double JMATH::JMatrix5D::operator() ( int  row,
int  col 
) const
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 501 of file JMatrix5D.hh.

502  {
503  return (&a00)[row * NUMBER_OF_DIMENSIONS + col];
504  }
static const int NUMBER_OF_DIMENSIONS
Definition: JMatrix5D.hh:520
double& JMATH::JMatrix5D::operator() ( int  row,
int  col 
)
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 514 of file JMatrix5D.hh.

515  {
516  return (&a00)[row * NUMBER_OF_DIMENSIONS + col];
517  }
static const int NUMBER_OF_DIMENSIONS
Definition: JMatrix5D.hh:520

Member Data Documentation

const int JMATH::JMatrix5D::NUMBER_OF_DIMENSIONS = 5
staticinherited

Definition at line 520 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a00
inherited

Definition at line 522 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a01
inherited

Definition at line 522 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a02
inherited

Definition at line 522 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a03
inherited

Definition at line 522 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a04
inherited

Definition at line 522 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a10
inherited

Definition at line 523 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a11
inherited

Definition at line 523 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a12
inherited

Definition at line 523 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a13
inherited

Definition at line 523 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a14
inherited

Definition at line 523 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a20
inherited

Definition at line 524 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a21
inherited

Definition at line 524 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a22
inherited

Definition at line 524 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a23
inherited

Definition at line 524 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a24
inherited

Definition at line 524 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a30
inherited

Definition at line 525 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a31
inherited

Definition at line 525 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a32
inherited

Definition at line 525 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a33
inherited

Definition at line 525 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a34
inherited

Definition at line 525 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a40
inherited

Definition at line 526 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a41
inherited

Definition at line 526 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a42
inherited

Definition at line 526 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a43
inherited

Definition at line 526 of file JMatrix5D.hh.

double JMATH::JMatrix5D::a44
inherited

Definition at line 526 of file JMatrix5D.hh.


The documentation for this class was generated from the following file: