34 #include <tests/myratest.h> 43 myra::out() << typestring<Number>() << std::endl;
51 Options options = Options::create().set_blocksize(4).set_globsize(4).set_nthreads(4);
60 for (
int j = 0; j < N; ++j)
62 std::vector<int> Pj = P.
pattern(j);
63 for (
auto i = Pj.begin(); i != Pj.end(); ++i)
65 Number Zij = solver.inverse(*i,j);
66 Precision error_ij = scalar_norm1(Z(*i,j)-Zij);
71 myra::out() <<
" |solver.inverse(i,j)| = " << error << std::endl;
72 REQUIRE(error < tolerance);
76 int i0 = 5;
int i1 = 25;
77 int j0 = 27;
int j1 = 47;
78 std::vector<int> i = ilinspace(i0,i1);
79 std::vector<int> j = ilinspace(j0,j1);
81 Precision error = frobenius(Z_block - Z.
window(i0,i1,j0,j1)) / frobenius(Z_block);
82 myra::out() <<
" |solver.inverse(i_indices,j_indices)| = " << error << std::endl;
83 REQUIRE(error < tolerance);
88 ADD_TEST(
"lu2_inverse",
"[multifrontal][parallel]")
92 test<NumberD>(I,J,1.0e-10);
93 test<NumberZ>(I,J,1.0e-10);
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
Routines for computing Frobenius norms of various algebraic containers.
Simplistic timing class, might dispatch to platform specific timers depending upon environment...
static SparseMatrix< Number > random(int I, int J, int N)
Generates a random SparseMatrix with size IxJ and (approximately) N nonzeros.
Definition: SparseMatrix.cpp:493
std::vector< int > pattern(int j) const
Returns the (sorted) nonzero pattern of A(:,j)
Definition: Pattern.cpp:157
General purpose compressed-sparse-column (CSC) container.
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
Various utility functions/classes related to scalar Number types.
Sparse direct solver suitable for symmetric-pattern nonsymmetric-value A.
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 symmetric-pattern nonsymmetric-valued A.
Definition: SparseLUSolver.h:57
Holds the nonzero pattern of a sparse matrix.
Definition: Pattern.h:55
Reflects Precision trait for a Number, scalar Number types should specialize it.
Definition: Number.h:33
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.
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.
Range/Iterator types associated with SparseMatrix.
Interface class for representing subranges of contiguous int's.
double
|solver.inverse(i,j)| = 5.86198e-13
|solver.inverse(i_indices,j_indices)| = 3.15979e-14
std::complex<double>
|solver.inverse(i,j)| = 9.56597e-15
|solver.inverse(i_indices,j_indices)| = 2.3699e-15