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