00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 #ifndef __FK_GEN_VECTOR_HEADER__
00073 #define __FK_GEN_VECTOR_HEADER__
00074
00075 #include <FK/Vector.h>
00076
00077 class fk_GenMatrix;
00078
00080
00090 class fk_GenVector {
00091
00092 friend class fk_GenMatrix;
00093
00094 private:
00095
00096 std::vector<double> v;
00097
00098 public:
00099
00101
00108 fk_GenVector(int deg = 0);
00109
00111
00116 fk_GenVector(std::vector<double> &array);
00117
00119
00125 fk_GenVector(int deg, double *array);
00126
00128 fk_GenVector(const fk_GenVector &);
00129
00131 fk_GenVector(const fk_Vector &);
00132
00134 fk_GenVector(const fk_HVector &);
00135
00137
00138
00140
00149 fk_GenVector & operator -(void) const;
00150
00151
00152
00154
00155
00157
00171 bool operator ==(const fk_GenVector &) const;
00172
00174
00188 bool operator !=(const fk_GenVector &) const;
00189
00190
00191
00193
00194
00196 fk_GenVector & operator =(const fk_GenVector &);
00197
00199 fk_GenVector & operator =(const fk_Vector &);
00200
00202 fk_GenVector & operator =(const fk_HVector &);
00203
00205
00219 fk_GenVector & operator *=(double d);
00220
00222
00238 fk_GenVector & operator /=(double);
00239
00241
00257 fk_GenVector & operator +=(const fk_GenVector &);
00258
00260
00276 fk_GenVector & operator -=(const fk_GenVector &);
00277
00279
00295 fk_GenVector & operator *=(const fk_GenMatrix &);
00296
00297
00298
00300
00301
00303
00308 void resize(int deg);
00309
00310
00319 bool set(int ID, double value);
00320
00322
00326 int size(void) const;
00327
00329
00335 double get(int ID) const;
00336
00338
00349 double norm(void) const;
00350
00352
00363 double norm2(void) const;
00364
00366
00380 bool normalize(void);
00381
00383
00388 void init(bool degFlg = false);
00389
00391
00396 bool isZero(void) const;
00397
00399
00421 bool replace(int s, fk_GenVector &Q);
00422
00424
00446 bool replace(int s, fk_Vector &Q);
00447
00449
00471 bool replace(int s, fk_HVector &Q);
00472
00474
00496 bool add(int s, fk_GenVector &Q);
00497
00499
00521 bool add(int s, fk_Vector &Q);
00522
00524
00546 bool add(int s, fk_HVector &Q);
00547
00549
00571 bool sub(int s, fk_GenVector &Q);
00572
00574
00596 bool sub(int s, fk_Vector &Q);
00597
00599
00621 bool sub(int s, fk_HVector &Q);
00622
00624
00633 fk_GenVector div(int s, int e);
00634
00635 #ifndef FK_DOXYGEN_USER_PROCESS
00636
00637 void Print(void) const;
00638 void Print(std::string) const;
00639
00640 #endif
00641
00643
00644 friend double operator *(const fk_GenVector &, const fk_GenVector &);
00645 friend fk_GenVector operator +(const fk_GenVector &, const fk_GenVector &);
00646 friend fk_GenVector operator -(const fk_GenVector &, const fk_GenVector &);
00647 friend fk_GenVector operator *(const fk_GenVector &, double);
00648 friend fk_GenVector operator *(double, const fk_GenVector &);
00649 friend fk_GenVector operator /(const fk_GenVector &, double);
00650 friend fk_GenVector operator ^(const fk_GenVector &, const fk_GenVector &);
00651
00652 };
00653
00655
00657
00675 double operator *(const fk_GenVector &P, const fk_GenVector &Q);
00676
00678
00689 fk_GenVector operator +(const fk_GenVector &P, const fk_GenVector &Q);
00690
00692
00703 fk_GenVector operator -(const fk_GenVector &P, const fk_GenVector &Q);
00704
00706
00716 fk_GenVector operator *(const fk_GenVector &V, double d);
00717
00719
00729 fk_GenVector operator *(double d, const fk_GenVector &V);
00730
00732
00740 fk_GenVector operator /(const fk_GenVector &V, double d);
00741
00742
00744
00765 fk_GenVector operator ^(const fk_GenVector &P, const fk_GenVector &Q);
00766
00767 #endif // !__FK_GEN_VECTOR_HEADER__