CPPLapack
 All Classes Files Functions Variables Friends Pages
Public Member Functions | Public Attributes | Friends | List of all members
drovector Class Reference

Real Double-precision Row Vector Class. More...

#include <drovector.hpp>

Public Member Functions

 drovector ()
 
 drovector (const drovector &)
 
 drovector (const _drovector &)
 
 drovector (const CPPL_INT &, const CPPL_INT=0)
 
 drovector (const char *)
 
 ~drovector ()
 
_zrovector to_zrovector () const
 
double & operator() (const CPPL_INT &)
 
double operator() (const CPPL_INT &) const
 
drovectorset (const CPPL_INT &, const double &)
 
void write (const char *) const
 
void read (const char *)
 
void clear ()
 
drovectorzero ()
 
void chsign ()
 
void copy (const drovector &)
 
void shallow_copy (const _drovector &)
 
void alias (const drovector &)
 
void unalias ()
 
drovectorresize (const CPPL_INT &, const CPPL_INT=0)
 
void stretch (const CPPL_INT &)
 
drovectoroperator= (const drovector &)
 
drovectoroperator= (const _drovector &)
 
drovectoroperator+= (const drovector &)
 
drovectoroperator+= (const _drovector &)
 
drovectoroperator-= (const drovector &)
 
drovectoroperator-= (const _drovector &)
 
drovectoroperator*= (const double &)
 
drovectoroperator/= (const double &)
 

Public Attributes

CPPL_INT l
 vector size More...
 
CPPL_INT cap
 vector capacity More...
 
double * array
 1D array to store vector data More...
 

Friends

std::ostream & operator<< (std::ostream &, const drovector &)
 
_dcovector t (const drovector &)
 
double nrm2 (const drovector &)
 
CPPL_INT idamax (const drovector &)
 
double damax (const drovector &)
 
void swap (drovector &, drovector &)
 
_drovector _ (drovector &)
 
const drovectoroperator+ (const drovector &)
 
_drovector operator- (const drovector &)
 
_drovector operator+ (const drovector &, const drovector &)
 
_drovector operator+ (const drovector &, const _drovector &)
 
_drovector operator- (const drovector &, const drovector &)
 
_drovector operator- (const drovector &, const _drovector &)
 
double operator* (const drovector &, const dcovector &)
 
double operator* (const drovector &, const _dcovector &)
 
_drovector operator* (const drovector &, const dgematrix &)
 
_drovector operator* (const drovector &, const _dgematrix &)
 
_drovector operator* (const drovector &, const dsymatrix &)
 
_drovector operator* (const drovector &, const _dsymatrix &)
 
_drovector operator* (const drovector &, const dgbmatrix &)
 
_drovector operator* (const drovector &, const _dgbmatrix &)
 
_drovector operator* (const drovector &, const dgsmatrix &)
 
_drovector operator* (const drovector &, const _dgsmatrix &)
 
_drovector operator* (const drovector &, const dssmatrix &)
 
_drovector operator* (const drovector &, const _dssmatrix &)
 
_drovector operator* (const drovector &, const double &)
 
_drovector operator/ (const drovector &, const double &)
 
double operator% (const drovector &, const drovector &)
 
double operator% (const drovector &, const _drovector &)
 
_drovector operator* (const double &, const drovector &)
 
_drovector hadamard (const drovector &, const drovector &)
 

Detailed Description

Real Double-precision Row Vector Class.

Definition at line 3 of file drovector.hpp.

Constructor & Destructor Documentation

drovector::drovector ( )
inline

drovector constructor

Definition at line 3 of file drovector-constructor.hpp.

References array, cap, and l.

