30 #include <tests/myratest.h> 36 template<
class Precision>
void test(
int I,
int J, Precision tolerance)
38 myra::out() << typestring<Precision>() << std::endl;
50 solver.solve(X,
'L',
'N');
51 Precision error = frobenius(A*X-B)/frobenius(B);
52 myra::out() <<
" |A*X-B|/|B| = " << error << std::endl;
53 REQUIRE(error < tolerance);
59 solver.solve(X,
'R',
'N');
60 Precision error = frobenius(X*A-B)/frobenius(B);
61 myra::out() <<
" |X*A-B|/|B| = " << error << std::endl;
62 REQUIRE(error < tolerance);
71 saved.solve(X,
'L',
'N');
72 Precision error = frobenius(A*X-B)/frobenius(B);
73 myra::out() <<
" |inv(A)*B-X| (saved) = " << error << std::endl;
74 REQUIRE(error < tolerance);
80 ADD_TEST(
"sCholeskySolver",
"[dense][solver]")
81 { test<float>(25,14,1.0e-2f); }
83 ADD_TEST(
"dCholeskySolver",
"[dense][solver]")
84 { test<double>(25,14,1.0e-10); }
Interface class for representing subranges of dense Matrix's.
Routines for computing Frobenius norms of various algebraic containers.
static Matrix< Number > random(int I, int J)
Generates a random Matrix of specified size.
Definition: Matrix.cpp:353
Wraps a std::vector<char>, presents it as both an InputStream and OutputStream. Useful for hygienic u...
Definition: VectorStream.h:22
Specialized container for a lower triangular matrix, O(N^2/2) storage. Used by symmetry exploiting ma...
Returns the lower triangle of a dense Matrix.
Various utility functions/classes related to scalar Number types.
static Matrix< Number > identity(int IJ)
Generates an identity Matrix of specified size.
Definition: Matrix.cpp:349
A stream that serialize/deserializes to std::vector<char> buffer.
General purpose dense matrix container, O(i*j) storage.
A solver suitable for a real symmetric positive definite Matrix.
Factors A into L*L', presents solve methods.
Definition: RCholeskySolver.h:29
Routines for symmetric rank-k updates, a specialized form of Matrix*Matrix multiplication.
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS.
float
|A*X-B|/|B| = 1.53774e-07
|X*A-B|/|B| = 1.52163e-07
|inv(A)*B-X| (saved) = 1.62306e-07