23 #include <tests/myratest.h> 35 Precision errorN = frobenius(dimm(
'L',
'N',D,X)-gemm(D.make_Matrix(),
'N',X,
'N'));
36 Precision errorT = frobenius(dimm(
'L',
'T',D,X)-gemm(D.make_Matrix(),
'T',X,
'N'));
37 Precision errorH = frobenius(dimm(
'L',
'H',D,X)-gemm(D.make_Matrix(),
'H',X,
'N'));
38 Precision errorC = frobenius(dimm(
'L',
'C',D,X)-gemm(D.make_Matrix(),
'C',X,
'N'));
39 myra::out() <<
"error |D^N * X| = " << errorN << std::endl;
40 myra::out() <<
"error |D^T * X| = " << errorT << std::endl;
41 myra::out() <<
"error |D^H * X| = " << errorH << std::endl;
42 myra::out() <<
"error |D^C * X| = " << errorC << std::endl;
43 REQUIRE(errorN < tolerance);
44 REQUIRE(errorT < tolerance);
45 REQUIRE(errorH < tolerance);
46 REQUIRE(errorC < tolerance);
55 Precision errorN = frobenius(dimm(
'R',
'N',D,X)-gemm(X,
'N',D.make_Matrix(),
'N'));
56 Precision errorT = frobenius(dimm(
'R',
'T',D,X)-gemm(X,
'N',D.make_Matrix(),
'T'));
57 Precision errorH = frobenius(dimm(
'R',
'H',D,X)-gemm(X,
'N',D.make_Matrix(),
'H'));
58 Precision errorC = frobenius(dimm(
'R',
'C',D,X)-gemm(X,
'N',D.make_Matrix(),
'C'));
59 myra::out() <<
"error |X * D^N| = " << errorN << std::endl;
60 myra::out() <<
"error |X * D^T| = " << errorT << std::endl;
61 myra::out() <<
"error |X * D^H| = " << errorH << std::endl;
62 myra::out() <<
"error |X * D^C| = " << errorC << std::endl;
63 REQUIRE(errorN < tolerance);
64 REQUIRE(errorT < tolerance);
65 REQUIRE(errorH < tolerance);
66 REQUIRE(errorC < tolerance);
71 ADD_TEST(
"dimmL",
"[dense]")
73 test1<NumberS>(10,5,1.0e-4f);
74 test1<NumberD>(10,5,1.0e-10);
75 test1<NumberC>(10,5,1.0e-4f);
76 test1<NumberZ>(10,5,1.0e-10);
79 ADD_TEST(
"dimmR",
"[dense]")
81 test2<NumberS>(10,5,1.0e-4f);
82 test2<NumberD>(10,5,1.0e-10);
83 test2<NumberC>(10,5,1.0e-4f);
84 test2<NumberZ>(10,5,1.0e-10);
Interface class for representing subranges of DiagonalMatrix's.
Interface class for representing subranges of dense Matrix's.
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.
static DiagonalMatrix< Number > random(int N)
Generates a random DiagonalMatrix of specified size.
Definition: DiagonalMatrix.cpp:217
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
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.