📄 c_error_policy_example.cpp
字号:
// C_error_policy_example.cpp// Copyright Paul A. Bristow 2007.// Copyright John Maddock 2007.// Use, modification and distribution are subject to the// Boost Software License, Version 1.0.// (See accompanying file LICENSE_1_0.txt// or copy at http://www.boost.org/LICENSE_1_0.txt)// Suppose we want a call to tgamma to behave in a C-compatible way// and set global ::errno rather than throw an exception.#include <boost/math/special_functions/gamma.hpp>using boost::math::tgamma;using boost::math::policies::policy;// Possible errorsusing boost::math::policies::overflow_error;using boost::math::policies::underflow_error;using boost::math::policies::domain_error;using boost::math::policies::pole_error;using boost::math::policies::denorm_error;using boost::math::policies::evaluation_error;using boost::math::policies::errno_on_error;//using boost::math::policies::ignore_error;//using namespace boost::math::policies;//using namespace boost::math;// Define a policy:typedef policy< domain_error<errno_on_error>, // 'bad' arguments. pole_error<errno_on_error>, // argument is pole value. overflow_error<errno_on_error>, // argument value causes overflow. evaluation_error<errno_on_error> // evaluation does not converge and may be inaccurate, or worse. > C_error_policy;// std#include <iostream> using std::cout; using std::endl; int main(){ // We can achieve this at the function call site // with the previously defined policy C_error_policy. double t = tgamma(4., C_error_policy()); cout << "tgamma(4., C_error_policy() = " << t << endl; // 6 // Alternatively we could use the function make_policy, // provided for convenience, // and define everything at the call site: t = tgamma(4., make_policy( domain_error<errno_on_error>(), pole_error<errno_on_error>(), overflow_error<errno_on_error>(), evaluation_error<errno_on_error>() )); cout << "tgamma(4., make_policy( ...) = " << t << endl; // 6 return 0;} // int main()/*OutputAutorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\c_error_policy_example.exe"tgamma(4., C_error_policy() = 6tgamma(4., make_policy( ...) = 6*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -