Changeset 2587 in Sophya for trunk/SophyaLib/TArray


Ignore:
Timestamp:
Jul 30, 2004, 3:31:39 PM (21 years ago)
Author:
ansari
Message:

Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004

File:
1 edited

Legend:

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

    r2575 r2587  
    533533    pe = Data();
    534534    per = res.Data();
    535     for(k=0; k<maxx; k++) { *per = (*pe)+x;  per++;  pe++; }
     535    for(k=0; k<maxx; k++)  *per++ = *pe++ + x; 
    536536  }
    537537  else {    // Non regular data spacing ...
     
    577577    per = res.Data();
    578578    if (!fginv)
    579       for(k=0; k<maxx; k++) { *per = (*pe)-x;  per++;  pe++; }
     579      for(k=0; k<maxx; k++)  *per++ = *pe++ - x; 
    580580    else
    581       for(k=0; k<maxx; k++) { *per = x-(*pe);  per++;  pe++; }
     581      for(k=0; k<maxx; k++)  *per++ = x - *pe++;
    582582  }
    583583  else {    // Non regular data spacing ...
     
    624624    pe = Data();
    625625    per = res.Data();
    626     for(k=0; k<maxx; k++) { *per = (*pe)*x;  per++;  pe++; }
     626    for(k=0; k<maxx; k++)  *per++ = *pe++ * x; 
    627627  }
    628628  else {    // Non regular data spacing ...
     
    670670    per = res.Data();
    671671    if (!fginv)
    672       for(k=0; k<maxx; k++) { *per = (*pe)/x;  per++;  pe++; }
     672      for(k=0; k<maxx; k++)  *per++ = *pe++ / x; 
    673673    else
    674       for(k=0; k<maxx; k++) { *per = x/(*pe);  per++;  pe++; }
     674      for(k=0; k<maxx; k++) *per++ = x / *pe++;
    675675  }
    676676  else {    // Non regular data spacing ...
     
    715715    pe = Data();
    716716    per = res.Data();
    717     for(k=0; k<maxx; k++) { *per = -(*pe);  per++;  pe++; }
     717    for(k=0; k<maxx; k++)  *per++ = -(*pe++); 
    718718  }
    719719  else {    // Non regular data spacing ...
     
    771771    pea = a.Data();
    772772    per = res.Data();
    773     for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe + *pea ;
     773    //    for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe + *pea ;
     774    for(k=0; k<maxx;  k++)  *per++ = *pe++ + *pea++ ;
    774775  }
    775776  else {    // Non regular data spacing ...
     
    839840    per = res.Data();
    840841    if (!fginv)
    841       for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe - *pea ;
     842      for(k=0; k<maxx;  k++)  *per++ = *pe++ - *pea++ ;
    842843    else
    843       for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pea - *pe ;
     844      for(k=0; k<maxx;  k++)  *per++ = *pea++ - *pe++ ;
    844845  }
    845846  else {    // Non regular data spacing ...
     
    910911    pea = a.Data();
    911912    per = res.Data();
    912     for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = (*pe) * (*pea) ;
     913    for(k=0; k<maxx;  k++)  *per++ = *pe++ * *pea++ ;
    913914  }
    914915  else {    // Non regular data spacing ...
     
    981982    if(divzero) {
    982983      if (!fginv)
    983         for(k=0; k<maxx;  k++, pe++, pea++, per++
    984           if (*pea==(T)0) *per = (T)0;  else   *per = *pe / *pea ;
     984        for(k=0; k<maxx;  k++
     985          if (*pea==(T)0) *per = (T)0;  else   *per++ = *pe++ / *pea++ ;
    985986      else
    986         for(k=0; k<maxx;  k++, pe++, pea++, per++
    987           if (*pe==(T)0)  *per = (T)0;  else   *per = *pea / *pe ;
     987        for(k=0; k<maxx;  k++
     988          if (*pe==(T)0)  *per = (T)0;  else   *per++ = *pea++ / *pe++ ;
    988989    }
    989990    else {
    990991      if (!fginv)
    991         for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = *pe / *pea ;
     992        for(k=0; k<maxx;  k++)  *per++ = *pe++ / *pea++ ;
    992993      else
    993         for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = *pea / *pe ;
     994        for(k=0; k<maxx;  k++)  *per = *pea++ / *pe++ ;
    994995    }
    995996  }
     
    10521053  sa_size_t j,k;
    10531054  if (smo && (AvgStep() > 0) && (a.AvgStep() > 0) )   {  // regularly spaced elements
    1054     sa_size_t step = AvgStep();
    1055     sa_size_t stepa = a.AvgStep();
    1056     sa_size_t maxx = totsize_*step;
    1057     pe = Data();
    1058     pea = a.Data();
    1059     for(k=0;  k<maxx;  k+=step, pe+=step, pea+=stepa )  *pe = *pea ;
     1055    if (IsPacked() && a.IsPacked())  memcpy(Data(), a.Data(), totsize_*sizeof(T)); // Packed arrays
     1056    else {
     1057      sa_size_t step = AvgStep();
     1058      sa_size_t stepa = a.AvgStep();
     1059      sa_size_t maxx = totsize_*step;
     1060      pe = Data();
     1061      pea = a.Data();
     1062      for(k=0;  k<maxx;  k+=step, pe+=step, pea+=stepa )  *pe = *pea ;
     1063    }
    10601064  }
    10611065  else {    // Non regular data spacing ...
     
    11291133    pe = Data();
    11301134    pea = a.Data();
    1131     for(k=0; k<maxx; k++, pe++, pea++)  res += (*pe)*(*pea);
     1135    for(k=0; k<maxx; k++)  res += *pe++ * *pea++;
    11321136  }
    11331137  else {    // Non regular data spacing ...
Note: See TracChangeset for help on using the changeset viewer.