1 // Copyright John Maddock 2008. 2 3 // Use, modification and distribution are subject to the 4 // Boost Software License, Version 1.0. 5 // (See accompanying file LICENSE_1_0.txt 6 // or copy at http://www.boost.org/LICENSE_1_0.txt) 7 8 #ifndef BOOST_MATH_SPECIAL_ROUND_FWD_HPP 9 #define BOOST_MATH_SPECIAL_ROUND_FWD_HPP 10 11 #include <boost/config.hpp> 12 #include <boost/math/tools/promotion.hpp> 13 14 #ifdef _MSC_VER 15 #pragma once 16 #endif 17 18 namespace boost 19 { 20 namespace math 21 { 22 23 template <class T, class Policy> 24 typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol); 25 template <class T> 26 typename tools::promote_args<T>::type trunc(const T& v); 27 template <class T, class Policy> 28 int itrunc(const T& v, const Policy& pol); 29 template <class T> 30 int itrunc(const T& v); 31 template <class T, class Policy> 32 long ltrunc(const T& v, const Policy& pol); 33 template <class T> 34 long ltrunc(const T& v); 35 #ifdef BOOST_HAS_LONG_LONG 36 template <class T, class Policy> 37 boost::long_long_type lltrunc(const T& v, const Policy& pol); 38 template <class T> 39 boost::long_long_type lltrunc(const T& v); 40 #endif 41 template <class T, class Policy> 42 typename tools::promote_args<T>::type round(const T& v, const Policy& pol); 43 template <class T> 44 typename tools::promote_args<T>::type round(const T& v); 45 template <class T, class Policy> 46 int iround(const T& v, const Policy& pol); 47 template <class T> 48 int iround(const T& v); 49 template <class T, class Policy> 50 long lround(const T& v, const Policy& pol); 51 template <class T> 52 long lround(const T& v); 53 #ifdef BOOST_HAS_LONG_LONG 54 template <class T, class Policy> 55 boost::long_long_type llround(const T& v, const Policy& pol); 56 template <class T> 57 boost::long_long_type llround(const T& v); 58 #endif 59 template <class T, class Policy> 60 T modf(const T& v, T* ipart, const Policy& pol); 61 template <class T> 62 T modf(const T& v, T* ipart); 63 template <class T, class Policy> 64 T modf(const T& v, int* ipart, const Policy& pol); 65 template <class T> 66 T modf(const T& v, int* ipart); 67 template <class T, class Policy> 68 T modf(const T& v, long* ipart, const Policy& pol); 69 template <class T> 70 T modf(const T& v, long* ipart); 71 #ifdef BOOST_HAS_LONG_LONG 72 template <class T, class Policy> 73 T modf(const T& v, boost::long_long_type* ipart, const Policy& pol); 74 template <class T> 75 T modf(const T& v, boost::long_long_type* ipart); 76 #endif 77 78 } 79 } 80 81 #undef BOOST_MATH_STD_USING 82 #define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE\ 83 using boost::math::round;\ 84 using boost::math::iround;\ 85 using boost::math::lround;\ 86 using boost::math::trunc;\ 87 using boost::math::itrunc;\ 88 using boost::math::ltrunc;\ 89 using boost::math::modf; 90 91 92 #endif // BOOST_MATH_SPECIAL_ROUND_FWD_HPP 93 94