// include libraries #include // for printing #include "../include/gcem.hpp" // exponential and natural logarithm functions double exp_val_1 = gcem::exp(3); double log_val_1 = gcem::log(2); // compare with the standard library double exp_val_2 = std::exp(3); double log_val_2 = std::log(2); std::cout << "exp(3) = " << exp_val_1 << std::endl; std::cout << "error = " << gcem::abs(exp_val_1 - exp_val_2) << std::endl; // trig functions double pi_dbl = double(GCEM_PI); double hpi_dbl = double(GCEM_HALF_PI); double sin_val_1 = gcem::sin(pi_dbl); double sin_val_2 = gcem::sin(hpi_dbl); std::cout << "sin(pi) = " << sin_val_1 << std::endl; std::cout << "sin(pi/2) = " << sin_val_2 << std::endl; std::cout << "gcem::tan(pi/2) = " << gcem::tan(hpi_dbl) << std::endl; std::cout << "std::tan(pi/2) = " << std::tan(hpi_dbl) << std::endl; std::cout << "|gcem::tan(0.9) - std::tan(0.9)| = " << gcem::abs(gcem::tan(1.5) - std::tan(1.5)) << std::endl; // hyperbolic functions constexpr double cosh_val = gcem::cosh(0.3); constexpr double inp_val = gcem::acosh(cosh_val); std::cout << "gcem::cosh(0.3) = " << cosh_val << std::endl; std::cout << "gcem::acosh(gcem::cosh(0.3)) = " << inp_val << std::endl; // define some storage double erf_inp_val, erf_val; double a_par, b_par; double ig_inp_val, bt_inp_val; double ig_val, bt_val; // Gaussian error function erf_inp_val = 1.2; erf_val = gcem::erf(erf_inp_val); std::cout << "gcem::erf(" << erf_inp_val << ") = " << erf_val << std::endl; // regularied lower incomplete gamma function a_par = 3; ig_inp_val = 4; ig_val = gcem::incomplete_gamma(a_par,ig_inp_val); std::cout << "gcem::incomplete_gamma(" << a_par << "," << ig_inp_val << ") = " << ig_val << std::endl; // regularied lower incomplete beta function a_par = 6; b_par = 5; bt_inp_val = 0.7; bt_val = gcem::incomplete_beta(a_par,b_par,bt_inp_val); std::cout << "gcem::incomplete_gamma(" << a_par << "," << b_par << "," << bt_inp_val << ") = " << bt_val << std::endl;