00001 #ifndef MATRICES_H 00002 #define MATRICES_H 00003 /* 00004 _____ _____ __ __ _ _ 00005 / ____/ ____| \/ | | | (_) 00006 | (___| (___ | \ / | __ _| |_ _ __ ___ __ 00007 \___ \\___ \| |\/| |/ _` | __| '__| \ \/ / 00008 ____) |___) | | | | (_| | |_| | | |> < 00009 |_____/_____/|_| |_|\__,_|\__|_| |_/_/\_\ 00010 */ 00011 #include "global.h" 00013 00016 class SSMatrix 00017 { 00018 public : 00020 00021 float ** _Values; 00023 int _NbLines; 00025 int _NbColumns; 00026 00028 00029 SSMatrix(); 00031 SSMatrix(SSMatrix& M); 00033 SSMatrix(int Size, int InitMode); 00035 SSMatrix(int NbLines, int NbColumns, int InitMode); 00037 ~SSMatrix(); 00039 Destroy(); 00041 SSMatrix& Redim(int NbLines,int NbColumns); 00043 SSMatrix& Multiply(float scalar); 00045 SSMatrix& Multiply(const SSMatrix& B); 00047 SSMatrix& Multiply(const SSMatrix& B,const SSMatrix& C); 00049 SSMatrix& Kronecker(const SSMatrix& B); 00051 SSMatrix& Kronecker(const SSMatrix& B,const SSMatrix& C); 00053 Print(); 00054 00056 SSMatrix& operator=(const SSMatrix& m) 00057 { 00058 Destroy(); 00059 _NbLines = m._NbLines; 00060 _NbColumns = m._NbColumns; 00061 _Values = new float*[_NbLines]; 00062 for (int i=0; i<_NbLines ; i++) 00063 { 00064 _Values[i] = new float[_NbColumns]; 00065 for (int j=0; j<_NbColumns ; j++) 00066 { 00067 _Values[i][j] = m._Values[i][j]; 00068 } 00069 } 00070 return *this; 00071 }; 00072 00074 bool operator==(const SSMatrix& m) 00075 { 00076 bool equal = false; 00077 int i=0; 00078 int j=0; 00079 if((_NbLines == m._NbLines)&&(_NbColumns == m._NbColumns)) 00080 { 00081 equal = true; 00082 while((equal)&&(i<_NbLines)) 00083 { 00084 while((equal)&&(j<_NbColumns)) 00085 { 00086 equal = (_Values[i][j] == m._Values[i][j]); 00087 j++; 00088 } 00089 i++; 00090 j=0; 00091 } 00092 } 00093 return equal; 00094 }; 00095 }; 00096 #endif