36 #include <tests/myratest.h> 41 ADD_TEST(
"rcholesky2_inverse",
"[multifrontal][parallel]")
53 Options options = Options::create().set_blocksize(4).set_globsize(4).set_nthreads(2);
65 for (
int j = 0; j < N; ++j)
67 std::vector<int> Pj = P.pattern(j);
68 for (
auto i = Pj.begin(); i != Pj.end(); ++i)
70 double z1 = invA(*i,j);
71 double z2 = solver.inverse(*i,j);
72 error1 = std::max(error1, scalar_norm1(invA(*i,j)-solver.inverse(*i,j)) );
76 myra::out() <<
"|solver.inverse(i,j)| = " << error1 <<
", " << t <<
" sec" << std::endl;
77 REQUIRE(error1 < 1.0e-12);
83 Matrix<double> invA_block = solver.inverse(ilinspace(5,25),ilinspace(27,47));
86 double error3 = frobenius(invA_block - invA.
window(5,25,27,47));
87 myra::out() <<
"|solver.inverse(i_indices,j_indices)| = " << error3 <<
", " << t <<
" sec" << std::endl;
88 REQUIRE(error3 < 1.0e-12);
97 myra::out() <<
"|solver.inverse(ij_indices)| = " << error4 <<
", " << t <<
" sec" << std::endl;
98 REQUIRE(error4 < 1.0e-12);
Interface class for representing subranges of dense Matrix's.
Options pack for routines in /multifrontal.
Definition: Options.h:24
Represents a Permutation matrix, used to reorder rows/columns/etc of various numeric containers...
Definition: Permutation.h:34
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Matrix< Number > make_Matrix(char op='N') const
Accumulates *this onto the lower triangle of a Matrix<Number>
Definition: LowerMatrix.cpp:152
Routines for computing Frobenius norms of various algebraic containers.
Simplistic timing class, might dispatch to platform specific timers depending upon environment...
General purpose compressed-sparse-column (CSC) container.
Range construct for a lower triangular matrix stored in rectangular packed format.
CMatrixRange< Number > window(int i0, int i1, int j0, int j1) const
Returns a MatrixRange over this(i0:i1,j0:j1)
Definition: Matrix.cpp:142
Measures elapsed time.
Definition: Timer.h:19
Specialized container for a lower triangular matrix, O(N^2/2) storage. Used by symmetry exploiting ma...
Various utility functions/classes related to scalar Number types.
Returns a vector of int's, over [min,max)
General purpose dense matrix container, O(i*j) storage.
Range/Iterator types associated with Pattern.
Sparse direct solver suitable for real symmetric positive definite systems.
Holds the nonzero pattern of a sparse matrix.
Definition: Pattern.h:55
Container class for a sparse nonzero pattern, used in reordering/symbolic analysis.
Overwrites a LowerMatrix, DiagonalMatrix, or square Matrix with its own inverse. Or, returns it as a copy.
Aggregates a (perm, iperm, swaps) triple into a vocabulary type.
Sparse direct solver suitable for real symmetric positive definite systems.
Definition: SparseRCholeskySolver.h:61
Stores a lower triangular matrix in rectangular packed format.
Definition: conjugate.h:22
Stores an IxJ matrix A in compressed sparse column format.
Definition: bothcat.h:23
Helper routines for reordering/filling 2D structured grids. Used by many unit tests.
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS.
double elapsed_time() const
Returns elapsed time in seconds since last call to reset()
Definition: Timer.cpp:18
Range/Iterator types associated with SparseMatrix.
Matrix< Number > make_Matrix() const
Accumulates *this onto a Matrix<Number>.
Definition: SparseMatrix.cpp:581
Interface class for representing subranges of contiguous int's.
|solver.inverse(i,j)| = 3.33067e-16, 0.154009 sec
|solver.inverse(i_indices,j_indices)| = 1.19586e-16, 0.020001 sec
|solver.inverse(ij_indices)| = 4.99847e-16, 0.002 sec