Changeset 813 in Sophya for trunk/SophyaLib/TArray/tarray.cc


Ignore:
Timestamp:
Apr 5, 2000, 5:44:19 PM (25 years ago)
Author:
ansari
Message:

Correction bug/amelioarions TArray,TMatrix,TVector - Reza 5/4/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/tarray.cc

    r804 r813  
    234234//  Possibilite de // , vectorisation
    235235template <class T>
    236 TArray<T>& TArray<T>::Set(Sequence seq)
    237 {
    238   if (NbDimensions() < 1)
    239     throw RangeCheckError("TArray<T>::Set(Sequence ) - Not Allocated Array ! ");
     236TArray<T>& TArray<T>::SetSeq(Sequence seq)
     237{
     238  if (NbDimensions() < 1)
     239    throw RangeCheckError("TArray<T>::SetSeq(Sequence ) - Not Allocated Array ! ");
    240240  T * pe;
    241241  uint_8 j,k;
     
    246246  }
    247247  else {    // Non regular data spacing ...
    248     uint_4 ka = MaxSizeKA();
     248    //    uint_4 ka = MaxSizeKA();
     249    uint_4 ka = 0;
    249250    uint_8 step = Step(ka);
    250251    uint_8 gpas = Size(ka);
    251     for(j=0; j<totsize_; j += Size(ka))  {
    252       pe = mNDBlock.Begin()+Offset(j);
    253       for(k=0; k<gpas; k++)  pe[k*step] = seq(j+k);
     252    uint_8 naxa = Size()/Size(ka);
     253    for(j=0; j<naxa; j++)  {
     254      pe = mNDBlock.Begin()+Offset(ka,j);
     255      for(k=0; k<gpas; k++)  pe[k*step] = seq(j*gpas+k);
    254256    }
    255257  }
     
    260262
    261263template <class T>
    262 TArray<T>& TArray<T>::Set(T x)
    263 {
    264   if (NbDimensions() < 1)
    265     throw RangeCheckError("TArray<T>::Set(T )  - Not Allocated Array ! ");
     264TArray<T>& TArray<T>::SetT(T x)
     265{
     266  if (NbDimensions() < 1)
     267    throw RangeCheckError("TArray<T>::SetT(T )  - Not Allocated Array ! ");
    266268  T * pe;
    267269  uint_8 j,k;
     
    276278    uint_8 step = Step(ka);
    277279    uint_8 gpas = Size(ka)*step;
    278     for(j=0; j<totsize_; j += Size(ka))  {
    279       pe = mNDBlock.Begin()+Offset(j);
     280    uint_8 naxa = Size()/Size(ka);
     281    for(j=0; j<naxa; j++)  {
     282      pe = mNDBlock.Begin()+Offset(ka,j);
    280283      for(k=0; k<gpas; k+=step)  pe[k] = x;
    281284    }
     
    301304    uint_8 step = Step(ka);
    302305    uint_8 gpas = Size(ka)*step;
    303     for(j=0; j<totsize_; j += Size(ka))  {
    304       pe = mNDBlock.Begin()+Offset(j);
     306    uint_8 naxa = Size()/Size(ka);
     307    for(j=0; j<naxa; j++)  {
     308      pe = mNDBlock.Begin()+Offset(ka,j);
    305309      for(k=0; k<gpas; k+=step)  pe[k] += x;
    306310    }
     
    326330    uint_8 step = Step(ka);
    327331    uint_8 gpas = Size(ka)*step;
    328     for(j=0; j<totsize_; j += Size(ka))  {
    329       pe = mNDBlock.Begin()+Offset(j);
     332    uint_8 naxa = Size()/Size(ka);
     333    for(j=0; j<naxa; j++)  {
     334      pe = mNDBlock.Begin()+Offset(ka,j);
    330335      for(k=0; k<gpas; k+=step)  pe[k] -= x;
    331336    }
     
    351356    uint_8 step = Step(ka);
    352357    uint_8 gpas = Size(ka)*step;
    353     for(j=0; j<totsize_; j += Size(ka))  {
    354       pe = mNDBlock.Begin()+Offset(j);
     358    uint_8 naxa = Size()/Size(ka);
     359    for(j=0; j<naxa; j++)  {
     360      pe = mNDBlock.Begin()+Offset(ka,j);
    355361      for(k=0; k<gpas; k+=step)  pe[k] *= x;
    356362    }
     
    376382    uint_8 step = Step(ka);
    377383    uint_8 gpas = Size(ka)*step;
    378     for(j=0; j<totsize_; j += Size(ka))  {
    379       pe = mNDBlock.Begin()+Offset(j);
     384    uint_8 naxa = Size()/Size(ka);
     385    for(j=0; j<naxa; j++)  {
     386      pe = mNDBlock.Begin()+Offset(ka,j);
    380387      for(k=0; k<gpas; k+=step)  pe[k] /= x;
    381388    }
     
    402409    uint_8 step = Step(ka);
    403410    uint_8 gpas = Size(ka)*step;
    404     for(j=0; j<totsize_; j += Size(ka))  {
    405       pe = mNDBlock.Begin()+Offset(j);
     411    uint_8 naxa = Size()/Size(ka);
     412    for(j=0; j<naxa; j++)  {
     413      pe = mNDBlock.Begin()+Offset(ka,j);
    406414      for(k=0; k<gpas; k+=step)  pe[k] = x-pe[k];
    407415    }
     
    427435    uint_8 step = Step(ka);
    428436    uint_8 gpas = Size(ka)*step;
    429     for(j=0; j<totsize_; j += Size(ka))  {
    430       pe = mNDBlock.Begin()+Offset(j);
     437    uint_8 naxa = Size()/Size(ka);
     438    for(j=0; j<naxa; j++)  {
     439      pe = mNDBlock.Begin()+Offset(ka,j);
    431440      for(k=0; k<gpas; k+=step)  pe[k] = x/pe[k];
    432441    }
     
    442451  if (NbDimensions() < 1)
    443452    throw RangeCheckError("TArray<T>::AddElt(const TArray<T>& )  - Not Allocated Array ! ");
    444   if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::AddElt(const TArray<T>&)")) ;
     453  if (!CompareSizes(a))
     454    throw(SzMismatchError("TArray<T>::AddElt(const TArray<T>&) SizeMismatch")) ;
    445455
    446456  T * pe;
     
    460470    uint_8 stepa = a.Step(ax);
    461471    uint_8 gpas = Size(ax)*step;
    462     for(j=0; j<totsize_; j += Size(ax))  {
    463       pe = mNDBlock.Begin()+Offset(j);
    464       pea = a.DataBlock().Begin()+a.Offset(j);
     472    uint_8 naxa = Size()/Size(ax);
     473    for(j=0; j<naxa; j++)  {
     474      pe = mNDBlock.Begin()+Offset(ax,j);
     475      pea = a.DataBlock().Begin()+a.Offset(ax,j);
    465476      for(k=0, ka=0;  k<gpas;  k+=step, ka+=stepa)  pe[k] += pea[ka];
    466477    }
     
    474485  if (NbDimensions() < 1)
    475486    throw RangeCheckError("TArray<T>::SubElt(const TArray<T>& )  - Not Allocated Array ! ");
    476   if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::SubElt(const TArray<T>&)")) ;
     487  if (!CompareSizes(a))
     488    throw(SzMismatchError("TArray<T>::SubElt(const TArray<T>&) SizeMismatch")) ;
    477489
    478490  T * pe;
     
    492504    uint_8 stepa = a.Step(ax);
    493505    uint_8 gpas = Size(ax)*step;
    494     for(j=0; j<totsize_; j += Size(ax))  {
    495       pe = mNDBlock.Begin()+Offset(j);
    496       pea = a.DataBlock().Begin()+a.Offset(j);
     506    uint_8 naxa = Size()/Size(ax);
     507    for(j=0; j<naxa; j++)  {
     508      pe = mNDBlock.Begin()+Offset(ax,j);
     509      pea = a.DataBlock().Begin()+a.Offset(ax,j);
    497510      for(k=0, ka=0;  k<gpas;  k+=step, ka+=stepa)  pe[k] -= pea[ka];
    498511    }
     
    507520  if (NbDimensions() < 1)
    508521    throw RangeCheckError("TArray<T>::MulElt(const TArray<T>& )  - Not Allocated Array ! ");
    509   if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::MulElt(const TArray<T>&)")) ;
     522  if (!CompareSizes(a))
     523    throw(SzMismatchError("TArray<T>::MulElt(const TArray<T>&) SizeMismatch")) ;
    510524
    511525  T * pe;
     
    525539    uint_8 stepa = a.Step(ax);
    526540    uint_8 gpas = Size(ax)*step;
    527     for(j=0; j<totsize_; j += Size(ax))  {
    528       pe = mNDBlock.Begin()+Offset(j);
    529       pea = a.DataBlock().Begin()+a.Offset(j);
     541    uint_8 naxa = Size()/Size(ax);
     542    for(j=0; j<naxa; j++)  {
     543      pe = mNDBlock.Begin()+Offset(ax,j);
     544      pea = a.DataBlock().Begin()+a.Offset(ax,j);
    530545      for(k=0, ka=0;  k<gpas;  k+=step, ka+=stepa)  pe[k] *= pea[ka];
    531546    }
     
    540555  if (NbDimensions() < 1)
    541556    throw RangeCheckError("TArray<T>::DivElt(const TArray<T>& )  - Not Allocated Array ! ");
    542   if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::DivElt(const TArray<T>&)")) ;
     557  if (!CompareSizes(a))
     558    throw(SzMismatchError("TArray<T>::DivElt(const TArray<T>&) SizeMismatch")) ;
    543559
    544560  T * pe;
     
    558574    uint_8 stepa = a.Step(ax);
    559575    uint_8 gpas = Size(ax)*step;
    560     for(j=0; j<totsize_; j += Size(ax))  {
    561       pe = mNDBlock.Begin()+Offset(j);
    562       pea = a.DataBlock().Begin()+a.Offset(j);
     576    uint_8 naxa = Size()/Size(ax);
     577    for(j=0; j<naxa; j++)  {
     578      pe = mNDBlock.Begin()+Offset(ax,j);
     579      pea = a.DataBlock().Begin()+a.Offset(ax,j);
    563580      for(k=0, ka=0;  k<gpas;  k+=step, ka+=stepa)  pe[k] /= pea[ka];
    564581    }
     
    572589  if (NbDimensions() < 1)
    573590    throw RangeCheckError("TArray<T>::CopyElt(const TArray<T>& )  - Not Allocated Array ! ");
    574   if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::MultElt(const TArray<T>&)")) ;
     591  if (!CompareSizes(a))
     592    throw(SzMismatchError("TArray<T>::MultElt(const TArray<T>&) SizeMismatch")) ;
    575593
    576594  T * pe;
     
    590608    uint_8 stepa = a.Step(ax);
    591609    uint_8 gpas = Size(ax)*step;
    592     for(j=0; j<totsize_; j += Size(ax))  {
    593       pe = mNDBlock.Begin()+Offset(j);
    594       pea = a.DataBlock().Begin()+a.Offset(j);
     610    uint_8 naxa = Size()/Size(ax);
     611    for(j=0; j<naxa; j++)  {
     612      pe = mNDBlock.Begin()+Offset(ax,j);
     613      pea = a.DataBlock().Begin()+a.Offset(ax,j);
    595614      for(k=0, ka=0;  k<gpas;  k+=step, ka+=stepa)  pe[k] = pea[ka];
    596615    }
     
    619638    uint_8 step = Step(ka);
    620639    uint_8 gpas = Size(ka)*step;
    621     for(j=0; j<totsize_; j += Size(ka))  {
    622       pe = mNDBlock.Begin()+Offset(j);
     640    uint_8 naxa = Size()/Size(ka);
     641    for(j=0; j<naxa; j++)  {
     642      pe = mNDBlock.Begin()+Offset(ka,j);
    623643      for(k=0; k<gpas; k+=step)  ret += pe[k] ;
    624644    }
     
    645665    uint_8 step = Step(ka);
    646666    uint_8 gpas = Size(ka)*step;
    647     for(j=0; j<totsize_; j += Size(ka))  {
    648       pe = mNDBlock.Begin()+Offset(j);
     667    uint_8 naxa = Size()/Size(ka);
     668    for(j=0; j<naxa; j++)  {
     669      pe = mNDBlock.Begin()+Offset(ka,j);
    649670      for(k=0; k<gpas; k+=step)  ret *= pe[k] ;
    650671    }
     
    660681
    661682template <class T>
    662 string TArray<T>::DataType() const
    663 {
    664   string rs = typeid(T).name();
     683string TArray<T>::InfoString() const
     684{
     685  string rs = "TArray<" ;
     686  rs += typeid(T).name();
     687  rs += "> ";
    665688  return(rs);
    666689}
     
    693716    }
    694717  }
    695   os << "\n" << endl;
     718  os << endl;
    696719}
    697720
Note: See TracChangeset for help on using the changeset viewer.