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