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