diff --git a/include/boost/numeric/interval/utility.hpp b/include/boost/numeric/interval/utility.hpp index 97c6bad..8e784b8 100644 --- a/include/boost/numeric/interval/utility.hpp +++ b/include/boost/numeric/interval/utility.hpp @@ -11,8 +11,7 @@ #ifndef BOOST_NUMERIC_INTERVAL_UTILITY_HPP #define BOOST_NUMERIC_INTERVAL_UTILITY_HPP -#include -#include +#include #include #include #include diff --git a/include/boost/numeric/interval/utility_fwd.hpp b/include/boost/numeric/interval/utility_fwd.hpp new file mode 100644 index 0000000..5fce06c --- /dev/null +++ b/include/boost/numeric/interval/utility_fwd.hpp @@ -0,0 +1,172 @@ +/* Boost interval/utility.hpp template interface file + * + * Copyright 2013 Cromwell D. Enage + * + * 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) + */ + +#ifndef BOOST_NUMERIC_INTERVAL_UTILITY_FWD_HPP +#define BOOST_NUMERIC_INTERVAL_UTILITY_FWD_HPP + +#include +#include +#include + +/* + * Interface of simple functions + */ + +namespace boost { namespace numeric { + + /* + * Utility Functions + */ + + template + const T& lower(const interval& x); + + template + const T& upper(const interval& x); + + template + T checked_lower(const interval& x); + + template + T width(const interval& x); + + template + T median(const interval& x); + + template + interval widen(const interval& x, const T& v); + + /* + * Set-like operations + */ + + template + bool empty(const interval& x); + + template + bool zero_in(const interval& x); + + template + bool in_zero(const interval& x); // DEPRECATED + + template + bool in(const T& x, const interval& y); + + template + bool + subset( + const interval& x + , const interval& y + ); + + template + bool + proper_subset( + const interval& x + , const interval& y + ); + + template + bool + overlap( + const interval& x + , const interval& y + ); + + template + bool singleton(const interval& x); + + template + bool + equal( + const interval& x + , const interval& y + ); + + template + interval + intersect( + const interval& x + , const interval& y + ); + + template + interval + hull(const interval& x, const interval& y); + + template + interval + hull(const interval& x, const T& y); + + template + interval + hull(const T& x, const interval& y); + + template + interval hull(const T& x, const T& y); + + template + std::pair,interval > + bisect(const interval& x); + + /* + * Elementary functions + */ + + template + T norm(const interval& x); + + template + interval abs(const interval& x); + + template + interval + max BOOST_PREVENT_MACRO_SUBSTITUTION ( + const interval& x + , const interval& y + ); + + template + interval + max BOOST_PREVENT_MACRO_SUBSTITUTION ( + const interval& x + , const T& y + ); + + template + interval + max BOOST_PREVENT_MACRO_SUBSTITUTION ( + const T& x + , const interval& y + ); + + template + interval + min BOOST_PREVENT_MACRO_SUBSTITUTION ( + const interval& x + , const interval& y + ); + + template + interval + min BOOST_PREVENT_MACRO_SUBSTITUTION ( + const interval& x + , const T& y + ); + + template + interval + min BOOST_PREVENT_MACRO_SUBSTITUTION ( + const T& x + , const interval& y + ); +}} // namespace boost::numeric + +#endif // include guard +