sinhc_test.hpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // unit test file sinhc.hpp for the special functions test suite
  2. // (C) Copyright Hubert Holin 2003.
  3. // Distributed under the Boost Software License, Version 1.0. (See
  4. // accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. #include <functional>
  7. #include <iomanip>
  8. #include <iostream>
  9. #include <complex>
  10. #include <boost/math/special_functions/sinhc.hpp>
  11. #define BOOST_TEST_MAIN
  12. #include <boost/test/unit_test.hpp>
  13. BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_test, T)
  14. {
  15. using ::std::abs;
  16. using ::std::numeric_limits;
  17. using ::boost::math::sinhc_pi;
  18. BOOST_TEST_MESSAGE("Testing sinhc_pi in the real domain for "
  19. << string_type_name<T>::_() << ".");
  20. BOOST_CHECK_PREDICATE(::std::less_equal<T>(),
  21. (abs(sinhc_pi<T>(static_cast<T>(0))-static_cast<T>(1)))
  22. (numeric_limits<T>::epsilon()));
  23. }
  24. BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_complex_test, T)
  25. {
  26. using ::std::abs;
  27. using ::std::sin;
  28. using ::std::numeric_limits;
  29. using ::boost::math::sinhc_pi;
  30. BOOST_TEST_MESSAGE("Testing sinhc_pi in the complex domain for "
  31. << string_type_name<T>::_() << ".");
  32. BOOST_CHECK_PREDICATE(::std::less_equal<T>(),
  33. (abs(sinhc_pi<T>(::std::complex<T>(0, 1))-
  34. ::std::complex<T>(sin(static_cast<T>(1)))))
  35. (numeric_limits<T>::epsilon()));
  36. }
  37. void sinhc_pi_manual_check()
  38. {
  39. using ::boost::math::sinhc_pi;
  40. BOOST_TEST_MESSAGE(" ");
  41. BOOST_TEST_MESSAGE("sinc_pi");
  42. for (int i = 0; i <= 100; i++)
  43. {
  44. #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
  45. BOOST_TEST_MESSAGE( ::std::setw(15)
  46. << sinhc_pi<float>(static_cast<float>(i-50)/
  47. static_cast<float>(50))
  48. << ::std::setw(15)
  49. << sinhc_pi<double>(static_cast<double>(i-50)/
  50. static_cast<double>(50))
  51. << ::std::setw(15)
  52. << sinhc_pi<long double>(static_cast<long double>(i-50)/
  53. static_cast<long double>(50)));
  54. #else
  55. BOOST_TEST_MESSAGE( ::std::setw(15)
  56. << sinhc_pi<float>(static_cast<float>(i-50)/
  57. static_cast<float>(50))
  58. << ::std::setw(15)
  59. << sinhc_pi<double>(static_cast<double>(i-50)/
  60. static_cast<double>(50)));
  61. #endif
  62. }
  63. BOOST_TEST_MESSAGE(" ");
  64. }