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;
 | |
| }
 | |
| 
 | 
