00001
00002
00003 template<long m, long n> class zgematrix_small
00004 {
00005 public:
00006
00007
00008
00009 comple array[m*n];
00010
00011
00012
00013
00014 inline zgematrix_small();
00015 inline explicit zgematrix_small(const zgematrix&);
00016 inline zgematrix_small(const comple&);
00017 inline ~zgematrix_small();
00018
00019
00020
00021
00022
00023 inline _zgematrix to_zgematrix() const;
00024
00025
00026 inline comple& operator()(const long& i, const long& j);
00027 inline comple operator()(const long& i, const long& j) const;
00028 inline zgematrix_small<m,n>& set(const long& i, const long& j, const comple& v);
00029 template<long _m, long _n> inline friend std::ostream& operator<<(std::ostream&, const zgematrix_small<_m,_n>&);
00030 inline void read(const char* filename);
00031 inline void write(const char* filename) const;
00032
00033
00034 template<long _m, long _n> inline friend zgematrix_small<n,m> t(const zgematrix_small<m,n>&);
00035
00036
00037 inline zgematrix_small<m,n>& zero();
00038 inline zgematrix_small<m,n>& identity();
00039 inline zcovector_small<m> col(const long& j) const;
00040 inline zrovector_small<n> row(const long& i) const;
00041
00042
00043
00044
00045
00046 template<long M, long N> inline zgematrix_small<M,N>& operator= (const zgematrix_small<M,N>&);
00047
00048 template<long M, long N> inline friend zgematrix_small<M,N>& operator+=(zgematrix_small<M,N>&, const zgematrix_small<M,N>&);
00049
00050 template<long M, long N> inline friend zgematrix_small<M,N>& operator-=(zgematrix_small<M,N>&, const zgematrix_small<M,N>&);
00051
00052 template<long M, long L, long N> inline friend zgematrix_small<M,N>& operator*=(zgematrix_small<M,L>&, const zgematrix_small<L,N>&);
00053 template<long M, long N> inline friend zgematrix_small<M,N>& operator*=(zgematrix_small<M,N>&, const comple&);
00054
00055 template<long M, long N> inline friend zgematrix_small<M,N>& operator/=(zgematrix_small<M,N>&, const comple&);
00056
00057 template<long M, long N> inline friend const zgematrix_small<M,N>& operator+(const zgematrix_small<M,N>&);
00058 template<long M, long N> inline friend zgematrix_small<M,N> operator-(const zgematrix_small<M,N>&);
00059
00060 template<long M, long N> inline friend zgematrix_small<M,N> operator+(const zgematrix_small<M,N>&, const zgematrix_small<M,N>&);
00061 template<long M, long N> inline friend zgematrix_small<M,N> operator+(const zgematrix_small<M,N>&, const zhematrix_small< N >&);
00062
00063 template<long M, long N> inline friend zgematrix_small<M,N> operator-(const zgematrix_small<M,N>&, const zgematrix_small<M,N>&);
00064 template<long M, long N> inline friend zgematrix_small<M,N> operator-(const zgematrix_small<M,N>&, const zhematrix_small< N >&);
00065
00066 template<long M, long N> inline friend zcovector_small< M > operator*(const zgematrix_small<M,N>&, const zcovector_small< N >&);
00067 template<long M, long L, long N> inline friend zgematrix_small<M,N> operator*(const zgematrix_small<M,L>&, const zgematrix_small<L,N>&);
00068 template<long M, long N> inline friend zgematrix_small<M,N> operator*(const zgematrix_small<M,N>&, const zhematrix_small< N >&);
00069 template<long M, long N> inline friend zgematrix_small<M,N> operator*(const zgematrix_small<M,N>&, const comple&);
00070
00071 template<long M, long N> inline friend zgematrix_small<M,N> operator/(const zgematrix_small<M,N>&, const comple&);
00072
00073 template<long M, long N> inline friend zgematrix_small<M,N> operator*(const comple&, const zgematrix_small<M,N>&);
00074 };
00075
00076
00077
00078
00079
00080 inline comple det(const zgemat2&);
00081 inline zgemat2 inv(const zgemat2&);
00082 inline comple det(const zgemat3&);
00083 inline zgemat3 inv(const zgemat3&);