123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
- #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
- #include <limits>
- #include <boost/numeric/odeint/util/unit_helper.hpp>
- namespace boost {
- namespace numeric {
- namespace odeint {
- namespace detail {
- template< typename T >
- bool less_with_sign( T t1 , T t2 , T dt )
- {
- if( get_unit_value(dt) > 0 )
-
- return t2-t1 > std::numeric_limits<T>::epsilon();
- else
-
- return t1-t2 > std::numeric_limits<T>::epsilon();
- }
- template< typename T >
- bool less_eq_with_sign( T t1 , T t2 , T dt )
- {
- if( get_unit_value(dt) > 0 )
- return t1-t2 <= std::numeric_limits<T>::epsilon();
- else
- return t2-t1 <= std::numeric_limits<T>::epsilon();
- }
- template< typename T >
- T min_abs( T t1 , T t2 )
- {
- BOOST_USING_STD_MIN();
- BOOST_USING_STD_MAX();
- if( get_unit_value(t1)>0 )
- return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
- else
- return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
- }
- template< typename T >
- T max_abs( T t1 , T t2 )
- {
- BOOST_USING_STD_MIN();
- BOOST_USING_STD_MAX();
- if( get_unit_value(t1)>0 )
- return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
- else
- return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
- }
- } } } }
- #endif
|