32 JParser<> zap(
"Example program to test inversion of symmetric matrix.");
40 catch(
const exception &error) {
41 FATAL(error.what() << endl);
46 ASSERT(numberOfEvents > 0);
50 const Double_t xmin = -1.0;
51 const Double_t xmax = +1.0;
56 for (
int i = 0; i != numberOfEvents; ++i) {
58 if (i%100 == 0) {
STATUS(setw(8) << i <<
'\r');
DEBUG(endl); }
60 JMatrix5D A(gRandom->Uniform(xmin,xmax), 0.0, 0.0, 0.0, 0.0,
61 gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), 0.0, 0.0, 0.0,
62 gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), 0.0, 0.0,
63 gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), 0.0,
64 gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax), gRandom->Uniform(xmin,xmax));
78 TMatrixTSym<double> R(5);
80 R(0,0) = A.a00; R(0,1) = A.a01; R(0,2) = A.a02; R(0,3) = A.a03; R(0,4) = A.a04;
81 R(1,0) = A.a10; R(1,1) = A.a11; R(1,2) = A.a12; R(1,3) = A.a13; R(1,4) = A.a14;
82 R(2,0) = A.a20; R(2,1) = A.a21; R(2,2) = A.a22; R(2,3) = A.a23; R(2,4) = A.a24;
83 R(3,0) = A.a30; R(3,1) = A.a31; R(3,2) = A.a32; R(3,3) = A.a33; R(3,4) = A.a34;
84 R(4,0) = A.a40; R(4,1) = A.a41; R(4,2) = A.a42; R(4,3) = A.a43; R(4,4) = A.a44;
87 DEBUG(
"Matrix A" << endl);
90 DEBUG(
"Determinant A " << A.getDeterminant() << endl);
108 DEBUG(
"Matrix A^-1" << endl);
111 DEBUG(
"Determinant A^-1 = " << B.getDeterminant() << endl);
115 DEBUG(
"Matrix A x A^-1" << endl);
118 DEBUG(
"Determinant (A x A^-1) = " <<
C.getDeterminant() << endl);
119 DEBUG(
"Determinant A x Determinant A^-1 = " << A.getDeterminant() * B.getDeterminant() << endl);
120 DEBUG(
"A x A^-1 = I ? " <<
C.isIdentity(precision) << endl);
122 if (!
C.isIdentity(precision)) {
123 ERROR(
"Matrix A x A^-1 /= I" << endl);
126 JMatrix5D D =
C - JMatrix5D::getIdentity();
128 DEBUG(
"Matrix D = C - I" << endl);
131 ASSERT (
C.isIdentity(precision));
133 catch (
const JException& error) {
134 FATAL(error << endl);
139 if (numberOfEvents > 0) {
141 const double factor = 1.0;
143 t1.print(cout, factor,
micro_t);
144 t2.print(cout, factor,
micro_t);