diff --git a/main.c b/main.c index 09146da..5ecef5d 100644 --- a/main.c +++ b/main.c @@ -30,7 +30,7 @@ struct bench_res { double succ_rate; double avg_time_us; - unsigned avg_passes; + double avg_passes; }; static uint32_t getseed(void) @@ -75,7 +75,7 @@ static void genpuzzles(struct sudoku puzzles_out[NPUZZLES], } } -static struct bench_res runbench(struct sudoku puzzles[NPUZZLES]) +static void runbench(struct sudoku puzzles[NPUZZLES], struct bench_res *res_out) { int res[NPUZZLES]; unsigned i; @@ -106,11 +106,9 @@ static struct bench_res runbench(struct sudoku puzzles[NPUZZLES]) tot_passes += (unsigned long)res[i]; } - return (struct bench_res) { - .succ_rate = (double)solved / NPUZZLES, - .avg_time_us = tot_micros / NPUZZLES, - .avg_passes = tot_passes / NPUZZLES, - }; + res_out->succ_rate = (double)solved / NPUZZLES; + res_out->avg_time_us = tot_micros / NPUZZLES; + res_out->avg_passes = (double)tot_passes / NPUZZLES; } int main(void) @@ -120,13 +118,14 @@ int main(void) srand(seed); struct sudoku puzzles[NPUZZLES]; + struct bench_res res; genpuzzles(puzzles, 0.33, true); - struct bench_res res = runbench(puzzles); + runbench(puzzles, &res); puts("\n SUMMARY\n ======="); printf("Success rate: %.0lf%%\n", 1e2 * res.succ_rate); printf("Average time: %.3lf µs\n", res.avg_time_us); - printf("Average n.o. passes: %u\n", res.avg_passes); + printf("Average n.o. passes: %0.3lf\n", res.avg_passes); return 0; }