CPPLapack
 All Classes Files Functions Variables Friends
dsymatrix.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Real Double-precision Symmetric Matrix Class [l-type (UPLO=l) Strage]
00003 class dsymatrix
00004 {
00005 public:
00006   ///////////////////////////////////////////////
00007   /////////////////// objects ///////////////////
00008   ///////////////////////////////////////////////
00009   long const& m; //!< matrix row size
00010   long n; //!< matrix column size
00011   double* array; //!< 1D array to store matrix data
00012   double** darray; //!< array of pointers of column head addresses
00013   
00014   ///////////////////////////////////////////////
00015   ///////////////// constructors ////////////////
00016   ///////////////////////////////////////////////
00017   inline dsymatrix();
00018   inline dsymatrix(const dsymatrix&);
00019   inline dsymatrix(const _dsymatrix&);
00020   inline dsymatrix(const long&);
00021   inline dsymatrix(const char*);
00022   inline ~dsymatrix(); //destructor
00023   
00024   ///////////////////////////////////////////////
00025   ////////////////// functions //////////////////
00026   ///////////////////////////////////////////////
00027   //////// cast ////////
00028   inline _zhematrix to_zhematrix() const;
00029   inline _dgematrix to_dgematrix() const;
00030   inline _dssmatrix to_dssmatrix(const double eps=-1) const;
00031   
00032   //////// io ////////
00033   inline double& operator()(const long&, const long&);
00034   inline double operator()(const long&, const long&) const;
00035   inline dsymatrix& set(const long&, const long&, const double&);
00036   inline friend std::ostream& operator<<(std::ostream&, const dsymatrix&);
00037   inline void write(const char*) const;
00038   inline void read(const char*);
00039   
00040   //////// misc ////////
00041   inline void complete() const;
00042   inline void clear();
00043   inline dsymatrix& zero();
00044   inline dsymatrix& identity();
00045   inline void chsign();
00046   inline void copy(const dsymatrix&);
00047   inline void shallow_copy(const _dsymatrix&);
00048   inline dsymatrix& resize(const long&);
00049   inline _drovector row(const long&) const;
00050   inline _dcovector col(const long&) const;
00051   inline friend void swap(dsymatrix&, dsymatrix&);
00052   inline friend _dsymatrix _(dsymatrix&);
00053   
00054   //////// calc ////////
00055   inline friend _dsymatrix t(const dsymatrix&);
00056   inline friend _dsymatrix i(const dsymatrix&);
00057   inline friend void idamax(long&, long&, const dsymatrix&);
00058   inline friend double damax(const dsymatrix&);
00059   
00060   //////// lapack ////////
00061   inline long dsysv(dgematrix&);
00062   inline long dsysv(dcovector&);
00063   inline long dsyev(std::vector<double>&, const bool&);
00064   inline long dsyev(std::vector<double>&, std::vector<dcovector>&);
00065   inline long dsyev(std::vector<double>&, std::vector<drovector>&);
00066   inline long dsygv(dsymatrix&, std::vector<double>&);
00067   inline long dsygv(dsymatrix&, std::vector<double>&, std::vector<dcovector>&);
00068   
00069   ///////////////////////////////////////////////
00070   ///////////// numerical operators /////////////
00071   ///////////////////////////////////////////////
00072   //////// = ////////
00073   inline dsymatrix& operator=(const  dsymatrix&);
00074   inline dsymatrix& operator=(const _dsymatrix&);
00075   
00076   //////// += ////////
00077   inline dsymatrix& operator+=(const  dsymatrix&);
00078   inline dsymatrix& operator+=(const _dsymatrix&);
00079   
00080   //////// -= ////////
00081   inline dsymatrix& operator-=(const  dsymatrix&);
00082   inline dsymatrix& operator-=(const _dsymatrix&);
00083   
00084   //////// *= ////////
00085   inline dsymatrix& operator*=(const  dsymatrix&);
00086   inline dsymatrix& operator*=(const _dsymatrix&);
00087   inline dsymatrix& operator*=(const     double&);
00088   
00089   //////// /= ////////
00090   inline dsymatrix& operator/=(const     double&);
00091   
00092   //////// unary ////////
00093   inline friend const dsymatrix& operator+(const dsymatrix&);
00094   inline friend _dsymatrix operator-(const  dsymatrix&);
00095   
00096   //////// + ////////
00097   inline friend _dgematrix operator+(const  dsymatrix&, const  dgematrix&);
00098   inline friend _dgematrix operator+(const  dsymatrix&, const _dgematrix&);
00099   inline friend _dsymatrix operator+(const  dsymatrix&, const  dsymatrix&);
00100   inline friend _dsymatrix operator+(const  dsymatrix&, const _dsymatrix&);
00101   inline friend _dgematrix operator+(const  dsymatrix&, const  dgbmatrix&);
00102   inline friend _dgematrix operator+(const  dsymatrix&, const _dgbmatrix&);
00103   inline friend _dgematrix operator+(const  dsymatrix&, const  dgsmatrix&);
00104   inline friend _dgematrix operator+(const  dsymatrix&, const _dgsmatrix&);
00105   inline friend _dsymatrix operator+(const  dsymatrix&, const  dssmatrix&);
00106   inline friend _dsymatrix operator+(const  dsymatrix&, const _dssmatrix&);
00107   
00108   //////// - ////////
00109   inline friend _dgematrix operator-(const  dsymatrix&, const  dgematrix&);
00110   inline friend _dgematrix operator-(const  dsymatrix&, const _dgematrix&);
00111   inline friend _dsymatrix operator-(const  dsymatrix&, const  dsymatrix&);
00112   inline friend _dsymatrix operator-(const  dsymatrix&, const _dsymatrix&);
00113   inline friend _dgematrix operator-(const  dsymatrix&, const  dgbmatrix&);
00114   inline friend _dgematrix operator-(const  dsymatrix&, const _dgbmatrix&);
00115   inline friend _dgematrix operator-(const  dsymatrix&, const  dgsmatrix&);
00116   inline friend _dgematrix operator-(const  dsymatrix&, const _dgsmatrix&);
00117   inline friend _dsymatrix operator-(const  dsymatrix&, const  dssmatrix&);
00118   inline friend _dsymatrix operator-(const  dsymatrix&, const _dssmatrix&);
00119   
00120   //////// * ////////
00121   inline friend _dcovector operator*(const  dsymatrix&, const  dcovector&);
00122   inline friend _dcovector operator*(const  dsymatrix&, const _dcovector&);
00123   inline friend _dgematrix operator*(const  dsymatrix&, const  dgematrix&);
00124   inline friend _dgematrix operator*(const  dsymatrix&, const _dgematrix&);
00125   inline friend _dgematrix operator*(const  dsymatrix&, const  dsymatrix&);
00126   inline friend _dgematrix operator*(const  dsymatrix&, const _dsymatrix&);
00127   inline friend _dgematrix operator*(const  dsymatrix&, const  dgbmatrix&);
00128   inline friend _dgematrix operator*(const  dsymatrix&, const _dgbmatrix&);
00129   inline friend _dgematrix operator*(const  dsymatrix&, const  dgsmatrix&);
00130   inline friend _dgematrix operator*(const  dsymatrix&, const _dgsmatrix&);
00131   inline friend _dsymatrix operator*(const  dsymatrix&, const  dssmatrix&);
00132   inline friend _dsymatrix operator*(const  dsymatrix&, const _dssmatrix&);
00133   inline friend _dsymatrix operator*(const  dsymatrix&, const     double&);
00134   
00135   //////// / ////////
00136   inline friend _dsymatrix operator/(const  dsymatrix&, const     double&);
00137   
00138   //////// double ////////
00139   inline friend _dsymatrix operator*(const     double&, const  dsymatrix&);
00140 };
 All Classes Files Functions Variables Friends