matrices.h

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

Generated on Thu Sep 28 09:38:08 2006 by  doxygen 1.4.7