big_lanczos.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright (c) 2011 John Maddock
  2. // Use, modification and distribution are subject to the
  3. // Boost Software License, Version 1.0. (See accompanying file
  4. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #ifndef BOOST_MP_BIG_LANCZOS
  6. #define BOOST_MP_BIG_LANCZOS
  7. #include <boost/math/bindings/detail/big_lanczos.hpp>
  8. namespace boost {
  9. namespace math {
  10. namespace lanczos {
  11. template <class T, class Policy>
  12. struct lanczos;
  13. template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates, class Policy>
  14. struct lanczos<multiprecision::number<Backend, ExpressionTemplates>, Policy>
  15. {
  16. using precision_type = typename boost::math::policies::precision<multiprecision::number<Backend, ExpressionTemplates>, Policy>::type;
  17. using type = typename std::conditional<
  18. precision_type::value && (precision_type::value <= 73),
  19. lanczos13UDT,
  20. typename std::conditional<
  21. precision_type::value && (precision_type::value <= 122),
  22. lanczos22UDT,
  23. undefined_lanczos>::type>::type;
  24. };
  25. }
  26. }} // namespace boost::math::lanczos
  27. #endif