src/work/alpar/matrix.cc
changeset 1365 c280de819a73
parent 1364 ee5959aa4410
child 1366 d00b85f8be45
     1.1 --- a/src/work/alpar/matrix.cc	Sun Apr 17 18:57:22 2005 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,75 +0,0 @@
     1.4 -#include <lemon/time_measure.h>
     1.5 -#include <vector>
     1.6 -
     1.7 -template<class T>
     1.8 -class Matrix 
     1.9 -{
    1.10 -public:
    1.11 -  int m,n;
    1.12 -  std::vector<T> values;
    1.13 -  
    1.14 -  Matrix(int _m, int _n) : m(_m), n(_n), values(n*m) {}
    1.15 -  typename std::vector<T>::reference operator()(int i, int j)
    1.16 -  { return values[i*n+j];}
    1.17 -
    1.18 -  class Row 
    1.19 -  {
    1.20 -  public:
    1.21 -    Matrix<T> &mat;
    1.22 -    int row;
    1.23 -    
    1.24 -    Row(Matrix<T> &_mat,int _row) : mat(_mat), row(_row) {}
    1.25 -    typename std::vector<T>::reference operator()(int j)
    1.26 -    { return mat.values[row*mat.n+j];}
    1.27 -  };
    1.28 -  class Column 
    1.29 -  {
    1.30 -  public:
    1.31 -    Matrix<T> &mat;
    1.32 -    int col;
    1.33 -    
    1.34 -    Column(Matrix<T> &_mat,int _col) : mat(_mat), col(_col) {}
    1.35 -    typename std::vector<T>::reference operator[](int i)
    1.36 -    { return mat.values[i*mat.n+col];}
    1.37 -  };
    1.38 -  
    1.39 -  Row operator[](int i) { return Row(*this,i); }
    1.40 -  Column operator()(int j) { return Column(*this,j); }
    1.41 -};
    1.42 -
    1.43 -main() 
    1.44 -{
    1.45 -  const int COUNT=1000000;
    1.46 -  const int SIZE=100;
    1.47 -  
    1.48 -  Matrix<int> A(SIZE,SIZE);
    1.49 -  
    1.50 -  for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) A(i,j)=i+j;
    1.51 -
    1.52 -  int s=0;
    1.53 -  lemon::Timer T;
    1.54 -  for(int c=0;c<COUNT;c++) {
    1.55 -    for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) s+=A[i](j);
    1.56 -  }
    1.57 -  std::cout << "A[i](j): " << T << ' ' << s <<'\n';
    1.58 -  s=0;
    1.59 -  T.reset();
    1.60 -  for(int c=0;c<COUNT;c++) {
    1.61 -    for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) s+=A(i,j);
    1.62 -  }
    1.63 -  std::cout << "A(i,j): " << T << ' ' << s << '\n';
    1.64 -  s=0;
    1.65 -  T.reset();
    1.66 -  for(int c=0;c<COUNT;c++) {
    1.67 -    for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) s+=A(j)[i];
    1.68 -  }
    1.69 -  std::cout << "A(j)[i]: " << T << ' ' << s << '\n';
    1.70 -  s=0;
    1.71 -  T.reset();
    1.72 -  for(int c=0;c<COUNT;c++) {
    1.73 -    for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) s+=A(i,j);
    1.74 -  }
    1.75 -  std::cout << "A(j,i): " << T << ' ' << s << "\n\n";
    1.76 -
    1.77 -  return 0;
    1.78 -}