![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/include/boost/chrono/ |
Upload File : |
// boost/chrono/round.hpp ------------------------------------------------------------// // (C) Copyright Howard Hinnant // Copyright 2011 Vicente J. Botet Escriba // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/libs/chrono for documentation. #ifndef BOOST_CHRONO_ROUND_HPP #define BOOST_CHRONO_ROUND_HPP #include <boost/chrono/duration.hpp> #include <boost/chrono/duration.hpp> //#include <boost/chrono/typeof/boost/chrono/chrono.hpp> namespace boost { namespace chrono { /** * rounds to nearest, to even on tie */ template <class To, class Rep, class Period> To round(const duration<Rep, Period>& d) { typedef typename common_type<To, duration<Rep, Period> >::type result_type; result_type diff0; result_type diff1; To t0 = duration_cast<To>(d); To t1 = t0; if (t0>d) { --t1; diff0 = t0 - d; diff1 = d - t1; } else { ++t1; diff0 = d - t0; diff1 = t1 - d; } if (diff0 == diff1) { if (t0.count() & 1) return t1; return t0; } else if (diff0 < diff1) return t0; return t1; } } // namespace chrono } // namespace boost #endif