// bench_arith.ce — arithmetic and number crunching benchmark // Tests: integer add/mul, float ops, loop counter overhead, conditionals var time = use('time') def iterations = 2000000 // 1. Integer sum in tight loop function bench_int_sum() { var i = 0 var s = 0 for (i = 0; i < iterations; i++) { s = s + i } return s } // 2. Integer multiply + mod (sieve-like) function bench_int_mul_mod() { var i = 0 var s = 0 for (i = 1; i < iterations; i++) { s = s + (i * 7 % 1000) } return s } // 3. Float math — accumulate with division function bench_float_arith() { var i = 0 var s = 0.5 for (i = 1; i < iterations; i++) { s = s + 1.0 / i } return s } // 4. Nested loop with branch (fizzbuzz-like counter) function bench_branch() { var i = 0 var fizz = 0 var buzz = 0 var fizzbuzz = 0 for (i = 1; i <= iterations; i++) { if (i % 15 == 0) { fizzbuzz = fizzbuzz + 1 } else if (i % 3 == 0) { fizz = fizz + 1 } else if (i % 5 == 0) { buzz = buzz + 1 } } return fizz + buzz + fizzbuzz } // 5. Nested loop (small inner) function bench_nested() { var i = 0 var j = 0 var s = 0 def outer = 5000 def inner = 5000 for (i = 0; i < outer; i++) { for (j = 0; j < inner; j++) { s = s + 1 } } return s } // Run each and print timing function run(name, fn) { var start = time.number() var result = fn() var elapsed = time.number() - start var ms = whole(elapsed * 100000) / 100 log.console(` ${name}: ${ms} ms (result: ${result})`) } log.console("=== Arithmetic Benchmark ===") log.console(` iterations: ${iterations}`) run("int_sum ", bench_int_sum) run("int_mul_mod ", bench_int_mul_mod) run("float_arith ", bench_float_arith) run("branch ", bench_branch) run("nested_loop ", bench_nested)