25 #include "general_matrix.h"
58 friend const Vector<Ref,AT> Matrix<General,Ref,Ref,AT>::col(
int i)
const;
66 return tp ? ele+lda*i : ele+i;
69 const AT* elePtr(
int i)
const {
70 return tp ? ele+lda*i : ele+i;
73 Vector(
int n_,
int lda_,
bool tp, Memory<AT> memory,
const AT* ele_) :
Matrix<General,Ref,Ref,AT>(n_, 1, lda_, tp, memory, ele_) { }
89 Vector(
int m, Init ini=INIT,
const AT &a=0) : Matrix<General,Ref,Ref,AT>(m,1,ini,a) { }
113 #ifndef FMATVEC_NO_SIZE_CHECK
132 template<
class Type,
class Row,
class Col>
133 explicit Vector(
const Matrix<Type,Row,Col,AT> &x) : Matrix<General,Ref,Ref,AT>(x) {
135 #ifndef FMATVEC_NO_SIZE_CHECK
140 Vector<Ref,AT>& resize() {
141 Matrix<General,Ref,Ref,AT>::resize();
145 Vector<Ref,AT>& resize(
int m, Noinit) {
146 Matrix<General,Ref,Ref,AT>::resize(m,1,Noinit());
150 Vector<Ref,AT>& resize(
int m, Init ini=INIT,
const AT &a=0) {
151 Matrix<General,Ref,Ref,AT>::resize(m,1,ini,a);
162 inline Vector<Ref,AT>& operator<<(const Vector<Row,AT> &x);
170 inline Vector<Ref,AT>&
operator>>(
const Vector<Ref,AT> &x);
172 inline Vector<Ref,AT>&
operator>>(
const Matrix<General,Ref,Ref,AT> &A);
182 inline Vector<Ref,AT>& operator=(
const Vector<Ref,AT> &x);
185 inline Vector<Ref,AT>& operator=(
const Vector<Row,AT> &x);
199 #ifndef FMATVEC_NO_BOUNDS_CHECK
213 #ifndef FMATVEC_NO_BOUNDS_CHECK
225 const AT& er(
int i)
const {
233 const AT& et(
int i)
const {
238 return tp ? et(i) : er(i);
241 const AT& e(
int i)
const {
242 return tp ? et(i) : er(i);
252 inline Vector<Ref,AT>& init(
const AT& a=0);
253 inline Vector<Ref,AT>& init(Init,
const AT& a=0) {
return init(a); }
254 inline Vector<Ref,AT>& init(Noinit,
const AT& a=0) {
return *
this; }
268 int inc()
const {
return tp?lda:1;};
316 inline operator std::vector<AT>();
322 inline Vector(std::vector<AT> v);
328 const RowVector<Ref,AT> T()
const {
329 return RowVector<Ref,AT>(m,lda,tp?
false:
true,memory,ele);
337 for(
int i=0; i<m; i++)
340 for(
int i=0; i<m; i++)
354 ele = (AT*)memory.get();
356 #ifndef FMATVEC_NO_SIZE_CHECK
357 assert(m == x.
size());
366 template <
class AT>
template<
class Row>
375 ele = (AT*)memory.get();
377 #ifndef FMATVEC_NO_SIZE_CHECK
378 assert(m == x.size());
387 template <
class AT>
template<
class Row>
396 ele = (AT*)memory.get();
420 #ifndef FMATVEC_NO_SIZE_CHECK
421 assert(A.
cols() == 1);
444 return operator()(
Index(i1,i2));
449 return operator()(
Index(i1,i2));
455 #ifndef FMATVEC_NO_BOUNDS_CHECK
465 #ifndef FMATVEC_NO_BOUNDS_CHECK
474 std::vector<AT> ret(size());
475 if(size()>0) memcpy(&ret[0], &
operator()(0),
sizeof(AT)*size());
481 if(size()>0) memcpy(&
operator()(0), &v[0],
sizeof(AT)*size());
490 for(
int i=0; i<size(); i++)
493 for(
int i=0; i<size(); i++)
498 for(
int i=0; i<size(); i++)
501 for(
int i=0; i<size(); i++)
506 template <
class AT>
template <
class Row>
507 inline void Vector<Ref,AT>::deepCopy(
const Vector<Row,AT> &x) {
509 for(
int i=0; i<size(); i++)
512 for(
int i=0; i<size(); i++)
const AT & operator()(int i) const
Element operator.
Definition: vector.h:211
This is the basic matrix class for arbitrary matrices.
Definition: matrix.h:56
AT & operator()(int i)
Element operator.
Definition: vector.h:197
int rows() const
Number of rows.
Definition: general_matrix.h:270
Vector(const Vector< Ref, AT > &x)
Copy Constructor.
Definition: vector.h:125
Vector()
Standard constructor.
Definition: vector.h:83
int end() const
Last element.
Definition: index.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:112
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:170
int size() const
Size.
Definition: vector.h:260
This is an index class for creating submatrices.
Definition: index.h:34
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 start() const
First element.
Definition: index.h:79
Vector(int m, AT *ele)
Regular Constructor.
Definition: vector.h:97
int inc() const
Increment.
Definition: vector.h:268
int cols() const
Number of columns.
Definition: general_matrix.h:276