24 #include <tests/myratest.h> 33 myra::out() << typestring<Number>() << std::endl;
37 Number alpha = random<Number>();
38 Number beta = random<Number>();
41 for (
int j = 0; j < I; ++j)
42 for (
int i = 0; i < j; ++i)
43 L(i,j) = random<Number>();
49 gemm_inplace(C1, A,
'N', B,
'N', alpha, beta);
50 symm_inplace(
'L',
'L', C2, L, B, alpha, beta);
51 Precision error = frobenius(C1-C2);
52 myra::out() <<
" |symm('L','L')-gemm()| = " << error << std::endl;
53 REQUIRE(error < tolerance);
60 gemm_inplace(C1, B,
'N', A,
'N', alpha, beta);
61 symm_inplace(
'R',
'L', C2, L, B, alpha, beta);
62 Precision error = frobenius(C1-C2);
63 myra::out() <<
" |symm('R','L')-gemm()| = " << error << std::endl;
64 REQUIRE(error < tolerance);
70 ADD_TEST(
"ssymmL",
"[dense][blas]")
71 { test<NumberS>(51,32, 1.0e-4f); }
73 ADD_TEST(
"dsymmL",
"[dense][blas]")
74 { test<NumberD>(51,32, 1.0e-8); }
76 ADD_TEST(
"csymmL",
"[dense][blas]")
77 { test<NumberC>(51,32, 1.0e-4f); }
79 ADD_TEST(
"zsymmL",
"[dense][blas]")
80 { test<NumberZ>(51,32, 1.0e-8); }
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
Returns a transposed copy of a Matrix. The inplace version only works on a square operand...
Returns the lower 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
Simplistic random number functions.
Routines for symmetric Matrix * dense Matrix multiplication.
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS.
std::complex<float>
|symm('L','L')-gemm()| = 3.36535e-05
|symm('R','L')-gemm()| = 3.68141e-05