51 const std::string wiener_process_pi_program =
52 " var w[10^4] := [0]; "
54 " for (var i := 0; i < w[]; i += 1) "
56 " var x[10^4] := [(rnd_01 < 1 / 2) ? -1 : 1]; "
60 " (2 * w[]) / avg(abs(w))^2; ";
64 symbol_table_t symbol_table;
65 symbol_table.add_function(
"rnd_01",rnd01);
67 expression_t expression;
68 expression.register_symbol_table(symbol_table);
71 parser.compile(wiener_process_pi_program,expression);
73 const T approximate_pi = expression.value();
75 const T real_pi = T(3.141592653589793238462643383279502);
77 printf(
"pi ~ %20.17f\terror: %20.17f\n",
79 std::abs(real_pi - approximate_pi));