Index: TrouNoir/trou_noir_OpenMP.c
===================================================================
--- TrouNoir/trou_noir_OpenMP.c	(revision 230)
+++ TrouNoir/trou_noir_OpenMP.c	(revision 231)
@@ -18,8 +18,8 @@
 
 	Compilation sous gcc ( Compilateur GNU sous Linux ) :
 
-	Version FP32 :	gcc -O3 -ffast-math -FP32 -o trou_noir_FP32 trou_noir.c -lm
-	Version FP64 :	gcc -O3 -ffast-math -FP64 -o trou_noir_FP64 trou_noir.c -lm
+	Version FP32 : gcc -fopenmp -O3 -ffast-math -FP32 -o trou_noir_OMP_FP32 trou_noir_OpenMP.c -lm -lgomp
+	Version FP64 : gcc -fopenmp -O3 -ffast-math -FP64 -o trou_noir_OMP_FP64 trou_noir_OpenMP.c -lm -lgomp
 */ 
 
 #include <stdio.h>
@@ -35,7 +35,7 @@
 
 #define TRACKPOINTS 2048
 
-#if TYPE == FP32
+#if TYPE == FP64
 #define MYFLOAT float
 #else
 #define MYFLOAT double
@@ -223,9 +223,10 @@
   MYFLOAT zmx,fmx;
   int zimx=0,zjmx=0,fimx=0,fjmx=0;
   int raie,fcl,zcl;
- struct timeval tv1,tv2;
-  double elapsed;
+  struct timeval tv1,tv2;
+  MYFLOAT elapsed,cputime,epoch;
   int mtv1,mtv2;
+  unsigned int epoch1,epoch2;
 
   /* Variables used inside pragma need to be placed inside loop ! */
 
@@ -260,7 +261,7 @@
 	}
     }
   
-  if (argc==9)
+  if ((argc==9)||(argc==7))
     {
       printf("# Utilisation les valeurs definies par l'utilisateur\n");
       
@@ -339,10 +340,9 @@
   bmx=1.25*re;
 
   // Set start timer
-  //  gettimeofday(&tv1, &tz);
   gettimeofday(&tv1, NULL);
-  //
   mtv1=clock()*1000/CLOCKS_PER_SEC;
+  epoch1=time(NULL);
   
 #pragma omp parallel for
   for (int n=1;n<=nmx;n++)
@@ -422,14 +422,15 @@
     }
 
   // Set stop timer
-  //  gettimeofday(&tv2, &tz);
   gettimeofday(&tv2, NULL);
   mtv2=clock()*1000/CLOCKS_PER_SEC;
+  epoch2=time(NULL);
   
-  //  elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
-  //			  (tv2.tv_usec-tv1.tv_usec))/1000000;  
-  elapsed=(double)((mtv2-mtv1)/1000.);  
-  
+  elapsed=(MYFLOAT)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
+		    (tv2.tv_usec-tv1.tv_usec))/1000000;
+  cputime=(MYFLOAT)((mtv2-mtv1)/1000.);  
+  epoch=(MYFLOAT)(epoch2-epoch1);  
+
   fmx=fp[0][0];
   zmx=zp[0][0];
   
@@ -451,75 +452,86 @@
     }
 
   printf("\nElapsed Time : %lf",(double)elapsed);
+  printf("\nCPU Time : %lf",(double)cputime);
+  printf("\nEpoch Time : %lf",(double)epoch);
   printf("\nZ max @(%i,%i) : %f",zimx,zjmx,zmx);
   printf("\nFlux max @(%i,%i) : %f\n\n",fimx,fjmx,fmx);
 
