22 #ifndef diagonal_matrix_h
23 #define diagonal_matrix_h
51 Matrix(
int n_, Memory<AT> memory_,
const AT* ele_) : memory(memory_), ele((AT*)ele_), n(n_) {
54 const AT* elePtr(
int i)
const {
70 Matrix() : memory(), ele(0), n(0) { }
77 Matrix(
int n_,
Noinit) : memory(n_), ele((AT*)memory.get()), n(n_) { }
78 Matrix(
int n_, Init ini=INIT,
const AT &a=0) : memory(n_), ele((AT*)memory.get()), n(n_) { init(a); }
79 Matrix(
int n_, Eye ini,
const AT &a=1) : memory(n_), ele((AT*)memory.get()), n(n_) { init(ini,a); }
80 Matrix(
int m_,
int n_, Noinit) : memory(n_), ele((AT*)memory.get()), n(n_) { }
104 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n_, Noinit) {
107 ele = (AT*)memory.get();
111 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n, Init ini=INIT,
const AT &a=0) { resize(n,Noinit()).
init(a); }
112 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n, Eye ini,
const AT &a=1) { resize(n,Noinit()).
init(ini,a); }
120 inline Matrix<Diagonal,Ref,Ref,AT>& operator<<(const Matrix<Diagonal,Ref,Ref,AT> &A);
128 inline Matrix<Diagonal,Ref,Ref,AT>&
operator>>(
const Matrix<Diagonal,Ref,Ref,AT> &A);
138 inline Matrix<Diagonal,Ref,Ref,AT>& operator=(
const Matrix<Diagonal,Ref,Ref,AT> &A);
153 #ifndef FMATVEC_NO_BOUNDS_CHECK
169 #ifndef FMATVEC_NO_BOUNDS_CHECK
189 #ifndef FMATVEC_NO_BOUNDS_CHECK
197 const AT& e(
int i,
int j)
const {
199 return i==j ? ele[i] : zero;
202 const AT& e(
int i)
const {
253 return CblasColMajor;
272 inline Matrix<Diagonal,Ref,Ref,AT>& init(Eye,
const AT &a=1) {
return init(a); }
273 inline Matrix<Diagonal,Ref,Ref,AT>& init(Noinit,
const AT &a=0) {
return *
this; }
279 operator std::vector<std::vector<AT> >();
296 ele = (AT*)memory.get();
299 #ifndef FMATVEC_NO_SIZE_CHECK
316 ele = (AT*)memory.get();
326 for(
int i=0; i<
rows(); i++)
343 for(
int i=0; i<n; i++)
349 std::vector<std::vector<AT> > ret(rows());
350 for(
int r=0; r<rows(); r++) {
351 ret[r].resize(cols());
352 for(
int c=0; c<cols(); c++)
AT & operator()(int i)
Element operator.
Definition: diagonal_matrix.h:187
Matrix(const Matrix< Diagonal, Ref, Ref, AT > &A)
Copy Constructor.
Definition: diagonal_matrix.h:89
This is the basic matrix class for arbitrary matrices.
Definition: matrix.h:56
Matrix()
Standard constructor.
Definition: diagonal_matrix.h:70
AT * operator()()
Pointer operator.
Definition: diagonal_matrix.h:223
const AT & operator()(int i, int j) const
Element operator.
Definition: diagonal_matrix.h:151
int size() const
Number of rows and columns.
Definition: diagonal_matrix.h:243
int rows() const
Number of rows.
int rows() const
Number of rows.
Definition: diagonal_matrix.h:231
const AT & operator()(int i) const
Element operator.
Definition: diagonal_matrix.h:167
~Matrix()
Destructor.
Definition: diagonal_matrix.h:94
std::istream & operator>>(std::istream &is, Matrix< Type, Row, Col, AT > &A)
Matrix input.
Definition: matrix.h:170
Shape class for diagonal matrices.
Definition: types.h:132
const AT * operator()() const
Pointer operator.
Definition: diagonal_matrix.h:214
const CBLAS_ORDER blasOrder() const
Storage convention.
Definition: diagonal_matrix.h:252
int cols() const
Number of columns.
Definition: diagonal_matrix.h:237
Matrix< Diagonal, Ref, Ref, AT > & init(const AT &a=0)
Initialization.
Definition: diagonal_matrix.h:325
This is a matrix class for diagonal matrices.
Definition: diagonal_matrix.h:39