| 9984 | |
| 9985 | template <typename T> |
| 9986 | bool run_test20() |
| 9987 | { |
| 9988 | typedef exprtk::expression<T> expression_t; |
| 9989 | |
| 9990 | { |
| 9991 | for (std::size_t i = 0; i < 100; ++i) |
| 9992 | { |
| 9993 | exprtk::symbol_table<T> symbol_table0; // primary symbol_table |
| 9994 | exprtk::symbol_table<T> symbol_table1; |
| 9995 | exprtk::symbol_table<T> symbol_table2; |
| 9996 | exprtk::symbol_table<T> symbol_table3; |
| 9997 | |
| 9998 | symbol_table0.add_constants(); |
| 9999 | |
| 10000 | expression_t expression; |
| 10001 | expression.register_symbol_table(symbol_table0); |
| 10002 | expression.register_symbol_table(symbol_table1); |
| 10003 | expression.register_symbol_table(symbol_table2); |
| 10004 | expression.register_symbol_table(symbol_table3); |
| 10005 | |
| 10006 | exprtk::parser<T> parser; |
| 10007 | |
| 10008 | my_usr<T> musr; |
| 10009 | musr.next_value(true); |
| 10010 | parser.enable_unknown_symbol_resolver(&musr); |
| 10011 | |
| 10012 | std::string expr_str = "v01+c02+v03+c04+v05+c06+v07+c08+v09+c10+" |
| 10013 | "v11+c12+v13+c14+v15+c16+v17+c18+v19+c20+" |
| 10014 | "v21+c22+v23+c24+v25+c26+v27+c28+v29+c30 "; |
| 10015 | |
| 10016 | if (!parser.compile(expr_str,expression)) |
| 10017 | { |
| 10018 | printf("run_test20() - [1] Error: %s Expression: %s\n", |
| 10019 | parser.error().c_str(), |
| 10020 | expr_str.c_str()); |
| 10021 | |
| 10022 | return false; |
| 10023 | } |
| 10024 | |
| 10025 | T sum_1_30 = T((1 + 30) * 15); |
| 10026 | T result = expression.value(); |
| 10027 | |
| 10028 | if (sum_1_30 != result) |
| 10029 | { |
| 10030 | printf("run_test20() - [1] Error in evaluation! (1) Expression: %s\n", |
| 10031 | expr_str.c_str()); |
| 10032 | |
| 10033 | return false; |
| 10034 | } |
| 10035 | } |
| 10036 | } |
| 10037 | |
| 10038 | { |
| 10039 | for (std::size_t i = 0; i < 100; ++i) |
| 10040 | { |
| 10041 | exprtk::symbol_table<T> symbol_table0; // primary symbol_table |
| 10042 | exprtk::symbol_table<T> symbol_table1; |
| 10043 | exprtk::symbol_table<T> symbol_table2; |