diff options
author | Pav Lucistnik <pav@FreeBSD.org> | 2006-12-01 09:55:32 +0000 |
---|---|---|
committer | Pav Lucistnik <pav@FreeBSD.org> | 2006-12-01 09:55:32 +0000 |
commit | 95465b01db26cdfe513eaac771267c536fabeca3 (patch) | |
tree | 023ce3e0a24c427f5a51e479107d031760d6cecb /graphics/nurbs++/files/patch-matrix.cpp | |
parent | 4d92dbaac9e4b474e7d65cb678a7bd1baf0d5c8f (diff) |
Notes
Diffstat (limited to 'graphics/nurbs++/files/patch-matrix.cpp')
-rw-r--r-- | graphics/nurbs++/files/patch-matrix.cpp | 377 |
1 files changed, 377 insertions, 0 deletions
diff --git a/graphics/nurbs++/files/patch-matrix.cpp b/graphics/nurbs++/files/patch-matrix.cpp new file mode 100644 index 000000000000..65cd52a5b6c7 --- /dev/null +++ b/graphics/nurbs++/files/patch-matrix.cpp @@ -0,0 +1,377 @@ +--- matrix/matrix.cpp.orig Mon May 13 14:07:45 2002 ++++ matrix/matrix.cpp Thu Nov 30 23:43:36 2006 +@@ -54,19 +54,19 @@ + if ( this == &a ) + return *this; + +- if ( a.rows() != rows() || a.cols() != cols() ){ ++ if ( a.rows() != this->rows() || a.cols() != this->cols() ){ + resize(a.rows(),a.cols()) ; + } + +- int sze = rows()*cols() ; ++ int sze = this->rows()*this->cols() ; + T *ptr, *aptr ; +- ptr = m-1 ; ++ ptr = this->m-1 ; + aptr = a.m-1 ; + + for (i = sze; i > 0; --i) + *(++ptr) = *(++aptr) ; + +- by_columns = a.by_columns; ++ this->by_columns = a.by_columns; + + return *this; + } +@@ -100,10 +100,10 @@ + { + int rwz,coz,i,j; + +- if ( rows() % a.rows() != 0 || cols() % a.cols() != 0 || rows() < a.rows() || cols() < a.cols() ) ++ if ( this->rows() % a.rows() != 0 || this->cols() % a.cols() != 0 || this->rows() < a.rows() || this->cols() < a.cols() ) + { + #ifdef USE_EXCEPTION +- throw WrongSize2D(rows(),cols(),a.rows(),a.cols()) ; ++ throw WrongSize2D(this->rows(),this->cols(),a.rows(),a.cols()) ; + #else + Error error("Matrix<T>::submatrix"); + error << "Matrix and submatrix incommensurate" ; +@@ -111,10 +111,10 @@ + #endif + } + +- if ( sr >= rows()/a.rows() || sr < 0 || sc >= cols()/a.cols() || sc < 0 ) ++ if ( sr >= this->rows()/a.rows() || sr < 0 || sc >= this->cols()/a.cols() || sc < 0 ) + { + #ifdef USE_EXCEPTION +- throw OutOfBound2D(sr,sc,0,rows()/a.rows()-1,0,cols()/a.cols()-1) ; ++ throw OutOfBound2D(sr,sc,0,this->rows()/a.rows()-1,0,this->cols()/a.cols()-1) ; + #else + Error error("Matrix<T>::submatrix"); + error << "Submatrix location out of bounds.\nrowblock " << sr << ", " << rows()/a.rows() << " colblock " << sc << ", " << a.cols() << endl ; +@@ -133,7 +133,7 @@ + aptr = a.m - 1; + for ( i = a.rows()-1; i >= 0; --i ) + { +- ptr = &m[(i+rwz)*cols()+coz]-1 ; ++ ptr = &this->m[(i+rwz)*this->cols()+coz]-1 ; + for ( j = a.cols(); j > 0; --j) + *(++ptr) = *(++aptr) ; + } +@@ -159,7 +159,7 @@ + // Assign matrix a to this matrix at (i,j) + int i, j; + +- if ( (rw + a.rows()) > rows() || ( cl + a.cols()) > cols()) { ++ if ( (rw + a.rows()) > this->rows() || ( cl + a.cols()) > this->cols()) { + #ifdef USE_EXCEPTION + throw MatrixErr(); + #else +@@ -177,7 +177,7 @@ + T *pptr,*aptr ; + aptr = a.m-1 ; + for ( i = 0; i<a.rows(); ++i) { +- pptr = &m[(i+rw)*cols()+cl]-1 ; ++ pptr = &this->m[(i+rw)*this->cols()+cl]-1 ; + for ( j = 0; j < a.cols(); ++j) + *(++pptr) = *(++aptr); + } +@@ -208,7 +208,7 @@ + Matrix<T> Matrix<T>::get(int rw, int cl, int nr, int nc) const + { + Matrix<T> getmat(nr,nc) ; +- if ( (rw+nr) > rows() || (cl+nc) > cols()) { ++ if ( (rw+nr) > this->rows() || (cl+nc) > this->cols()) { + #ifdef USE_EXCEPTION + throw MatrixErr(); + #else +@@ -228,7 +228,7 @@ + T *pptr,*aptr ; + aptr = getmat.m-1; + for (i = 0; i < nr; ++i) { +- pptr = &m[(i+rw)*cols()+cl]-1 ; ++ pptr = &this->m[(i+rw)*this->cols()+cl]-1 ; + for ( j = 0; j < nc; ++j) + *(++aptr) = *(++pptr) ; + } +@@ -252,11 +252,11 @@ + double sum, maxsum; + int init=0 ; + T *pptr ; +- pptr = m-1 ; ++ pptr = this->m-1 ; + maxsum = 0 ; // Silence the warning message +- for(i=0;i<rows();++i){ ++ for(i=0;i<this->rows();++i){ + sum = 0 ; +- for ( j = 0; j < cols(); ++j) ++ for ( j = 0; j < this->cols(); ++j) + sum += *(++pptr) ; + if(init) + maxsum = (maxsum>sum) ? maxsum : sum; +@@ -285,12 +285,12 @@ + { + int i, iend; + +- iend = rows(); +- if ( iend > cols() ) +- iend = cols(); ++ iend = this->rows(); ++ if ( iend > this->cols() ) ++ iend = this->cols(); + + for (i = iend-1; i >=0; --i) +- elem(i,i) = a; ++ this->elem(i,i) = a; + + } + +@@ -308,10 +308,10 @@ + template <class T> + Vector<T> Matrix<T>::getDiag(){ + int i, iend; +- Vector<T> vec(minimum(rows(),cols())) ; +- iend = minimum(rows(),cols()); ++ Vector<T> vec(minimum(this->rows(),this->cols())) ; ++ iend = minimum(this->rows(),this->cols()); + for (i = iend-1; i >=0; --i) +- vec[i] = elem(i,i); ++ vec[i] = this->elem(i,i); + return vec ; + } + +@@ -328,8 +328,8 @@ + Matrix<T>& Matrix<T>::operator+=(double a) + { + T *p1 ; +- p1 = m-1 ; +- const int size = rows()*cols() ; ++ p1 = this->m-1 ; ++ const int size = this->rows()*this->cols() ; + for(int i=size; i>0; --i) + *(++p1) += a ; + return *this ; +@@ -348,8 +348,8 @@ + Matrix<T>& Matrix<T>::operator-=(double a) + { + T *p1 ; +- p1 = m-1 ; +- const int size = rows()*cols() ; ++ p1 = this->m-1 ; ++ const int size = this->rows()*this->cols() ; + for(int i=size; i>0; --i) + *(++p1) -= a ; + return *this ; +@@ -368,8 +368,8 @@ + Matrix<T>& Matrix<T>::operator*=(double a) + { + T *p1 ; +- p1 = m-1 ; +- const int size = rows()*cols() ; ++ p1 = this->m-1 ; ++ const int size = this->rows()*this->cols() ; + for(int i=size; i>0; --i) + *(++p1) *= a ; + return *this ; +@@ -388,8 +388,8 @@ + Matrix<T>& Matrix<T>::operator/=(double a) + { + T *p1 ; +- p1 = m-1 ; +- const int size = rows()*cols() ; ++ p1 = this->m-1 ; ++ const int size = this->rows()*this->cols() ; + for(int i=size; i>0; --i) + *(++p1) /= a ; + return *this ; +@@ -408,15 +408,15 @@ + template <class T> + Matrix<T>& Matrix<T>::operator+=(const Matrix<T> &a) + { +- if ( a.rows() != rows() || a.cols() != cols() ) ++ if ( a.rows() != this->rows() || a.cols() != this->cols() ) + { + #ifdef USE_EXCEPTION +- throw WrongSize2D(rows(),cols(),a.rows(),a.cols()); ++ throw WrongSize2D(this->rows(),this->cols(),a.rows(),a.cols()); + #else + Error error("Matrix<T>::operator+=") ; +- if ( rows() != a.rows() ) ++ if ( this->rows() != a.rows() ) + error << "Matrices are of diferent size, a.rows() = " << rows() << " and b.rows() = " << a.rows() << endl ; +- if ( cols() != a.cols()) ++ if ( this->cols() != a.cols()) + error << "Matrices are of diferent size, a.cols() = " << cols() << " and b.cols() = " << a.cols() << endl ; + error.fatal() ; + #endif +@@ -425,8 +425,8 @@ + int i, sze ; + T *aptr,*sptr ; + aptr = a.m - 1 ; +- sptr = m - 1 ; +- sze = rows()*cols() ; ++ sptr = this->m - 1 ; ++ sze = this->rows()*this->cols() ; + for (i = sze; i > 0; --i){ + *(++sptr) += *(++aptr) ; + } +@@ -468,16 +468,16 @@ + template <class T> + Matrix<T>& Matrix<T>::operator-=(const Matrix<T> &a) + { +- if ( a.rows() != rows() || a.cols() != cols() ) ++ if ( a.rows() != this->rows() || a.cols() != this->cols() ) + { + #ifdef USE_EXCEPTION +- throw WrongSize2D(rows(),cols(),a.rows(),a.cols()); ++ throw WrongSize2D(this->rows(),this->cols(),a.rows(),a.cols()); + #else + Error error("Matrix<T>::operator-=") ; +- if ( rows() != a.rows() ) +- error << "Matrices are of diferent size, a.rows() = " << rows() << " and b.rows() = " << a.rows() << endl ; +- if ( cols() != a.cols()) +- error << "Matrices are of diferent size, a.cols() = " << cols() << " and b.cols() = " << a.cols() << endl ; ++ if ( this->rows() != a.rows() ) ++ error << "Matrices are of diferent size, a.rows() = " << this->rows() << " and b.rows() = " << a.rows() << endl ; ++ if ( this->cols() != a.cols()) ++ error << "Matrices are of diferent size, a.cols() = " << this->cols() << " and b.cols() = " << a.cols() << endl ; + error.fatal() ; + #endif + } +@@ -485,8 +485,8 @@ + int i, size; + T *aptr,*sptr ; + aptr = a.m - 1 ; +- sptr = m - 1 ; +- size = rows()*cols() ; ++ sptr = this->m - 1 ; ++ size = this->rows()*this->cols() ; + for (i = size; i > 0; --i){ + *(++sptr) -= *(++aptr) ; + } +@@ -742,14 +742,14 @@ + template <class T> + T Matrix<T>::trace() const + { +- int size = rows(); ++ int size = this->rows(); + T sum = (T)0; + +- if ( size > cols() ) +- size = cols(); ++ if ( size > this->cols() ) ++ size = this->cols(); + + for (int d = 0; d < size; ++d) +- sum += elem(d,d) ; ++ sum += this->elem(d,d) ; + + return sum; + } +@@ -770,12 +770,12 @@ + template <class T> + Matrix<T> Matrix<T>::herm() const + { +- int i, j, r = cols(), c = rows(); ++ int i, j, r = this->cols(), c = this->rows(); + Matrix<T> adj(r,c); + + for (i = 0; i < r; ++i) + for (j = 0; j < c; ++j) +- adj.elem(i,j) = elem(j,i) ; ++ adj.elem(i,j) = this->elem(j,i) ; + + return adj; + +@@ -794,11 +794,11 @@ + template <class T> + Matrix<T> Matrix<T>::flop() const + { +- Matrix<T> f(rows(),cols()) ; +- for(int i=rows()-1;i>=0;--i) +- for(int j=cols()-1;j>=0;--j) ++ Matrix<T> f(this->rows(),this->cols()) ; ++ for(int i=this->rows()-1;i>=0;--i) ++ for(int j=this->cols()-1;j>=0;--j) + { +- f(i,j) = elem(i,cols()-j-1); ++ f(i,j) = this->elem(i,this->cols()-j-1); + } + return f; + } +@@ -817,13 +817,13 @@ + { + // same as hermitian for real Matrix<T> + int i, j; +- const int& r = cols(); +- const int& c = rows(); ++ const int& r = this->cols(); ++ const int& c = this->rows(); + Matrix<T> adj(r,c); + + for (i = r-1; i >=0; --i) + for (j = c-1; j >=0; --j) +- adj.elem(i,j) = elem(j,i) ; ++ adj.elem(i,j) = this->elem(j,i) ; + + + return adj; +@@ -844,7 +844,7 @@ + int Matrix<T>::read(char* filename) { + ifstream fin(filename) ; + if(!fin) { +- resize(1,1) ; ++ this->resize(1,1) ; + return 0 ; + } + int r,c ; +@@ -855,8 +855,8 @@ + if(r) return 0 ; + if(!fin.read((char*)&r,sizeof(int))) return 0 ; + if(!fin.read((char*)&c,sizeof(int))) return 0 ; +- resize(r,c) ; +- if(!fin.read((char*)m,sizeof(T)*r*c)) return 0 ; ++ this->resize(r,c) ; ++ if(!fin.read((char*)this->m,sizeof(T)*r*c)) return 0 ; + + delete []type ; + return 1 ; +@@ -877,11 +877,11 @@ + int Matrix<T>::read(char* filename,int r, int c) { + ifstream fin(filename) ; + if(!fin) { +- resize(1,1) ; ++ this->resize(1,1) ; + return 0 ; + } +- resize(r,c) ; +- if(!fin.read((char*)m,sizeof(T)*r*c)) return 0 ; ++ this->resize(r,c) ; ++ if(!fin.read((char*)this->m,sizeof(T)*r*c)) return 0 ; + + return 1 ; + } +@@ -904,11 +904,11 @@ + if(!fout) + return 0 ; + int r,c ; +- r = rows() ; c = cols() ; ++ r = this->rows() ; c = this->cols() ; + if(!fout.write((char*)&"matrix",sizeof(char)*6)) return 0 ; + if(!fout.write((char*)&r,sizeof(int))) return 0 ; + if(!fout.write((char*)&c,sizeof(int))) return 0 ; +- if(!fout.write((char*)m,sizeof(T)*r*c)) return 0 ; ++ if(!fout.write((char*)this->m,sizeof(T)*r*c)) return 0 ; + return 1; + } + +@@ -927,7 +927,7 @@ + ofstream fout(filename) ; + if(!fout) + return 0 ; +- if(!fout.write((char*)m,sizeof(T)*rows()*cols())) return 0 ; ++ if(!fout.write((char*)this->m,sizeof(T)*this->rows()*this->cols())) return 0 ; + return 1; + } + |