| 3394 | |
| 3395 | template <typename T> |
| 3396 | bool run_test06() |
| 3397 | { |
| 3398 | typedef exprtk::expression<T> expression_t; |
| 3399 | |
| 3400 | const std::string expression_string = "sqrt(1 - (x^2))"; |
| 3401 | |
| 3402 | T x = T(0); |
| 3403 | |
| 3404 | exprtk::symbol_table<T> symbol_table; |
| 3405 | symbol_table.add_variable("x",x); |
| 3406 | |
| 3407 | expression_t expression; |
| 3408 | expression.register_symbol_table(symbol_table); |
| 3409 | |
| 3410 | { |
| 3411 | exprtk::parser<T> parser; |
| 3412 | |
| 3413 | if (!parser.compile(expression_string,expression)) |
| 3414 | { |
| 3415 | printf("run_test06() - Error: %s Expression: %s\n", |
| 3416 | parser.error().c_str(), |
| 3417 | expression_string.c_str()); |
| 3418 | |
| 3419 | return false; |
| 3420 | } |
| 3421 | } |
| 3422 | |
| 3423 | T total_area1 = exprtk::integrate(expression,x,T(-1),T(1)); |
| 3424 | T total_area2 = exprtk::integrate(expression,"x",T(-1),T(1)); |
| 3425 | const T pi = T(3.141592653589793238462643383279502); |
| 3426 | |
| 3427 | if (not_equal(total_area1,total_area2,T(0.000001))) |
| 3428 | { |
| 3429 | printf("run_test06() - Integration Error: area1 != area2\n"); |
| 3430 | return false; |
| 3431 | } |
| 3432 | |
| 3433 | if (not_equal(total_area1,T(pi) / T(2),T(0.000001))) |
| 3434 | { |
| 3435 | printf("run_test06() - Integration Error: Expected: %19.15f\tResult: %19.15f\n", |
| 3436 | static_cast<double>(pi / T(2)), |
| 3437 | static_cast<double>(total_area1)); |
| 3438 | |
| 3439 | return false; |
| 3440 | } |
| 3441 | |
| 3442 | return true; |
| 3443 | } |
| 3444 | |
| 3445 | template <typename T> |
| 3446 | bool run_test07() |
nothing calls this directly
no test coverage detected