// Hand-C reference for bench_compute_intsum.
//
// Same algorithm as examples/bench_compute_intsum.ailx — accumulate
// `i * 7` for i in [n, n-1, ..., 1], printing the final acc.
// Three sizes: 1M / 10M / 50M iterations.
//
// Just like AILang's version under -O2, this loop is closed-form
// reducible (sum_{i=1..N} i*7 = 7*N*(N+1)/2). clang -O2 will likely
// fold it. The AILang/C wall-time ratio at this fixture answers
// "does AILang's IR enable the same constant fold C's source does"
// — both should be startup-dominated.
//
// Build: clang -O2 -o compute_intsum compute_intsum.c
// Expected stdout (one int per line):
//   3500003500000
//   350000035000000
//   8750000175000000

#include <stdio.h>

static long intsum_loop(long n) {
    long acc = 0;
    while (n > 0) {
        acc += n * 7;
        n -= 1;
    }
    return acc;
}

static void run_one(long n) {
    printf("%ld\n", intsum_loop(n));
}

int main(void) {
    run_one(1000000);
    run_one(10000000);
    run_one(50000000);
    return 0;
}
