26 #include <tests/myratest.h>    36   myra::out() << typestring<Number>() << std::endl;
    37   auto R = sy_rotate2(A);
    38   auto B = R*A*transpose(R);
    40   Precision B_error = scalar_norm1( B(1,0) );
    41   Precision R_error = frobenius(hermitian(R)*R-I);
    42   myra::out() << 
"|(R*A*Rt)(1,0)| = " << B_error << std::endl;
    43   myra::out() << 
"|Rh*R-I| = " << R_error << std::endl;
    44   REQUIRE(B_error < tolerance);
    45   REQUIRE(R_error < tolerance);  
    52   myra::out() << typestring<Number>() << std::endl;
    53   auto R = he_rotate2(A);
    54   auto B = R*A*hermitian(R);
    56   Precision B_error = scalar_norm1( B(1,0) );
    57   Precision R_error = frobenius(hermitian(R)*R-I);
    58   myra::out() << 
"|(R*A*Rh)(1,0)| = " << B_error << std::endl;
    59   myra::out() << 
"|Rh*R-I| = " << R_error << std::endl;  
    60   REQUIRE(B_error < tolerance);
    61   REQUIRE(R_error < tolerance);
    73   Precision A_error = frobenius(A-U*S*V);
    74   Precision U_error = frobenius(hermitian(U)*U-I);
    75   Precision V_error = frobenius(V*hermitian(V)-I);  
    76   myra::out() << 
"|A-U*S*V| = " << A_error << std::endl;
    77   myra::out() << 
"|U'*U-I| = " << U_error << std::endl;
    78   myra::out() << 
"|V*V'-I| = " << V_error << std::endl;    
    79   REQUIRE(A_error < tolerance);
    80   REQUIRE(U_error < tolerance);
    81   REQUIRE(V_error < tolerance);
    89   return A*D*transpose(A);
    97   return A*D*hermitian(A);
   103 ADD_TEST(
"ssy_rotate2",
"[dense][lapack]")
   105   for (
int t = 0; t < 10; ++t)
   109 ADD_TEST(
"dsy_rotate2",
"[dense][lapack]")
   111   for (
int t = 0; t < 10; ++t)
   114 ADD_TEST(
"csy_rotate2",
"[dense][lapack]")
   116   for (
int t = 0; t < 10; ++t)
   119 ADD_TEST(
"zsy_rotate2",
"[dense][lapack]")
   121   for (
int t = 0; t < 10; ++t)
   126 ADD_TEST(
"sy_rotate2_special",
"[dense][lapack]")
   149   for (
int t = 0; t < 10; ++t)
   150     test_sy(sy_singular<NumberS>(), 1.0e-5f);
   151   for (
int t = 0; t < 10; ++t)
   152     test_sy(sy_singular<NumberD>(), 1.0e-10);
   153   for (
int t = 0; t < 10; ++t)
   154     test_sy(sy_singular<NumberC>(), 1.0e-5f);
   155   for (
int t = 0; t < 10; ++t)
   156     test_sy(sy_singular<NumberZ>(), 1.0e-10);
   160 ADD_TEST(
"che_rotate2",
"[dense][lapack]")
   162   for (
int t = 0; t < 1; ++t)
   165 ADD_TEST(
"zhe_rotate2",
"[dense][lapack]")
   167   for (
int t = 0; t < 1; ++t)
   172 ADD_TEST(
"he_rotate2_special",
"[dense][lapack]")
   187   for (
int t = 0; t < 10; ++t)
   188     test_he<float>(he_singular<NumberC>(), 1.0e-5f);
   189   for (
int t = 0; t < 10; ++t)
   190     test_he<double>(he_singular<NumberZ>(), 1.0e-10);
   194 ADD_TEST(
"gesvd2",
"[dense][lapack]")
   204 ADD_TEST(
"gesvd2_special",
"[dense][lapack]")
 static Matrix22< Number > random()
Generates a random Matrix22. 
Definition: Matrix22.cpp:150
Interface class for representing subranges of dense Matrix's. 
static Matrix22< Number > zeros()
Generates a zeros Matrix of specified size. 
Definition: Matrix22.cpp:175
Matrix type with fixed size of 2x2, algorithms that operate upon them. 
Returns a transposed copy of a Matrix. The inplace version only works on a square operand...
Reflects a Precision type into a complex type. 
Definition: Number.h:46
static Matrix22< Number > identity()
Generates an identity Matrix22. 
Definition: Matrix22.cpp:137
Various utility functions/classes related to scalar Number types. 
static Matrix22< Number > fill_cmajor(Number a00, Number a10, Number a01, Number a11)
Fills from four aij values in column major order, A = [a00 a01; a10 a11]. 
Definition: Matrix22.cpp:205
static Matrix22< Number > ones()
Generates a ones Matrix of specified size. 
Definition: Matrix22.cpp:179
Matrix type with fixed size 2x2. 
Definition: Matrix22.h:25
static Matrix22< Number > fill_rmajor(Number a00, Number a01, Number a10, Number a11)
Fills from four aij values in row major order, A = [a00 a01; a10 a11]. 
Definition: Matrix22.cpp:194
Reflects Precision trait for a Number, scalar Number types should specialize it. 
Definition: Number.h:33
Returns a hermitian copy of a Matrix. The inplace version only works on a square operand. 
Simplistic random number functions. 
Streams that serialize/deserialize to/from files. 
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS. 
Computes a plane rotation, either single sided (rotate1) or double sided (rotate2). 
double
|(R*A*Rt)(1,0)| = 5.55112e-17
|Rh*R-I| = 3.14018e-16
double
|(R*A*Rt)(1,0)| = 0
|Rh*R-I| = 0
double
|(R*A*Rt)(1,0)| = 9.36751e-17
|Rh*R-I| = 1.57009e-16
double
|(R*A*Rt)(1,0)| = 2.77556e-17
|Rh*R-I| = 0
double
|(R*A*Rt)(1,0)| = 1.66533e-16
|Rh*R-I| = 3.14018e-16
double
|(R*A*Rt)(1,0)| = 2.77556e-17
|Rh*R-I| = 0
double
|(R*A*Rt)(1,0)| = 2.77556e-17
|Rh*R-I| = 1.57009e-16
double
|(R*A*Rt)(1,0)| = 5.55112e-17
|Rh*R-I| = 3.14018e-16
double
|(R*A*Rt)(1,0)| = 6.93889e-18
|Rh*R-I| = 4.71028e-16
double
|(R*A*Rt)(1,0)| = 5.55112e-17
|Rh*R-I| = 1.57009e-16