c_error_policy_example.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 75 行

CPP
75
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?