Index: Pi/C/MPI/Pi_MPI.c
===================================================================
--- Pi/C/MPI/Pi_MPI.c	(revision 246)
+++ Pi/C/MPI/Pi_MPI.c	(revision 247)
@@ -1,10 +1,10 @@
 //
 // Estimation of Pi using Monte Carlo exploration process
-// gcc -std=c99 -O3 -o Pi Pi.c -lm 
-// Emmanuel Quemener <emmanuel.quemener@ens-lyon.fr>
+// Cecill v2 Emmanuel QUEMENER <emmanuel.quemener@gmail.com>
+// gcc -std=c99 -O3 -o Pi_MPI Pi_MPI.c -lm
 
 // Needed for gethostname
-#define _BSD_SOURCE
+#define _DEFAULT_SOURCE
 #include <sys/unistd.h>
 
 #include <math.h>
@@ -13,7 +13,6 @@
 #include <limits.h>
 #include <mpi.h>
 #include <stddef.h>
-
 #include <sys/time.h>
 
 // Marsaglia RNG very simple implementation
@@ -144,8 +143,7 @@
 
   unsigned int seed_z=362436069,seed_w=52128862;
   LENGTH iterations=ITERATIONS,inside[8192],insides,part_inside,part_iterations;
-  int numtasks,rank,rc,tag=1,i;
-  float pi;
+  int NumberProcesses,rank,rc,tag=1,i;
 
   char hostname[128];
 
@@ -162,7 +160,7 @@
     MPI_Abort(MPI_COMM_WORLD, rc);
   }
 
-  MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
+  MPI_Comm_size(MPI_COMM_WORLD,&NumberProcesses);
   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
 
   const int nitems=2;
