Changeset 958 in Sophya
- Timestamp:
- Apr 18, 2000, 3:38:53 PM (25 years ago)
- Location:
- trunk/SophyaLib
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/hisprof.h
r943 r958 83 83 84 84 85 /*! \ingroup HiStats \fn operator<<(POuttPersist&, HProf) 86 \brief Persistance management */ 85 87 inline POutPersist& operator << (POutPersist& os, HProf & obj) 86 88 { ObjFileIO<HProf> fio(&obj); fio.Write(os); return(os); } 89 /*! \ingroup HiStats \fn operator>>(PInPersist&, HProf) 90 \brief Persistance management */ 87 91 inline PInPersist& operator >> (PInPersist& is, HProf & obj) 88 92 { ObjFileIO<HProf> fio(&obj); fio.Read(is); return(is); } -
trunk/SophyaLib/HiStats/histos.cc
r943 r958 1 1 // 2 // $Id: histos.cc,v 1. 4 2000-04-15 11:06:27ansari Exp $2 // $Id: histos.cc,v 1.5 2000-04-18 13:38:16 ansari Exp $ 3 3 // 4 4 … … 432 432 void Histo::PutValue(TVector<r_8> &v, int ierr) 433 433 { 434 if(v.NElts()< bins) THROW(sizeMismatchErr);434 if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr); 435 435 for(int i=0;i<bins;i++) { 436 436 data[i] = v(i); … … 445 445 void Histo::PutValueAdd(TVector<r_8> &v, int ierr) 446 446 { 447 if(v.NElts()< bins) THROW(sizeMismatchErr);447 if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr); 448 448 for(int i=0;i<bins;i++) { 449 449 data[i] += v(i); … … 458 458 void Histo::PutError2(TVector<r_8> &v) 459 459 { 460 if(v.NElts()< bins) THROW(sizeMismatchErr);460 if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr); 461 461 if(!err2) Errors(); 462 462 for(int i=0;i<bins;i++) err2[i] = v(i); … … 469 469 void Histo::PutError2Add(TVector<r_8> &v) 470 470 { 471 if(v.NElts()< bins) THROW(sizeMismatchErr);471 if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr); 472 472 if(!err2) Errors(); 473 473 for(int i=0;i<bins;i++) if(v(i)>0.) err2[i] += v(i); … … 480 480 void Histo::PutError(TVector<r_8> &v) 481 481 { 482 if(v.NElts()< bins) THROW(sizeMismatchErr);482 if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr); 483 483 if(!err2) Errors(); 484 484 for(int i=0;i<bins;i++) … … 1360 1360 double f = (double) (*this)(i); 1361 1361 double saf = sqrt(fabs((double) f)); if(saf<1.) saf=1.; 1362 double e ;1362 double e=0.; 1363 1363 if(typ_err==0) {if(HasErrors()) e=Error(i); else e=1.;} 1364 1364 else if(typ_err==1) {if(HasErrors()) e=Error(i); else e=saf;} -
trunk/SophyaLib/HiStats/histos.h
r943 r958 1 1 // This may look like C code, but it is really -*- C++ -*- 2 2 // 3 // $Id: histos.h,v 1. 5 2000-04-15 11:06:28ansari Exp $3 // $Id: histos.h,v 1.6 2000-04-18 13:38:17 ansari Exp $ 4 4 // 5 5 … … 179 179 180 180 181 /*! \ingroup HiStats \fn operator<<(POuttPersist&,Histo) 182 \brief Persistance management */ 181 183 inline POutPersist& operator << (POutPersist& os, Histo & obj) 182 184 { ObjFileIO<Histo> fio(&obj); fio.Write(os); return(os); } 185 /*! \ingroup HiStats \fn operator<<(POuttPersist&,Histo) 186 \brief Persistance management */ 183 187 inline PInPersist& operator >> (PInPersist& is, Histo & obj) 184 188 { ObjFileIO<Histo> fio(&obj); fio.Read(is); return(is); } -
trunk/SophyaLib/HiStats/histos2.cc
r943 r958 666 666 { 667 667 int i,j; 668 if(v.NRows()!= nx || v.NCol()!=ny) THROW(sizeMismatchErr);668 if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr); 669 669 for(i=0;i<nx;i++) for(j=0;j<ny;j++) { 670 670 (*this)(i,j) = v(i,j); … … 680 680 { 681 681 int i,j; 682 if(v.NRows()!= nx || v.NCol()!=ny) THROW(sizeMismatchErr);682 if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr); 683 683 for(i=0;i<nx;i++) for(j=0;j<ny;j++) { 684 684 (*this)(i,j) += v(i,j); … … 695 695 { 696 696 int i,j; 697 if(v.NRows()!= nx || v.NCol()!=ny) THROW(sizeMismatchErr);697 if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr); 698 698 if(!err2) Errors(); 699 699 for(i=0;i<nx;i++) for(j=0;j<ny;j++) Error2(i,j) = v(i,j); … … 708 708 { 709 709 int i,j; 710 if(v.NRows()!= nx || v.NCol()!=ny) THROW(sizeMismatchErr);710 if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr); 711 711 if(!err2) Errors(); 712 712 for(i=0;i<nx;i++) for(j=0;j<ny;j++) … … 721 721 { 722 722 int i,j; 723 if(v.NRows()!= nx || v.NCol()!=ny) THROW(sizeMismatchErr);723 if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr); 724 724 if(!err2) Errors(); 725 725 for(i=0;i<nx;i++) for(j=0;j<ny;j++) … … 1046 1046 double f = (double) (*this)(i,j); 1047 1047 double saf = sqrt(fabs(f)); if(saf<1.) saf=1.; 1048 double e ;1048 double e=0.; 1049 1049 if(typ_err==0) {if(HasErrors()) e=Error(i,j); else e=1.;} 1050 1050 else if(typ_err==1) {if(HasErrors()) e=Error(i,j); else e=saf;} -
trunk/SophyaLib/HiStats/histos2.h
r943 r958 249 249 // Classe pour la gestion de persistance 250 250 251 /*! \ingroup HiStats \fn operator<<(POuttPersist&,Histo2D) 252 \brief Persistance management */ 251 253 inline POutPersist& operator << (POutPersist& os, Histo2D & obj) 252 254 { ObjFileIO<Histo2D> fio(&obj); fio.Write(os); return(os); } 255 /*! \ingroup HiStats \fn operator<<(POuttPersist&,Histo2D) 256 \brief Persistance management */ 253 257 inline PInPersist& operator >> (PInPersist& is, Histo2D & obj) 254 258 { ObjFileIO<Histo2D> fio(&obj); fio.Read(is); return(is); } -
trunk/SophyaLib/NTools/generaldata.cc
r938 r958 549 549 if(var<0 || var>3) return -1; 550 550 if(var>=2 && (ix<0 || ix>=mNVar) ) return -1; 551 double min , max;551 double min=1., max=-1.; 552 552 int ntest = 0; 553 553 for(int i=0;i<mNData;i++) { 554 554 if( ! IsValid(i) ) continue; 555 555 double v; 556 if(var== 0) v =Val(i);557 else if(var==1) v = EVal(i);558 else if(var==2) v =Absc(ix,i);559 else if(var==3) v = EAbsc(ix,i);556 if(var==1) v = EVal(i); 557 else if(var==2) v = Absc(ix,i); 558 else if(var==3) v = EAbsc(ix,i); 559 else v = Val(i); 560 560 if(ntest==0) {min = max = v; imin = imax = i;} 561 561 if(v<min) {min = v; imin = i;} … … 616 616 if( ! IsValid(i) ) continue; 617 617 double v; 618 if(var== 0) v =Val(i);619 else if(var==1) v = EVal(i);620 else if(var==2) v =Absc(ix,i);621 else if(var==3) v = EAbsc(ix,i);618 if(var==1) v = EVal(i); 619 else if(var==2) v = Absc(ix,i); 620 else if(var==3) v = EAbsc(ix,i); 621 else v = Val(i); 622 622 if(min<max && (v<min || max<v)) continue; 623 623 mean += v; … … 662 662 if( ! IsValid(i) ) continue; 663 663 double v; 664 if(var== 0) v =Val(i);665 else if(var==1) v = EVal(i);666 else if(var==2) v =Absc(ix,i);667 else if(var==3) v = EAbsc(ix,i);664 if(var==1) v = EVal(i); 665 else if(var==2) v = Absc(ix,i); 666 else if(var==3) v = EAbsc(ix,i); 667 else v = Val(i); 668 668 if(min<max && (v<min || max<v)) continue; 669 669 buff[ntest] = v; -
trunk/SophyaLib/NTools/generaldata.h
r926 r958 158 158 void Delete(); 159 159 160 int_4 mNVar; 161 int_4 mNDataAlloc; 162 int_4 mNData; 163 int_4 mNDataGood; 164 uint_2 mOk_EXP; 160 int_4 mNVar; //!< number of variables 161 int_4 mNDataAlloc; //!< space allocated for datas 162 int_4 mNData; //!< number of datas 163 int_4 mNDataGood; //!< number of good datas (not killed) 164 uint_2 mOk_EXP; //!< true if errors on variables X,Y,.. 165 165 r_8* mXP; //!< x0 y0 z0, x1 y1 z1, ..., xn yn zn 166 166 r_8* mErrXP; //!< Ex0 Ey0 Ez0, Ex1 Ey1 Ez1, ..., Exn Eyn Ezn … … 168 168 r_8* mErr; //!< EF0, EF1, ...., EFn 169 169 uint_2* mOK; //!< 1 si pt valid, 0 sinon 170 r_8* BuffVar; 171 r_4* BuffVarR4; 170 r_8* BuffVar; //!< dummy buffer 171 r_4* BuffVarR4; //!< dummy buffer 172 172 }; 173 173 … … 178 178 // Classe pour la gestion de persistance 179 179 180 //! For persistance management 180 181 inline POutPersist& operator << (POutPersist& os, GeneralFitData & obj) 181 182 { ObjFileIO<GeneralFitData> fio(&obj); fio.Write(os); return(os); } 183 //! For persistance management 182 184 inline PInPersist& operator >> (PInPersist& is, GeneralFitData & obj) 183 185 { ObjFileIO<GeneralFitData> fio(&obj); fio.Read(is); return(is); } -
trunk/SophyaLib/NTools/poly.cc
r938 r958 4 4 #include "fioarr.h" 5 5 6 //++ 7 // Class Poly 8 // Lib Outils++ 9 // include poly.h 10 // 11 // Classe de calcul sur polynômes à une variable. 12 //-- 13 14 //++ 15 // Links Parents 16 // Vector 17 //-- 18 19 //++ 20 // Titre Constructeurs 21 //-- 22 23 24 ////////////////////////////////////////////////////////////////////////// 25 //++ 26 // Poly::Poly(int degre=0) 27 // 28 // Crée un nouveau polynôme, en allouant de la place pour 29 // le degré spécifié. 30 //-- 31 6 //////////////////////////////////////////////////////////// 7 //////////////////////////////////////////////////////////// 8 //////////////////////////////////////////////////////////// 9 //////////////////////////////////////////////////////////// 10 //////////////////////////////////////////////////////////// 11 /*! 12 \class SOPHYA::Poly 13 \ingroup NTools 14 One dimensional polynomials class. 15 */ 16 17 //! Constructor 18 /*! Create a 1D polynomial of degre \b degre */ 32 19 Poly::Poly(int degre) 33 20 : TVector<r_8>(degre+1), dirty(0), deg(0) … … 36 23 } 37 24 38 // ++25 //! Constructor by copy 39 26 Poly::Poly(Poly const& a) 40 //41 // Constructeur par copie.42 //--43 27 :TVector<r_8>(a), dirty(a.dirty), deg(a.deg) 44 28 { … … 46 30 } 47 31 48 32 //! update degre 33 /*! update degre (that could be changed after operations) */ 49 34 void Poly::UpdateDeg() const 50 35 { … … 56 41 } 57 42 58 //++ 59 // Titre Méthodes 60 //-- 61 62 //++ 63 // double& Poly::operator[](int i) 64 // Permet d'accéder au coefficient de degré i (avec version 65 // const). 66 //-- 67 68 //++ 43 //! compute value P(\b x) 69 44 double Poly::operator()(double x) const 70 //71 // Calcule la valeur du polynôme au point x.72 //--73 45 { 74 46 UpdateDegIfDirty(); … … 81 53 } 82 54 83 // ++55 //! Replace p(x) by its derivate 84 56 void Poly::Derivate() 85 //86 // Remplace le polynôme par le polynôme dérivé.87 //--88 57 { 89 58 UpdateDegIfDirty(); … … 96 65 97 66 98 // ++67 //! Return the derivate in \b der(x) 99 68 void Poly::Derivate(Poly& der) const 100 //101 // Retourne dans der le polynôme dérivé.102 //--103 69 { 104 70 UpdateDegIfDirty(); … … 110 76 111 77 112 //++ 78 //! Return the roots of the polynomial into \b roots 79 /*! 80 This works until degre 2 81 \return the number of roots 82 */ 113 83 int Poly::Roots(TVector<r_8>& roots) const 114 //115 // Retourne dans roots les racines réelles, si on sait116 // les calculer. Retourne le nombre de racines.117 //--118 84 { 119 85 UpdateDegIfDirty(); … … 135 101 136 102 137 //++ 103 //! Return root \b r for a degre 1 polynomial 104 /*! \return return 1 if succes, 0 if not */ 138 105 int Poly::Root1(double& r) const 139 //140 // Seulement si le polynôme est de degré 1: retourne141 // la racine dans "r". Retourne 1 (nombre de racines).142 //--143 106 { 144 107 UpdateDegIfDirty(); … … 150 113 } 151 114 152 //++ 115 //! Return roots \b r1 and \b r2 for a degre 2 polynomial 116 /*! \return return the number of roots found */ 153 117 int Poly::Root2(double& r1, double& r2) const 154 //155 // Seulement si le polynôme est de degre 2: retourne156 // les racines dans "r1" et "r2". Retourne 0, 1 ou 2157 // (nombre de racines).158 //--159 118 { 160 119 UpdateDegIfDirty(); … … 172 131 } 173 132 174 // ++133 //! Operator P(x) = a(x) 175 134 Poly& Poly::operator = (Poly const& a) 176 //177 // Opérateur d'affectation.178 //--179 135 { 180 136 if (this == &a) return *this; … … 185 141 } 186 142 187 //++ 188 // Titres Opérations sur polynômes 189 //-- 190 191 //++ 143 //! Perform P(x) += b(x) 192 144 Poly& Poly::operator += (Poly const& b) 193 //194 //--195 145 { 196 146 UpdateDegIfDirty(); … … 206 156 } 207 157 208 // ++158 //! Perform P(x) -= b(x) 209 159 Poly& Poly::operator -= (Poly const& b) 210 //211 //--212 160 { 213 161 UpdateDegIfDirty(); … … 223 171 } 224 172 225 // ++173 //! Perform P(x) *= b(x) 226 174 Poly& Poly::operator *= (double a) 227 //228 //--229 175 { 230 176 UpdateDegIfDirty(); … … 233 179 } 234 180 235 // ++181 //! Return P(x) = *this(x) * b(x) 236 182 Poly Poly::Mult(Poly const& b) const 237 //238 //--239 183 { 240 184 Poly c(deg + b.deg); … … 254 198 } 255 199 256 // ++200 //! Print on stream \b s 257 201 void Poly::Print(ostream& s, int_4 , bool ) const 258 //259 // Impresssion.260 //--261 202 { 262 203 UpdateDegIfDirty(); … … 274 215 } 275 216 276 //++ 217 //! Fit datas by a polynomial 218 /*! 219 Fit y(x) by a polynimial P(x) 220 \param x : x datas 221 \param y : y datas 222 \param degre : degre of the polynomial P(x) to be fitted 223 \warning result is stored in the current object 224 \return return chisquare 225 */ 277 226 double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y, int degre) 278 //279 // Ajustement polynomial par moindre carrés. Un polynôme de280 // degré "degre" est ajusté sur les données "x" et "y", et stocké dans281 // l'objet courant. Retourne le chi2.282 //--283 227 { 284 228 int n = x.NElts(); … … 303 247 } 304 248 305 //++ 249 //! Fit datas with errors by a polynomial 250 /*! 251 Fit y(x) by a polynimial P(x) 252 \param x : x datas 253 \param y : y datas 254 \param erry2 : errors squared on y 255 \param degre : degre of the polynomial P(x) to be fitted 256 \warning result is stored in the current object 257 \return \b errcoeff : errors on the coefficients 258 \return return chisquare 259 */ 306 260 double Poly::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 307 261 TVector<r_8> const& erry2, int degre,TVector<r_8>& errCoef) 308 //309 // Ajustement polynomial par moindre carrés. Un polynôme de310 // degré est ajusté sur les données x et y, et stocké dans311 // l'objet courant. erry2 contient le carre des erreurs sur y.312 // Retourne le chi2.313 //--314 262 { 315 263 int n = x.NElts(); … … 337 285 338 286 339 //++ 340 // Poly Poly::power(int n) const 341 // 342 // Retourne le polynôme à la puissance n 343 //-- 344 287 //! Return the polynomial at power \b n : ( \f$ P(x)^n \f$ ) 345 288 Poly Poly::power(int n) const // a accelerer !!! 346 289 { … … 351 294 } 352 295 353 // ++296 //! Substitue polynomial and return P\f$ (b(x)) \f$ 354 297 Poly Poly::operator() (Poly const& b) const 355 //356 // Substitution d'un polynôme dans un autre.357 //--358 298 { 359 299 Poly c(b.Degre()*Degre()); … … 365 305 366 306 ////////////////////////////////////////////////////////////////////////// 307 //! For persistance management 367 308 void ObjFileIO<Poly>::ReadSelf(PInPersist& is) 368 309 { … … 375 316 } 376 317 318 //! For persistance management 377 319 void ObjFileIO<Poly>::WriteSelf(POutPersist& os) const 378 320 { … … 385 327 386 328 ////////////////////////////////////////////////////////////////////////// 329 /*! \ingroup NTools 330 \fn binomial(int,int) 331 Return the binomial coefficient \f$ {C_n}^p \f$. 332 */ 387 333 int binomial(int n, int p) 388 334 { … … 393 339 } 394 340 395 ////////////////////////////////////////////////////////////////////////// 396 // ******************* POLY 2 VARIABLES ****************** 397 //++ 398 // Class Poly2 399 // Lib Outils++ 400 // include poly.h 401 // 402 // Classe de calcul sur polynômes à deux variables. 403 //-- 404 405 //++ 406 // Links Parents 407 // Vector 408 //-- 409 410 //++ 411 // Titre Constructeurs 412 //-- 413 414 //++ 341 342 //////////////////////////////////////////////////////////// 343 //////////////////////////////////////////////////////////// 344 //////////////////////////////////////////////////////////// 345 //////////////////////////////////////////////////////////// 346 //////////////////////////////////////////////////////////// 347 /*! 348 \class SOPHYA::Poly2 349 \ingroup NTools 350 Two dimensional polynomials class. 351 */ 352 353 //! Constructor of 2D polynomial of degres \b degreX \b degreY 415 354 Poly2::Poly2(int degreX, int degreY) 416 //417 // Crée un polynôme de degrés partiels degreX et degreY.418 //--419 355 :TVector<r_8>((degreX+1)*(degreY+1)), dirty(0), 420 356 maxDegX(degreX), maxDegY(degreY), degX(0), degY(0), deg(0) … … 423 359 } 424 360 425 // ++361 //! Constructor of 2D polynomial \f$ P(x,y) = px(x) * py(y) \f$ 426 362 Poly2::Poly2(Poly const& polX, Poly const& polY) 427 //428 // Crée un polynôme à deux variables comme produit429 // de deux polynômes à une variable, p2(x,y)=px(x)py(y)430 //--431 363 :TVector<r_8>((polX.Degre()+1)*(polY.Degre()+1)), dirty(0), 432 364 maxDegX(polX.Degre()), maxDegY(polY.Degre()), … … 439 371 } 440 372 441 // ++373 //! Constructor by copy 442 374 Poly2::Poly2(Poly2 const& a) 443 //444 // Constructeur par copie.445 //--446 375 :TVector<r_8>(a), dirty(a.dirty), 447 376 maxDegX(a.maxDegX), maxDegY(a.maxDegY), … … 451 380 } 452 381 453 454 //++ 455 // Titre Méthodes 456 //-- 457 458 //++ 382 //! Operator P(x) = a(x) 459 383 Poly2& Poly2::operator = (Poly2 const& a) 460 //461 // Opérateur d'affectation.462 //--463 384 { 464 385 if (this == &a) return *this; … … 475 396 } 476 397 477 // ++398 //! Re-allocate space for 2D polynomial with partial degres \b degreX \b degreY 478 399 void Poly2::Realloc(int degreX, int degreY) 479 //480 // Redimensionne le polynôme comme etant un481 // polynôme de degrés partiels degreX et degreY.482 //--483 400 { 484 401 UpdateDegIfDirty(); … … 499 416 500 417 418 //! update degres 419 /*! update degres (that could be changed after operations) */ 501 420 void Poly2::UpdateDeg() const 502 421 { … … 514 433 } 515 434 516 //++ 517 // int Poly2::DegX() const 518 // Degré partiel en X. 519 // int Poly2::DegY() const 520 // Degré partiel en Y 521 // int Poly2::MaxDegX() const 522 // Degré partiel maximum (alloué) en X 523 // int Poly2::MaxDegY() const 524 // Degré partiel maximum (alloué) en Y 525 // int Poly2::Deg() const 526 // Degré total. 527 //-- 528 529 //++ 530 // double& Poly2::Coef(int dx, int dy) 531 // Retourne le coefficient de x^dx y^dy 532 // (avec aussi version const). 533 //-- 534 535 //++ 435 //! Return P(\b x, \b y) 536 436 double Poly2::operator()(double x, double y) const 537 //538 // Retourne la valeur en (x,y).539 //--540 437 { 541 438 UpdateDegIfDirty(); … … 553 450 } 554 451 555 //++ 452 //! Fit datas by a polynomial 453 /*! 454 Fit z(x,y) by a polynimial P(x,y) 455 \param x : x datas 456 \param y : y datas 457 \param z : z datas 458 \param degreX : partial degre on X 459 \param degreY : partial degre on Y 460 \warning result is stored in the current object 461 \return return chisquare 462 */ 556 463 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 557 464 TVector<r_8> const& z, int degreX, int degreY) 558 //559 // Ajustement par moindre carrés z = P(x,y), degrés partiels imposés.560 //--561 465 { 562 466 int n = x.NElts(); … … 586 490 } 587 491 588 589 //++ 492 //! Fit datas with errors by a polynomial 493 /*! 494 Fit z(x,y) by a polynimial P(x,y) 495 \param x : x datas 496 \param y : y datas 497 \param z : z datas 498 \param errz2 : errors squared on z 499 \param degreX : partial degre on X 500 \param degreY : partial degre on Y 501 \warning result is stored in the current object 502 \return \b errcoeff : errors on the coefficients 503 \return return chisquare 504 */ 590 505 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, TVector<r_8> const& z, 591 506 TVector<r_8> const& errz2, int degreX, int degreY, 592 507 TVector<r_8>& errCoef) 593 //594 // Ajustement par moindre carrés z = P(x,y), degrés partiels imposés,595 // et erreurs^2 sur z dans errz2.596 //--597 508 { 598 509 int n = x.NElts(); … … 624 535 } 625 536 626 //++ 537 //! Fit datas by a polynomial 538 /*! 539 Fit z(x,y) by a polynimial P(x,y) 540 \param x : x datas 541 \param y : y datas 542 \param z : z datas 543 \param degre : total degre 544 \warning result is stored in the current object 545 \return return chisquare 546 */ 627 547 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 628 548 TVector<r_8> const& z, int degre) 629 //630 // Ajustement par moindre carrés z = P(x,y), degré total imposé.631 //--632 549 { 633 550 int n = x.NElts(); … … 668 585 } 669 586 670 671 //++ 587 //! Fit datas with errors by a polynomial 588 /*! 589 Fit z(x,y) by a polynimial P(x,y) 590 \param x : x datas 591 \param y : y datas 592 \param z : z datas 593 \param errz2 : errors squared on z 594 \param degre : total degre 595 \warning result is stored in the current object 596 \return \b errcoeff : errors on the coefficients 597 \return return chisquare 598 */ 672 599 double Poly2::Fit(TVector<r_8> const& x, TVector<r_8> const& y, 673 600 TVector<r_8> const& z,TVector<r_8> const& errz2, 674 601 int degre, TVector<r_8>& errCoef) 675 //676 // Ajustement par moindre carrés z = P(x,y), degré total imposé,677 // et erreurs^2 sur z dans errz2.678 //--679 602 { 680 603 int n = x.NElts(); … … 721 644 } 722 645 723 // ++646 //! Print on stream \b s 724 647 void Poly2::Print(ostream& s, int_4 , bool ) const 725 //726 // Impression sur stream s.727 //--728 648 { 729 649 UpdateDegIfDirty(); … … 750 670 } 751 671 752 //++ 753 // Titre Opérations 754 //-- 755 756 //++ 672 //! Operator: return P(x) = *this(x) + b(x) 757 673 Poly2& Poly2::operator += (Poly2 const& b) 758 //759 //--760 674 { 761 675 if (maxDegX < b.DegX() || maxDegY < b.DegY()) … … 774 688 } 775 689 776 // ++690 //! Operator: return P(x) = *this(x) - b(x) 777 691 Poly2& Poly2::operator -= (Poly2 const& b) 778 //779 //--780 692 { 781 693 if (maxDegX < b.DegX() || maxDegY < b.DegY()) … … 794 706 } 795 707 796 // ++708 //! Operator: return P(x) = *this(x) * a 797 709 Poly2& Poly2::operator *= (double a) 798 //799 //--800 710 { 801 711 for (int i=0; i<NElts(); i++) … … 805 715 } 806 716 807 // ++717 //! Operator: return P(x) = *this(x) * b(x) 808 718 Poly2 Poly2::Mult(Poly2 const& b) const 809 //810 //--811 719 { 812 720 Poly2 c(DegX() + b.DegX(), DegY() + b.DegY()); … … 822 730 } 823 731 824 // ++732 //! Return \f$ P(x,y)^n \f$ 825 733 Poly2 Poly2::power(int n) const 826 //827 // Calcule le polynôme P(x,y)^n828 //--829 734 { 830 735 if (n < 0) THROW(rangeCheckErr); … … 835 740 836 741 837 // ++742 //! substitute and return \f$ P(a(x),b(x)) \f$ 838 743 Poly2 Poly2::operator() (Poly const& a, Poly const& b) const 839 //840 // Substitution de deux polynômes en X et Y,841 // P2(pa(x), pb(y)).842 //--843 744 { 844 745 UpdateDegIfDirty(); … … 854 755 } 855 756 856 // ++757 //! substitute and return 2D polynomial \f$ P(a(x,y)) \f$, P is a 1D polynomial 857 758 Poly2 Poly::operator() (Poly2 const& a) const 858 //859 // Substitution d'un polynôme à deux variables dans860 // un polynôme à une variable, P(P2(x,y)).861 //--862 759 { 863 760 Poly2 c(a.MaxDegX()*Degre(), a.MaxDegY()*Degre()); … … 869 766 870 767 ////////////////////////////////////////////////////////////////////////// 768 //! For persistance management 871 769 void ObjFileIO<Poly2>::ReadSelf(PInPersist& is) 872 770 { … … 879 777 } 880 778 779 //! For persistance management 881 780 void ObjFileIO<Poly2>::WriteSelf(POutPersist& os) const 882 781 { -
trunk/SophyaLib/NTools/poly.h
r938 r958 1 1 // This may look like C code, but it is really -*- C++ -*- 2 2 // 3 // $Id: poly.h,v 1. 7 2000-04-14 16:14:31ansari Exp $3 // $Id: poly.h,v 1.8 2000-04-18 13:38:36 ansari Exp $ 4 4 // 5 5 … … 21 21 22 22 ////////////////////////////////////////////////////////////////////////// 23 //! Class of 1 dimension polynomials P(x) 23 24 class Poly : public TVector<r_8> { 24 25 friend class ObjFileIO<Poly>; … … 27 28 Poly(Poly const& a); 28 29 30 //! Return degre of polynomials 29 31 inline int Degre() const {UpdateDegIfDirty(); return deg;} 30 32 33 //! Return space for a \b n degre polynomial 34 /*! 35 \param \b n : degre of new polynomial 36 \param \b force : force re-allocation if true,\ 37 if not allocation occurs only 38 if space needed is greater than the old one 39 */ 31 40 inline void Realloc(int n, bool force=false) 32 41 {TVector<r_8>::Realloc(n+1,force);} 33 42 34 43 // Pour compatibilite PEIDA - Reza 03/2000 44 //! Return coefficient of degre \b i 35 45 inline double Element(int i) const { return Elem(i,0,0,0,0); } 46 //! Return coefficient of degre \b i 36 47 inline double & Element(int i) { return Elem(i,0,0,0,0); } 37 48 49 //! Return coefficient of degre \b i 38 50 inline double operator[](int i) const {return Elem(i,0,0,0,0);} 51 //! Return coefficient of degre \b i 39 52 inline double& operator[](int i) {dirty = 1; return Elem(i,0,0,0,0);} 40 53 // Retourne le coefficient de degre i … … 87 100 }; 88 101 102 /*! \ingroup NTools \fn operator*(Poly const&,Poly const&) 103 \brief perform and return P(X) = a(x) * b(x) */ 89 104 inline Poly operator* (Poly const& a, Poly const& b) 90 105 { return a.Mult(b); } 91 106 107 /*! \ingroup NTools \fn operator+(Poly const&,Poly const&) 108 \brief perform and return P(X) = a(x) + b(x) */ 92 109 inline Poly operator+ (Poly const& a, Poly const& b) 93 110 { Poly c((a.Degre() > b.Degre())?(a.Degre()+1):(b.Degre()+1)); 94 111 c = a; c += b; return c; } 95 112 113 /*! \ingroup NTools \fn operator-(Poly const&,Poly const&) 114 \brief perform and return P(X) = a(x) - b(x) */ 96 115 inline Poly operator- (Poly const& a, Poly const& b) 97 116 { Poly c((a.Degre() > b.Degre())?(a.Degre()+1):(b.Degre()+1)); 98 117 c = a; c -= b; return c; } 99 118 119 /*! \ingroup NTools \fn operator*(double,Poly const&) 120 \brief perform and return P(X) = a * b(x) */ 100 121 inline Poly operator* (double a, Poly const& b) 101 122 { Poly c(b); c *= a; return c; } 102 123 124 /*! \ingroup NTools \fn operator<<(ostream&,const Poly&) 125 \brief Print a(x) on stream \b s */ 103 126 inline ostream& operator << (ostream& s, const Poly& a) 104 127 { a.Print(s); return s; } 105 128 106 129 ////////////////////////////////////////////////////////////////////////// 130 /*! \ingroup NTools \fn operator<<(POutPersist&,Poly&) 131 \brief For persistance management */ 107 132 inline POutPersist& operator << (POutPersist& os, Poly & obj) 108 133 { ObjFileIO<Poly> fio(&obj); fio.Write(os); return(os); } 134 /*! \ingroup NTools \fn operator<<(PInPersist&,,Poly&) 135 \brief For persistance management */ 109 136 inline PInPersist& operator >> (PInPersist& is, Poly & obj) 110 137 { ObjFileIO<Poly> fio(&obj); fio.Read(is); return(is); } … … 116 143 117 144 ////////////////////////////////////////////////////////////////////////// 145 //! Class of 2 dimensions polynomials P(x,y) 118 146 class Poly2 : public TVector<r_8> { 119 147 friend class ObjFileIO<Poly2>; … … 124 152 Poly2(Poly2 const& a); 125 153 154 //! Return polynomial partial degre for X 126 155 inline int DegX() const {UpdateDegIfDirty(); return degX;} 156 //! Return polynomial partial degre for Y 127 157 inline int DegY() const {UpdateDegIfDirty(); return degY;} 158 //! Return polynomial maximum partial degre for X 128 159 inline int MaxDegX() const {return maxDegX;} 160 //! Return polynomial maximum partial degre for Y 129 161 inline int MaxDegY() const {return maxDegY;} 162 //! Return polynomial total degre for X 130 163 inline int Deg() const {UpdateDegIfDirty(); return deg;} 131 164 // les degres partiels en x et y, et totaux. 132 165 133 166 // Pour compatibilite PEIDA - Reza 03/2000 167 //! Return coefficient of degre \b i 134 168 inline double Element(int i) const { return Elem(i,0,0,0,0); } 169 //! Return coefficient of degre \b i 135 170 inline double & Element(int i) { return Elem(i,0,0,0,0); } 136 171 … … 138 173 // retourne la valeur en (x,y) 139 174 175 //! Return index of coefficient of X^dx * Y^dy in the vector 140 176 inline int IndCoef(int dx, int dy) const { 141 177 if (dx>maxDegX || dy>maxDegY) THROW(rangeCheckErr); … … 146 182 // d'un fit... 147 183 184 //! Return coefficient of X^dx * Y^dy 148 185 inline double Coef(int dx, int dy) const { 149 186 return (dx>maxDegX || dy>maxDegY) ? 0 : Element(IndCoef(dx,dy)); 150 187 } 188 //! Return coefficient of X^dx * Y^dy 151 189 inline double& Coef(int dx, int dy) { 152 190 if (dx>maxDegX || dy>maxDegY) THROW(rangeCheckErr); … … 199 237 }; 200 238 239 /*! \ingroup NTools \fn operator*(Poly2 const&,Poly2 const&) 240 \brief Perform P(x,y) = a(x,y) * b(x,y) */ 201 241 inline Poly2 operator* (Poly2 const& a, Poly2 const& b) 202 242 { return a.Mult(b); } 203 243 244 /*! \ingroup NTools \fn operator+(Poly2 const&,Poly2 const&) 245 \brief Perform P(x,y) = a(x,y) + b(x,y) */ 204 246 inline Poly2 operator+ (Poly2 const& a, Poly2 const& b) 205 247 { Poly2 c(a); c += b; return c; } 206 248 249 /*! \ingroup NTools \fn operator-(Poly2 const&,Poly2 const&) 250 \brief Perform P(x,y) = a(x,y) - b(x,y) */ 207 251 inline Poly2 operator- (Poly2 const& a, Poly2 const& b) 208 252 { Poly2 c(a); c -= b; return c; } 209 253 254 /*! \ingroup NTools \fn operator-(double,Poly2 const&) 255 \brief Perform P(x,y) = a * b(x,y) */ 210 256 inline Poly2 operator * (double a, Poly2 const& b) 211 257 { Poly2 c(b); c *= a; return c; } 212 258 259 /*! \ingroup NTools \fn operator<<(ostream&,const Poly2&) 260 \brief Print a(x,y) on stream \b s */ 213 261 inline ostream& operator << (ostream& s, const Poly2& a) 214 262 { a.Print(s); return s; } 215 263 216 264 ////////////////////////////////////////////////////////////////////////// 265 /*! \ingroup NTools \fn operator<<(POutPersist&,Poly2&) 266 \brief For persistance management */ 217 267 inline POutPersist& operator << (POutPersist& os, Poly2 & obj) 218 268 { ObjFileIO<Poly2> fio(&obj); fio.Write(os); return(os); } 269 /*! \ingroup NTools \fn operator<<(POutPersist&,Poly2&) 270 \brief For persistance management */ 219 271 inline PInPersist& operator >> (PInPersist& is, Poly2 & obj) 220 272 { ObjFileIO<Poly2> fio(&obj); fio.Read(is); return(is); } -
trunk/SophyaLib/TArray/basarr.cc
r926 r958 61 61 { 62 62 uint_8 rs = step; 63 for( intk=0; k<ndim; k++) rs *= siz[k];63 for(uint_4 k=0; k<ndim; k++) rs *= siz[k]; 64 64 return(rs+offset); 65 65 } … … 285 285 { 286 286 if (ndim_ != a.ndim_) return(false); 287 for( intk=0; k<ndim_; k++)287 for(uint_4 k=0; k<ndim_; k++) 288 288 if (size_[k] != a.size_[k]) return(false); 289 289 // $CHECK$ Reza doit-on verifier ca … … 301 301 uint_4 size[BASEARRAY_MAXNDIMS]; 302 302 uint_4 step[BASEARRAY_MAXNDIMS]; 303 for( intk=0; k<ndim_; k++) {303 for(uint_4 k=0; k<ndim_; k++) { 304 304 if (size_[k] < 2) continue; 305 305 size[ndim] = size_[k]; … … 324 324 uint_4 size[BASEARRAY_MAXNDIMS]; 325 325 uint_4 step[BASEARRAY_MAXNDIMS]; 326 for( intk=0; k<ndim_; k++) {326 for(uint_4 k=0; k<ndim_; k++) { 327 327 size[ndim] = size_[k]; 328 328 step[ndim] = step_[k]; … … 338 338 uint_4 BaseArray::MinStepKA() const 339 339 { 340 for( intka=0; ka<ndim_; ka++)340 for(uint_4 ka=0; ka<ndim_; ka++) 341 341 if (step_[ka] == minstep_) return(ka); 342 342 return(0); … … 348 348 uint_4 ka = 0; 349 349 uint_4 mx = size_[0]; 350 for( intk=0; k<ndim_; k++)350 for(uint_4 k=0; k<ndim_; k++) 351 351 if (size_[k] > mx) { ka = k; mx = size_[k]; } 352 352 return(ka); … … 370 370 //#endif 371 371 uint_4 idx[BASEARRAY_MAXNDIMS]; 372 intk;372 uint_4 k; 373 373 uint_8 rest = i; 374 374 idx[ka] = 0; … … 392 392 393 393 uint_4 idx[BASEARRAY_MAXNDIMS]; 394 intk;394 uint_4 k; 395 395 uint_8 rest = ip; 396 396 for(k=0; k<ndim_; k++) { … … 424 424 os << "\n--- " << InfoString() ; 425 425 os << " ND=" << ndim_ << " SizeX*Y*...= " ; 426 for( intk=0; k<ndim_; k++) {426 for(uint_4 k=0; k<ndim_; k++) { 427 427 os << size_[k]; 428 428 if (k<ndim_-1) os << "x"; … … 431 431 if (prt_lev_ > 0) { 432 432 os << " TotSize= " << totsize_ << " Step(X Y ...)=" ; 433 for( intk=0; k<ndim_; k++) os << step_[k] << " " ;433 for(uint_4 k=0; k<ndim_; k++) os << step_[k] << " " ; 434 434 os << " Offset= " << offset_ << endl; 435 435 } … … 483 483 484 484 totsize_ = 1; 485 intk;485 uint_4 k; 486 486 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 487 487 size_[k] = 1; … … 530 530 531 531 totsize_ = 1; 532 intk;532 uint_4 k; 533 533 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 534 534 size_[k] = 1; … … 584 584 585 585 totsize_ = 1; 586 intk;586 uint_4 k; 587 587 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 588 588 size_[k] = 1; … … 629 629 if ( (ndim > ndim_) || (ndim < 1) ) 630 630 throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) NDim Error") ); 631 intk;631 uint_4 k; 632 632 for(k=0; k<ndim; k++) 633 633 if ( (siz[k]*step[k]+pos[k]) > size_[k] ) -
trunk/SophyaLib/TArray/fioarr.h
r926 r958 34 34 }; 35 35 36 //! Write TArray \b obj into POutPersist stream \b os 36 /*! \ingroup TArray \fn operator<<(POutPersist&,TArray<T>&) 37 \brief Write TArray \b obj into POutPersist stream \b os */ 37 38 template <class T> 38 39 inline POutPersist& operator << (POutPersist& os, TArray<T> & obj) 39 40 { FIO_TArray<T> fio(&obj); fio.Write(os); return(os); } 40 41 41 //! Read TArray \b obj from PInPersist stream \b os 42 /*! \ingroup TArray \fn operator>>(PInPersist&,TArray<T>&) 43 \brief Read TArray \b obj from PInPersist stream \b os */ 42 44 template <class T> 43 45 inline PInPersist& operator >> (PInPersist& is, TArray<T> & obj) -
trunk/SophyaLib/TArray/matharr.h
r942 r958 33 33 #if !defined(__GNUG__) 34 34 // see below for g++ 35 /*! \ingroup TArray \fn fabs(const TArray<T>& a) 36 \brief computation on TArray */ 35 37 template <class T> 36 38 inline TArray<T> fabs(const TArray<T>& a) 37 39 { MathArray<T> ma; return( ma.ApplyFunction(a, fabs) ); } 38 40 41 /*! \ingroup TArray \fn sqrt(const TArray<T>& a) 42 \brief computation on TArray */ 39 43 template <class T> 40 44 inline TArray<T> sqrt(const TArray<T>& a) 41 45 { MathArray<T> ma; return( ma.ApplyFunction(a, sqrt) ); } 42 46 47 /*! \ingroup TArray \fn sin(const TArray<T>& a) 48 \brief computation on TArray */ 43 49 template <class T> 44 50 inline TArray<T> sin(const TArray<T>& a) 45 51 { MathArray<T> ma; return( ma.ApplyFunction(a, sin) ); } 46 52 53 /*! \ingroup TArray \fn cos(const TArray<T>& a) 54 \brief computation on TArray */ 47 55 template <class T> 48 56 inline TArray<T> cos(const TArray<T>& a) 49 57 { MathArray<T> ma; return( ma.ApplyFunction(a, cos) ); } 50 58 59 /*! \ingroup TArray \fn tan(const TArray<T>& a) 60 \brief computation on TArray */ 51 61 template <class T> 52 62 inline TArray<T> tan(const TArray<T>& a) 53 63 { MathArray<T> ma; return( ma.ApplyFunction(a, tan) ); } 54 64 65 /*! \ingroup TArray \fn asin(const TArray<T>& a) 66 \brief computation on TArray */ 55 67 template <class T> 56 68 inline TArray<T> asin(const TArray<T>& a) 57 69 { MathArray<T> ma; return( ma.ApplyFunction(a, asin) ); } 58 70 71 /*! \ingroup TArray \fn acos(const TArray<T>& a) 72 \brief computation on TArray */ 59 73 template <class T> 60 74 inline TArray<T> acos(const TArray<T>& a) 61 75 { MathArray<T> ma; return( ma.ApplyFunction(a, acos) ); } 62 76 77 /*! \ingroup TArray \fn atan(const TArray<T>& a) 78 \brief computation on TArray */ 63 79 template <class T> 64 80 inline TArray<T> atan(const TArray<T>& a) 65 81 { MathArray<T> ma; return( ma.ApplyFunction(a, atan) ); } 66 82 83 /*! \ingroup TArray \fn exp(const TArray<T>& a) 84 \brief computation on TArray */ 67 85 template <class T> 68 86 inline TArray<T> exp(const TArray<T>& a) 69 87 { MathArray<T> ma; return( ma.ApplyFunction(a, exp) ); } 70 88 89 /*! \ingroup TArray \fn lof(const TArray<T>& a) 90 \brief computation on TArray */ 71 91 template <class T> 72 92 inline TArray<T> log(const TArray<T>& a) 73 93 { MathArray<T> ma; return( ma.ApplyFunction(a, log) ); } 74 94 95 /*! \ingroup TArray \fn log10(const TArray<T>& a) 96 \brief computation on TArray */ 75 97 template <class T> 76 98 inline TArray<T> log10(const TArray<T>& a) … … 83 105 #endif 84 106 85 //! Return \b mean and \b sigma of elements of array \b a 107 /*! \ingroup TArray \fn MeanSigma(const TArray<T>&,double&,double&) 108 \brief Return \b mean and \b sigma of elements of array \b a */ 86 109 template <class T> 87 110 inline double MeanSigma(const TArray<T>& a, double & mean, double & sig) 88 111 { MathArray<T> ma; return( ma.MeanSigma(a, mean, sig) ); } 89 112 90 //! Return \b mean of elements of array \b a 113 /*! \ingroup TArray \fn Mean(const TArray<T>&) 114 \brief Return \b mean of elements of array \b a */ 91 115 template <class T> 92 116 inline double Mean(const TArray<T>& a) -
trunk/SophyaLib/TArray/sopemtx.h
r956 r958 48 48 //------------------------------------------------------------ 49 49 50 /*! \ingroup TArray 51 \fn LinSolveInPlace(TMatrix<r_4>&, TVector<r_4>&) 50 /*! \ingroup TArray \fn LinSolveInPlace(TMatrix<r_4>&,TVector<r_4>&) 52 51 \brief Solve A*C = B for C in place and return determinant 53 52 */ … … 59 58 } 60 59 61 /*! \ingroup TArray 62 \fn LinSolveInPlace (TMatrix<r_8>&, TVector<r_8>&) 60 /*! \ingroup TArray \fn LinSolveInPlace(TMatrix<r_8>&,TVector<r_8>&) 63 61 \brief Solve A*X = B in place and return determinant 64 62 */ -
trunk/SophyaLib/TArray/tarray.cc
r926 r958 334 334 uint_8 step = AvgStep(); 335 335 pe = Data(); 336 for(k=0; k<totsize_; k++ ) pe[k*step] = seq(k);336 for(k=0; k<totsize_; k++ ) pe[k*step] = (T) seq(k); 337 337 } 338 338 else { // Non regular data spacing ... … … 344 344 for(j=0; j<naxa; j++) { 345 345 pe = mNDBlock.Begin()+Offset(ka,j); 346 for(k=0; k<gpas; k++) pe[k*step] = seq(j*gpas+k);346 for(k=0; k<gpas; k++) pe[k*step] = (T) seq(j*gpas+k); 347 347 } 348 348 } … … 807 807 { 808 808 if (maxprt < 0) maxprt = max_nprt_; 809 int_4 npr = 0;809 uint_4 npr = 0; 810 810 Show(os, si); 811 811 if (ndim_ < 1) return; … … 822 822 if(k0 > 0) os << ", "; 823 823 os << Elem(k0, k1, k2, k3, k4); npr++; 824 if (npr >= maxprt) {824 if (npr >= (uint_4) maxprt) { 825 825 if (npr < totsize_) os << "\n .... " << endl; return; 826 826 } -
trunk/SophyaLib/TArray/tarray.h
r956 r958 165 165 // Surcharge d'operateurs A (+,-,*,/) (T) x 166 166 167 //! Operator TArray = TArray + constant 167 /*! \ingroup TArray \fn operator+(const TArray<T>&,T) 168 \brief Operator TArray = TArray + constant */ 168 169 template <class T> inline TArray<T> operator + (const TArray<T>& a, T b) 169 170 {TArray<T> result(a); result.SetTemp(true); result.Add(b); return result;} 170 171 171 //! Operator TArray = constant + TArray 172 /*! \ingroup TArray \fn operator+(T,const TArray<T>&) 173 \brief Operator TArray = constant + TArray */ 172 174 template <class T> inline TArray<T> operator + (T b,const TArray<T>& a) 173 175 {TArray<T> result(a); result.SetTemp(true); result.Add(b); return result;} 174 176 175 //! Operator TArray = TArray - constant 177 /*! \ingroup TArray \fn operator-(const TArray<T>&,T) 178 \brief Operator TArray = TArray - constant */ 176 179 template <class T> inline TArray<T> operator - (const TArray<T>& a, T b) 177 180 {TArray<T> result(a); result.SetTemp(true); result.Sub(b); return result;} 178 181 179 //! Operator TArray = constant - TArray 182 /*! \ingroup TArray \fn operator-(T,const TArray<T>&) 183 \brief Operator TArray = constant - TArray */ 180 184 template <class T> inline TArray<T> operator - (T b,const TArray<T>& a) 181 185 {TArray<T> result(a); result.SetTemp(true); result.SubInv(b); return result;} 182 186 183 //! Operator TArray = TArray * constant 187 /*! \ingroup TArray \fn operator*(const TArray<T>&,T) 188 \brief Operator TArray = TArray * constant */ 184 189 template <class T> inline TArray<T> operator * (const TArray<T>& a, T b) 185 190 {TArray<T> result(a); result.SetTemp(true); result.Mul(b); return result;} 186 191 187 //! Operator TArray = constant * TArray 192 /*! \ingroup TArray \fn operator*(T,const TArray<T>&) 193 \brief Operator TArray = constant * TArray */ 188 194 template <class T> inline TArray<T> operator * (T b,const TArray<T>& a) 189 195 {TArray<T> result(a); result.SetTemp(true); result.Mul(b); return result;} 190 196 191 //! Operator TArray = TArray / constant 197 /*! \ingroup TArray \fn operator/(const TArray<T>&,T) 198 \brief Operator TArray = TArray / constant */ 192 199 template <class T> inline TArray<T> operator / (const TArray<T>& a, T b) 193 200 {TArray<T> result(a); result.SetTemp(true); result.DivInv(b); return result;} … … 196 203 // Surcharge d'operateurs C = A (+,-) B 197 204 198 //! Operator TArray = TArray + TArray 205 /*! \ingroup TArray \fn operator+(const TArray<T>&,const TArray<T>&) 206 \brief Operator TArray = TArray + TArray */ 199 207 template <class T> 200 208 inline TArray<T> operator + (const TArray<T>& a,const TArray<T>& b) 201 209 {TArray<T> result(a); result.SetTemp(true); result.AddElt(b); return result;} 202 210 203 //! Operator TArray = TArray - TArray 211 /*! \ingroup TArray \fn operator-(const TArray<T>&,const TArray<T>&) 212 \brief Operator TArray = TArray - TArray */ 204 213 template <class T> 205 214 inline TArray<T> operator - (const TArray<T>& a,const TArray<T>& b) -
trunk/SophyaLib/TArray/tmatrix.cc
r926 r958 1 // $Id: tmatrix.cc,v 1. 7 2000-04-13 18:39:14ansari Exp $1 // $Id: tmatrix.cc,v 1.8 2000-04-18 13:38:52 ansari Exp $ 2 2 // C.Magneville 04/99 3 3 #include "machdefs.h" … … 290 290 { 291 291 if (maxprt < 0) maxprt = max_nprt_; 292 int_4 npr = 0;292 uint_4 npr = 0; 293 293 Show(os, si); 294 294 if (ndim_ < 1) return; … … 299 299 if(kc > 0) os << ", "; 300 300 os << (*this)(kr, kc); npr++; 301 if (npr >= maxprt) {301 if (npr >= (uint_4) maxprt) { 302 302 if (npr < totsize_) os << "\n .... " << endl; return; 303 303 } -
trunk/SophyaLib/TArray/tmatrix.h
r956 r958 126 126 } 127 127 128 129 128 // Surcharge d'operateurs C = A (+,-) B 130 129 // $CHECK$ Reza 3/4/2000 Pas necessaire de redefinir les operateurs … … 132 131 // Doit-on le faire aussi pour les constantes ? - Fin de $CHECK$ Reza 3/4/2000 133 132 134 //! + : add matrixes \b a and \b b 133 /*! \ingroup TArray \fn operator+(const TMatrix<T>&,const TMatrix<T>&) 134 \brief + : add matrixes \b a and \b b */ 135 135 template <class T> 136 136 inline TMatrix<T> operator + (const TMatrix<T>& a,const TMatrix<T>& b) 137 137 {TMatrix<T> result(a); result.SetTemp(true); result.AddElt(b); return result;} 138 138 139 //! - : substract matrixes \b a and \b b 139 /*! \ingroup TArray \fn operator-(const TMatrix<T>&,const TMatrix<T>&) 140 \brief \- : substract matrixes \b a and \b b */ 140 141 template <class T> 141 142 inline TMatrix<T> operator - (const TMatrix<T>& a,const TMatrix<T>& b) … … 143 144 144 145 // Surcharge d'operateurs C = A * B 145 //! - : multiply matrixes \b a and \b b 146 /*! \ingroup TArray \fn operator*(const TMatrix<T>&,const TMatrix<T>&) 147 \brief * : multiply matrixes \b a and \b b */ 146 148 template <class T> inline TMatrix<T> operator * (const TMatrix<T>& a, const TMatrix<T>& b) 147 149 { TMatrix<T> result(a); result.SetTemp(true); return(result.Multiply(b)); }
Note:
See TracChangeset
for help on using the changeset viewer.