34 typedef typename compositor_t::function function_t;
36 const std::string nthroot_via_bisection_program =
37 " for (var x := -30; x <= 30; x += 1) "
39 " println('[', x, ']', "
40 " ' sqrt = ', nthroot(x,2), "
41 " ' cbrt = ', nthroot(x,3)); "
46 symbol_table_t symbol_table;
47 symbol_table.add_function(
"println",println);
49 compositor_t compositor(symbol_table);
58 " if (abs(frac(n)) > 0) "
60 " else if (x < 0 and (n % 2 == 0)) "
63 " var lo := min(0,x); "
64 " var hi := max(0,x); "
68 " var mid := avg(lo,hi); "
69 " var y := pow(mid,n); "
80 expression_t expression;
81 expression.register_symbol_table(symbol_table);
84 parser.compile(nthroot_via_bisection_program, expression);