25 #include "general_matrix.h"
47 typedef AT AtomicType;
55 friend class Vector<Ref,AT>;
65 const AT* elePtr(
int i)
const {
66 return tp ? ele+i : ele+lda*i;
70 return tp ? ele+i : ele+lda*i;
73 RowVector(
int n_,
int lda_,
bool tp, Memory<AT> memory,
const AT* ele_) :
Matrix<General,Ref,Ref,AT>(1,n_, lda_, tp, memory, ele_) {
90 RowVector(
int n, Init ini=INIT,
const AT &a=0) : Matrix<General,Ref,Ref,AT>(1,n,ini,a) { }
114 #ifndef FMATVEC_NO_SIZE_CHECK
124 LogicAssert(x.
rows()==1,
"Number of cols() must be 1 in RowVector<Ref,AT>::RowVector(const Matrix<General,Ref,Ref,AT> &x)");
132 RowVector<Ref,AT>& resize(
int n, Noinit) {
133 Matrix<General,Ref,Ref,AT>::resize(1,n,Noinit());
137 RowVector<Ref,AT>& resize(
int n, Init ini=INIT,
const AT &a=0) {
138 Matrix<General,Ref,Ref,AT>::resize(1,n,ini,a);
192 #ifndef FMATVEC_NO_BOUNDS_CHECK
204 #ifndef FMATVEC_NO_BOUNDS_CHECK
215 const AT& er(
int i)
const {
223 const AT& et(
int i)
const {
228 return tp ? et(i) : er(i);
231 const AT& e(
int i)
const {
232 return tp ? et(i) : er(i);
242 inline RowVector<Ref,AT>& init(
const AT& a);
243 inline RowVector<Ref,AT>& init(Init,
const AT &a=0) {
return init(a); }
244 inline RowVector<Ref,AT>& init(Noinit,
const AT &a=0) {
return *
this; }
258 int inc()
const {
return tp?1:lda;};
306 const Vector<Ref,AT> T()
const {
307 return Vector<Ref,AT>(n,lda,tp?
false:
true,memory,ele);
318 for(
int i=0; i<n; i++)
322 for(
int i=0; i<n; i++)
338 ele = (AT*)memory.get();
340 #ifndef FMATVEC_NO_SIZE_CHECK
341 assert(n == x.
size());
350 template <
class AT>
template<
class Row>
359 ele = (AT*)memory.get();
361 #ifndef FMATVEC_NO_SIZE_CHECK
362 assert(n == x.size());
380 ele = (AT*)memory.get();
423 #ifndef FMATVEC_NO_BOUNDS_CHECK
433 #ifndef FMATVEC_NO_BOUNDS_CHECK
446 for(
int i=0; i<size(); i++)
449 for(
int i=0; i<size(); i++)
454 for(
int i=0; i<size(); i++)
457 for(
int i=0; i<size(); i++)
462 template <
class AT>
template <
class Col>
463 inline void RowVector<Ref,AT>::deepCopy(
const RowVector<Col,AT> &x) {
465 for(
int i=0; i<size(); i++)
468 for(
int i=0; i<size(); i++)
const AT & operator()(int i) const
Element operator.
Definition: row_vector.h:203
AT & operator()(int i)
Element operator.
Definition: row_vector.h:191
This is the basic matrix class for arbitrary matrices.
Definition: fmatvec.h:41
int size() const
Size.
Definition: row_vector.h:250
RowVector(int n, AT *ele)
Regular Constructor.
Definition: row_vector.h:98
int rows() const
Number of rows.
Definition: general_matrix.h:272
int inc() const
Increment.
Definition: row_vector.h:258
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:149
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
RowVector(const char *str)
String Constructor.
Definition: row_vector.h:113
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
RowVector(const Matrix< General, Ref, Ref, AT > &x)
Copy Constructor.
Definition: row_vector.h:123
RowVector()
Standard constructor.
Definition: row_vector.h:84
This is an index class for creating submatrices.
Definition: range.h:44
int start() const
First element.
Definition: range.h:89