Index: /trunk/SophyaProg/Tests/Makefile
===================================================================
--- /trunk/SophyaProg/Tests/Makefile	(revision 2581)
+++ /trunk/SophyaProg/Tests/Makefile	(revision 2582)
@@ -27,5 +27,5 @@
 endif
 ifeq ($(MACHEROS),Darwin)
-LIBS := -L$(LIB) -lLinAlg $(LIBS) -L$(EXTLIBPATH) -llapack -lblas -L/sw/lib -lg2c
+LIBS := -L$(LIB) -lLinAlg $(LIBS) -L$(EXTLIBPATH) -framework Accelerate
 endif
 
@@ -34,7 +34,7 @@
 #  Sur MacOSX, LinAlg+lapack ne peuvent pas etre mis ds un
 #  shared lib (pb symbols globaux)
-ifeq ($(MACHEROS),Darwin)
-LIBS := -L$(LIB) -lLinAlg $(LIBS) -L$(EXTLIBPATH) -llapack -lblas -lg2c
-endif
+# ifeq ($(MACHEROS),Darwin)
+# LIBS := -L$(LIB) -lLinAlg $(LIBS) -L$(EXTLIBPATH) -llapack -lblas -lg2c
+# endif
 
 LDLIBS := $(LIBS) $(LDLIBS) 
Index: /trunk/SophyaProg/Tests/carrt.cc
===================================================================
--- /trunk/SophyaProg/Tests/carrt.cc	(revision 2581)
+++ /trunk/SophyaProg/Tests/carrt.cc	(revision 2582)
@@ -251,4 +251,42 @@
   }
   else cout << "(9) OK   Test C=2A+2*B  OK " << endl; 
+
+  a = 10;
+  b = 4;
+  c = 3*a-2*b;
+  if (prtlev > 0)  cout << "(10) A=10, B=4, C = 3*A-2*B = " << c << endl;
+  getMinMax(c, min, max);
+  if ((min != 22) || (max != 22)) {
+    cout << "(10) !!! ERROR Test C = 3*A-2*B  Min=" << min << " Max=" << max << endl;
+    rc += 512;
+  }
+  else cout << "(10) OK   Test C = 3*A-2*B  OK " << endl; 
+
+  c = 3*a+2*b;
+  if (prtlev > 0)  cout << "(11) A=10, B=4, C = 3*A+2*B = " << c << endl;
+  getMinMax(c, min, max);
+  if ((min != 38) || (max != 38)) {
+    cout << "(11) !!! ERROR Test C = 3*A+2*B  Min=" << min << " Max=" << max << endl;
+    rc += 512;
+  }
+  else cout << "(11) OK   Test C = 3*A+2*B  OK " << endl; 
+
+  a.MulElt(b+2,c);
+  if (prtlev > 0)  cout << "(12) A=10, B=4, a.MulElt(b+2,c) = " << c << endl;
+  getMinMax(c, min, max);
+  if ((min != 60) || (max != 60)) {
+    cout << "(12) !!! ERROR Test a.MulElt(b+2,c) Min=" << min << " Max=" << max << endl;
+    rc += 1024;
+  }
+  else cout << "(12) OK   Test A.MulElt(B+2,C)  OK " << endl; 
+
+  (3*a).DivElt(b+2,c);
+  if (prtlev > 0)  cout << "(13) A=10, B=4, (3*a).DivElt(b+2,c) C = " << c << endl;
+  getMinMax(c, min, max);
+  if ((min != 5) || (max != 5)) {
+    cout << "(13) !!! ERROR Test (3*a).DivElt(b+2,c) Min=" << min << " Max=" << max << endl;
+    rc += 1024;
+  }
+  else cout << "(13) OK  Test (3*A).DivElt(B+2,C)  OK " << endl; 
   
   return(rc);
@@ -259,5 +297,5 @@
   cout << "\n -----> Testing TMatrix operation TMatrix<r_4>(nr=" << nr << ",nc=" 
        << nc << " ) " << endl;
-  cout << " ----> ODO (Diff. Mem. Mapping) A: CMemoryMapping AR,B,C: FortranMemoryMapping" << endl;
+  cout << " ----> ODO (Diff. Mem. Mapping) A,CC: CMemoryMapping AR,B,C: FortranMemoryMapping" << endl;
 
   int rc = 0;
@@ -367,9 +405,89 @@
   getMinMax(c, min, max);
   if ((fabs(min-2.) > 0.0001) || (fabs(max-2.) > 0.0001)) {
-    cout << "(9) !!! ERROR Test3 C=2A+2*B  Min=" << min << " Max=" << max << endl;
+    cout << "(9) !!! ERROR Test C=2A+2*B  Min=" << min << " Max=" << max << endl;
     rc += 256;
   }
   else cout << "(9) OK   Test3 C=2A+2*B  OK " << endl; 
 
