25 #include "general_matrix.h"
50 typedef AT AtomicType;
60 friend const Vector<Ref,AT> Matrix<General,Ref,Ref,AT>::col(
int i)
const;
68 return tp ? ele+lda*i : ele+i;
71 const AT* elePtr(
int i)
const {
72 return tp ? ele+lda*i : ele+i;
75 Vector(
int n_,
int lda_,
bool tp, Memory<AT> memory,
const AT* ele_) :
Matrix<General,Ref,Ref,AT>(n_, 1, lda_, tp, memory, ele_) { }
91 Vector(
int m, Init ini=INIT,
const AT &a=0) : Matrix<General,Ref,Ref,AT>(m,1,ini,a) { }
115 #ifndef FMATVEC_NO_SIZE_CHECK
134 template<
class Type,
class Row,
class Col>
135 explicit Vector(
const Matrix<Type,Row,Col,AT> &x) : Matrix<General,Ref,Ref,AT>(x) {
137 #ifndef FMATVEC_NO_SIZE_CHECK
142 Vector<Ref,AT>& resize() {
143 Matrix<General,Ref,Ref,AT>::resize();
147 Vector<Ref,AT>& resize(
int m, Noinit) {
148 Matrix<General,Ref,Ref,AT>::resize(m,1,Noinit());
152 Vector<Ref,AT>& resize(
int m, Init ini=INIT,
const AT &a=0) {
153 Matrix<General,Ref,Ref,AT>::resize(m,1,ini,a);
164 inline Vector<Ref,AT>& operator<<(const Vector<Row,AT> &x);
172 inline Vector<Ref,AT>&
operator>>(
const Vector<Ref,AT> &x);
174 inline Vector<Ref,AT>&
operator>>(
const Matrix<General,Ref,Ref,AT> &A);
184 inline Vector<Ref,AT>& operator=(
const Vector<Ref,AT> &x);
187 inline Vector<Ref,AT>& operator=(
const Vector<Row,AT> &x);
201 #ifndef FMATVEC_NO_BOUNDS_CHECK
215 #ifndef FMATVEC_NO_BOUNDS_CHECK
227 const AT& er(
int i)
const {
235 const AT& et(
int i)
const {
240 return tp ? et(i) : er(i);
243 const AT& e(
int i)
const {
244 return tp ? et(i) : er(i);
254 inline Vector<Ref,AT>& init(
const AT& a=0);
255 inline Vector<Ref,AT>& init(Init,
const AT& a=0) {
return init(a); }
256 inline Vector<Ref,AT>& init(Noinit,
const AT& a=0) {
return *
this; }
270 int inc()
const {
return tp?lda:1;};
318 inline operator std::vector<AT>();
324 inline Vector(std::vector<AT> v);
330 const RowVector<Ref,AT> T()
const {
331 return RowVector<Ref,AT>(m,lda,tp?
false:
true,memory,ele);
339 for(
int i=0; i<m; i++)
342 for(
int i=0; i<m; i++)
356 ele = (AT*)memory.get();
358 #ifndef FMATVEC_NO_SIZE_CHECK
359 assert(m == x.
size());
368 template <
class AT>
template<
class Row>
377 ele = (AT*)memory.get();
379 #ifndef FMATVEC_NO_SIZE_CHECK
380 assert(m == x.size());
389 template <
class AT>
template<
class Row>
398 ele = (AT*)memory.get();
422 #ifndef FMATVEC_NO_SIZE_CHECK
423 assert(A.
cols() == 1);
457 #ifndef FMATVEC_NO_BOUNDS_CHECK
467 #ifndef FMATVEC_NO_BOUNDS_CHECK
476 std::vector<AT> ret(size());
477 if(size()>0) memcpy(&ret[0], &
operator()(0),
sizeof(AT)*size());
483 if(size()>0) memcpy(&
operator()(0), &v[0],
sizeof(AT)*size());
492 for(
int i=0; i<size(); i++)
495 for(
int i=0; i<size(); i++)
500 for(
int i=0; i<size(); i++)
503 for(
int i=0; i<size(); i++)
508 template <
class AT>
template <
class Row>
509 inline void Vector<Ref,AT>::deepCopy(
const Vector<Row,AT> &x) {
511 for(
int i=0; i<size(); i++)
514 for(
int i=0; i<size(); i++)
const AT & operator()(int i) const
Element operator.
Definition: vector.h:213
This is the basic matrix class for arbitrary matrices.
Definition: fmatvec.h:41
AT & operator()(int i)
Element operator.
Definition: vector.h:199
int rows() const
Number of rows.
Definition: general_matrix.h:272
Vector(const Vector< Ref, AT > &x)
Copy Constructor.
Definition: vector.h:127
Vector()
Standard constructor.
Definition: vector.h:85
This is a rowvector class of general shape in dense storage format.
Definition: row_vector.h:36
Vector(const char *str)
String Constructor.
Definition: vector.h:114
This is a matrix class for general matrices.
Definition: general_matrix.h:40
std::istream & operator>>(std::istream &is, Matrix< Type, Row, Col, AT > &A)
Matrix input.
Definition: matrix.h:171
int size() const
Size.
Definition: vector.h:262
RowVector< Ref, AT > trans(const Vector< Ref, AT > &x)
Transpose of a vector.
Definition: linear_algebra.h:1470
Basic shape class for matrices.
Definition: types.h:100
This is a vector class of general shape in dense storage format.
Definition: vector.h:39
int end() const
Last element.
Definition: range.h:95
Vector(int m, AT *ele)
Regular Constructor.
Definition: vector.h:99
This is an index class for creating submatrices.
Definition: range.h:44
int inc() const
Increment.
Definition: vector.h:270
int start() const
First element.
Definition: range.h:89
int cols() const
Number of columns.
Definition: general_matrix.h:278