systems.cpp 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072
  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) 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. \file
  12. \brief systems.cpp
  13. \details
  14. Test various non-si units
  15. Output:
  16. @verbatim
  17. @endverbatim
  18. **/
  19. #define BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(namespace_,unit_name_,dimension_) \
  20. namespace boost { \
  21. namespace units { \
  22. namespace namespace_ { \
  23. typedef make_system<unit_name_ ## _base_unit>::type unit_name_ ## system_; \
  24. typedef unit<dimension_ ## _dimension,unit_name_ ## system_> unit_name_ ## _ ## dimension_; \
  25. static constexpr unit_name_ ## _ ## dimension_ unit_name_ ## s; \
  26. } \
  27. } \
  28. } \
  29. #include <iostream>
  30. #include <sstream>
  31. #include <algorithm>
  32. #include <boost/units/conversion.hpp>
  33. #include <boost/units/io.hpp>
  34. #include <boost/units/pow.hpp>
  35. #include <boost/units/systems/cgs.hpp>
  36. #include <boost/units/systems/si.hpp>
  37. // angle base units
  38. #include <boost/units/base_units/angle/arcminute.hpp>
  39. #include <boost/units/base_units/angle/arcsecond.hpp>
  40. #include <boost/units/base_units/angle/degree.hpp>
  41. #include <boost/units/base_units/angle/gradian.hpp>
  42. #include <boost/units/base_units/angle/revolution.hpp>
  43. #include <boost/units/base_units/angle/radian.hpp>
  44. #include <boost/units/base_units/angle/steradian.hpp>
  45. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,arcminute,plane_angle)
  46. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,arcsecond,plane_angle)
  47. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,degree,plane_angle)
  48. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,gradian,plane_angle)
  49. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,radian,plane_angle)
  50. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,revolution,plane_angle)
  51. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(angle,steradian,solid_angle)
  52. // astronomical base units
  53. #include <boost/units/base_units/astronomical/astronomical_unit.hpp>
  54. #include <boost/units/base_units/astronomical/light_second.hpp>
  55. #include <boost/units/base_units/astronomical/light_minute.hpp>
  56. #include <boost/units/base_units/astronomical/light_hour.hpp>
  57. #include <boost/units/base_units/astronomical/light_day.hpp>
  58. #include <boost/units/base_units/astronomical/light_year.hpp>
  59. #include <boost/units/base_units/astronomical/parsec.hpp>
  60. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,astronomical_unit,length)
  61. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,light_second,length)
  62. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,light_minute,length)
  63. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,light_hour,length)
  64. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,light_day,length)
  65. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,light_year,length)
  66. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(astronomical,parsec,length)
  67. // imperial base units
  68. #include <boost/units/base_units/imperial/thou.hpp>
  69. #include <boost/units/base_units/imperial/inch.hpp>
  70. #include <boost/units/base_units/imperial/foot.hpp>
  71. #include <boost/units/base_units/imperial/yard.hpp>
  72. #include <boost/units/base_units/imperial/furlong.hpp>
  73. #include <boost/units/base_units/imperial/mile.hpp>
  74. #include <boost/units/base_units/imperial/league.hpp>
  75. #include <boost/units/base_units/imperial/grain.hpp>
  76. #include <boost/units/base_units/imperial/drachm.hpp>
  77. #include <boost/units/base_units/imperial/ounce.hpp>
  78. #include <boost/units/base_units/imperial/pound.hpp>
  79. #include <boost/units/base_units/imperial/stone.hpp>
  80. #include <boost/units/base_units/imperial/quarter.hpp>
  81. #include <boost/units/base_units/imperial/hundredweight.hpp>
  82. #include <boost/units/base_units/imperial/ton.hpp>
  83. #include <boost/units/base_units/imperial/fluid_ounce.hpp>
  84. #include <boost/units/base_units/imperial/gill.hpp>
  85. #include <boost/units/base_units/imperial/pint.hpp>
  86. #include <boost/units/base_units/imperial/quart.hpp>
  87. #include <boost/units/base_units/imperial/gallon.hpp>
  88. #include <boost/units/base_units/imperial/conversions.hpp>
  89. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,thou,length)
  90. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,inch,length)
  91. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,foot,length)
  92. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,yard,length)
  93. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,furlong,length)
  94. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,mile,length)
  95. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,league,length)
  96. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,grain,mass)
  97. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,drachm,mass)
  98. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,ounce,mass)
  99. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,pound,mass)
  100. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,stone,mass)
  101. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,quarter,mass)
  102. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,hundredweight,mass)
  103. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,ton,mass)
  104. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,fluid_ounce,volume)
  105. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,gill,volume)
  106. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,pint,volume)
  107. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,quart,volume)
  108. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(imperial,gallon,volume)
  109. // metric base units
  110. #include <boost/units/base_units/metric/angstrom.hpp>
  111. #include <boost/units/base_units/metric/fermi.hpp>
  112. #include <boost/units/base_units/metric/micron.hpp>
  113. #include <boost/units/base_units/metric/nautical_mile.hpp>
  114. #include <boost/units/base_units/metric/ton.hpp>
  115. #include <boost/units/base_units/metric/day.hpp>
  116. #include <boost/units/base_units/metric/hour.hpp>
  117. #include <boost/units/base_units/metric/minute.hpp>
  118. #include <boost/units/base_units/metric/year.hpp>
  119. #include <boost/units/base_units/metric/knot.hpp>
  120. #include <boost/units/base_units/metric/are.hpp>
  121. #include <boost/units/base_units/metric/barn.hpp>
  122. #include <boost/units/base_units/metric/hectare.hpp>
  123. #include <boost/units/base_units/metric/liter.hpp>
  124. #include <boost/units/base_units/metric/atmosphere.hpp>
  125. #include <boost/units/base_units/metric/bar.hpp>
  126. #include <boost/units/base_units/metric/mmHg.hpp>
  127. #include <boost/units/base_units/metric/torr.hpp>
  128. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,angstrom,length)
  129. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,fermi,length)
  130. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,micron,length)
  131. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,nautical_mile,length)
  132. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,ton,mass)
  133. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,day,time)
  134. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,hour,time)
  135. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,minute,time)
  136. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,year,time)
  137. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,knot,velocity)
  138. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,are,area)
  139. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,barn,area)
  140. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,hectare,area)
  141. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,liter,volume)
  142. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,atmosphere,pressure)
  143. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,bar,pressure)
  144. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,mmHg,pressure)
  145. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(metric,torr,pressure)
  146. // us base units
  147. #include <boost/units/base_units/us/mil.hpp>
  148. #include <boost/units/base_units/us/inch.hpp>
  149. #include <boost/units/base_units/us/foot.hpp>
  150. #include <boost/units/base_units/us/yard.hpp>
  151. #include <boost/units/base_units/us/mile.hpp>
  152. #include <boost/units/base_units/us/grain.hpp>
  153. #include <boost/units/base_units/us/dram.hpp>
  154. #include <boost/units/base_units/us/ounce.hpp>
  155. #include <boost/units/base_units/us/pound.hpp>
  156. #include <boost/units/base_units/us/hundredweight.hpp>
  157. #include <boost/units/base_units/us/ton.hpp>
  158. #include <boost/units/base_units/us/minim.hpp>
  159. #include <boost/units/base_units/us/fluid_dram.hpp>
  160. #include <boost/units/base_units/us/teaspoon.hpp>
  161. #include <boost/units/base_units/us/tablespoon.hpp>
  162. #include <boost/units/base_units/us/fluid_ounce.hpp>
  163. #include <boost/units/base_units/us/gill.hpp>
  164. #include <boost/units/base_units/us/cup.hpp>
  165. #include <boost/units/base_units/us/pint.hpp>
  166. #include <boost/units/base_units/us/quart.hpp>
  167. #include <boost/units/base_units/us/gallon.hpp>
  168. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,mil,length)
  169. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,inch,length)
  170. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,foot,length)
  171. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,yard,length)
  172. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,mile,length)
  173. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,grain,mass)
  174. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,dram,mass)
  175. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,ounce,mass)
  176. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,pound,mass)
  177. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,hundredweight,mass)
  178. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,ton,mass)
  179. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,minim,volume)
  180. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,fluid_dram,volume)
  181. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,teaspoon,volume)
  182. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,tablespoon,volume)
  183. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,fluid_ounce,volume)
  184. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,gill,volume)
  185. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,cup,volume)
  186. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,pint,volume)
  187. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,quart,volume)
  188. BOOST_UNITS_DEFINE_SINGLE_UNIT_SYSTEM(us,gallon,volume)
  189. int main(void)
  190. {
  191. using namespace boost::units;
  192. {
  193. using namespace boost::units::angle;
  194. std::cout << "Testing angle base units..." << std::endl;
  195. quantity<arcsecond_plane_angle> as(1.0*arcseconds);
  196. quantity<arcminute_plane_angle> am(1.0*arcminutes);
  197. quantity<degree_plane_angle> d(1.0*degrees);
  198. quantity<gradian_plane_angle> g(1.0*gradians);
  199. quantity<radian_plane_angle> r(1.0*radians);
  200. quantity<revolution_plane_angle> rev(1.0*revolutions);
  201. std::cout << as << " = " << quantity<si::plane_angle>(as) << std::endl
  202. << am << " = " << quantity<si::plane_angle>(am) << std::endl
  203. << d << " = " << quantity<si::plane_angle>(d) << std::endl
  204. << g << " = " << quantity<si::plane_angle>(g) << std::endl
  205. << r << " = " << quantity<si::plane_angle>(r) << std::endl
  206. << rev << " = " << quantity<si::plane_angle>(rev) << std::endl
  207. << std::endl;
  208. std::cout << rev << "/" << as << " = " << quantity<si::dimensionless>(rev/as) << std::endl
  209. << rev << "/" << am << " = " << quantity<si::dimensionless>(rev/am) << std::endl
  210. << rev << "/" << d << " = " << quantity<si::dimensionless>(rev/d) << std::endl
  211. << rev << "/" << g << " = " << quantity<si::dimensionless>(rev/g) << std::endl
  212. << rev << "/" << r << " = " << quantity<si::dimensionless>(rev/r) << std::endl
  213. << std::endl;
  214. // conversions only work with exponent of +/- 1 in scaled_base_unit?
  215. std::cout << as << " = " << quantity<arcsecond_plane_angle>(as) << std::endl
  216. << am << " = " << quantity<arcsecond_plane_angle>(am) << std::endl
  217. << d << " = " << quantity<arcsecond_plane_angle>(d) << std::endl
  218. << rev << " = " << quantity<arcsecond_plane_angle>(rev) << std::endl
  219. << std::endl;
  220. // conversions only work with exponent of +/- 1 in scaled_base_unit? see arcsecond.hpp
  221. std::cout << as << " = " << quantity<arcminute_plane_angle>(as) << std::endl
  222. << am << " = " << quantity<arcminute_plane_angle>(am) << std::endl
  223. << d << " = " << quantity<arcminute_plane_angle>(d) << std::endl
  224. << rev << " = " << quantity<arcminute_plane_angle>(rev) << std::endl
  225. << std::endl;
  226. std::cout << as << " = " << quantity<degree_plane_angle>(as) << std::endl
  227. << am << " = " << quantity<degree_plane_angle>(am) << std::endl
  228. << d << " = " << quantity<degree_plane_angle>(d) << std::endl
  229. << rev << " = " << quantity<degree_plane_angle>(rev) << std::endl
  230. << std::endl;
  231. std::cout << as << " = " << quantity<revolution_plane_angle>(as) << std::endl
  232. << am << " = " << quantity<revolution_plane_angle>(am) << std::endl
  233. << d << " = " << quantity<revolution_plane_angle>(d) << std::endl
  234. << rev << " = " << quantity<revolution_plane_angle>(rev) << std::endl
  235. << std::endl;
  236. quantity<steradian_solid_angle> sa1(1.0*steradians);
  237. std::cout << sa1 << std::endl
  238. << std::endl;
  239. }
  240. {
  241. using namespace boost::units::astronomical;
  242. std::cout << "Testing astronomical base units..." << std::endl;
  243. quantity<light_second_length> ls(1.0*light_seconds);
  244. quantity<light_minute_length> lm(1.0*light_minutes);
  245. quantity<astronomical_unit_length> au(1.0*astronomical_units);
  246. quantity<light_hour_length> lh(1.0*light_hours);
  247. quantity<light_day_length> ld(1.0*light_days);
  248. quantity<light_year_length> ly(1.0*light_years);
  249. quantity<parsec_length> ps(1.0*parsecs);
  250. std::cout << ls << " = " << quantity<si::length>(ls) << std::endl
  251. << lm << " = " << quantity<si::length>(lm) << std::endl
  252. << au << " = " << quantity<si::length>(au) << std::endl
  253. << lh << " = " << quantity<si::length>(lh) << std::endl
  254. << ld << " = " << quantity<si::length>(ld) << std::endl
  255. << ly << " = " << quantity<si::length>(ly) << std::endl
  256. << ps << " = " << quantity<si::length>(ps) << std::endl
  257. << std::endl;
  258. std::cout << ly << "/" << ls << " = " << quantity<si::dimensionless>(ly/ls) << std::endl
  259. << ly << "/" << lm << " = " << quantity<si::dimensionless>(ly/lm) << std::endl
  260. << ly << "/" << au << " = " << quantity<si::dimensionless>(ly/au) << std::endl
  261. << ly << "/" << lh << " = " << quantity<si::dimensionless>(ly/ld) << std::endl
  262. << ly << "/" << ld << " = " << quantity<si::dimensionless>(ly/lh) << std::endl
  263. << ly << "/" << ps << " = " << quantity<si::dimensionless>(ly/ps) << std::endl
  264. << std::endl;
  265. std::cout << ls << " = " << quantity<light_second_length>(ls) << std::endl
  266. << lm << " = " << quantity<light_second_length>(lm) << std::endl
  267. << lh << " = " << quantity<light_second_length>(lh) << std::endl
  268. << ld << " = " << quantity<light_second_length>(ld) << std::endl
  269. << ly << " = " << quantity<light_second_length>(ly) << std::endl
  270. << std::endl;
  271. std::cout << ls << " = " << quantity<light_minute_length>(ls) << std::endl
  272. << lm << " = " << quantity<light_minute_length>(lm) << std::endl
  273. << lh << " = " << quantity<light_minute_length>(lh) << std::endl
  274. << ld << " = " << quantity<light_minute_length>(ld) << std::endl
  275. << ly << " = " << quantity<light_minute_length>(ly) << std::endl
  276. << std::endl;
  277. std::cout << ls << " = " << quantity<light_hour_length>(ls) << std::endl
  278. << lm << " = " << quantity<light_hour_length>(lm) << std::endl
  279. << lh << " = " << quantity<light_hour_length>(lh) << std::endl
  280. << ld << " = " << quantity<light_hour_length>(ld) << std::endl
  281. << ly << " = " << quantity<light_hour_length>(ly) << std::endl
  282. << std::endl;
  283. std::cout << ls << " = " << quantity<light_day_length>(ls) << std::endl
  284. << lm << " = " << quantity<light_day_length>(lm) << std::endl
  285. << lh << " = " << quantity<light_day_length>(lh) << std::endl
  286. << ld << " = " << quantity<light_day_length>(ld) << std::endl
  287. << ly << " = " << quantity<light_day_length>(ly) << std::endl
  288. << std::endl;
  289. std::cout << ls << " = " << quantity<light_year_length>(ls) << std::endl
  290. << lm << " = " << quantity<light_year_length>(lm) << std::endl
  291. << lh << " = " << quantity<light_year_length>(ld) << std::endl
  292. << ld << " = " << quantity<light_year_length>(lh) << std::endl
  293. << ly << " = " << quantity<light_year_length>(ly) << std::endl
  294. << std::endl;
  295. }
  296. {
  297. using namespace boost::units::imperial;
  298. std::cout << "Testing imperial base units..." << std::endl;
  299. quantity<thou_length> iml1(1.0*thous);
  300. quantity<inch_length> iml2(1.0*inchs);
  301. quantity<foot_length> iml3(1.0*foots);
  302. quantity<yard_length> iml4(1.0*yards);
  303. quantity<furlong_length> iml5(1.0*furlongs);
  304. quantity<mile_length> iml6(1.0*miles);
  305. quantity<league_length> iml7(1.0*leagues);
  306. std::cout << iml1 << " = " << quantity<si::length>(iml1) << std::endl
  307. << iml2 << " = " << quantity<si::length>(iml2) << std::endl
  308. << iml3 << " = " << quantity<si::length>(iml3) << std::endl
  309. << iml4 << " = " << quantity<si::length>(iml4) << std::endl
  310. << iml5 << " = " << quantity<si::length>(iml5) << std::endl
  311. << iml6 << " = " << quantity<si::length>(iml6) << std::endl
  312. << iml7 << " = " << quantity<si::length>(iml7) << std::endl
  313. << std::endl;
  314. std::cout << iml7 << "/" << iml1 << " = " << quantity<si::dimensionless>(iml7/iml1) << std::endl
  315. << iml7 << "/" << iml2 << " = " << quantity<si::dimensionless>(iml7/iml2) << std::endl
  316. << iml7 << "/" << iml3 << " = " << quantity<si::dimensionless>(iml7/iml3) << std::endl
  317. << iml7 << "/" << iml4 << " = " << quantity<si::dimensionless>(iml7/iml4) << std::endl
  318. << iml7 << "/" << iml5 << " = " << quantity<si::dimensionless>(iml7/iml5) << std::endl
  319. << iml7 << "/" << iml6 << " = " << quantity<si::dimensionless>(iml7/iml6) << std::endl
  320. << std::endl;
  321. std::cout << iml1 << " = " << quantity<thou_length>(iml1) << std::endl
  322. << iml2 << " = " << quantity<thou_length>(iml2) << std::endl
  323. << iml3 << " = " << quantity<thou_length>(iml3) << std::endl
  324. << iml4 << " = " << quantity<thou_length>(iml4) << std::endl
  325. << iml5 << " = " << quantity<thou_length>(iml5) << std::endl
  326. << iml6 << " = " << quantity<thou_length>(iml6) << std::endl
  327. << iml7 << " = " << quantity<thou_length>(iml7) << std::endl
  328. << std::endl;
  329. std::cout << iml1 << " = " << quantity<inch_length>(iml1) << std::endl
  330. << iml2 << " = " << quantity<inch_length>(iml2) << std::endl
  331. << iml3 << " = " << quantity<inch_length>(iml3) << std::endl
  332. << iml4 << " = " << quantity<inch_length>(iml4) << std::endl
  333. << iml5 << " = " << quantity<inch_length>(iml5) << std::endl
  334. << iml6 << " = " << quantity<inch_length>(iml6) << std::endl
  335. << iml7 << " = " << quantity<inch_length>(iml7) << std::endl
  336. << std::endl;
  337. std::cout << iml1 << " = " << quantity<foot_length>(iml1) << std::endl
  338. << iml2 << " = " << quantity<foot_length>(iml2) << std::endl
  339. << iml3 << " = " << quantity<foot_length>(iml3) << std::endl
  340. << iml4 << " = " << quantity<foot_length>(iml4) << std::endl
  341. << iml5 << " = " << quantity<foot_length>(iml5) << std::endl
  342. << iml6 << " = " << quantity<foot_length>(iml6) << std::endl
  343. << iml7 << " = " << quantity<foot_length>(iml7) << std::endl
  344. << std::endl;
  345. std::cout << iml1 << " = " << quantity<yard_length>(iml1) << std::endl
  346. << iml2 << " = " << quantity<yard_length>(iml2) << std::endl
  347. << iml3 << " = " << quantity<yard_length>(iml3) << std::endl
  348. << iml4 << " = " << quantity<yard_length>(iml4) << std::endl
  349. << iml5 << " = " << quantity<yard_length>(iml5) << std::endl
  350. << iml6 << " = " << quantity<yard_length>(iml6) << std::endl
  351. << iml7 << " = " << quantity<yard_length>(iml7) << std::endl
  352. << std::endl;
  353. std::cout << iml1 << " = " << quantity<furlong_length>(iml1) << std::endl
  354. << iml2 << " = " << quantity<furlong_length>(iml2) << std::endl
  355. << iml3 << " = " << quantity<furlong_length>(iml3) << std::endl
  356. << iml4 << " = " << quantity<furlong_length>(iml4) << std::endl
  357. << iml5 << " = " << quantity<furlong_length>(iml5) << std::endl
  358. << iml6 << " = " << quantity<furlong_length>(iml6) << std::endl
  359. << iml7 << " = " << quantity<furlong_length>(iml7) << std::endl
  360. << std::endl;
  361. std::cout << iml1 << " = " << quantity<mile_length>(iml1) << std::endl
  362. << iml2 << " = " << quantity<mile_length>(iml2) << std::endl
  363. << iml3 << " = " << quantity<mile_length>(iml3) << std::endl
  364. << iml4 << " = " << quantity<mile_length>(iml4) << std::endl
  365. << iml5 << " = " << quantity<mile_length>(iml5) << std::endl
  366. << iml6 << " = " << quantity<mile_length>(iml6) << std::endl
  367. << iml7 << " = " << quantity<mile_length>(iml7) << std::endl
  368. << std::endl;
  369. std::cout << iml1 << " = " << quantity<league_length>(iml1) << std::endl
  370. << iml2 << " = " << quantity<league_length>(iml2) << std::endl
  371. << iml3 << " = " << quantity<league_length>(iml3) << std::endl
  372. << iml4 << " = " << quantity<league_length>(iml4) << std::endl
  373. << iml5 << " = " << quantity<league_length>(iml5) << std::endl
  374. << iml6 << " = " << quantity<league_length>(iml6) << std::endl
  375. << iml7 << " = " << quantity<league_length>(iml7) << std::endl
  376. << std::endl;
  377. quantity<grain_mass> imm1(1.0*grains);
  378. quantity<drachm_mass> imm2(1.0*drachms);
  379. quantity<ounce_mass> imm3(1.0*ounces);
  380. quantity<pound_mass> imm4(1.0*pounds);
  381. quantity<stone_mass> imm5(1.0*stones);
  382. quantity<quarter_mass> imm6(1.0*quarters);
  383. quantity<hundredweight_mass> imm7(1.0*hundredweights);
  384. quantity<ton_mass> imm8(1.0*tons);
  385. std::cout << imm1 << " = " << quantity<si::mass>(imm1) << std::endl
  386. << imm2 << " = " << quantity<si::mass>(imm2) << std::endl
  387. << imm3 << " = " << quantity<si::mass>(imm3) << std::endl
  388. << imm4 << " = " << quantity<si::mass>(imm4) << std::endl
  389. << imm5 << " = " << quantity<si::mass>(imm5) << std::endl
  390. << imm6 << " = " << quantity<si::mass>(imm6) << std::endl
  391. << imm7 << " = " << quantity<si::mass>(imm7) << std::endl
  392. << imm8 << " = " << quantity<si::mass>(imm8) << std::endl
  393. << std::endl;
  394. std::cout << imm8 << "/" << imm1 << " = " << quantity<si::dimensionless>(imm8/imm1) << std::endl
  395. << imm8 << "/" << imm2 << " = " << quantity<si::dimensionless>(imm8/imm2) << std::endl
  396. << imm8 << "/" << imm3 << " = " << quantity<si::dimensionless>(imm8/imm3) << std::endl
  397. << imm8 << "/" << imm4 << " = " << quantity<si::dimensionless>(imm8/imm4) << std::endl
  398. << imm8 << "/" << imm5 << " = " << quantity<si::dimensionless>(imm8/imm5) << std::endl
  399. << imm8 << "/" << imm6 << " = " << quantity<si::dimensionless>(imm8/imm6) << std::endl
  400. << imm8 << "/" << imm7 << " = " << quantity<si::dimensionless>(imm8/imm7) << std::endl
  401. << std::endl;
  402. std::cout << imm1 << " = " << quantity<grain_mass>(imm1) << std::endl
  403. << imm2 << " = " << quantity<grain_mass>(imm2) << std::endl
  404. << imm3 << " = " << quantity<grain_mass>(imm3) << std::endl
  405. << imm4 << " = " << quantity<grain_mass>(imm4) << std::endl
  406. << imm5 << " = " << quantity<grain_mass>(imm5) << std::endl
  407. << imm6 << " = " << quantity<grain_mass>(imm6) << std::endl
  408. << imm7 << " = " << quantity<grain_mass>(imm7) << std::endl
  409. << imm8 << " = " << quantity<grain_mass>(imm8) << std::endl
  410. << std::endl;
  411. std::cout << imm1 << " = " << quantity<drachm_mass>(imm1) << std::endl
  412. << imm2 << " = " << quantity<drachm_mass>(imm2) << std::endl
  413. << imm3 << " = " << quantity<drachm_mass>(imm3) << std::endl
  414. << imm4 << " = " << quantity<drachm_mass>(imm4) << std::endl
  415. << imm5 << " = " << quantity<drachm_mass>(imm5) << std::endl
  416. << imm6 << " = " << quantity<drachm_mass>(imm6) << std::endl
  417. << imm7 << " = " << quantity<drachm_mass>(imm7) << std::endl
  418. << imm8 << " = " << quantity<drachm_mass>(imm8) << std::endl
  419. << std::endl;
  420. std::cout << imm1 << " = " << quantity<ounce_mass>(imm1) << std::endl
  421. << imm2 << " = " << quantity<ounce_mass>(imm2) << std::endl
  422. << imm3 << " = " << quantity<ounce_mass>(imm3) << std::endl
  423. << imm4 << " = " << quantity<ounce_mass>(imm4) << std::endl
  424. << imm5 << " = " << quantity<ounce_mass>(imm5) << std::endl
  425. << imm6 << " = " << quantity<ounce_mass>(imm6) << std::endl
  426. << imm7 << " = " << quantity<ounce_mass>(imm7) << std::endl
  427. << imm8 << " = " << quantity<ounce_mass>(imm8) << std::endl
  428. << std::endl;
  429. std::cout << imm1 << " = " << quantity<pound_mass>(imm1) << std::endl
  430. << imm2 << " = " << quantity<pound_mass>(imm2) << std::endl
  431. << imm3 << " = " << quantity<pound_mass>(imm3) << std::endl
  432. << imm4 << " = " << quantity<pound_mass>(imm4) << std::endl
  433. << imm5 << " = " << quantity<pound_mass>(imm5) << std::endl
  434. << imm6 << " = " << quantity<pound_mass>(imm6) << std::endl
  435. << imm7 << " = " << quantity<pound_mass>(imm7) << std::endl
  436. << imm8 << " = " << quantity<pound_mass>(imm8) << std::endl
  437. << std::endl;
  438. std::cout << imm1 << " = " << quantity<stone_mass>(imm1) << std::endl
  439. << imm2 << " = " << quantity<stone_mass>(imm2) << std::endl
  440. << imm3 << " = " << quantity<stone_mass>(imm3) << std::endl
  441. << imm4 << " = " << quantity<stone_mass>(imm4) << std::endl
  442. << imm5 << " = " << quantity<stone_mass>(imm5) << std::endl
  443. << imm6 << " = " << quantity<stone_mass>(imm6) << std::endl
  444. << imm7 << " = " << quantity<stone_mass>(imm7) << std::endl
  445. << imm8 << " = " << quantity<stone_mass>(imm8) << std::endl
  446. << std::endl;
  447. std::cout << imm1 << " = " << quantity<quarter_mass>(imm1) << std::endl
  448. << imm2 << " = " << quantity<quarter_mass>(imm2) << std::endl
  449. << imm3 << " = " << quantity<quarter_mass>(imm3) << std::endl
  450. << imm4 << " = " << quantity<quarter_mass>(imm4) << std::endl
  451. << imm5 << " = " << quantity<quarter_mass>(imm5) << std::endl
  452. << imm6 << " = " << quantity<quarter_mass>(imm6) << std::endl
  453. << imm7 << " = " << quantity<quarter_mass>(imm7) << std::endl
  454. << imm8 << " = " << quantity<quarter_mass>(imm8) << std::endl
  455. << std::endl;
  456. std::cout << imm1 << " = " << quantity<hundredweight_mass>(imm1) << std::endl
  457. << imm2 << " = " << quantity<hundredweight_mass>(imm2) << std::endl
  458. << imm3 << " = " << quantity<hundredweight_mass>(imm3) << std::endl
  459. << imm4 << " = " << quantity<hundredweight_mass>(imm4) << std::endl
  460. << imm5 << " = " << quantity<hundredweight_mass>(imm5) << std::endl
  461. << imm6 << " = " << quantity<hundredweight_mass>(imm6) << std::endl
  462. << imm7 << " = " << quantity<hundredweight_mass>(imm7) << std::endl
  463. << imm8 << " = " << quantity<hundredweight_mass>(imm8) << std::endl
  464. << std::endl;
  465. std::cout << imm1 << " = " << quantity<ton_mass>(imm1) << std::endl
  466. << imm2 << " = " << quantity<ton_mass>(imm2) << std::endl
  467. << imm3 << " = " << quantity<ton_mass>(imm3) << std::endl
  468. << imm4 << " = " << quantity<ton_mass>(imm4) << std::endl
  469. << imm5 << " = " << quantity<ton_mass>(imm5) << std::endl
  470. << imm6 << " = " << quantity<ton_mass>(imm6) << std::endl
  471. << imm7 << " = " << quantity<ton_mass>(imm7) << std::endl
  472. << imm8 << " = " << quantity<ton_mass>(imm8) << std::endl
  473. << std::endl;
  474. quantity<fluid_ounce_volume> imv1(1.0*fluid_ounces);
  475. quantity<gill_volume> imv2(1.0*gills);
  476. quantity<pint_volume> imv3(1.0*pints);
  477. quantity<quart_volume> imv4(1.0*quarts);
  478. quantity<gallon_volume> imv5(1.0*gallons);
  479. std::cout << imv1 << " = " << quantity<si::volume>(imv1) << std::endl
  480. << imv2 << " = " << quantity<si::volume>(imv2) << std::endl
  481. << imv3 << " = " << quantity<si::volume>(imv3) << std::endl
  482. << imv4 << " = " << quantity<si::volume>(imv4) << std::endl
  483. << imv5 << " = " << quantity<si::volume>(imv5) << std::endl
  484. << std::endl;
  485. std::cout << imv5 << "/" << imv1 << " = " << quantity<si::dimensionless>(imv5/imv1) << std::endl
  486. << imv5 << "/" << imv2 << " = " << quantity<si::dimensionless>(imv5/imv2) << std::endl
  487. << imv5 << "/" << imv3 << " = " << quantity<si::dimensionless>(imv5/imv3) << std::endl
  488. << imv5 << "/" << imv4 << " = " << quantity<si::dimensionless>(imv5/imv4) << std::endl
  489. << std::endl;
  490. std::cout << imv1 << " = " << quantity<fluid_ounce_volume>(imv1) << std::endl
  491. << imv2 << " = " << quantity<fluid_ounce_volume>(imv2) << std::endl
  492. << imv3 << " = " << quantity<fluid_ounce_volume>(imv3) << std::endl
  493. << imv4 << " = " << quantity<fluid_ounce_volume>(imv4) << std::endl
  494. << imv5 << " = " << quantity<fluid_ounce_volume>(imv5) << std::endl
  495. << std::endl;
  496. std::cout << imv1 << " = " << quantity<gill_volume>(imv1) << std::endl
  497. << imv2 << " = " << quantity<gill_volume>(imv2) << std::endl
  498. << imv3 << " = " << quantity<gill_volume>(imv3) << std::endl
  499. << imv4 << " = " << quantity<gill_volume>(imv4) << std::endl
  500. << imv5 << " = " << quantity<gill_volume>(imv5) << std::endl
  501. << std::endl;
  502. std::cout << imv1 << " = " << quantity<pint_volume>(imv1) << std::endl
  503. << imv2 << " = " << quantity<pint_volume>(imv2) << std::endl
  504. << imv3 << " = " << quantity<pint_volume>(imv3) << std::endl
  505. << imv4 << " = " << quantity<pint_volume>(imv4) << std::endl
  506. << imv5 << " = " << quantity<pint_volume>(imv5) << std::endl
  507. << std::endl;
  508. std::cout << imv1 << " = " << quantity<quart_volume>(imv1) << std::endl
  509. << imv2 << " = " << quantity<quart_volume>(imv2) << std::endl
  510. << imv3 << " = " << quantity<quart_volume>(imv3) << std::endl
  511. << imv4 << " = " << quantity<quart_volume>(imv4) << std::endl
  512. << imv5 << " = " << quantity<quart_volume>(imv5) << std::endl
  513. << std::endl;
  514. std::cout << imv1 << " = " << quantity<gallon_volume>(imv1) << std::endl
  515. << imv2 << " = " << quantity<gallon_volume>(imv2) << std::endl
  516. << imv3 << " = " << quantity<gallon_volume>(imv3) << std::endl
  517. << imv4 << " = " << quantity<gallon_volume>(imv4) << std::endl
  518. << imv5 << " = " << quantity<gallon_volume>(imv5) << std::endl
  519. << std::endl;
  520. }
  521. {
  522. using namespace boost::units::metric;
  523. std::cout << "Testing metric base units..." << std::endl;
  524. quantity<fermi_length> ml1(1.0*fermis);
  525. quantity<angstrom_length> ml2(1.0*angstroms);
  526. quantity<micron_length> ml3(1.0*microns);
  527. quantity<nautical_mile_length> ml4(1.0*nautical_miles);
  528. std::cout << ml1 << " = " << quantity<si::length>(ml1) << std::endl
  529. << ml2 << " = " << quantity<si::length>(ml2) << std::endl
  530. << ml3 << " = " << quantity<si::length>(ml3) << std::endl
  531. << ml4 << " = " << quantity<si::length>(ml4) << std::endl
  532. << std::endl;
  533. std::cout << ml4 << "/" << ml1 << " = " << quantity<si::dimensionless>(ml4/ml1) << std::endl
  534. << ml4 << "/" << ml2 << " = " << quantity<si::dimensionless>(ml4/ml2) << std::endl
  535. << ml4 << "/" << ml3 << " = " << quantity<si::dimensionless>(ml4/ml3) << std::endl
  536. << std::endl;
  537. std::cout << ml1 << " = " << quantity<fermi_length>(ml1) << std::endl
  538. << ml2 << " = " << quantity<fermi_length>(ml2) << std::endl
  539. << ml3 << " = " << quantity<fermi_length>(ml3) << std::endl
  540. << ml4 << " = " << quantity<fermi_length>(ml4) << std::endl
  541. << std::endl;
  542. std::cout << ml1 << " = " << quantity<angstrom_length>(ml1) << std::endl
  543. << ml2 << " = " << quantity<angstrom_length>(ml2) << std::endl
  544. << ml3 << " = " << quantity<angstrom_length>(ml3) << std::endl
  545. << ml4 << " = " << quantity<angstrom_length>(ml4) << std::endl
  546. << std::endl;
  547. std::cout << ml1 << " = " << quantity<micron_length>(ml1) << std::endl
  548. << ml2 << " = " << quantity<micron_length>(ml2) << std::endl
  549. << ml3 << " = " << quantity<micron_length>(ml3) << std::endl
  550. << ml4 << " = " << quantity<micron_length>(ml4) << std::endl
  551. << std::endl;
  552. std::cout << ml1 << " = " << quantity<nautical_mile_length>(ml1) << std::endl
  553. << ml2 << " = " << quantity<nautical_mile_length>(ml2) << std::endl
  554. << ml3 << " = " << quantity<nautical_mile_length>(ml3) << std::endl
  555. << ml4 << " = " << quantity<nautical_mile_length>(ml4) << std::endl
  556. << std::endl;
  557. quantity<ton_mass> mm1(1.0*tons);
  558. std::cout << mm1 << " = " << quantity<cgs::mass>(mm1) << std::endl
  559. //<< quantity<si::mass>(mm1) << std::endl // this should work...
  560. << std::endl;
  561. quantity<minute_time> mt1(1.0*minutes);
  562. quantity<hour_time> mt2(1.0*hours);
  563. quantity<day_time> mt3(1.0*days);
  564. quantity<year_time> mt4(1.0*years);
  565. std::cout << mt1 << " = " << quantity<si::time>(mt1) << std::endl
  566. << mt2 << " = " << quantity<si::time>(mt2) << std::endl
  567. << mt3 << " = " << quantity<si::time>(mt3) << std::endl
  568. << mt4 << " = " << quantity<si::time>(mt4) << std::endl
  569. << std::endl;
  570. std::cout << mt4 << "/" << mt1 << " = " << quantity<si::dimensionless>(mt4/mt1) << std::endl
  571. << mt4 << "/" << mt2 << " = " << quantity<si::dimensionless>(mt4/mt2) << std::endl
  572. << mt4 << "/" << mt3 << " = " << quantity<si::dimensionless>(mt4/mt3) << std::endl
  573. << std::endl;
  574. std::cout << mt1 << " = " << quantity<minute_time>(mt1) << std::endl
  575. << mt2 << " = " << quantity<minute_time>(mt2) << std::endl
  576. << mt3 << " = " << quantity<minute_time>(mt3) << std::endl
  577. << mt4 << " = " << quantity<minute_time>(mt4) << std::endl
  578. << std::endl;
  579. std::cout << mt1 << " = " << quantity<hour_time>(mt1) << std::endl
  580. << mt2 << " = " << quantity<hour_time>(mt2) << std::endl
  581. << mt3 << " = " << quantity<hour_time>(mt3) << std::endl
  582. << mt4 << " = " << quantity<hour_time>(mt4) << std::endl
  583. << std::endl;
  584. std::cout << mt1 << " = " << quantity<day_time>(mt1) << std::endl
  585. << mt2 << " = " << quantity<day_time>(mt2) << std::endl
  586. << mt3 << " = " << quantity<day_time>(mt3) << std::endl
  587. << mt4 << " = " << quantity<day_time>(mt4) << std::endl
  588. << std::endl;
  589. std::cout << mt1 << " = " << quantity<year_time>(mt1) << std::endl
  590. << mt2 << " = " << quantity<year_time>(mt2) << std::endl
  591. << mt3 << " = " << quantity<year_time>(mt3) << std::endl
  592. << mt4 << " = " << quantity<year_time>(mt4) << std::endl
  593. << std::endl;
  594. quantity<knot_velocity> ms1(1.0*knots);
  595. std::cout << ms1 << " = " << quantity<si::velocity>(ms1) << std::endl
  596. << std::endl;
  597. quantity<barn_area> ma1(1.0*barns);
  598. quantity<are_area> ma2(1.0*ares);
  599. quantity<hectare_area> ma3(1.0*hectares);
  600. std::cout << ma1 << " = " << quantity<si::area>(ma1) << std::endl
  601. << ma2 << " = " << quantity<si::area>(ma2) << std::endl
  602. << ma3 << " = " << quantity<si::area>(ma3) << std::endl
  603. << std::endl;
  604. std::cout << ma3 << "/" << ma1 << " = " << quantity<si::dimensionless>(ma3/ma1) << std::endl
  605. << ma3 << "/" << ma2 << " = " << quantity<si::dimensionless>(ma3/ma2) << std::endl
  606. << std::endl;
  607. std::cout << ma1 << " = " << quantity<barn_area>(ma1) << std::endl
  608. << ma2 << " = " << quantity<barn_area>(ma2) << std::endl
  609. << ma3 << " = " << quantity<barn_area>(ma3) << std::endl
  610. << std::endl;
  611. std::cout << ma1 << " = " << quantity<are_area>(ma1) << std::endl
  612. << ma2 << " = " << quantity<are_area>(ma2) << std::endl
  613. << ma3 << " = " << quantity<are_area>(ma3) << std::endl
  614. << std::endl;
  615. std::cout << ma1 << " = " << quantity<hectare_area>(ma1) << std::endl
  616. << ma2 << " = " << quantity<hectare_area>(ma2) << std::endl
  617. << ma3 << " = " << quantity<hectare_area>(ma3) << std::endl
  618. << std::endl;
  619. quantity<liter_volume> mv1(1.0*liters);
  620. std::cout << mv1 << " = " << quantity<si::volume>(mv1) << std::endl
  621. << std::endl;
  622. quantity<mmHg_pressure> mp1(1.0*mmHgs);
  623. quantity<torr_pressure> mp2(1.0*torrs);
  624. quantity<bar_pressure> mp3(1.0*bars);
  625. quantity<atmosphere_pressure> mp4(1.0*atmospheres);
  626. std::cout << mp1 << " = " << quantity<si::pressure>(mp1) << std::endl
  627. << mp2 << " = " << quantity<si::pressure>(mp2) << std::endl
  628. << mp3 << " = " << quantity<si::pressure>(mp3) << std::endl
  629. << mp4 << " = " << quantity<si::pressure>(mp4) << std::endl
  630. << std::endl;
  631. std::cout << mp4 << "/" << mp1 << " = " << quantity<si::dimensionless>(mp4/mp1) << std::endl
  632. << mp4 << "/" << mp2 << " = " << quantity<si::dimensionless>(mp4/mp2) << std::endl
  633. << mp4 << "/" << mp3 << " = " << quantity<si::dimensionless>(mp4/mp3) << std::endl
  634. << std::endl;
  635. std::cout << mp1 << " = " << quantity<mmHg_pressure>(mp1) << std::endl
  636. << mp2 << " = " << quantity<mmHg_pressure>(mp2) << std::endl
  637. << mp3 << " = " << quantity<mmHg_pressure>(mp3) << std::endl
  638. << mp4 << " = " << quantity<mmHg_pressure>(mp4) << std::endl
  639. << std::endl;
  640. std::cout << mp1 << " = " << quantity<torr_pressure>(mp1) << std::endl
  641. << mp2 << " = " << quantity<torr_pressure>(mp2) << std::endl
  642. << mp3 << " = " << quantity<torr_pressure>(mp3) << std::endl
  643. << mp4 << " = " << quantity<torr_pressure>(mp4) << std::endl
  644. << std::endl;
  645. std::cout << mp1 << " = " << quantity<bar_pressure>(mp1) << std::endl
  646. << mp2 << " = " << quantity<bar_pressure>(mp2) << std::endl
  647. << mp3 << " = " << quantity<bar_pressure>(mp3) << std::endl
  648. << mp4 << " = " << quantity<bar_pressure>(mp4) << std::endl
  649. << std::endl;
  650. std::cout << mp1 << " = " << quantity<atmosphere_pressure>(mp1) << std::endl
  651. << mp2 << " = " << quantity<atmosphere_pressure>(mp2) << std::endl
  652. << mp3 << " = " << quantity<atmosphere_pressure>(mp3) << std::endl
  653. << mp4 << " = " << quantity<atmosphere_pressure>(mp4) << std::endl
  654. << std::endl;
  655. }
  656. {
  657. using namespace boost::units::us;
  658. std::cout << "Testing U.S. customary base units..." << std::endl;
  659. quantity<mil_length> iml1(1.0*mils);
  660. quantity<inch_length> iml2(1.0*inchs);
  661. quantity<foot_length> iml3(1.0*foots);
  662. quantity<yard_length> iml4(1.0*yards);
  663. quantity<mile_length> iml5(1.0*miles);
  664. std::cout << iml1 << " = " << quantity<si::length>(iml1) << std::endl
  665. << iml2 << " = " << quantity<si::length>(iml2) << std::endl
  666. << iml3 << " = " << quantity<si::length>(iml3) << std::endl
  667. << iml4 << " = " << quantity<si::length>(iml4) << std::endl
  668. << iml5 << " = " << quantity<si::length>(iml5) << std::endl
  669. << std::endl;
  670. std::cout << iml5 << "/" << iml1 << " = " << quantity<si::dimensionless>(iml5/iml1) << std::endl
  671. << iml5 << "/" << iml2 << " = " << quantity<si::dimensionless>(iml5/iml2) << std::endl
  672. << iml5 << "/" << iml3 << " = " << quantity<si::dimensionless>(iml5/iml3) << std::endl
  673. << iml5 << "/" << iml4 << " = " << quantity<si::dimensionless>(iml5/iml4) << std::endl
  674. << std::endl;
  675. std::cout << iml1 << " = " << quantity<mil_length>(iml1) << std::endl
  676. << iml2 << " = " << quantity<mil_length>(iml2) << std::endl
  677. << iml3 << " = " << quantity<mil_length>(iml3) << std::endl
  678. << iml4 << " = " << quantity<mil_length>(iml4) << std::endl
  679. << iml5 << " = " << quantity<mil_length>(iml5) << std::endl
  680. << std::endl;
  681. std::cout << iml1 << " = " << quantity<inch_length>(iml1) << std::endl
  682. << iml2 << " = " << quantity<inch_length>(iml2) << std::endl
  683. << iml3 << " = " << quantity<inch_length>(iml3) << std::endl
  684. << iml4 << " = " << quantity<inch_length>(iml4) << std::endl
  685. << iml5 << " = " << quantity<inch_length>(iml5) << std::endl
  686. << std::endl;
  687. std::cout << iml1 << " = " << quantity<foot_length>(iml1) << std::endl
  688. << iml2 << " = " << quantity<foot_length>(iml2) << std::endl
  689. << iml3 << " = " << quantity<foot_length>(iml3) << std::endl
  690. << iml4 << " = " << quantity<foot_length>(iml4) << std::endl
  691. << iml5 << " = " << quantity<foot_length>(iml5) << std::endl
  692. << std::endl;
  693. std::cout << iml1 << " = " << quantity<yard_length>(iml1) << std::endl
  694. << iml2 << " = " << quantity<yard_length>(iml2) << std::endl
  695. << iml3 << " = " << quantity<yard_length>(iml3) << std::endl
  696. << iml4 << " = " << quantity<yard_length>(iml4) << std::endl
  697. << iml5 << " = " << quantity<yard_length>(iml5) << std::endl
  698. << std::endl;
  699. std::cout << iml1 << " = " << quantity<mile_length>(iml1) << std::endl
  700. << iml2 << " = " << quantity<mile_length>(iml2) << std::endl
  701. << iml3 << " = " << quantity<mile_length>(iml3) << std::endl
  702. << iml4 << " = " << quantity<mile_length>(iml4) << std::endl
  703. << iml5 << " = " << quantity<mile_length>(iml5) << std::endl
  704. << std::endl;
  705. quantity<grain_mass> imm1(1.0*grains);
  706. quantity<dram_mass> imm2(1.0*drams);
  707. quantity<ounce_mass> imm3(1.0*ounces);
  708. quantity<pound_mass> imm4(1.0*pounds);
  709. quantity<hundredweight_mass> imm5(1.0*hundredweights);
  710. quantity<ton_mass> imm6(1.0*tons);
  711. std::cout << imm1 << " = " << quantity<si::mass>(imm1) << std::endl
  712. << imm2 << " = " << quantity<si::mass>(imm2) << std::endl
  713. << imm3 << " = " << quantity<si::mass>(imm3) << std::endl
  714. << imm4 << " = " << quantity<si::mass>(imm4) << std::endl
  715. << imm5 << " = " << quantity<si::mass>(imm5) << std::endl
  716. << imm6 << " = " << quantity<si::mass>(imm6) << std::endl
  717. << std::endl;
  718. std::cout << imm6 << "/" << imm1 << " = " << quantity<si::dimensionless>(imm6/imm1) << std::endl
  719. << imm6 << "/" << imm2 << " = " << quantity<si::dimensionless>(imm6/imm2) << std::endl
  720. << imm6 << "/" << imm3 << " = " << quantity<si::dimensionless>(imm6/imm3) << std::endl
  721. << imm6 << "/" << imm4 << " = " << quantity<si::dimensionless>(imm6/imm4) << std::endl
  722. << imm6 << "/" << imm5 << " = " << quantity<si::dimensionless>(imm6/imm5) << std::endl
  723. << std::endl;
  724. std::cout << imm1 << " = " << quantity<grain_mass>(imm1) << std::endl
  725. << imm2 << " = " << quantity<grain_mass>(imm2) << std::endl
  726. << imm3 << " = " << quantity<grain_mass>(imm3) << std::endl
  727. << imm4 << " = " << quantity<grain_mass>(imm4) << std::endl
  728. << imm5 << " = " << quantity<grain_mass>(imm5) << std::endl
  729. << imm6 << " = " << quantity<grain_mass>(imm6) << std::endl
  730. << std::endl;
  731. std::cout << imm1 << " = " << quantity<dram_mass>(imm1) << std::endl
  732. << imm2 << " = " << quantity<dram_mass>(imm2) << std::endl
  733. << imm3 << " = " << quantity<dram_mass>(imm3) << std::endl
  734. << imm4 << " = " << quantity<dram_mass>(imm4) << std::endl
  735. << imm5 << " = " << quantity<dram_mass>(imm5) << std::endl
  736. << imm6 << " = " << quantity<dram_mass>(imm6) << std::endl
  737. << std::endl;
  738. std::cout << imm1 << " = " << quantity<ounce_mass>(imm1) << std::endl
  739. << imm2 << " = " << quantity<ounce_mass>(imm2) << std::endl
  740. << imm3 << " = " << quantity<ounce_mass>(imm3) << std::endl
  741. << imm4 << " = " << quantity<ounce_mass>(imm4) << std::endl
  742. << imm5 << " = " << quantity<ounce_mass>(imm5) << std::endl
  743. << imm6 << " = " << quantity<ounce_mass>(imm6) << std::endl
  744. << std::endl;
  745. std::cout << imm1 << " = " << quantity<pound_mass>(imm1) << std::endl
  746. << imm2 << " = " << quantity<pound_mass>(imm2) << std::endl
  747. << imm3 << " = " << quantity<pound_mass>(imm3) << std::endl
  748. << imm4 << " = " << quantity<pound_mass>(imm4) << std::endl
  749. << imm5 << " = " << quantity<pound_mass>(imm5) << std::endl
  750. << imm6 << " = " << quantity<pound_mass>(imm6) << std::endl
  751. << std::endl;
  752. std::cout << imm1 << " = " << quantity<hundredweight_mass>(imm1) << std::endl
  753. << imm2 << " = " << quantity<hundredweight_mass>(imm2) << std::endl
  754. << imm3 << " = " << quantity<hundredweight_mass>(imm3) << std::endl
  755. << imm4 << " = " << quantity<hundredweight_mass>(imm4) << std::endl
  756. << imm5 << " = " << quantity<hundredweight_mass>(imm5) << std::endl
  757. << imm6 << " = " << quantity<hundredweight_mass>(imm6) << std::endl
  758. << std::endl;
  759. std::cout << imm1 << " = " << quantity<ton_mass>(imm1) << std::endl
  760. << imm2 << " = " << quantity<ton_mass>(imm2) << std::endl
  761. << imm3 << " = " << quantity<ton_mass>(imm3) << std::endl
  762. << imm4 << " = " << quantity<ton_mass>(imm4) << std::endl
  763. << imm5 << " = " << quantity<ton_mass>(imm5) << std::endl
  764. << imm6 << " = " << quantity<ton_mass>(imm6) << std::endl
  765. << std::endl;
  766. quantity<minim_volume> imv1(1.0*minims);
  767. quantity<fluid_dram_volume> imv2(1.0*fluid_drams);
  768. quantity<teaspoon_volume> imv3(1.0*teaspoons);
  769. quantity<tablespoon_volume> imv4(1.0*tablespoons);
  770. quantity<fluid_ounce_volume> imv5(1.0*fluid_ounces);
  771. quantity<gill_volume> imv6(1.0*gills);
  772. quantity<cup_volume> imv7(1.0*cups);
  773. quantity<pint_volume> imv8(1.0*pints);
  774. quantity<quart_volume> imv9(1.0*quarts);
  775. quantity<gallon_volume> imv10(1.0*gallons);
  776. std::cout << imv1 << " = " << quantity<si::volume>(imv1) << std::endl
  777. << imv2 << " = " << quantity<si::volume>(imv2) << std::endl
  778. << imv3 << " = " << quantity<si::volume>(imv3) << std::endl
  779. << imv4 << " = " << quantity<si::volume>(imv4) << std::endl
  780. << imv5 << " = " << quantity<si::volume>(imv5) << std::endl
  781. << imv6 << " = " << quantity<si::volume>(imv6) << std::endl
  782. << imv7 << " = " << quantity<si::volume>(imv7) << std::endl
  783. << imv8 << " = " << quantity<si::volume>(imv8) << std::endl
  784. << imv9 << " = " << quantity<si::volume>(imv9) << std::endl
  785. << imv10 << " = " << quantity<si::volume>(imv10) << std::endl
  786. << std::endl;
  787. std::cout << imv10 << "/" << imv1 << " = " << quantity<si::dimensionless>(imv10/imv1) << std::endl
  788. << imv10 << "/" << imv2 << " = " << quantity<si::dimensionless>(imv10/imv2) << std::endl
  789. << imv10 << "/" << imv3 << " = " << quantity<si::dimensionless>(imv10/imv3) << std::endl
  790. << imv10 << "/" << imv4 << " = " << quantity<si::dimensionless>(imv10/imv4) << std::endl
  791. << imv10 << "/" << imv5 << " = " << quantity<si::dimensionless>(imv10/imv5) << std::endl
  792. << imv10 << "/" << imv6 << " = " << quantity<si::dimensionless>(imv10/imv6) << std::endl
  793. << imv10 << "/" << imv7 << " = " << quantity<si::dimensionless>(imv10/imv7) << std::endl
  794. << imv10 << "/" << imv8 << " = " << quantity<si::dimensionless>(imv10/imv8) << std::endl
  795. << imv10 << "/" << imv9 << " = " << quantity<si::dimensionless>(imv10/imv9) << std::endl
  796. << std::endl;
  797. std::cout << imv1 << " = " << quantity<minim_volume>(imv1) << std::endl
  798. << imv2 << " = " << quantity<minim_volume>(imv2) << std::endl
  799. << imv3 << " = " << quantity<minim_volume>(imv3) << std::endl
  800. << imv4 << " = " << quantity<minim_volume>(imv4) << std::endl
  801. << imv5 << " = " << quantity<minim_volume>(imv5) << std::endl
  802. << imv6 << " = " << quantity<minim_volume>(imv6) << std::endl
  803. << imv7 << " = " << quantity<minim_volume>(imv7) << std::endl
  804. << imv8 << " = " << quantity<minim_volume>(imv8) << std::endl
  805. << imv9 << " = " << quantity<minim_volume>(imv9) << std::endl
  806. << imv10 << " = " << quantity<minim_volume>(imv10) << std::endl
  807. << std::endl;
  808. std::cout << imv1 << " = " << quantity<fluid_dram_volume>(imv1) << std::endl
  809. << imv2 << " = " << quantity<fluid_dram_volume>(imv2) << std::endl
  810. << imv3 << " = " << quantity<fluid_dram_volume>(imv3) << std::endl
  811. << imv4 << " = " << quantity<fluid_dram_volume>(imv4) << std::endl
  812. << imv5 << " = " << quantity<fluid_dram_volume>(imv5) << std::endl
  813. << imv6 << " = " << quantity<fluid_dram_volume>(imv6) << std::endl
  814. << imv7 << " = " << quantity<fluid_dram_volume>(imv7) << std::endl
  815. << imv8 << " = " << quantity<fluid_dram_volume>(imv8) << std::endl
  816. << imv9 << " = " << quantity<fluid_dram_volume>(imv9) << std::endl
  817. << imv10 << " = " << quantity<fluid_dram_volume>(imv10) << std::endl
  818. << std::endl;
  819. std::cout << imv1 << " = " << quantity<teaspoon_volume>(imv1) << std::endl
  820. << imv2 << " = " << quantity<teaspoon_volume>(imv2) << std::endl
  821. << imv3 << " = " << quantity<teaspoon_volume>(imv3) << std::endl
  822. << imv4 << " = " << quantity<teaspoon_volume>(imv4) << std::endl
  823. << imv5 << " = " << quantity<teaspoon_volume>(imv5) << std::endl
  824. << imv6 << " = " << quantity<teaspoon_volume>(imv6) << std::endl
  825. << imv7 << " = " << quantity<teaspoon_volume>(imv7) << std::endl
  826. << imv8 << " = " << quantity<teaspoon_volume>(imv8) << std::endl
  827. << imv9 << " = " << quantity<teaspoon_volume>(imv9) << std::endl
  828. << imv10 << " = " << quantity<teaspoon_volume>(imv10) << std::endl
  829. << std::endl;
  830. std::cout << imv1 << " = " << quantity<tablespoon_volume>(imv1) << std::endl
  831. << imv2 << " = " << quantity<tablespoon_volume>(imv2) << std::endl
  832. << imv3 << " = " << quantity<tablespoon_volume>(imv3) << std::endl
  833. << imv4 << " = " << quantity<tablespoon_volume>(imv4) << std::endl
  834. << imv5 << " = " << quantity<tablespoon_volume>(imv5) << std::endl
  835. << imv6 << " = " << quantity<tablespoon_volume>(imv6) << std::endl
  836. << imv7 << " = " << quantity<tablespoon_volume>(imv7) << std::endl
  837. << imv8 << " = " << quantity<tablespoon_volume>(imv8) << std::endl
  838. << imv9 << " = " << quantity<tablespoon_volume>(imv9) << std::endl
  839. << imv10 << " = " << quantity<tablespoon_volume>(imv10) << std::endl
  840. << std::endl;
  841. std::cout << imv1 << " = " << quantity<fluid_ounce_volume>(imv1) << std::endl
  842. << imv2 << " = " << quantity<fluid_ounce_volume>(imv2) << std::endl
  843. << imv3 << " = " << quantity<fluid_ounce_volume>(imv3) << std::endl
  844. << imv4 << " = " << quantity<fluid_ounce_volume>(imv4) << std::endl
  845. << imv5 << " = " << quantity<fluid_ounce_volume>(imv5) << std::endl
  846. << imv6 << " = " << quantity<fluid_ounce_volume>(imv6) << std::endl
  847. << imv7 << " = " << quantity<fluid_ounce_volume>(imv7) << std::endl
  848. << imv8 << " = " << quantity<fluid_ounce_volume>(imv8) << std::endl
  849. << imv9 << " = " << quantity<fluid_ounce_volume>(imv9) << std::endl
  850. << imv10 << " = " << quantity<fluid_ounce_volume>(imv10) << std::endl
  851. << std::endl;
  852. std::cout << imv1 << " = " << quantity<gill_volume>(imv1) << std::endl
  853. << imv2 << " = " << quantity<gill_volume>(imv2) << std::endl
  854. << imv3 << " = " << quantity<gill_volume>(imv3) << std::endl
  855. << imv4 << " = " << quantity<gill_volume>(imv4) << std::endl
  856. << imv5 << " = " << quantity<gill_volume>(imv5) << std::endl
  857. << imv6 << " = " << quantity<gill_volume>(imv6) << std::endl
  858. << imv7 << " = " << quantity<gill_volume>(imv7) << std::endl
  859. << imv8 << " = " << quantity<gill_volume>(imv8) << std::endl
  860. << imv9 << " = " << quantity<gill_volume>(imv9) << std::endl
  861. << imv10 << " = " << quantity<gill_volume>(imv10) << std::endl
  862. << std::endl;
  863. std::cout << imv1 << " = " << quantity<cup_volume>(imv1) << std::endl
  864. << imv2 << " = " << quantity<cup_volume>(imv2) << std::endl
  865. << imv3 << " = " << quantity<cup_volume>(imv3) << std::endl
  866. << imv4 << " = " << quantity<cup_volume>(imv4) << std::endl
  867. << imv5 << " = " << quantity<cup_volume>(imv5) << std::endl
  868. << imv6 << " = " << quantity<cup_volume>(imv6) << std::endl
  869. << imv7 << " = " << quantity<cup_volume>(imv7) << std::endl
  870. << imv8 << " = " << quantity<cup_volume>(imv8) << std::endl
  871. << imv9 << " = " << quantity<cup_volume>(imv9) << std::endl
  872. << imv10 << " = " << quantity<cup_volume>(imv10) << std::endl
  873. << std::endl;
  874. std::cout << imv1 << " = " << quantity<pint_volume>(imv1) << std::endl
  875. << imv2 << " = " << quantity<pint_volume>(imv2) << std::endl
  876. << imv3 << " = " << quantity<pint_volume>(imv3) << std::endl
  877. << imv4 << " = " << quantity<pint_volume>(imv4) << std::endl
  878. << imv5 << " = " << quantity<pint_volume>(imv5) << std::endl
  879. << imv6 << " = " << quantity<pint_volume>(imv6) << std::endl
  880. << imv7 << " = " << quantity<pint_volume>(imv7) << std::endl
  881. << imv8 << " = " << quantity<pint_volume>(imv8) << std::endl
  882. << imv9 << " = " << quantity<pint_volume>(imv9) << std::endl
  883. << imv10 << " = " << quantity<pint_volume>(imv10) << std::endl
  884. << std::endl;
  885. std::cout << imv1 << " = " << quantity<quart_volume>(imv1) << std::endl
  886. << imv2 << " = " << quantity<quart_volume>(imv2) << std::endl
  887. << imv3 << " = " << quantity<quart_volume>(imv3) << std::endl
  888. << imv4 << " = " << quantity<quart_volume>(imv4) << std::endl
  889. << imv5 << " = " << quantity<quart_volume>(imv5) << std::endl
  890. << imv6 << " = " << quantity<quart_volume>(imv6) << std::endl
  891. << imv7 << " = " << quantity<quart_volume>(imv7) << std::endl
  892. << imv8 << " = " << quantity<quart_volume>(imv8) << std::endl
  893. << imv9 << " = " << quantity<quart_volume>(imv9) << std::endl
  894. << imv10 << " = " << quantity<quart_volume>(imv10) << std::endl
  895. << std::endl;
  896. std::cout << imv1 << " = " << quantity<gallon_volume>(imv1) << std::endl
  897. << imv2 << " = " << quantity<gallon_volume>(imv2) << std::endl
  898. << imv3 << " = " << quantity<gallon_volume>(imv3) << std::endl
  899. << imv4 << " = " << quantity<gallon_volume>(imv4) << std::endl
  900. << imv5 << " = " << quantity<gallon_volume>(imv5) << std::endl
  901. << imv6 << " = " << quantity<gallon_volume>(imv6) << std::endl
  902. << imv7 << " = " << quantity<gallon_volume>(imv7) << std::endl
  903. << imv8 << " = " << quantity<gallon_volume>(imv8) << std::endl
  904. << imv9 << " = " << quantity<gallon_volume>(imv9) << std::endl
  905. << imv10 << " = " << quantity<gallon_volume>(imv10) << std::endl
  906. << std::endl;
  907. }
  908. return 0;
  909. }