21namespace JPP {
using namespace JMATH; }
34 public JMath <JMatrix5D>,
83 JMatrix5D(
const double __a00,
const double __a01,
const double __a02,
const double __a03,
const double __a04,
84 const double __a10,
const double __a11,
const double __a12,
const double __a13,
const double __a14,
85 const double __a20,
const double __a21,
const double __a22,
const double __a23,
const double __a24,
86 const double __a30,
const double __a31,
const double __a32,
const double __a33,
const double __a34,
87 const double __a40,
const double __a41,
const double __a42,
const double __a43,
const double __a44) :
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;
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;
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;
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;
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;
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;
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;
328 const double eps = std::numeric_limits<double>::min())
const
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);
364 bool isIdentity(
const double eps = std::numeric_limits<double>::min())
const
417 void transform(
double& __x0,
double& __x1,
double& __x2,
double& __x3,
double& __x4)
const
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;
442 in >> matrix.
a00; in >> matrix.
a01; in >> matrix.
a02; in >> matrix.
a03; in >> matrix.
a04;
443 in >> matrix.
a10; in >> matrix.
a11; in >> matrix.
a12; in >> matrix.
a13; in >> matrix.
a14;
444 in >> matrix.
a20; in >> matrix.
a21; in >> matrix.
a22; in >> matrix.
a23; in >> matrix.
a24;
445 in >> matrix.
a30; in >> matrix.
a31; in >> matrix.
a32; in >> matrix.
a33; in >> matrix.
a34;
446 in >> matrix.
a40; in >> matrix.
a41; in >> matrix.
a42; in >> matrix.
a43; in >> matrix.
a44;
461 out << matrix.
a00; out << matrix.
a01; out << matrix.
a02; out << matrix.
a03; out << matrix.
a04;
462 out << matrix.
a10; out << matrix.
a11; out << matrix.
a12; out << matrix.
a13; out << matrix.
a14;
463 out << matrix.
a20; out << matrix.
a21; out << matrix.
a22; out << matrix.
a23; out << matrix.
a24;
464 out << matrix.
a30; out << matrix.
a31; out << matrix.
a32; out << matrix.
a33; out << matrix.
a34;
465 out << matrix.
a40; out << matrix.
a41; out << matrix.
a42; out << matrix.
a43; out << matrix.
a44;
484 out << format << A.a00 <<
' ' << format << A.a01 <<
' ' << format << A.a02 <<
' ' << format << A.a03 <<
' ' << format << A.a04 << endl;
485 out << format << A.a10 <<
' ' << format << A.a11 <<
' ' << format << A.a12 <<
' ' << format << A.a13 <<
' ' << format << A.a14 << endl;
486 out << format << A.a20 <<
' ' << format << A.a21 <<
' ' << format << A.a22 <<
' ' << format << A.a23 <<
' ' << format << A.a24 << endl;
487 out << format << A.a30 <<
' ' << format << A.a31 <<
' ' << format << A.a32 <<
' ' << format << A.a33 <<
' ' << format << A.a34 << endl;
488 out << format << A.a40 <<
' ' << format << A.a41 <<
' ' << format << A.a42 <<
' ' << format << A.a43 <<
' ' << format << A.a44 << endl;
JFormat_t & getFormat()
Get format for given type.
Base class for data structures with artithmetic capabilities.
Interface for binary input.
Interface for binary output.
double getDeterminant() const
Get determinant of matrix.
double & operator()(int row, int col)
Get matrix element.
JMatrix5D(const double __a00, const double __a01, const double __a02, const double __a03, const double __a04, const double __a10, const double __a11, const double __a12, const double __a13, const double __a14, const double __a20, const double __a21, const double __a22, const double __a23, const double __a24, const double __a30, const double __a31, const double __a32, const double __a33, const double __a34, const double __a40, const double __a41, const double __a42, const double __a43, const double __a44)
Contructor.
JMatrix5D & add(const JMatrix5D &A)
Matrix addition.
double getDeterminant() const
Get determinant of matrix.
static const int NUMBER_OF_DIMENSIONS
static const JMatrix5D & getInstance()
Get reference to unique instance of this class object.
JMatrix5D & div(const double factor)
Scale matrix.
friend std::ostream & operator<<(std::ostream &out, const JMatrix5D &A)
Print ASCII formatted output.
bool equals(const JMatrix5D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
void set(const JMatrix5D &A)
Set matrix.
double operator()(int row, int col) const
Get matrix element.
JMatrix5D & setIdentity()
Set to identity matrix.
JMatrix5D & negate()
Negate matrix.
JMatrix5D & mul(const double factor)
Scale matrix.
void transform(double &__x0, double &__x1, double &__x2, double &__x3, double &__x4) const
Transform.
JMatrix5D & reset()
Set matrix to the null matrix.
JMatrix5D()
Default constructor.
JMatrix5D & transpose()
Transpose.
friend JReader & operator>>(JReader &in, JMatrix5D &matrix)
Read matrix from input.
friend JWriter & operator<<(JWriter &out, const JMatrix5D &matrix)
Write matrix to output.
static const JMatrix5D & getIdentity()
Get reference to unique instance of this class object.
bool isIdentity(const double eps=std::numeric_limits< double >::min()) const
Test identity.
const JMatrix5D & mul(const JMatrix5D &A, const JMatrix5D &B)
Matrix multiplication.
JMatrix5D & sub(const JMatrix5D &A)
Matrix subtraction.
Auxiliary classes and methods for mathematical operations.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Template definition of auxiliary base class for comparison of data structures.
Auxiliary base class for aritmetic operations of derived class types.