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 = j+1; i < I; ++i)
43 U(i,j) = random<Number>();
49 gemm_inplace(C1, A,
'N', B,
'N', alpha, beta);
50 symm_inplace(
'L',
'U', C2, U, B, alpha, beta);
51 Precision error = frobenius(C1-C2);
52 myra::out() <<
" |symm('L','U')-gemm()| = " << error << std::endl;
53 REQUIRE(error < tolerance);
60 gemm_inplace(C1, B,
'N', A,
'N', alpha, beta);
61 symm_inplace(
'R',
'U', C2, U, B, alpha, beta);
62 Precision error = frobenius(C1-C2);
63 myra::out() <<
" |symm('R','U')-gemm()| = " << error << std::endl;
64 REQUIRE(error < tolerance);
70 ADD_TEST(
"ssymmU",
"[dense][blas]")
71 { test<NumberS>(51,32, 1.0e-4f); }
73 ADD_TEST(
"dsymmU",
"[dense][blas]")
74 { test<NumberD>(51,32, 1.0e-8); }
76 ADD_TEST(
"csymmU",
"[dense][blas]")
77 { test<NumberC>(51,32, 1.0e-4f); }
79 ADD_TEST(
"zsymmU",
"[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 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
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<double>
|symm('L','U')-gemm()| = 1.10954e-13
|symm('R','U')-gemm()| = 1.3004e-13