+// ----------------------
+// Operation de type array +-*/ array 
+
+  a = 10;
+  b = 4;
+
+  (3.f*a).SubElt(2.f*b,c);
+  if (prtlev > 0)  cout << "(10) A=10, B=4, (3*a).SubElt(2*b,c)  C=" << c << endl;
+  getMinMax(c, min, max);
+  if ((fabs(min-22.) > 0.0001) || (fabs(max-22.) > 0.0001)) {
+    cout << "(10) !!! ERROR Test (3*a).SubElt(2*b,c)  Min=" << min << " Max=" << max << endl;
+    rc += 512;
+  }
+  else cout << "(10) OK   Test (3*a).SubElt(2.*b,c)  OK " << endl; 
+
+  (3.f*a).AddElt(2.f*b,c);
+  if (prtlev > 0)  cout << "(11) A=10, B=4, (3*a).AddElt(2*b,c) C= " << c << endl;
+  getMinMax(c, min, max);
+  if ((fabs(min-38.) > 0.0001) || (fabs(max-38.) > 0.0001)) {
+    cout << "(11) !!! ERROR Test (3*A).AddElt(2.*B,C)  Min=" << min << " Max=" << max << endl;
+    rc += 512;
+  }
+  else cout << "(11) OK   Test (3*a).AddElt(2*b,c) OK " << endl; 
+
+  a.MulElt(b+2.f,c);
+  if (prtlev > 0)  cout << "(12) A=10, B=4, a.MulElt(b+2,c) = " << c << endl;
+  getMinMax(c, min, max);
+  if ((fabs(min-60.) > 0.0001) || (fabs(max-60.) > 0.0001)) {
+    cout << "(12) !!! ERROR Test a.MulElt(b+2,c) Min=" << min << " Max=" << max << endl;
+    rc += 1024;
+  }
+  else cout << "(12) OK   Test A.MulElt(B+2,C)  OK " << endl; 
+
+  (3.f*a).DivElt(b+2.f,c);
+  if (prtlev > 0)  cout << "(13) A=10, B=4, (3*a).DivElt(b+2,c) C = " << c << endl;
+  getMinMax(c, min, max);
+  if ((fabs(min-5.) > 0.0001) || (fabs(max-5.) > 0.0001)) {
+    cout << "(13) !!! ERROR Test (3*a).DivElt(b+2,c) Min=" << min << " Max=" << max << endl;
+    rc += 1024;
+  }
+  else cout << "(13) OK  Test (3*A).DivElt(B+2,C)  OK " << endl; 
+
+  TMatrix<r_4> cc(nr,nc,BaseArray::CMemoryMapping);
+
+  (3.f*a).SubElt(2.f*b,cc);
+  if (prtlev > 0)  cout << "(14) A=10, B=4, (3*a).SubElt(2*b,cc)  " << cc << endl;
+  getMinMax(cc, min, max);
+  if ((fabs(min-22.) > 0.0001) || (fabs(max-22.) > 0.0001)) {
+    cout << "(14) !!! ERROR Test (3*a).SubElt(2*b,cc)  Min=" << min << " Max=" << max << endl;
+    rc += 2048;
+  }
+  else cout << "(14) OK   Test (3*A).SubElt(2*B,CC)  OK " << endl; 
+
+
+  (3.f*a).AddElt(2.f*b,cc);
+  if (prtlev > 0)  cout << "(15) A=10, B=4, (3*a).AddElt(2*b,cc) CC= " << cc << endl;
+  getMinMax(cc, min, max);
+  if ((fabs(min-38.) > 0.0001) || (fabs(max-38.) > 0.0001)) {
+    cout << "(15) !!! ERROR Test (3*a).AddElt(2*b,c)  Min=" << min << " Max=" << max << endl;
+    rc += 4096;
+  }
+  else cout << "(15) OK   Test (3*A).AddElt(2*B,CC) OK " << endl; 
+
+  a.MulElt(b+2.f,cc);
+  if (prtlev > 0)  cout << "(16) A=10, B=4, a.MulElt(b+2,c) = " << cc << endl;
+  getMinMax(cc, min, max);
+  if ((fabs(min-60.) > 0.0001) || (fabs(max-60.) > 0.0001)) {
+    cout << "(16) !!! ERROR Test A.MulElt(B+2,CC) Min=" << min << " Max=" << max << endl;
+    rc += 8192;
+  }
+  else cout << "(16) OK   Test A.MulElt(B+2,C)  OK " << endl; 
+
+  (3.f*a).DivElt(b+2.f,cc);
+  if (prtlev > 0)  cout << "(17) A=10, B=4, (3*a).DivElt(b+2,cc) C = " << cc << endl;
+  getMinMax(cc, min, max);
+  if ((fabs(min-5.) > 0.0001) || (fabs(max-5.) > 0.0001)) {
+    cout << "(17) !!! ERROR Test (3*a).DivElt(b+2,c) Min=" << min << " Max=" << max << endl;
+    rc += 16384;
+  }
+  else cout << "(17) OK  Test (3*A).DivElt(B+2,CC)  OK " << endl; 
   return(rc);
 
Index: /trunk/SophyaProg/Tests/ovharr.cc
===================================================================
--- /trunk/SophyaProg/Tests/ovharr.cc	(revision 2581)
+++ /trunk/SophyaProg/Tests/ovharr.cc	(revision 2582)
@@ -359,5 +359,5 @@
 	// m4 = m1*m2 est une multiplication de matrice avec les TMatrix<T>
 	Matrix * m4 = new Matrix(*m1);
-	m4->MulElt(*m2);  
+	m4->MulElt(*m2,*m4);  
 
 	delete m1; 
@@ -385,5 +385,5 @@
 	Matrix m3 = m1 + m2;
 	Matrix m4(m1);
-	m4.MulElt(m2); 
+	m4.MulElt(m2,m4); 
       }
     }
