34 #include <tests/myratest.h>    44   myra::out() << typestring<Number>() << std::endl;
    51     auto result = sytrf_inplace(
'L',
'R',L);
    57     Precision error = frobenius( transpose(P)*L*R*transpose(Q)*I*Q*transpose(R)*transpose(L)*P-A ) / frobenius(A);
    58     myra::out() << 
"  |P'*L*R'*Q'*I*Q*R*L'*P - A| = " << error << std::endl;
    59     REQUIRE(error < tolerance);
    64     auto result = sytrf_inplace(
'L',
'L',L);
    70     Precision error = frobenius( transpose(P)*transpose(L)*transpose(R)*transpose(Q)*I*Q*R*L*P-A ) / frobenius(A);
    71     myra::out() << 
"  |P'*L'*R'*Q'*I*Q*R*L*P - A| = " << error << std::endl;
    72     REQUIRE(error < tolerance);
    77     auto result = sytrf_inplace(
'U',
'R',U);
    83     Precision error = frobenius( transpose(P)*U*R*transpose(Q)*I*Q*transpose(R)*transpose(U)*P-A ) / frobenius(A);
    84     myra::out() << 
"  |P'*U*R*Q'*I*Q*R'*U'*P - A| = " << error << std::endl;
    85     REQUIRE(error < tolerance);
    90     auto result = sytrf_inplace(
'U',
'L',U);
    96     Precision error = frobenius( transpose(P)*transpose(U)*transpose(R)*transpose(Q)*I*Q*R*U*P-A ) / frobenius(A);
    97     myra::out() << 
"  |P'*U'*R'*Q'*I*Q*R*U*P - A| = " << error << std::endl;
    98     REQUIRE(error < tolerance);
   106   myra::out() << typestring<Number>() << std::endl;
   109   A = A + transpose(A);
   112   auto result = sytrf_inplace(L);
   118   Precision error = frobenius( transpose(P)*Lf*R*transpose(Q)*I*Q*transpose(R)*transpose(Lf)*P-A ) / frobenius(A);
   119   myra::out() << 
"  |P'*L*R*Q'*I*Q*R'*L'*P - A| = " << error << std::endl;
   120   REQUIRE(error < tolerance);
   125 ADD_TEST(
"sytrf_Matrix",
"[dense][lapack]")
   127   myra::out() << 
"Checking sytrf(MatrixRange)" << std::endl;
   128   test1<NumberS>(169,1.0e-4f);
   129   test1<NumberD>(169,1.0e-10);
   130   test1<NumberC>(169,1.0e-4f);
   131   test1<NumberZ>(169,1.0e-10);
   132   myra::out() << std::endl;
   135 ADD_TEST(
"sytrf_LowerMatrix",
"[dense][lapack]")
   137   myra::out() << 
"Checking sytrf(LowerMatrix)" << std::endl;
   138   test2<NumberS>(192,1.0e-3f);
   139   test2<NumberD>(192,1.0e-8);
   140   test2<NumberC>(192,1.0e-3f);
   141   test2<NumberZ>(192,1.0e-8);
   142   myra::out() << std::endl;
 Interface class for representing subranges of DiagonalMatrix's. 
Interface class for representing subranges of dense Matrix's. 
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. 
static Matrix< Number > random(int I, int J)
Generates a random Matrix of specified size. 
Definition: Matrix.cpp:353
Routines for multiplying by a DiagonalMatrix. 
Range construct for a lower triangular matrix stored in rectangular packed format. 
LDL' decompositions for real symmetric Matrix A (indefinite is fine). 
Specialized container for a lower triangular matrix, O(N^2/2) storage. Used by symmetry exploiting ma...
Returns a transposed copy of a Matrix. The inplace version only works on a square operand...
Returns the lower triangle of a dense Matrix. 
Returns the upper triangle of a dense Matrix. 
Various utility functions/classes related to scalar Number types. 
Routines related to swap sequences, often used during pivoting. 
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
static DiagonalMatrix< Number > inertia(int N_plus, int N_minus)
Generates an inertia DiagonalMatrix, [+I -I]. 
Definition: DiagonalMatrix.cpp:221
Stores a lower triangular matrix in rectangular packed format. 
Definition: conjugate.h:22
Container for a diagonal matrix, O(n) storage. Used by SVD, row/column scaling, etc. 
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS. 
Interface class for representing subranges of contiguous int's. 
Checking sytrf(MatrixRange)
float
  |P'*L*R'*Q'*I*Q*R*L'*P - A| = 1.54938e-06
  |P'*L'*R'*Q'*I*Q*R*L*P - A| = 1.55685e-06
  |P'*U*R*Q'*I*Q*R'*U'*P - A| = 1.65564e-06
  |P'*U'*R'*Q'*I*Q*R*U*P - A| = 1.65183e-06
double
  |P'*L*R'*Q'*I*Q*R*L'*P - A| = 2.80083e-15
  |P'*L'*R'*Q'*I*Q*R*L*P - A| = 2.87291e-15
  |P'*U*R*Q'*I*Q*R'*U'*P - A| = 3.17302e-15
  |P'*U'*R'*Q'*I*Q*R*U*P - A| = 3.03433e-15
std::complex<float>
  |P'*L*R'*Q'*I*Q*R*L'*P - A| = 3.32412e-06
  |P'*L'*R'*Q'*I*Q*R*L*P - A| = 3.52411e-06
  |P'*U*R*Q'*I*Q*R'*U'*P - A| = 3.42557e-06
  |P'*U'*R'*Q'*I*Q*R*U*P - A| = 3.13042e-06
std::complex<double>
  |P'*L*R'*Q'*I*Q*R*L'*P - A| = 5.31652e-15
  |P'*L'*R'*Q'*I*Q*R*L*P - A| = 5.65931e-15
  |P'*U*R*Q'*I*Q*R'*U'*P - A| = 6.94256e-15
  |P'*U'*R'*Q'*I*Q*R*U*P - A| = 6.72254e-15