Index: /trunk/SophyaLib/TArray/tarray.cc
===================================================================
--- /trunk/SophyaLib/TArray/tarray.cc	(revision 2586)
+++ /trunk/SophyaLib/TArray/tarray.cc	(revision 2587)
@@ -533,5 +533,5 @@
     pe = Data();
     per = res.Data();
-    for(k=0; k<maxx; k++) { *per = (*pe)+x;  per++;  pe++; }
+    for(k=0; k<maxx; k++)  *per++ = *pe++ + x;  
   }
   else {    // Non regular data spacing ...
@@ -577,7 +577,7 @@
     per = res.Data();
     if (!fginv) 
-      for(k=0; k<maxx; k++) { *per = (*pe)-x;  per++;  pe++; }
+      for(k=0; k<maxx; k++)  *per++ = *pe++ - x;  
     else 
-      for(k=0; k<maxx; k++) { *per = x-(*pe);  per++;  pe++; }
+      for(k=0; k<maxx; k++)  *per++ = x - *pe++; 
   }
   else {    // Non regular data spacing ...
@@ -624,5 +624,5 @@
     pe = Data();
     per = res.Data();
-    for(k=0; k<maxx; k++) { *per = (*pe)*x;  per++;  pe++; }
+    for(k=0; k<maxx; k++)  *per++ = *pe++ * x;  
   }
   else {    // Non regular data spacing ...
@@ -670,7 +670,7 @@
     per = res.Data();
     if (!fginv) 
-      for(k=0; k<maxx; k++) { *per = (*pe)/x;  per++;  pe++; }
+      for(k=0; k<maxx; k++)  *per++ = *pe++ / x;  
     else 
-      for(k=0; k<maxx; k++) { *per = x/(*pe);  per++;  pe++; }
+      for(k=0; k<maxx; k++) *per++ = x / *pe++; 
   }
   else {    // Non regular data spacing ...
@@ -715,5 +715,5 @@
     pe = Data();
     per = res.Data();
-    for(k=0; k<maxx; k++) { *per = -(*pe);  per++;  pe++; }
+    for(k=0; k<maxx; k++)  *per++ = -(*pe++);  
   }
   else {    // Non regular data spacing ...
@@ -771,5 +771,6 @@
     pea = a.Data();
     per = res.Data();
-    for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe + *pea ;
+    //    for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe + *pea ;
+    for(k=0; k<maxx;  k++)  *per++ = *pe++ + *pea++ ;
   }
   else {    // Non regular data spacing ...
@@ -839,7 +840,7 @@
     per = res.Data();
     if (!fginv) 
-      for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pe - *pea ;
+      for(k=0; k<maxx;  k++)  *per++ = *pe++ - *pea++ ;
     else 
-      for(k=0; k<maxx;  k++, pe++, pea++, per++)  *per = *pea - *pe ;
+      for(k=0; k<maxx;  k++)  *per++ = *pea++ - *pe++ ;
   }
   else {    // Non regular data spacing ...
@@ -910,5 +911,5 @@
     pea = a.Data();
     per = res.Data();
-    for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = (*pe) * (*pea) ;
+    for(k=0; k<maxx;  k++)  *per++ = *pe++ * *pea++ ;
   }
   else {    // Non regular data spacing ...
@@ -981,15 +982,15 @@
     if(divzero) {
       if (!fginv) 
-        for(k=0; k<maxx;  k++, pe++, pea++, per++ )  
-          if (*pea==(T)0) *per = (T)0;  else   *per = *pe / *pea ;
+        for(k=0; k<maxx;  k++)  
+          if (*pea==(T)0) *per = (T)0;  else   *per++ = *pe++ / *pea++ ;
       else 
-        for(k=0; k<maxx;  k++, pe++, pea++, per++ )  
-          if (*pe==(T)0)  *per = (T)0;  else   *per = *pea / *pe ;
+        for(k=0; k<maxx;  k++)  
+          if (*pe==(T)0)  *per = (T)0;  else   *per++ = *pea++ / *pe++ ;
     }
     else {
       if (!fginv) 
-        for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = *pe / *pea ;
+        for(k=0; k<maxx;  k++)  *per++ = *pe++ / *pea++ ;
       else
-        for(k=0; k<maxx;  k++, pe++, pea++, per++ )  *per = *pea / *pe ;
+        for(k=0; k<maxx;  k++)  *per = *pea++ / *pe++ ;
     }
   }
@@ -1052,10 +1053,13 @@
   sa_size_t j,k;
   if (smo && (AvgStep() > 0) && (a.AvgStep() > 0) )   {  // regularly spaced elements
-    sa_size_t step = AvgStep();
-    sa_size_t stepa = a.AvgStep();
-    sa_size_t maxx = totsize_*step;
-    pe = Data();
-    pea = a.Data();
-    for(k=0;  k<maxx;  k+=step, pe+=step, pea+=stepa )  *pe = *pea ;
+    if (IsPacked() && a.IsPacked())  memcpy(Data(), a.Data(), totsize_*sizeof(T)); // Packed arrays
+    else {
+      sa_size_t step = AvgStep();
+      sa_size_t stepa = a.AvgStep();
+      sa_size_t maxx = totsize_*step;
+      pe = Data();
+      pea = a.Data();
+      for(k=0;  k<maxx;  k+=step, pe+=step, pea+=stepa )  *pe = *pea ;
+    }
   }
   else {    // Non regular data spacing ...
@@ -1129,5 +1133,5 @@
     pe = Data();
     pea = a.Data();
-    for(k=0; k<maxx; k++, pe++, pea++)  res += (*pe)*(*pea);
+    for(k=0; k<maxx; k++)  res += *pe++ * *pea++;
   }
   else {    // Non regular data spacing ...