-  for (int i=0;i<dim;i++) for (int j=0;j<dim;j++)
-    {
-      zcl=(int)(255/zmx*zp[i][dim-1-j]);
-      fcl=(int)(255/fmx*fp[i][dim-1-j]);
-
-      if (strcmp(argv[6],"NEGATIVE")==0)
+  // If input parameters set without output files precised
+  if (argc!=7) {
+  
+    for (int i=0;i<dim;i++)
+      for (int j=0;j<dim;j++)
 	{
-	  if (zcl>255)
-	    {
-	      izp[i][j]=0;
-	    }
-	  else
-	    {
-	      izp[i][j]=255-zcl;
-	    }
+	  zcl=(int)(255/zmx*zp[i][dim-1-j]);
+	  fcl=(int)(255/fmx*fp[i][dim-1-j]);
 	  
-	  if (fcl>255)
+	  if (strcmp(argv[6],"NEGATIVE")==0)
 	    {
-	      ifp[i][j]=0;
-	    }
-	  else
-	    {
-	      ifp[i][j]=255-fcl;
-	    } 
+	      if (zcl>255)
+		{
+		  izp[i][j]=0;
+		}
+	      else
+		{
+		  izp[i][j]=255-zcl;
+		}
+	      
+	      if (fcl>255)
+		{
+		  ifp[i][j]=0;
+		}
+	      else
+		{
+		  ifp[i][j]=255-fcl;
+		} 
 	  
-	}
-      else
-	{
-	  if (zcl>255)
-	    {
-	      izp[i][j]=255;
 	    }
 	  else
 	    {
-	      izp[i][j]=zcl;
+	      if (zcl>255)
+		{
+		  izp[i][j]=255;
+		}
+	      else
+		{
+		  izp[i][j]=zcl;
+		}
+	      
+	      if (fcl>255)
+		{
+		  ifp[i][j]=255;
+		}
+	      else
+		{
+		  ifp[i][j]=fcl;
+		} 
+	      
 	    }
-	  
-	  if (fcl>255)
-	    {
-	      ifp[i][j]=255;
-	    }
-	  else
-	    {
-	      ifp[i][j]=fcl;
-	    } 
-	  
+	
 	}
-	
-    }
-
-  if (argc==9)
-   {
-     sauvegarde_pgm(argv[7],ifp,dim);
-     sauvegarde_pgm(argv[8],izp,dim);
-   }
+    
+    if (argc==9)
+      {
+	  sauvegarde_pgm(argv[7],ifp,dim);
+	  sauvegarde_pgm(argv[8],izp,dim);
+      }
+    else
+      {
+	sauvegarde_pgm("z.pgm",izp,dim);
+	sauvegarde_pgm("flux.pgm",ifp,dim);
+      }    
+  }
   else
     {
-      sauvegarde_pgm("z.pgm",izp,dim);
-      sauvegarde_pgm("flux.pgm",ifp,dim);
+      printf("No output file precised, useful for benchmarks...\n\n");
     }
 
   free(zp[0]);
   free(zp);
   free(fp[0]);
   free(fp);
-
+  
   free(izp[0]);
   free(izp);
   free(ifp[0]);
Index: TrouNoir/trou_noir.c
===================================================================
--- TrouNoir/trou_noir.c	(revision 230)
+++ TrouNoir/trou_noir.c	(revision 231)
@@ -18,8 +18,8 @@
 
 	Compilation sous gcc ( Compilateur GNU sous Linux ) :
 
-	Version FP32 :	gcc -O3 -ffast-math -FP32 -o trou_noir_FP32 trou_noir.c -lm
-	Version FP64 :	gcc -O3 -ffast-math -FP64 -o trou_noir_FP64 trou_noir.c -lm
+	Version FP32 :	gcc -O3 -ffast-math -DFP32 -o trou_noir_FP32 trou_noir.c -lm
+	Version FP64 :	gcc -O3 -ffast-math -DFP64 -o trou_noir_FP64 trou_noir.c -lm
 */ 
 
 #include <stdio.h>
@@ -35,10 +35,10 @@
 
 #define TRACKPOINTS 2048
 
-#if TYPE == FP32
+#if TYPE == FP64
+#define MYFLOAT double
+#else
 #define MYFLOAT float
-#else
-#define MYFLOAT double
 #endif
 
 MYFLOAT atanp(MYFLOAT x,MYFLOAT y)
@@ -229,8 +229,9 @@
   int ni,ii,i,imx,j,n,tst,raie,fcl,zcl;
   MYFLOAT nh;
   struct timeval tv1,tv2;
-  double elapsed;
+  MYFLOAT elapsed,cputime,epoch;
   int mtv1,mtv2;
