freebsd-ports/graphics/nurbs++/files/patch-matrix.cpp
Alexey Dokuchaev 25f100a96e - Resurrect; unbreak on all supported versions of FreeBSD (and 8.X)
- Drop leading indefinite article from COMMENT text
- Stagify, convert to USES=libtool, switch to .tar.bz2 distfile
2015-10-21 16:34:23 +00:00

378 lines
10 KiB
C++

--- 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() ){
- resize(a.rows(),a.cols()) ;
+ if ( a.rows() != this->rows() || a.cols() != this->cols() ){
+ this->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;
}