25 #include <tests/myratest.h>    33   myra::out() << typestring<Number>() << std::endl;
    40   std::vector<char> ops;
    46   for (
int o = 0; o < ops.size(); ++o)
    50         std::pair<int,int> A_size(I,J);
    51         if (op == 
'T' || op == 
'H')
    52             std::swap(A_size.first, A_size.second);
    53     int b_size = A_size.second;
    60     Precision error = frobenius(c1-c2);
    61     myra::out() << 
"  |A^" << op << 
"*b [sparse*vector]| = " << error << std::endl;
    62     REQUIRE(error < tolerance);
    65   for (
int o = 0; o < ops.size(); ++o)
    69       std::pair<int,int> A_size(I,J);
    70       if (op == 
'T' || op == 
'H')
    71           std::swap(A_size.first, A_size.second);
    72         int b_size = A_size.first;
    78     Precision error = frobenius(c1-c2);
    79     myra::out() << 
"  |b*A^" << op << 
" [vector*sparse]| = " << error << std::endl;
    80     REQUIRE(error < tolerance);
    86 ADD_TEST(
"sparse_gemv",
"[sparse]")
    88   test< float >(15,10,40,1.0e-4f);
    89   test< double >(15,10,40,1.0e-9);
    90   test< std::complex<float > >(15,10,40,1.0e-4f);
    91   test< std::complex<double> >(15,10,40,1.0e-9);
 Interface class for representing subranges of dense Matrix's. 
Interface class for representing subranges of dense Vector's. 
Routines for computing Frobenius norms of various algebraic containers. 
static SparseMatrix< Number > random(int I, int J, int N)
Generates a random SparseMatrix with size IxJ and (approximately) N nonzeros. 
Definition: SparseMatrix.cpp:493
General purpose compressed-sparse-column (CSC) container. 
Variety of routines all for dense Matrix*Vector multiplies. All just delegate to gemm() ...
static Vector< Number > random(int N)
Generates a random Vector of specified size. 
Definition: Vector.cpp:276
Signatures for sparse matrix * dense vector multiplies. All delegate to gemm() under the hood...
General purpose dense matrix container, O(i*j) storage. 
Tabulates a vector of length N, allows random access. 
Definition: conjugate.h:21
Container for either a column vector or row vector (depends upon the usage context) ...
Reflects Precision trait for a Number, scalar Number types should specialize it. 
Definition: Number.h:33
Range/Iterator types associated with SparseMatrix. 
float
  |A^N*b [sparse*vector]| = 6.83872e-08
  |A^N*b [sparse*vector]| = 3.72529e-09
  |A^N*b [sparse*vector]| = 1.46191e-07
  |A^N*b [sparse*vector]| = 1.62058e-07
  |b*A^N [vector*sparse]| = 1.8193e-07
  |b*A^N [vector*sparse]| = 8.59293e-08
  |b*A^N [vector*sparse]| = 1.06354e-07
  |b*A^N [vector*sparse]| = 1.35149e-07
double
  |A^N*b [sparse*vector]| = 2.75118e-16
  |A^N*b [sparse*vector]| = 1.33111e-16
  |A^N*b [sparse*vector]| = 7.85046e-17
  |A^N*b [sparse*vector]| = 2.77556e-17
  |b*A^N [vector*sparse]| = 0
  |b*A^N [vector*sparse]| = 2.31909e-16
  |b*A^N [vector*sparse]| = 2.22478e-16
  |b*A^N [vector*sparse]| = 1.30923e-16
std::complex<float>
  |A^N*b [sparse*vector]| = 2.76777e-07
  |A^N*b [sparse*vector]| = 2.43943e-07
  |A^N*b [sparse*vector]| = 2.60877e-07
  |A^N*b [sparse*vector]| = 1.51963e-07
  |b*A^N [vector*sparse]| = 2.93897e-07
  |b*A^N [vector*sparse]| = 3.14693e-07
  |b*A^N [vector*sparse]| = 2.28552e-07
  |b*A^N [vector*sparse]| = 2.22022e-07
std::complex<double>
  |A^N*b [sparse*vector]| = 5.69254e-16
  |A^N*b [sparse*vector]| = 3.67434e-16
  |A^N*b [sparse*vector]| = 3.98367e-16
  |A^N*b [sparse*vector]| = 4.78331e-16
  |b*A^N [vector*sparse]| = 4.91046e-16
  |b*A^N [vector*sparse]| = 2.8441e-16
  |b*A^N [vector*sparse]| = 3.49503e-16
  |b*A^N [vector*sparse]| = 5.2461e-16