Changeset 1072 in Sophya
- Timestamp:
- Jul 16, 2000, 1:28:19 AM (25 years ago)
- Location:
- trunk/SophyaLib/TArray
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/tarray.cc
r1050 r1072 663 663 Divide two TArrays *this = (*this)/a 664 664 \param fginv == true : Perfoms the inverse division (*this = a/(*this)) 665 \param divzero == true : if a(i)==0. result is set to zero: (*this)(i)==0. 665 666 */ 666 667 template <class T> 667 TArray<T>& TArray<T>::DivElt(const TArray<T>& a, bool fginv )668 TArray<T>& TArray<T>::DivElt(const TArray<T>& a, bool fginv, bool divzero) 668 669 { 669 670 if (NbDimensions() < 1) … … 681 682 pe = Data(); 682 683 pea = a.Data(); 683 if (fginv) 684 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) pe[k] = pea[ka]/pe[k]; 685 else 686 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) pe[k] /= pea[ka] ; 684 if(divzero) { 685 if (fginv) 686 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) 687 {if(pe[k]==(T)0) pe[k] = (T)0; else pe[k] = pea[ka]/pe[k];} 688 else 689 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) 690 {if(pea[k]==(T)0) pe[k] = (T)0; else pe[k] /= pea[ka] ;} 691 } else { 692 if (fginv) 693 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) pe[k] = pea[ka]/pe[k]; 694 else 695 for(k=0, ka=0; k<maxx; k+=step, ka+=stepa ) pe[k] /= pea[ka] ; 696 } 687 697 } 688 698 else { // Non regular data spacing ... … … 695 705 pe = mNDBlock.Begin()+Offset(ax,j); 696 706 pea = a.DataBlock().Begin()+a.Offset(ax,j); 697 if (fginv) 698 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] = pea[ka]/pe[k]; 699 else 700 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] /= pea[ka]; 707 if(divzero) { 708 if (fginv) 709 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) 710 {if(pe[k]==(T)0) pe[k] = (T)0; else pe[k] = pea[ka]/pe[k];} 711 else 712 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) 713 {if(pea[k]==(T)0) pe[k] = (T)0; else pe[k] /= pea[ka];} 714 } else { 715 if (fginv) 716 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] = pea[ka]/pe[k]; 717 else 718 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] /= pea[ka]; 719 } 701 720 } 702 721 } -
trunk/SophyaLib/TArray/tarray.h
r976 r1072 147 147 // Multiplication, division element par element les deux tableaux 148 148 virtual TArray<T>& MulElt(const TArray<T>& a); 149 virtual TArray<T>& DivElt(const TArray<T>& a, bool fginv=false );149 virtual TArray<T>& DivElt(const TArray<T>& a, bool fginv=false, bool divzero=false); 150 150 // Recopie des valeurs, element par element 151 151 virtual TArray<T>& CopyElt(const TArray<T>& a);
Note:
See TracChangeset
for help on using the changeset viewer.