/************************************************/ /* mandelbrot benchmark test */ /* v.03 11/23/1987 rhn */ /* v.06 11/03/2002 rhn hotpaw.com */ /* */ /************************************************/ // consider this release under the MPL 1.1 Open Source license #define DEPTH (100) /* depth of divergence search */ #define DOT (90) // #define BITS_SQUARE (100) /* standard resolution */ #define BITS_SQUARE (32) /* resolution for 1 MIP devices */ // #define unix_main #ifdef unix_main long int fpcnt; #define COUNT(Z) fpcnt += (Z); /* count fp ops */ #else #define COUNT(Z) #endif long int mb100(int loop_count); long int qset(double xx, double yy, double u, double v); long int mb100(int loop_count) { double x,y, a,b, a1,b1, s,g; long int dots; int loop_i, loop_limit; int i,j,k, res; loop_limit = loop_count; dots = 0; res = BITS_SQUARE; a1 = -2.50; b1 = -1.75; s = 3.50; /* side */ g = s/res; /* gap */ for (loop_i = 0; loop_i < loop_limit; loop_i++) { x = 0.0; y = 0.0; for (b=b1,j=0; j depth_limit */ if (k > DOT) dots++; COUNT(1) }; COUNT(2) } COUNT(1) } return(dots); } /* end of mb100 */ long int qset(double xx, double yy, double u, double v) // double xx,yy,u,v; /* (x,y) (u,v) are complex number pairs */ { double t,xsqr,ysqr,x=xx,y=yy; /* copy x & y into registers */ int n,lim; lim = DEPTH; xsqr = x * x; ysqr = y * y; COUNT(2) /* (x,y) = (x,y)^2 + (u,v) , is abs((x,y)) > 2 ? */ for (n=0; (n 1) sscanf(argv[1], "%ld", &loops); n = mb100(loops); printf("dots = %ld\n", n / loops); printf("loops = %ld\n", loops); printf("fpops = %ld\n", fpcnt); exit(0); } #endif /* end */