GCC Code Coverage Report
Directory: . Exec Total Coverage
File: frame/containers/SPDMatrix.hpp Lines: 0 21 0.0 %
Date: 2019-01-14 Branches: 0 6 0.0 %

Line Exec Source
1
2
#ifndef SPDMATRIX_HPP
3
#define SPDMATRIX_HPP
4
5
#include<Data.hpp>
6
#include<VirtualMatrix.hpp>
7
8
using namespace std;
9
using namespace hmlp;
10
11
namespace hmlp
12
{
13
14
15
/**
16
 *  @brief This class does not need to inherit hmlp::Data<T>,
17
 *         but it should
18
 *         support two interfaces for data fetching.
19
 */
20
template<typename T>
21
class SPDMatrix : public VirtualMatrix<T>
22
{
23
  public:
24
25
    SPDMatrix() : VirtualMatrix<T>() {};
26
27
    SPDMatrix( size_t m, size_t n )
28
      : VirtualMatrix<T>( m, n ) { K.resize( m, n ); };
29
30
    SPDMatrix( size_t m, size_t n, string filename )
31
      : VirtualMatrix<T>( m, n )
32
    {
33
      K.resize( m, n );
34
      K.read( m, n, filename );
35
    };
36
37
    void resize( size_t m, size_t n )
38
    {
39
      VirtualMatrix<T>::resize( m, n );
40
      K.resize( m, n );
41
    };
42
43
    template<bool USE_LOWRANK=true>
44
    void randspd( T a, T b ) { K.randspd( a, b ); };
45
46
    void read( size_t m, size_t n, string &filename )
47
    {
48
      K.read( m, n, filename );
49
    };
50
51
    T operator()( size_t i, size_t j ) { return K( i, j ); };
52
53
    Data<T> operator() ( const vector<size_t> &I,
54
                         const vector<size_t> &J )
55
    {
56
      return K( I, J );
57
    };
58
59
    T* data() noexcept { return K.data(); };
60
61
    const T* data() const noexcept { return K.data(); };
62
63
  private:
64
65
    Data<T> K;
66
67
}; /** end class SPDMatrix */
68
69
70
71
72
template<typename T>
73
class OOCSPDMatrix : public VirtualMatrix<T>
74
{
75
  public:
76
77
    OOCSPDMatrix( size_t m, size_t n, string filename )
78
      : VirtualMatrix<T>( m, n )
79
    {
80
      K.Set( m, n, filename );
81
    };
82
83
    T operator()( size_t i, size_t j ) { return K( i, j ); };
84
85
    Data<T> operator() ( const vector<size_t> &I,
86
                         const vector<size_t> &J )
87
    {
88
      return K( I, J );
89
    };
90
91
 private:
92
93
    OOCData<T> K;
94
95
}; /** end class OOCSPDMatrix */
96
97
}; /** end namespace hmlp */
98
99
100
#endif /** define SPDMATRIX_HPP */