26 #include <tests/myratest.h>    36   myra::out() << typestring<Number>() << std::endl;
    40   Number alpha = random<Number>();
    41   Precision beta  = random<Precision>();
    46     C1 = C1 + hermitian(C1);
    48     gemm_inplace(C1,A,
'N',B,
'H',alpha,beta);
    49     gemm_inplace(C1,B,
'N',A,
'H',conjugate(alpha),one);
    50     her2k_inplace(C2,
'U',A,B,
'N',alpha,beta);
    51     Precision error = frobenius(triu(C1-C2));
    52     myra::out() << 
"  |her2k('N')-gemm('N','H')| = " << error << std::endl;
    53     REQUIRE(error < tolerance);
    58     C1 = C1 + hermitian(C1);
    60     gemm_inplace(C1,A,
'T',B,
'C',alpha,beta);
    61     gemm_inplace(C1,B,
'T',A,
'C',conjugate(alpha),one);
    62     her2k_inplace(C2,
'U',A,B,
'T',alpha,beta);
    63     Precision error = frobenius(triu(C1-C2));
    64     myra::out() << 
"  |her2k('T')-gemm('T','C')| = " << error << std::endl;
    65     REQUIRE(error < tolerance);
    70     C1 = C1 + hermitian(C1);
    72     gemm_inplace(C1,A,
'C',B,
'T',alpha,beta);
    73     gemm_inplace(C1,B,
'C',A,
'T',conjugate(alpha),one);
    74     her2k_inplace(C2,
'U',A,B,
'C',alpha,beta);
    75     Precision error = frobenius(triu(C1-C2));
    76     myra::out() << 
"  |her2k('C')-gemm('C','T')| = " << error << std::endl;
    77     REQUIRE(error < tolerance);
    82     C1 = C1 + hermitian(C1);
    84     gemm_inplace(C1,A,
'H',B,
'N',alpha,beta);
    85     gemm_inplace(C1,B,
'H',A,
'N',conjugate(alpha),one);    
    86     her2k_inplace(C2,
'U',A,B,
'H',alpha,beta);
    87     Precision error = frobenius(triu(C1-C2));
    88     myra::out() << 
"  |herk('H')-gemm('H','N')| = " << error << std::endl;
    89     REQUIRE(error < tolerance);
    95 ADD_TEST(
"sher2kU",
"[dense][blas]")
    96   { test<NumberS>(57,24,1.0e-4f); }
    98 ADD_TEST(
"dher2kU",
"[dense][blas]")
    99   { test<NumberD>(57,24,1.0e-8); }
   101 ADD_TEST(
"cher2kU",
"[dense][blas]")
   102   { test<NumberC>(57,24,1.0e-4f); }
   104 ADD_TEST(
"zher2kU",
"[dense][blas]")
   105   { test<NumberZ>(57,24,1.0e-8); }
 Returns a conjugated copy of a Matrix or Vector. Or, conjugate one inplace. 
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 hermitian rank-2k updates, a specialized form of Matrix*Matrix multiplication. 
Returns a transposed copy of a Matrix. The inplace version only works on a square operand...
Returns the upper triangle of a dense Matrix. 
Various utility functions/classes related to scalar Number types. 
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
Returns a hermitian copy of a Matrix. The inplace version only works on a square operand. 
Simplistic random number functions. 
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS. 
std::complex<float>
  |her2k('N')-gemm('N','H')| = 0
  |her2k('T')-gemm('T','C')| = 0
  |her2k('C')-gemm('C','T')| = 0
  |herk('H')-gemm('H','N')| = 0