// Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion // // Copyright (C) 2003-2008 Matthias Christian Schabel // Copyright (C) 2008 Steven Watanabe // // 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) /** \file \brief test_absolute.cpp \details Test absolute units. Output: @verbatim @endverbatim **/ #include #include #include #include #include #include #include #include #include #include #define BOOST_UNITS_CHECK_CLOSE(a, b) (BOOST_CHECK((std::abs((a) - (b)) < .0000001))) namespace bu = boost::units; using bu::si::kelvin_base_unit; using bu::temperature::celsius_base_unit; using bu::temperature::fahrenheit_base_unit; typedef bu::unit::type> kelvin_type; typedef bu::unit::type> celsius_type; typedef bu::unit::type> fahrenheit_type; int test_main(int,char *[]) { BOOST_CONSTEXPR_OR_CONST bu::quantity > q1(212.0 * bu::absolute()); BOOST_CONSTEXPR_OR_CONST bu::quantity > q2(0.0 * bu::absolute()); BOOST_CONSTEXPR_OR_CONST bu::quantity > q3(q2); BOOST_CONSTEXPR_OR_CONST bu::quantity q4(q1 - q3); BOOST_UNITS_CHECK_CLOSE(q4.value(), 180.0); BOOST_CONSTEXPR_OR_CONST bu::quantity > q5(static_cast >(q4) + static_cast > >(q2)); BOOST_UNITS_CHECK_CLOSE(q5.value(), 373.15); BOOST_CONSTEXPR_OR_CONST bu::quantity > q6(q5); BOOST_UNITS_CHECK_CLOSE(q6.value(), 212.0); return(0); }