CPPLapack
 All Classes Files Functions Variables Friends
zhematrix_small.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Samll Complex Double-precision Symmetric Matrix Class
00003 template<long n> class zhematrix_small
00004 {
00005 public:
00006   ///////////////////////////////////////////////
00007   /////////////////// objects ///////////////////
00008   ///////////////////////////////////////////////
00009   comple array[(n*(n+1))/2];
00010   
00011   ///////////////////////////////////////////////
00012   ///////////////// constructors ////////////////
00013   ///////////////////////////////////////////////
00014   inline zhematrix_small();
00015   inline explicit zhematrix_small(const zhematrix&);
00016   inline zhematrix_small(const comple&);
00017   inline ~zhematrix_small();
00018   
00019   ///////////////////////////////////////////////
00020   ////////////////// functions //////////////////
00021   ///////////////////////////////////////////////
00022   //////// cast ////////
00023   inline zgematrix_small<n,n> to_zgematrix_small() const;
00024   inline zhematrix to_zhematrix() const;
00025   
00026   //////// io ////////
00027   inline comple& operator()(const long& i, const long& j);
00028   inline comple  operator()(const long& i, const long& j) const;
00029   inline zhematrix_small<n>& set(const long&, const long&, const comple&);
00030   template<long _n> inline friend std::ostream& operator<<(std::ostream&, const zhematrix_small<_n>&);
00031   inline void read(const char* filename);
00032   inline void write(const char* filename) const;
00033   
00034   //////// misc ////////
00035   inline zhematrix_small<n>& zero();
00036   inline zhematrix_small<n>& identity();
00037   
00038   ///////////////////////////////////////////////
00039   ///////////// numerical operators /////////////
00040   ///////////////////////////////////////////////
00041   //////// = ////////
00042   template<long N> inline zhematrix_small<N>& operator= (const zhematrix_small<N>&);
00043   //////// += ////////
00044   template<long N> inline friend zhematrix_small<N>& operator+=(zhematrix_small<N>&, const zhematrix_small<N>&);
00045   //////// -= ////////
00046   template<long N> inline friend zhematrix_small<N>& operator-=(zhematrix_small<N>&, const zhematrix_small<N>&);
00047   //////// *= ////////
00048   template<long N> inline friend zhematrix_small<N>& operator*=(zhematrix_small<N>&, const zhematrix_small<N>&);
00049   template<long N> inline friend zhematrix_small<N>& operator*=(zhematrix_small<N>&, const             comple&);
00050   //////// /= ////////
00051   template<long N> inline friend zhematrix_small<N>& operator/=(zhematrix_small<N>&, const             comple&);
00052   //////// unary ////////
00053   template<long N> inline friend const zhematrix_small<N>& operator+(const zhematrix_small<N>&);
00054   template<long N> inline friend zhematrix_small< N > operator-(const zhematrix_small<N>&);
00055   //////// + ////////
00056   template<long N> inline friend zgematrix_small<N,N> operator+(const zhematrix_small<N>&, const zgematrix_small<N,N>&);
00057   template<long N> inline friend zhematrix_small< N > operator+(const zhematrix_small<N>&, const zhematrix_small< N >&);
00058   //////// - ////////
00059   template<long N> inline friend zgematrix_small<N,N> operator-(const zhematrix_small<N>&, const zgematrix_small<N,N>&);
00060   template<long N> inline friend zhematrix_small< N > operator-(const zhematrix_small<N>&, const zhematrix_small< N >&);
00061   //////// * ////////
00062   template<long N> inline friend zcovector_small< N > operator*(const zhematrix_small<N>&, const zcovector_small< N >&);
00063   template<long N> inline friend zgematrix_small<N,N> operator*(const zhematrix_small<N>&, const zgematrix_small<N,N>&);
00064   template<long N> inline friend zgematrix_small<N,N> operator*(const zhematrix_small<N>&, const zhematrix_small< N >&);
00065   template<long N> inline friend zhematrix_small< N > operator*(const zhematrix_small<N>&, const               comple&);
00066   //////// / ////////
00067   template<long N> inline friend zhematrix_small< N > operator/(const zhematrix_small<N>&, const               comple&);
00068   //////// comple ////////
00069   template<long N> inline friend zhematrix_small< N > operator*(const             comple&, const zhematrix_small< N >&);
00070 };
00071 
00072 ///////////////////////////////////////////////////////////////////////////////
00073 ///////////////////////////////////////////////////////////////////////////////
00074 ///////////////////////////////////////////////////////////////////////////////
00075 
00076 inline comple det(const zhemat2&);
00077 inline zhemat2 inv(const zhemat2&);
00078 inline comple det(const zhemat3&);
00079 inline zhemat3 inv(const zhemat3&);
 All Classes Files Functions Variables Friends