| 5238 | |
| 5239 | template <typename T> |
| 5240 | bool run_test11() |
| 5241 | { |
| 5242 | typedef exprtk::expression<T> expression_t; |
| 5243 | |
| 5244 | std::string expression_string = "(x + y) / 3"; |
| 5245 | |
| 5246 | T x = T(1.0); |
| 5247 | T y = T(2.0); |
| 5248 | |
| 5249 | exprtk::symbol_table<T> symbol_table; |
| 5250 | symbol_table.add_variable("x",x); |
| 5251 | symbol_table.add_variable("y",y); |
| 5252 | |
| 5253 | expression_t expression; |
| 5254 | expression.register_symbol_table(symbol_table); |
| 5255 | |
| 5256 | static const std::size_t rounds = 500; |
| 5257 | |
| 5258 | for (std::size_t i = 0; i < rounds; ++i) |
| 5259 | { |
| 5260 | { |
| 5261 | exprtk::parser<T> parser; |
| 5262 | |
| 5263 | if (!parser.compile(expression_string,expression)) |
| 5264 | { |
| 5265 | printf("run_test11() - Error: %s Expression: %s\n", |
| 5266 | parser.error().c_str(), |
| 5267 | expression_string.c_str()); |
| 5268 | |
| 5269 | return false; |
| 5270 | } |
| 5271 | } |
| 5272 | |
| 5273 | if (not_equal(expression.value(),(x + y) / T(3),T(0.000001))) |
| 5274 | { |
| 5275 | printf("run_test11() - Error in evaluation!(1)\n"); |
| 5276 | return false; |
| 5277 | } |
| 5278 | |
| 5279 | expression.release(); |
| 5280 | |
| 5281 | if (false == (!expression)) |
| 5282 | { |
| 5283 | printf("run_test11() - Error in evaluation!(2)\n"); |
| 5284 | return false; |
| 5285 | } |
| 5286 | |
| 5287 | { |
| 5288 | exprtk::parser<T> parser; |
| 5289 | |
| 5290 | if (!parser.compile(expression_string,expression)) |
| 5291 | { |
| 5292 | printf("run_test11() - Error: %s Expression: %s\n", |
| 5293 | parser.error().c_str(), |
| 5294 | expression_string.c_str()); |
| 5295 | |
| 5296 | return false; |
| 5297 | } |