MCPcopy Create free account
hub / github.com/ArashPartow/exprtk / run_test07

Function run_test07

exprtk_test.cpp:3446–3543  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3444
3445template <typename T>
3446bool run_test07()
3447{
3448 typedef exprtk::expression<T> expression_t;
3449
3450 const std::string expression_string = "sin(2x + 1 / 3)";
3451
3452 T x = T(0);
3453
3454 exprtk::symbol_table<T> symbol_table;
3455 symbol_table.add_variable("x",x);
3456
3457 expression_t expression;
3458 expression.register_symbol_table(symbol_table);
3459
3460 {
3461 exprtk::parser<T> parser;
3462
3463 if (!parser.compile(expression_string,expression))
3464 {
3465 printf("run_test07() - Error: %s Expression: %s\n",
3466 parser.error().c_str(),
3467 expression_string.c_str());
3468
3469 return false;
3470 }
3471 }
3472
3473 for (x = T(-200); x < T(200); x += T(0.0001))
3474 {
3475 {
3476 T deriv1_real_result = T(2) * std::cos(T(2) * x + T(1.0 / 3.0));
3477 T deriv1_result1 = exprtk::derivative(expression,x);
3478 T deriv1_result2 = exprtk::derivative(expression,"x");
3479
3480 if (not_equal(deriv1_result1,deriv1_result2,T(0.00001)))
3481 {
3482 printf("run_test07() - 1st Derivative Error: result1 != result2\n");
3483 return false;
3484 }
3485
3486 if (not_equal(deriv1_result1,deriv1_real_result,T(0.00001)))
3487 {
3488 printf("run_test07() - 1st Derivative Error: x: %19.15f\tExpected: %19.15f\tResult: %19.15f\n",
3489 static_cast<double>(x),
3490 static_cast<double>(deriv1_real_result),
3491 static_cast<double>(deriv1_result1));
3492
3493 return false;
3494 }
3495 }
3496
3497 {
3498 T deriv2_real_result = T(-4) * std::sin(T(2) * x + T(1.0 / 3.0));
3499 T deriv2_result1 = exprtk::second_derivative(expression,x);
3500 T deriv2_result2 = exprtk::second_derivative(expression,"x");
3501
3502 if (not_equal(deriv2_result1,deriv2_result2,T(0.0000001)))
3503 {

Callers

nothing calls this directly

Calls 1

not_equalFunction · 0.85

Tested by

no test coverage detected