+  unsigned int epoch1,epoch2;
   
   if (argc==2)
     {
@@ -339,8 +340,8 @@
 
   // Set start timer
   gettimeofday(&tv1, NULL);
-  //
   mtv1=clock()*1000/CLOCKS_PER_SEC;
+  epoch1=time(NULL);
   
   for (n=1;n<=nmx;n++)
     {     
@@ -415,11 +416,13 @@
   // Set stop timer
   gettimeofday(&tv2, NULL);
   mtv2=clock()*1000/CLOCKS_PER_SEC;
+  epoch2=time(NULL);
+
+  elapsed=(MYFLOAT)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
+		   (tv2.tv_usec-tv1.tv_usec))/1000000;  
+  cputime=(MYFLOAT)((mtv2-mtv1)/1000.);  
+  epoch=(MYFLOAT)(epoch2-epoch1);  
   
-  //  elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
-  //			  (tv2.tv_usec-tv1.tv_usec))/1000000;  
-  elapsed=(double)((mtv2-mtv1)/1000.);  
-  
   fmx=fp[0][0];
   zmx=zp[0][0];
   
@@ -441,70 +444,80 @@
     }
 
   printf("\nElapsed Time : %lf",(double)elapsed);
+  printf("\nCPU Time : %lf",(double)cputime);
+  printf("\nEpoch Time : %lf",(double)epoch);
   printf("\nZ max @(%i,%i) : %f",zimx,zjmx,zmx);
   printf("\nFlux max @(%i,%i) : %f\n\n",fimx,fjmx,fmx);
 
-  for (i=0;i<dim;i++) for (j=0;j<dim;j++)
-    {
-      zcl=(int)(255/zmx*zp[i][dim-1-j]);
-      fcl=(int)(255/fmx*fp[i][dim-1-j]);
-
-      if (strcmp(argv[6],"NEGATIVE")==0)
+  // If input parameters set without output files precised
+  if (argc!=7) {
+    for (int i=0;i<dim;i++)
+      for (int j=0;j<dim;j++)
 	{
-	  if (zcl>255)
-	    {
-	      izp[i][j]=0;
-	    }
-	  else
-	    {
-	      izp[i][j]=255-zcl;
-	    }
+	  zcl=(int)(255/zmx*zp[i][dim-1-j]);
+	  fcl=(int)(255/fmx*fp[i][dim-1-j]);
 	  
-	  if (fcl>255)
+	  if (strcmp(argv[6],"NEGATIVE")==0)
 	    {
-	      ifp[i][j]=0;
+	      if (zcl>255)
+		{
+		  izp[i][j]=0;
+		}
+	      else
+		{
+		  izp[i][j]=255-zcl;
+		}
+	      
+	      if (fcl>255)
+		{
+		  ifp[i][j]=0;
+		}
+	      else
+		{
+		  ifp[i][j]=255-fcl;
+		} 
+	      
 	    }
 	  else
 	    {
-	      ifp[i][j]=255-fcl;
-	    } 
-	  
-	}
-      else
-	{
-	  if (zcl>255)
-	    {
-	      izp[i][j]=255;
+	      if (zcl>255)
+		{
+		  izp[i][j]=255;
+		}
+	      else
+		{
+		  izp[i][j]=zcl;
+		}
+	      
+	      if (fcl>255)
+		{
+		  ifp[i][j]=255;
+		}
+	      else
+		{
+		  ifp[i][j]=fcl;
+		} 
+	      
 	    }
-	  else
-	    {
-	      izp[i][j]=zcl;
-	    }
 	  
-	  if (fcl>255)
-	    {
-	      ifp[i][j]=255;
-	    }
-	  else
-	    {
-	      ifp[i][j]=fcl;
-	    } 
-	  
 	}
-	
-    }
-
-  if (argc==9)
-   {
-     sauvegarde_pgm(argv[7],ifp,dim);
-     sauvegarde_pgm(argv[8],izp,dim);
-   }
+    
+    if (argc==9)
+      {
+	sauvegarde_pgm(argv[7],ifp,dim);
+	sauvegarde_pgm(argv[8],izp,dim);
+      }
+    else
+      {
+	sauvegarde_pgm("z.pgm",izp,dim);
+	sauvegarde_pgm("flux.pgm",ifp,dim);
+      }
+  }
   else
     {
-      sauvegarde_pgm("z.pgm",izp,dim);
-      sauvegarde_pgm("flux.pgm",ifp,dim);
+      printf("No output file precised, useful for benchmarks...\n\n");
     }
-
+  
   free(zp[0]);
   free(zp);
   free(fp[0]);
