Changeset 1683 in Sophya for trunk/SophyaLib/TArray
- Timestamp:
- Oct 11, 2001, 5:22:03 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/triangmtx.h
r1624 r1683 15 15 16 16 namespace SOPHYA { 17 17 18 18 //! Class for inferior triangular matrix (base class for the class Alm) 19 19 template <class T> … … 35 35 } 36 36 37 //! Equal operator 38 inline TriangularMatrix<T>& operator = (const TriangularMatrix<T>& a) 39 { 40 elem_=a.elem_;41 long_diag_ = a.long_diag_;42 return *this;43 }37 TriangularMatrix<T>& SetT(T a) 38 { 39 if (long_diag_ < 1) 40 throw RangeCheckError("TriangularMatrix<T>::SetT(T ) - TriangularMatrix not dimensionned ! "); 41 elem_ = a; 42 return (*this); 43 } 44 44 45 45 //! () operator : access to elements row \b l and column \b m 46 46 inline T& operator()(int l, int m) 47 47 { 48 return elem_( adr_ij(l,m));48 return elem_(indexOfElement(l,m)); 49 49 } 50 51 inline T& operator()(int index) 52 { 53 return elem_(index); 54 } 55 56 50 57 //! () operator : access to elements row \b l and column \b m 51 58 inline T const& operator()(int l, int m) const 52 59 { 53 return *(elem_.Begin()+ adr_ij(l,m));60 return *(elem_.Begin()+ indexOfElement(l,m)); 54 61 } 62 63 inline T const& operator()(int index) const 64 { 65 return *(elem_.Begin()+ index); 66 } 67 55 68 56 69 //! Return number of rows 57 70 inline int_4 rowNumber() const {return (int_4)long_diag_;} 58 71 72 void Print(int nbLignes=0) 73 { 74 if (nbLignes == 0 ) nbLignes = long_diag_; 75 cout << " ***** matrice triangulaire : ********* " << endl; 76 for (int k=0; k < nbLignes; k++) 77 { 78 for (int kc = 0; kc <= k ; kc++) 79 { 80 cout << " " << elem_(indexOfElement(k,kc)); 81 } 82 cout << endl; 83 } 84 cout << "---------------- fin matrice ------------" << endl; 85 } 86 87 //Return pointer to first element address 88 //inline T* Data() {return elem_.Begin();} 89 90 //! compute the address of an element in the single array representing the matrix 91 inline uint_4 indexOfElement(int i,int j) const 92 { 93 // return(i*(i+1)/2+j); 94 // the (inferior triangular )matrix is stored column by column 95 return(i+ long_diag_*j-j*(j+1)/2); 96 } 97 59 98 private: 60 //! compute the address of an element in the single array representing the matrix61 inline uint_4 adr_ij(int i,int j) const62 {63 // int adr= i*(i+1)/2+j;64 // if ( adr >= elem_.Size() || adr <0 )65 //{66 // cout << " attention depassement dans triangularMatrix " << endl;67 // cout << " l= " << i << " m= " << j << " tableau reserve longueur " << elem_.Size() << endl;68 //}69 return(i*(i+1)/2+j);70 }71 99 72 100 uint_4 long_diag_; //!< size of the square matrix … … 74 102 75 103 }; 76 104 77 105 } // namespace SOPHYA 78 106
Note:
See TracChangeset
for help on using the changeset viewer.