CPPLapack
 All Classes Files Functions Variables Friends
zgematrix.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Complex Double-precision General Dence Matrix Class
00003 class zgematrix
00004 {
00005 public:
00006   ///////////////////////////////////////////////
00007   /////////////////// objects ///////////////////
00008   ///////////////////////////////////////////////
00009   long m; //!< matrix row size
00010   long n; //!< matrix column size
00011   comple* array; //!< 1D array to store matrix data
00012   comple** darray; //!< array of pointers of column head addresses
00013   
00014   ///////////////////////////////////////////////
00015   ///////////////// constructors ////////////////
00016   ///////////////////////////////////////////////
00017   inline zgematrix();
00018   inline zgematrix(const zgematrix&);
00019   inline zgematrix(const _zgematrix&);
00020   inline zgematrix(const long&, const long&);
00021   inline zgematrix(const char*);
00022   inline ~zgematrix(); //destructor
00023   
00024   ///////////////////////////////////////////////
00025   ////////////////// functions //////////////////
00026   ///////////////////////////////////////////////
00027   //////// cast ////////
00028   
00029   //////// io ////////
00030   inline comple& operator()(const long&, const long&);
00031   inline comple operator()(const long&, const long&) const;
00032   inline zgematrix& set(const long&, const long&, const comple&);
00033   inline friend std::ostream& operator<<(std::ostream&, const zgematrix&);
00034   inline void write(const char*) const;
00035   inline void read(const char*);
00036 
00037   //////// misc ////////
00038   inline void clear();
00039   inline zgematrix& zero();
00040   inline zgematrix& identity();
00041   inline void chsign();
00042   inline void copy(const zgematrix&);
00043   inline void shallow_copy(const _zgematrix&);
00044   inline void resize(const long&, const long&);
00045   inline _zrovector row(const long&) const;
00046   inline _zcovector col(const long&) const;
00047   inline friend void swap(zgematrix&, zgematrix&);
00048   inline friend _zgematrix _(zgematrix&);
00049   
00050   //////// calc ////////
00051   inline friend _zgematrix t(const zgematrix&);
00052   inline friend _zgematrix i(const zgematrix&);
00053   inline friend _zgematrix conj(const zgematrix&);
00054   inline friend _zgematrix conjt(const zgematrix&);
00055   inline friend void idamax(long&, long&, const zgematrix&);
00056   inline friend comple damax(const zgematrix&);
00057   
00058   //////// lapack ////////
00059   inline long zgesv(zgematrix&);
00060   inline long zgesv(zcovector&);
00061   inline long zgels(zgematrix&);
00062   inline long zgels(zcovector&);
00063   inline long zgels(zgematrix&, drovector&);
00064   inline long zgels(zcovector&, double&);
00065   inline long zgelss(zcovector&, dcovector&, long&, const double);
00066   inline long zgelss(zgematrix&, dcovector&, long&, const double);
00067   inline long zgeev(std::vector< comple >&);
00068   inline long zgeev(std::vector< comple >&, std::vector<zcovector>&);
00069   inline long zgeev(std::vector< comple >&, std::vector<zrovector>&);
00070   //inline long zgegv()
00071   inline long zgesvd(dcovector&, zgematrix&, zgematrix&);
00072   
00073   ///////////////////////////////////////////////
00074   ///////////// numerical operators /////////////
00075   ///////////////////////////////////////////////
00076   //////// = ////////
00077   inline zgematrix& operator=(const  zgematrix&);
00078   inline zgematrix& operator=(const _zgematrix&);
00079   
00080   //////// += ////////
00081   inline zgematrix& operator+=(const  zgematrix&);
00082   inline zgematrix& operator+=(const _zgematrix&);
00083   inline zgematrix& operator+=(const  zhematrix&);
00084   inline zgematrix& operator+=(const _zhematrix&);
00085   inline zgematrix& operator+=(const  zgbmatrix&);
00086   inline zgematrix& operator+=(const _zgbmatrix&);
00087   inline zgematrix& operator+=(const  zgsmatrix&);
00088   inline zgematrix& operator+=(const _zgsmatrix&);
00089   inline zgematrix& operator+=(const  zhsmatrix&);
00090   inline zgematrix& operator+=(const _zhsmatrix&);
00091   
00092   //////// -= ////////
00093   inline zgematrix& operator-=(const  zgematrix&);
00094   inline zgematrix& operator-=(const _zgematrix&);
00095   inline zgematrix& operator-=(const  zhematrix&);
00096   inline zgematrix& operator-=(const _zhematrix&);
00097   inline zgematrix& operator-=(const  zgbmatrix&);
00098   inline zgematrix& operator-=(const _zgbmatrix&);
00099   inline zgematrix& operator-=(const  zgsmatrix&);
00100   inline zgematrix& operator-=(const _zgsmatrix&);
00101   inline zgematrix& operator-=(const  zhsmatrix&);
00102   inline zgematrix& operator-=(const _zhsmatrix&);
00103 
00104   //////// *= ////////
00105   inline zgematrix& operator*=(const  zgematrix&);
00106   inline zgematrix& operator*=(const _zgematrix&);
00107   inline zgematrix& operator*=(const  zhematrix&);
00108   inline zgematrix& operator*=(const _zhematrix&);
00109   inline zgematrix& operator*=(const  zgbmatrix&);
00110   inline zgematrix& operator*=(const _zgbmatrix&);
00111   inline zgematrix& operator*=(const  zgsmatrix&);
00112   inline zgematrix& operator*=(const _zgsmatrix&);
00113   inline zgematrix& operator*=(const  zhsmatrix&);
00114   inline zgematrix& operator*=(const _zhsmatrix&);
00115   inline zgematrix& operator*=(const     double&);
00116   inline zgematrix& operator*=(const     comple&);
00117   
00118   //////// /= ////////
00119   inline zgematrix& operator/=(const     double&);
00120   inline zgematrix& operator/=(const     comple&);
00121 
00122   //////// unary ////////
00123   inline friend const zgematrix& operator+(const zgematrix&);
00124   inline friend _zgematrix operator-(const  zgematrix&);
00125   
00126   //////// + ////////
00127   inline friend _zgematrix operator+(const  zgematrix&, const  zgematrix&);
00128   inline friend _zgematrix operator+(const  zgematrix&, const _zgematrix&);
00129   inline friend _zgematrix operator+(const  zgematrix&, const  zhematrix&);
00130   inline friend _zgematrix operator+(const  zgematrix&, const _zhematrix&);
00131   inline friend _zgematrix operator+(const  zgematrix&, const  zgbmatrix&);
00132   inline friend _zgematrix operator+(const  zgematrix&, const _zgbmatrix&);
00133   inline friend _zgematrix operator+(const  zgematrix&, const  zgsmatrix&);
00134   inline friend _zgematrix operator+(const  zgematrix&, const _zgsmatrix&);
00135   inline friend _zgematrix operator+(const  zgematrix&, const  zhsmatrix&);
00136   inline friend _zgematrix operator+(const  zgematrix&, const _zhsmatrix&);
00137   
00138   //////// - ////////
00139   inline friend _zgematrix operator-(const  zgematrix&, const  zgematrix&);
00140   inline friend _zgematrix operator-(const  zgematrix&, const _zgematrix&);
00141   inline friend _zgematrix operator-(const  zgematrix&, const  zhematrix&);
00142   inline friend _zgematrix operator-(const  zgematrix&, const _zhematrix&);
00143   inline friend _zgematrix operator-(const  zgematrix&, const  zgbmatrix&);
00144   inline friend _zgematrix operator-(const  zgematrix&, const _zgbmatrix&);
00145   inline friend _zgematrix operator-(const  zgematrix&, const  zgsmatrix&);
00146   inline friend _zgematrix operator-(const  zgematrix&, const _zgsmatrix&);
00147   inline friend _zgematrix operator-(const  zgematrix&, const  zhsmatrix&);
00148   inline friend _zgematrix operator-(const  zgematrix&, const _zhsmatrix&);
00149   
00150   //////// * ////////
00151   inline friend _zcovector operator*(const  zgematrix&, const  zcovector&);
00152   inline friend _zcovector operator*(const  zgematrix&, const _zcovector&);
00153   inline friend _zgematrix operator*(const  zgematrix&, const  zgematrix&);
00154   inline friend _zgematrix operator*(const  zgematrix&, const _zgematrix&);
00155   inline friend _zgematrix operator*(const  zgematrix&, const  zhematrix&);
00156   inline friend _zgematrix operator*(const  zgematrix&, const _zhematrix&);
00157   inline friend _zgematrix operator*(const  zgematrix&, const  zgbmatrix&);
00158   inline friend _zgematrix operator*(const  zgematrix&, const _zgbmatrix&);  
00159   inline friend _zgematrix operator*(const  zgematrix&, const  zgsmatrix&);
00160   inline friend _zgematrix operator*(const  zgematrix&, const _zgsmatrix&);
00161   inline friend _zgematrix operator*(const  zgematrix&, const  zhsmatrix&);
00162   inline friend _zgematrix operator*(const  zgematrix&, const _zhsmatrix&);
00163   inline friend _zgematrix operator*(const  zgematrix&, const     double&);
00164   inline friend _zgematrix operator*(const  zgematrix&, const     comple&);
00165   
00166   //////// / ////////
00167   inline friend _zgematrix operator/(const  zgematrix&, const     double&);
00168   inline friend _zgematrix operator/(const  zgematrix&, const     comple&);
00169 
00170   //////// double, comple ////////
00171   inline friend _zgematrix operator*(const     double&, const  zgematrix&);
00172   inline friend _zgematrix operator*(const     comple&, const  zgematrix&);
00173 };
 All Classes Files Functions Variables Friends