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