Go to the documentation of this file.00001
00002
00003 template<long n> class dsymatrix_small
00004 {
00005 public:
00006
00007
00008
00009 double array[(n*(n+1))/2];
00010
00011
00012
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
00021
00022
00023 inline dgematrix_small<n,n> to_dgematrix_small() const;
00024 inline dsymatrix to_dsymatrix() const;
00025
00026
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
00035 inline dsymatrix_small<n>& zero();
00036 inline dsymatrix_small<n>& identity();
00037
00038
00039
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
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
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&);