// Hand-C reference for bench_compute_intsum. // // Same algorithm as examples/bench_compute_intsum.ail — 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 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; }