33 const std::string sieve_of_eratosthenes_program =
34 " var sieve[10^8] := [false]; "
35 " var m := trunc(sqrt(sieve[])); "
40 " for (var i := 0; i <= m; i += 1) "
42 " if (false == sieve[i]) "
44 " assign(sieve, true, i^2, sieve[] - 1, i); "
48 " var prime_count := sieve[] - sum(sieve); "
50 " prime_count == 5761455; ";
52 symbol_table_t symbol_table;
55 symbol_table.add_package(vector_package);
57 expression_t expression;
58 expression.register_symbol_table(symbol_table);
61 parser.compile(sieve_of_eratosthenes_program,expression);
66 const T result = expression.value();
70 printf(
"Result: %8.3f\n",result);
72 printf(
"Total time: %8.3fsec\n",timer.
time());