complex_test.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 868 行 · 第 1/3 页

CPP
868
字号
   check_complex(ct(half_pi), result, 2);      result = boost::math::acos(ct(mzero));   check_complex(ct(half_pi), result, 2);      result = boost::math::acos(ct(zero, mzero));   check_complex(ct(half_pi), result, 2);      result = boost::math::acos(ct(mzero, mzero));   check_complex(ct(half_pi), result, 2);      if(test_nan)   {      result = boost::math::acos(ct(zero,nan));      BOOST_CHECK_CLOSE(result.real(), half_pi, eps*200);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));         result = boost::math::acos(ct(mzero,nan));      BOOST_CHECK_CLOSE(result.real(), half_pi, eps*200);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));   }   if(test_infinity)   {      result = boost::math::acos(ct(zero, infinity));      BOOST_CHECK_CLOSE(result.real(), half_pi, eps*200);      BOOST_CHECK(result.imag() == -infinity);      result = boost::math::acos(ct(zero, -infinity));      BOOST_CHECK_CLOSE(result.real(), half_pi, eps*200);      BOOST_CHECK(result.imag() == infinity);   }   if(test_nan)   {      result = boost::math::acos(ct(one, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));   }   if(test_infinity)   {      result = boost::math::acos(ct(-infinity, one));      BOOST_CHECK_CLOSE(result.real(), pi, eps*200);      BOOST_CHECK(result.imag() == -infinity);      result = boost::math::acos(ct(infinity, one));      BOOST_CHECK(result.real() == 0);      BOOST_CHECK(result.imag() == -infinity);      result = boost::math::acos(ct(-infinity, -one));      BOOST_CHECK_CLOSE(result.real(), pi, eps*200);      BOOST_CHECK(result.imag() == infinity);      result = boost::math::acos(ct(infinity, -one));      BOOST_CHECK(result.real() == 0);      BOOST_CHECK(result.imag() == infinity);      result = boost::math::acos(ct(-infinity, infinity));      BOOST_CHECK_CLOSE(result.real(), three_quarter_pi, eps*200);      BOOST_CHECK(result.imag() == -infinity);      result = boost::math::acos(ct(infinity, infinity));      BOOST_CHECK_CLOSE(result.real(), quarter_pi, eps*200);      BOOST_CHECK(result.imag() == -infinity);      result = boost::math::acos(ct(-infinity, -infinity));      BOOST_CHECK_CLOSE(result.real(), three_quarter_pi, eps*200);      BOOST_CHECK(result.imag() == infinity);      result = boost::math::acos(ct(infinity, -infinity));      BOOST_CHECK_CLOSE(result.real(), quarter_pi, eps*200);      BOOST_CHECK(result.imag() == infinity);   }   if(test_nan)   {      result = boost::math::acos(ct(infinity, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(std::fabs(result.imag()) == infinity);      result = boost::math::acos(ct(-infinity, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(std::fabs(result.imag()) == infinity);      result = boost::math::acos(ct(nan, zero));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::acos(ct(nan, -zero));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::acos(ct(nan, one));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::acos(ct(nan, -one));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::acos(ct(nan, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::acos(ct(nan, infinity));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(result.imag() == -infinity);            result = boost::math::acos(ct(nan, -infinity));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(result.imag() == infinity);   }   //   // C99 spot tests for acosh:   //   result = boost::math::acosh(ct(zero, zero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);   result = boost::math::acosh(ct(zero, mzero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);   result = boost::math::acosh(ct(mzero, zero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);      result = boost::math::acosh(ct(mzero, mzero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);      if(test_infinity)   {      result = boost::math::acosh(ct(one, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);      result = boost::math::acosh(ct(one, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -half_pi, eps*200);   }   if(test_nan)   {      result = boost::math::acosh(ct(one, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));   }   if(test_infinity)   {      result = boost::math::acosh(ct(-infinity, one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), pi, eps*200);            result = boost::math::acosh(ct(infinity, one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::acosh(ct(-infinity, -one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -pi, eps*200);            result = boost::math::acosh(ct(infinity, -one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::acosh(ct(-infinity, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), three_quarter_pi, eps*200);            result = boost::math::acosh(ct(infinity, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), quarter_pi, eps*200);            result = boost::math::acosh(ct(-infinity, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -three_quarter_pi, eps*200);            result = boost::math::acosh(ct(infinity, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -quarter_pi, eps*200);   }      if(test_nan)   {      result = boost::math::acosh(ct(infinity, nan));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(-infinity, nan));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(nan, one));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(nan, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(nan, -one));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(nan, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));            result = boost::math::acosh(ct(nan, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));   }   //   // C99 spot checks for asinh:   //   result = boost::math::asinh(ct(zero, zero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK(result.imag() == 0);   result = boost::math::asinh(ct(mzero, zero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK(result.imag() == 0);   result = boost::math::asinh(ct(zero, mzero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK(result.imag() == 0);   result = boost::math::asinh(ct(mzero, mzero));   BOOST_CHECK(result.real() == 0);   BOOST_CHECK(result.imag() == 0);   if(test_infinity)   {      result = boost::math::asinh(ct(one, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);            result = boost::math::asinh(ct(one, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -half_pi, eps*200);            result = boost::math::asinh(ct(-one, -infinity));      BOOST_CHECK(result.real() == -infinity);      BOOST_CHECK_CLOSE(result.imag(), -half_pi, eps*200);            result = boost::math::asinh(ct(-one, infinity));      BOOST_CHECK(result.real() == -infinity);      BOOST_CHECK_CLOSE(result.imag(), half_pi, eps*200);   }   if(test_nan)   {      result = boost::math::asinh(ct(one, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::asinh(ct(-one, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));      result = boost::math::asinh(ct(zero, nan));      BOOST_CHECK(boost::math::detail::test_is_nan(result.real()));      BOOST_CHECK(boost::math::detail::test_is_nan(result.imag()));   }   if(test_infinity)   {      result = boost::math::asinh(ct(infinity, one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::asinh(ct(infinity, -one));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::asinh(ct(-infinity, -one));      BOOST_CHECK(result.real() == -infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::asinh(ct(-infinity, one));      BOOST_CHECK(result.real() == -infinity);      BOOST_CHECK(result.imag() == 0);            result = boost::math::asinh(ct(infinity, infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), quarter_pi, eps*200);            result = boost::math::asinh(ct(infinity, -infinity));      BOOST_CHECK(result.real() == infinity);      BOOST_CHECK_CLOSE(result.imag(), -quarter_pi, eps*200);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?