1 // Boost.Units - A C++ library for zero-overhead dimensional analysis and 2 // unit/quantity manipulation and conversion 3 // 4 // Copyright (C) 2003-2008 Matthias Christian Schabel 5 // Copyright (C) 2007-2008 Steven Watanabe 6 // 7 // Distributed under the Boost Software License, Version 1.0. (See 8 // accompanying file LICENSE_1_0.txt or copy at 9 // http://www.boost.org/LICENSE_1_0.txt) 10 11 #ifndef BOOST_UNITS_SI_PREFIXES_HPP 12 #define BOOST_UNITS_SI_PREFIXES_HPP 13 14 #include <boost/units/static_constant.hpp> 15 16 #include <boost/units/make_scaled_unit.hpp> 17 #include <boost/units/systems/si/dimensionless.hpp> 18 19 namespace boost { 20 21 namespace units { 22 23 namespace si { 24 25 #define BOOST_UNITS_METRIC_PREFIX(exponent, name) \ 26 typedef make_scaled_unit<dimensionless, scale<10, static_rational<exponent> > >::type name ## _type;\ 27 BOOST_UNITS_STATIC_CONSTANT(name, name ## _type) 28 29 BOOST_UNITS_METRIC_PREFIX(-24, yocto); 30 BOOST_UNITS_METRIC_PREFIX(-21, zepto); 31 BOOST_UNITS_METRIC_PREFIX(-18, atto); 32 BOOST_UNITS_METRIC_PREFIX(-15, femto); 33 BOOST_UNITS_METRIC_PREFIX(-12, pico); 34 BOOST_UNITS_METRIC_PREFIX(-9, nano); 35 BOOST_UNITS_METRIC_PREFIX(-6, micro); 36 BOOST_UNITS_METRIC_PREFIX(-3, milli); 37 BOOST_UNITS_METRIC_PREFIX(-2, centi); 38 BOOST_UNITS_METRIC_PREFIX(-1, deci); 39 BOOST_UNITS_METRIC_PREFIX(1, deka); 40 BOOST_UNITS_METRIC_PREFIX(2, hecto); 41 BOOST_UNITS_METRIC_PREFIX(3, kilo); 42 BOOST_UNITS_METRIC_PREFIX(6, mega); 43 BOOST_UNITS_METRIC_PREFIX(9, giga); 44 BOOST_UNITS_METRIC_PREFIX(12, tera); 45 BOOST_UNITS_METRIC_PREFIX(15, peta); 46 BOOST_UNITS_METRIC_PREFIX(18, exa); 47 BOOST_UNITS_METRIC_PREFIX(21, zetta); 48 BOOST_UNITS_METRIC_PREFIX(24, yotta); 49 50 /*BOOST_UNITS_STATIC_CONSTANT(yocto,long double) = (1e-24); ///< metric prefix for 1.0e-24 51 BOOST_UNITS_STATIC_CONSTANT(zepto,long double) = (1e-21); ///< metric prefix for 1.0e-21 52 BOOST_UNITS_STATIC_CONSTANT(atto,long double) = (1e-18); ///< metric prefix for 1.0e-18 53 BOOST_UNITS_STATIC_CONSTANT(femto,long double) = (1e-15); ///< metric prefix for 1.0e-15 54 BOOST_UNITS_STATIC_CONSTANT(pico,long double) = (1e-12); ///< metric prefix for 1.0e-12 55 BOOST_UNITS_STATIC_CONSTANT(nano,long double) = (1e-9); ///< metric prefix for 1.0e-9 56 BOOST_UNITS_STATIC_CONSTANT(micro,long double) = (1e-6); ///< metric prefix for 1.0e-6 57 BOOST_UNITS_STATIC_CONSTANT(milli,long double) = (1e-3); ///< metric prefix for 1.0e-3 58 BOOST_UNITS_STATIC_CONSTANT(centi,long double) = (1e-2); ///< metric prefix for 1.0e-2 59 BOOST_UNITS_STATIC_CONSTANT(deci,long double) = (1e-1); ///< metric prefix for 1.0e-1 60 BOOST_UNITS_STATIC_CONSTANT(deka,long double) = (1e1); ///< metric prefix for 1.0e+1 61 BOOST_UNITS_STATIC_CONSTANT(hecto,long double) = (1e2); ///< metric prefix for 1.0e+2 62 BOOST_UNITS_STATIC_CONSTANT(kilo,long double) = (1e3); ///< metric prefix for 1.0e+3 63 BOOST_UNITS_STATIC_CONSTANT(mega,long double) = (1e6); ///< metric prefix for 1.0e+6 64 BOOST_UNITS_STATIC_CONSTANT(giga,long double) = (1e9); ///< metric prefix for 1.0e+9 65 BOOST_UNITS_STATIC_CONSTANT(tera,long double) = (1e12); ///< metric prefix for 1.0e+12 66 BOOST_UNITS_STATIC_CONSTANT(peta,long double) = (1e15); ///< metric prefix for 1.0e+15 67 BOOST_UNITS_STATIC_CONSTANT(exa,long double) = (1e18); ///< metric prefix for 1.0e+18 68 BOOST_UNITS_STATIC_CONSTANT(zetta,long double) = (1e21); ///< metric prefix for 1.0e+21 69 BOOST_UNITS_STATIC_CONSTANT(yotta,long double) = (1e24); ///< metric prefix for 1.0e+24 */ 70 71 } // namespace si 72 73 } // namespace units 74 75 } // namespace boost 76 77 #endif // BOOST_UNITS_SI_PREFIXES_HPP 78