Révision 231 TrouNoir/trou_noir.c

trou_noir.c (revision 231)
18 18

  
19 19
	Compilation sous gcc ( Compilateur GNU sous Linux ) :
20 20

  
21
	Version FP32 :	gcc -O3 -ffast-math -FP32 -o trou_noir_FP32 trou_noir.c -lm
22
	Version FP64 :	gcc -O3 -ffast-math -FP64 -o trou_noir_FP64 trou_noir.c -lm
21
	Version FP32 :	gcc -O3 -ffast-math -DFP32 -o trou_noir_FP32 trou_noir.c -lm
22
	Version FP64 :	gcc -O3 -ffast-math -DFP64 -o trou_noir_FP64 trou_noir.c -lm
23 23
*/ 
24 24

  
25 25
#include <stdio.h>
......
35 35

  
36 36
#define TRACKPOINTS 2048
37 37

  
38
#if TYPE == FP32
38
#if TYPE == FP64
39
#define MYFLOAT double
40
#else
39 41
#define MYFLOAT float
40
#else
41
#define MYFLOAT double
42 42
#endif
43 43

  
44 44
MYFLOAT atanp(MYFLOAT x,MYFLOAT y)
......
229 229
  int ni,ii,i,imx,j,n,tst,raie,fcl,zcl;
230 230
  MYFLOAT nh;
231 231
  struct timeval tv1,tv2;
232
  double elapsed;
232
  MYFLOAT elapsed,cputime,epoch;
233 233
  int mtv1,mtv2;
234
  unsigned int epoch1,epoch2;
234 235
  
235 236
  if (argc==2)
236 237
    {
......
339 340

  
340 341
  // Set start timer
341 342
  gettimeofday(&tv1, NULL);
342
  //
343 343
  mtv1=clock()*1000/CLOCKS_PER_SEC;
344
  epoch1=time(NULL);
344 345
  
345 346
  for (n=1;n<=nmx;n++)
346 347
    {     
......
415 416
  // Set stop timer
416 417
  gettimeofday(&tv2, NULL);
417 418
  mtv2=clock()*1000/CLOCKS_PER_SEC;
419
  epoch2=time(NULL);
420

  
421
  elapsed=(MYFLOAT)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
422
		   (tv2.tv_usec-tv1.tv_usec))/1000000;  
423
  cputime=(MYFLOAT)((mtv2-mtv1)/1000.);  
424
  epoch=(MYFLOAT)(epoch2-epoch1);  
418 425
  
419
  //  elapsed=(double)((tv2.tv_sec-tv1.tv_sec) * 1000000L +
420
  //			  (tv2.tv_usec-tv1.tv_usec))/1000000;  
421
  elapsed=(double)((mtv2-mtv1)/1000.);  
422
  
423 426
  fmx=fp[0][0];
424 427
  zmx=zp[0][0];
425 428
  
......
441 444
    }
442 445

  
443 446
  printf("\nElapsed Time : %lf",(double)elapsed);
447
  printf("\nCPU Time : %lf",(double)cputime);
448
  printf("\nEpoch Time : %lf",(double)epoch);
444 449
  printf("\nZ max @(%i,%i) : %f",zimx,zjmx,zmx);
445 450
  printf("\nFlux max @(%i,%i) : %f\n\n",fimx,fjmx,fmx);
446 451

  
447
  for (i=0;i<dim;i++) for (j=0;j<dim;j++)
448
    {
449
      zcl=(int)(255/zmx*zp[i][dim-1-j]);
450
      fcl=(int)(255/fmx*fp[i][dim-1-j]);
451

  
452
      if (strcmp(argv[6],"NEGATIVE")==0)
452
  // If input parameters set without output files precised
453
  if (argc!=7) {
454
    for (int i=0;i<dim;i++)
455
      for (int j=0;j<dim;j++)
453 456
	{
454
	  if (zcl>255)
455
	    {
456
	      izp[i][j]=0;
457
	    }
458
	  else
459
	    {
460
	      izp[i][j]=255-zcl;
461
	    }
457
	  zcl=(int)(255/zmx*zp[i][dim-1-j]);
458
	  fcl=(int)(255/fmx*fp[i][dim-1-j]);
462 459
	  
463
	  if (fcl>255)
460
	  if (strcmp(argv[6],"NEGATIVE")==0)
464 461
	    {
465
	      ifp[i][j]=0;
462
	      if (zcl>255)
463
		{
464
		  izp[i][j]=0;
465
		}
466
	      else
467
		{
468
		  izp[i][j]=255-zcl;
469
		}
470
	      
471
	      if (fcl>255)
472
		{
473
		  ifp[i][j]=0;
474
		}
475
	      else
476
		{
477
		  ifp[i][j]=255-fcl;
478
		} 
479
	      
466 480
	    }
467 481
	  else
468 482
	    {
469
	      ifp[i][j]=255-fcl;
470
	    } 
471
	  
472
	}
473
      else
474
	{
475
	  if (zcl>255)
476
	    {
477
	      izp[i][j]=255;
483
	      if (zcl>255)
484
		{
485
		  izp[i][j]=255;
486
		}
487
	      else
488
		{
489
		  izp[i][j]=zcl;
490
		}
491
	      
492
	      if (fcl>255)
493
		{
494
		  ifp[i][j]=255;
495
		}
496
	      else
497
		{
498
		  ifp[i][j]=fcl;
499
		} 
500
	      
478 501
	    }
479
	  else
480
	    {
481
	      izp[i][j]=zcl;
482
	    }
483 502
	  
484
	  if (fcl>255)
485
	    {
486
	      ifp[i][j]=255;
487
	    }
488
	  else
489
	    {
490
	      ifp[i][j]=fcl;
491
	    } 
492
	  
493 503
	}
494
	
495
    }
496

  
497
  if (argc==9)
498
   {
499
     sauvegarde_pgm(argv[7],ifp,dim);
500
     sauvegarde_pgm(argv[8],izp,dim);
501
   }
504
    
505
    if (argc==9)
506
      {
507
	sauvegarde_pgm(argv[7],ifp,dim);
508
	sauvegarde_pgm(argv[8],izp,dim);
509
      }
510
    else
511
      {
512
	sauvegarde_pgm("z.pgm",izp,dim);
513
	sauvegarde_pgm("flux.pgm",ifp,dim);
514
      }
515
  }
502 516
  else
503 517
    {
504
      sauvegarde_pgm("z.pgm",izp,dim);
505
      sauvegarde_pgm("flux.pgm",ifp,dim);
518
      printf("No output file precised, useful for benchmarks...\n\n");
506 519
    }
507

  
520
  
508 521
  free(zp[0]);
509 522
  free(zp);
510 523
  free(fp[0]);

Formats disponibles : Unified diff