CPPLapack
 All Classes Files Functions Variables Friends Pages
dsymatrix_small.hpp
Go to the documentation of this file.
1 //=============================================================================
2 //! Samll Real Double-precision Symmetric Matrix Class
3 template<CPPL_INT n> class dsymatrix_small
4 {
5 public:
6  ///////////////////////////////////////////////
7  /////////////////// objects ///////////////////
8  ///////////////////////////////////////////////
9  double array[(n*(n+1))/2]; //!< 1D array to store vector data
10 
11  ///////////////////////////////////////////////
12  ///////////////// constructors ////////////////
13  ///////////////////////////////////////////////
14  inline dsymatrix_small();
15  inline explicit dsymatrix_small(const dsymatrix&);
16  inline ~dsymatrix_small();
17 
18  ///////////////////////////////////////////////
19  ////////////////// functions //////////////////
20  ///////////////////////////////////////////////
21  //////// cast ////////
23  inline dsymatrix to_dsymatrix() const;
24 
25  //////// io ////////
26  inline double& operator()(const CPPL_INT& i, const CPPL_INT& j);
27  inline double operator()(const CPPL_INT& i, const CPPL_INT& j) const;
28  inline dsymatrix_small<n>& set(const CPPL_INT&, const CPPL_INT&, const double&);
29  template<CPPL_INT _n> inline friend std::ostream& operator<<(std::ostream&, const dsymatrix_small<_n>&);
30  inline void read(const char* filename);
31  inline void write(const char* filename) const;
32 
33  //////// misc ////////
34  inline dsymatrix_small<n>& zero();
35  inline dsymatrix_small<n>& identity();
36 
37  ///////////////////////////////////////////////
38  ///////////// numerical operators /////////////
39  ///////////////////////////////////////////////
40 #ifndef _MSC_VER
41  //////// = ////////
42  template<CPPL_INT N> inline dsymatrix_small<N>& operator= (const dsymatrix_small<N>&);
43  //////// += ////////
44  template<CPPL_INT N> inline friend dsymatrix_small<N>& operator+=(dsymatrix_small<N>&, const dsymatrix_small<N>&);
45  //////// -= ////////
46  template<CPPL_INT N> inline friend dsymatrix_small<N>& operator-=(dsymatrix_small<N>&, const dsymatrix_small<N>&);
47  //////// *= ////////
48  template<CPPL_INT N> inline friend dsymatrix_small<N>& operator*=(dsymatrix_small<N>&, const dsymatrix_small<N>&);
49  template<CPPL_INT N> inline friend dsymatrix_small<N>& operator*=(dsymatrix_small<N>&, const double&);
50  //////// /= ////////
51  template<CPPL_INT N> inline friend dsymatrix_small<N>& operator/=(dsymatrix_small<N>&, const double&);
52  //////// unary ////////
53  template<CPPL_INT N> inline friend const dsymatrix_small<N>& operator+(const dsymatrix_small<N>&);
54  template<CPPL_INT N> inline friend dsymatrix_small< N > operator-(const dsymatrix_small<N>&);
55  //////// + ////////
56  template<CPPL_INT N> inline friend dgematrix_small<N,N> operator+(const dsymatrix_small<N>&, const dgematrix_small<N,N>&);
57  template<CPPL_INT N> inline friend dsymatrix_small< N > operator+(const dsymatrix_small<N>&, const dsymatrix_small< N >&);
58  //////// - ////////
59  template<CPPL_INT N> inline friend dgematrix_small<N,N> operator-(const dsymatrix_small<N>&, const dgematrix_small<N,N>&);
60  template<CPPL_INT N> inline friend dsymatrix_small< N > operator-(const dsymatrix_small<N>&, const dsymatrix_small< N >&);
61  //////// * ////////
62  template<CPPL_INT N> inline friend dcovector_small< N > operator*(const dsymatrix_small<N>&, const dcovector_small< N >&);
63  template<CPPL_INT M, CPPL_INT N> inline friend dgematrix_small<M,N> operator*(const dsymatrix_small<M>&, const dgematrix_small<M,N>&);
64  template<CPPL_INT N> inline friend dgematrix_small<N,N> operator*(const dsymatrix_small<N>&, const dsymatrix_small< N >&);
65  template<CPPL_INT N> inline friend dsymatrix_small< N > operator*(const dsymatrix_small<N>&, const double&);
66  //////// / ////////
67  template<CPPL_INT N> inline friend dsymatrix_small< N > operator/(const dsymatrix_small<N>&, const double&);
68  //////// double ////////
69  template<CPPL_INT N> inline friend dsymatrix_small< N > operator*(const double&, const dsymatrix_small< N >&);
70  //////// hadamerd ////////
71  template<CPPL_INT N> inline friend dsymatrix_small< N > hadamerd(const dsymatrix_small<N>&, const dgematrix_small<N,N>&);
72  template<CPPL_INT N> inline friend dsymatrix_small< N > hadamerd(const dsymatrix_small<N>&, const dsymatrix_small< N >&);
73 #endif//_MSC_VER
74 };
75 
76 ///////////////////////////////////////////////////////////////////////////////
77 ///////////////////////////////////////////////////////////////////////////////
78 ///////////////////////////////////////////////////////////////////////////////
79 
80 inline double det(const dsymat2&);
81 inline dsymat2 inv(const dsymat2&);
82 inline dsymat2 rotate(const dsymat2&, const double&);
83 
84 inline double det(const dsymat3&);
85 inline dsymat3 inv(const dsymat3&);
86 inline dsymat3 rotate(const dsymat3&, const dquater&);
friend dsymatrix_small< N > & operator/=(dsymatrix_small< N > &, const double &)
void write(const char *filename) const
Samll Real Double-precision Symmetric Matrix Class.
dsymatrix_small< n > & identity()
Samll Real Double-precision General Dence Matrix Class.
dgematrix_small< n, n > to_dgematrix_small() const
friend dsymatrix_small< N > & operator*=(dsymatrix_small< N > &, const dsymatrix_small< N > &)
_dgematrix i(const _dgbmatrix &mat)
dsymatrix to_dsymatrix() const
friend dsymatrix_small< N > operator/(const dsymatrix_small< N > &, const double &)
Real Double-precision Symmetric Matrix Class [l-type (UPLO=l) Strage].
Definition: dsymatrix.hpp:3
dsymatrix_small< N > & operator=(const dsymatrix_small< N > &)
dsymatrix_small< n > & set(const CPPL_INT &, const CPPL_INT &, const double &)
dsymat2 inv(const dsymat2 &)
friend dsymatrix_small< N > & operator+=(dsymatrix_small< N > &, const dsymatrix_small< N > &)
friend dcovector_small< N > operator*(const dsymatrix_small< N > &, const dcovector_small< N > &)
void read(const char *filename)
Samll Real Double-precision Column Vector Class.
double & operator()(const CPPL_INT &i, const CPPL_INT &j)
friend const dsymatrix_small< N > & operator+(const dsymatrix_small< N > &)
dsymatrix_small< n > & zero()
double det(const dsymat2 &)
dsymat2 rotate(const dsymat2 &, const double &)
friend dsymatrix_small< N > hadamerd(const dsymatrix_small< N > &, const dgematrix_small< N, N > &)
double array[(n *(n+1))/2]
1D array to store vector data
friend dsymatrix_small< N > & operator-=(dsymatrix_small< N > &, const dsymatrix_small< N > &)
friend dsymatrix_small< N > operator-(const dsymatrix_small< N > &)