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 {
66 typedef AT AtomicType;
72 Matrix() : memory(), ele(0), n(0) { }
79 Matrix(
int n_,
Noinit) : memory(n_), ele((AT*)memory.get()), n(n_) { }
80 Matrix(
int n_, Init ini=INIT,
const AT &a=0) : memory(n_), ele((AT*)memory.get()), n(n_) { init(a); }
81 Matrix(
int n_, Eye ini,
const AT &a=1) : memory(n_), ele((AT*)memory.get()), n(n_) { init(ini,a); }
82 Matrix(
int m_,
int n_, Noinit) : memory(n_), ele((AT*)memory.get()), n(n_) { }
106 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n_, Noinit) {
109 ele = (AT*)memory.get();
113 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n, Init ini=INIT,
const AT &a=0) { resize(n,Noinit()).
init(a); }
114 Matrix<Diagonal,Ref,Ref,AT>& resize(
int n, Eye ini,
const AT &a=1) { resize(n,Noinit()).
init(ini,a); }
122 inline Matrix<Diagonal,Ref,Ref,AT>& operator<<(const Matrix<Diagonal,Ref,Ref,AT> &A);
130 inline Matrix<Diagonal,Ref,Ref,AT>&
operator>>(
const Matrix<Diagonal,Ref,Ref,AT> &A);
140 inline Matrix<Diagonal,Ref,Ref,AT>& operator=(
const Matrix<Diagonal,Ref,Ref,AT> &A);
155 #ifndef FMATVEC_NO_BOUNDS_CHECK
171 #ifndef FMATVEC_NO_BOUNDS_CHECK
191 #ifndef FMATVEC_NO_BOUNDS_CHECK
199 const AT& e(
int i,
int j)
const {
201 return i==j ? ele[i] : zero;
204 const AT& e(
int i)
const {
255 return CblasColMajor;
274 inline Matrix<Diagonal,Ref,Ref,AT>& init(Eye,
const AT &a=1) {
return init(a); }
275 inline Matrix<Diagonal,Ref,Ref,AT>& init(Noinit,
const AT &a=0) {
return *
this; }
281 operator std::vector<std::vector<AT> >();
298 ele = (AT*)memory.get();
301 #ifndef FMATVEC_NO_SIZE_CHECK
318 ele = (AT*)memory.get();
328 for(
int i=0; i<
rows(); i++)
345 for(
int i=0; i<n; i++)
351 std::vector<std::vector<AT> > ret(rows());
352 for(
int r=0; r<rows(); r++) {
353 ret[r].resize(cols());
354 for(
int c=0; c<cols(); c++)
AT & operator()(int i)
Element operator.
Definition: diagonal_matrix.h:189
Matrix(const Matrix< Diagonal, Ref, Ref, AT > &A)
Copy Constructor.
Definition: diagonal_matrix.h:91
This is the basic matrix class for arbitrary matrices.
Definition: fmatvec.h:41
Matrix()
Standard constructor.
Definition: diagonal_matrix.h:72
AT * operator()()
Pointer operator.
Definition: diagonal_matrix.h:225
const AT & operator()(int i, int j) const
Element operator.
Definition: diagonal_matrix.h:153
int size() const
Number of rows and columns.
Definition: diagonal_matrix.h:245
int rows() const
Number of rows.
int rows() const
Number of rows.
Definition: diagonal_matrix.h:233
const AT & operator()(int i) const
Element operator.
Definition: diagonal_matrix.h:169
~Matrix()
Destructor.
Definition: diagonal_matrix.h:96
std::istream & operator>>(std::istream &is, Matrix< Type, Row, Col, AT > &A)
Matrix input.
Definition: matrix.h:171
Shape class for diagonal matrices.
Definition: types.h:132
const AT * operator()() const
Pointer operator.
Definition: diagonal_matrix.h:216
const CBLAS_ORDER blasOrder() const
Storage convention.
Definition: diagonal_matrix.h:254
int cols() const
Number of columns.
Definition: diagonal_matrix.h:239
Matrix< Diagonal, Ref, Ref, AT > & init(const AT &a=0)
Initialization.
Definition: diagonal_matrix.h:327
This is a matrix class for diagonal matrices.
Definition: diagonal_matrix.h:39