| 1154 | |
| 1155 | template <typename T> |
| 1156 | inline bool test_expression(const std::string& expression_string, const T& expected_result) |
| 1157 | { |
| 1158 | exprtk::symbol_table<T> symbol_table; |
| 1159 | symbol_table.add_constants(); |
| 1160 | |
| 1161 | exprtk::polynomial<T, 1> poly01; |
| 1162 | exprtk::polynomial<T, 2> poly02; |
| 1163 | exprtk::polynomial<T, 3> poly03; |
| 1164 | exprtk::polynomial<T, 4> poly04; |
| 1165 | exprtk::polynomial<T, 5> poly05; |
| 1166 | exprtk::polynomial<T, 6> poly06; |
| 1167 | exprtk::polynomial<T, 7> poly07; |
| 1168 | exprtk::polynomial<T, 8> poly08; |
| 1169 | exprtk::polynomial<T, 9> poly09; |
| 1170 | exprtk::polynomial<T,10> poly10; |
| 1171 | exprtk::polynomial<T,11> poly11; |
| 1172 | exprtk::polynomial<T,12> poly12; |
| 1173 | |
| 1174 | symbol_table.add_function("poly01", poly01); |
| 1175 | symbol_table.add_function("poly02", poly02); |
| 1176 | symbol_table.add_function("poly03", poly03); |
| 1177 | symbol_table.add_function("poly04", poly04); |
| 1178 | symbol_table.add_function("poly05", poly05); |
| 1179 | symbol_table.add_function("poly06", poly06); |
| 1180 | symbol_table.add_function("poly07", poly07); |
| 1181 | symbol_table.add_function("poly08", poly08); |
| 1182 | symbol_table.add_function("poly09", poly09); |
| 1183 | symbol_table.add_function("poly10", poly10); |
| 1184 | symbol_table.add_function("poly11", poly11); |
| 1185 | symbol_table.add_function("poly12", poly12); |
| 1186 | |
| 1187 | exprtk::expression<T> expression; |
| 1188 | expression.register_symbol_table(symbol_table); |
| 1189 | |
| 1190 | { |
| 1191 | exprtk::parser<T> parser; |
| 1192 | |
| 1193 | if (!parser.compile(expression_string,expression)) |
| 1194 | { |
| 1195 | printf("test_expression() - Error: %s Expression: %s\n", |
| 1196 | parser.error().c_str(), |
| 1197 | expression_string.c_str()); |
| 1198 | |
| 1199 | return false; |
| 1200 | } |
| 1201 | } |
| 1202 | |
| 1203 | if (!exprtk::expression_helper<T>::is_literal(expression)) |
| 1204 | { |
| 1205 | printf("test_expression() - Error: Expression did not compile to a constant! Expression: %s\n", |
| 1206 | expression_string.c_str()); |
| 1207 | |
| 1208 | return false; |
| 1209 | } |
| 1210 | |
| 1211 | const T result = expression.value(); |
| 1212 | |
| 1213 | if (not_equal(result,expected_result)) |