25 #include "general_matrix.h"
53 friend class Vector<Ref,AT>;
63 const AT* elePtr(
int i)
const {
64 return tp ? ele+i : ele+lda*i;
68 return tp ? ele+i : ele+lda*i;
71 RowVector(
int n_,
int lda_,
bool tp, Memory<AT> memory,
const AT* ele_) :
Matrix<General,Ref,Ref,AT>(1,n_, lda_, tp, memory, ele_) {
88 RowVector(
int n, Init ini=INIT,
const AT &a=0) : Matrix<General,Ref,Ref,AT>(1,n,ini,a) { }
112 #ifndef FMATVEC_NO_SIZE_CHECK
122 LogicAssert(x.
rows()==1,
"Number of cols() must be 1 in RowVector<Ref,AT>::RowVector(const Matrix<General,Ref,Ref,AT> &x)");
130 RowVector<Ref,AT>& resize(
int n, Noinit) {
131 Matrix<General,Ref,Ref,AT>::resize(1,n,Noinit());
135 RowVector<Ref,AT>& resize(
int n, Init ini=INIT,
const AT &a=0) {
136 Matrix<General,Ref,Ref,AT>::resize(1,n,ini,a);
190 #ifndef FMATVEC_NO_BOUNDS_CHECK
202 #ifndef FMATVEC_NO_BOUNDS_CHECK
213 const AT& er(
int i)
const {
221 const AT& et(
int i)
const {
226 return tp ? et(i) : er(i);
229 const AT& e(
int i)
const {
230 return tp ? et(i) : er(i);
240 inline RowVector<Ref,AT>& init(
const AT& a);
241 inline RowVector<Ref,AT>& init(Init,
const AT &a=0) {
return init(a); }
242 inline RowVector<Ref,AT>& init(Noinit,
const AT &a=0) {
return *
this; }
256 int inc()
const {
return tp?1:lda;};
304 const Vector<Ref,AT> T()
const {
305 return Vector<Ref,AT>(n,lda,tp?
false:
true,memory,ele);
316 for(
int i=0; i<n; i++)
320 for(
int i=0; i<n; i++)
336 ele = (AT*)memory.get();
338 #ifndef FMATVEC_NO_SIZE_CHECK
339 assert(n == x.
size());
348 template <
class AT>
template<
class Row>
357 ele = (AT*)memory.get();
359 #ifndef FMATVEC_NO_SIZE_CHECK
360 assert(n == x.size());
378 ele = (AT*)memory.get();
410 return operator()(
Index(i1,i2));
415 return operator()(
Index(i1,i2));
421 #ifndef FMATVEC_NO_BOUNDS_CHECK
431 #ifndef FMATVEC_NO_BOUNDS_CHECK
444 for(
int i=0; i<size(); i++)
447 for(
int i=0; i<size(); i++)
452 for(
int i=0; i<size(); i++)
455 for(
int i=0; i<size(); i++)
460 template <
class AT>
template <
class Col>
461 inline void RowVector<Ref,AT>::deepCopy(
const RowVector<Col,AT> &x) {
463 for(
int i=0; i<size(); i++)
466 for(
int i=0; i<size(); i++)
const AT & operator()(int i) const
Element operator.
Definition: row_vector.h:201
AT & operator()(int i)
Element operator.
Definition: row_vector.h:189
This is the basic matrix class for arbitrary matrices.
Definition: matrix.h:56
int size() const
Size.
Definition: row_vector.h:248
RowVector(int n, AT *ele)
Regular Constructor.
Definition: row_vector.h:96
int rows() const
Number of rows.
Definition: general_matrix.h:270
int end() const
Last element.
Definition: index.h:85
int inc() const
Increment.
Definition: row_vector.h:256
This is a rowvector class of general shape in dense storage format.
Definition: row_vector.h:36
RowVector(const RowVector< Ref, AT > &x)
Copy Constructor.
Definition: row_vector.h:147
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
RowVector(const char *str)
String Constructor.
Definition: row_vector.h:111
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
RowVector(const Matrix< General, Ref, Ref, AT > &x)
Copy Constructor.
Definition: row_vector.h:121
RowVector()
Standard constructor.
Definition: row_vector.h:82
int start() const
First element.
Definition: index.h:79