From 048f129d12eea26f2f1dd3d02362567635d531ba Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 31 Mar 2022 14:39:14 -0700 Subject: [PATCH 1/5] split the defined_unit_string into a customary and si blocks as a first step to being able to partition the entire system in a strict SI vs all unit parser/generator. There will be a number of other steps before that point. --- test/CMakeLists.txt | 1 + test/test_defined_units.cpp | 88 ++ units/unit_definitions.hpp | 2 + units/units.cpp | 7 +- units/units_conversion_maps.hpp | 1568 ++++++++++++++++--------------- 5 files changed, 884 insertions(+), 782 deletions(-) create mode 100644 test/test_defined_units.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index feed2d41..db11560d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -22,6 +22,7 @@ set(UNITS_TESTS test_measurement_strings test_commodities test_siunits + test_defined_units ) set(TEST_FILE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/files) diff --git a/test/test_defined_units.cpp b/test/test_defined_units.cpp new file mode 100644 index 00000000..18ab3828 --- /dev/null +++ b/test/test_defined_units.cpp @@ -0,0 +1,88 @@ +/* +Copyright (c) 2019-2022, +Lawrence Livermore National Security, LLC; +See the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "units/units_conversion_maps.hpp" +#include "test.hpp" +#include + +TEST(unit_string_definitions, si_vector_length) +{ + for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) + { + EXPECT_TRUE(units::defined_unit_strings_si[ii].first != nullptr) << ii; + if (units::defined_unit_strings_si[ii].first == nullptr) { + break; + } + } +} + +TEST(unit_string_definitions, customary_vector) +{ + for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + EXPECT_TRUE(units::defined_unit_strings_customary[ii].first != nullptr) + << ii; + if (units::defined_unit_strings_customary[ii].first == nullptr) { + break; + } + } +} + +TEST(unit_string_definitions, si_duplicates) +{ + std::map testMap; + for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { + if (units::defined_unit_strings_si[ii].first==nullptr) { + continue; + } + auto res = testMap.try_emplace( + units::defined_unit_strings_si[ii].first, + units::defined_unit_strings_si[ii].second); + EXPECT_TRUE(res.second) << "duplicate si unit string " + << units::defined_unit_strings_si[ii].first; + } +} + +TEST(unit_string_definitions, customary_duplicates) +{ + std::map testMap; + for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + if (units::defined_unit_strings_customary[ii].first == nullptr) { + continue; + } + auto res = testMap.try_emplace( + units::defined_unit_strings_customary[ii].first, + units::defined_unit_strings_customary[ii].second); + EXPECT_TRUE(res.second) << "duplicate unit string " + << units::defined_unit_strings_customary[ii].first; + } +} + +TEST(unit_string_definitions, combined_duplicates) +{ + std::map testMap; + for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { + if (units::defined_unit_strings_si[ii].first == nullptr) { + continue; + } + auto res = testMap.try_emplace( + units::defined_unit_strings_si[ii].first, + units::defined_unit_strings_si[ii].second); + EXPECT_TRUE(res.second) << "duplicate si unit string " + << units::defined_unit_strings_si[ii].first; + } + + for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + if (units::defined_unit_strings_customary[ii].first == nullptr) { + continue; + } + auto res = testMap.try_emplace( + units::defined_unit_strings_customary[ii].first, + units::defined_unit_strings_customary[ii].second); + EXPECT_TRUE(res.second) << "duplicate unit string " << ii << " " + << units::defined_unit_strings_customary[ii].first; + } +} \ No newline at end of file diff --git a/units/unit_definitions.hpp b/units/unit_definitions.hpp index 7e8909a4..9608292c 100644 --- a/units/unit_definitions.hpp +++ b/units/unit_definitions.hpp @@ -1922,4 +1922,6 @@ namespace detail { return constants::invalid_conversion; } } // namespace detail + + } // namespace UNITS_NAMESPACE diff --git a/units/units.cpp b/units/units.cpp index 5233bf16..27e41758 100644 --- a/units/units.cpp +++ b/units/units.cpp @@ -2574,7 +2574,12 @@ static std::pair static smap loadDefinedUnits() { smap knownUnits; - for (auto& pr : defined_unit_strings) { + for (auto& pr : defined_unit_strings_si) { + if (pr.first != nullptr) { + knownUnits.emplace(pr.first, pr.second); + } + } + for (auto& pr : defined_unit_strings_customary) { if (pr.first != nullptr) { knownUnits.emplace(pr.first, pr.second); } diff --git a/units/units_conversion_maps.hpp b/units/units_conversion_maps.hpp index 7ed06c76..58d38f21 100644 --- a/units/units_conversion_maps.hpp +++ b/units/units_conversion_maps.hpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-3-Clause */ #pragma once -#include "unit_definitions.hpp" +#include "units.hpp" #include #include #include @@ -200,8 +200,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array, 180> UNITS_CPP14_CONSTEXPR_OBJECT std::array< std::pair, - 3000> - defined_unit_strings{{ + 1091> + defined_unit_strings_si{{ {"", precise::defunit}, {"[]", precise::defunit}, {"def", precise::defunit}, @@ -341,9 +341,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"kg", precise::kg}, {"KG", precise::kg}, {"kilogram", precise::kg}, - {"jin", precise::chinese::jin}, - {"liang", precise::chinese::liang}, - {"qian", precise::chinese::qian}, {"mol", precise::mol}, {"einstein", precise::mol}, // technically of photons {"gmol", precise::mol}, @@ -372,10 +369,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"grampercent", precise_unit(10.0, precise::g / precise::L)}, {"G%", precise_unit(10.0, precise::g / precise::L)}, {"U", precise::laboratory::enzyme_unit}, - {"units", precise::laboratory::enzyme_unit}, // this may not be best - // but it doesn't actually - // conflict with - // anything else right now + // this may not be best but it doesn't actually conflict with anything else right now + {"units", precise::laboratory::enzyme_unit}, {"enzymeunit", precise::laboratory::enzyme_unit}, {"A", precise::A}, {"amp", precise::A}, @@ -413,12 +408,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< precise::milli* precise::cd}, // prefer milli candela to micro-day {"CD", precise::cd}, {"candela", precise::cd}, - {"candle", precise::other::candle}, - {"candlepower", precise::other::candle}, - {"CP", precise::other::candle}, - {"footcandle", precise::lumen / precise::ft.pow(2)}, - {"fc", precise::lumen / precise::ft.pow(2)}, - {"ftc", precise::lumen / precise::ft.pow(2)}, {"metercandle", precise::lumen / precise::m.pow(2)}, {"centimetercandle", precise::lumen / precise::cm.pow(2)}, {"K", precise::K}, @@ -518,97 +507,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Gal", precise::cgs::gal}, {"Gals", precise::cgs::gal}, {"galileos", precise::cgs::gal}, - {"stC", precise::cgs::statC_charge}, - {"statC", precise::cgs::statC_charge}, - {"statC{charge}", precise::cgs::statC_charge}, - {"statC{flux}", precise::cgs::statC_flux}, - {"statcoulomb", precise::cgs::statC_charge}, - {"statcoulomb{charge}", precise::cgs::statC_charge}, - {"statcoulomb{flux}", precise::cgs::statC_flux}, - {"Fr", precise::cgs::statC_charge}, - {"franklin", precise::cgs::statC_charge}, - {"esu", precise::cgs::statC_charge}, - {"bar", precise::bar}, - {"BAR", precise::bar}, - {"in", precise::in}, - {"in_i", precise::in}, - {"[IN_I]", precise::in}, - {"inch_i", precise::i::inch}, - {"inches", precise::in}, - {"inches_i", precise::i::inch}, - {"in_us", precise::us::inch}, - {"inus", precise::us::inch}, - {"usin", - precise::us::inch}, // this is more likely than micro square in - {"[IN_US]", precise::us::inch}, - {"inch_us", precise::us::inch}, - {"inches_us", precise::us::inch}, - {"caliber", precise_unit(0.01, precise::i::inch)}, - {"rd", precise::us::rod}, - {"rod", precise::us::rod}, - {"rd_us", precise::us::rod}, - {"rdus", precise::us::rod}, - {"[RD_US]", precise::us::rod}, - {"rod_us", precise::us::rod}, - {"rods_us", precise::us::rod}, - {"ch", precise::us::chain}, - {"chain", precise::us::chain}, - {"chain_us", precise::us::chain}, - {"ch_us", precise::us::chain}, - {"[CH_US]", precise::us::chain}, - {"gunter'schain_us", precise::us::chain}, - {"surveyors'schain_us", precise::us::chain}, - {"surveyors'schain", precise::us::chain}, - {"lk_us", precise::us::link}, - {"li", precise::us::link}, - {"lnk", precise::us::link}, - {"link_us", precise::us::link}, - {"li_us", precise::us::link}, - {"link", precise::us::link}, - {"[LK_US]", precise::us::link}, - {"linkforGunter'schain_us", precise::us::link}, - {"rch_us", precise::us::engineers::chain}, - {"[RCH_US]", precise::us::engineers::chain}, - {"ramden'schain_us", precise::us::engineers::chain}, - {"rlk_us", precise::us::engineers::link}, - {"[RLK_US]", precise::us::engineers::link}, - {"linkforRamden'schain_us", precise::us::engineers::link}, - {"fur", precise::us::furlong}, - {"furlong", precise::us::furlong}, - {"fur_us", precise::us::furlong}, - {"[FUR_US]", precise::us::furlong}, - {"furlong_us", precise::us::furlong}, - {"fth", precise::nautical::fathom}, - {"fath", precise::nautical::fathom}, - {"fth_us", precise::nautical::fathom}, - {"fthus", precise::nautical::fathom}, - {"[FTH_US]", precise::nautical::fathom}, - {"fathom_us", precise::nautical::fathom}, - {"mi_us", precise::us::mile}, - {"[MI_US]", precise::us::mile}, - {"mile_us", precise::us::mile}, - {"lea_us", precise_unit(3.0, precise::us::mile)}, - {"league_us", precise_unit(3.0, precise::us::mile)}, - {"mil_us", precise::us::mil}, - {"[MIL_US]", precise::us::mil}, - {"mil_us", precise::us::mil}, - {"inch", precise::in}, - {"thou", precise::imp::thou}, - {"thousandth", precise::in* precise::milli}, - {"mil", precise::i::mil}, - {"mil_i", precise::i::mil}, - {"[MIL_I]", precise::i::mil}, - {"cml", precise::i::circ_mil}, - {"circularmil", precise::i::circ_mil}, - {"circularinch", - precise_unit{constants::pi / 4.0, precise::i::inch.pow(2)}}, - {"cml_i", precise::i::circ_mil}, - {"circularmil_i", precise::i::circ_mil}, - {"[CML_I]", precise::i::circ_mil}, - {"hd", precise::i::hand}, - {"hd_i", precise::i::hand}, - {"[HD_I]", precise::i::hand}, - {"hand", precise::i::hand}, {"jansky", precise_unit( 1e-26, @@ -617,56 +515,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< precise_unit( 1e-26, precise::W / precise::m / precise::m / precise::Hz)}, - {"ft", precise::ft}, - {"ft_i", precise::ft}, - {"[FT_I]", precise::ft}, - {"bf", precise::i::board_foot}, - {"BF", precise::i::board_foot}, - {"bf_i", precise::i::board_foot}, - {"BDFT", precise::i::board_foot}, - {"FBM", precise::i::board_foot}, - {"[BF_I]", precise::i::board_foot}, - {"boardfoot", precise::i::board_foot}, - {"boardfeet", precise::i::board_foot}, - {"boardfeet_i", precise::i::board_foot}, - {"cr", precise::i::cord}, - {"crd", precise::i::cord}, - {"cord", precise::i::cord}, - {"crd_i", precise::i::cord}, - {"cords_i", precise::i::cord}, - {"cr_i", precise::i::cord}, - {"[CR_I]", precise::i::cord}, - {"crd_us", precise::us::cord}, - {"[CRD_US]", precise::us::cord}, - {"cord_us", precise::us::cord}, - {"ftus", precise::ft}, - {"ft_us", precise::ft}, - {"[FT_US]", precise::ft}, - {"foot_us", precise::ft}, - {"feet_us", precise::ft}, - {"ft^2", precise::ft* precise::ft}, - {"sin", precise::in* precise::in}, - {"sin_i", precise::in* precise::in}, - {"[SIN_I]", precise::in* precise::in}, - {"cin", precise::in.pow(3)}, // cubic inch instead of centiinch - {"cin_i", precise::in.pow(3)}, - {"[CIN_I]", precise::in.pow(3)}, - {"sf", precise::ft* precise::ft}, - {"sft", precise::ft* precise::ft}, - {"sft_i", precise::ft* precise::ft}, - {"[SFT_I]", precise::ft* precise::ft}, - {"SCF", precise::energy::scf}, // standard cubic foot - {"CCF", precise::hundred* precise::energy::scf}, // centum cubic foot - {"MCF", precise::kilo* precise::energy::scf}, // millum cubic foot - {"MMCF", precise::mega* precise::energy::scf}, // million cubic foot - {"BCF", precise::giga* precise::energy::scf}, // billion cubic foot - {"TCF", precise::tera* precise::energy::scf}, // trillion cubic foot - {"QCF", precise::exa* precise::energy::scf}, // quadrillion cubic foot - {"Mcf", precise::kilo* precise::energy::scf}, // millum cubic foot - {"MMcf", precise::mega* precise::energy::scf}, // million cubic foot - {"Bcf", precise::giga* precise::energy::scf}, // billion cubic foot - {"Tcf", precise::tera* precise::energy::scf}, // trillion cubic foot - {"Qcf", precise::exa* precise::energy::scf}, // quadrillion cubic foot {"Mm^3", precise::kilo* precise::energy::scm}, // millum cubic meters {"Nm^3", precise::energy::ncm}, // normal cubic meter {"Sm^3", precise::energy::scm}, // standard cubic meter @@ -675,107 +523,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"tm^3", precise::tera* precise::energy::scm}, // trillion cubic meters {"gwp", precise::climate::gwp}, // global warming potential {"gtp", precise::climate::gtp}, // global temperature potential - {"cf", precise::energy::scf}, - {"scf", precise::energy::scf}, - {"std", precise::energy::scf}, - {"ncf", precise::energy::ncf}, - {"mcf", precise::kilo* precise::energy::scf}, - {"ccf", precise::hundred* precise::energy::scf}, - {"cft", precise::ft.pow(3)}, - {"[cft_i]", precise::ft.pow(3)}, - {"[CFT_I]", precise::ft.pow(3)}, - {"foot", precise::ft}, - {"foot_i", precise::i::foot}, - {"feet", precise::ft}, - {"feet_i", precise::i::foot}, - {"YD", precise::yd}, - {"yd", precise::yd}, - {"yd_i", precise::yd}, - {"yard_i", precise::yd}, - {"yards_i", precise::yd}, - {"[YD_I]", precise::yd}, - {"ydus", precise::us::yard}, - {"yd_us", precise::us::yard}, - {"ydsus", precise::us::yard}, - {"[YD_US]", precise::us::yard}, - {"yardus", precise::us::yard}, - {"yard_us", precise::us::yard}, - {"yards_us", precise::us::yard}, - {"sy", precise::yd* precise::yd}, - {"syd", precise::yd* precise::yd}, - {"syd_i", precise::yd* precise::yd}, - {"[SYD_I]", precise::yd* precise::yd}, - {"cy", precise::yd.pow(3)}, - {"cyd", precise::yd.pow(3)}, - {"cyd_i", precise::yd.pow(3)}, - {"[CYD_I]", precise::yd.pow(3)}, - {"in_br", precise::imp::inch}, - {"inch_br", precise::imp::inch}, - {"inches_br", precise::imp::inch}, - {"barleycorn", precise::imp::barleycorn}, - {"[IN_BR]", precise::imp::inch}, - {"ft_br", precise::imp::foot}, - {"[FT_BR]", precise::imp::foot}, - {"foot_br", precise::imp::foot}, - {"rd_br", precise::imp::rod}, - {"[RD_BR]", precise::imp::rod}, - {"rod_br", precise::imp::rod}, - {"perch", precise::imp::rod}, - {"pole", precise::imp::rod}, - {"ch_br", precise::imp::chain}, - {"[CH_BR]", precise::imp::chain}, - {"gunter'schain_br", precise::imp::chain}, - {"lk_br", precise::imp::link}, - {"[LK_BR]", precise::imp::link}, - {"linkforGunter'schain_br", precise::imp::link}, - {"fth_br", precise::nautical::fathom}, - {"[FTH_BR]", precise::nautical::fathom}, - {"fathom_br", precise::nautical::fathom}, - {"fathoms_br", precise::nautical::fathom}, - {"pc_br", precise::imp::pace}, - {"[PC_BR]", precise::imp::pace}, - {"pace_br", precise::imp::pace}, - {"yd_br", precise::imp::yard}, - {"[YD_BR]", precise::imp::yard}, - {"yard_br", precise::imp::yard}, - {"nmi_br", precise::imp::nautical_mile}, - {"[NMI_BR]", precise::imp::nautical_mile}, - {"nauticalmile_br", precise::imp::nautical_mile}, - {"nauticalleague_br", precise_unit(3.0, precise::imp::nautical_mile)}, - {"kn_br", precise::imp::nautical_mile / precise::hr}, - {"[KN_BR]", precise::imp::nautical_mile / precise::hr}, - {"knot_br", precise::imp::nautical_mile / precise::hr}, - {"mi_br", precise::imp::mile}, - {"[MI_BR]", precise::imp::mile}, - {"mile_br", precise::imp::mile}, - {"gal_br", precise::imp::gallon}, - {"[GAL_BR]", precise::imp::gallon}, - {"gallon_br", precise::imp::gallon}, - {"yard", precise::yd}, - {"cubit", precise::distance::cubit}, - {"cubit_br", precise::distance::cubit}, - {"cubit(UK)", precise::distance::cubit}, - // because cubit has cu in it which indicates cubed - {"longcubit", precise::distance::longcubit}, - {"arpent", precise::distance::arpent_us}, - {"arpent_fr", precise::distance::arpent_fr}, - {"arpentlin", precise::distance::arpent_fr}, - {"ken", precise::japan::ken}, - {"cun", precise::chinese::cun}, - {"cun(Chinese)", - precise::chinese::cun}, // interaction with cu for cubic - {"cun_ch", precise::chinese::cun}, - {"chi", precise::chinese::chi}, - {"chi_ch", precise::chinese::chi}, - {"zhang", precise::chinese::zhang}, - {"zhang_ch", precise::chinese::zhang}, - {"li_ch", precise::chinese::li}, - {"jin_ch", precise::chinese::jin}, - {"jin", precise::chinese::jin}, - {"liang_ch", precise::chinese::liang}, - {"liang", precise::chinese::liang}, - {"qian_ch", precise::chinese::qian}, - {"qian", precise::chinese::qian}, {"min", precise::min}, {"mins", precise::min}, {"mIN", precise::min}, @@ -792,8 +539,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"d", precise::time::day}, {"week", precise::time::week}, {"weekly", precise::one / precise::time::week}, - {"biweekly", precise_unit(0.5, precise::time::week.inv())}, - {"fortnight", precise::time::fortnight}, {"wk", precise::time::week}, {"WK", precise::time::week}, {"y", precise::time::year}, @@ -857,12 +602,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"commonyear", precise_unit(365.0, precise::time::day)}, // year {"leapyear", precise_unit(366.0, precise::time::day)}, // year {"yearcommon", precise_unit(365.0, precise::time::day)}, // year - {"yearleap", precise_unit(366.0, precise::time::day)}, // year - {"draconicyear", precise_unit(346.620075883, precise::time::day)}, - {"lunaryear", precise_unit(12.0, precise::time::mos)}, - {"a_g", precise::time::ag}, // year {"meanyear_g", precise::time::ag}, // year {"meanyr_g", precise::time::ag}, // year + {"a_g", precise::time::ag}, // year {"year_g", precise::time::ag}, // year {"yr_g", precise::time::ag}, // year {"ANN_G", precise::time::ag}, // year @@ -933,15 +675,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"uas", precise_unit(0.000001, precise::angle::arcsec)}, // microarcsec {"rad", precise::rad}, {"radian", precise::rad}, - {"gon", precise::angle::gon}, - {"gon(grade)", precise::angle::gon}, - {"GON", precise::angle::gon}, - {u8"\u25A1^g", precise::angle::gon}, - {"^g", precise::angle::gon}, - {"grad", precise::angle::grad}, - {"gradians", precise::angle::grad}, - {"grade", precise::angle::grad}, - {"mil(angle)", precise_unit(0.0625, precise::angle::grad)}, {"circ", precise_unit(constants::tau, precise::rad)}, {"CIRC", precise_unit(constants::tau, precise::rad)}, {"quadrant", precise_unit(90.0, precise::deg)}, @@ -949,7 +682,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"cycle", precise_unit(constants::tau, precise::rad)}, {"rotation", precise_unit(constants::tau, precise::rad)}, {"turn", precise_unit(constants::tau, precise::rad)}, - {"brad", precise::angle::brad}, {"circle-planeangle", precise_unit(constants::tau, precise::rad)}, {"sph", precise_unit(4.0 * constants::pi, precise::sr)}, {"spere-solidangle", precise_unit(4.0 * constants::pi, precise::sr)}, @@ -957,10 +689,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"speres", precise_unit(4.0 * constants::pi, precise::sr)}, {"Spere", precise_unit(4.0 * constants::pi, precise::sr)}, {"SPH", precise_unit(4.0 * constants::pi, precise::sr)}, - {"east", precise::direction::east}, - {"north", precise::direction::north}, - {"south", precise::direction::south}, - {"west", precise::direction::west}, {"\xB0" "C", precise::degC}, @@ -977,68 +705,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"CEL", precise::degC}, {"K@273.15", precise::degC}, {"celsius", precise::degC}, - {"degF", precise::degF}, - {"degsF", precise::degF}, - {"[DEGF]", precise::degF}, - {u8"\u2109", precise::degF}, // direct unicode symbol - {"degR", precise::temperature::degR}, - {"degsR", precise::temperature::degR}, - {"[DEGR]", precise::temperature::degR}, - {u8"\u00B0R", precise::temperature::degR}, - {u8"\u00B0r", precise::temperature::reaumur}, - {"\xB0R", precise::temperature::degR}, - {"\xB0r", precise::temperature::reaumur}, - {"[DEGRE]", precise::temperature::reaumur}, - {"degRe", precise::temperature::reaumur}, - {"degsRe", precise::temperature::reaumur}, - {u8"degR\u00e9aumur", precise::temperature::reaumur}, - {u8"\u00B0R\u00e9", precise::temperature::reaumur}, - {u8"\u00B0Re", precise::temperature::reaumur}, - {u8"\u00B0Ra", precise::temperature::degR}, - {"\xB0Re", precise::temperature::reaumur}, - {"\xB0Ra", precise::temperature::degR}, - {"degReaumur", precise::temperature::reaumur}, - {"reaumur", precise::temperature::reaumur}, - {u8"r\u00e9aumur", precise::temperature::reaumur}, {"degCelsius", precise::degC}, - {"degC", precise::degC}, {"degsC", precise::degC}, - {"degFahrenheit", precise::degF}, - {"degRankine", precise::temperature::degR}, - {"degrankine", precise::temperature::degR}, - {"rankine", precise::temperature::degR}, - {"degReaumur", precise::temperature::reaumur}, - {"oF", precise::degF}, - // this is two strings since F could be interpreted as hex and I don't - // want it to be - {"\xB0" - "F", - precise::degF}, - {u8"\u00b0F", precise::degF}, - {"fahrenheit", precise::degF}, - {"mi", precise::mile}, - {"mi_i", precise::mile}, - {"league", precise::i::league}, - {"lea", precise::i::league}, - {"[MI_I]", precise::mile}, - {"miI", precise::mile}, - {"smi", precise::mile* precise::mile}, - {"smi_us", precise::us::mile* precise::us::mile}, - {"[SMI_US]", precise::us::mile* precise::us::mile}, - {"mile", precise::mile}, - {"mile_i", precise::mile}, - {"miles_i", precise::mile}, - {"srd_us", precise::us::rod* precise::us::rod}, - {"[SRD_US]", precise::us::rod* precise::us::rod}, - {"sct", precise::us::section}, - {"[SCT]", precise::us::section}, - {"section", precise::us::section}, - {"homestead", precise::us::homestead}, - {"twp", precise::us::township}, - {"[TWP]", precise::us::township}, - {"township", precise::us::township}, - {"fur", precise::us::furlong}, - {"[FUR_I]", precise::us::furlong}, {"cm", precise::cm}, {"centimeter", precise::cm}, {"km", precise::km}, @@ -1141,9 +809,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ASU", precise::distance::au}, {"astronomicalunit", precise::distance::au}, {"astronomicunit", precise::distance::au}, - {"astronomicalunitBIPM2006", precise::distance::au_old}, - {"auold", precise::distance::au_old}, - {"ua", precise::distance::au_old}, + {"kph", precise::km / precise::hr}, {"$", precise::currency}, {"dollar", precise::currency}, {"euro", precise::currency}, @@ -1197,12 +863,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ERR", precise::error}, {"ERROR", precise::error}, {"error", precise::error}, - {"FEU", precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, - {"TEU", precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, - {"fortyfootequivalent", - precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, - {"twentyfootequivalent", - precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, + {"Gy", precise::Gy}, {"gy", precise::Gy}, {"GY", precise::Gy}, @@ -1251,7 +912,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"BA", precise::cgs::barye}, {"barye", precise::cgs::barye}, {"barie", precise::cgs::barye}, - {"D", precise::cgs::debye}, {"debye", precise::cgs::debye}, {"roentgen", precise::cgs::roentgen}, {"r\xF6ntgen", precise::cgs::roentgen}, @@ -1267,10 +927,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"lambert", precise::cgs::lambert}, {"bril", precise_unit(1e-11, precise::cgs::lambert)}, {"skot", precise_unit(1e-7, precise::cgs::lambert)}, - {"footlambert", - precise_unit(1.0 / constants::pi, precise::cd / precise::ft.pow(2))}, - {"fl", - precise_unit(1.0 / constants::pi, precise::cd / precise::ft.pow(2))}, {"Lb", precise::cgs::lambert}, {"langley", precise::cgs::langley}, {"Ly", precise::cgs::langley}, @@ -1311,6 +967,764 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"steradian", precise::sr}, {"steradian-solidangle", precise::sr}, {"$/MWh", precise::currency / precise::MWh}, + {"are", precise::area::are}, + {"ar", precise::area::are}, + {"AR", precise::area::are}, + {"hectare", precise::area::hectare}, + {"barn", precise::area::barn}, + {"b", precise::area::barn}, + {"BRN", precise::area::barn}, + {"ha", precise::area::hectare}, + // porous solid permeability + {"mW", precise::electrical::mW}, + {"milliwatt", precise::electrical::mW}, + {"puW", precise::electrical::puMW / precise::mega}, + {"puMW", precise::electrical::puMW}, + {"puMVA", precise::electrical::puMW}, + {"pumw", precise::electrical::puMW}, + {"pumegawatt", precise::electrical::puMW}, + {"puV", precise::electrical::puV}, + {"puvolt", precise::electrical::puV}, + {"puA", precise::electrical::puA}, + {"puamp", precise::electrical::puA}, + {"mA", precise::electrical::mA}, + {"milliamp", precise::electrical::mA}, + {"kV", precise::electrical::kV}, + {"kilovolt", precise::electrical::kV}, + {"abvolt", precise::cgs::abVolt}, + {"abV", precise::cgs::abVolt}, + {"statvolt", precise::cgs::statV}, + {"stV", precise::cgs::statV}, + {"erg", precise::cgs::erg}, + {"ERG", precise::cgs::erg}, + {"dyn", precise::cgs::dyn}, + {"DYN", precise::cgs::dyn}, + {"dyne", precise::cgs::dyn}, + {"pond", precise::gm::pond}, + {"pu", precise::pu}, + {"perunit", precise::pu}, + {"flag", precise::iflag}, + {"eflag", precise::eflag}, + {"FLAG", precise::iflag}, + {"EFLAG", precise::eflag}, + {"puOhm", precise::pu* precise::ohm}, + {"puohm", precise::pu* precise::ohm}, + {"puHz", precise::electrical::puHz}, + {"puhertz", precise::electrical::puHz}, + {"mps", precise::m / precise::s}, + {"eV", precise::energy::eV}, + {"bev", precise_unit(1e9, precise::energy::eV)}, + {"Ry", precise_unit(13.60583, precise::energy::eV)}, // Rydberg + {"electronvolt", precise::energy::eV}, + {"electronVolt", precise::energy::eV}, + // Gigatonne carbon + {"GtC", precise_unit(1000000000.0, precise::t, commodities::carbon)}, + {"hartree", precise::energy::hartree}, + {"Eh", precise::energy::hartree}, // this could be confused with + // Exa-hour, but not likely + {"E_h", precise::energy::hartree}, // this could be confused with + // Exa-hour, but not likely + {"Ha", precise::energy::hartree}, + + {"fueloilequivalentof1kiloliter", + precise::energy::foeb / precise::us::barrel* precise::m.pow(3)}, + {"atm", precise::pressure::atm}, + {"ATM", precise::pressure::atm}, + {"atmos", precise::pressure::atm}, + {"atmosphere", precise::pressure::atm}, + {"standardatmosphere", precise::pressure::atm}, + {"stdatmosphere", precise::pressure::atm}, + {"stdatm", precise::pressure::atm}, + {"mmHg", precise::pressure::mmHg}, + {"mm[Hg]", precise::pressure::mmHg}, + {"MM[HG]", precise::pressure::mmHg}, + {"cmHg", precise::ten* precise::pressure::mmHg}, + {"cm[Hg]", precise::ten* precise::pressure::mmHg}, + {"CM[HG]", precise::ten* precise::pressure::mmHg}, + {"mHg", precise::kilo* precise::pressure::mmHg}, + {"m*Hg", precise::kilo* precise::pressure::mmHg}, + {"m[Hg]", precise::kilo* precise::pressure::mmHg}, + {"M[HG]", precise::kilo* precise::pressure::mmHg}, + {"m[HG]", precise::kilo* precise::pressure::mmHg}, + {"metermercury", precise::kilo* precise::pressure::mmHg}, + {"meterofmercury", precise::kilo* precise::pressure::mmHg}, + {"meter{mercury}", precise::kilo* precise::pressure::mmHg}, + {"meter(mercury)", precise::kilo* precise::pressure::mmHg}, + {"metersofmercury", precise::kilo* precise::pressure::mmHg}, + {"meterofmercurycolumn", precise::kilo* precise::pressure::mmHg}, + {"metersofmercurycolumn", precise::kilo* precise::pressure::mmHg}, + {"mmH2O", precise::pressure::mmH2O}, + {"mm[H2O]", precise::pressure::mmH2O}, + {"MM[H2O]", precise::pressure::mmH2O}, + {"cmH2O", precise::ten* precise::pressure::mmH2O}, + {"cm[H2O]", precise::ten* precise::pressure::mmH2O}, + {"CM[H2O]", precise::ten* precise::pressure::mmH2O}, + {"mH2O", precise::kilo* precise::pressure::mmH2O}, + {"m*H2O", precise::kilo* precise::pressure::mmH2O}, + {"m[H2O]", precise::kilo* precise::pressure::mmH2O}, + {"M[H2O]", precise::kilo* precise::pressure::mmH2O}, + {"meterwater", precise::kilo* precise::pressure::mmH2O}, + {"meterofwater", precise::kilo* precise::pressure::mmH2O}, + {"metersofwater", precise::kilo* precise::pressure::mmH2O}, + {"meters{water}", precise::kilo* precise::pressure::mmH2O}, + {"meter{water}", precise::kilo* precise::pressure::mmH2O}, + {"meters(water)", precise::kilo* precise::pressure::mmH2O}, + {"meter(water)", precise::kilo* precise::pressure::mmH2O}, + {"meterofwatercolumn", precise::kilo* precise::pressure::mmH2O}, + {"metersofwatercolumn", precise::kilo* precise::pressure::mmH2O}, + {"torr", precise::pressure::torr}, + {"Torr", precise::pressure::torr}, + {"TORR", precise::pressure::torr}, + {"$/kWh", precise::currency / precise::kWh}, + {"kWh", precise::kWh}, + {"kwh", precise::kWh}, + {"Wh", precise::W* precise::h}, + {"Wa", precise::W* precise::yr}, + {"kilowatthour", precise::kWh}, + {"MWh", precise::MWh}, + {"megawatthour", precise::MWh}, + {"M$", precise::other::MegaBuck}, + {"mil$", precise::other::MegaBuck}, + {"B$", precise::other::GigaBuck}, + {"bil$", precise::other::GigaBuck}, + {"L", precise::L}, // preferred US notation + {"l", precise::L}, + {"LT", precise::L}, + {"liter", precise::L}, + {"litre", precise::L}, + {"mL", precise::mL}, // preferred US notation + {"ml", precise::mL}, + {"t", precise::mass::tonne}, // metric tonne + {"mt", precise::mass::tonne}, // metric tonne + {"ton_m", precise::mass::tonne}, + {"tonne", precise::mass::tonne}, + {"TNE", precise::mass::tonne}, + {"Da", precise::mass::Da}, + {"dalton", precise::mass::Da}, + {"u", precise::mass::u}, + {"amu", precise::mass::u}, + {"AMU", precise::mass::u}, + {"unifiedatomicmassunit", precise::mass::u}, + {"atomicmassunit", precise::mass::u}, + + {"angstrom", precise::distance::angstrom}, + {u8"\u00C5ngstr\u00F6m", precise::distance::angstrom}, + {"\xE5ngstr\xF6m", precise::distance::angstrom}, + {u8"\u00E5ngstr\u00F6m", precise::distance::angstrom}, + {"Ao", precise::distance::angstrom}, + {"AO", precise::distance::angstrom}, + {u8"\u00C5", precise::distance::angstrom}, + {u8"A\u02DA", precise::distance::angstrom}, + {"\xC5", precise::distance::angstrom}, + {u8"\u212B", precise::distance::angstrom}, // unicode + {"bps", precise::bit / precise::s}, + {"baud", precise::bit / precise::s}, + {"Bd", precise::bit / precise::s}, + {"BD", precise::bit / precise::s}, + {"bit", precise::bit}, + {"BIT", precise::bit}, + {"bit_s", precise::data::bit_s}, + {"bit-s", precise::data::bit_s}, + {"BIT_S", precise::data::bit_s}, + {"bit-logarithmic", precise::data::bit_s}, + {"bitlogarithmic", precise::data::bit_s}, + {"logbit", precise::data::bit_s}, + // b is for unit barn + // B is for bel + {"Bps", precise::B / precise::s}, + {"byte", precise::B}, + {"By", precise::B}, + {"BY", precise::B}, + {"kB", precise::kB}, + {"MB", precise::MB}, + {"GB", precise::GB}, + {"floatingpointoperation", precise::computation::flop}, + {"flops", precise::computation::flops}, + {"mips", precise::computation::mips}, + {"[car_m]", precise::metric::carat}, + {"ct_m", precise::metric::carat}, + {"[CAR_M]", precise::metric::carat}, + {"carat_m", precise::metric::carat}, + {"photometriccarat", precise::metric::carat}, + {"g", precise::g}, + {"gm", precise::g}, + {"gamma", precise::micro* precise::g}, + {u8"\u1D6FE", precise::micro* precise::g}, + {"gamma{mass}", precise::micro* precise::g}, + {"gamma(mass)", precise::micro* precise::g}, + {"gamma{volume}", precise::micro* precise::L}, + {"gamma(volume)", precise::micro* precise::L}, + {"lambda{volume}", precise::micro* precise::L}, + {"lambda(volume)", precise::micro* precise::L}, + {"gamma(geo)", + precise::nano* precise::T}, // two different uses of gamma + {"gamma{geo}", + precise::nano* precise::T}, // two different uses of gamma + {"gf", precise::g* constants::g0.as_unit()}, + {"gravity", constants::g0.as_unit()}, // force of gravity + {"geopotential", constants::g0.as_unit()}, // force of gravity + {"gp", constants::g0.as_unit()}, // force of gravity + {"force", constants::g0.as_unit()}, // force of gravity + {"frc", constants::g0.as_unit()}, // force of gravity + {"kp", precise::kilo* precise::gm::pond}, + // this is probably more common than kilopoise + {"tonforce_m", precise::mass::tonne* constants::g0.as_unit()}, + {"tf", precise::mass::tonne* constants::g0.as_unit()}, + {"hyl", precise::gm::hyl}, + {"GF", precise::g* constants::g0.as_unit()}, // gram-force vs GF + {"gram", precise::g}, + {"mg", precise::mg}, + {"mcg", precise::micro* precise::g}, + {"milligram", precise::mg}, + {"carat", precise_unit(200.0, precise::mg)}, + {"karat", precise_unit(200.0, precise::mg)}, + {"ct", precise_unit(200.0, precise::mg)}, + // {"kt", precise_unit(200.0, precise::mg)}, + {"EER", precise::energy::EER}, + {"ppv", precise::one}, // parts per volume + {"ppth", precise::other::ppm* precise::kilo}, + {"PPTH", precise::other::ppm* precise::kilo}, + {"ppm", precise::other::ppm}, + {"ppmv", precise::other::ppm}, + {"PPM", precise::other::ppm}, + {"[PPM]", precise::other::ppm}, + {"partspermillion", precise::other::ppm}, + {"ppb", precise::other::ppb}, + {"ppbv", precise::other::ppb}, + {"PPB", precise::other::ppb}, + {"[PPB]", precise::other::ppb}, + {"partsperbillion", precise::other::ppb}, + {"ppt", precise::other::ppb* precise::milli}, + {"pptv", precise::other::ppb* precise::milli}, + {"pptr", precise::other::ppb* precise::milli}, + {"PPTR", precise::other::ppb* precise::milli}, + {"[PPTR]", precise::other::ppb* precise::milli}, + {"partspertrillion", precise::other::ppb* precise::milli}, + {"ppq", precise::other::ppb* precise::micro}, + {"ppqv", precise::other::ppb* precise::micro}, + {"partsperquadrillion", precise::other::ppb* precise::micro}, + {"PRU", precise::clinical::pru}, + {"peripheralvascularresistanceunit", precise::clinical::pru}, + {"peripheralresistanceunit", precise::clinical::pru}, + {"potentialvorticityunit", + precise_unit( + detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), + 1e-6)}, + {"PVU", + precise_unit( + detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), + 1e-6)}, + // unit of thermal resistance used in describing the insulating value of + // clothing; the amount of thermal resistance needed to maintain in + // comfort a resting subject in a normally ventilated room (air movement + // 10 cm/sec) at a temperature of 20 degrees C and a humidity less than + // 50% + {"clo", + precise_unit(1.55e-1, precise::K* precise::m.pow(2) / precise::W)}, + {"[MET]", precise::clinical::met}, + {"MET", precise::clinical::met}, + {"metabolicEquivalentofTask", precise::clinical::met}, + {"metabolicequivalents", precise::clinical::met}, + {"[wood'U]", precise::clinical::woodu}, + {"HRU", precise::clinical::woodu}, + {"hybridreferenceunit", precise::clinical::woodu}, + {"[WOOD'U]", precise::clinical::woodu}, + {"woodunit", precise::clinical::woodu}, + {"dpt", precise::clinical::diopter}, + {"diop", precise::clinical::diopter}, + {"[DIOP]", precise::clinical::diopter}, + {"diopter", precise::clinical::diopter}, + {"dioptre", precise::clinical::diopter}, + {"diopter(lens)", precise::clinical::diopter}, + {"[p'diop]", precise::clinical::prism_diopter}, + {"pdiop", precise::clinical::prism_diopter}, + {"[P'DIOP]", precise::clinical::prism_diopter}, + {"PD", precise::clinical::prism_diopter}, + {"prismdiopter", precise::clinical::prism_diopter}, + {"prismdiopter(magnifyingpower)", precise::clinical::prism_diopter}, + {"%slope", precise::clinical::prism_diopter}, + {"%[slope]", precise::clinical::prism_diopter}, + {"%[SLOPE]", precise::clinical::prism_diopter}, + {"percentofslope", precise::clinical::prism_diopter}, + {"drp", precise::clinical::drop}, + {"[drp]", precise::clinical::drop}, + {"[DRP]", precise::clinical::drop}, + {"drop", precise::clinical::drop}, + {"drop(1/20milliliter)", precise::clinical::drop}, + {"drop-metric", precise::clinical::drop}, + {"drop_m", precise::clinical::drop}, + {"drop-metric(1/20mL)", precise::clinical::drop}, + {"Ch", precise::clinical::charriere}, + {"[CH]", precise::clinical::charriere}, + {"french(cathetergauge)", precise::clinical::charriere}, + {"mesh_i", precise::clinical::mesh}, + {"[MESH_I]", precise::clinical::mesh}, + {"mesh", precise::clinical::mesh}, + {"meshes", precise::clinical::mesh}, + {"ASD", precise::special::ASD}, + {"[m/s2/Hz^(1/2)]", precise::special::ASD}, + {"[M/s2/HZ^(1/2)]", precise::special::ASD}, + {"Hz^(1/2)", precise::special::rootHertz}, + {"HZ^(1/2)", precise::special::rootHertz}, + {"squarerootofhertz", precise::special::rootHertz}, + {"squareroothertz", precise::special::rootHertz}, + {"roothertz", precise::special::rootHertz}, + // capitalized version is needed since this is also a generated unit + {"rootHertz", precise::special::rootHertz}, + {"B", precise::data::byte}, + {"bel", precise::log::bel}, + {"dB", precise::log::dB}, + {"decibel", precise::log::dB}, + {"decibels", precise::log::dB}, + {"DB", precise::log::dB}, + {"Np", precise::log::neper}, + {"NEP", precise::log::neper}, + {"nepers", precise::log::neper}, + {"neper", precise::log::neper}, + {"SPL", precise_unit(2 * 1e-5, precise::pascal)}, + {"soundpressurelevel", precise_unit(2 * 1e-5, precise::pascal)}, + {"soundpressure", precise_unit(2 * 1e-5, precise::pascal)}, + {"BSPL", precise::log::B_SPL}, + {"B[SPL]", precise::log::B_SPL}, + {"B(SPL)", precise::log::B_SPL}, + {"belSPL", precise::log::B_SPL}, + {"belsoundpressure", precise::log::B_SPL}, + {"dB[SPL]", precise::log::dB_SPL}, + {"decibel(SPL)", precise::log::dB_SPL}, + {"DB[SPL]", precise::log::dB_SPL}, + {"DBSPL", precise::log::dB_SPL}, + {"B[V]", precise::log::B_V}, + {"B(V)", precise::log::B_V}, + {"BV", precise::log::B_V}, + {"Bv", precise_unit(0.775, precise::log::B_V)}, + {"Bvolt", precise::log::B_V}, + {"belvolt", precise::log::B_V}, + {"belV", precise::log::B_V}, + {"dB[V]", precise::log::dB_V}, + {"decibelV", precise::log::dB_V}, + {"dB(V)", precise::log::dB_V}, + {"DB[V]", precise::log::dB_V}, + {"B[mV]", precise::log::B_mV}, + {"B(mV)", precise::log::B_mV}, + {"belmillivolt", precise::log::B_mV}, + {"belmV", precise::log::B_mV}, + {"dB[mV]", precise::log::dB_mV}, + {"dB(mV)", precise::log::dB_mV}, + {"B[MV]", precise::log::B_mV}, + {"DB[MV]", precise::log::dB_mV}, + {"B[uV]", precise::log::B_uV}, + {"dB[uV]", precise::log::dB_uV}, + {"decibelmicrovolt", precise::log::dB_uV}, + {"B[UV]", precise::log::B_uV}, + {"B(uV)", precise::log::B_uV}, + {"BuV", precise::log::B_uV}, + {"belmicrovolt", precise::log::B_uV}, + {"DB[UV]", precise::log::dB_uV}, + {"B[10.nV]", precise::log::B_10nV}, + {"B(10nV)", precise::log::B_10nV}, + {"bel10nanovolt", precise::log::B_10nV}, + {"dB[10.nV]", precise::log::dB_10nV}, + {"dB[10*nV]", precise::log::dB_10nV}, + {"decibel10nanovolt", precise::log::B_10nV}, + {"B[10*NV]", precise::log::B_10nV}, + {"B[10*nV]", precise::log::B_10nV}, + {"DB[10*NV]", precise::log::dB_10nV}, + {"B[W]", precise::log::B_W}, + {"B(W)", precise::log::B_W}, + {"belwatt", precise::log::B_W}, + {"belW", precise::log::B_W}, + {"dB[W]", precise::log::dB_W}, + {"DB[W]", precise::log::dB_W}, + {"B[kW]", precise::log::B_kW}, + {"B(kW)", precise::log::B_kW}, + {"DB[kW]", precise::log::dB_kW}, + {"B[KW]", precise::log::B_kW}, + {"belkilowatt", precise::log::B_kW}, + {"belkW", precise::log::B_kW}, + {"DB[KW]", precise::log::dB_kW}, + {"dBZ", precise::log::dBZ}, + {"BZ", precise::log::BZ}, + {"[S]", precise::laboratory::svedberg}, + {"svedbergunit", precise::laboratory::svedberg}, + {"HPF", precise::laboratory::HPF}, + {"highpowerfield", precise::laboratory::HPF}, + {"LPF", precise::laboratory::LPF}, + {"lowpowerfield", precise::laboratory::LPF}, + {"[arb'U]", precise::laboratory::arbU}, + {"[ARB'U]", precise::laboratory::arbU}, + {"[IU]", precise::laboratory::IU}, + {"[iU]", precise::laboratory::IU}, + {"dobson", + precise_unit(446.2, precise::micro* precise::mol / precise::m.pow(2))}, + {"DU", + precise_unit(446.2, precise::micro* precise::mol / precise::m.pow(2))}, + {"st", precise::volume::stere}, + {"stere", precise::volume::stere}, + {"STR", precise::volume::stere}, + {"[hnsf'U]", precise::clinical::hounsfield}, + {"[HNSF'U]", precise::clinical::hounsfield}, + {"[PFU]", precise::laboratory::PFU}, + {"PFU", precise::laboratory::PFU}, + {"plaqueformingunits", precise::laboratory::PFU}, + {"[Lf]", precise::laboratory::Lf}, + {"[LF]", precise::laboratory::Lf}, + {"[IR]", precise::laboratory::IR}, + {"[Ir]", precise::laboratory::IR}, + {"50%tissuecultureinfectiousdose", + precise_unit(0.69, precise::laboratory::PFU)}, + {"50%cellcultureinfectiousdose", + precise_unit(0.69, precise::laboratory::PFU, commodities::cell)}, + {"50%embryoinfectiousdose", + precise_unit(0.69, precise::laboratory::PFU, commodities::embryo)}, + {"TCID50", precise_unit(0.69, precise::laboratory::PFU)}, + {"CCID50", + precise_unit(0.69, precise::laboratory::PFU, commodities::cell)}, + {"EID50", + precise_unit(0.69, precise::laboratory::PFU, commodities::embryo)}, + {"[hp'_X]", precise_unit(1.0, precise::log::neglog10)}, + {"[HP'_X]", precise_unit(1.0, precise::log::neglog10)}, + {"[hp'_C]", precise_unit(1.0, precise::log::neglog100)}, + {"[HP'_C]", precise_unit(1.0, precise::log::neglog100)}, + {"[hp'_M]", precise_unit(1.0, precise::log::neglog1000)}, + {"[HP'_M]", precise_unit(1.0, precise::log::neglog1000)}, + {"[hp'_Q]", precise_unit(1.0, precise::log::neglog50000)}, + {"[HP'_Q]", precise_unit(1.0, precise::log::neglog50000)}, + }}; + + UNITS_CPP14_CONSTEXPR_OBJECT std::array< + std::pair, + 979> + defined_unit_strings_customary{{ + {"candle", precise::other::candle}, + {"candlepower", precise::other::candle}, + {"footlambert", + precise_unit(1.0 / constants::pi, precise::cd / precise::ft.pow(2))}, + {"fl", + precise_unit(1.0 / constants::pi, precise::cd / precise::ft.pow(2))}, + {"CP", precise::other::candle}, + {"footcandle", precise::lumen / precise::ft.pow(2)}, + {"fc", precise::lumen / precise::ft.pow(2)}, + {"ftc", precise::lumen / precise::ft.pow(2)}, + {"stC", precise::cgs::statC_charge}, + {"statC", precise::cgs::statC_charge}, + {"statC{charge}", precise::cgs::statC_charge}, + {"statC{flux}", precise::cgs::statC_flux}, + {"statcoulomb", precise::cgs::statC_charge}, + {"statcoulomb{charge}", precise::cgs::statC_charge}, + {"statcoulomb{flux}", precise::cgs::statC_flux}, + {"Fr", precise::cgs::statC_charge}, + {"franklin", precise::cgs::statC_charge}, + {"esu", precise::cgs::statC_charge}, + {"bar", precise::bar}, + {"BAR", precise::bar}, + {"in", precise::in}, + {"in_i", precise::in}, + {"[IN_I]", precise::in}, + {"inch_i", precise::i::inch}, + {"inches", precise::in}, + {"inches_i", precise::i::inch}, + {"in_us", precise::us::inch}, + {"inus", precise::us::inch}, + {"usin", + precise::us::inch}, // this is more likely than micro square in + {"[IN_US]", precise::us::inch}, + {"inch_us", precise::us::inch}, + {"inches_us", precise::us::inch}, + {"caliber", precise_unit(0.01, precise::i::inch)}, + {"rd", precise::us::rod}, + {"rod", precise::us::rod}, + {"rd_us", precise::us::rod}, + {"rdus", precise::us::rod}, + {"[RD_US]", precise::us::rod}, + {"rod_us", precise::us::rod}, + {"rods_us", precise::us::rod}, + {"ch", precise::us::chain}, + {"chain", precise::us::chain}, + {"chain_us", precise::us::chain}, + {"ch_us", precise::us::chain}, + {"[CH_US]", precise::us::chain}, + {"gunter'schain_us", precise::us::chain}, + {"surveyors'schain_us", precise::us::chain}, + {"surveyors'schain", precise::us::chain}, + {"lk_us", precise::us::link}, + {"li", precise::us::link}, + {"lnk", precise::us::link}, + {"link_us", precise::us::link}, + {"li_us", precise::us::link}, + {"link", precise::us::link}, + {"[LK_US]", precise::us::link}, + {"linkforGunter'schain_us", precise::us::link}, + {"rch_us", precise::us::engineers::chain}, + {"[RCH_US]", precise::us::engineers::chain}, + {"ramden'schain_us", precise::us::engineers::chain}, + {"rlk_us", precise::us::engineers::link}, + {"[RLK_US]", precise::us::engineers::link}, + {"linkforRamden'schain_us", precise::us::engineers::link}, + {"fur", precise::us::furlong}, + {"furlong", precise::us::furlong}, + {"fur_us", precise::us::furlong}, + {"[FUR_US]", precise::us::furlong}, + {"furlong_us", precise::us::furlong}, + {"[FUR_I]", precise::us::furlong}, + + {"mi_us", precise::us::mile}, + {"[MI_US]", precise::us::mile}, + {"mile_us", precise::us::mile}, + {"lea_us", precise_unit(3.0, precise::us::mile)}, + {"league_us", precise_unit(3.0, precise::us::mile)}, + {"mil_us", precise::us::mil}, + {"[MIL_US]", precise::us::mil}, + {"inch", precise::in}, + {"thou", precise::imp::thou}, + {"thousandth", precise::in* precise::milli}, + {"mil", precise::i::mil}, + {"mil_i", precise::i::mil}, + {"[MIL_I]", precise::i::mil}, + {"cml", precise::i::circ_mil}, + {"circularmil", precise::i::circ_mil}, + {"circularinch", + precise_unit{constants::pi / 4.0, precise::i::inch.pow(2)}}, + {"cml_i", precise::i::circ_mil}, + {"circularmil_i", precise::i::circ_mil}, + {"[CML_I]", precise::i::circ_mil}, + {"hd", precise::i::hand}, + {"hd_i", precise::i::hand}, + {"[HD_I]", precise::i::hand}, + {"hand", precise::i::hand}, + {"ft", precise::ft}, + {"ft_i", precise::ft}, + {"[FT_I]", precise::ft}, + {"bf", precise::i::board_foot}, + {"BF", precise::i::board_foot}, + {"bf_i", precise::i::board_foot}, + {"BDFT", precise::i::board_foot}, + {"FBM", precise::i::board_foot}, + {"[BF_I]", precise::i::board_foot}, + {"boardfoot", precise::i::board_foot}, + {"boardfeet", precise::i::board_foot}, + {"boardfeet_i", precise::i::board_foot}, + {"cr", precise::i::cord}, + {"crd", precise::i::cord}, + {"cord", precise::i::cord}, + {"crd_i", precise::i::cord}, + {"cords_i", precise::i::cord}, + {"cr_i", precise::i::cord}, + {"[CR_I]", precise::i::cord}, + {"crd_us", precise::us::cord}, + {"[CRD_US]", precise::us::cord}, + {"cord_us", precise::us::cord}, + {"ftus", precise::ft}, + {"ft_us", precise::ft}, + {"[FT_US]", precise::ft}, + {"foot_us", precise::ft}, + {"feet_us", precise::ft}, + {"ft^2", precise::ft* precise::ft}, + {"sin", precise::in* precise::in}, + {"sin_i", precise::in* precise::in}, + {"[SIN_I]", precise::in* precise::in}, + {"cin", precise::in.pow(3)}, // cubic inch instead of centiinch + {"cin_i", precise::in.pow(3)}, + {"[CIN_I]", precise::in.pow(3)}, + {"sf", precise::ft* precise::ft}, + {"sft", precise::ft* precise::ft}, + {"sft_i", precise::ft* precise::ft}, + {"[SFT_I]", precise::ft* precise::ft}, + {"SCF", precise::energy::scf}, // standard cubic foot + {"CCF", precise::hundred* precise::energy::scf}, // centum cubic foot + {"MCF", precise::kilo* precise::energy::scf}, // millum cubic foot + {"MMCF", precise::mega* precise::energy::scf}, // million cubic foot + {"BCF", precise::giga* precise::energy::scf}, // billion cubic foot + {"TCF", precise::tera* precise::energy::scf}, // trillion cubic foot + {"QCF", precise::exa* precise::energy::scf}, // quadrillion cubic foot + {"Mcf", precise::kilo* precise::energy::scf}, // millum cubic foot + {"MMcf", precise::mega* precise::energy::scf}, // million cubic foot + {"Bcf", precise::giga* precise::energy::scf}, // billion cubic foot + {"Tcf", precise::tera* precise::energy::scf}, // trillion cubic foot + {"Qcf", precise::exa* precise::energy::scf}, // quadrillion cubic foot + {"cf", precise::energy::scf}, + {"scf", precise::energy::scf}, + {"std", precise::energy::scf}, + {"ncf", precise::energy::ncf}, + {"mcf", precise::kilo* precise::energy::scf}, + {"ccf", precise::hundred* precise::energy::scf}, + {"cft", precise::ft.pow(3)}, + {"[cft_i]", precise::ft.pow(3)}, + {"[CFT_I]", precise::ft.pow(3)}, + {"foot", precise::ft}, + {"foot_i", precise::i::foot}, + {"feet", precise::ft}, + {"feet_i", precise::i::foot}, + {"YD", precise::yd}, + {"yd", precise::yd}, + {"yd_i", precise::yd}, + {"yard_i", precise::yd}, + {"yards_i", precise::yd}, + {"[YD_I]", precise::yd}, + {"ydus", precise::us::yard}, + {"yd_us", precise::us::yard}, + {"ydsus", precise::us::yard}, + {"[YD_US]", precise::us::yard}, + {"yardus", precise::us::yard}, + {"yard_us", precise::us::yard}, + {"yards_us", precise::us::yard}, + {"sy", precise::yd* precise::yd}, + {"syd", precise::yd* precise::yd}, + {"syd_i", precise::yd* precise::yd}, + {"[SYD_I]", precise::yd* precise::yd}, + {"cy", precise::yd.pow(3)}, + {"cyd", precise::yd.pow(3)}, + {"cyd_i", precise::yd.pow(3)}, + {"[CYD_I]", precise::yd.pow(3)}, + {"in_br", precise::imp::inch}, + {"inch_br", precise::imp::inch}, + {"inches_br", precise::imp::inch}, + {"barleycorn", precise::imp::barleycorn}, + {"[IN_BR]", precise::imp::inch}, + {"ft_br", precise::imp::foot}, + {"[FT_BR]", precise::imp::foot}, + {"foot_br", precise::imp::foot}, + {"rd_br", precise::imp::rod}, + {"[RD_BR]", precise::imp::rod}, + {"rod_br", precise::imp::rod}, + {"perch", precise::imp::rod}, + {"pole", precise::imp::rod}, + {"ch_br", precise::imp::chain}, + {"[CH_BR]", precise::imp::chain}, + {"gunter'schain_br", precise::imp::chain}, + {"lk_br", precise::imp::link}, + {"[LK_BR]", precise::imp::link}, + {"linkforGunter'schain_br", precise::imp::link}, + {"fth_br", precise::nautical::fathom}, + {"[FTH_BR]", precise::nautical::fathom}, + {"fathom_br", precise::nautical::fathom}, + {"fathoms_br", precise::nautical::fathom}, + {"pc_br", precise::imp::pace}, + {"[PC_BR]", precise::imp::pace}, + {"pace_br", precise::imp::pace}, + {"yd_br", precise::imp::yard}, + {"[YD_BR]", precise::imp::yard}, + {"yard_br", precise::imp::yard}, + {"nmi_br", precise::imp::nautical_mile}, + {"[NMI_BR]", precise::imp::nautical_mile}, + {"nauticalmile_br", precise::imp::nautical_mile}, + {"nauticalleague_br", precise_unit(3.0, precise::imp::nautical_mile)}, + {"kn_br", precise::imp::nautical_mile / precise::hr}, + {"[KN_BR]", precise::imp::nautical_mile / precise::hr}, + {"knot_br", precise::imp::nautical_mile / precise::hr}, + {"mi_br", precise::imp::mile}, + {"[MI_BR]", precise::imp::mile}, + {"mile_br", precise::imp::mile}, + {"gal_br", precise::imp::gallon}, + {"[GAL_BR]", precise::imp::gallon}, + {"gallon_br", precise::imp::gallon}, + {"yard", precise::yd}, + {"cubit", precise::distance::cubit}, + {"cubit_br", precise::distance::cubit}, + {"cubit(UK)", precise::distance::cubit}, + // because cubit has cu in it which indicates cubed + {"longcubit", precise::distance::longcubit}, + {"arpent", precise::distance::arpent_us}, + {"arpent_fr", precise::distance::arpent_fr}, + {"arpentlin", precise::distance::arpent_fr}, + {"ken", precise::japan::ken}, + {"cun", precise::chinese::cun}, + {"cun(Chinese)", + precise::chinese::cun}, // interaction with cu for cubic + {"cun_ch", precise::chinese::cun}, + {"chi", precise::chinese::chi}, + {"chi_ch", precise::chinese::chi}, + {"zhang", precise::chinese::zhang}, + {"zhang_ch", precise::chinese::zhang}, + {"li_ch", precise::chinese::li}, + {"jin_ch", precise::chinese::jin}, + {"jin", precise::chinese::jin}, + {"liang_ch", precise::chinese::liang}, + {"liang", precise::chinese::liang}, + {"qian_ch", precise::chinese::qian}, + {"qian", precise::chinese::qian}, + {"biweekly", precise_unit(0.5, precise::time::week.inv())}, + {"fortnight", precise::time::fortnight}, + {"yearleap", precise_unit(366.0, precise::time::day)}, // year + {"draconicyear", precise_unit(346.620075883, precise::time::day)}, + {"lunaryear", precise_unit(12.0, precise::time::mos)}, + + {"gon", precise::angle::gon}, + {"gon(grade)", precise::angle::gon}, + {"GON", precise::angle::gon}, + {u8"\u25A1^g", precise::angle::gon}, + {"^g", precise::angle::gon}, + {"grad", precise::angle::grad}, + {"gradians", precise::angle::grad}, + {"grade", precise::angle::grad}, + {"mil(angle)", precise_unit(0.0625, precise::angle::grad)}, + {"brad", precise::angle::brad}, + {"degF", precise::degF}, + {"degsF", precise::degF}, + {"[DEGF]", precise::degF}, + {u8"\u2109", precise::degF}, // direct unicode symbol + {"degR", precise::temperature::degR}, + {"degsR", precise::temperature::degR}, + {"[DEGR]", precise::temperature::degR}, + {u8"\u00B0R", precise::temperature::degR}, + {u8"\u00B0r", precise::temperature::reaumur}, + {"\xB0R", precise::temperature::degR}, + {"\xB0r", precise::temperature::reaumur}, + {"[DEGRE]", precise::temperature::reaumur}, + {"degRe", precise::temperature::reaumur}, + {"degsRe", precise::temperature::reaumur}, + {u8"degR\u00e9aumur", precise::temperature::reaumur}, + {u8"\u00B0R\u00e9", precise::temperature::reaumur}, + {u8"\u00B0Re", precise::temperature::reaumur}, + {u8"\u00B0Ra", precise::temperature::degR}, + {"\xB0Re", precise::temperature::reaumur}, + {"\xB0Ra", precise::temperature::degR}, + {"degReaumur", precise::temperature::reaumur}, + {"reaumur", precise::temperature::reaumur}, + {u8"r\u00e9aumur", precise::temperature::reaumur}, + {"degFahrenheit", precise::degF}, + {"degRankine", precise::temperature::degR}, + {"degrankine", precise::temperature::degR}, + {"rankine", precise::temperature::degR}, + {"oF", precise::degF}, + // this is two strings since F could be interpreted as hex and I don't + // want it to be + {"\xB0" + "F", + precise::degF}, + {u8"\u00b0F", precise::degF}, + {"fahrenheit", precise::degF}, + {"mi", precise::mile}, + {"mi_i", precise::mile}, + {"league", precise::i::league}, + {"lea", precise::i::league}, + {"[MI_I]", precise::mile}, + {"miI", precise::mile}, + {"smi", precise::mile* precise::mile}, + {"smi_us", precise::us::mile* precise::us::mile}, + {"[SMI_US]", precise::us::mile* precise::us::mile}, + {"mile", precise::mile}, + {"mile_i", precise::mile}, + {"miles_i", precise::mile}, + {"srd_us", precise::us::rod* precise::us::rod}, + {"[SRD_US]", precise::us::rod* precise::us::rod}, + {"sct", precise::us::section}, + {"[SCT]", precise::us::section}, + {"section", precise::us::section}, + {"homestead", precise::us::homestead}, + {"twp", precise::us::township}, + {"[TWP]", precise::us::township}, + {"township", precise::us::township}, + + + {"astronomicalunitBIPM2006", precise::distance::au_old}, + {"auold", precise::distance::au_old}, + {"ua", precise::distance::au_old}, + {"FEU", precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, + {"TEU", precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, + {"fortyfootequivalent", + precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, + {"twentyfootequivalent", + precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, {"acre", precise::acre}, {"acr", precise::acre}, {"ac", precise::acre}, @@ -1329,52 +1743,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Gasolineat15.5C", precise_unit(739.33, precise::kg / precise::m.pow(3))}, {"rood", precise_unit(0.25, precise::imp::acre)}, - {"are", precise::area::are}, - {"ar", precise::area::are}, - {"AR", precise::area::are}, - {"hectare", precise::area::hectare}, - {"barn", precise::area::barn}, - {"b", precise::area::barn}, - {"BRN", precise::area::barn}, - {"ha", precise::area::hectare}, // porous solid permeability {"darcy", precise_unit(9.869233e-13, precise::m.pow(2))}, - {"mW", precise::electrical::mW}, - {"milliwatt", precise::electrical::mW}, - {"puW", precise::electrical::puMW / precise::mega}, - {"puMW", precise::electrical::puMW}, - {"puMVA", precise::electrical::puMW}, - {"pumw", precise::electrical::puMW}, - {"pumegawatt", precise::electrical::puMW}, - {"puV", precise::electrical::puV}, - {"puvolt", precise::electrical::puV}, - {"puA", precise::electrical::puA}, - {"puamp", precise::electrical::puA}, - {"mA", precise::electrical::mA}, - {"milliamp", precise::electrical::mA}, - {"kV", precise::electrical::kV}, - {"kilovolt", precise::electrical::kV}, - {"abvolt", precise::cgs::abVolt}, - {"abV", precise::cgs::abVolt}, - {"statvolt", precise::cgs::statV}, - {"stV", precise::cgs::statV}, - {"erg", precise::cgs::erg}, - {"ERG", precise::cgs::erg}, - {"dyn", precise::cgs::dyn}, - {"DYN", precise::cgs::dyn}, - {"dyne", precise::cgs::dyn}, - {"pond", precise::gm::pond}, {"$/gal", precise::currency / precise::gal}, - {"pu", precise::pu}, - {"perunit", precise::pu}, - {"flag", precise::iflag}, - {"eflag", precise::eflag}, - {"FLAG", precise::iflag}, - {"EFLAG", precise::eflag}, - {"puOhm", precise::pu* precise::ohm}, - {"puohm", precise::pu* precise::ohm}, - {"puHz", precise::electrical::puHz}, - {"puhertz", precise::electrical::puHz}, {"hp", precise::hp}, {"horsepower", precise::hp}, {"horsepower_i", precise::hp}, @@ -1415,7 +1786,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"hp(boiler)", precise::power::hpS}, {"mph", precise::mph}, {"mileperhour", precise::mph}, - {"kph", precise::km / precise::hr}, + {"nauticalmile", precise::nautical::mile}, {"nmile", precise::nautical::mile}, {"nauticalmile_i", precise::nautical::mile}, @@ -1428,6 +1799,11 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"nmi_i", precise::nautical::mile}, {"[NMI_I]", precise::nautical::mile}, {"fth", precise::nautical::fathom}, + {"fath", precise::nautical::fathom}, + {"fth_us", precise::nautical::fathom}, + {"fthus", precise::nautical::fathom}, + {"[FTH_US]", precise::nautical::fathom}, + {"fathom_us", precise::nautical::fathom}, {"fathom", precise::nautical::fathom}, {"fathom_i", precise::nautical::fathom}, {"fathoms_i", precise::nautical::fathom}, @@ -1444,12 +1820,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"fps", precise::ft / precise::s}, {"fpm", precise::ft / precise::min}, {"fph", precise::ft / precise::hr}, - {"mps", precise::m / precise::s}, - {"eV", precise::energy::eV}, - {"bev", precise_unit(1e9, precise::energy::eV)}, - {"Ry", precise_unit(13.60583, precise::energy::eV)}, // Rydberg - {"electronvolt", precise::energy::eV}, - {"electronVolt", precise::energy::eV}, {"cal", precise::cal}, {"smallcalorie", precise::cal}, {"Cal", precise::energy::kcal}, @@ -1488,7 +1858,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"cal_th", precise::energy::cal_th}, {"CAL_TH", precise::energy::cal_th}, {"calorie_th", precise::energy::cal_th}, - {"cal", precise::cal}, {"calorie", precise::cal}, {"kcal", precise::energy::kcal}, {"kCal", precise::energy::kcal}, @@ -1542,13 +1911,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Mton", precise_unit(1000000.0, precise::energy::ton_tnt)}, {"Gton", precise_unit(1000000000.0, precise::energy::ton_tnt)}, // Gigatonne carbon - {"GtC", precise_unit(1000000000.0, precise::t, commodities::carbon)}, - {"hartree", precise::energy::hartree}, - {"Eh", precise::energy::hartree}, // this could be confused with - // Exa-hour, but not likely - {"E_h", precise::energy::hartree}, // this could be confused with - // Exa-hour, but not likely - {"Ha", precise::energy::hartree}, + {"C90", precise::conventional::coulomb90}, {"ohm90", precise::conventional::ohm90}, {u8"\u03A990", precise::conventional::ohm90}, // Greek Omega @@ -1583,8 +1946,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"literofgasolineequivalent", precise::energy::lge}, {"foeb", precise::energy::foeb}, {"fueloilequivalentof1barrel", precise::energy::foeb}, - {"fueloilequivalentof1kiloliter", - precise::energy::foeb / precise::us::barrel* precise::m.pow(3)}, + {"CFM", precise::other::CFM}, {"CFS", precise::ft.pow(3) / precise::s}, {"cfm", precise::other::CFM}, @@ -1593,13 +1955,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"gps", precise::gal / precise::s}, {"gpm", precise::gal / precise::min}, {"gph", precise::gal / precise::hr}, - {"atm", precise::pressure::atm}, - {"ATM", precise::pressure::atm}, - {"atmos", precise::pressure::atm}, - {"atmosphere", precise::pressure::atm}, - {"standardatmosphere", precise::pressure::atm}, - {"stdatmosphere", precise::pressure::atm}, - {"stdatm", precise::pressure::atm}, {"att", precise::pressure::att}, {"at", precise::pressure::att}, {"technicalatmosphere", precise::pressure::att}, @@ -1649,46 +2004,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"inch{water}", precise::pressure::inH2O}, {"inchofwatercolumn", precise::pressure::inH2O}, {"iwg", precise::pressure::inH2O}, - {"mmHg", precise::pressure::mmHg}, - {"mm[Hg]", precise::pressure::mmHg}, - {"MM[HG]", precise::pressure::mmHg}, - {"cmHg", precise::ten* precise::pressure::mmHg}, - {"cm[Hg]", precise::ten* precise::pressure::mmHg}, - {"CM[HG]", precise::ten* precise::pressure::mmHg}, - {"mHg", precise::kilo* precise::pressure::mmHg}, - {"m*Hg", precise::kilo* precise::pressure::mmHg}, - {"m[Hg]", precise::kilo* precise::pressure::mmHg}, - {"M[HG]", precise::kilo* precise::pressure::mmHg}, - {"m[HG]", precise::kilo* precise::pressure::mmHg}, - {"metermercury", precise::kilo* precise::pressure::mmHg}, - {"meterofmercury", precise::kilo* precise::pressure::mmHg}, - {"meter{mercury}", precise::kilo* precise::pressure::mmHg}, - {"meter(mercury)", precise::kilo* precise::pressure::mmHg}, - {"metersofmercury", precise::kilo* precise::pressure::mmHg}, - {"meterofmercurycolumn", precise::kilo* precise::pressure::mmHg}, - {"metersofmercurycolumn", precise::kilo* precise::pressure::mmHg}, - {"mmH2O", precise::pressure::mmH2O}, - {"mm[H2O]", precise::pressure::mmH2O}, - {"MM[H2O]", precise::pressure::mmH2O}, - {"cmH2O", precise::ten* precise::pressure::mmH2O}, - {"cm[H2O]", precise::ten* precise::pressure::mmH2O}, - {"CM[H2O]", precise::ten* precise::pressure::mmH2O}, - {"mH2O", precise::kilo* precise::pressure::mmH2O}, - {"m*H2O", precise::kilo* precise::pressure::mmH2O}, - {"m[H2O]", precise::kilo* precise::pressure::mmH2O}, - {"M[H2O]", precise::kilo* precise::pressure::mmH2O}, - {"meterwater", precise::kilo* precise::pressure::mmH2O}, - {"meterofwater", precise::kilo* precise::pressure::mmH2O}, - {"metersofwater", precise::kilo* precise::pressure::mmH2O}, - {"meters{water}", precise::kilo* precise::pressure::mmH2O}, - {"meter{water}", precise::kilo* precise::pressure::mmH2O}, - {"meters(water)", precise::kilo* precise::pressure::mmH2O}, - {"meter(water)", precise::kilo* precise::pressure::mmH2O}, - {"meterofwatercolumn", precise::kilo* precise::pressure::mmH2O}, - {"metersofwatercolumn", precise::kilo* precise::pressure::mmH2O}, - {"torr", precise::pressure::torr}, - {"Torr", precise::pressure::torr}, - {"TORR", precise::pressure::torr}, + {"quad", precise::energy::quad}, {"therm", precise::energy::therm_ec}, {"thm", precise::energy::therm_ec}, @@ -1699,25 +2015,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"thm_us", precise::energy::therm_us}, {"therm_br", precise::energy::therm_br}, {"thermie", precise::MTS::thermie}, - {"$/kWh", precise::currency / precise::kWh}, - {"kWh", precise::kWh}, - {"kwh", precise::kWh}, - {"Wh", precise::W* precise::h}, - {"Wa", precise::W* precise::yr}, - {"kilowatthour", precise::kWh}, - {"MWh", precise::MWh}, - {"megawatthour", precise::MWh}, - {"M$", precise::other::MegaBuck}, - {"mil$", precise::other::MegaBuck}, - {"B$", precise::other::GigaBuck}, - {"bil$", precise::other::GigaBuck}, - {"L", precise::L}, // preferred US notation - {"l", precise::L}, - {"LT", precise::L}, - {"liter", precise::L}, - {"litre", precise::L}, - {"mL", precise::mL}, // preferred US notation - {"ml", precise::mL}, {"gal", precise::gal}, {"gal_us", precise::us::gallon}, {"[GAL_US]", precise::us::gallon}, @@ -1767,21 +2064,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"pound-troy", precise::troy::pound}, {"pound", precise::lb}, {"bag", precise_unit(96.0, precise::lb)}, - {"ton", precise::ton}, - {"ton(short)", precise::ton}, - {"t", precise::mass::tonne}, // metric tonne - {"mt", precise::mass::tonne}, // metric tonne - {"ton_m", precise::mass::tonne}, - {"tonne", precise::mass::tonne}, - {"TNE", precise::mass::tonne}, - {"Da", precise::mass::Da}, - {"dalton", precise::mass::Da}, - {"u", precise::mass::u}, - {"amu", precise::mass::u}, - {"AMU", precise::mass::u}, - {"unifiedatomicmassunit", precise::mass::u}, - {"atomicmassunit", precise::mass::u}, - {"longton", precise_unit(2240.0, precise::lb)}, + {"tonc", precise::energy::tonc}, // ton cooling {"ton(refrigeration)", precise::energy::tonc}, // ton cooling {"tonofrefrigeration", precise::energy::tonc}, // ton cooling @@ -1795,42 +2078,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"tonhour{refrigeration}", precise::energy::tonhour}, {"RT", precise::energy::tonc}, // ton cooling {"TR", precise::energy::tonc}, // ton cooling - // {"tons", precise::energy::tonc* precise::s}, - {"tonh", precise::energy::tonc* precise::hr}, - {"angstrom", precise::distance::angstrom}, - {u8"\u00C5ngstr\u00F6m", precise::distance::angstrom}, - {"\xE5ngstr\xF6m", precise::distance::angstrom}, - {u8"\u00E5ngstr\u00F6m", precise::distance::angstrom}, - {"Ao", precise::distance::angstrom}, - {"AO", precise::distance::angstrom}, - {u8"\u00C5", precise::distance::angstrom}, - {u8"A\u02DA", precise::distance::angstrom}, - {"\xC5", precise::distance::angstrom}, - {u8"\u212B", precise::distance::angstrom}, // unicode - {"bps", precise::bit / precise::s}, - {"baud", precise::bit / precise::s}, - {"Bd", precise::bit / precise::s}, - {"BD", precise::bit / precise::s}, - {"bit", precise::bit}, - {"BIT", precise::bit}, - {"bit_s", precise::data::bit_s}, - {"bit-s", precise::data::bit_s}, - {"BIT_S", precise::data::bit_s}, - {"bit-logarithmic", precise::data::bit_s}, - {"bitlogarithmic", precise::data::bit_s}, - {"logbit", precise::data::bit_s}, - // b is for unit barn - // B is for bel - {"Bps", precise::B / precise::s}, - {"byte", precise::B}, - {"By", precise::B}, - {"BY", precise::B}, - {"kB", precise::kB}, - {"MB", precise::MB}, - {"GB", precise::GB}, - {"floatingpointoperation", precise::computation::flop}, - {"flops", precise::computation::flops}, - {"mips", precise::computation::mips}, + // {"tons", precise::energy::tonc* precise::s}, + {"tonh", precise::energy::tonc* precise::hr}, {"bu", precise::us::dry::bushel}, {"bushel", precise::us::dry::bushel}, {"oz fl", precise::us::floz}, @@ -1847,18 +2096,17 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"fluiddram_us", precise_unit(1.0 / 8.0, precise::us::floz)}, {"liquidounce", precise::us::floz}, {"liquidounce_us", precise::us::floz}, + {"liquiddram", precise::us::dram}, + {"liquiddram_us", precise::us::dram}, {"jigger", precise_unit(1.5, precise::us::floz)}, {"fdr_us", precise::us::dram}, {"[FDR_US]", precise::us::dram}, - {"fluiddram_us", precise::us::dram}, - {"liquiddram_us", precise::us::dram}, + {"min_us", precise::us::minim}, {"[MIN_US]", precise::us::minim}, {"minim_us", precise::us::minim}, {"ouncefl", precise::us::floz}, - {"fluidounce", precise::us::floz}, {"fluidoz", precise::us::floz}, - {"liquidounce", precise::us::floz}, {"liquidoz", precise::us::floz}, {"oz", precise::oz}, {"OZ", precise::oz}, @@ -1916,9 +2164,11 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ton_av", precise::av::ton}, {"stone", precise::av::stone}, {"stone_br", precise::av::stone}, + {"ton", precise::ton}, + {"ton(short)", precise::ton}, + {"longton", precise_unit(2240.0, precise::lb)}, {"lton_av", precise::av::longton}, {"[LTON_AV]", precise::av::longton}, - {"longton", precise::av::longton}, {"longton_av", precise::av::longton}, {"ton(long)", precise::av::longton}, {"longton_br", precise::av::longton}, @@ -1927,7 +2177,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"[OZ_TR]", precise::troy::oz}, {"ounce_tr", precise::troy::oz}, {"pound_tr", precise::troy::pound}, - {"lb_tr", precise::troy::pound}, {"pwt_tr", precise::troy::pennyweight}, {"pwt", precise::troy::pennyweight}, {"[PWT_TR]", precise::troy::pennyweight}, @@ -1952,11 +2201,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"oz_m", precise::apothecaries::metric_ounce}, {"[OZ_M]", precise::apothecaries::metric_ounce}, {"ounce_m", precise::apothecaries::metric_ounce}, - {"[car_m]", precise::metric::carat}, - {"ct_m", precise::metric::carat}, - {"[CAR_M]", precise::metric::carat}, - {"carat_m", precise::metric::carat}, - {"photometriccarat", precise::metric::carat}, {"car_Au", precise_unit{1.0 / 24.0, precise::one, commodities::gold}}, {"carau", precise_unit{1.0 / 24.0, precise::one, commodities::gold}}, {"[CAR_AU]", precise_unit{1.0 / 24.0, precise::one, commodities::gold}}, @@ -1965,40 +2209,16 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ounce", precise::oz}, {"ounce_av", precise::av::ounce}, {"ounce_i", precise::av::ounce}, - {"g", precise::g}, - {"gm", precise::g}, - {"gamma", precise::micro* precise::g}, - {u8"\u1D6FE", precise::micro* precise::g}, - {"gamma{mass}", precise::micro* precise::g}, - {"gamma(mass)", precise::micro* precise::g}, - {"gamma{volume}", precise::micro* precise::L}, - {"gamma(volume)", precise::micro* precise::L}, - {"lambda{volume}", precise::micro* precise::L}, - {"lambda(volume)", precise::micro* precise::L}, - {"gamma(geo)", - precise::nano* precise::T}, // two different uses of gamma - {"gamma{geo}", - precise::nano* precise::T}, // two different uses of gamma - {"gf", precise::g* constants::g0.as_unit()}, - {"gravity", constants::g0.as_unit()}, // force of gravity - {"geopotential", constants::g0.as_unit()}, // force of gravity - {"gp", constants::g0.as_unit()}, // force of gravity - {"force", constants::g0.as_unit()}, // force of gravity - {"frc", constants::g0.as_unit()}, // force of gravity - {"kp", precise::kilo* precise::gm::pond}, + // this is probably more common than kilopoise {"kipf", precise::kilo* precise::lbf}, {"kipforce", precise::kilo* precise::lbf}, - {"tonforce_m", precise::mass::tonne* constants::g0.as_unit()}, - {"tf", precise::mass::tonne* constants::g0.as_unit()}, {"tonforce(long)", precise::av::longton* constants::g0.as_unit()}, {"tonforce(short)", precise::av::ton* constants::g0.as_unit()}, {"tonforce_us", precise::av::ton* constants::g0.as_unit()}, {"tonforce_br", precise::av::longton* constants::g0.as_unit()}, {"tonf_us", precise::av::ton* constants::g0.as_unit()}, {"tonf_br", precise::av::longton* constants::g0.as_unit()}, - {"hyl", precise::gm::hyl}, - {"GF", precise::g* constants::g0.as_unit()}, // gram-force vs GF {"sn", precise::MTS::sthene}, {"sthene", precise::MTS::sthene}, {"pz", precise::MTS::pieze}, @@ -2010,13 +2230,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ozf", precise::av::ozf}, {"poundforce_us", precise::lbf}, {"slug", precise::av::slug}, - {"gram", precise::g}, - {"mg", precise::mg}, - {"mcg", precise::micro* precise::g}, - {"milligram", precise::mg}, - {"carat", precise_unit(200.0, precise::mg)}, - {"karat", precise_unit(200.0, precise::mg)}, - {"ct", precise_unit(200.0, precise::mg)}, // {"kt", precise_unit(200.0, precise::mg)}, {"cup", precise::us::cup}, {"cup_us", precise::us::cup}, @@ -2132,29 +2345,6 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"tbsp_br", precise::imp::tbsp}, {"tsp_br", precise::imp::tsp}, {"cup_br", precise::imp::cup}, - {"EER", precise::energy::EER}, - {"ppv", precise::one}, // parts per volume - {"ppth", precise::other::ppm* precise::kilo}, - {"PPTH", precise::other::ppm* precise::kilo}, - {"ppm", precise::other::ppm}, - {"ppmv", precise::other::ppm}, - {"PPM", precise::other::ppm}, - {"[PPM]", precise::other::ppm}, - {"partspermillion", precise::other::ppm}, - {"ppb", precise::other::ppb}, - {"ppbv", precise::other::ppb}, - {"PPB", precise::other::ppb}, - {"[PPB]", precise::other::ppb}, - {"partsperbillion", precise::other::ppb}, - {"ppt", precise::other::ppb* precise::milli}, - {"pptv", precise::other::ppb* precise::milli}, - {"pptr", precise::other::ppb* precise::milli}, - {"PPTR", precise::other::ppb* precise::milli}, - {"[PPTR]", precise::other::ppb* precise::milli}, - {"partspertrillion", precise::other::ppb* precise::milli}, - {"ppq", precise::other::ppb* precise::micro}, - {"ppqv", precise::other::ppb* precise::micro}, - {"partsperquadrillion", precise::other::ppb* precise::micro}, {"[lne]", precise::typographic::american::line}, {"[LNE]", precise::typographic::american::line}, {"line", precise::typographic::american::line}, @@ -2199,194 +2389,10 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"span(cloth)", precise::textile::span}, {"finger(cloth)", precise::textile::finger}, {"nail(cloth)", precise::textile::nail}, - {"PRU", precise::clinical::pru}, - {"peripheralvascularresistanceunit", precise::clinical::pru}, - {"peripheralresistanceunit", precise::clinical::pru}, - {"potentialvorticityunit", - precise_unit( - detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), - 1e-6)}, - {"PVU", - precise_unit( - detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), - 1e-6)}, - // unit of thermal resistance used in describing the insulating value of - // clothing; the amount of thermal resistance needed to maintain in - // comfort a resting subject in a normally ventilated room (air movement - // 10 cm/sec) at a temperature of 20 degrees C and a humidity less than - // 50% - {"clo", - precise_unit(1.55e-1, precise::K* precise::m.pow(2) / precise::W)}, - {"[MET]", precise::clinical::met}, - {"MET", precise::clinical::met}, - {"metabolicEquivalentofTask", precise::clinical::met}, - {"metabolicequivalents", precise::clinical::met}, - {"[wood'U]", precise::clinical::woodu}, - {"HRU", precise::clinical::woodu}, - {"hybridreferenceunit", precise::clinical::woodu}, - {"[WOOD'U]", precise::clinical::woodu}, - {"woodunit", precise::clinical::woodu}, - {"dpt", precise::clinical::diopter}, - {"diop", precise::clinical::diopter}, - {"[DIOP]", precise::clinical::diopter}, - {"diopter", precise::clinical::diopter}, - {"dioptre", precise::clinical::diopter}, - {"diopter(lens)", precise::clinical::diopter}, - {"[p'diop]", precise::clinical::prism_diopter}, - {"pdiop", precise::clinical::prism_diopter}, - {"[P'DIOP]", precise::clinical::prism_diopter}, - {"PD", precise::clinical::prism_diopter}, - {"prismdiopter", precise::clinical::prism_diopter}, - {"prismdiopter(magnifyingpower)", precise::clinical::prism_diopter}, - {"%slope", precise::clinical::prism_diopter}, - {"%[slope]", precise::clinical::prism_diopter}, - {"%[SLOPE]", precise::clinical::prism_diopter}, - {"percentofslope", precise::clinical::prism_diopter}, - {"drp", precise::clinical::drop}, - {"[drp]", precise::clinical::drop}, - {"[DRP]", precise::clinical::drop}, - {"drop", precise::clinical::drop}, - {"drop(1/20milliliter)", precise::clinical::drop}, - {"drop-metric", precise::clinical::drop}, - {"drop_m", precise::clinical::drop}, - {"drop-metric(1/20mL)", precise::clinical::drop}, - {"Ch", precise::clinical::charriere}, - {"[CH]", precise::clinical::charriere}, - {"french(cathetergauge)", precise::clinical::charriere}, - {"mesh_i", precise::clinical::mesh}, - {"[MESH_I]", precise::clinical::mesh}, - {"mesh", precise::clinical::mesh}, - {"meshes", precise::clinical::mesh}, + {"smoot", precise::distance::smoot}, {"[SMOOT]", precise::distance::smoot}, - {"ASD", precise::special::ASD}, - {"[m/s2/Hz^(1/2)]", precise::special::ASD}, - {"[M/s2/HZ^(1/2)]", precise::special::ASD}, - {"Hz^(1/2)", precise::special::rootHertz}, - {"HZ^(1/2)", precise::special::rootHertz}, - {"squarerootofhertz", precise::special::rootHertz}, - {"squareroothertz", precise::special::rootHertz}, - {"roothertz", precise::special::rootHertz}, - // capitalized version is needed since this is also a generated unit - {"rootHertz", precise::special::rootHertz}, - {"B", precise::data::byte}, - {"bel", precise::log::bel}, - {"dB", precise::log::dB}, - {"decibel", precise::log::dB}, - {"decibels", precise::log::dB}, - {"DB", precise::log::dB}, - {"Np", precise::log::neper}, - {"NEP", precise::log::neper}, - {"nepers", precise::log::neper}, - {"neper", precise::log::neper}, - {"SPL", precise_unit(2 * 1e-5, precise::pascal)}, - {"soundpressurelevel", precise_unit(2 * 1e-5, precise::pascal)}, - {"soundpressure", precise_unit(2 * 1e-5, precise::pascal)}, - {"BSPL", precise::log::B_SPL}, - {"B[SPL]", precise::log::B_SPL}, - {"B(SPL)", precise::log::B_SPL}, - {"belSPL", precise::log::B_SPL}, - {"belsoundpressure", precise::log::B_SPL}, - {"dB[SPL]", precise::log::dB_SPL}, - {"decibel(SPL)", precise::log::dB_SPL}, - {"DB[SPL]", precise::log::dB_SPL}, - {"DBSPL", precise::log::dB_SPL}, - {"B[V]", precise::log::B_V}, - {"B(V)", precise::log::B_V}, - {"BV", precise::log::B_V}, - {"Bv", precise_unit(0.775, precise::log::B_V)}, - {"Bvolt", precise::log::B_V}, - {"belvolt", precise::log::B_V}, - {"belV", precise::log::B_V}, - {"dB[V]", precise::log::dB_V}, - {"decibelV", precise::log::dB_V}, - {"dB(V)", precise::log::dB_V}, - {"DB[V]", precise::log::dB_V}, - {"B[mV]", precise::log::B_mV}, - {"B(mV)", precise::log::B_mV}, - {"belmillivolt", precise::log::B_mV}, - {"belmV", precise::log::B_mV}, - {"dB[mV]", precise::log::dB_mV}, - {"dB(mV)", precise::log::dB_mV}, - {"B[MV]", precise::log::B_mV}, - {"DB[MV]", precise::log::dB_mV}, - {"B[uV]", precise::log::B_uV}, - {"dB[uV]", precise::log::dB_uV}, - {"decibelmicrovolt", precise::log::dB_uV}, - {"B[UV]", precise::log::B_uV}, - {"B(uV)", precise::log::B_uV}, - {"BuV", precise::log::B_uV}, - {"belmicrovolt", precise::log::B_uV}, - {"DB[UV]", precise::log::dB_uV}, - {"B[10.nV]", precise::log::B_10nV}, - {"B(10nV)", precise::log::B_10nV}, - {"bel10nanovolt", precise::log::B_10nV}, - {"dB[10.nV]", precise::log::dB_10nV}, - {"dB[10*nV]", precise::log::dB_10nV}, - {"decibel10nanovolt", precise::log::B_10nV}, - {"B[10*NV]", precise::log::B_10nV}, - {"B[10*nV]", precise::log::B_10nV}, - {"DB[10*NV]", precise::log::dB_10nV}, - {"B[W]", precise::log::B_W}, - {"B(W)", precise::log::B_W}, - {"belwatt", precise::log::B_W}, - {"belW", precise::log::B_W}, - {"dB[W]", precise::log::dB_W}, - {"DB[W]", precise::log::dB_W}, - {"B[kW]", precise::log::B_kW}, - {"B(kW)", precise::log::B_kW}, - {"DB[kW]", precise::log::dB_kW}, - {"B[KW]", precise::log::B_kW}, - {"belkilowatt", precise::log::B_kW}, - {"belkW", precise::log::B_kW}, - {"DB[KW]", precise::log::dB_kW}, - {"dBZ", precise::log::dBZ}, - {"BZ", precise::log::BZ}, - {"[S]", precise::laboratory::svedberg}, - {"svedbergunit", precise::laboratory::svedberg}, - {"HPF", precise::laboratory::HPF}, - {"highpowerfield", precise::laboratory::HPF}, - {"LPF", precise::laboratory::LPF}, - {"lowpowerfield", precise::laboratory::LPF}, - {"[arb'U]", precise::laboratory::arbU}, - {"[ARB'U]", precise::laboratory::arbU}, - {"[IU]", precise::laboratory::IU}, - {"[iU]", precise::laboratory::IU}, - {"dobson", - precise_unit(446.2, precise::micro* precise::mol / precise::m.pow(2))}, - {"DU", - precise_unit(446.2, precise::micro* precise::mol / precise::m.pow(2))}, - {"st", precise::volume::stere}, - {"stere", precise::volume::stere}, - {"STR", precise::volume::stere}, - {"[hnsf'U]", precise::clinical::hounsfield}, - {"[HNSF'U]", precise::clinical::hounsfield}, - {"[PFU]", precise::laboratory::PFU}, - {"PFU", precise::laboratory::PFU}, - {"plaqueformingunits", precise::laboratory::PFU}, - {"[Lf]", precise::laboratory::Lf}, - {"[LF]", precise::laboratory::Lf}, - {"[IR]", precise::laboratory::IR}, - {"[IR]", precise::laboratory::IR}, - {"50%tissuecultureinfectiousdose", - precise_unit(0.69, precise::laboratory::PFU)}, - {"50%cellcultureinfectiousdose", - precise_unit(0.69, precise::laboratory::PFU, commodities::cell)}, - {"50%embryoinfectiousdose", - precise_unit(0.69, precise::laboratory::PFU, commodities::embryo)}, - {"TCID50", precise_unit(0.69, precise::laboratory::PFU)}, - {"CCID50", - precise_unit(0.69, precise::laboratory::PFU, commodities::cell)}, - {"EID50", - precise_unit(0.69, precise::laboratory::PFU, commodities::embryo)}, - {"[hp'_X]", precise_unit(1.0, precise::log::neglog10)}, - {"[HP'_X]", precise_unit(1.0, precise::log::neglog10)}, - {"[hp'_C]", precise_unit(1.0, precise::log::neglog100)}, - {"[HP'_C]", precise_unit(1.0, precise::log::neglog100)}, - {"[hp'_M]", precise_unit(1.0, precise::log::neglog1000)}, - {"[HP'_M]", precise_unit(1.0, precise::log::neglog1000)}, - {"[hp'_Q]", precise_unit(1.0, precise::log::neglog50000)}, - {"[HP'_Q]", precise_unit(1.0, precise::log::neglog50000)}, + {"[hp_X]", precise_unit(1.0, precise::log::neglog10, commodities::Hahnemann)}, {"[HP_X]", From f47d73cfe81a2c8aa98c58ed9eaa5d118c4f2dcb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 21:46:20 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- test/test_defined_units.cpp | 21 ++++++++++--------- units/unit_definitions.hpp | 1 - units/units_conversion_maps.hpp | 36 ++++++++++++++++----------------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/test/test_defined_units.cpp b/test/test_defined_units.cpp index 18ab3828..25fba30a 100644 --- a/test/test_defined_units.cpp +++ b/test/test_defined_units.cpp @@ -5,14 +5,13 @@ See the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "units/units_conversion_maps.hpp" #include "test.hpp" +#include "units/units_conversion_maps.hpp" #include -TEST(unit_string_definitions, si_vector_length) +TEST(unit_string_definitions, si_vector_length) { - for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) - { + for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { EXPECT_TRUE(units::defined_unit_strings_si[ii].first != nullptr) << ii; if (units::defined_unit_strings_si[ii].first == nullptr) { break; @@ -35,7 +34,7 @@ TEST(unit_string_definitions, si_duplicates) { std::map testMap; for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { - if (units::defined_unit_strings_si[ii].first==nullptr) { + if (units::defined_unit_strings_si[ii].first == nullptr) { continue; } auto res = testMap.try_emplace( @@ -56,7 +55,8 @@ TEST(unit_string_definitions, customary_duplicates) auto res = testMap.try_emplace( units::defined_unit_strings_customary[ii].first, units::defined_unit_strings_customary[ii].second); - EXPECT_TRUE(res.second) << "duplicate unit string " + EXPECT_TRUE(res.second) + << "duplicate unit string " << units::defined_unit_strings_customary[ii].first; } } @@ -75,14 +75,15 @@ TEST(unit_string_definitions, combined_duplicates) << units::defined_unit_strings_si[ii].first; } - for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { if (units::defined_unit_strings_customary[ii].first == nullptr) { continue; } auto res = testMap.try_emplace( units::defined_unit_strings_customary[ii].first, units::defined_unit_strings_customary[ii].second); - EXPECT_TRUE(res.second) << "duplicate unit string " << ii << " " - << units::defined_unit_strings_customary[ii].first; + EXPECT_TRUE(res.second) + << "duplicate unit string " << ii << " " + << units::defined_unit_strings_customary[ii].first; } -} \ No newline at end of file +} diff --git a/units/unit_definitions.hpp b/units/unit_definitions.hpp index 9608292c..e4478f2e 100644 --- a/units/unit_definitions.hpp +++ b/units/unit_definitions.hpp @@ -1923,5 +1923,4 @@ namespace detail { } } // namespace detail - } // namespace UNITS_NAMESPACE diff --git a/units/units_conversion_maps.hpp b/units/units_conversion_maps.hpp index 58d38f21..2610c48e 100644 --- a/units/units_conversion_maps.hpp +++ b/units/units_conversion_maps.hpp @@ -369,8 +369,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"grampercent", precise_unit(10.0, precise::g / precise::L)}, {"G%", precise_unit(10.0, precise::g / precise::L)}, {"U", precise::laboratory::enzyme_unit}, - // this may not be best but it doesn't actually conflict with anything else right now - {"units", precise::laboratory::enzyme_unit}, + // this may not be best but it doesn't actually conflict with anything + // else right now + {"units", precise::laboratory::enzyme_unit}, {"enzymeunit", precise::laboratory::enzyme_unit}, {"A", precise::A}, {"amp", precise::A}, @@ -863,7 +864,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ERR", precise::error}, {"ERROR", precise::error}, {"error", precise::error}, - + {"Gy", precise::Gy}, {"gy", precise::Gy}, {"GY", precise::Gy}, @@ -1025,7 +1026,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"E_h", precise::energy::hartree}, // this could be confused with // Exa-hour, but not likely {"Ha", precise::energy::hartree}, - + {"fueloilequivalentof1kiloliter", precise::energy::foeb / precise::us::barrel* precise::m.pow(3)}, {"atm", precise::pressure::atm}, @@ -1106,7 +1107,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"AMU", precise::mass::u}, {"unifiedatomicmassunit", precise::mass::u}, {"atomicmassunit", precise::mass::u}, - + {"angstrom", precise::distance::angstrom}, {u8"\u00C5ngstr\u00F6m", precise::distance::angstrom}, {"\xE5ngstr\xF6m", precise::distance::angstrom}, @@ -1391,7 +1392,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"[HP'_Q]", precise_unit(1.0, precise::log::neglog50000)}, }}; - UNITS_CPP14_CONSTEXPR_OBJECT std::array< +UNITS_CPP14_CONSTEXPR_OBJECT std::array< std::pair, 979> defined_unit_strings_customary{{ @@ -1466,7 +1467,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"[FUR_US]", precise::us::furlong}, {"furlong_us", precise::us::furlong}, {"[FUR_I]", precise::us::furlong}, - + {"mi_us", precise::us::mile}, {"[MI_US]", precise::us::mile}, {"mile_us", precise::us::mile}, @@ -1714,8 +1715,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"twp", precise::us::township}, {"[TWP]", precise::us::township}, {"township", precise::us::township}, - - + {"astronomicalunitBIPM2006", precise::distance::au_old}, {"auold", precise::distance::au_old}, {"ua", precise::distance::au_old}, @@ -1786,7 +1786,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"hp(boiler)", precise::power::hpS}, {"mph", precise::mph}, {"mileperhour", precise::mph}, - + {"nauticalmile", precise::nautical::mile}, {"nmile", precise::nautical::mile}, {"nauticalmile_i", precise::nautical::mile}, @@ -1911,7 +1911,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Mton", precise_unit(1000000.0, precise::energy::ton_tnt)}, {"Gton", precise_unit(1000000000.0, precise::energy::ton_tnt)}, // Gigatonne carbon - + {"C90", precise::conventional::coulomb90}, {"ohm90", precise::conventional::ohm90}, {u8"\u03A990", precise::conventional::ohm90}, // Greek Omega @@ -1946,7 +1946,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"literofgasolineequivalent", precise::energy::lge}, {"foeb", precise::energy::foeb}, {"fueloilequivalentof1barrel", precise::energy::foeb}, - + {"CFM", precise::other::CFM}, {"CFS", precise::ft.pow(3) / precise::s}, {"cfm", precise::other::CFM}, @@ -2004,7 +2004,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"inch{water}", precise::pressure::inH2O}, {"inchofwatercolumn", precise::pressure::inH2O}, {"iwg", precise::pressure::inH2O}, - + {"quad", precise::energy::quad}, {"therm", precise::energy::therm_ec}, {"thm", precise::energy::therm_ec}, @@ -2064,7 +2064,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"pound-troy", precise::troy::pound}, {"pound", precise::lb}, {"bag", precise_unit(96.0, precise::lb)}, - + {"tonc", precise::energy::tonc}, // ton cooling {"ton(refrigeration)", precise::energy::tonc}, // ton cooling {"tonofrefrigeration", precise::energy::tonc}, // ton cooling @@ -2101,7 +2101,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"jigger", precise_unit(1.5, precise::us::floz)}, {"fdr_us", precise::us::dram}, {"[FDR_US]", precise::us::dram}, - + {"min_us", precise::us::minim}, {"[MIN_US]", precise::us::minim}, {"minim_us", precise::us::minim}, @@ -2209,7 +2209,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ounce", precise::oz}, {"ounce_av", precise::av::ounce}, {"ounce_i", precise::av::ounce}, - + // this is probably more common than kilopoise {"kipf", precise::kilo* precise::lbf}, {"kipforce", precise::kilo* precise::lbf}, @@ -2389,10 +2389,10 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"span(cloth)", precise::textile::span}, {"finger(cloth)", precise::textile::finger}, {"nail(cloth)", precise::textile::nail}, - + {"smoot", precise::distance::smoot}, {"[SMOOT]", precise::distance::smoot}, - + {"[hp_X]", precise_unit(1.0, precise::log::neglog10, commodities::Hahnemann)}, {"[HP_X]", From 79254faa86d5ffb5c806273914f872a0ccd0e71a Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 31 Mar 2022 14:52:28 -0700 Subject: [PATCH 3/5] update to use older emplace method in the tests --- test/test_defined_units.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_defined_units.cpp b/test/test_defined_units.cpp index 18ab3828..c215f81d 100644 --- a/test/test_defined_units.cpp +++ b/test/test_defined_units.cpp @@ -38,7 +38,7 @@ TEST(unit_string_definitions, si_duplicates) if (units::defined_unit_strings_si[ii].first==nullptr) { continue; } - auto res = testMap.try_emplace( + auto res = testMap.emplace( units::defined_unit_strings_si[ii].first, units::defined_unit_strings_si[ii].second); EXPECT_TRUE(res.second) << "duplicate si unit string " @@ -53,7 +53,7 @@ TEST(unit_string_definitions, customary_duplicates) if (units::defined_unit_strings_customary[ii].first == nullptr) { continue; } - auto res = testMap.try_emplace( + auto res = testMap.emplace( units::defined_unit_strings_customary[ii].first, units::defined_unit_strings_customary[ii].second); EXPECT_TRUE(res.second) << "duplicate unit string " @@ -68,7 +68,7 @@ TEST(unit_string_definitions, combined_duplicates) if (units::defined_unit_strings_si[ii].first == nullptr) { continue; } - auto res = testMap.try_emplace( + auto res = testMap.emplace( units::defined_unit_strings_si[ii].first, units::defined_unit_strings_si[ii].second); EXPECT_TRUE(res.second) << "duplicate si unit string " @@ -79,7 +79,7 @@ TEST(unit_string_definitions, combined_duplicates) if (units::defined_unit_strings_customary[ii].first == nullptr) { continue; } - auto res = testMap.try_emplace( + auto res = testMap.emplace( units::defined_unit_strings_customary[ii].first, units::defined_unit_strings_customary[ii].second); EXPECT_TRUE(res.second) << "duplicate unit string " << ii << " " From bbf8a4349c44a08f642a30774899f8f7c948820b Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 31 Mar 2022 15:10:39 -0700 Subject: [PATCH 4/5] fix clang-tidy warnings --- test/test_defined_units.cpp | 39 ++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/test/test_defined_units.cpp b/test/test_defined_units.cpp index f1e5d781..814c2088 100644 --- a/test/test_defined_units.cpp +++ b/test/test_defined_units.cpp @@ -11,7 +11,9 @@ SPDX-License-Identifier: BSD-3-Clause TEST(unit_string_definitions, si_vector_length) { - for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { + for (std::size_t ii = 0; + ii < units::defined_unit_strings_si.size(); + ++ii) { EXPECT_TRUE(units::defined_unit_strings_si[ii].first != nullptr) << ii; if (units::defined_unit_strings_si[ii].first == nullptr) { break; @@ -21,7 +23,8 @@ TEST(unit_string_definitions, si_vector_length) TEST(unit_string_definitions, customary_vector) { - for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size(); + ++ii) { EXPECT_TRUE(units::defined_unit_strings_customary[ii].first != nullptr) << ii; if (units::defined_unit_strings_customary[ii].first == nullptr) { @@ -33,49 +36,49 @@ TEST(unit_string_definitions, customary_vector) TEST(unit_string_definitions, si_duplicates) { std::map testMap; - for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { - if (units::defined_unit_strings_si[ii].first == nullptr) { + for (const auto &ustring: units::defined_unit_strings_si) { + if (ustring.first == nullptr) { continue; } auto res = testMap.emplace( - units::defined_unit_strings_si[ii].first, - units::defined_unit_strings_si[ii].second); + ustring.first, + ustring.second); EXPECT_TRUE(res.second) << "duplicate si unit string " - << units::defined_unit_strings_si[ii].first; + << ustring.first; } } TEST(unit_string_definitions, customary_duplicates) { std::map testMap; - for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { - if (units::defined_unit_strings_customary[ii].first == nullptr) { + for (const auto& ustring : units::defined_unit_strings_customary) { + if (ustring.first == nullptr) { continue; } auto res = testMap.emplace( - units::defined_unit_strings_customary[ii].first, - units::defined_unit_strings_customary[ii].second); + ustring.first, + ustring.second); EXPECT_TRUE(res.second) << "duplicate unit string " - << units::defined_unit_strings_customary[ii].first; + << ustring.first; } } TEST(unit_string_definitions, combined_duplicates) { std::map testMap; - for (int ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { - if (units::defined_unit_strings_si[ii].first == nullptr) { + for (const auto& ustring : units::defined_unit_strings_si) { + if (ustring.first == nullptr) { continue; } auto res = testMap.emplace( - units::defined_unit_strings_si[ii].first, - units::defined_unit_strings_si[ii].second); + ustring.first, ustring.second); EXPECT_TRUE(res.second) << "duplicate si unit string " - << units::defined_unit_strings_si[ii].first; + << ustring.first; } - for (int ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) { + for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) + { if (units::defined_unit_strings_customary[ii].first == nullptr) { continue; } From ee30e3b4bfbc797ba962b76da540e57441ecc297 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 22:10:59 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- test/test_defined_units.cpp | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/test/test_defined_units.cpp b/test/test_defined_units.cpp index 814c2088..64f51915 100644 --- a/test/test_defined_units.cpp +++ b/test/test_defined_units.cpp @@ -11,9 +11,7 @@ SPDX-License-Identifier: BSD-3-Clause TEST(unit_string_definitions, si_vector_length) { - for (std::size_t ii = 0; - ii < units::defined_unit_strings_si.size(); - ++ii) { + for (std::size_t ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) { EXPECT_TRUE(units::defined_unit_strings_si[ii].first != nullptr) << ii; if (units::defined_unit_strings_si[ii].first == nullptr) { break; @@ -36,15 +34,12 @@ TEST(unit_string_definitions, customary_vector) TEST(unit_string_definitions, si_duplicates) { std::map testMap; - for (const auto &ustring: units::defined_unit_strings_si) { + for (const auto& ustring : units::defined_unit_strings_si) { if (ustring.first == nullptr) { continue; } - auto res = testMap.emplace( - ustring.first, - ustring.second); - EXPECT_TRUE(res.second) << "duplicate si unit string " - << ustring.first; + auto res = testMap.emplace(ustring.first, ustring.second); + EXPECT_TRUE(res.second) << "duplicate si unit string " << ustring.first; } } @@ -55,12 +50,8 @@ TEST(unit_string_definitions, customary_duplicates) if (ustring.first == nullptr) { continue; } - auto res = testMap.emplace( - ustring.first, - ustring.second); - EXPECT_TRUE(res.second) - << "duplicate unit string " - << ustring.first; + auto res = testMap.emplace(ustring.first, ustring.second); + EXPECT_TRUE(res.second) << "duplicate unit string " << ustring.first; } } @@ -71,14 +62,12 @@ TEST(unit_string_definitions, combined_duplicates) if (ustring.first == nullptr) { continue; } - auto res = testMap.emplace( - ustring.first, ustring.second); - EXPECT_TRUE(res.second) << "duplicate si unit string " - << ustring.first; + auto res = testMap.emplace(ustring.first, ustring.second); + EXPECT_TRUE(res.second) << "duplicate si unit string " << ustring.first; } - for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size(); ++ii) - { + for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size(); + ++ii) { if (units::defined_unit_strings_customary[ii].first == nullptr) { continue; }