30 #include <tests/myratest.h>    39   myra::out() << typestring<Number>() << std::endl;
    49     solver.solve(B,
'L',
'N');
    50     Precision error = frobenius(B-X)/frobenius(X);
    51     myra::out() << 
"  |inv(A)*B-X| = " << error << std::endl;
    52     REQUIRE(error < tolerance);
    57     auto B = transpose(A)*X;
    58     solver.solve(B,
'L',
'T');
    59     Precision error = frobenius(B-X)/frobenius(X);
    60     myra::out() << 
"  |inv(A^T)*B-X| = " << error << std::endl;
    61     REQUIRE(error < tolerance);
    66     auto B = hermitian(A)*X;
    67     solver.solve(B,
'L',
'H');
    68     Precision error = frobenius(B-X)/frobenius(X);
    69     myra::out() << 
"  |inv(A^H)*B-X| = " << error << std::endl;
    70     REQUIRE(error < tolerance);
    75     auto B = conjugate(A)*X;
    76     solver.solve(B,
'L',
'C');
    77     Precision error = frobenius(B-X)/frobenius(X);
    78     myra::out() << 
"  |inv(A^C)*B-X| = " << error << std::endl;
    79     REQUIRE(error < tolerance);
    85     solver.solve(B,
'R',
'N');
    86     Precision error = frobenius(B-X)/frobenius(X);
    87     myra::out() << 
"  |B*inv(A)-X| = " << error << std::endl;
    88     REQUIRE(error < tolerance);
    93     auto B = X*transpose(A);
    94     solver.solve(B,
'R',
'T');
    95     Precision error = frobenius(B-X)/frobenius(X);
    96     myra::out() << 
"  |B*inv(A^T)-X| = " << error << std::endl;
    97     REQUIRE(error < tolerance);
   102     auto B = X*hermitian(A);
   103     solver.solve(B,
'R',
'H');
   104     Precision error = frobenius(B-X)/frobenius(X);
   105     myra::out() << 
"  |B*inv(A^H)-X| = " << error << std::endl;
   106     REQUIRE(error < tolerance);
   111     auto B = X*conjugate(A);
   112     solver.solve(B,
'R',
'C');
   113     Precision error = frobenius(B-X)/frobenius(X);
   114     myra::out() << 
"  |B*inv(A^C)-X| = " << error << std::endl;
   115     REQUIRE(error < tolerance);
   124     saved.solve(B,
'L',
'N');
   125     Precision error = frobenius(B-X)/frobenius(X);
   126     myra::out() << 
"  |inv(A)*B-X| = " << error << std::endl;  
   127     REQUIRE(error < tolerance);
   133 ADD_TEST(
"sLUSolver",
"[dense][solver]")
   134   { test<NumberS>(200,120,1.0e-2f); }
   136 ADD_TEST(
"dLUSolver",
"[dense][solver]")
   137   { test<NumberD>(200,120,1.0e-10); }
   139 ADD_TEST(
"cLUSolver",
"[dense][solver]")
   140   { test<NumberC>(200,120,1.0e-2f); }
   142 ADD_TEST(
"zLUSolver",
"[dense][solver]")
   143   { test<NumberZ>(200,120,1.0e-10); }
 Returns a conjugated copy of a Matrix or Vector. Or, conjugate one inplace. 
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
Returns a transposed copy of a Matrix. The inplace version only works on a square operand...
Various utility functions/classes related to scalar Number types. 
A stream that serialize/deserializes to std::vector<char> buffer. 
General purpose dense matrix container, O(i*j) storage. 
Reflects Precision trait for a Number, scalar Number types should specialize it. 
Definition: Number.h:33
General purpose linear solver, no symmetry/definiteness assumptions upon A (just square) ...
Factors a square matrix A into L*U, presents solve methods. 
Definition: LUSolver.h:30
Returns a hermitian copy of a Matrix. The inplace version only works on a square operand. 
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS. 
Interface class for representing subranges of contiguous int's. 
std::complex<double>
  |inv(A)*B-X| = 6.50334e-14
  |inv(A^T)*B-X| = 6.92375e-14
  |inv(A^H)*B-X| = 6.28447e-14
  |inv(A^C)*B-X| = 6.13314e-14
  |B*inv(A)-X| = 6.36775e-14
  |B*inv(A^T)-X| = 6.53646e-14
  |B*inv(A^H)-X| = 6.61393e-14
  |B*inv(A^C)-X| = 6.7714e-14
  |inv(A)*B-X| = 6.65871e-14