24int main(
int argc,
char**argv)
37 JParser<> zap(
"Example program to test inversion of symmetric matrix.");
47 catch(
const exception &error) {
61 for (
int i = 0; i != N; ++i) {
63 A(i,i) =
gRandom->Uniform(xmin,xmax);
65 for (
int j = 0; j != i; ++j) {
66 A(j,i) = A(i,j) =
gRandom->Uniform(xmin,xmax);
77 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
83 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
85 NOTICE(
"Elapsed time (Jpp) [us] " <<
setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).count() <<
endl);
96 NOTICE(
"A x A^-1 = I ? " << C.isIdentity(precision) <<
endl);
98 if (!C.isIdentity(precision)) {
102 ASSERT(C.isIdentity(precision));
112 for (
size_t row = 0;
row != A.size(); ++
row) {
113 for (
size_t col = 0;
col != A.size(); ++
col) {
118 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
124 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
126 NOTICE(
"Elapsed time (ROOT) [us] " <<
setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).count() <<
endl);
140 for (
int i = 0; i != N; ++i) {
141 X[i] =
gRandom->Uniform(xmin,xmax);
146 for (
int i = 0; i != N; ++i) {
147 for (
int j = 0; j != N; ++j) {
148 Y[i] += B(i,j) * X[j];
156 for (
int i = 0; i != N; ++i) {
160 ASSERT(fabs(X[i] - Y[i]) <= precision);
173 const double big = 1.0e5;
175 for (
int i = 0; i != N; ++i) {
179 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
183 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
185 NOTICE(
"Elapsed time [us] " <<
setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).count() <<
endl);
186 NOTICE(
"Pivot " <<
setw(2) << i <<
'+' <<
big <<
' ' << (
JMatrixNS(A).mul(B).isIdentity(precision) ?
"okay" :
"error") <<
endl);
202 for (
int i = 0; i != N; ++i) {
203 for (
int j = 0; j != N; ++j) {
204 ASSERT(A(i,j) == 0,
"Test reset (" << i <<
"," << j <<
")");