33 lines
		
	
	
		
			815 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			815 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /* not worth copyrighting */ | ||
|  | 
 | ||
|  | #include "libbench2/bench.h"
 | ||
|  | #include <math.h>
 | ||
|  | 
 | ||
|  | double mflops(const bench_problem *p, double t) | ||
|  | { | ||
|  |      size_t size = tensor_sz(p->sz); | ||
|  |      size_t vsize = tensor_sz(p->vecsz); | ||
|  | 
 | ||
|  |      if (size <= 1) /* a copy: just return reals copied / time */ | ||
|  | 	  switch (p->kind) { | ||
|  | 	      case PROBLEM_COMPLEX: | ||
|  | 		   return (2.0 * size * vsize / (t * 1.0e6)); | ||
|  | 	      case PROBLEM_REAL: | ||
|  | 	      case PROBLEM_R2R: | ||
|  | 		   return (1.0 * size * vsize / (t * 1.0e6)); | ||
|  | 	  } | ||
|  | 
 | ||
|  |      switch (p->kind) { | ||
|  | 	 case PROBLEM_COMPLEX: | ||
|  | 	      return (5.0 * size * vsize * log((double)size) /  | ||
|  | 		      (log(2.0) * t * 1.0e6)); | ||
|  | 	 case PROBLEM_REAL: | ||
|  | 	 case PROBLEM_R2R: | ||
|  | 	      return (2.5 * vsize * size * log((double) size) /  | ||
|  | 		      (log(2.0) * t * 1.0e6)); | ||
|  |      } | ||
|  |      BENCH_ASSERT(0 /* can't happen */); | ||
|  |      return 0.0; | ||
|  | } | ||
|  | 
 |