Index: /trunk/SophyaProg/Tests/zthr.cc
===================================================================
--- /trunk/SophyaProg/Tests/zthr.cc	(revision 3262)
+++ /trunk/SophyaProg/Tests/zthr.cc	(revision 3263)
@@ -8,4 +8,5 @@
 #include "tmatrix.h"
 #include "tvector.h"
+#include "matharr.h"
 #include "tarrinit.h"
 
@@ -17,7 +18,10 @@
   SOPHYA::ZThread SOPHYA::ZMutex ...
   Exemples d'execution
-  csh> time zthr mtx 2 500
+  csh> time zthr mtx 2 500     
   csh> time zthr arr 2 500
+  csh> time zthr arrdl 2 500
+  csh> time zthr arrmf 2 500
   csh> time zthr sync 4 1000
+  csh> time zthr syncp 4 1000
 */
  
@@ -74,5 +78,5 @@
   return;
 }
-// --- fonction de test simple avec calcul sur tableaux 
+// --- fonction de test simple avec calcul sur tableaux entier I4
 void arr_funzt(void *arg)
 {
@@ -90,4 +94,46 @@
   ares = (4*a1)+(12*a2);
   sprintf(buff, "arr-funzt(ThId=%d) EndOfOper", za->thid); 
+  PrtTim(buff);
+  return;
+}
+// --- fonction de test simple avec calcul de type DL sur tableaux double 1D
+void arrdl_funzt(void *arg)
+{
+  ztarg * za = (ztarg *)arg;
+  sa_size_t vsz = za->M*za->M;
+
+  cout << ">>>> arrdl-funzt(ThId=" << za->thid << " VecSz=M*M " << vsz  
+       << " V2=DLO4(V1) , NOp ~= 10*vsz=" << 10*vsz << endl;
+  
+  TVector<r_8> v1(vsz), v2(vsz); 
+  v1 = RegularSequence(1.,0.001);
+  char buff[128];
+  sprintf(buff, "arrdl-funzt(ThId=%d) EndOfInit", za->thid); 
+  PrtTim(buff);
+  for(sa_size_t i=0; i<vsz; i++) {
+    double x = v1(i);
+    v2(i) = x*(1+x*(x/2.+x*(x/6.+x*x/24.)));
+  }
+  sprintf(buff, "arrdl-funzt(ThId=%d) EndOfOper", za->thid); 
+  PrtTim(buff);
+  return;
+}
+// --- fonction de test simple avec calcul de type fonction mathematique sur tableaux double 1D
+void arrmf_funzt(void *arg)
+{
+  ztarg * za = (ztarg *)arg;
+  sa_size_t vsz = za->M*za->M;
+
+  cout << ">>>> arrmf-funzt(ThId=" << za->thid << " VecSz=M*M " << vsz  
+       << " V2=Sin(V1) , NOp ~= 10*vsz=" << 10*vsz << endl;
+  
+  TVector<r_8> v1(vsz), v2(vsz); 
+  v1 = RegularSequence(1.,0.001);
+  char buff[128];
+  sprintf(buff, "arrmf-funzt(ThId=%d) EndOfInit", za->thid); 
+  PrtTim(buff);
+  v2 = Sin(v1);
+
+  sprintf(buff, "arrmf-funzt(ThId=%d) EndOfOper", za->thid); 
   PrtTim(buff);
   return;
@@ -329,6 +375,8 @@
     cout << " Usage: zthr select N LM [Sz] " << endl;
     cout << "  select= sl -> simple loop with sleep " << endl;
-    cout << "  select= mtx -> matrix init and multiply mx1*mx2" << endl;
-    cout << "  select= arr -> array/matrix init and operation c1*a1+c2*a2 " << endl;
+    cout << "  select= mtx -> matrix<r_8> init and multiply mx1*mx2" << endl;
+    cout << "  select= arr -> array/matrix<int_4> init and operation c1*a1+c2*a2 " << endl;
+    cout << "  select= arrdl -> vectorOpe V2 ~= DLO4(V1), VSz=LM*LM " << endl;
+    cout << "  select= arrmf -> vectorOpe V2 = Sin(V1), VSz=LM*LM " << endl;
     cout << "  select= clk -> Mutex lock count  " << endl;
     cout << "  select= sync -> Thread synchronisation using ZMutex" << endl;
@@ -342,4 +390,5 @@
   string sel = arg[1];
   if ((sel != "sl") && (sel != "mtx") && (sel != "arr") && 
+      (sel != "arrdl") && (sel != "arrmf") && 
       (sel != "sync") && (sel != "syncp") && (sel != "clk")) {
     cout << "zthr/erreur argument sel (!= sl / mtx / arr / clk) " << endl;
@@ -361,5 +410,7 @@
   try {
     ResourceUsage res(ResourceUsage::RU_All);
-    if ((sel == "mtx") || (sel == "arr") || (sel == "sl") || (sel == "sync") || (sel == "syncp")) {
+    if ((sel == "mtx") || (sel == "arr") || (sel == "sl") || 
+	(sel == "arrdl") || (sel == "arrmf") ||
+	(sel == "sync") || (sel == "syncp")) {
       if ( (sel == "sync") || (sel == "syncp"))  mtvp = new MTVecPool(N,VSZ,M);
       vector<ztarg *> vza;
@@ -376,4 +427,6 @@
 	if (sel == "mtx")  pzt->setAction(mtx_funzt, vza[i]);
 	else if (sel == "arr")  pzt->setAction(arr_funzt, vza[i]);
+	else if (sel == "arrdl")  pzt->setAction(arrdl_funzt, vza[i]);
+	else if (sel == "arrmf")  pzt->setAction(arrmf_funzt, vza[i]);
 	else if (sel == "sync")  pzt->setAction(sync_funzt, vza[i]);
 	else if (sel == "syncp")  pzt->setAction(syncp_funzt, vza[i]);