@@ -184,7 +182,9 @@
   MPI_Type_commit(&mpi_result_type);
     
   if (rank==0) {
-    
+
+    struct timeval tv1,tv2;
+
     if (argc > 1) {
       iterations=(LENGTH)atoll(argv[1]);
     }
@@ -201,10 +201,12 @@
     printf ("\tMax long = %ld\n", LONG_MAX);
     printf ("\tMax long long = %lld\n\n", LLONG_MAX);
     
-    part_iterations=((iterations%numtasks) == 0) ? iterations/numtasks:iterations/numtasks+1 ;
+    part_iterations=((iterations%NumberProcesses) == 0) ? iterations/NumberProcesses:iterations/NumberProcesses+1 ;
+
+    gettimeofday(&tv1, NULL);
     
     // Split part of code
-    for (i=1;i<numtasks;i++) {
+    for (i=1;i<NumberProcesses;i++) {
       
 #ifdef LONG
       rc = MPI_Send(&part_iterations, 1, MPI_LONG_LONG, i, tag, 
@@ -226,7 +228,7 @@
 	     hostname,rank,(long long)insides,useconds);
       
     // Join part of code
-      for (i=1;i<numtasks;i++) {
+      for (i=1;i<NumberProcesses;i++) {
 
 	result recv;
 	
@@ -241,11 +243,21 @@
 	insides+=inside[i];
       }
       
-      pi=4.*(float)insides/(float)(part_iterations*numtasks);
+      float pi=4.*(float)insides/(float)(part_iterations*NumberProcesses);
+
+      gettimeofday(&tv2, NULL);
       
-      printf("\n\tPi=%.40f\n\twith error %.40f\n\twith %lld iterations\n\n",pi,
-	     fabs(pi-4*atan(1.))/pi,(long long)iterations);
+      double elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
+			      (tv2.tv_usec-tv1.tv_usec))/1000000;
+      
+      double itops=(double)(part_iterations*NumberProcesses)/elapsed;
+  
+      printf("\nParallelRate %i\nElapsed Time %.2f\nItops %.0f\nLogItops %.2f\n",NumberProcesses,elapsed,itops,log10(itops));
 
+      LENGTH total=((iterations%NumberProcesses)==0)?iterations:(iterations/NumberProcesses+1)*NumberProcesses;
+
+      printf("Inside/Total %ld %ld\nPi estimation %f\n\n",(long int)insides,(long int)total,(4.*(float)insides/total));
+      
   }
   else
     {
@@ -284,4 +296,5 @@
 
   MPI_Type_free(&mpi_result_type);  
   MPI_Finalize();
+
 }
Index: Pi/C/MPI/Pi_aMPI.c
===================================================================
--- Pi/C/MPI/Pi_aMPI.c	(revision 246)
+++ Pi/C/MPI/Pi_aMPI.c	(revision 247)
@@ -1,10 +1,10 @@
 //
 // Estimation of Pi using Monte Carlo exploration process
+// Cecill v2 Emmanuel QUEMENER <emmanuel.quemener@gmail.com>
 // gcc -std=c99 -O3 -o Pi_aMPI Pi_aMPI.c -lm 
-// Emmanuel Quemener <emmanuel.quemener@ens-lyon.fr>
 
 // Needed for gethostname
-#define _BSD_SOURCE
+#define _DEFAULT_SOURCE
 #include <sys/unistd.h>
 
 #include <math.h>
@@ -13,7 +13,6 @@
 #include <limits.h>
 #include <mpi.h>
 #include <stddef.h>
-
 #include <sys/time.h>
 
 // Marsaglia RNG very simple implementation
@@ -145,8 +144,7 @@
 
   unsigned int seed_z=362436069,seed_w=52128862;
   LENGTH iterations=ITERATIONS,inside[8192],insides,part_inside,part_iterations;
-  int numtasks,rank,rc,tag=1,i;
-  float pi;
+  int NumberProcesses,rank,rc,tag=1,i;
 
   char hostname[128];
 
@@ -166,10 +164,10 @@
     MPI_Abort(MPI_COMM_WORLD, rc);
   }
 
-  MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
+  MPI_Comm_size(MPI_COMM_WORLD,&NumberProcesses);
   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
   
-  MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
+  MPI_Comm_size(MPI_COMM_WORLD,&NumberProcesses);
   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
 
   const int nitems=2;
@@ -191,6 +189,8 @@
   MPI_Type_commit(&mpi_result_type);
 
   if (rank==0) {
+
+    struct timeval tv1,tv2;
     
     if (argc > 1) {
       iterations=(LENGTH)atoll(argv[1]);
@@ -206,12 +206,14 @@
     
     printf ("\tMax int = %u\n", INT_MAX);
     printf ("\tMax long = %ld\n", LONG_MAX);
-    printf ("\tMax long long = %lld\n", LLONG_MAX);
+    printf ("\tMax long long = %lld\n\n", LLONG_MAX);
     
-    part_iterations=((iterations%numtasks) == 0) ? iterations/numtasks:iterations/numtasks+1 ;
+    part_iterations=((iterations%NumberProcesses) == 0) ? iterations/NumberProcesses:iterations/NumberProcesses+1 ;
+
+    gettimeofday(&tv1, NULL);
     
     // Split part of code
-    for (i=1;i<numtasks;i++) {
+    for (i=1;i<NumberProcesses;i++) {
       
 #ifdef LONG
       rc = MPI_Isend(&part_iterations, 1, MPI_LONG_LONG, i, tag, 
@@ -221,7 +223,7 @@
 		     MPI_COMM_WORLD,&RequestSend);
 #endif      
     }
-    if (numtasks>1) {
+    if (NumberProcesses>1) {
       MPI_Wait(&RequestSend, &Stat);
     }
     
@@ -236,14 +238,14 @@
 	     hostname,rank,(long long)insides,useconds);
       
     // Join part of code
-      for (i=1;i<numtasks;i++) {
+      for (i=1;i<NumberProcesses;i++) {
 
 	result recv;
 	
 	rc = MPI_Irecv(&recv, 1, mpi_result_type, i, tag, 
 		      MPI_COMM_WORLD, &RequestRecv2);
 
-	if (numtasks>1) {
+	if (NumberProcesses>1) {
 	    MPI_Wait(&RequestRecv2, &Stat);
 	}
 	
@@ -255,11 +257,19 @@
 	insides+=inside[i];
       }
       
-      pi=4.*(float)insides/(float)(part_iterations*numtasks);
+      gettimeofday(&tv2, NULL);
       
-      printf("\n\tPi=%.40f\n\twith error %.40f\n\twith %lld iterations\n\n",pi,
-	     fabs(pi-4*atan(1.))/pi,(long long)iterations);
+      double elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
+			      (tv2.tv_usec-tv1.tv_usec))/1000000;
+      
+      double itops=(double)(part_iterations*NumberProcesses)/elapsed;
+  
+      printf("\nParallelRate %i\nElapsed Time %.2f\nItops %.0f\nLogItops %.2f\n",NumberProcesses,elapsed,itops,log10(itops));
 
+      LENGTH total=((iterations%NumberProcesses)==0)?iterations:(iterations/NumberProcesses+1)*NumberProcesses;
+
+      printf("Inside/Total %ld %ld\nPi estimation %f\n\n",(long int)insides,(long int)total,(4.*(float)insides/total));
+      
   }
   else
     {
Index: Pi/C/Simple/Pi_Simple.c
===================================================================
--- Pi/C/Simple/Pi_Simple.c	(revision 246)
+++ Pi/C/Simple/Pi_Simple.c	(revision 247)
@@ -159,10 +159,8 @@
   
   double itops=(double)(iterations)/elapsed;
   
-  printf("Inside/Total %lld %lld\nElapsed Time %.2f\nItops %.0f\nPi estimation %f\n\n",inside,iterations,elapsed,itops,(4.*(float)inside/(float)(iterations)));
+  printf("Inside/Total %lld %lld\nElapsed Time %.2f\nItops %.0f\nLogItops %.2f\nPi estimation %f\n\n",inside,iterations,elapsed,itops,log10(itops),(4.*(float)inside/(float)(iterations)));
 
-  printf("\n\n");
-
   return 0;
   
 }
Index: Pi/C/OpenMP/Pi_OpenMP.c
===================================================================
--- Pi/C/OpenMP/Pi_OpenMP.c	(revision 246)
+++ Pi/C/OpenMP/Pi_OpenMP.c	(revision 247)
@@ -1,7 +1,7 @@
 //
 // Estimation of Pi using Monte Carlo exploration process
 // Cecill v2 Emmanuel QUEMENER <emmanuel.quemener@gmail.com>
-// gcc -std=c99 -O3 -o Pi Pi.c -lm 
+// gcc -std=c99 -O3 -o Pi_OpenMP Pi_OpenMP.c -lm 
 //
 
 #include <math.h>
@@ -154,7 +154,7 @@
   
   double itops=(double)(ParallelRate*IterationsEach)/elapsed;
   
-  printf("ParallelRate %i\nElapsed Time %.2f\nItops %.0f\n",ParallelRate,elapsed,itops);
+  printf("ParallelRate %i\nElapsed Time %.2f\nItops %.0f\nLogItops %.2f\n",ParallelRate,elapsed,itops,log10(itops));
 
   free(inside);
   
@@ -169,7 +169,9 @@
   
   if (argc > 1) {
     iterations=(LENGTH)atoll(argv[1]);
-    ParallelRate=atoi(argv[2]);
+    if (argc > 2) {
+      ParallelRate=atoi(argv[2]);
+    }
   }
   else {
     printf("\n\tPi : Estimate Pi with Monte Carlo exploration\n\n");
Index: Pi/C/Hybrid/Pi_Hybrid.c
===================================================================
--- Pi/C/Hybrid/Pi_Hybrid.c	(revision 246)
+++ Pi/C/Hybrid/Pi_Hybrid.c	(revision 247)
@@ -1,11 +1,10 @@
 //
-// Estimation of Pi using Monte Carlo exploration process
-// gcc -std=c99 -O3 -o Pi Pi.c -lm 
-// Emmanuel Quemener <emmanuel.quemener@ens-lyon.fr>
-// Cecill v2
+// Estimation of Pi using Monte Carlo exploration process using OpenMP & MPI
+// Cecill v2 Emmanuel QUEMENER <emmanuel.quemener@gmail.com>
+// gcc -std=c99 -O3 -o Pi_Hybrid Pi_Hybrid.c -lm 
 
 // Needed for gethostname
-#define _BSD_SOURCE
+#define _DEFAULT_SOURCE
 #include <sys/unistd.h>
 
 #include <math.h>
@@ -159,7 +158,6 @@
   LENGTH iterations=ITERATIONS,insideMPI[8192],insideOpenMP[1024],
     part_inside=0,part_iterations,insides=0;
   int numtasks,rank,rc,tag=1,i;
-  float pi;
   
   // Hostname supposed to be <128 characters
   char hostname[128];
@@ -207,6 +205,8 @@
   MPI_Type_commit(&mpi_result_type);
   
   if (rank==0) {
+
+    struct timeval tv1,tv2;
     
     if (argc > 1) {
       iterations=(LENGTH)atoll(argv[1]);
@@ -234,6 +234,8 @@
     send.iterations=part_iterations;
     send.process=process;
 
+    gettimeofday(&tv1, NULL);
+        
     // Split part of code
     for (i=1;i<numtasks;i++) {      
       rc = MPI_Send(&send, 1, mpi_node_type, i, tag, MPI_COMM_WORLD);
@@ -280,11 +282,19 @@
       insides+=insideMPI[i];
     }
     
-    pi=4.*(float)insides/(float)(part_iterations*numtasks*process);
+    gettimeofday(&tv2, NULL);
+
+    double elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
+			      (tv2.tv_usec-tv1.tv_usec))/1000000;
     
-    printf("\n\tPi=%.40f\n\twith error %.40f\n\twith %lld iterations\n\n",pi,
-	   fabs(pi-4*atan(1.))/pi,(long long)(part_iterations*numtasks*process));
+    double itops=(double)(part_iterations*numtasks)/elapsed;
     
+    printf("\nParallelRate %i\nElapsed Time %.2f\nItops %.0f\nLogItops %.2f\n",numtasks*process,elapsed,itops,log10(itops));
+    
+    LENGTH total=((iterations%numtasks)==0)?iterations:(iterations/numtasks+1)*numtasks;
+
+    printf("Inside/Total %ld %ld\nPi estimation %f\n\n",(long int)insides,(long int)total,(4.*(float)insides/total));
+    
   }
   else
     {
Index: BLAS/xGEMM/xGEMM.c
===================================================================
--- BLAS/xGEMM/xGEMM.c	(revision 246)
+++ BLAS/xGEMM/xGEMM.c	(revision 247)
@@ -38,7 +38,7 @@
 #include <acml.h>
 #else
 #include <cblas.h>
-// #include <blaswrap.h>
+//#include <blaswrap.h>
 #endif
 
 #ifdef CLBLAS