4 {CPPL_VERBOSE_REPORT;
5  //////// initialize ////////
6  l =0;
7  cap =0;
8  array =NULL;
9 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector::drovector ( const drovector vec)
inline

drovector copy constructor

Definition at line 13 of file drovector-constructor.hpp.

References array, cap, and l.

14 {CPPL_VERBOSE_REPORT;
15  //////// initialize ////////
16  l =vec.l;
17  cap =vec.cap;
18  array =new double[cap];
19 
20  //////// copy ////////
21  CPPL_INT inc =1;
22  dcopy_(&l, vec.array, &inc, array, &inc);
23 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector::drovector ( const _drovector vec)
inline

drovector constructor to cast _drovector

Definition at line 27 of file drovector-constructor.hpp.

References array, _drovector::array, cap, _drovector::cap, _drovector::l, l, and _drovector::nullify().

28 {CPPL_VERBOSE_REPORT;
29  //////// initialize ////////
30  l =vec.l;
31  cap =vec.cap;
32  array =vec.array;
33 
34  vec.nullify();
35 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
void nullify() const
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
CPPL_INT cap
vector capacity
Definition: _drovector.hpp:10
drovector::drovector ( const CPPL_INT &  _l,
const CPPL_INT  margin = 0 
)
inline

drovector constructor with size specification

Definition at line 39 of file drovector-constructor.hpp.

References array, cap, and l.

40 {CPPL_VERBOSE_REPORT;
41 #ifdef CPPL_DEBUG
42  if( _l<0 || margin<0 ){
43  ERROR_REPORT;
44  std::cerr << "Vector size must be positive integers. " << std::endl
45  << "Your input was (" << _l << ")." << std::endl;
46  exit(1);
47  }
48 #endif//CPPL_DEBUG
49 
50  //////// initialize ////////
51  l =_l;
52  cap =l+margin;
53  array =new double[cap];
54 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector::drovector ( const char *  filename)
inline

drovector constructor with filename

Definition at line 58 of file drovector-constructor.hpp.

References array, and read().

59 {CPPL_VERBOSE_REPORT;
60  array =NULL;
61  read(filename);
62 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
void read(const char *)
drovector::~drovector ( )
inline

drovector destructor

Definition at line 70 of file drovector-constructor.hpp.

References array.

71 {CPPL_VERBOSE_REPORT;
72  delete [] array;
73 }
double * array
1D array to store vector data
Definition: drovector.hpp:11

Member Function Documentation

_zrovector drovector::to_zrovector ( ) const
inline

cast to _zrovector

Definition at line 3 of file drovector-cast.hpp.

References _, zrovector::array, array, i(), and l.

4 {CPPL_VERBOSE_REPORT;
5  zrovector newvec(l);
6 
7  for(CPPL_INT i=0; i<l; i++){
8  newvec.array[i] =comple(array[i], 0.);
9  }
10 
11  return _(newvec);
12 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Complex Double-precision Row Vector Class.
Definition: zrovector.hpp:3
double & drovector::operator() ( const CPPL_INT &  i)
inline

operator() for non-const object

Definition at line 3 of file drovector-io.hpp.

References array, i(), and l.

Referenced by read(), and write().

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if( i<0 || l<=i ){
7  ERROR_REPORT;
8  std::cerr << "The required component is out of the vector size." << std::endl
9  << "Your input is (" << i << "), whereas the vector size is " << l << "." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  return array[i];
15 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
double drovector::operator() ( const CPPL_INT &  i) const
inline

operator() for const object

Definition at line 19 of file drovector-io.hpp.

References array, i(), and l.

20 {CPPL_VERBOSE_REPORT;
21 #ifdef CPPL_DEBUG
22  if( i<0 || l<=i ){
23  ERROR_REPORT;
24  std::cerr << "The required component is out of the vector size." << std::endl
25  << "Your input is (" << i << "), whereas the vector size is " << l << "." << std::endl;
26  exit(1);
27  }
28 #endif//CPPL_DEBUG
29 
30  return array[i];
31 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::set ( const CPPL_INT &  i,
const double &  v 
)
inline

set value for const object

Definition at line 39 of file drovector-io.hpp.

References array, i(), and l.

40 {CPPL_VERBOSE_REPORT;
41 #ifdef CPPL_DEBUG
42  if( i<0 || l<=i ){
43  ERROR_REPORT;
44  std::cerr << "The required component is out of the vector size." << std::endl
45  << "Your input is (" << i << "), whereas the vector size is " << l << "." << std::endl;
46  exit(1);
47  }
48 #endif//CPPL_DEBUG
49 
50  array[i] =v;
51  return *this;
52 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
void drovector::write ( const char *  filename) const
inline

Definition at line 72 of file drovector-io.hpp.

References i(), l, and operator()().

73 {CPPL_VERBOSE_REPORT;
74  std::ofstream ofs(filename, std::ios::trunc);
75  ofs.setf(std::cout.flags());
76  ofs.precision(std::cout.precision());
77  ofs.width(std::cout.width());
78  ofs.fill(std::cout.fill());
79 
80  ofs << "#drovector" << " " << l << std::endl;
81  for(CPPL_INT i=0; i<l; i++){
82  ofs << operator()(i) << " ";
83  }
84  ofs << std::endl;
85 
86  ofs.close();
87 }
_dgematrix i(const _dgbmatrix &mat)
double & operator()(const CPPL_INT &)
Definition: drovector-io.hpp:3
CPPL_INT l
vector size
Definition: drovector.hpp:9
void drovector::read ( const char *  filename)
inline

Definition at line 90 of file drovector-io.hpp.

References i(), l, operator()(), and resize().

Referenced by drovector().

91 {CPPL_VERBOSE_REPORT;
92  std::ifstream s( filename );
93  if(!s){
94  ERROR_REPORT;
95  std::cerr << "The file \"" << filename << "\" can not be opened." << std::endl;
96  exit(1);
97  }
98 
99  std::string id;
100  s >> id;
101  if( id != "drovector" && id != "#drovector" ){
102  ERROR_REPORT;
103  std::cerr << "The type name of the file \"" << filename << "\" is not drovector." << std::endl
104  << "Its type name was " << id << " ." << std::endl;
105  exit(1);
106  }
107 
108  s >> l;
109  resize(l);
110  for(CPPL_INT i=0; i<l; i++) { s >> operator()(i); }
111  if(s.eof()){
112  ERROR_REPORT;
113  std::cerr << "There is something is wrong with the file \"" << filename << "\"." << std::endl
114  << "Most likely, there is a lack of data components, or a linefeed code or space code is missing at the end of the last line." << std::endl;
115  exit(1);
116  }
117 
118  s >> id;
119  if(!s.eof()){
120  ERROR_REPORT;
121  std::cerr << "There is something is wrong with the file \"" << filename << "\"." << std::endl
122  << "Most likely, there are extra data components." << std::endl;
123  exit(1);
124  }
125 
126  s.close();
127 }
_dgematrix i(const _dgbmatrix &mat)
double & operator()(const CPPL_INT &)
Definition: drovector-io.hpp:3
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & resize(const CPPL_INT &, const CPPL_INT=0)
void drovector::clear ( )
inline

clear vector

Definition at line 3 of file drovector-misc.hpp.

References array, cap, and l.

4 {CPPL_VERBOSE_REPORT;
5  l =0;
6  cap =0;
7  delete [] array;
8  array =NULL;
9 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector & drovector::zero ( )
inline

make vector into zero vector

Definition at line 13 of file drovector-misc.hpp.

References array, i(), and l.

Referenced by dgematrix::dgels(), operator%(), operator*(), dssmatrix::row(), dgsmatrix::row(), and zgematrix::zgels().

14 {CPPL_VERBOSE_REPORT;
15  for(CPPL_INT i=0; i<l; i++){ array[i] =0.0; }
16  return *this;
17 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
void drovector::chsign ( )
inline

change sign(+/-) of the vector

Definition at line 21 of file drovector-misc.hpp.

References array, i(), and l.

22 {CPPL_VERBOSE_REPORT;
23  for(CPPL_INT i=0; i<l; i++){ array[i] =-array[i]; }
24 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
void drovector::copy ( const drovector vec)
inline

make a deep copy of the drovector

Definition at line 28 of file drovector-misc.hpp.

References array, cap, and l.

Referenced by operator=().

29 {CPPL_VERBOSE_REPORT;
30  l =vec.l;
31  cap =vec.cap;
32  delete [] array;
33  array =new double[vec.cap];
34  CPPL_INT inc =1;
35  dcopy_(&vec.l, vec.array, &inc, array, &inc);
36 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
void drovector::shallow_copy ( const _drovector vec)
inline

make a shallow copy of the vector
This function is not desinged to be used in project codes.

Definition at line 41 of file drovector-misc.hpp.

References array, _drovector::array, cap, _drovector::cap, _drovector::l, l, and _drovector::nullify().

Referenced by operator=().

42 {CPPL_VERBOSE_REPORT;
43  l =vec.l;
44  cap =vec.cap;
45  delete [] array;
46  array =vec.array;
47 
48  vec.nullify();
49 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
void nullify() const
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
CPPL_INT cap
vector capacity
Definition: _drovector.hpp:10
void drovector::alias ( const drovector vec)
inline

make an alias of the vector
Be carefull to use this function not to cause double free.

Definition at line 54 of file drovector-misc.hpp.

References array, cap, and l.

55 {CPPL_VERBOSE_REPORT;
56  l =vec.l;
57  cap =vec.cap;
58  delete [] array;
59  array =vec.array;
60 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
void drovector::unalias ( )
inline

unalias the vector

Definition at line 64 of file drovector-misc.hpp.

References array, cap, and l.

65 {CPPL_VERBOSE_REPORT;
66  l =0;
67  cap =0;
68  array =NULL;
69 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector & drovector::resize ( const CPPL_INT &  _l,
const CPPL_INT  margin = 0 
)
inline

resize vector

Definition at line 73 of file drovector-misc.hpp.

References array, cap, and l.

Referenced by dgematrix::dgels(), read(), and zgematrix::zgels().

74 {CPPL_VERBOSE_REPORT;
75 #ifdef CPPL_DEBUG
76  if( _l<0 || margin<0 ){
77  ERROR_REPORT;
78  std::cerr << "Vector size must be positive integers." << std::endl
79  << "Your input was (" << _l << ", " << margin << ")." << std::endl;
80  exit(1);
81  }
82 #endif//CPPL_DEBUG
83 
84  l =_l;
85  cap =l+margin;
86  delete [] array;
87  array =new double[cap];
88 
89  return *this;
90 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
void drovector::stretch ( const CPPL_INT &  dl)
inline

stretch or shrink vector

Definition at line 94 of file drovector-misc.hpp.

References array, cap, and l.

95 {CPPL_VERBOSE_REPORT;
96 #ifdef CPPL_DEBUG
97  if( l+dl<0 ){
98  ERROR_REPORT;
99  std::cerr << "Vector size must be positive integers." << std::endl
100  << "Your input was (" << dl << ")." << std::endl;
101  exit(1);
102  }
103 #endif//CPPL_DEBUG
104 
105  //////// zero ////////
106  if(dl==0){ return; }
107 
108  //////// non-zero ////////
109  l +=dl;
110 
111  if(l>cap){
112  while(l>cap){
113  cap++;
114  cap*=2;
115  }
116  CPPL_INT newl =l-dl;
117  CPPL_INT inc =1;
118  double* newArray(new double[cap]);
119  dcopy_(&newl, array, &inc, newArray, &inc);
120  delete [] array;
121  array =newArray;
122  }
123 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
drovector & drovector::operator= ( const drovector vec)
inline

drovector=drovector operator

Definition at line 3 of file drovector-drovector.hpp.

References array, and copy().

4 {CPPL_VERBOSE_REPORT;
5  if(array!=vec.array){ // if it is NOT self substitution
6  copy(vec);
7  }
8  return *this;
9 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
void copy(const drovector &)
drovector & drovector::operator= ( const _drovector vec)
inline

drovector=_drovector operator

Definition at line 3 of file drovector-_drovector.hpp.

References shallow_copy().

4 {CPPL_VERBOSE_REPORT;
5  shallow_copy(vec);
6  return *this;
7 }
void shallow_copy(const _drovector &)
drovector & drovector::operator+= ( const drovector vec)
inline

drovector+=drovector operator

Definition at line 17 of file drovector-drovector.hpp.

References array, i(), and l.

18 {CPPL_VERBOSE_REPORT;
19 #ifdef CPPL_DEBUG
20  if( l!=vec.l ){
21  ERROR_REPORT;
22  std::cerr << "These two vectors can not make a sumation." << std::endl
23  << "Your input was (" << l << ") += (" << vec.l << ")." << std::endl;
24  exit(1);
25  }
26 #endif//CPPL_DEBUG
27 
28  for(CPPL_INT i=0; i<l; i++){ array[i]+=vec.array[i]; }
29 
30  return *this;
31 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::operator+= ( const _drovector vec)
inline

drovector+=_drovector operator

Definition at line 15 of file drovector-_drovector.hpp.

References array, _drovector::array, _drovector::destroy(), i(), l, and _drovector::l.

16 {CPPL_VERBOSE_REPORT;
17 #ifdef CPPL_DEBUG
18  if( l!=vec.l ){
19  ERROR_REPORT;
20  std::cerr << "These two vectors can not make a sumation." << std::endl
21  << "Your input was (" << l << ") += (" << vec.l << ")." << std::endl;
22  exit(1);
23  }
24 #endif//CPPL_DEBUG
25 
26  for(CPPL_INT i=0; i<l; i++){ array[i]+=vec.array[i]; }
27 
28  vec.destroy();
29  return *this;
30 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
_dgematrix i(const _dgbmatrix &mat)
void destroy() const
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::operator-= ( const drovector vec)
inline

drovector operator-=

Definition at line 35 of file drovector-drovector.hpp.

References array, i(), and l.

36 {CPPL_VERBOSE_REPORT;
37 #ifdef CPPL_DEBUG
38  if( l!=vec.l ){
39  ERROR_REPORT;
40  std::cerr << "These two vectors can not make a subtraction." << std::endl
41  << "Your input was (" << l << ") -= (" << vec.l << ")." << std::endl;
42  exit(1);
43  }
44 #endif//CPPL_DEBUG
45 
46  for(CPPL_INT i=0; i<l; i++){ array[i]-=vec.array[i]; }
47 
48  return *this;
49 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::operator-= ( const _drovector vec)
inline

drovector operator-=

Definition at line 34 of file drovector-_drovector.hpp.

References array, _drovector::array, _drovector::destroy(), i(), l, and _drovector::l.

35 {CPPL_VERBOSE_REPORT;
36 #ifdef CPPL_DEBUG
37  if( l!=vec.l ){
38  ERROR_REPORT;
39  std::cerr << "These two vectors can not make a subtraction." << std::endl
40  << "Your input was (" << l << ") -= (" << vec.l << ")." << std::endl;
41  exit(1);
42  }
43 #endif//CPPL_DEBUG
44 
45  for(CPPL_INT i=0; i<l; i++){ array[i]-=vec.array[i]; }
46 
47  vec.destroy();
48  return *this;
49 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
_dgematrix i(const _dgbmatrix &mat)
void destroy() const
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::operator*= ( const double &  d)
inline

drovector*=double operator

Definition at line 3 of file drovector-double.hpp.

References array, and l.

4 {CPPL_VERBOSE_REPORT;
5  CPPL_INT inc =1;
6  dscal_(&l, &d, array, &inc);
7  return *this;
8 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
drovector & drovector::operator/= ( const double &  d)
inline

drovector/=double operator

Definition at line 12 of file drovector-double.hpp.

References array, and l.

13 {CPPL_VERBOSE_REPORT;
14  double dinv =1./d;
15  CPPL_INT inc =1;
16  dscal_(&l, &dinv, array, &inc);
17  return *this;
18 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const drovector vec 
)
friend

Definition at line 59 of file drovector-io.hpp.

60 {CPPL_VERBOSE_REPORT;
61  for(CPPL_INT i=0; i<vec.l; i++){ s << " " << vec.array[i]; }
62  s << std::endl;
63 
64  return s;
65 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
_dcovector t ( const drovector rovec)
friend

return a transposed column vector

Definition at line 3 of file drovector-calc.hpp.

4 {CPPL_VERBOSE_REPORT;
5  dcovector covec(rovec.l);
6 
7  CPPL_INT inc =1;
8  dcopy_(&rovec.l, rovec.array, &inc, covec.array, &inc);
9 
10  return _(covec);
11 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
double nrm2 ( const drovector vec)
friend

return its Euclidean norm

Definition at line 15 of file drovector-calc.hpp.

16 {CPPL_VERBOSE_REPORT;
17  CPPL_INT inc =1;
18  return dnrm2_(&vec.l, vec.array, &inc);
19 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT idamax ( const drovector vec)
friend

return the index of element having the largest absolute value in 0-based numbering system

Definition at line 24 of file drovector-calc.hpp.

25 {CPPL_VERBOSE_REPORT;
26  CPPL_INT inc =1;
27  return idamax_(&vec.l, vec.array, &inc) -1;
28 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
double damax ( const drovector vec)
friend

return its largest absolute value

Definition at line 32 of file drovector-calc.hpp.

33 {CPPL_VERBOSE_REPORT;
34  CPPL_INT inc =1;
35  return vec.array[idamax_(&vec.l, vec.array, &inc) -1];
36 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
void swap ( drovector u,
drovector v 
)
friend

swap two vectors

Definition at line 127 of file drovector-misc.hpp.

128 {CPPL_VERBOSE_REPORT;
129  CPPL_INT u_cap(u.cap), u_l(u.l);
130  double* u_array(u.array);
131  u.l=v.l; u.cap=v.cap; u.array=v.array;
132  v.l=u_l; v.cap=u_cap; v.array=u_array;
133 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
_drovector _ ( drovector vec)
friend

convert user object to smart-temporary object

Definition at line 137 of file drovector-misc.hpp.

Referenced by to_zrovector().

138 {CPPL_VERBOSE_REPORT;
139  _drovector newvec;
140 
141  //////// shallow copy ////////
142  newvec.l =vec.l;
143  newvec.cap =vec.cap;
144  newvec.array =vec.array;
145 
146  //////// nullify ////////
147  vec.l =0;
148  vec.cap =0;
149  vec.array =NULL;
150 
151  return newvec;
152 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT cap
vector capacity
Definition: drovector.hpp:10
CPPL_INT cap
vector capacity
Definition: _drovector.hpp:10
(DO NOT USE) Smart-temporary Real Double-precision Row Vector Class
Definition: _drovector.hpp:3
const drovector& operator+ ( const drovector vec)
friend

+drovector operator

Definition at line 3 of file drovector-unary.hpp.

4 {CPPL_VERBOSE_REPORT;
5  return vec;
6 }
_drovector operator- ( const drovector vec)
friend

-drovector operator

Definition at line 10 of file drovector-unary.hpp.

11 {CPPL_VERBOSE_REPORT;
12  drovector newvec(vec.l);
13  for(CPPL_INT i=0; i<newvec.l; i++){ newvec.array[i]=-vec.array[i]; }
14 
15  return _(newvec);
16 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector operator+ ( const drovector vecA,
const drovector vecB 
)
friend

drovector+drovector operator

Definition at line 57 of file drovector-drovector.hpp.

58 {CPPL_VERBOSE_REPORT;
59 #ifdef CPPL_DEBUG
60  if(vecA.l!=vecB.l){
61  ERROR_REPORT;
62  std::cerr << "These two vectors can not make a sumation." << std::endl
63  << "Your input was (" << vecA.l << ") + (" << vecB.l << ")." << std::endl;
64  exit(1);
65  }
66 
67 #endif//CPPL_DEBUG
68 
69  drovector newvec(vecA.l);
70  for(CPPL_INT i=0; i<newvec.l; i++){
71  newvec.array[i] =vecA.array[i]+vecB.array[i];
72  }
73 
74  return _(newvec);
75 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector operator+ ( const drovector vecA,
const _drovector vecB 
)
friend

drovector+drovector operator

Definition at line 57 of file drovector-_drovector.hpp.

58 {CPPL_VERBOSE_REPORT;
59 #ifdef CPPL_DEBUG
60  if(vecA.l!=vecB.l){
61  ERROR_REPORT;
62  std::cerr << "These two vectors can not make a sumation." << std::endl
63  << "Your input was (" << vecA.l << ") + (" << vecB.l << ")." << std::endl;
64  exit(1);
65  }
66 
67 #endif//CPPL_DEBUG
68 
69  for(CPPL_INT i=0; i<vecA.l; i++){ vecB.array[i]+=vecA.array[i]; }
70 
71  return vecB;
72 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
_drovector operator- ( const drovector vecA,
const drovector vecB 
)
friend

drovector-drovector operator

Definition at line 79 of file drovector-drovector.hpp.

80 {CPPL_VERBOSE_REPORT;
81 #ifdef CPPL_DEBUG
82  if(vecA.l!=vecB.l){
83  ERROR_REPORT;
84  std::cerr << "These two vectors can not make a subtraction." << std::endl
85  << "Your input was (" << vecA.l << ") - (" << vecB.l << ")." << std::endl;
86  exit(1);
87  }
88 #endif//CPPL_DEBUG
89 
90  drovector newvec(vecA.l);
91  for(CPPL_INT i=0; i<newvec.l; i++){
92  newvec.array[i] =vecA.array[i]-vecB.array[i];
93  }
94 
95  return _(newvec);
96 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector operator- ( const drovector vecA,
const _drovector vecB 
)
friend

drovector-drovector operator

Definition at line 76 of file drovector-_drovector.hpp.

77 {CPPL_VERBOSE_REPORT;
78 #ifdef CPPL_DEBUG
79  if(vecA.l!=vecB.l){
80  ERROR_REPORT;
81  std::cerr << "These two vectors can not make a subtraction." << std::endl
82  << "Your input was (" << vecA.l << ") - (" << vecB.l << ")." << std::endl;
83  exit(1);
84  }
85 #endif//CPPL_DEBUG
86 
87  for(CPPL_INT i=0; i<vecA.l; i++){
88  vecB.array[i] =vecA.array[i]-vecB.array[i];
89  }
90 
91  return vecB;
92 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
double operator* ( const drovector rovec,
const dcovector covec 
)
friend

drovector*dcovector operator

Definition at line 3 of file drovector-dcovector.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(rovec.l!=covec.l){
7  ERROR_REPORT;
8  std::cerr << "These two vectors can not make a product." << std::endl
9  << "Your input was (" << rovec.l << ") * (" << covec.l << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  CPPL_INT inc =1;
15  double val =ddot_( &rovec.l, rovec.array, &inc, covec.array, &inc );
16 
17  return val;
18 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: dcovector.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
double * array
1D array to store vector data
Definition: dcovector.hpp:11
double operator* ( const drovector rovec,
const _dcovector covec 
)
friend

drovector*_dcovector operator

Definition at line 3 of file drovector-_dcovector.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(rovec.l!=covec.l){
7  ERROR_REPORT;
8  std::cerr << "These two vectors can not make a product." << std::endl
9  << "Your input was (" << rovec.l << ") * (" << covec.l << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  CPPL_INT inc =1;
15  double val =ddot_( &rovec.l, rovec.array, &inc, covec.array, &inc );
16 
17  covec.destroy();
18  return val;
19 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: _dcovector.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
void destroy() const
double * array
1D array to store vector data
Definition: _dcovector.hpp:11
_drovector operator* ( const drovector vec,
const dgematrix mat 
)
friend

drovector*dgematrix operator

Definition at line 3 of file drovector-dgematrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char trans ='T';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dgemv_( &trans, &mat.m, &mat.n, &alpha, mat.array, &mat.m, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  return _(newvec);
23 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector operator* ( const drovector vec,
const _dgematrix mat 
)
friend

drovector*_dgematrix operator

Definition at line 3 of file drovector-_dgematrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char trans ='T';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dgemv_( &trans, &mat.m, &mat.n, &alpha, mat.array, &mat.m, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  mat.destroy();
23  return _(newvec);
24 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_drovector operator* ( const drovector vec,
const dsymatrix mat 
)
friend

drovector*dsymatrix operator

Definition at line 3 of file drovector-dsymatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.n){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.n << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char uplo ='l';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dsymv_( &uplo, &mat.n, &alpha, mat.array, &mat.n, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  return _(newvec);
23 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT n
matrix column size
Definition: dsymatrix.hpp:10
double * array
1D array to store matrix data
Definition: dsymatrix.hpp:11
_drovector operator* ( const drovector vec,
const _dsymatrix mat 
)
friend

drovector*_dsymatrix operator

Definition at line 3 of file drovector-_dsymatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.n){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.n << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char uplo ='l';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dsymv_( &uplo, &mat.n, &alpha, mat.array, &mat.n, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  mat.destroy();
23  return _(newvec);
24 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
void destroy() const
CPPL_INT l
vector size
Definition: drovector.hpp:9
double * array
1D array to store matrix data
Definition: _dsymatrix.hpp:12
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT n
matrix column size
Definition: _dsymatrix.hpp:11
_drovector operator* ( const drovector vec,
const dgbmatrix mat 
)
friend

drovector*dgbmatrix operator

Definition at line 3 of file drovector-dgbmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char trans ='T';
16  double alpha =1.;
17  CPPL_INT lda =mat.kl+mat.ku+1;
18  CPPL_INT inc =1;
19  double beta =0.;
20 
21  dgbmv_( &trans, &mat.m, &mat.n, &mat.kl, &mat.ku, &alpha, mat.array, &lda, vec.array, &inc, &beta, newvec.array, &inc );
22 
23  return _(newvec);
24 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT m
matrix row size
Definition: dgbmatrix.hpp:9
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT kl
lower band width
Definition: dgbmatrix.hpp:11
CPPL_INT ku
upper band width
Definition: dgbmatrix.hpp:12
double * array
1D array to store matrix data
Definition: dgbmatrix.hpp:13
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT n
matrix column size
Definition: dgbmatrix.hpp:10
_drovector operator* ( const drovector vec,
const _dgbmatrix mat 
)
friend

drovector*_dgbmatrix operator

Definition at line 3 of file drovector-_dgbmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  char trans ='T';
16  double alpha =1.;
17  CPPL_INT lda =mat.kl+mat.ku+1;
18  CPPL_INT inc =1;
19  double beta =0.;
20 
21  dgbmv_( &trans, &mat.m, &mat.n, &mat.kl, &mat.ku, &alpha, mat.array, &lda, vec.array, &inc, &beta, newvec.array, &inc );
22 
23  mat.destroy();
24  return _(newvec);
25 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT ku
upper band width
Definition: _dgbmatrix.hpp:12
void destroy() const
CPPL_INT l
vector size
Definition: drovector.hpp:9
CPPL_INT kl
lower band width
Definition: _dgbmatrix.hpp:11
friend _drovector _(drovector &)
CPPL_INT n
matrix column size
Definition: _dgbmatrix.hpp:10
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
double * array
1D array to store matrix data
Definition: _dgbmatrix.hpp:13
CPPL_INT m
matrix row size
Definition: _dgbmatrix.hpp:9
_drovector operator* ( const drovector vec,
const dgsmatrix mat 
)
friend

drovector*dgsmatrix operator

Definition at line 3 of file drovector-dgsmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  newvec.zero();
16 
17  const std::vector<dcomponent>::const_iterator mat_data_end =mat.data.end();
18  for(std::vector<dcomponent>::const_iterator it=mat.data.begin(); it!=mat_data_end; it++){
19  newvec(it->j) += vec(it->i)*it->v;
20  }
21 
22  return _(newvec);
23 }
std::vector< dcomponent > data
matrix data
Definition: dgsmatrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgsmatrix.hpp:10
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT m
matrix row size
Definition: dgsmatrix.hpp:9
_drovector operator* ( const drovector vec,
const _dgsmatrix mat 
)
friend

drovector*_dgsmatrix operator

Definition at line 3 of file drovector-_dgsmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.m){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.m << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  newvec.zero();
16 
17  const std::vector<dcomponent>::const_iterator mat_data_end =mat.data.end();
18  for(std::vector<dcomponent>::const_iterator it=mat.data.begin(); it!=mat_data_end; it++){
19  newvec(it->j) += vec(it->i)*it->v;
20  }
21 
22  mat.destroy();
23  return _(newvec);
24 }
CPPL_INT n
matrix column size
Definition: _dgsmatrix.hpp:10
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT m
matrix row size
Definition: _dgsmatrix.hpp:9
void destroy() const
std::vector< dcomponent > data
matrix data
Definition: _dgsmatrix.hpp:11
_drovector operator* ( const drovector vec,
const dssmatrix mat 
)
friend

drovector*dssmatrix operator

Definition at line 3 of file drovector-dssmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.n){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.n << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  newvec.zero();
16 
17  const std::vector<dcomponent>::const_iterator mat_data_end =mat.data.end();
18  for(std::vector<dcomponent>::const_iterator it=mat.data.begin(); it!=mat_data_end; it++){
19  newvec(it->j) += vec(it->i)*it->v;
20  if(it->i!=it->j){
21  newvec(it->i) +=vec(it->j)*it->v;
22  }
23  }
24 
25  return _(newvec);
26 }
std::vector< dcomponent > data
matrix data
Definition: dssmatrix.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT n
matrix column size
Definition: dssmatrix.hpp:10
_drovector operator* ( const drovector vec,
const _dssmatrix mat 
)
friend

drovector*_dssmatrix operator

Definition at line 3 of file drovector-_dssmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(vec.l!=mat.n){
7  ERROR_REPORT;
8  std::cerr << "These vector and matrix can not make a product." << std::endl
9  << "Your input was (" << vec.l << ") * (" << mat.n << "x" << mat.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  drovector newvec(mat.n);
15  newvec.zero();
16 
17  const std::vector<dcomponent>::const_iterator mat_data_end =mat.data.end();
18  for(std::vector<dcomponent>::const_iterator it=mat.data.begin(); it!=mat_data_end; it++){
19  newvec(it->j) += vec(it->i)*it->v;
20  if(it->i!=it->j){
21  newvec(it->i) += vec(it->j)*it->v;
22  }
23  }
24 
25  mat.destroy();
26  return _(newvec);
27 }
std::vector< dcomponent > data
matrix data
Definition: _dssmatrix.hpp:12
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT n
matrix column size
Definition: _dssmatrix.hpp:11
void destroy() const
_drovector operator* ( const drovector vec,
const double &  d 
)
friend

drovector*double operator

Definition at line 26 of file drovector-double.hpp.

27 {CPPL_VERBOSE_REPORT;
28  drovector newvec(vec.l);
29  for(CPPL_INT i=0; i<vec.l; i++){
30  newvec.array[i] =vec.array[i]*d;
31  }
32 
33  return _(newvec);
34 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector operator/ ( const drovector vec,
const double &  d 
)
friend

drovector/double operator

Definition at line 38 of file drovector-double.hpp.

39 {CPPL_VERBOSE_REPORT;
40  drovector newvec(vec.l);
41  for(CPPL_INT i=0; i<vec.l; i++){
42  newvec.array[i] =vec.array[i]/d;
43  }
44 
45  return _(newvec);
46 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
double operator% ( const drovector vecA,
const drovector vecB 
)
friend

drovector^T*drovector operator (inner product)

Definition at line 100 of file drovector-drovector.hpp.

101 {CPPL_VERBOSE_REPORT;
102 #ifdef CPPL_DEBUG
103  if(vecA.l!=vecB.l){
104  ERROR_REPORT;
105  std::cerr << "These two vectors can not make a dot product." << std::endl
106  << "Your input was (" << vecA.l << ") % (" << vecB.l << ")." << std::endl;
107  exit(1);
108  }
109 #endif//CPPL_DEBUG
110 
111  CPPL_INT inc =1;
112  double val =ddot_( &vecA.l, vecA.array, &inc, vecB.array, &inc );
113 
114  return val;
115 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
CPPL_INT l
vector size
Definition: drovector.hpp:9
double operator% ( const drovector vecA,
const _drovector vecB 
)
friend

drovector^T*drovector operator (inner product)

Definition at line 96 of file drovector-_drovector.hpp.

97 {CPPL_VERBOSE_REPORT;
98 #ifdef CPPL_DEBUG
99  if(vecA.l!=vecB.l){
100  ERROR_REPORT;
101  std::cerr << "These two vectors can not make a dot product." << std::endl
102  << "Your input was (" << vecA.l << ") % (" << vecB.l << ")." << std::endl;
103  exit(1);
104  }
105 #endif//CPPL_DEBUG
106 
107  CPPL_INT inc =1;
108  double val =ddot_( &vecA.l, vecA.array, &inc, vecB.array, &inc );
109 
110  vecB.destroy();
111  return val;
112 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
double * array
1D array to store vector data
Definition: _drovector.hpp:11
CPPL_INT l
vector size
Definition: _drovector.hpp:9
void destroy() const
CPPL_INT l
vector size
Definition: drovector.hpp:9
_drovector operator* ( const double &  d,
const drovector vec 
)
friend

double*drovector operator

Definition at line 3 of file double-drovector.hpp.

4 {CPPL_VERBOSE_REPORT;
5  drovector newvec(vec.l);
6 
7  for(CPPL_INT i=0; i<vec.l; i++){
8  newvec.array[i] =d*vec.array[i];
9  }
10 
11  return _(newvec);
12 }
double * array
1D array to store vector data
Definition: drovector.hpp:11
_dgematrix i(const _dgbmatrix &mat)
CPPL_INT l
vector size
Definition: drovector.hpp:9
friend _drovector _(drovector &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
_drovector hadamard ( const drovector ,
const drovector  
)
friend

Member Data Documentation

CPPL_INT drovector::l
CPPL_INT drovector::cap

vector capacity

Definition at line 10 of file drovector.hpp.

Referenced by _(), alias(), clear(), copy(), drovector(), resize(), shallow_copy(), stretch(), swap(), and unalias().

double* drovector::array

The documentation for this class was generated from the following files: