brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 6e372ec Raw
75 lines · plain
1//  Copyright John Maddock 2007.2//  Copyright Matt Borland 2024.3//  Use, modification and distribution are subject to the4//  Boost Software License, Version 1.0. (See accompanying file5//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)6 7#ifndef BOOST_MATH_MODF_HPP8#define BOOST_MATH_MODF_HPP9 10#ifdef _MSC_VER11#pragma once12#endif13 14#include <boost/math/tools/config.hpp>15#include <boost/math/special_functions/trunc.hpp>16#include <boost/math/policies/policy.hpp>17 18#ifndef BOOST_MATH_HAS_NVRTC19#include <boost/math/special_functions/math_fwd.hpp>20#endif21 22namespace boost{ namespace math{23 24template <class T, class Policy>25BOOST_MATH_GPU_ENABLED inline T modf(const T& v, T* ipart, const Policy& pol)26{27   *ipart = trunc(v, pol);28   return v - *ipart;29}30template <class T>31BOOST_MATH_GPU_ENABLED inline T modf(const T& v, T* ipart)32{33   return modf(v, ipart, policies::policy<>());34}35 36template <class T, class Policy>37BOOST_MATH_GPU_ENABLED inline T modf(const T& v, int* ipart, const Policy& pol)38{39   *ipart = itrunc(v, pol);40   return v - *ipart;41}42template <class T>43BOOST_MATH_GPU_ENABLED inline T modf(const T& v, int* ipart)44{45   return modf(v, ipart, policies::policy<>());46}47 48template <class T, class Policy>49BOOST_MATH_GPU_ENABLED inline T modf(const T& v, long* ipart, const Policy& pol)50{51   *ipart = ltrunc(v, pol);52   return v - *ipart;53}54template <class T>55BOOST_MATH_GPU_ENABLED inline T modf(const T& v, long* ipart)56{57   return modf(v, ipart, policies::policy<>());58}59 60template <class T, class Policy>61BOOST_MATH_GPU_ENABLED inline T modf(const T& v, long long* ipart, const Policy& pol)62{63   *ipart = lltrunc(v, pol);64   return v - *ipart;65}66template <class T>67BOOST_MATH_GPU_ENABLED inline T modf(const T& v, long long* ipart)68{69   return modf(v, ipart, policies::policy<>());70}71 72}} // namespaces73 74#endif // BOOST_MATH_MODF_HPP75