diff --git a/.gitignore b/.gitignore index a5309e6b..8fd14de8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build*/ +~$.xlsx diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e09955f..2a8b79b8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,12 +24,19 @@ repos: hooks: - id: remove-tabs - repo: https://github.com/codespell-project/codespell - rev: v2.2.5 + rev: v2.2.6 hooks: - id: codespell exclude: ^(test/|units/|docs/reference/) + args: + [ + "-w", + "--skip=*.csv", + "--ignore-words=./config/spelling_whitelist.txt", + "--exclude-file=./config/spelling_ignorelines.txt", + ] - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: mixed-line-ending - id: trailing-whitespace @@ -40,7 +47,7 @@ repos: - id: end-of-file-fixer - id: check-shebang-scripts-are-executable - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v16.0.6 + rev: v17.0.2 hooks: - id: clang-format types: diff --git a/config/cppcheck_suppressions.txt b/config/cppcheck_suppressions.txt index 8970af91..ab3dd71c 100644 --- a/config/cppcheck_suppressions.txt +++ b/config/cppcheck_suppressions.txt @@ -1,6 +1,5 @@ unusedFunction:units/x12_conv.cpp:1024 -unusedFunction:units/r20_conv.cpp:2738 unusedFunction:units/x12_conv.cpp:1009 passedByValue:units/units.cpp:224 -passedByValue:units/units.cpp:1156 -passedByValue:units/units.cpp:1173 +passedByValue:units/units.cpp:1160 +passedByValue:units/units.cpp:1177 diff --git a/config/spelling_ignorelines.txt b/config/spelling_ignorelines.txt new file mode 100644 index 00000000..e69de29b diff --git a/config/spelling_whitelist.txt b/config/spelling_whitelist.txt new file mode 100644 index 00000000..b25a4b3e --- /dev/null +++ b/config/spelling_whitelist.txt @@ -0,0 +1 @@ +smoot diff --git a/docs/details/commodities.rst b/docs/details/commodities.rst index 1b7385f4..0edad01f 100644 --- a/docs/details/commodities.rst +++ b/docs/details/commodities.rst @@ -2,4 +2,99 @@ Commodity Details ================== -The `precise_unit` class includes an unsigned 32 bit field that represents a commodity of some kind. +The `precise_unit` class includes an unsigned 32-bit unsigned integer that represents a commodity of some kind. + +This is a 32 bit code representing a commodity and possibly containers or form factor. + +So while there is some predefined structure to the commodities. Any user is free to use it however they like as it can be manipulated as 32 bit code however a user might wish to use it. The conversion to and from string is governed by the following rules. + +The high order bit(31) is a power, either 1 or -1. So a 1 in high bit represents an inverse commodity, for example a unit of `$/oz` of gold would have an inverse power of gold, while the `$/oz` would be in the `precise_unit`. Upon division all bits in the commodity are inverted. + + +Control code +---------------- + +bits 29 and 30 are control codes +`00` is a normal commodity +`01` is a normal commodity with form factor code +`10` is a direct definitions +`11` is a custom commodity defined in a map storage + +Direct definitions +============================ +The direct definitions define a set of codes that are defined in a couple different methods + +The next 3 bits define which method + +`000` short strings, 5 lower case characters+`_`+'{|}~' (ascii codes 95-126) +`001` 3 byte alpha numeric code +`010` 6 character hex code +`011` 4 byte code ascii code 32-95 [numbers+upper case+punctuation] +`100` short strings, 5 upper case characters+@[\]^_' (ascii codes 64-95) +`101` UNUSED +`110` UNUSED +`111` pure common commodity codes + +others will be defined later. + +Short Strings +++++++++++++++++ + +To avoid always having to do a map lookup, many commodities or commodity codes can be represented by a short string of 5 or fewer characters. These cannot be case sensitive so '_' is a space or null character and if at the end of the string will be removed for display purposes. The very limited character set includes '_', `a-z', '`' and, '{|}~'. This is meant to simplify a chunk of the use cases. Custom Commodity Strings which are not captured in this mode fall into the custom commodity bin. The bits for this kind of commodity definition are 010000U[AAAAA][BBBBB][CCCCC][DDDDD][EEEEE], with A, B, C, D, and E representing the bits of the code letters. +There are 2 codes one representing the lower case character set, and one with the upper cases character set with different punctuation marks. +For the upper case set, setting the `U` bit to 1 indicates a stock symbol. + +3 byte code +++++++++++++++++ + +For short alpha/numeric codes of 3 bytes or fewer the byte code can be captured in the lower 24 bits of the commodity code. +The bits for this kind of commodity definition are 010001[UU][AAAAAAAA][BBBBBBBB][CCCCCCCC], with A,B, C representing the bits of the code letters. +The codes UU, define a set of types of code + +`00` user defined +`01` UNDEFINED +`10` ISO currency codes defined in ISO 4217 +`11` UNDEFINED + +6 character hex code +++++++++++++++++++++++ + +Similar to the 3 byte code some commodities can be represented by a 6 byte hex code + +The bits for this kind of commodity definition are 010011XX[AAAA][BBBB][CCCC][DDDD][EEEE][FFFF], with A, B, C, D, E, F representing the bits of hex codes. + +4 character codes +++++++++++++++++++++++ + +Similar to the 3 byte code some commodities can be represented by a 6 byte hex code + +The bits for this kind of commodity definition are 010011[UU][AAAAAA][BBBBBB][CCCCCC][DDDDDD], with A, B, C, D, representing the characters + +`00` user defined +`01` Chemical Formula +`10` UNDEFINED +`11` UNDEFINED + +Known Definitions ++++++++++++++++++++ + +A set of known commodities are defined in the header libraries. These are contained using code 111 and are defined in header files. +The first 6 bits are defined 010111 leaving 26 bits available for user defined commodity codes. + + +Custom Commodity +======================= +String which can't be represented by the very simplistic short string mode are placed into a hash table for lookup and assigned a hash code generated from the string. The string is converted to a 29-bit hash placed in the lower 29 bits of the commodity code. + +Normal Commodity with Form Factor +============================= +Frequently commodities come in a specific form factor. With a form factor code in place this can represent a form factor independent of the actual commodity material. For example a drum of oil vs a drum of gasoline. + the container is wrapped in a 8-bit code bits 21-28. The commodity itself is contained in bits 0-20. + The bit codes for packaging is 001[FFFFFFFF][CCCCCCC][CCCCCCC][CCCCCCC]. To the extent possible the form factor codes in use are those used in recommendation 21 of international trade for use in conjunction with harmonized code. This covers the trade of goods but in general is insufficient to cover all the required packaging modes necessary for general description so it is not used exactly. The codes 0-99 if used correspond to codes used in recommendation 21. The way this is a encoded is the lowest 7 bits correspond to the recommendation if the value < 99 since that is a 2 digit decimal numerical code. Numbers 100-127 and 228-255 are local user definitions defined as required for other purposes. Numbers 128 to 227 correspond to alternate names for recommendation 21 codes, this is to disambiguate strings when converting to and from string representations. In Rec 21 codes 70-79 are reserved for future use but may be used in the units library as needed. + +Normal Commodity +============================ + +The codes used for normal commodity are the same as those used with a container with the exception that the additional 8 bit can be used for more specific codes of that commodity used for international trade. The codes used are based on the harmonized system for international trade `_ The 0-20 bits contain the harmonized system 6 digit code. The chapter is contained in bits 14-20, the section in bits 7-15, and the subsection in bits 0-6. This allows structure that can act as a mask on specific types of commodities. Common commodities are mapped to chapter and section mostly, though some exceptions go to the subsection for commodity to string translation. The 6 digit harmonized commodity code is the same between using with a container and without. If no container is used. the additional 8 bits, can represent the country specific codes. + + In the normalized code 7 bit sections, the codes for 100-127 represent other commodities that cannot be represented in the allowable 8 bits of space. These are stored in a hash map when used for later reference as needed. This allows representation of a large percentage of codes with no additional overhead and an additional 5.6 million codes through the hash structure. This is far more codes than are presently in use. diff --git a/docs/details/index.rst b/docs/details/index.rst index fcde7f76..5cbf8ed6 100644 --- a/docs/details/index.rst +++ b/docs/details/index.rst @@ -7,3 +7,4 @@ The Low Level Details of the Units library unit_base commodities + string_parsing_squared diff --git a/docs/details/string_parsing_squared.rst b/docs/details/string_parsing_squared.rst new file mode 100644 index 00000000..865aadc5 --- /dev/null +++ b/docs/details/string_parsing_squared.rst @@ -0,0 +1,13 @@ +============================== +Parsing of squared and cubic +============================== + +When units are written there are a few terms that modify the powers of a unit. +The two primary terms are `square` and `cubic` + +These are rules the library follows when parsing terms such as this + +- `square` or `sq` or `sq.` will apply to the unit immediately following the term +- `cubic` or `cu` or `cu.` will apply the unit immediately following the term +- `squared` will apply to the unit immediately preceding the term +- `cubed` will apply to the unit immediately preceding the term diff --git a/docs/installation/cmake_variables.rst b/docs/installation/cmake_variables.rst index 20a9aae9..0f297d84 100644 --- a/docs/installation/cmake_variables.rst +++ b/docs/installation/cmake_variables.rst @@ -25,6 +25,7 @@ CMake variables - `UNITS_DOMAIN`: Specify a default domain to use for string conversions. Can be either a name from the domains namespace such as `domains::surveying` or one of 'COOKING', 'ASTRONOMY', 'NUCLEAR', 'SURVEYING', 'USE_CUSTOMARY', 'CLIMATE', or 'UCUM'. - `UNITS_DEFAULT_MATCH_FLAGS`: Specify an integer value for the default match flags to be used for conversion - `UNITS_DISABLE_NON_ENGLISH_UNITS`: the library includes a number of non-english units that can be converted from strings, these can be disabled by setting `UNITS_DISABLE_NON_ENGLISH_UNITS` to ON or setting the definition in the C++ code. +- `UNITS_DISABLE_EXTRA_UNIT_STANDARDS`: If set to `ON` disables UN recommendation 12, X12(not implemented yet), DOD(not implemented yet), from being included in the compilation and generated from strings. - `UNITS_NAMESPACE`: The top level namespace of the library, defaults to `units`. When compiling with C++17 (or higher), this can be set to, e.g., `mynamespace::units` to avoid name clashes with other libraries defining `units`. diff --git a/docs/user-guide/custom_units.rst b/docs/user-guide/custom_units.rst index 32e4942f..3b757082 100644 --- a/docs/user-guide/custom_units.rst +++ b/docs/user-guide/custom_units.rst @@ -27,7 +27,8 @@ there are a few custom count units in use for specific clinical units Many of th So there is no translation to other units and cannot be converted except to multiple of the same unit. There are often well established tests for these units but no good way to convert them to other units. Many of these units come from `UCUM `_. - custom_unit(37): is `hounsfield units `_ used it CT and radiology -- many units in UCUM are defined like `[MPL'U]` or `[mclg'U]` for this context they define some unit which doesn't interact with other units in any known fashion. The notion used in the units library for string translations is that these define custom units. Rather than individually define the library takes a hash of the part of the unit coming before the `'U]'` and generates a 10 bit hash. That 10 bit hash is used as the custom code for the units. +- custom_unit(49): is `erlang` used in telephone carrying capacity `_ +- many units in UCUM are defined like `[MPL'U]` or `[mclg'U]` for this context they define some unit which doesn't interact with other units in any known fashion. The notion used in the units library for string translations is that these define custom units. Rather than individually defining them, the library takes a hash of the part of the unit coming before the `'U]'` and generates a 10 bit hash. That 10 bit hash is used as the custom code for the units. - custom_unit(77): is global warming potential related to climate operations - custom_unit(78): is global temperature change potential diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f22f6828..3e2c89d4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -27,6 +27,10 @@ set(UNITS_TESTS test_google_units ) +if(NOT UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + list(APPEND UNITS_TESTS test_r20) +endif() + set(TEST_FILE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/files) # /wd4459 is for a warning of a global m in google test. They won't interfere so ignore @@ -68,6 +72,9 @@ else() target_compile_definitions( test_unit_strings PUBLIC -DENABLE_UNIT_TESTING=1 -DENABLE_UNIT_MAP_ACCESS=1 ) + if(NOT UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + target_compile_definitions(test_r20 PUBLIC -DENABLE_UNIT_MAP_ACCESS=1) + endif() add_unit_test(test_leadingNumbers.cpp) target_link_libraries( diff --git a/test/examples_test.cpp b/test/examples_test.cpp index e5101592..fddea7e4 100644 --- a/test/examples_test.cpp +++ b/test/examples_test.cpp @@ -42,9 +42,9 @@ int main(int argc, char* argv[]) return -1; } - units::precise_unit prec1(units::precise::L, 1.25); + units::precise_unit prec1(1.25, units::precise::L); - if (prec1 != units::precise_unit(units::precise::m.pow(3), 0.00125)) { + if (prec1 != units::precise_unit(0.00125, units::precise::m.pow(3))) { return -1; } diff --git a/test/files/complete_unit_list.txt b/test/files/complete_unit_list.txt new file mode 100644 index 00000000..d150fc40 --- /dev/null +++ b/test/files/complete_unit_list.txt @@ -0,0 +1,2559 @@ +## SECTION # +%, (slope percent), Slope (grade) units, Circular measure +%, (percent), Percentages and Parts, Franctions and Percent +=E2=80=B0, (slope permille), Slope (grade) units, Circular measure +=E2=80=B0, (permille), Percentages and Parts, Franctions and Percent +=E2=80=B2, (minute), Common Units, Circular measure +=E2=80=B3, (second), Common Units, Circular measure +=E2=84=88, (scruple), Apothecaries, Mass and weight +=E2=84=94, =E2=80=B3, (pound), Apothecaries, Mass and weight +=E2=84=A5, (ounce), Apothecaries, Mass and weight +1, (unit, point), Quantity Units, Franctions and Percent +1/10, (one tenth or .1), Fractions, Franctions and Percent +1/16, (one sixteenth or .0625), Fractions, Franctions and Percent +1/2, (half or .5), Fractions, Franctions and Percent +1/3, (one third or .(3)), Fractions, Franctions and Percent +1/32, (one thirty-second or .03125), Fractions, Franctions and Percent +1/4, (quart, one forth or .25), Fractions, Franctions and Percent +1/5, (tithe, one fifth or .2), Fractions, Franctions and Percent +1/6, (one sixth or .1(6)), Fractions, Franctions and Percent +1/7, (one seventh or .142857), Fractions, Franctions and Percent +1/8, (one eights or .125), Fractions, Franctions and Percent +1/9, (one ninth or .(1)), Fractions, Franctions and Percent +=C3=A5ngstr=C3=B6m, Metric, Distance and Length +=C2=B0C, (degrees Celsius), Temperature increment conversion, Temperature increment +=C2=B0C, (degrees Celsius), Temperature scale conversion, Temperature +=C2=B0D, (degrees Delisle), Historical temperature increment conversion, Temperature increment +=C2=B0D, (degrees Delisle), Historical temperature scales, Temperature +=C2=B0F, (degrees Fahrenheit), Temperature increment conversion, Temperature increment +=C2=B0F, (degrees Fahrenheit), Temperature scale conversion, Temperature +=C6=92=E2=84=A5, (fluid ounce), Apothecaries, Capacity and volume +=C6=92=CA=92, (fluid dram), Apothecaries, Capacity and volume +=C2=B0N, (degrees Newton), Historical temperature increment conversion, Temperature increment +=C2=B0N, (degrees Newton), Historical temperature scales, Temperature +=C2=B0R, (degrees Rankine), Historical temperature increment conversion, Temperature increment +=C2=B0R, (degrees Rankine), Historical temperature scales, Temperature +=C2=B0Re, (degrees Reaumur), Temperature increment conversion, Temperature increment +=C2=B0Re, (degrees Reaumur), Temperature scale conversion, Temperature +=C2=B0R=C3=B8, (degrees R=C3=B8mer), Historical temperature increment conversion, Temperature increment +=C2=B0R=C3=B8, (degrees R=C3=B8mer), Historical temperature scales, Temperature +=CA=92, (dram (drachm)), Apothecaries, Mass and weight +=CE=98, (Planck temperature), Temperature increment conversion, Temperature increment +=CE=98, (Planck temperature), Temperature scale conversion, Temperature +=C2=B5Ci, (microcurie), Other units, Radioactivity +=C2=B5Gy, (microgray), Absorbed radiation dose, Radiation +=C2=B5l, (microliter), Metric, Capacity and volume +=CE=BCm, (Diameter in micrometres), Wire diameter, Wire and Needle Gauge +=CE=BCm=C2=B2, (Section area in square micrometres), Wire section area, Wire and Needle Gauge +=C2=B5, mc, (micro), Metric Prefixes, Franctions and Percent +=C2=B5N, (micronewton), International System (SI), Force +=C2=B5R, (microroentgen), Exposure to ionizing radiation, Radiation +=C2=B5s, (microsecond), Common units, Time +=C2=B5Sv, (microsievert), Dose equivalent radiation, Radiation +=CF=83=CF=84=CE=AC=CE=B4=CE=B9=CE=BF=CE=BD, stadion, Ancient Greek, Historical Lengths + +## SECTION A +a, (atto), Metric Prefixes, Franctions and Percent +a, (are), Metric, Area +Acceleration of free fall on Jupiter, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Mars, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Mercury, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Moon, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Neptune, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Saturn, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Sun, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Uranus, Free Fall Acceleration (Solar System), Acceleration +Acceleration of free fall on Venus, Free Fall Acceleration (Solar System), Acceleration +acetabulum (small cup), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +acre, British (Imperial) And U.S. System, Historical Units of Area +acre, British (Imperial) And U.S. System, Area +acre foot, U.S. Liquid Measure, Capacity and volume +acre foot per day, U.S. and British Imperial, Flow rate by volume +acre foot per hour, U.S. and British Imperial, Flow rate by volume +acre foot per minute, U.S. and British Imperial, Flow rate by volume +acre foot per second, U.S. and British Imperial, Flow rate by volume +acre foot per year, U.S. and British Imperial, Flow rate by volume +actus, Ancient Roman, Historical Lengths +adarme, Old Spanish, Historical weights +Admiralty cable length, British (Imperial) Nautical Measure, Distance and Length +Admiralty mile, British (Imperial) Nautical Measure, Distance and Length +ADSL, Computer Connection Speed, Data transfer rate +ADSL2, Computer Connection Speed, Data transfer rate +adult UK shoe size, United Kingdom and Ireland Shoe Size, Shoe Size Conversion +AED, (United Arab Emirates Dirham), Middle East Currencies, Currency +Afghan Afghani, (AFN), Asian Currencies, Currency +AFN, (Afghan Afghani), Asian Currencies, Currency +akaina (=E1=BC=84=CE=BA=CE=B1=CE=B9=CE=BD=CE=B1), Ancient Greek, Historical Units of Area +akaina (=E1=BC=84=CE=BA=CE=B1=CE=B9=CE=BD=CE=B1), Ancient Greek, Historical Lengths +Albanian Lek, (ALL), European Currencies, Currency +Algerian Dinar, (DZD), African Curriencies, Currency +ALL, (Albanian Lek), European Currencies, Currency +almude, Old Portuguese Liquid Measure, Historical Units of Capacity +aln (forealrm), Old Swedish, Historical Lengths +alqueire, Old Portuguese Dry Measure, Historical Units of Capacity +AMD, (Armenian Dram), Asian Currencies, Currency +amem (fist), Ancient Egypt, Historical Lengths +American Steel and Wire (ASW) Music Wire Gauge, Music Wire Gauges, Wire and Needle Gauge +American Wire Gauge, AWG, Wire Gauges, Wire and Needle Gauge +amphora quadrantal (Roman jar, bushel), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +amu, (atomic mass unit), Metric, Mass and weight +ANG, (Netherlands Antillean Guilder), Currencies of the Caribbean, Currency +Angolan Kwanza, (AOA), African Curriencies, Currency +Angular mil (NATO), Artillery, Circular measure +Angular mil (Sweden), Artillery, Circular measure +anomalistic month, Astronomical, Time +anomalistic year, Astronomical, Time +AOA, (Angolan Kwanza), African Curriencies, Currency +apostilb, (asb), Other units, Illuminance +aranzada, Old Spanish, Historical Units of Area +are, (a), Metric, Area +Argentine Peso, (ARS), South American Currencies, Currency +Armenian Dram, (AMD), Asian Currencies, Currency +aroura (=E1=BC=84=CF=81=CE=BF=CF=85=CF=81=CE=B1), Ancient Greek, Historical Units of Area +arpent, Old French, Historical Units of Area +arpent, Old French, Historical Lengths +arr=C3=A1tel (libra), Old Portuguese, Historical weights +arroba, Old Spanish Liquid Measure, Historical Units of Capacity +arroba, Old Portuguese, Historical weights +arroba, Old Spanish, Historical weights +ARS, (Argentine Peso), South American Currencies, Currency +arshin, Old Russian, Historical Lengths +Aruban Florin, (AWG), Currencies of the Caribbean, Currency +asb, (apostilb), Other units, Illuminance +Asian ring size, Ring Sizes in Japan, China, Korea, Hong Kong, Taiwan, Singapore, Ring size +Asian shoe size, Asian Shoe Size, Shoe Size Conversion +astronomical unit, (au), Astronomical, Distance and Length +ath (=E0=B8=AD=E0=B8=B1=E0=B8=90), Thai units, Mass and weight +atm, (physical atmosphere), Atmosphere, Stress and Pressure +atomic mass unit, (amu), Metric, Mass and weight +atomic unit of force, Atomic Physics Units, Force +atto, (a), Metric Prefixes, Franctions and Percent +au, (astronomical unit), Astronomical, Distance and Length +AUD, (Australian Dollar, $), Major World Currencies, Currency +Australian children size, Australia and New Zealand Shoe Size, Shoe Size Conversion +Australian Dollar, $, (AUD), Major World Currencies, Currency +Australian female shoe size, Australia and New Zealand Shoe Size, Shoe Size Conversion +Australian male shoe size, Australia and New Zealand Shoe Size, Shoe Size Conversion +AWG, (Aruban Florin), Currencies of the Caribbean, Currency +Azerbaijani Manat, (AZN), Asian Currencies, Currency +AZN, (Azerbaijani Manat), Asian Currencies, Currency +azumbre, Old Spanish Liquid Measure, Historical Units of Capacity + +## SECTION B +b, (barn), Metric, Area +Bahamian Dollar, (BSD), Currencies of the Caribbean, Currency +Bahraini Dinar, (BHD), Middle East Currencies, Currency +baht in gold trading, Thai units, Mass and weight +baht (=E0=B8=9A=E0=B8=B2=E0=B8=97), Thai units, Mass and weight +baker's dozen, Quantity Units, Franctions and Percent +BAM, (Bosnia-Herzegovina Convertible Mark), European Currencies, Currency +Bangladeshi Taka, (BDT), Asian Currencies, Currency +bar, Metric, Stress and Pressure +Barbadian Dollar, (BBD), Currencies of the Caribbean, Currency +barleycorn, British Imperial Measure before 1963, Distance and Length +barn, (b), Metric, Area +barrel, English brewery cask units, Capacity and volume +barrel, English wine cask units, Capacity and volume +barrel, British Imperial Liquid And Dry, Capacity and volume +barrel, U.S. Dry Measure, Capacity and volume +barrel (dry), U.S. Measure, Historical Units of Capacity +barrel (liquid), U.S. Measure, Historical Units of Capacity +barrel of oil equivalent, (BOE), Oil Energy Equivalent, Energy and Work +barrel (petroleum), U.S. Liquid Measure, Capacity and volume +barrel (petroleum) per day, U.S. and British Imperial, Flow rate by volume +barrel (petroleum) per hour, U.S. and British Imperial, Flow rate by volume +barrel (petroleum) per minute, U.S. and British Imperial, Flow rate by volume +barrel (petroleum) per second, U.S. and British Imperial, Flow rate by volume +barrel (petroleum) per year, U.S. and British Imperial, Flow rate by volume +bath, Biblical and Talmudic Liquid Measure (Old Testament), Historical Units of Capacity +BBD, (Barbadian Dollar), Currencies of the Caribbean, Currency +BBOE, (billion barrel of oil equivalent), Oil Energy Equivalent, Energy and Work +BDT, (Bangladeshi Taka), Asian Currencies, Currency +becquerel, (Bq), SI radioactivity units, Radioactivity +beka, Biblical, Historical weights +Belarusian Ruble, (BYN), European Currencies, Currency +Belize Dollar, (BZD), Central American Currencies, Currency +bema or diploum (=CE=B2=E1=BF=86=CE=BC=CE=B1, =E1=BC=80=CF=80=CE=BB=CE=BF=E1=BF=A6=CE=BD), Ancient Greek, Historical Units of Area +berkovets, Old Russian, Historical weights +Bermudan Dollar, (BMD), North American Currencies, Currency +bes (8=E2=81=8412 libra, two of an as), Ancient Roman, Historical weights +bezah (egg-size), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +BGN, (Bulgarian Lev), European Currencies, Currency +BHD, (Bahraini Dinar), Middle East Currencies, Currency +Bhutanese Ngultrum, (BTN), Asian Currencies, Currency +bia (=E0=B9=80=E0=B8=9A=E0=B8=B5=E0=B9=89=E0=B8=A2), Thai units, Mass and weight +BIF, (Burundian Franc), African Curriencies, Currency +billion barrel of oil equivalent, (BBOE), Oil Energy Equivalent, Energy and Work +binary number (radix 2), Common Radix Numerals, Roman numbers, Hex, Octal and more +Birmingham or Stubs' Iron Wire Gauge, B.W.G., Wire Gauges, Wire and Needle Gauge +bismerpund, Old Swedish, Historical weights +bit, Data Storage and Transmission, Computer storage +Bitcoin, (BTC), Other Currencies and More, Currency +bit per second, (bps), Basic Units of Data Transfer Rate, Data transfer rate +blondel, Other units, Illuminance +BlueTooth 1, Computer Connection Speed, Data transfer rate +BlueTooth 2.0, Computer Connection Speed, Data transfer rate +BMD, (Bermudan Dollar), North American Currencies, Currency +BND, (Brunei Dollar), Asian Currencies, Currency +boardfoot, board-foot, (fbmm, bdft, bf), Lumber measure, Capacity and volume +BOB, (Bolivian Boliviano), South American Currencies, Currency +BOE, (barrel of oil equivalent), Oil Energy Equivalent, Energy and Work +Bolivian Boliviano, (BOB), South American Currencies, Currency +bolt, British Imperial Measure before 1963, Distance and Length +bolt, The American System (US Customary Units) and British Imperial Measures, Distance and Length +Bosnia-Herzegovina Convertible Mark, (BAM), European Currencies, Currency +botella, Old Spanish Liquid Measure, Historical Units of Capacity +Botswanan Pula, (BWP), African Curriencies, Currency +bps, (bit per second), Basic Units of Data Transfer Rate, Data transfer rate +Bq, (becquerel), SI radioactivity units, Radioactivity +bra=C3=A7a, Old Portuguese, Historical Lengths +bra=C3=A7a quadrada (square bra=C3=A7a), Old Portuguese, Historical Units of Area +braza, Old Spanish, Historical Lengths +Brazilian Real, (BRL), South American Currencies, Currency +Brazilian shoe size, Brazilian Shoe Size, Shoe Size Conversion +breakfast cup, Apothecaries, Capacity and volume +bril, Other units, Illuminance +British centner, Avoirdupois (U.S. / British), Mass and weight +British gallon per 100 miles, British system, Fuel economy +British gallon per day, U.S. and British Imperial, Flow rate by volume +British gallon per hour, U.S. and British Imperial, Flow rate by volume +British gallon per minute, U.S. and British Imperial, Flow rate by volume +British gallon per second, U.S. and British Imperial, Flow rate by volume +British gallon per year, U.S. and British Imperial, Flow rate by volume +British Pound Sterling, =C2=A3, (GBP), Major World Currencies, Currency +British Standard Wire Gauge, SWG, Wire Gauges, Wire and Needle Gauge +British Thermal Unit, (BTU), British and American, Energy and Work +British Thermal Unit per hour, (BTU/hr), British and American, Power +British Thermal Unit per minute, (BTU/min), British and American, Power +British Thermal Unit per second, (BTU/s), British and American, Power +BRL, (Brazilian Real), South American Currencies, Currency +Brunei Dollar, (BND), Asian Currencies, Currency +B/s, (byte per second), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +B/s, (byte per second), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +BSD, (Bahamian Dollar), Currencies of the Caribbean, Currency +BTC, (Bitcoin), Other Currencies and More, Currency +BTN, (Bhutanese Ngultrum), Asian Currencies, Currency +BTU, (British Thermal Unit), British and American, Energy and Work +BTU/hr, (British Thermal Unit per hour), British and American, Power +BTU/min, (British Thermal Unit per minute), British and American, Power +BTU/s, (British Thermal Unit per second), British and American, Power +bu, (bushel), U.S. Measure, Historical Units of Capacity +bu, (bushel), British Imperial Liquid And Dry, Capacity and volume +bu, (bushel), U.S. Dry Measure, Capacity and volume +Bulgarian Lev, (BGN), European Currencies, Currency +Burundian Franc, (BIF), African Curriencies, Currency +bushel, (bu), U.S. Measure, Historical Units of Capacity +bushel, (bu), British Imperial Liquid And Dry, Capacity and volume +bushel, (bu), U.S. Dry Measure, Capacity and volume +butt, English wine cask units, Capacity and volume +button, British Imperial Measure before 1963, Distance and Length +bu (=E5=88=86), Japanese, Distance and Length +bu (=E6=AD=A5), Chinese units of 1915, Distance and Length +bu (=E6=AD=A9), Japanese, Area +BWP, (Botswanan Pula), African Curriencies, Currency +BYN, (Belarusian Ruble), European Currencies, Currency +byte (octet), Data Storage and Transmission, Computer storage +byte per day, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +byte per day, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +byte per hour, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +byte per hour, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +byte per minute, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +byte per minute, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +byte per second, (B/s), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +byte per second, (B/s), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +byte per week, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +byte per week, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +BZD, (Belize Dollar), Central American Currencies, Currency + +## SECTION C +c, (centi), Metric Prefixes, Franctions and Percent +caballer=C3=ADa, Old Spanish, Historical Units of Area +cable length, (cbl), International Nautical Measure, Distance and Length +Cable modem, Computer Connection Speed, Data transfer rate +CAD, (Canadian Dollar, $), Major World Currencies, Currency +cah=C3=ADz, Old Spanish Dry Measure, Historical Units of Capacity +cal, (calorie), Common Units, Energy and Work +calendar month, Common units, Time +caliber, British Imperial Measure before 1963, Distance and Length +calorie, (cal), Common Units, Energy and Work +calories per hour, Common Units, Power +calories per minute, Common Units, Power +calories per second, Common Units, Power +Cambodian Riel, (KHR), Asian Currencies, Currency +canada, Old Portuguese Liquid Measure, Historical Units of Capacity +Canadian Dollar, $, (CAD), Major World Currencies, Currency +candareen (fan), Hong Kong, Mass and weight +candareen troy, Hong Kong, Mass and weight +candy, Indian units (Akbar system), Mass and weight +c=C3=A1ntara, Old Spanish Liquid Measure, Historical Units of Capacity +c=C3=A2ntaro, Old Portuguese Liquid Measure, Historical Units of Capacity +Cape Verdean Escudo, (CVE), African Curriencies, Currency +carat, Troy, Mass and weight +carat, (ct), Metric, Mass and weight +catty (kan), Hong Kong, Mass and weight +Cayman Islands Dollar, (KYD), Currencies of the Caribbean, Currency +cbl, (cable length), International Nautical Measure, Distance and Length +cc, (cubic centimeter), Metric, Historical Units of Capacity +cc, (cubic centimeter), Metric, Capacity and volume +ccf, (centum cubic feet), British and U.S. derivatives of length units, Capacity and volume +CDF, (Congolese Franc), African Curriencies, Currency +CDMA 1xEV-DO, Computer Connection Speed, Data transfer rate +CDMA 1xEV-DO rev.A, Computer Connection Speed, Data transfer rate +CDMA 1xEV-DO rev.B, Computer Connection Speed, Data transfer rate +cek (=E5=B0=BA), Hong Kong units, Distance and Length +celemin, Old Spanish, Historical Units of Area +celem=C3=ADn, Old Spanish Dry Measure, Historical Units of Capacity +Celsius heat unit, (CHU), Common Units, Energy and Work +centi, (c), Metric Prefixes, Franctions and Percent +centigram, Metric, Mass and weight +centigray, (cGy), Absorbed radiation dose, Radiation +centiliter, (cl), Metric, Capacity and volume +centimeter, (cm), Metric, Historical Lengths +centimeter, (cm), Metric, Distance and Length +centimeter of mercury, Mercury, Stress and Pressure +centimeter of water, Water (at 39.2=C2=B0F, 4=C2=B0C), Stress and Pressure +centum cubic feet, (ccf), British and U.S. derivatives of length units, Capacity and volume +century, Ancient Roman, Historical Units of Area +century, Common units, Time +cetverik (mera), Old Russian Dry Measure, Historical Units of Capacity +CFA Franc BCEAO, (XOF), African Curriencies, Currency +CFA Franc BEAC, (XAF), African Curriencies, Currency +cGy, (centigray), Absorbed radiation dose, Radiation +ch, (Ramsden's (engineers') chain), US Surveyors' Measure, Distance and Length +ch, (Gunter's (surveyors') chain), US Surveyors' Measure, Distance and Length +ch, (Gurley's chain), US Surveyors' Measure, Distance and Length +chain, British Imperial Measure before 1963, Distance and Length +chain, The American System (US Customary Units) and British Imperial Measures, Distance and Length +chang (=E0=B8=8A=E0=B8=B1=E0=B9=88=E0=B8=87), Thai units, Mass and weight +charka, Old Russian Liquid Measure, Historical Units of Capacity +ch=C4=93m=C4=93 (=CF=87=CE=AE=CE=BC=CE=B7), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +chetvert (quart), Old Russian Liquid Measure, Historical Units of Capacity +CHF, (Swiss Franc, Fr), Major World Currencies, Currency +chi=C2=B2, (fang chi (=E6=96=B9=E5=B0=BA)), Chinese units of 1915, Area +chi=C2=B2, (fang chi (=E6=96=B9=E5=B0=BA)), Chinese units of 1930, Area +children size (all genders), U.S. and Canada Customary Shoe Size, Shoe Size Conversion +children UK size, United Kingdom and Ireland Shoe Size, Shoe Size Conversion +Chilean Peso, (CLP), South American Currencies, Currency +Chilean Unidad de Fomento, (CLF), South American Currencies, Currency +Chinese Yuan, =C2=A5, (CNY), Major World Currencies, Currency +Chinese Yuan (Offshore, Hong Kong), =C2=A5, (CNH), Asian Currencies, Currency +chittak, Indian units (Akbar system), Mass and weight +chi (=E5=B0=BA), Chinese units of 1915, Distance and Length +chi (=E5=B8=82=E5=B0=BA), Chinese units of 1930, Distance and Length +choinix (=CF=87=CE=BF=E1=BF=96=CE=BD=CE=B9=CE=BE), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +chous (=CF=87=CE=BF=E1=BF=A6=CF=82), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +cho (=E7=94=BA), Japanese, Distance and Length +cho (=E7=94=BA, =E7=94=BA=E6=AD=A9), Japanese, Area +CHU, (Celsius heat unit), Common Units, Energy and Work +Ci, (curie), Other units, Radioactivity +cicero, Typographical (Europe - Didot system), Distance and Length +circle, (circumference), Common Units, Circular measure +circular inch, Units for Measuring Wire Gauges, Area +circular mil, (cmil), Units for Measuring Wire Gauges, Area +circumference, (circle), Common Units, Circular measure +Circumference in inches, (in), Inner Diameter and Circumference of a Ring, Ring size +Circumference in millimeters, (mm), Inner Diameter and Circumference of a Ring, Ring size +C/kg, (coulomb per kilogram), Exposure to ionizing radiation, Radiation +cl, (centiliter), Metric, Capacity and volume +CLF, (Chilean Unidad de Fomento), South American Currencies, Currency +CLP, (Chilean Peso), South American Currencies, Currency +cm, (centimeter), Metric, Historical Lengths +cm, (centimeter), Metric, Distance and Length +cm=C2=B2, (square centimeter), Metric, Historical Units of Area +cm=C2=B2, (square centimeter), Metric, Area +cm=C2=B3/day, (cubic centimeter per day), Metric, Flow rate by volume +cm=C2=B3/hour, (cubic centimeter per hour), Metric, Flow rate by volume +cm=C2=B3/min, (cubic centimeter per minute), Metric, Flow rate by volume +cm=C2=B3/s, (cubic centimeter per second), Metric, Flow rate by volume +cm=C2=B3/year, (cubic centimeter per year), Metric, Flow rate by volume +CMDA 1x, Computer Connection Speed, Data transfer rate +cmil, (circular mil), Units for Measuring Wire Gauges, Area +CNH, (Chinese Yuan (Offshore, Hong Kong), =C2=A5), Asian Currencies, Currency +CNY, (Chinese Yuan, =C2=A5), Major World Currencies, Currency +codo, Old Spanish, Historical Lengths +codo de ribera, Old Spanish, Historical Lengths +Colombian Peso, (COP), South American Currencies, Currency +Common decimal number (Hindu-Arabic), Decimal numbers, Roman numbers, Hex, Octal and more +Comorian Franc, (KMF), African Curriencies, Currency +congius (a half-pes cube), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +Congolese Franc, (CDF), African Curriencies, Currency +COP, (Colombian Peso), South American Currencies, Currency +copa, Old Spanish Liquid Measure, Historical Units of Capacity +cord, Lumber measure, Capacity and volume +cortadillo, Old Spanish Liquid Measure, Historical Units of Capacity +Costa Rican Col=C3=B3n, (CRC), Central American Currencies, Currency +coto, Old Spanish, Historical Lengths +cotyla (cup), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +coulomb per kilogram, (C/kg), Exposure to ionizing radiation, Radiation +c=C3=B4vado, Old Portuguese, Historical Lengths +CRC, (Costa Rican Col=C3=B3n), Central American Currencies, Currency +Croatian Kuna, (HRK), European Currencies, Currency +ct, (carat), Metric, Mass and weight +cu, (cubit), British Imperial Measure before 1963, Distance and Length +cuadra of Argentina, Historical Units Still In Use Today, Area +cuadra of Argentina, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Bolivia, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Chile, Historical Units Still In Use Today, Area +cuadra of Chile, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Colombia, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Ecuador, Historical Units Still In Use Today, Area +cuadra of Ecuador, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Nicaragua, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Paraguay, Historical Units Still In Use Today, Area +cuadra of Paraguay, Spanish Customary Units Still In Use Today, Distance and Length +cuadra of Peru, Historical Units Still In Use Today, Area +cuadra of Uruguay, Historical Units Still In Use Today, Area +cuadra of Uruguay, Spanish Customary Units Still In Use Today, Distance and Length +cuarter=C3=B3n, Old Spanish, Historical weights +cuartilla (=C2=BC of a fanega), Old Spanish Dry Measure, Historical Units of Capacity +cuartillo, Old Spanish, Historical Units of Area +cuartillo, Old Spanish Liquid Measure, Historical Units of Capacity +cuartillo (=C2=BC of a celem=C3=ADn), Old Spanish Dry Measure, Historical Units of Capacity +Cuban Convertible Peso, (CUC), Currencies of the Caribbean, Currency +Cuban Peso, (CUP), Currencies of the Caribbean, Currency +cubic centimeter, (cc), Metric, Historical Units of Capacity +cubic centimeter, (cc), Metric, Capacity and volume +cubic centimeter of atmosphere, standard cubic centimeter, (scc), Common Units, Energy and Work +cubic centimeter per day, (cm=C2=B3/day), Metric, Flow rate by volume +cubic centimeter per hour, (cm=C2=B3/hour), Metric, Flow rate by volume +cubic centimeter per minute, (cm=C2=B3/min), Metric, Flow rate by volume +cubic centimeter per second, (cm=C2=B3/s), Metric, Flow rate by volume +cubic centimeter per year, (cm=C2=B3/year), Metric, Flow rate by volume +cubic decimeter, (dm=C2=B3), Metric, Capacity and volume +cubic foot, (ft=C2=B3), British and U.S. derivatives of length units, Capacity and volume +cubic foot of atmosphere, standard cubic foot, (scf), British and American, Energy and Work +cubic foot per day, (ft=C2=B3/day), U.S. and British Imperial, Flow rate by volume +cubic foot per hour, (ft=C2=B3/hour), U.S. and British Imperial, Flow rate by volume +cubic foot per minute, (ft=C2=B3/min), U.S. and British Imperial, Flow rate by volume +cubic foot per second, (ft=C2=B3/s), U.S. and British Imperial, Flow rate by volume +cubic foot per year, (ft=C2=B3/year), U.S. and British Imperial, Flow rate by volume +cubic inch, (in=C2=B3), British and U.S. derivatives of length units, Capacity and volume +cubic inch per day, (in=C2=B3/day), U.S. and British Imperial, Flow rate by volume +cubic inch per hour, (in=C2=B3/hour), U.S. and British Imperial, Flow rate by volume +cubic inch per minute, (in=C2=B3/min), U.S. and British Imperial, Flow rate by volume +cubic inch per second, (in=C2=B3/s), U.S. and British Imperial, Flow rate by volume +cubic inch per year, (in=C2=B3/year), U.S. and British Imperial, Flow rate by volume +cubic kilometer, (km=C2=B3), Metric, Capacity and volume +cubic light minute, Astronomical, Capacity and volume +cubic light second, Astronomical, Capacity and volume +cubic light year, Astronomical, Capacity and volume +cubic meter, (m=C2=B3), Metric, Historical Units of Capacity +cubic meter, (m=C2=B3), Metric, Capacity and volume +cubic meter per day, (m=C2=B3/day), Metric, Flow rate by volume +cubic meter per hour, (m=C2=B3/hour), Metric, Flow rate by volume +cubic meter per minute, (m=C2=B3/min), Metric, Flow rate by volume +cubic meter per second, (m=C2=B3/s), Metric, Flow rate by volume +cubic meter per year, (m=C2=B3/year), Metric, Flow rate by volume +cubic mile, (mi=C2=B3), British and U.S. derivatives of length units, Capacity and volume +cubic millimeter, (mm=C2=B3), Metric, Historical Units of Capacity +cubic millimeter, (mm=C2=B3), Metric, Capacity and volume +cubic parsec, (pc=C2=B3), Astronomical, Capacity and volume +cubic ton of timber, Lumber measure, Capacity and volume +cubic yard, (yd=C2=B3), British and U.S. derivatives of length units, Capacity and volume +cubic yard of atmosphere, standard cubic yard, (scy), British and American, Energy and Work +cubit, Biblical, Historical Lengths +cubit, (cu), British Imperial Measure before 1963, Distance and Length +cubitus (cubit), Ancient Roman, Historical Lengths +CUC, (Cuban Convertible Peso), Currencies of the Caribbean, Currency +cuerda, Old Spanish, Historical Lengths +cuerda of Puerto Rico, Old Spanish, Historical Units of Area +cuerda of Valencia, Old Spanish, Historical Lengths +culeus (hose), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +cun=C2=B2, (fang cun (=E6=96=B9=E5=AF=B8)), Chinese units of 1915, Area +cun=C2=B2, (fang cun (=E6=96=B9=E5=AF=B8)), Chinese units of 1930, Area +cun (=E5=AF=B8), Chinese units of 1915, Distance and Length +cun (=E5=B8=82=E5=AF=B8), Chinese units of 1930, Distance and Length +cuo (=E6=92=AE), Chinese units of 1930, Capacity and volume +cup, Cooking (International), Capacity and volume +cup, Cooking (U.S.), Capacity and volume +CUP, (Cuban Peso), Currencies of the Caribbean, Currency +curie, (Ci), Other units, Radioactivity +CVE, (Cape Verdean Escudo), African Curriencies, Currency +cyathus (shot or dose), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +Czech Republic Koruna, (CZK), European Currencies, Currency +CZK, (Czech Republic Koruna), European Currencies, Currency + +## SECTION D +d, (deci), Metric Prefixes, Franctions and Percent +da, (deka), Metric Prefixes, Franctions and Percent +daktylos (=CE=B4=CE=AC=CE=BA=CF=84=CF=85=CE=BB=CE=BF=CF=82, finger), Ancient Greek, Historical Lengths +Danish Krone, (DKK), European Currencies, Currency +dan (=E5=B8=82=E6=8B=85 / =E6=93=94), Chinese units since 1959, Mass and weight +dan (=E5=B8=82=E7=9F=B3), Chinese units of 1930, Capacity and volume +dan (=E6=93=94 / =E6=8B=85), Chinese units between 1930 and 1959, Mass and weight +dan (=E7=9F=B3), Chinese units of 1915, Capacity and volume +day, Common units, Time +days, hours, minutes and seconds, (Dd HH:MM:SS), Common units, Time +Dd HH:MM:SS, (days, hours, minutes and seconds), Common units, Time +death, Acute radiation syndrome, Radiation +decade, dicker, Quantity Units, Franctions and Percent +decaliter, Metric, Capacity and volume +decanewton, (dN), International System (SI), Force +decaorgion (=CE=B4=CE=B5=CE=BA=CE=AC=CF=89=CF=81=CE=B3=CE=BF=CE=BD), Ancient Greek, Historical Units of Area +decare, Metric, Area +decempeda, Ancient Roman, Historical Lengths +deci, (d), Metric Prefixes, Franctions and Percent +deciliter, (dl), Metric, Capacity and volume +decimeter, (dm), Metric, Distance and Length +deg, (degree), Common Units, Circular measure +degree, (deg), Common Units, Circular measure +Degree per day, Degree, Angular velocity +Degree per hour, Degree, Angular velocity +Degree per minute, Degree, Angular velocity +Degree per second, Degree, Angular velocity +Degree per week, Degree, Angular velocity +degrees Celsius, (=C2=B0C), Temperature increment conversion, Temperature increment +degrees Celsius, (=C2=B0C), Temperature scale conversion, Temperature +degrees Delisle, (=C2=B0D), Historical temperature increment conversion, Temperature increment +degrees Delisle, (=C2=B0D), Historical temperature scales, Temperature +degrees Fahrenheit, (=C2=B0F), Temperature increment conversion, Temperature increment +degrees Fahrenheit, (=C2=B0F), Temperature scale conversion, Temperature +degrees, minutes, seconds, (d=C2=B0m=E2=80=B2s=E2=80=B3), Common Units, Circular measure +degrees Newton, (=C2=B0N), Historical temperature increment conversion, Temperature increment +degrees Newton, (=C2=B0N), Historical temperature scales, Temperature +degrees Rankine, (=C2=B0R), Historical temperature increment conversion, Temperature increment +degrees Rankine, (=C2=B0R), Historical temperature scales, Temperature +degrees Reaumur, (=C2=B0Re), Temperature increment conversion, Temperature increment +degrees Reaumur, (=C2=B0Re), Temperature scale conversion, Temperature +degrees R=C3=B8mer, (=C2=B0R=C3=B8), Historical temperature increment conversion, Temperature increment +degrees R=C3=B8mer, (=C2=B0R=C3=B8), Historical temperature scales, Temperature +deka, (da), Metric Prefixes, Franctions and Percent +dekadrachm (=CE=B4=CE=B5=CE=BA=CE=AC=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 10 drachmae), Ancient Greek (Aeginetic standard), Historical weights +dekadrachm (=CE=B4=CE=B5=CE=BA=CE=AC=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 10 drachmae), Ancient Greek (Attic/Eubolic standard), Historical weights +dekapous (=CE=B4=CE=B5=CE=BA=CE=AC=CF=80=CE=BF=CF=85=CF=82), Ancient Greek, Historical Lengths +Density of air at sea level, Densities of various materials, Density +Density of copper, Densities of various materials, Density +Density of diamond, Densities of various materials, Density +Density of gold, Densities of various materials, Density +Density of ice, Densities of various materials, Density +Density of iron, Densities of various materials, Density +Density of lead, Densities of various materials, Density +Density of platinum, Densities of various materials, Density +Density of silver, Densities of various materials, Density +Density of water at 0=C2=B0C, Densities of various materials, Density +Density of water at 100=C2=B0C, Densities of various materials, Density +Density of water at 4=C2=B0C, Densities of various materials, Density +dental radiology, Radiation dose examples, Radiation +denzt, Old Austrian, Historical weights +deret (hand), Ancient Egypt, Historical Lengths +dessert spoon, Apothecaries, Capacity and volume +dessert teaspoon, Cooking (Australian), Capacity and volume +desyatina (farmery), Old Russian, Historical Units of Area +desyatina (state), Old Russian, Historical Units of Area +deunx (11=E2=81=8412 libra, less a twelfth), Ancient Roman, Historical weights +Devanagari number (India and Nepal), Decimal numbers, Roman numbers, Hex, Octal and more +dextans (10=E2=81=8412 libra, less a sixth), Ancient Roman, Historical weights +dhurra, Indian units (Akbar system), Mass and weight +Diameter in inches, (in), Inner Diameter and Circumference of a Ring, Ring size +Diameter in inches, (in), Wire diameter, Wire and Needle Gauge +Diameter in micrometres, (=CE=BCm), Wire diameter, Wire and Needle Gauge +Diameter in millimeters, (mm), Inner Diameter and Circumference of a Ring, Ring size +Diameter in millimetres, (mm), Wire diameter, Wire and Needle Gauge +Diameter in mils, Wire diameter, Wire and Needle Gauge +diarrhea, Acute radiation syndrome, Radiation +diaulos (=CE=B4=CE=AF=CE=B1=CF=85=CE=BB=CE=BF=CF=82), Ancient Greek, Historical Lengths +dichas (=CE=B4=CE=B9=CF=87=CE=AC=CF=82, midfoot), Ancient Greek, Historical Lengths +didrachm (=CE=B4=CE=AF=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 2 drachmae), Ancient Greek (Aeginetic standard), Historical weights +didrachm (=CE=B4=CE=AF=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 2 drachmae), Ancient Greek (Attic/Eubolic standard), Historical weights +digit, British Imperial Measure before 1963, Distance and Length +digitus (finger), Ancient Roman, Historical Lengths +diobol (=CE=B4=CE=B9=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 2 obols), Ancient Greek (Aeginetic standard), Historical weights +diobol (=CE=B4=CE=B9=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 2 obols), Ancient Greek (Attic/Eubolic standard), Historical weights +dioptre (diopter), Optical, Distance and Length +diploun b=C4=93ma (=CE=B4=CE=B9=CF=80=CE=BB=CE=BF=E1=BF=A6=CE=BD =CE=B2=E1=BF=86=CE=BC=CE=B1, double pace), Ancient Greek, Historical Lengths +disintegrations per minute, (dpm), Other units, Radioactivity +disintegrations per second, Other units, Radioactivity +djeba (finger), Ancient Egypt, Historical Lengths +djeser, bu, Ancient Egypt, Historical Lengths +DJF, (Djiboutian Franc), African Curriencies, Currency +Djiboutian Franc, (DJF), African Curriencies, Currency +DKK, (Danish Krone), European Currencies, Currency +dl, (deciliter), Metric, Capacity and volume +dm, (decimeter), Metric, Distance and Length +dm=C2=B2, (square decimeter), Metric, Area +dm=C2=B3, (cubic decimeter), Metric, Capacity and volume +d=C2=B0m=E2=80=B2s=E2=80=B3, (degrees, minutes, seconds), Common Units, Circular measure +dN, (decanewton), International System (SI), Force +dodecaorgion (=CE=B4=CF=89=CE=B4=CE=B5=CE=BA=CE=AC=CF=89=CF=81=CE=B3=CE=BF=CE=BD), Ancient Greek, Historical Units of Area +dodrans (9=E2=81=8412 libra, less a fourth), Ancient Roman, Historical weights +doite, Troy, Mass and weight +dolichos (=CE=B4=CF=8C=CE=BB=CE=B9=CF=87=CE=BF=CF=82), Ancient Greek, Historical Lengths +dolya, Old Russian, Historical weights +Dominican Peso, (DOP), Currencies of the Caribbean, Currency +donum of Cyprus, Historical Units Still In Use Today, Area +DOP, (Dominican Peso), Currencies of the Caribbean, Currency +doppelzentner, Old German (Prussian), Historical weights +d=C5=8Dron (=CE=B4=E1=BF=B6=CF=81=CE=BF=CE=BD), Ancient Greek, Historical Lengths +dou (=E5=B8=82=E6=96=97), Chinese units of 1930, Capacity and volume +dou (=E6=96=97), Chinese units of 1915, Capacity and volume +dozen, Quantity Units, Franctions and Percent +dpm, (disintegrations per minute), Other units, Radioactivity +dr, (dram), Avoirdupois (U.S. / British), Mass and weight +drachma (1=E2=81=848 uncia, from Greek unit =CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=AE), Ancient Roman, Historical weights +drachma (=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=AE, dram), Ancient Greek (Aeginetic standard), Historical weights +drachma (=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=AE, dram), Ancient Greek (Attic/Eubolic standard), Historical weights +dracontic month, Astronomical, Time +dracontic year, Astronomical, Time +dram, (dr), Avoirdupois (U.S. / British), Mass and weight +dram (drachm), (=CA=92), Apothecaries, Mass and weight +DS-3, Computer Connection Speed, Data transfer rate +duella (=E2=85=93 uncia, little double [sixths]), Ancient Roman, Historical weights +duet, Number of Performers, Franctions and Percent +dulum (=D0=B4=D1=83=D0=BB=D1=83=D0=BC) of Bosnia and Herzegovina and Serbia, Historical Units Still In Use Today, Area +dunam (d=C3=B6n=C3=BCm, =D8=AF=D9=88=D9=86=D9=85) of Turkey, Syria, Israel, Palestine, Jordan, Lebanon, Historical Units Still In Use Today, Area +dunam of Iraq, Historical Units Still In Use Today, Area +duodecimal number (radix 12), Other Radix Numerals, Roman numbers, Hex, Octal and more +dwt, (pennyweight), Troy, Mass and weight +dyn, (dyne), Centimeter-Gram-Second System (CGS), Force +dyne, (dyn), Centimeter-Gram-Second System (CGS), Force +dyne centimeter, Metric, Torque +dyne meter, Metric, Torque +dynym or dylym of Albania, Historical Units Still In Use Today, Area +DZD, (Algerian Dinar), African Curriencies, Currency + +## SECTION E +E, (exa), Metric Prefixes, Franctions and Percent +E1, Computer Connection Speed, Data transfer rate +East Caribbean Dollar, (XCD), Currencies of the Caribbean, Currency +Eastern Arabic number (Middle East), Decimal numbers, Roman numbers, Hex, Octal and more +Eb [EiB], (exabyte [exbibyte]), Data Storage and Transmission, Computer storage +Ebit [Eibit], (exabit [exbibit]), Data Storage and Transmission, Computer storage +EDGE, Computer Connection Speed, Data transfer rate +EGP, (Egyptian Pound), African Curriencies, Currency +Egyptian Pound, (EGP), African Curriencies, Currency +electronvolt, (eV), Common Units, Energy and Work +ell, Old Russian, Historical Lengths +ell, British Imperial Measure before 1963, Distance and Length +elle, Old German (Prussian), Historical Lengths +English Music Wire Gauge, Music Wire Gauges, Wire and Needle Gauge +ephah (=D7=90=D7=99=D7=A4=D7=94), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +erg, Common Units, Energy and Work +erg per second, Common Units, Power +Eritrean Nakfa, (ERN), African Curriencies, Currency +ERN, (Eritrean Nakfa), African Curriencies, Currency +escr=C3=B3pulo, Old Portuguese, Historical weights +estadal, Old Spanish, Historical Lengths +estadal cuadrado (square estadal), Old Spanish, Historical Units of Area +ETB, (Ethiopian Birr), African Curriencies, Currency +Ethernet 1000BASE-T, Computer Connection Speed, Data transfer rate +Ethernet 100BASE-T, Computer Connection Speed, Data transfer rate +Ethernet 10BASE-T, Computer Connection Speed, Data transfer rate +Ethernet 10GBASE-T (IEEE 802.3an-2006), Computer Connection Speed, Data transfer rate +Ethernet 40GBASE-T (IEEE 802.3bq-2016), Computer Connection Speed, Data transfer rate +Ethiopian Birr, (ETB), African Curriencies, Currency +etzbah, Biblical, Historical Lengths +EUR, (Euro, =E2=82=AC), Major World Currencies, Currency +Euro, =E2=82=AC, (EUR), Major World Currencies, Currency +European ring size (ISO), European Standard Sizes (ISO 8653:2016, most European countries), Ring size +European shoe size, Continental Europe and Middle East Shoe Size, Shoe Size Conversion +eV, (electronvolt), Common Units, Energy and Work +exa, (E), Metric Prefixes, Franctions and Percent +exabit [exbibit], (Ebit [Eibit]), Data Storage and Transmission, Computer storage +exabyte [exbibyte], (Eb [EiB]), Data Storage and Transmission, Computer storage + +## SECTION F +f, (femto), Metric Prefixes, Franctions and Percent +fai mue (=E0=B8=9F=E0=B8=B2=E0=B8=A2=E0=B8=A1=E0=B8=B7=E0=B8=AD, palm of grain), Thai units, Capacity and volume +Falkland Islands Pound, (FKP), African Curriencies, Currency +famn (fanthom), Old Swedish, Historical Lengths +fanega, Old Spanish Dry Measure, Historical Units of Capacity +fanegada, Old Spanish, Historical Units of Area +fanega de cebada (bushel of barley), Old Spanish, Historical weights +fanega de centeno (bushel of rye), Old Spanish, Historical weights +fanega de trigo (bushel of wheat), Old Spanish, Historical weights +fanga, Old Portuguese Dry Measure, Historical Units of Capacity +fang chi (=E6=96=B9=E5=B0=BA), (chi=C2=B2), Chinese units of 1915, Area +fang chi (=E6=96=B9=E5=B0=BA), (chi=C2=B2), Chinese units of 1930, Area +fang cun (=E6=96=B9=E5=AF=B8), (cun=C2=B2), Chinese units of 1915, Area +fang cun (=E6=96=B9=E5=AF=B8), (cun=C2=B2), Chinese units of 1930, Area +fang zhang (=E6=96=B9=E4=B8=88), (zhang=C2=B2), Chinese units of 1915, Area +fang zhang (=E6=96=B9=E4=B8=88), (zhang=C2=B2), Chinese units of 1930, Area +fan (=E5=88=86), Hong Kong units, Distance and Length +fath, (US fathom), US Nautical Measure, Distance and Length +fath, (fathom), International Nautical Measure, Distance and Length +fathom, (fath), International Nautical Measure, Distance and Length +fbmm, bdft, bf, (boardfoot, board-foot), Lumber measure, Capacity and volume +fc, (foot-candle), Photography units, Illuminance +feddan (=D9=81=D8=AF=D9=91=D8=A7=D9=86=E2=80=8E) of Egypt, Sudan, Syria, Sultanate of Oman, Historical Units Still In Use Today, Area +feet and inches, (x'y"), The American System (US Customary Units) and British Imperial Measures, Distance and Length +female shoe size (common), U.S. and Canada Customary Shoe Size, Shoe Size Conversion +female shoe size (FIA), U.S. and Canada Customary Shoe Size, Shoe Size Conversion +femto, (f), Metric Prefixes, Franctions and Percent +femtosecond, (fs), Common units, Time +fen (=E5=88=86), Chinese units of 1915, Area +fen (=E5=88=86), Chinese units of 1915, Distance and Length +fen (=E5=88=86), Chinese units of 1915 before 1930, Mass and weight +fen (=E5=B8=82=E5=88=86), Chinese units of 1930, Area +fen (=E5=B8=82=E5=88=86), Chinese units of 1930, Distance and Length +fen (=E5=B8=82=E5=88=86), Chinese units between 1930 and 1959, Mass and weight +fen (=E5=B8=82=E5=88=86), Chinese units since 1959, Mass and weight +fever, Acute radiation syndrome, Radiation +fg, (frigoria), Common Units, Energy and Work +fg/h, (frigoria per hour), Common Units, Power +Fijian Dollar, (FJD), Currencies of Australia and Oceania, Currency +Financial Chinese number, Decimal numbers, Roman numbers, Hex, Octal and more +finger, British Imperial Measure before 1963, Distance and Length +firkin, English brewery cask units, Capacity and volume +fj=C3=A4rdingsv=C3=A4g, Old Swedish, Historical Lengths +FJD, (Fijian Dollar), Currencies of Australia and Oceania, Currency +FKP, (Falkland Islands Pound), African Curriencies, Currency +fl dr, (fluid drachm), British Imperial Liquid And Dry, Capacity and volume +fl dr, (fluid dram), U.S. Liquid Measure, Capacity and volume +flock, Quantity Units, Franctions and Percent +fl oz, (fluid ounce), U.S. Liquid Measure, Capacity and volume +fluid drachm, (fl dr), British Imperial Liquid And Dry, Capacity and volume +fluid dram, (=C6=92=CA=92), Apothecaries, Capacity and volume +fluid dram, (fl dr), U.S. Liquid Measure, Capacity and volume +fluid ounce, (oz), U.S. Measure, Historical Units of Capacity +fluid ounce, (oz), British Imperial Liquid And Dry, Capacity and volume +fluid ounce, (=C6=92=E2=84=A5), Apothecaries, Capacity and volume +fluid ounce, (fl oz), U.S. Liquid Measure, Capacity and volume +fluid scruple, British Imperial Liquid And Dry, Capacity and volume +foot, Old Russian, Historical Lengths +foot, (ft), The American System of Measures (US Customary Units), Historical Lengths +foot, (ft), British Imperial Measure before 1963, Distance and Length +foot, (ft), The American System (US Customary Units) and British Imperial Measures, Distance and Length +foot-candle, (fc), Photography units, Illuminance +foot-lambert, Other units, Illuminance +foot length in centimeters, Foot and Last lengths, Shoe Size Conversion +foot length in inches, Foot and Last lengths, Shoe Size Conversion +foot length in millimeters, Foot and Last lengths, Shoe Size Conversion +foot of water, Water (at 39.2=C2=B0F, 4=C2=B0C), Stress and Pressure +foot per hour, British (Imperial) And U.S. System, Speed +foot per minute, British (Imperial) And U.S. System, Speed +foot per second, British (Imperial) And U.S. System, Speed +foot per second squared, (ft/s=C2=B2), British (Imperial) And U.S. System, Acceleration +foot per year, British (Imperial) And U.S. System, Speed +foot-pound, (ft*lbs), British and American, Energy and Work +foot pound-force per second, (ft*lbf/s), British and American, Power +fot (foot), Old Swedish, Historical Lengths +French Catheter Scale (FG or Ch), Medical Needle and Catheter Gauges, Wire and Needle Gauge +French Polynesia CFP Franc, (XPF), Currencies of Australia and Oceania, Currency +frigoria, (fg), Common Units, Energy and Work +frigoria per hour, (fg/h), Common Units, Power +fs, (femtosecond), Common units, Time +ft, (foot), The American System of Measures (US Customary Units), Historical Lengths +ft, (Storage length in feet), CNC Memory Capacity, Computer storage +ft, (Gunter's (surveyors') foot), US Surveyors' Measure, Distance and Length +ft, (foot), British Imperial Measure before 1963, Distance and Length +ft, (foot), The American System (US Customary Units) and British Imperial Measures, Distance and Length +ft=C2=B2, (square foot), British (Imperial) And U.S. System, Historical Units of Area +ft=C2=B2, (square foot), British (Imperial) And U.S. System, Area +ft=C2=B3, (cubic foot), British and U.S. derivatives of length units, Capacity and volume +ft=C2=B3/day, (cubic foot per day), U.S. and British Imperial, Flow rate by volume +ft=C2=B3/hour, (cubic foot per hour), U.S. and British Imperial, Flow rate by volume +ft=C2=B3/min, (cubic foot per minute), U.S. and British Imperial, Flow rate by volume +ft=C2=B3/s, (cubic foot per second), U.S. and British Imperial, Flow rate by volume +ft=C2=B3/year, (cubic foot per year), U.S. and British Imperial, Flow rate by volume +ft*lbf/s, (foot pound-force per second), British and American, Power +ft*lbs, (foot-pound), British and American, Energy and Work +ft/s=C2=B2, (foot per second squared), British (Imperial) And U.S. System, Acceleration +fueang (=E0=B9=80=E0=B8=9F=E0=B8=B7=E0=B9=89=E0=B8=AD=E0=B8=87), Thai units, Mass and weight +fun (=E5=88=86), Japanese, Mass and weight +furlong, US Surveyors' Measure, Distance and Length +furlong, British Imperial Measure before 1963, Distance and Length +furlong, The American System (US Customary Units) and British Imperial Measures, Distance and Length +fuss, Old Austrian, Historical Lengths +fuss, Old German (Prussian), Historical Lengths + +## SECTION G +g, (gram), Metric, Historical weights +g, (Standard acceleration of free fall on Earth), Free Fall Acceleration (Solar System), Acceleration +g, (gram), Metric, Mass and weight +G, (giga), Metric Prefixes, Franctions and Percent +gal, (gallon (liquid)), U.S. Measure, Historical Units of Capacity +gal, (gallon (dry)), U.S. Measure, Historical Units of Capacity +gal, (gallon), British Imperial Liquid And Dry, Capacity and volume +gal, (gallon), U.S. Dry Measure, Capacity and volume +gal, (gallon), U.S. Liquid Measure, Capacity and volume +Gal, (Galileo), Other Units, Acceleration +gal/100km, (gallon per 100 km), Other units, Fuel economy +gal/day, (U.S. gallon per day), U.S. and British Imperial, Flow rate by volume +Galileo, (Gal), Other Units, Acceleration +gallon, (gal), British Imperial Liquid And Dry, Capacity and volume +gallon, (gal), U.S. Dry Measure, Capacity and volume +gallon, (gal), U.S. Liquid Measure, Capacity and volume +gallon-atmosphere (UK), British and American, Energy and Work +gallon-atmosphere (US), British and American, Energy and Work +gallon (dry), (gal), U.S. Measure, Historical Units of Capacity +gallon (liquid), (gal), U.S. Measure, Historical Units of Capacity +gallon per 100 km, (gal/100km), Other units, Fuel economy +gallons per 100 miles, U.S. system, Fuel economy +gallons per 10 miles, U.S. system, Fuel economy +gal/year, (U.S. gallon per year), U.S. and British Imperial, Flow rate by volume +Gambian Dalasi, (GMD), African Curriencies, Currency +garnetz, Old Russian Dry Measure, Historical Units of Capacity +Gastrointestinal X-ray investigation, Radiation dose examples, Radiation +Gb [GiB], (gigabyte [gibibyte]), Data Storage and Transmission, Computer storage +Gbit [Gibit], (gigabit [gibibit]), Data Storage and Transmission, Computer storage +GBP, (British Pound Sterling, =C2=A3), Major World Currencies, Currency +Gbps, (gigabit per second), Basic Units of Data Transfer Rate, Data transfer rate +GBq, (gigabecquerel), SI radioactivity units, Radioactivity +GB/s, (gigabyte per second), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +g/cm=C2=B3, (gram per cubic centimeter), Metric System, Density +g/day, (gram per day), Metric, Flow rate by mass +g/dm=C2=B3, (gram per cubic decimeter), Metric System, Density +GEL, (Georgian Lari), Asian Currencies, Currency +geographical mile, Geographical (German), Distance and Length +Georgian Lari, (GEL), Asian Currencies, Currency +gerah, Biblical, Historical weights +geredium, Ancient Roman, Historical Units of Area +German thousandth, Artillery, Circular measure +ge (=E5=90=88), Chinese units of 1915, Capacity and volume +ge (=E5=90=88), Chinese units of 1930, Capacity and volume +gf, (gravet-force), Gravitational Metric System, Force +Gf, (grave-force), Gravitational Metric System, Force +gf/cm=C2=B2, (gram per square centimeter), Metric, Stress and Pressure +GGP, (Guernsey Pound), European Currencies, Currency +Ghanaian Cedi, (GHS), African Curriencies, Currency +g/hour, (gram per hour), Metric, Flow rate by mass +GHS, (Ghanaian Cedi), African Curriencies, Currency +gibibyte per day, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +gibibyte per hour, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +gibibyte per minute, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +gibibyte per second, (GiB/s), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +gibibyte per week, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +Gibraltar Pound, (GIP), European Currencies, Currency +GiB/s, (gibibyte per second), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +giga, (G), Metric Prefixes, Franctions and Percent +gigabecquerel, (GBq), SI radioactivity units, Radioactivity +gigabit [gibibit], (Gbit [Gibit]), Data Storage and Transmission, Computer storage +gigabit per second, (Gbps), Basic Units of Data Transfer Rate, Data transfer rate +gigabyte [gibibyte], (Gb [GiB]), Data Storage and Transmission, Computer storage +gigabyte per day, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +gigabyte per hour, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +gigabyte per minute, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +gigabyte per second, (GB/s), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +gigabyte per week, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +gigacalories per hour, Common Units, Power +gigacalories per minute, Common Units, Power +gigacalories per second, Common Units, Power +gigatonne of coal equivalent, (Gtce), Coal Energy Equivalent, Energy and Work +gigatonne of oil equivalent, (Gtoe), Oil Energy Equivalent, Energy and Work +gill, U.S. Liquid Measure, Capacity and volume +GIP, (Gibraltar Pound), European Currencies, Currency +g/L, (gram per litre), Metric System, Density +glass-tumbler, Apothecaries, Capacity and volume +g/m=C2=B3, (gram per cubic meter), Metric System, Density +GMD, (Gambian Dalasi), African Curriencies, Currency +g/min, (gram per minute), Metric, Flow rate by mass +g/mL, (gram per millilitre), Metric System, Density +GNF, (Guinean Franc), African Curriencies, Currency +goad, British Imperial Measure before 1963, Distance and Length +Gold (troy ounce), (XAU), Other Currencies and More, Currency +GOST 22483-2012 Standard Wire Cross-Section, (mm=C2=B2), Wire Gauges, Wire and Needle Gauge +go (=E5=90=88), Japanese, Area +go (=E5=90=88), Japanese, Capacity and volume +gph, (U.S. gallon per hour), U.S. and British Imperial, Flow rate by volume +gpm, (U.S. gallon per minute), U.S. and British Imperial, Flow rate by volume +GPRS, Computer Connection Speed, Data transfer rate +gps, (U.S. gallon per second), U.S. and British Imperial, Flow rate by volume +gr, (grain), Apothecaries, Mass and weight +gr, (grain), Avoirdupois (U.S. / British), Mass and weight +grad, (grade), Common Units, Circular measure +grade, (grad), Common Units, Circular measure +gradus (step), Ancient Roman, Historical Lengths +grain, (gr), Apothecaries, Mass and weight +grain, Troy, Mass and weight +grain, (gr), Avoirdupois (U.S. / British), Mass and weight +gram, (g), Metric, Historical weights +gram, (g), Metric, Mass and weight +gram-force, Gravitational Metric System, Force +gram-force centimeter, Metric, Torque +gram-force meter, Metric, Torque +gram per cubic centimeter, (g/cm=C2=B3), Metric System, Density +gram per cubic decimeter, (g/dm=C2=B3), Metric System, Density +gram per cubic meter, (g/m=C2=B3), Metric System, Density +gram per day, (g/day), Metric, Flow rate by mass +gram per hour, (g/hour), Metric, Flow rate by mass +gram per litre, (g/L), Metric System, Density +gram per millilitre, (g/mL), Metric System, Density +gram per minute, (g/min), Metric, Flow rate by mass +gram per second, (g/s), Metric, Flow rate by mass +gram per square centimeter, (gf/cm=C2=B2), Metric, Stress and Pressure +gram per year, (g/year), Metric, Flow rate by mass +gran, Old German (Prussian), Historical weights +grano, Old Spanish, Historical weights +gr=C3=A3o, Old Portuguese, Historical weights +grave-force, (Gf), Gravitational Metric System, Force +gravet-force, (gf), Gravitational Metric System, Force +gray, (Gy), Absorbed radiation dose, Radiation +Gray day, Illuminance examples, Illuminance +great gross, Quantity Units, Franctions and Percent +great hundred, Quantity Units, Franctions and Percent +Greek numeral, Greek numerals, Roman numbers, Hex, Octal and more +Gregorian year, Common units, Time +gross, Quantity Units, Franctions and Percent +g/s, (gram per second), Metric, Flow rate by mass +Gtce, (gigatonne of coal equivalent), Coal Energy Equivalent, Energy and Work +Gtoe, (gigatonne of oil equivalent), Oil Energy Equivalent, Energy and Work +GTQ, (Guatemalan Quetzal), Central American Currencies, Currency +Guatemalan Quetzal, (GTQ), Central American Currencies, Currency +Guernsey Pound, (GGP), European Currencies, Currency +Guinean Franc, (GNF), African Curriencies, Currency +Gunter's (surveyors') chain, (ch), US Surveyors' Measure, Distance and Length +Gunter's (surveyors') foot, (ft), US Surveyors' Measure, Distance and Length +Gunter's (surveyors') link, US Surveyors' Measure, Distance and Length +Gunter's (surveyors') pole, US Surveyors' Measure, Distance and Length +Gunter's (surveyors') yard, US Surveyors' Measure, Distance and Length +Gurley's chain, (ch), US Surveyors' Measure, Distance and Length +Gurley's link, US Surveyors' Measure, Distance and Length +Guyanaese Dollar, (GYD), South American Currencies, Currency +Gy, (gray), Absorbed radiation dose, Radiation +GYD, (Guyanaese Dollar), South American Currencies, Currency +g/year, (gram per year), Metric, Flow rate by mass + +## SECTION H +h, (hecto), Metric Prefixes, Franctions and Percent +Haitian Gourde, (HTG), Currencies of the Caribbean, Currency +half-dozen, Quantity Units, Franctions and Percent +half or .5, (1/2), Fractions, Franctions and Percent +hamma (=E1=BC=85=CE=BC=CE=BC=CE=B1), Ancient Greek, Historical Lengths +hand, (hd), British Imperial Measure before 1963, Distance and Length +hand, The American System (US Customary Units) and British Imperial Measures, Distance and Length +handbreadth, Biblical, Historical Lengths +hao (=E6=AF=AB), Chinese units of 1915, Area +hao (=E6=AF=AB), Chinese units of 1930, Area +hao (=E6=AF=AB), Chinese units of 1915, Distance and Length +hao (=E6=AF=AB), Chinese units of 1930, Distance and Length +hao (=E6=AF=AB), Chinese units of 1915 before 1930, Mass and weight +hao (=E6=AF=AB), Chinese units between 1930 and 1959, Mass and weight +hao (=E6=AF=AB), Chinese units since 1959, Mass and weight +haploun b=C4=93ma (=E1=BC=81=CF=80=CE=BB=CE=BF=E1=BF=A6=CE=BD =CE=B2=E1=BF=86=CE=BC=CE=B1, single pace), Ancient Greek, Historical Lengths +hap (=E0=B8=AB=E0=B8=B2=E0=B8=9A), Thai units, Mass and weight +hd, (hand), British Imperial Measure before 1963, Distance and Length +headache, Acute radiation syndrome, Radiation +hectare, Metric, Historical Units of Area +hectare, Metric, Area +hecto, (h), Metric Prefixes, Franctions and Percent +hectoliter, (hl), Metric, Capacity and volume +hectopascal, (hPa), Metric, Stress and Pressure +hekteus (=E1=BC=91=CE=BA=CF=84=CE=B5=CF=8D=CF=82, a sixth of a medimnos), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +hektos (=E1=BC=95=CE=BA=CF=84=CE=BF=CF=82), Ancient Greek, Historical Units of Area +h=C4=93miekton (=E1=BC=A1=CE=BC=CE=AF=CE=B5=CE=BA=CF=84=CE=BF=CE=BD), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +h=C4=93miektos (=E1=BC=A1=CE=BC=CE=AF=CE=B5=CE=BA=CF=84=CE=BF=CF=82), Ancient Greek, Historical Units of Area +hemina (pint), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +hemiobol (=E1=BC=A1=CE=BC=CE=B9=CF=89=CE=B2=CF=8C=CE=BB=CE=B9=CE=BF=CE=BD, =C2=BD obol), Ancient Greek (Aeginetic standard), Historical weights +hemiobol (=E1=BC=A1=CE=BC=CE=B9=CF=89=CE=B2=CF=8C=CE=BB=CE=B9=CE=BF=CE=BD, =C2=BD obol), Ancient Greek (Attic/Eubolic standard), Historical weights +hemipodion (=E1=BC=A1=CE=BC=CE=B9=CF=80=CF=8C=CE=B4=CE=B9=CE=BF=CE=BD), Ancient Greek, Historical Lengths +hemitetartemorion (=E1=BC=A1=CE=BC=CE=B9=CF=84=CE=B5=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, =C2=BD tetartemorion), Ancient Greek (Aeginetic standard), Historical weights +hemitetartemorion (=E1=BC=A1=CE=BC=CE=B9=CF=84=CE=B5=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, =C2=BD tetartemorion), Ancient Greek (Attic/Eubolic standard), Historical weights +hexadecimal number (radix 16), Common Radix Numerals, Roman numbers, Hex, Octal and more +hexapod=C4=93s or orgya (=E1=BC=91=CE=BE=CE=B1=CF=80=CF=8C=CE=B4=CE=B7=CF=82, =E1=BD=80=CF=81=CE=B3=CF=85=CE=B9=CE=AC), Ancient Greek, Historical Units of Area +h ft, (hoppus foot, hoppus cube), Lumber measure, Capacity and volume +HH:MM:SS, (time per kilometer), Pace (Various Sports), Speed +HH:MM:SS, (time per mile), Pace (Various Sports), Speed +HH:MM:SS, (time per 500 meters (500m split in rowing)), Pace (Various Sports), Speed +hin, Biblical and Talmudic Liquid Measure (Old Testament), Historical Units of Capacity +hippikon (=E1=BC=B1=CF=80=CF=80=CE=B9=CE=BA=CF=8C=CE=BD), Ancient Greek, Historical Lengths +hiro (=E5=B0=8B), Japanese, Distance and Length +HKD, (Hong Kong Dollar, $), Major World Currencies, Currency +hl, (hectoliter), Metric, Capacity and volume +HNL, (Honduran Lempira), Central American Currencies, Currency +hogshead, English brewery cask units, Capacity and volume +hogshead, English wine cask units, Capacity and volume +homestead, British (Imperial) And U.S. System, Area +Honduran Lempira, (HNL), Central American Currencies, Currency +Hong Kong Dollar, $, (HKD), Major World Currencies, Currency +Hong Kong shoe size, Hong Kong Shoe Size, Shoe Size Conversion +hoppus foot, hoppus cube, (h ft), Lumber measure, Capacity and volume +hoppus ton, (HT), Lumber measure, Capacity and volume +horizontal pitch, (HP), Computer Equipment, Distance and Length +horsepower, boiler, (hp(S)), Common Units, Power +horsepower, electric, (hp(E)), Common Units, Power +horsepower hour, (hp*h), Common Units, Energy and Work +horsepower, hydraulic, Common Units, Power +horsepower, mechanical (imperial), (hp(I)), Common Units, Power +horsepower, metric, (hp(M)), Common Units, Power +hour, Common units, Time +hourly average background radiation, Radiation dose examples, Radiation +hour per gibibyte, Data Transfer Time (older, 1024-based), Data transfer rate +hour per gigabyte, Data Transfer Time (current, 1000-based), Data transfer rate +hour per mebibyte, Data Transfer Time (older, 1024-based), Data transfer rate +hour per megabyte, Data Transfer Time (current, 1000-based), Data transfer rate +HP, (horizontal pitch), Computer Equipment, Distance and Length +hPa, (hectopascal), Metric, Stress and Pressure +hp(E), (horsepower, electric), Common Units, Power +hp*h, (horsepower hour), Common Units, Energy and Work +hp(I), (horsepower, mechanical (imperial)), Common Units, Power +hp(M), (horsepower, metric), Common Units, Power +hp(S), (horsepower, boiler), Common Units, Power +HRK, (Croatian Kuna), European Currencies, Currency +HT, (hoppus ton), Lumber measure, Capacity and volume +HTG, (Haitian Gourde), Currencies of the Caribbean, Currency +HUF, (Hungarian Forint), European Currencies, Currency +hundred, Quantity Units, Franctions and Percent +Hungarian Forint, (HUF), European Currencies, Currency +hu (=E5=BF=BD), Chinese units of 1915, Distance and Length +hu (=E5=BF=BD), Chinese units of 1930, Distance and Length +hu (=E5=BF=BD), Chinese units since 1959, Mass and weight +hu (=E6=96=9B), Chinese units of 1915, Capacity and volume +hyakume (=E7=99=BE=E7=9B=AE), Japanese, Mass and weight + +## SECTION I +Icelandic Kr=C3=B3na, (ISK), European Currencies, Currency +IDR, (Indonesian Rupiah), Asian Currencies, Currency +IEC 60228:2004 Standard Wire Cross-Section, (mm=C2=B2), Wire Gauges, Wire and Needle Gauge +ILS, (Israeli New Sheqel), Middle East Currencies, Currency +IMP, (Manx pound (Isle of Man)), European Currencies, Currency +in, (Diameter in inches), Inner Diameter and Circumference of a Ring, Ring size +in, (Circumference in inches), Inner Diameter and Circumference of a Ring, Ring size +in, (Diameter in inches), Wire diameter, Wire and Needle Gauge +in, (inch), The American System of Measures (US Customary Units), Historical Lengths +in, (inch), British Imperial Measure before 1963, Distance and Length +in, (inch), The American System (US Customary Units) and British Imperial Measures, Distance and Length +in=C2=B2, (Section area in square inches), Wire section area, Wire and Needle Gauge +in=C2=B2, (square inch), British (Imperial) And U.S. System, Historical Units of Area +in=C2=B2, (square inch), British (Imperial) And U.S. System, Area +in=C2=B3, (cubic inch), British and U.S. derivatives of length units, Capacity and volume +in=C2=B3/day, (cubic inch per day), U.S. and British Imperial, Flow rate by volume +in=C2=B3/hour, (cubic inch per hour), U.S. and British Imperial, Flow rate by volume +in=C2=B3/min, (cubic inch per minute), U.S. and British Imperial, Flow rate by volume +in=C2=B3/s, (cubic inch per second), U.S. and British Imperial, Flow rate by volume +in=C2=B3/year, (cubic inch per year), U.S. and British Imperial, Flow rate by volume +inch, Old Russian, Historical Lengths +inch, (in), The American System of Measures (US Customary Units), Historical Lengths +inch, (in), British Imperial Measure before 1963, Distance and Length +inch, (in), The American System (US Customary Units) and British Imperial Measures, Distance and Length +inch of mercury, Mercury, Stress and Pressure +inch of water, Water (at 39.2=C2=B0F, 4=C2=B0C), Stress and Pressure +inch per hour, British (Imperial) And U.S. System, Speed +inch per minute, British (Imperial) And U.S. System, Speed +inch per second, British (Imperial) And U.S. System, Speed +inch per second squared, (in/s=C2=B2), British (Imperial) And U.S. System, Acceleration +inch per year, British (Imperial) And U.S. System, Speed +Indian Rupee, (INR), Asian Currencies, Currency +Indonesian Rupiah, (IDR), Asian Currencies, Currency +INR, (Indian Rupee), Asian Currencies, Currency +in/s=C2=B2, (inch per second squared), British (Imperial) And U.S. System, Acceleration +IQD, (Iraqi Dinar), Middle East Currencies, Currency +Iranian Rial, (IRR), Middle East Currencies, Currency +Iraqi Dinar, (IQD), Middle East Currencies, Currency +IRR, (Iranian Rial), Middle East Currencies, Currency +ISDN, Computer Connection Speed, Data transfer rate +ISK, (Icelandic Kr=C3=B3na), European Currencies, Currency +Israeli New Sheqel, (ILS), Middle East Currencies, Currency +iteru (river measure), Ancient Egypt, Historical Lengths + +## SECTION J +J, (joule), International System (SI), Energy and Work +Jamaican Dollar, (JMD), Currencies of the Caribbean, Currency +Japanese Yen, =C2=A5, (JPY), Major World Currencies, Currency +JEP, (Jersey Pound), European Currencies, Currency +Jersey Pound, (JEP), European Currencies, Currency +jin (=E5=B8=82=E6=96=A4), Chinese units between 1930 and 1959, Mass and weight +jin (=E5=B8=82=E6=96=A4), Chinese units since 1959, Mass and weight +jin (=E6=96=A4), Chinese units of 1915 before 1930, Mass and weight +JMD, (Jamaican Dollar), Currencies of the Caribbean, Currency +JOD, (Jordanian Dinar), Asian Currencies, Currency +Jordanian Dinar, (JOD), Asian Currencies, Currency +joule, (J), International System (SI), Energy and Work +joule per hour, Common Units, Power +joule per minute, Common Units, Power +joule per second, Common Units, Power +jo (=E4=B8=88), Japanese, Distance and Length +jo (=E7=95=B3), Japanese, Area +JPY, (Japanese Yen, =C2=A5), Major World Currencies, Currency +Julian year, Common units, Time + +## SECTION K +k, (kilo), Metric Prefixes, Franctions and Percent +K, (kelvin), Temperature increment conversion, Temperature increment +K, (kelvin), Temperature scale conversion, Temperature +kalamos (=CE=BA=CE=AC=CE=BB=CE=B1=CE=BC=CE=BF=CF=82), Ancient Greek, Historical Lengths +kam mue (=E0=B8=81=E0=B8=B3=E0=B8=A1=E0=B8=B7=E0=B8=AD, hand of grain), Thai units, Capacity and volume +kan, kanme (=E8=B2=AB, =E8=B2=AB=E7=9B=AE), Japanese, Mass and weight +karch, Old Austrian, Historical weights +kav (=D7=A7=D7=91), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +Kazakhstani Tenge, (KZT), Asian Currencies, Currency +Kbit [Kibit], (kilobit [kibibit]), Data Storage and Transmission, Computer storage +Kb [KiB], (kilobyte [kibybyte]), Data Storage and Transmission, Computer storage +kBOE, (kilobarrel of oil equivalent), Oil Energy Equivalent, Energy and Work +Kbps, (kilobit per second), Basic Units of Data Transfer Rate, Data transfer rate +kBq, (kilobecquerel), SI radioactivity units, Radioactivity +KB/s, (kilobyte per second), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +kcal, (kilocalorie), Common Units, Energy and Work +Kcmil, (Section area in thousands of circular mils), Wire section area, Wire and Needle Gauge +kcmil, MCM, (thousand of circular mils), Units for Measuring Wire Gauges, Area +kelvin, (K), Temperature increment conversion, Temperature increment +kelvin, (K), Temperature scale conversion, Temperature +Kenyan Shilling, (KES), African Curriencies, Currency +ken (=E9=96=93), Japanese, Distance and Length +keramion (=CE=BA=CE=B5=CF=81=CE=AC=CE=BC=CE=B9=CE=BF=CE=BD, Roman amphora), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +KES, (Kenyan Shilling), African Curriencies, Currency +kezayit (olive-size, =D7=9B=D6=B0=D6=BC=D7=96=D6=B7=D7=99=D6=B4=D7=AA), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +kg, (kilogram), Metric, Historical weights +kg, (kilogram), Metric, Mass and weight +kg/cm=C2=B3, (kilogram per cubic centimeter), Metric System, Density +kg/day, (kilogram per day), Metric, Flow rate by mass +kg/dm=C2=B3, (kilogram per cubic decimeter), Metric System, Density +kgf, (kilogram-force), Gravitational Metric System, Force +kgf.cm, (kilogram-force centimeter), Metric, Torque +kgf/cm=C2=B2, (kilogram per square centimeter), Metric, Stress and Pressure +kgf.m, (kilogram-force meter), Metric, Torque +kgf/m=C2=B2, (kilogram per square meter), Metric, Stress and Pressure +kg/hour, (kilogram per hour), Metric, Flow rate by mass +kg/L, (kilogram per litre), Metric System, Density +kg/m=C2=B3, (kilogram per cubic meter), Metric System, Density +kg/min, (kilogram per minute), Metric, Flow rate by mass +kg/mL, (kilogram per millilitre), Metric System, Density +kg/s, (kilogram per second), Metric, Flow rate by mass +KGS, (Kyrgystani Som), Asian Currencies, Currency +kg/year, (kilogram per year), Metric, Flow rate by mass +Khmer number, Decimal numbers, Roman numbers, Hex, Octal and more +KHR, (Cambodian Riel), Asian Currencies, Currency +khuep (=E0=B8=84=E0=B8=B7=E0=B8=9A, span), Thai units, Distance and Length +kibibyte per day, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +kibibyte per hour, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +kibibyte per minute, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +kibibyte per second, (KiB/s), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +kibibyte per week, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +KiB/s, (kibibyte per second), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +kilderkin, English brewery cask units, Capacity and volume +kilo, (k), Metric Prefixes, Franctions and Percent +kilobarrel of oil equivalent, (kBOE), Oil Energy Equivalent, Energy and Work +kilobecquerel, (kBq), SI radioactivity units, Radioactivity +kilobit [kibibit], (Kbit [Kibit]), Data Storage and Transmission, Computer storage +kilobit per second, (Kbps), Basic Units of Data Transfer Rate, Data transfer rate +kilobyte [kibybyte], (Kb [KiB]), Data Storage and Transmission, Computer storage +kilobyte per day, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +kilobyte per hour, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +kilobyte per minute, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +kilobyte per second, (KB/s), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +kilobyte per week, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +kilocalorie, (kcal), Common Units, Energy and Work +kilocalories per hour, Common Units, Power +kilocalories per minute, Common Units, Power +kilocalories per second, Common Units, Power +kilogram, (kg), Metric, Historical weights +kilogram, (kg), Metric, Mass and weight +kilogram-force, (kgf), Gravitational Metric System, Force +kilogram-force centimeter, (kgf.cm), Metric, Torque +kilogram-force meter, (kgf.m), Metric, Torque +kilogramm-force meter per second, Common Units, Power +kilogram of liquefied natural gas, higher heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +kilogram of liquefied natural gas, lower heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +kilogram of LPG, higher heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +kilogram of LPG, lower heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +kilogram of TNT, TNT Energy Equivalent, Energy and Work +kilogram per cubic centimeter, (kg/cm=C2=B3), Metric System, Density +kilogram per cubic decimeter, (kg/dm=C2=B3), Metric System, Density +kilogram per cubic meter, (kg/m=C2=B3), Metric System, Density +kilogram per day, (kg/day), Metric, Flow rate by mass +kilogram per hour, (kg/hour), Metric, Flow rate by mass +kilogram per litre, (kg/L), Metric System, Density +kilogram per millilitre, (kg/mL), Metric System, Density +kilogram per minute, (kg/min), Metric, Flow rate by mass +kilogram per second, (kg/s), Metric, Flow rate by mass +kilogram per square centimeter, (kgf/cm=C2=B2), Metric, Stress and Pressure +kilogram per square meter, (kgf/m=C2=B2), Metric, Stress and Pressure +kilogram per year, (kg/year), Metric, Flow rate by mass +kilojoule, (kJ), International System (SI), Energy and Work +kilometer, (km), Metric, Historical Lengths +kilometer, (km), Metric, Distance and Length +kilometer per hour, Metric, Speed +kilometer per minute, Metric, Speed +kilometer per second, (km/s), Metric, Speed +kilometer per second squared, (km/s=C2=B2), Metric, Acceleration +kilometer per year, Metric, Speed +kilonewton, (kN), International System (SI), Force +kilonewton (on Earth surface), (kN), Metric, Mass and weight +kilonewton per square meter, (kN/m=C2=B2), Metric, Stress and Pressure +kilopascal, (kPa), Metric, Stress and Pressure +kilopond, (kp), Gravitational Metric System, Force +kilopound, kip (mass), Avoirdupois (U.S. / British), Mass and weight +kilotonne, Metric, Mass and weight +kilowatt, (kW), International System (SI), Power +kilowatt hour, (kW*h), Common Units, Energy and Work +kin (=E6=96=A4), Japanese, Mass and weight +kipf, (kip-force), English Engineering and British Gravitational Units, Force +kip-force, (kipf), English Engineering and British Gravitational Units, Force +kirat (=D9=82=D9=8A=D8=B1=D8=A7=D8=B7) of Egypt, Historical Units Still In Use Today, Area +kJ, (kilojoule), International System (SI), Energy and Work +klafner, Old Austrian, Historical Lengths +klima, Ancient Roman, Historical Units of Area +km, (kilometer), Metric, Historical Lengths +km, (kilometer), Metric, Distance and Length +km=C2=B2, (square kilometer), Metric, Historical Units of Area +km=C2=B2, (square kilometer), Metric, Area +km=C2=B3, (cubic kilometer), Metric, Capacity and volume +KMF, (Comorian Franc), African Curriencies, Currency +km/gal, (km per gallon), Other units, Fuel economy +km/l, (km per litre), Metric system, Fuel economy +km per gallon, (km/gal), Other units, Fuel economy +km per litre, (km/l), Metric system, Fuel economy +km/s, (kilometer per second), Metric, Speed +km/s=C2=B2, (kilometer per second squared), Metric, Acceleration +kN, (kilonewton), International System (SI), Force +kN, (kilonewton (on Earth surface)), Metric, Mass and weight +knet (rod of cord), Ancient Egypt, Historical Lengths +kN/m=C2=B2, (kilonewton per square meter), Metric, Stress and Pressure +knot, Nautical, Speed +kochliarion (=CE=BA=CE=BF=CF=87=CE=BB=CE=B9=CE=AC=CF=81=CE=B9=CE=BF=CE=BD), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +kochliarion (=CE=BA=CE=BF=CF=87=CE=BB=CE=B9=CE=AC=CF=81=CE=B9=CE=BF=CE=BD, spoon), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +koku (=E7=9F=B3), Japanese, Capacity and volume +konch=C4=93 (=CE=BA=CF=8C=CE=B3=CF=87=CE=B7), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +kondylos (=CE=BA=CF=8C=CE=BD=CE=B4=CF=85=CE=BB=CE=BF=CF=82, two fingers), Ancient Greek, Historical Lengths +kor (=D7=9B=D7=95=D7=A8), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +kosaya sazhen, Old Russian, Historical Lengths +kotyl=C4=93 or h=C4=93mina (=CE=BA=CE=BF=CF=84=CF=8D=CE=BB=CE=B7, =E1=BC=A1=CE=BC=CE=AF=CE=BD=CE=B1), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +kotyl=C4=93, tryblion or h=C4=93mina (=CE=BA=CE=BF=CF=84=CF=8D=CE=BB=CE=B7, =CF=84=CF=81=CF=8D=CE=B2=CE=BB=CE=B9=CE=BF=CE=BD, =E1=BC=A1=CE=BC=CE=AF=CE=BD=CE=B1), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +kp, (kilopond), Gravitational Metric System, Force +kPa, (kilopascal), Metric, Stress and Pressure +KPW, (North Korean Won), Asian Currencies, Currency +krabiat (=E0=B8=81=E0=B8=A3=E0=B8=B0=E0=B9=80=E0=B8=9A=E0=B8=B5=E0=B8=A2=E0=B8=94, quarter of a finger), Thai units, Distance and Length +KRW, (South Korean Won), Asian Currencies, Currency +ksi, (thousand pounds per square inch), British and U.S. (Imperial system), Stress and Pressure +Kuwaiti Dinar, (KWD), Middle East Currencies, Currency +kvarter, Old Swedish, Historical Lengths +kW, (kilowatt), International System (SI), Power +KWD, (Kuwaiti Dinar), Middle East Currencies, Currency +kW*h, (kilowatt hour), Common Units, Energy and Work +kwian (=E0=B9=80=E0=B8=81=E0=B8=A7=E0=B8=B5=E0=B8=A2=E0=B8=99, cartload), Thai units, Capacity and volume +kyathos (=CE=BA=CF=8D=CE=B1=CE=B8=CE=BF=CF=82), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +kyathos (=CE=BA=CF=8D=CE=B1=CE=B8=CE=BF=CF=82), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +KYD, (Cayman Islands Dollar), Currencies of the Caribbean, Currency +Kyrgystani Som, (KGS), Asian Currencies, Currency +KZT, (Kazakhstani Tenge), Asian Currencies, Currency + +## SECTION L +l, (liter), Metric, Historical Units of Capacity +l, (liter), Metric, Capacity and volume +L, (Planck length), Natural units, Distance and Length +l/100km, (litres per 100 km), Metric system, Fuel economy +l/10km, (litres per 10 km), Metric system, Fuel economy +L=E2=81=BB=C2=B9MT=E2=81=BB=C2=B2, (Planck pressure), Natural units, Stress and Pressure +L=C2=B2, (Planck area), Natural units, Area +L=C2=B2MT=E2=81=BB=C2=B2, (Planck energy), Natural units, Energy and Work +L=C2=B2MT=E2=81=BB=C2=B3, (Planck power), Natural units, Power +L=C2=B3, (Planck volume), Natural units, Capacity and volume +L=E2=81=BB=C2=B3M, (Planck density), Natural units, Density +labor, Old Spanish, Historical Units of Area +LAK, (Laotian Kip), Asian Currencies, Currency +land, British Imperial Measure before 1963, Distance and Length +land, The American System (US Customary Units) and British Imperial Measures, Distance and Length +Laotian Kip, (LAK), Asian Currencies, Currency +last length in cm, Foot and Last lengths, Shoe Size Conversion +last length in mm, Foot and Last lengths, Shoe Size Conversion +last lentgh in in, Foot and Last lengths, Shoe Size Conversion +l atm, (liter-atmosphere), Common Units, Energy and Work +lb, (pound), Avoirdupois (U.S.), Historical weights +lb, (pound), Avoirdupois (U.S. / British), Mass and weight +lb/day, (pound per day), U.S. and British Imperial, Flow rate by mass +lbf, (pound-force), English Engineering and British Gravitational Units, Force +lb/ft=C2=B3, (pound per cubic foot), British and U.S., Density +lb/gal, (pound per U.S. gallon), British and U.S., Density +lb/hour, (pound per hour), U.S. and British Imperial, Flow rate by mass +lb/in=C2=B3, (pound per cubic inch), British and U.S., Density +lb/min, (pound per minute), U.S. and British Imperial, Flow rate by mass +LBP, (Lebanese Pound), African Curriencies, Currency +lb/s, (pound per second), U.S. and British Imperial, Flow rate by mass +lbsf.ft, (pound-force foot), British and U.S., Torque +lbsf.in, (pound-force inch), British and U.S., Torque +lb/yd=C2=B3, (pound per cubic yard), British and U.S., Density +lb/year, (pound per year), U.S. and British Imperial, Flow rate by mass +l/day, (liter per day), Metric, Flow rate by volume +league, British Imperial Measure before 1963, Distance and Length +league, The American System (US Customary Units) and British Imperial Measures, Distance and Length +league (square), Old Spanish, Historical Units of Area +Lebanese Pound, (LBP), African Curriencies, Currency +legua, Old Spanish, Historical Lengths +legua de por grado (league of the degree), Old Spanish, Historical Lengths +legua marina (nautical), Old Spanish, Historical Lengths +Lesotho Loti, (LSL), African Curriencies, Currency +letek (=D7=9C=D7=AA=D7=9A), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +leuga (league), Ancient Roman, Historical Lengths +leukopenia, Acute radiation syndrome, Radiation +l/hour, (liter per hour), Metric, Flow rate by volume +liang (=E5=85=A9), Chinese units of 1915 before 1930, Mass and weight +liang (=E5=B8=82=E4=B8=A4), Chinese units since 1959, Mass and weight +liang (=E5=B8=82=E5=85=A9), Chinese units between 1930 and 1959, Mass and weight +Liberian Dollar, (LRD), African Curriencies, Currency +libra, Old Spanish, Historical weights +libra (Roman pound, balance), Ancient Roman, Historical weights +Libyan Dinar, (LYD), African Curriencies, Currency +lichas (=CE=BB=CE=B9=CF=87=CE=AC=CF=82), Ancient Greek, Historical Lengths +lieue commune, Old French, Historical Lengths +lieue de post, Old French, Historical Lengths +lieue marine, Old French, Historical Lengths +lieue metrique, Old French, Historical Lengths +light microsecond, Grace Hopper's units of distance, Distance and Length +light minute, Astronomical, Distance and Length +light nanosecond, Grace Hopper's units of distance, Distance and Length +light picosecond, Grace Hopper's units of distance, Distance and Length +light second, Astronomical, Distance and Length +light year, Astronomical, Distance and Length +ligne, Old French, Historical Lengths +ligula (spoonful), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +line, Old Russian, Historical Lengths +line, British Imperial Measure before 1963, Distance and Length +line, The American System (US Customary Units) and British Imperial Measures, Distance and Length +linea, Old Spanish, Historical Lengths +linha, Old Portuguese, Historical Lengths +linie, Old Austrian, Historical Lengths +linie, Old German (Prussian), Historical Lengths +linje (line) after 1855, Old Swedish, Historical Lengths +linje (line) before 1855, Old Swedish, Historical Lengths +lispund, Old Swedish, Historical weights +liter, (l), Metric, Historical Units of Capacity +liter, (l), Metric, Capacity and volume +liter-atmosphere, (l atm), Common Units, Energy and Work +liter of liquefied natural gas, higher heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +liter of liquefied natural gas, lower heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +liter of LPG, higher heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +liter of LPG, lower heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +liter per day, (l/day), Metric, Flow rate by volume +liter per hour, (l/hour), Metric, Flow rate by volume +liter per minute, (l/min), Metric, Flow rate by volume +liter per second, (l/s), Metric, Flow rate by volume +liter per year, (l/year), Metric, Flow rate by volume +litres per 100 km, (l/100km), Metric system, Fuel economy +litres per 100 miles, British system, Fuel economy +litres per 10 km, (l/10km), Metric system, Fuel economy +litron, Old French, Historical Units of Capacity +livre, Old French, Historical weights +li (=E5=B8=82=E5=8E=98), Chinese units since 1959, Mass and weight +li (=E5=B8=82=E9=87=8C), Chinese units of 1930, Distance and Length +li (=E5=B8=82=E9=87=90), Chinese units between 1930 and 1959, Mass and weight +li (=E9=87=8C), Chinese units of 1915, Distance and Length +li (=E9=87=90), Chinese units of 1915 before 1930, Mass and weight +li (=E9=87=90 or =E5=8E=98), Chinese units of 1915, Area +li (=E9=87=90 or =E5=8E=98), Chinese units of 1930, Area +li (=E9=87=90 or =E5=8E=98), Chinese units of 1915, Distance and Length +li (=E9=87=90 or =E5=8E=98), Chinese units of 1930, Distance and Length +LKR, (Sri Lankan Rupee), Asian Currencies, Currency +lm/cm=C2=B2, (lumen per square centimeter), Luminamce per area units, Illuminance +lm/ft=C2=B2, (lumen per square foot), Luminamce per area units, Illuminance +l/min, (liter per minute), Metric, Flow rate by volume +lm/in=C2=B2, (lumen per square inch), Luminamce per area units, Illuminance +lm/m=C2=B2, (lumen per square meter), Luminamce per area units, Illuminance +LMT=E2=81=BB=C2=B2, (Planck force), Natural units, Force +log, Biblical and Talmudic Liquid Measure (Old Testament), Historical Units of Capacity +log (=D7=9C=D7=92), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +long hundredweight (UK), Avoirdupois (U.S. / British), Mass and weight +long ton-force foot, British and U.S., Torque +long ton (UK), Avoirdupois (U.S. / British), Mass and weight +long ton (U.K.) per square foot, British and U.S. (Imperial system), Stress and Pressure +long ton (U.K.) per square inch, British and U.S. (Imperial system), Stress and Pressure +long (UK) ton per day, U.S. and British Imperial, Flow rate by mass +long (UK) ton per hour, U.S. and British Imperial, Flow rate by mass +long (UK) ton per minute, U.S. and British Imperial, Flow rate by mass +long (UK) ton per second, U.S. and British Imperial, Flow rate by mass +long (UK) ton per year, U.S. and British Imperial, Flow rate by mass +lot, Old Russian, Historical weights +loth, Old Austrian, Historical weights +loth, Old German (Prussian), Historical weights +LRD, (Liberian Dollar), African Curriencies, Currency +l/s, (liter per second), Metric, Flow rate by volume +LSL, (Lesotho Loti), African Curriencies, Currency +LTE, Computer Connection Speed, Data transfer rate +lumen per square centimeter, (lm/cm=C2=B2), Luminamce per area units, Illuminance +lumen per square foot, (lm/ft=C2=B2), Luminamce per area units, Illuminance +lumen per square inch, (lm/in=C2=B2), Luminamce per area units, Illuminance +lumen per square meter, (lm/m=C2=B2), Luminamce per area units, Illuminance +lux (lumen per square meter), (lx), International System (SI), Illuminance +lx, (lux (lumen per square meter)), International System (SI), Illuminance +LYD, (Libyan Dinar), African Curriencies, Currency +l/year, (liter per year), Metric, Flow rate by volume + +## SECTION M +m, (meter), Metric, Historical Lengths +m, (Storage length in meters), CNC Memory Capacity, Computer storage +m, (milli), Metric Prefixes, Franctions and Percent +m, (meter), Metric, Distance and Length +M, (mega), Metric Prefixes, Franctions and Percent +M, (Planck mass), Natural units, Mass and weight +m=C2=B2, (square meter), Metric, Historical Units of Area +m=C2=B2, (square meter), Metric, Area +m=C2=B3, (cubic meter), Metric, Historical Units of Capacity +m=C2=B3, (cubic meter), Metric, Capacity and volume +m=C2=B3/day, (cubic meter per day), Metric, Flow rate by volume +m=C2=B3/hour, (cubic meter per hour), Metric, Flow rate by volume +m=C2=B3/min, (cubic meter per minute), Metric, Flow rate by volume +m=C2=B3/s, (cubic meter per second), Metric, Flow rate by volume +m=C2=B3/year, (cubic meter per year), Metric, Flow rate by volume +Macanese Pataca, (MOP), Asian Currencies, Currency +Macedonian Denar, (MKD), European Currencies, Currency +mace troy, Hong Kong, Mass and weight +mace (tsin), Hong Kong, Mass and weight +MAD, (Moroccan Dirham), African Curriencies, Currency +makhovaya sazhen, Old Russian, Historical Lengths +Malagasy Ariary, (MGA), African Curriencies, Currency +Malawian Kwacha, (MWK), African Curriencies, Currency +Malaysian Ringgit, (MYR), Asian Currencies, Currency +Maldivian Rufiyaa, (MVR), Asian Currencies, Currency +male shoe size, U.S. and Canada Customary Shoe Size, Shoe Size Conversion +Manx pound (Isle of Man), (IMP), European Currencies, Currency +manzana of Argentina, Historical Units Still In Use Today, Area +manzana of Belize, Historical Units Still In Use Today, Area +manzana of Costa Rica, Historical Units Still In Use Today, Area +manzana of Guatemala, Historical Units Still In Use Today, Area +manzana of Honduras, Historical Units Still In Use Today, Area +manzana of Nicaragua, Historical Units Still In Use Today, Area +maquia, Old Portuguese Dry Measure, Historical Units of Capacity +marco, Old Spanish, Historical weights +mark, Old Swedish, Historical weights +mark, Old Austrian, Historical weights +mark, Old German (Prussian), Historical weights +m=C4=81sh=C4=81, Indian units (Akbar system), Mass and weight +maund, Indian units (Akbar system), Mass and weight +Mauritanian Ouguiya, (MRU), African Curriencies, Currency +Mauritian Rupee, (MUR), African Curriencies, Currency +mayon/mayong (=E0=B8=A1=E0=B8=B2=E0=B8=A2=E0=B8=99/=E0=B8=A1=E0=B8=B0=E0=B8=A2=E0=B8=87), Thai units, Mass and weight +Mbit [Mibit], (megabit [mebibit]), Data Storage and Transmission, Computer storage +Mb [MiB], (megabyte [mebibyte]), Data Storage and Transmission, Computer storage +Mbps, (megabit per second), Basic Units of Data Transfer Rate, Data transfer rate +MBq, (megabecquerel), SI radioactivity units, Radioactivity +MB/s, (megabyte per second), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +Mcal, (megacalorie), Common Units, Energy and Work +mcf, (mil cubic feet), British and U.S. derivatives of length units, Capacity and volume +mcg, (microgram), Metric, Mass and weight +mCi, (millicurie), Other units, Radioactivity +mC/kg, (millicoulomb per kilogram), Exposure to ionizing radiation, Radiation +MDL, (Moldovan Leu), European Currencies, Currency +mebibyte per day, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +mebibyte per hour, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +mebibyte per minute, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +mebibyte per second, (MiB/s), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +mebibyte per week, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +medimnos (=CE=BC=CE=AD=CE=B4=CE=B9=CE=BC=CE=BD=CE=BF=CF=82), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +medio, Old Spanish Dry Measure, Historical Units of Capacity +mega, (M), Metric Prefixes, Franctions and Percent +megabecquerel, (MBq), SI radioactivity units, Radioactivity +megabit [mebibit], (Mbit [Mibit]), Data Storage and Transmission, Computer storage +megabit per second, (Mbps), Basic Units of Data Transfer Rate, Data transfer rate +megabyte [mebibyte], (Mb [MiB]), Data Storage and Transmission, Computer storage +megabyte per day, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +megabyte per hour, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +megabyte per minute, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +megabyte per second, (MB/s), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +megabyte per week, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +megacalorie, (Mcal), Common Units, Energy and Work +megajoule, (MJ), International System (SI), Energy and Work +meganewton, (MN), International System (SI), Force +meganewton per square meter, (MN/m=C2=B2), Metric, Stress and Pressure +megapascal, (MPa), Metric, Stress and Pressure +megatonne of coal equivalent, (Mtce), Coal Energy Equivalent, Energy and Work +megatonne of oil equivalent, (Mtoe), Oil Energy Equivalent, Energy and Work +megawatt, (MW), International System (SI), Power +meh nedjes (short cubit), Ancient Egypt, Historical Lengths +meh niswt (royal cubit), Ancient Egypt, Historical Lengths +meile, Old Austrian, Historical Lengths +meile, Old German (Prussian), Historical Lengths +meio-quartilho (half-quartilho), Old Portuguese Liquid Measure, Historical Units of Capacity +meio-selamim (half-selamim), Old Portuguese Dry Measure, Historical Units of Capacity +meter, (m), Metric, Historical Lengths +meter, (m), Metric, Distance and Length +meter-candle, Photography units, Illuminance +meter of water, Water (at 39.2=C2=B0F, 4=C2=B0C), Stress and Pressure +meter per hour, Metric, Speed +meter per minute, Metric, Speed +meter per second, (m/s), Metric, Speed +meter per second squared, (m/s=C2=B2), Metric, Acceleration +meter per year, Metric, Speed +metre-kilogram, (mkg), Common Units, Energy and Work +metr=C4=93t=C4=93s (=CE=BC=CE=B5=CF=84=CF=81=CE=B7=CF=84=CE=AE=CF=82, amphora), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +metric centner, Metric, Mass and weight +Metric Needle Size, (mm), Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +metric quintal, Metric, Mass and weight +metric refrigeration ton, (RT), Common Units, Power +Mexican Peso, (MXN), North American Currencies, Currency +Mexico shoe size, Mexico Shoe Size, Shoe Size Conversion +Mexico shoe size in cm, Mexico Shoe Size, Shoe Size Conversion +Mexico shoe size in inches, Mexico Shoe Size, Shoe Size Conversion +mezhevaya verst, Old Russian, Historical Lengths +mfbm, mbdft, mbf, (thousand board-feet), Lumber measure, Capacity and volume +mg, (milligram), Metric, Mass and weight +MGA, (Malagasy Ariary), African Curriencies, Currency +mg/cm=C2=B3, (milligram per cubic centimeter), Metric System, Density +mg/dm=C2=B3, (milligram per cubic decimeter), Metric System, Density +mGf, (milligrave-force), Gravitational Metric System, Force +mg/L, (milligram per litre), Metric System, Density +mg/m=C2=B3, (milligram per cubic meter), Metric System, Density +mg/mL, (milligram per millilitre), Metric System, Density +mGy, (milligray), Absorbed radiation dose, Radiation +mi, (mile), The American System of Measures (US Customary Units), Historical Lengths +mi, (mile), British Imperial Measure before 1963, Distance and Length +mi, (mile), The American System (US Customary Units) and British Imperial Measures, Distance and Length +mi=C2=B3, (cubic mile), British and U.S. derivatives of length units, Capacity and volume +MiB/s, (mebibyte per second), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +micro, (=C2=B5, mc), Metric Prefixes, Franctions and Percent +microcurie, (=C2=B5Ci), Other units, Radioactivity +microgram, (mcg), Metric, Mass and weight +microgray, (=C2=B5Gy), Absorbed radiation dose, Radiation +microinch, The American System (US Customary Units) and British Imperial Measures, Distance and Length +microliter, (=C2=B5l), Metric, Capacity and volume +micrometre (micron), Metric, Distance and Length +micronewton, (=C2=B5N), International System (SI), Force +microroentgen, (=C2=B5R), Exposure to ionizing radiation, Radiation +microsecond, (=C2=B5s), Common units, Time +microsievert, (=C2=B5Sv), Dose equivalent radiation, Radiation +mil, British Imperial Measure before 1963, Distance and Length +mil, The American System (US Customary Units) and British Imperial Measures, Distance and Length +mil cubic feet, (mcf), British and U.S. derivatives of length units, Capacity and volume +mile, Old Russian, Historical Lengths +mile, (mi), The American System of Measures (US Customary Units), Historical Lengths +mile, (mi), British Imperial Measure before 1963, Distance and Length +mile, (mi), The American System (US Customary Units) and British Imperial Measures, Distance and Length +mile per British gallon, (mpg), British system, Fuel economy +mile per hour, (mph), British (Imperial) And U.S. System, Speed +mile per litre, British system, Fuel economy +mile per minute, British (Imperial) And U.S. System, Speed +mile per second, British (Imperial) And U.S. System, Speed +mile per second squared, British (Imperial) And U.S. System, Acceleration +mile per year, British (Imperial) And U.S. System, Speed +miles per gallon, (mpg), U.S. system, Fuel economy +milion (=CE=BC=CE=AF=CE=BB=CE=B9=CE=BF=CE=BD), Ancient Greek, Historical Lengths +milla, Old Spanish, Historical Lengths +milla marina (nautical), Old Spanish, Historical Lengths +mille passus (mile), Ancient Roman, Historical Lengths +milli, (m), Metric Prefixes, Franctions and Percent +millibar, Metric, Stress and Pressure +millicoulomb per kilogram, (mC/kg), Exposure to ionizing radiation, Radiation +millicurie, (mCi), Other units, Radioactivity +milligram, (mg), Metric, Mass and weight +milligram-force, Gravitational Metric System, Force +milligram per cubic centimeter, (mg/cm=C2=B3), Metric System, Density +milligram per cubic decimeter, (mg/dm=C2=B3), Metric System, Density +milligram per cubic meter, (mg/m=C2=B3), Metric System, Density +milligram per litre, (mg/L), Metric System, Density +milligram per millilitre, (mg/mL), Metric System, Density +milligrave-force, (mGf), Gravitational Metric System, Force +milligray, (mGy), Absorbed radiation dose, Radiation +milliliter, (ml), Metric, Historical Units of Capacity +milliliter, (ml), Metric, Capacity and volume +millimeter, (mm), Metric, Historical Lengths +millimeter, (mm), Metric, Distance and Length +millimeter of mercury (torr), Mercury, Stress and Pressure +millimeter of water, Water (at 39.2=C2=B0F, 4=C2=B0C), Stress and Pressure +millimeter per second squared, (mm/s=C2=B2), Metric, Acceleration +millinewton, (mN), International System (SI), Force +million board-feet, (mmfbm, mmbdft, mmbf), Lumber measure, Capacity and volume +million BTU, (MMBTU), British and American, Energy and Work +million of normal cubic meters of natural gas, Natural Gas Energy Equivalent, Energy and Work +million of standard cubic feet of natural gas, Natural Gas Energy Equivalent, Energy and Work +milliphot, Centimeter-Gram-Second System (CGS), Illuminance +millirem, Dose equivalent radiation, Radiation +milliroentgen, (mR), Exposure to ionizing radiation, Radiation +millisecond, (ms), Common units, Time +millisievert, (mSv), Dose equivalent radiation, Radiation +mil (mile), Old Swedish, Historical Lengths +min, (minute), Common units, Time +min, (minim), British Imperial Liquid And Dry, Capacity and volume +min, (minim), U.S. Liquid Measure, Capacity and volume +mina, Biblical, Historical weights +mina (=CE=BC=CE=BD=E1=BE=B6), Ancient Greek (Aeginetic standard), Historical weights +mina (=CE=BC=CE=BD=E1=BE=B6), Ancient Greek (Attic/Eubolic standard), Historical weights +minim, (min), British Imperial Liquid And Dry, Capacity and volume +minim, Apothecaries, Capacity and volume +minim, (min), U.S. Liquid Measure, Capacity and volume +minot, Old French, Historical Units of Capacity +minute, (min), Common units, Time +minute, (=E2=80=B2), Common Units, Circular measure +minute per gibibyte, Data Transfer Time (older, 1024-based), Data transfer rate +minute per gigabyte, Data Transfer Time (current, 1000-based), Data transfer rate +minute per mebibyte, Data Transfer Time (older, 1024-based), Data transfer rate +minute per megabyte, Data Transfer Time (current, 1000-based), Data transfer rate +minutes per kilometer, Pace (Various Sports), Speed +minutes per mile, Pace (Various Sports), Speed +mite, Troy, Mass and weight +mithqal, Baha'i Faith Units, Historical weights +MJ, (megajoule), International System (SI), Energy and Work +MKD, (Macedonian Denar), European Currencies, Currency +mkg, (metre-kilogram), Common Units, Energy and Work +ml, (milliliter), Metric, Historical Units of Capacity +ml, (milliliter), Metric, Capacity and volume +mm, (Diameter in millimeters), Inner Diameter and Circumference of a Ring, Ring size +mm, (Circumference in millimeters), Inner Diameter and Circumference of a Ring, Ring size +mm, (Metric Needle Size), Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +mm, (Diameter in millimetres), Wire diameter, Wire and Needle Gauge +mm, (millimeter), Metric, Historical Lengths +mm, (millimeter), Metric, Distance and Length +mm=C2=B2, (IEC 60228:2004 Standard Wire Cross-Section), Wire Gauges, Wire and Needle Gauge +mm=C2=B2, (GOST 22483-2012 Standard Wire Cross-Section), Wire Gauges, Wire and Needle Gauge +mm=C2=B2, (Section area in square millimetres), Wire section area, Wire and Needle Gauge +mm=C2=B2, (square millimeter), Metric, Historical Units of Area +mm=C2=B2, (square millimeter), Metric, Area +mm=C2=B3, (cubic millimeter), Metric, Historical Units of Capacity +mm=C2=B3, (cubic millimeter), Metric, Capacity and volume +MMBTU, (million BTU), British and American, Energy and Work +mmfbm, mmbdft, mmbf, (million board-feet), Lumber measure, Capacity and volume +MMK, (Myanma Kyat), Asian Currencies, Currency +mm/s=C2=B2, (millimeter per second squared), Metric, Acceleration +mN, (millinewton), International System (SI), Force +MN, (meganewton), International System (SI), Force +MN/m=C2=B2, (meganewton per square meter), Metric, Stress and Pressure +MNT, (Mongolian Tugrik), Asian Currencies, Currency +modius castrensis (military modius), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +modius (peck), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +moio, Old Portuguese Dry Measure, Historical Units of Capacity +Moldovan Leu, (MDL), European Currencies, Currency +mondopoint (length), Mondopoint, Shoe Size Conversion +Mongolian Tugrik, (MNT), Asian Currencies, Currency +monnme (=E5=8C=81), Japanese, Mass and weight +MOP, (Macanese Pataca), Asian Currencies, Currency +Moroccan Dirham, (MAD), African Curriencies, Currency +Movie theater screen, Illuminance examples, Illuminance +moyo, Old Spanish Liquid Measure, Historical Units of Capacity +Mozambican Metical, (MZN), African Curriencies, Currency +mo (=E6=AF=9B, =E6=AF=AB), Japanese, Distance and Length +MPa, (megapascal), Metric, Stress and Pressure +mpg, (mile per British gallon), British system, Fuel economy +mpg, (miles per gallon), U.S. system, Fuel economy +mph, (mile per hour), British (Imperial) And U.S. System, Speed +mR, (milliroentgen), Exposure to ionizing radiation, Radiation +MRU, (Mauritanian Ouguiya), African Curriencies, Currency +m/s, (meter per second), Metric, Speed +ms, (millisecond), Common units, Time +m/s=C2=B2, (meter per second squared), Metric, Acceleration +mSv, (millisievert), Dose equivalent radiation, Radiation +Mtce, (megatonne of coal equivalent), Coal Energy Equivalent, Energy and Work +Mtoe, (megatonne of oil equivalent), Oil Energy Equivalent, Energy and Work +MUR, (Mauritian Rupee), African Curriencies, Currency +mu (=E7=95=9D or =E4=BA=A9), Chinese units of 1915, Area +mu (=E7=95=9D or =E4=BA=A9), Chinese units of 1930, Area +MVR, (Maldivian Rufiyaa), Asian Currencies, Currency +MW, (megawatt), International System (SI), Power +MWK, (Malawian Kwacha), African Curriencies, Currency +MXN, (Mexican Peso), North American Currencies, Currency +Myanma Kyat, (MMK), Asian Currencies, Currency +MYR, (Malaysian Ringgit), Asian Currencies, Currency +mystron (=CE=BC=CF=8D=CF=83=CF=84=CF=81=CE=BF=CE=BD), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +MZN, (Mozambican Metical), African Curriencies, Currency + +## SECTION N +n, (nano), Metric Prefixes, Franctions and Percent +N, (newton), International System (SI), Force +N, (newton (on Earth surface)), Metric, Mass and weight +NAD, (Namibian Dollar), African Curriencies, Currency +nail, British Imperial Measure before 1963, Distance and Length +nakhud, Baha'i Faith Units, Historical weights +Namibian Dollar, (NAD), African Curriencies, Currency +nano, (n), Metric Prefixes, Franctions and Percent +nanometer, (nm), Metric, Distance and Length +nanosecond, (ns), Common units, Time +nausea and vomiting, Acute radiation syndrome, Radiation +nautical league, (naut.leag), International Nautical Measure, Distance and Length +nautical mile, (naut.mi), International Nautical Measure, Distance and Length +nautical rhumb, Nautical, Circular measure +naut.leag, (nautical league), International Nautical Measure, Distance and Length +naut.mi, (nautical mile), International Nautical Measure, Distance and Length +nbiw (pole), Ancient Egypt, Historical Lengths +Ncm, (newton centimeter), Metric, Torque +N/cm=C2=B2, (newton per square centimeter), Metric, Stress and Pressure +Nepalese Rupee, (NPR), Asian Currencies, Currency +nest, hat trick, Quantity Units, Franctions and Percent +Netherlands Antillean Guilder, (ANG), Currencies of the Caribbean, Currency +New Taiwan Dollar, (TWD), Asian Currencies, Currency +newton, (N), International System (SI), Force +newton centimeter, (Ncm), Metric, Torque +newton meter, (Nm), Metric, Torque +newton (on Earth surface), (N), Metric, Mass and weight +newton per square centimeter, (N/cm=C2=B2), Metric, Stress and Pressure +newton per square meter, (N/m=C2=B2), Metric, Stress and Pressure +newton per square millimeter, (N/mm=C2=B2), Metric, Stress and Pressure +New Zealand Dollar, (NZD), Currencies of Australia and Oceania, Currency +ngan (=E0=B8=87=E0=B8=B2=E0=B8=99), Thai units, Area +NGN, (Nigerian Naira), African Curriencies, Currency +Nicaraguan Cordoba, (NIO), Central American Currencies, Currency +Nigerian Naira, (NGN), African Curriencies, Currency +Night with a full moon, Illuminance examples, Illuminance +Night withouth the moon, Illuminance examples, Illuminance +NIO, (Nicaraguan Cordoba), Central American Currencies, Currency +nio (=E0=B8=99=E0=B8=B4=E0=B9=89=E0=B8=A7, finger), Thai units, Distance and Length +nit, (nt), Other units, Illuminance +nm, (nanometer), Metric, Distance and Length +Nm, (newton meter), Metric, Torque +N/m=C2=B2, (newton per square meter), Metric, Stress and Pressure +N/mm=C2=B2, (newton per square millimeter), Metric, Stress and Pressure +NOK, (Norwegian Krone), European Currencies, Currency +Noon on summer cloudy day, Illuminance examples, Illuminance +Noon on summer with clear sky, Illuminance examples, Illuminance +normal cubic meter of natural gas, Natural Gas Energy Equivalent, Energy and Work +Northern American ring size, Ring Sizes in the United States, Canada and Mexico, Ring size +North Korean Won, (KPW), Asian Currencies, Currency +Norwegian Krone, (NOK), European Currencies, Currency +nox, Other units, Illuminance +NPR, (Nepalese Rupee), Asian Currencies, Currency +ns, (nanosecond), Common units, Time +nt, (nit), Other units, Illuminance +nymil (new mile, used since 1889 till now), Old Swedish, Historical Lengths +NZD, (New Zealand Dollar), Currencies of Australia and Oceania, Currency + +## SECTION O +obolus (1=E2=81=8448 uncia, from Greek unit =E1=BD=80=CE=B2=CE=BF=CE=BB=CF=8C=CF=82 'metal spit'), Ancient Roman, Historical weights +obol (=E1=BD=80=CE=B2=CE=BF=CE=BB=CF=8C=CF=82), Ancient Greek (Aeginetic standard), Historical weights +obol (=E1=BD=80=CE=B2=CE=BF=CE=BB=CF=8C=CF=82), Ancient Greek (Attic/Eubolic standard), Historical weights +OC-12, Computer Connection Speed, Data transfer rate +OC-1536, Computer Connection Speed, Data transfer rate +OC-192, Computer Connection Speed, Data transfer rate +OC-3, Computer Connection Speed, Data transfer rate +OC-3072, Computer Connection Speed, Data transfer rate +OC-48, Computer Connection Speed, Data transfer rate +OC-768, Computer Connection Speed, Data transfer rate +ochava, Old Spanish, Historical weights +ochavo, Old Spanish Dry Measure, Historical Units of Capacity +octal number (radix 8), Common Radix Numerals, Roman numbers, Hex, Octal and more +octet, Number of Performers, Franctions and Percent +oitava, Old Portuguese Dry Measure, Historical Units of Capacity +oitava, Old Portuguese, Historical weights +Older Brazilian ring size, Old Brazilian Ring Sizes, Ring size +old (pre 1928) dunam (d=C3=B6n=C3=BCm, =D8=AF=D9=88=D9=86=D9=85) of Turkey, Syria, Israel, Palestine, Jordan, Lebanon, Historical Units Still In Use Today, Area +Old U.S. Needle Size (AWG), Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +Omani Rial, (OMR), Middle East Currencies, Currency +OMR, (Omani Rial), Middle East Currencies, Currency +on=C3=A7a, Old Portuguese, Historical weights +one eights or .125, (1/8), Fractions, Franctions and Percent +one ninth or .(1), (1/9), Fractions, Franctions and Percent +one seventh or .142857, (1/7), Fractions, Franctions and Percent +one sixteenth or .0625, (1/16), Fractions, Franctions and Percent +one sixth or .1(6), (1/6), Fractions, Franctions and Percent +one tenth or .1, (1/10), Fractions, Franctions and Percent +one third or .(3), (1/3), Fractions, Franctions and Percent +one thirty-second or .03125, (1/32), Fractions, Franctions and Percent +onza, Old Spanish, Historical weights +orgyia (=E1=BD=84=CF=81=CE=B3=CF=85=CE=B9=CE=B1, fathom), Ancient Greek, Historical Lengths +ort, Old Swedish, Historical weights +orthod=C5=8Dron (=E1=BD=80=CF=81=CE=B8=CF=8C=CE=B4=CF=89=CF=81=CE=BF=CE=BD, wrist to the tip of meddle finger), Ancient Greek, Historical Lengths +osi, oz/in=C2=B2, (ounce per square inch), British and U.S. (Imperial system), Stress and Pressure +ounce, (oz), Avoirdupois (U.S.), Historical weights +ounce, (=E2=84=A5), Apothecaries, Mass and weight +ounce, (ozt), Troy, Mass and weight +ounce, (oz), Avoirdupois (U.S. / British), Mass and weight +ounce-force, (ozf), English Engineering and British Gravitational Units, Force +ounce-force inch, (ozf.in), British and U.S., Torque +ounce per British gallon, British and U.S., Density +ounce per cubic foot, (oz/ft=C2=B3), British and U.S., Density +ounce per cubic inch, (oz/in=C2=B3), British and U.S., Density +ounce per cubic yard, (oz/yd=C2=B3), British and U.S., Density +ounce per day, (oz/day), U.S. and British Imperial, Flow rate by mass +ounce per hour, (oz/hour), U.S. and British Imperial, Flow rate by mass +ounce per minute, (oz/min), U.S. and British Imperial, Flow rate by mass +ounce per second, (oz/s), U.S. and British Imperial, Flow rate by mass +ounce per square foot, British and U.S. (Imperial system), Stress and Pressure +ounce per square inch, (osi, oz/in=C2=B2), British and U.S. (Imperial system), Stress and Pressure +ounce per U.S. bushel, British and U.S., Density +ounce per U.S. gallon, (oz/gal), British and U.S., Density +ounce per year, (oz/year), U.S. and British Imperial, Flow rate by mass +oxybathon (=E1=BD=80=CE=BE=CF=85=CE=B2=CE=B1=CE=B8=CE=BF=CE=BD), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +oxybathon (=E1=BD=80=CE=BE=CF=85=CE=B2=CE=B1=CE=B8=CE=BF=CE=BD), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +oz, (fluid ounce), U.S. Measure, Historical Units of Capacity +oz, (ounce), Avoirdupois (U.S.), Historical weights +oz, (fluid ounce), British Imperial Liquid And Dry, Capacity and volume +oz, (ounce), Avoirdupois (U.S. / British), Mass and weight +oz/day, (ounce per day), U.S. and British Imperial, Flow rate by mass +ozf, (ounce-force), English Engineering and British Gravitational Units, Force +ozf.in, (ounce-force inch), British and U.S., Torque +oz/ft=C2=B3, (ounce per cubic foot), British and U.S., Density +oz/gal, (ounce per U.S. gallon), British and U.S., Density +oz/hour, (ounce per hour), U.S. and British Imperial, Flow rate by mass +oz/in=C2=B3, (ounce per cubic inch), British and U.S., Density +oz/min, (ounce per minute), U.S. and British Imperial, Flow rate by mass +oz/s, (ounce per second), U.S. and British Imperial, Flow rate by mass +ozt, (ounce), Troy, Mass and weight +oz/yd=C2=B3, (ounce per cubic yard), British and U.S., Density +oz/year, (ounce per year), U.S. and British Imperial, Flow rate by mass + +## SECTION P +p, (pico), Metric Prefixes, Franctions and Percent +P, (peta), Metric Prefixes, Franctions and Percent +Pa, (pascal), Metric, Stress and Pressure +PAB, (Panamanian Balboa), Central American Currencies, Currency +pace, British Imperial Measure before 1963, Distance and Length +pair, brace, yoke, Quantity Units, Franctions and Percent +Pakistani Rupee, (PKR), Asian Currencies, Currency +palaiste (=CF=80=CE=B1=CE=BB=CE=B1=CE=B9=CF=83=CF=84=CE=AE, palm), Ancient Greek, Historical Lengths +Palladium (troy ounce), (XPD), Other Currencies and More, Currency +palm, (plm), British Imperial Measure before 1963, Distance and Length +palmipes, Ancient Roman, Historical Lengths +palmo, Old Spanish, Historical Lengths +palmo de craveira, Old Portuguese, Historical Lengths +palmo quadrado (square palmo), Old Portuguese, Historical Units of Area +palmus major (palm length), Ancient Roman, Historical Lengths +palmus (palm width), Ancient Roman, Historical Lengths +Panama Canal Universal Measurement System (PC/UMS), Ship tonnage measurements, Capacity and volume +Panamanian Balboa, (PAB), Central American Currencies, Currency +panilla (for olive oil), Old Spanish Liquid Measure, Historical Units of Capacity +Papua New Guinean Kina, (PGK), Currencies of Australia and Oceania, Currency +Paraguayan Guarani, (PYG), South American Currencies, Currency +parah, Indian units (Akbar system), Mass and weight +parasanges (=CF=80=CE=B1=CF=81=CE=B1=CF=83=CE=AC=CE=B3=CE=B3=CE=B5=CF=82, league), Ancient Greek, Historical Lengths +Paris point, European footwear unit, Distance and Length +parsec, (pc), Astronomical, Distance and Length +parts per billion, (ppb), Percentages and Parts, Franctions and Percent +parts per million, (ppm), Percentages and Parts, Franctions and Percent +pascal, (Pa), Metric, Stress and Pressure +paso, Old Spanish, Historical Lengths +passo geom=C3=A9trico, Old Portuguese, Historical Lengths +passus (pace), Ancient Roman, Historical Lengths +Pbit [Pibit], (petabit [pebibit]), Data Storage and Transmission, Computer storage +Pb [PiB], (petabyte [pebibyte]), Data Storage and Transmission, Computer storage +pc, (parsec), Astronomical, Distance and Length +pc=C2=B3, (cubic parsec), Astronomical, Capacity and volume +pdl, (poundal), English Imperial Units, Foot-Pound-Second System, Force +p=C3=A9, Old Portuguese, Historical Lengths +p=C4=93chys (=CF=80=E1=BF=86=CF=87=CF=85=CF=82, elbow), Ancient Greek, Historical Lengths +peck, (pk), British Imperial Liquid And Dry, Capacity and volume +peck, (pk), U.S. Dry Measure, Capacity and volume +pedj-aa (large span), Ancient Egypt, Historical Lengths +pedj-sheser (small span), Ancient Egypt, Historical Lengths +PEN, (Peruvian Sol), South American Currencies, Currency +pennyweight, (dwt), Troy, Mass and weight +percent, (%), Percentages and Parts, Franctions and Percent +perch, British (Imperial) And U.S. System, Area +perch, British Imperial Liquid And Dry, Capacity and volume +perch, The American System (US Customary Units) and British Imperial Measures, Distance and Length +perche, Old French, Historical Lengths +permille, (=E2=80=B0), Percentages and Parts, Franctions and Percent +pertica (perch), Ancient Roman, Historical Lengths +Peruvian Sol, (PEN), South American Currencies, Currency +pes (foot), Ancient Roman, Historical Lengths +pes sestertius, Ancient Roman, Historical Lengths +peta, (P), Metric Prefixes, Franctions and Percent +petabit [pebibit], (Pbit [Pibit]), Data Storage and Transmission, Computer storage +petabyte [pebibyte], (Pb [PiB]), Data Storage and Transmission, Computer storage +pfennig, Old German (Prussian), Historical weights +pfund, Old Austrian, Historical weights +pfund, Old German (Prussian), Historical weights +PGK, (Papua New Guinean Kina), Currencies of Australia and Oceania, Currency +ph, (phot), Centimeter-Gram-Second System (CGS), Illuminance +Philippine Peso, (PHP), Asian Currencies, Currency +phot, (ph), Centimeter-Gram-Second System (CGS), Illuminance +PHP, (Philippine Peso), Asian Currencies, Currency +physical atmosphere, (atm), Atmosphere, Stress and Pressure +pica, Typographical (British and U.S. - ATA system), Distance and Length +pica [PostScript], Typographical (British and U.S. - ATA system), Distance and Length +pico, (p), Metric Prefixes, Franctions and Percent +picosecond, (ps), Common units, Time +picul (tam), Hong Kong, Mass and weight +pie, Old Spanish, Historical Lengths +pie cuadrado (square pie), Old Spanish, Historical Units of Area +pied [foot], Old French, Historical Lengths +pim, Biblical, Historical weights +pin, English brewery cask units, Capacity and volume +pint, (pt), British Imperial Liquid And Dry, Capacity and volume +pint, (pt), Apothecaries, Capacity and volume +pint, (pt), U.S. Dry Measure, Capacity and volume +pint, (pt), U.S. Liquid Measure, Capacity and volume +pint (dry), (pt), U.S. Measure, Historical Units of Capacity +pint (liquid), (pt), U.S. Measure, Historical Units of Capacity +pipa, Old Portuguese Liquid Measure, Historical Units of Capacity +pixel, (px), Typographical (British and U.S. - ATA system), Distance and Length +pk, (peck), British Imperial Liquid And Dry, Capacity and volume +pk, (peck), U.S. Dry Measure, Capacity and volume +PKR, (Pakistani Rupee), Asian Currencies, Currency +Planck area, (L=C2=B2), Natural units, Area +Planck density, (L=E2=81=BB=C2=B3M), Natural units, Density +Planck energy, (L=C2=B2MT=E2=81=BB=C2=B2), Natural units, Energy and Work +Planck force, (LMT=E2=81=BB=C2=B2), Natural units, Force +Planck length, (L), Natural units, Distance and Length +Planck mass, (M), Natural units, Mass and weight +Planck power, (L=C2=B2MT=E2=81=BB=C2=B3), Natural units, Power +Planck pressure, (L=E2=81=BB=C2=B9MT=E2=81=BB=C2=B2), Natural units, Stress and Pressure +Planck temperature, (=CE=98), Temperature increment conversion, Temperature increment +Planck temperature, (=CE=98), Temperature scale conversion, Temperature +Planck time, (T), Natural units, Time +Planck volume, (L=C2=B3), Natural units, Capacity and volume +Platinum (troy ounce), (XPT), Other Currencies and More, Currency +plethron (=CF=80=CE=BB=CE=AD=CE=B8=CF=81=CE=BF=CE=BD), Ancient Greek, Historical Units of Area +plethron (=CF=80=CE=BB=CE=AD=CE=B8=CF=81=CE=BF=CE=BD), Ancient Greek, Historical Lengths +plm, (palm), British Imperial Measure before 1963, Distance and Length +PLN, (Polish Zloty), European Currencies, Currency +point, (pt), Typographical (Europe - Didot system), Distance and Length +point, (pt), Typographical (British and U.S. - ATA system), Distance and Length +point [PostScript], (pt), Typographical (British and U.S. - ATA system), Distance and Length +pole, British Imperial Measure before 1963, Distance and Length +pole, The American System (US Customary Units) and British Imperial Measures, Distance and Length +polegada, Old Portuguese, Historical Lengths +polegada quadrada (square polegada), Old Portuguese, Historical Units of Area +Polish Zloty, (PLN), European Currencies, Currency +pollex (thumb), Ancient Roman, Historical Lengths +ponto, Old Portuguese, Historical Lengths +pood, Old Russian, Historical weights +poppyseed, British Imperial Measure before 1963, Distance and Length +pote, Old Portuguese Liquid Measure, Historical Units of Capacity +pouce [inch], Old French, Historical Lengths +pound, Old Russian, Historical weights +pound, (lb), Avoirdupois (U.S.), Historical weights +pound, (=E2=84=94, =E2=80=B3), Apothecaries, Mass and weight +pound, Troy, Mass and weight +pound, (lb), Avoirdupois (U.S. / British), Mass and weight +poundal, (pdl), English Imperial Units, Foot-Pound-Second System, Force +pound-force, (lbf), English Engineering and British Gravitational Units, Force +pound-force foot, (lbsf.ft), British and U.S., Torque +pound-force inch, (lbsf.in), British and U.S., Torque +pound of liquefied natural gas, higher heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +pound of liquefied natural gas, lower heating value, Liquefied Natural Gas (LNG) Energy Equivalent, Energy and Work +pound of LPG, higher heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +pound of LPG, lower heating value, Liquefied Petrolium Gas (LPG) Energy Equivalent, Energy and Work +pound per British gallon, British and U.S., Density +pound per cubic foot, (lb/ft=C2=B3), British and U.S., Density +pound per cubic inch, (lb/in=C2=B3), British and U.S., Density +pound per cubic yard, (lb/yd=C2=B3), British and U.S., Density +pound per day, (lb/day), U.S. and British Imperial, Flow rate by mass +pound per hour, (lb/hour), U.S. and British Imperial, Flow rate by mass +pound per minute, (lb/min), U.S. and British Imperial, Flow rate by mass +pound per second, (lb/s), U.S. and British Imperial, Flow rate by mass +pound per square foot, British and U.S. (Imperial system), Stress and Pressure +pound per square inch, (psi), British and U.S. (Imperial system), Stress and Pressure +pound per U.S. bushel, British and U.S., Density +pound per U.S. gallon, (lb/gal), British and U.S., Density +pound per year, (lb/year), U.S. and British Imperial, Flow rate by mass +pous (=CF=80=CE=BF=CF=8D=CF=82, foot), Ancient Greek, Historical Lengths +pous (=CF=80=CE=BF=CF=8D=CF=82), square foot, Ancient Greek, Historical Units of Area +powa, Indian units (Akbar system), Mass and weight +ppb, (parts per billion), Percentages and Parts, Franctions and Percent +ppm, (parts per million), Percentages and Parts, Franctions and Percent +ps, (picosecond), Common units, Time +psi, (pound per square inch), British and U.S. (Imperial system), Stress and Pressure +pt, (pint (liquid)), U.S. Measure, Historical Units of Capacity +pt, (pint (dry)), U.S. Measure, Historical Units of Capacity +pt, (pint), British Imperial Liquid And Dry, Capacity and volume +pt, (pint), Apothecaries, Capacity and volume +pt, (pint), U.S. Dry Measure, Capacity and volume +pt, (pint), U.S. Liquid Measure, Capacity and volume +pt, (point), Typographical (Europe - Didot system), Distance and Length +pt, (point), Typographical (British and U.S. - ATA system), Distance and Length +pt, (point [PostScript]), Typographical (British and U.S. - ATA system), Distance and Length +pulgada, Old Spanish, Historical Lengths +puncheon, English wine cask units, Capacity and volume +punkt, Old Austrian, Historical Lengths +punto, Old Spanish, Historical Lengths +purpoura, hemorrhage, infections, Acute radiation syndrome, Radiation +px, (pixel), Typographical (British and U.S. - ATA system), Distance and Length +pyad, Old Russian, Historical Lengths +PYG, (Paraguayan Guarani), South American Currencies, Currency +pygm=C4=93 (=CF=80=CF=85=CE=B3=CE=BC=CE=AE, forearm), Ancient Greek, Historical Lengths +pyg=C5=8Dn (=CF=80=CF=85=CE=B3=CF=8E=CE=BD), Ancient Greek, Historical Lengths + +## SECTION Q +q, (quecto), Metric Prefixes, Franctions and Percent +Q, (quetta), Metric Prefixes, Franctions and Percent +QAR, (Qatari Rial), Middle East Currencies, Currency +Qatari Rial, (QAR), Middle East Currencies, Currency +qian (=E5=B8=82=E9=8C=A2), Chinese units between 1930 and 1959, Mass and weight +qian (=E5=B8=82=E9=92=B1), Chinese units since 1959, Mass and weight +qian (=E9=8C=A2), Chinese units of 1915 before 1930, Mass and weight +qing (=E9=A0=83 or =E9=A1=B7), Chinese units of 1915, Area +qing (=E9=A0=83 or =E9=A1=B7), Chinese units of 1930, Area +qt, (quart), British Imperial Liquid And Dry, Capacity and volume +qt, (quart), U.S. Dry Measure, Capacity and volume +qt, (quart), U.S. Liquid Measure, Capacity and volume +quad, British and American, Energy and Work +quadrans (1=E2=81=844 libra, a fourth), Ancient Roman, Historical weights +quart, (qt), British Imperial Liquid And Dry, Capacity and volume +quart, (qt), U.S. Dry Measure, Capacity and volume +quart, (qt), U.S. Liquid Measure, Capacity and volume +quarta, Old Portuguese Dry Measure, Historical Units of Capacity +quarta, Old Portuguese, Historical weights +quartarius (quart, forth part), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +quartet, Number of Performers, Franctions and Percent +quartilho, Old Portuguese Liquid Measure, Historical Units of Capacity +quarto de quartilho (quarter of quartilho), Old Portuguese Liquid Measure, Historical Units of Capacity +quarto de selamim (quarter of selamim), Old Portuguese Dry Measure, Historical Units of Capacity +quart, one forth or .25, (1/4), Fractions, Franctions and Percent +quaternary number (radix 4), Other Radix Numerals, Roman numbers, Hex, Octal and more +quecto, (q), Metric Prefixes, Franctions and Percent +quentchen, Old Austrian, Historical weights +quentchen, Old German (Prussian), Historical weights +quetta, (Q), Metric Prefixes, Franctions and Percent +quinary number (radix 5), Other Radix Numerals, Roman numbers, Hex, Octal and more +quincunx (5=E2=81=8412 libra, five-twelfths), Ancient Roman, Historical weights +quint, Old German (Prussian), Historical weights +quintal, Old French, Historical weights +quintal, Old Portuguese, Historical weights +quintal, Old Spanish, Historical weights +quintet, Number of Performers, Franctions and Percent + +## SECTION R +r, (ronto), Metric Prefixes, Franctions and Percent +R, (roentgen), Exposure to ionizing radiation, Radiation +R, (ronna), Metric Prefixes, Franctions and Percent +rack unit, (U), Computer Equipment, Distance and Length +rad, Absorbed radiation dose, Radiation +rad, (radian), Common Units, Circular measure +radian, (rad), Common Units, Circular measure +Radian per day, Radian, Angular velocity +Radian per hour, Radian, Angular velocity +Radian per minute, Radian, Angular velocity +Radian per second, Radian, Angular velocity +Radian per week, Radian, Angular velocity +rai (=E0=B9=84=E0=B8=A3=E0=B9=88), Thai units, Area +ralk, Indian units (Akbar system), Mass and weight +Ramsden's (engineers') chain, (ch), US Surveyors' Measure, Distance and Length +Ramsden's (engineers') link, US Surveyors' Measure, Distance and Length +ratt=C4=AB, Indian units (Akbar system), Mass and weight +rd, (rutherford), Other units, Radioactivity +rd, (rod), The American System (US Customary Units) and British Imperial Measures, Distance and Length +red shift, (z), Astronomical, Distance and Length +register ton, Ship tonnage measurements, Capacity and volume +rem, Dose equivalent radiation, Radiation +remen, Ancient Egypt, Historical Lengths +rev after 1855, Old Swedish, Historical Lengths +rev before 1855, Old Swedish, Historical Lengths +Revolution per day, Revolution, Angular velocity +Revolution per hour, Revolution, Angular velocity +Revolution per minute, Revolution, Angular velocity +Revolution per second, Revolution, Angular velocity +Revolution per week, Revolution, Angular velocity +Ring size in Italy, Spain, Switzerland, the Netherlands, Brazil, India, Ring Sizes in Italy, Spain, Switzerland, the Netherlands, Brazil, India, Ring size +Ring size in Russia, Ukraine, Belarus, Ring Sizes in Russia, Ukraine, Belarus and Other ex-USSR Countries, Ring size +rin (=E5=8E=98), Japanese, Distance and Length +ri (=E9=87=8C), Japanese, Distance and Length +rod, (rd), The American System (US Customary Units) and British Imperial Measures, Distance and Length +roentgen, (R), Exposure to ionizing radiation, Radiation +Romanian Leu, (RON), European Currencies, Currency +Roman numeral (apostrophus), Roman numerals, Roman numbers, Hex, Octal and more +Roman numeral (vinculum), Roman numerals, Roman numbers, Hex, Octal and more +RON, (Romanian Leu), European Currencies, Currency +ronna, (R), Metric Prefixes, Franctions and Percent +ronto, (r), Metric Prefixes, Franctions and Percent +rood, British (Imperial) And U.S. System, Area +rope, British Imperial Measure before 1963, Distance and Length +royal square perche, Old French, Historical Units of Area +RSD, (Serbian Dinar), European Currencies, Currency +RT, (metric refrigeration ton), Common Units, Power +RUB, (Russian Ruble, =E2=82=BD), Major World Currencies, Currency +rundlet, English wine cask units, Capacity and volume +Russian fuel equivalent unit, Coal Energy Equivalent, Energy and Work +Russian GOST shoe size (mm), Russia and CIS (ex-USSR countries) Shoe Size, Shoe Size Conversion +Russian Ruble, =E2=82=BD, (RUB), Major World Currencies, Currency +Russian scale in cm, Russia and CIS (ex-USSR countries) Shoe Size, Shoe Size Conversion +Russian thousandth, Artillery, Circular measure +Russian traditional shoe size, Russia and CIS (ex-USSR countries) Shoe Size, Shoe Size Conversion +ruthe, Old Austrian, Historical Lengths +ruthe, Old German (Prussian), Historical Lengths +rutherford, (rd), Other units, Radioactivity +Rwandan Franc, (RWF), African Curriencies, Currency +RWF, (Rwandan Franc), African Curriencies, Currency + +## SECTION S +s, (second), Common units, Time +Saint Helena Pound, (SHP), African Curriencies, Currency +sai (=E6=89=8D), Japanese, Capacity and volume +salt, Ancient Roman, Historical Units of Area +salueng (=E0=B8=AA=E0=B8=A5=E0=B8=B6=E0=B8=87), Thai units, Mass and weight +Salvadoran Col=C3=B3n, (SVC), Central American Currencies, Currency +Samoan Tala, (WST), Currencies of Australia and Oceania, Currency +S=C3=A3o Tom=C3=A9 and Pr=C3=ADncipe Dobra (pre-2018), (STD), African Curriencies, Currency +S=C3=A3o Tom=C3=A9 and Pr=C3=ADncipe Dobra (since 2018), (STD), African Curriencies, Currency +SAR, (Saudi Riyal), Middle East Currencies, Currency +sat (=E0=B8=AA=E0=B8=B1=E0=B8=94, basket), Thai units, Capacity and volume +Saudi Riyal, (SAR), Middle East Currencies, Currency +saum, Old Austrian, Historical weights +sazhen, Old Russian, Historical Lengths +sb, (stilb), Other units, Illuminance +SBD, (Solomon Islands Dollar), Currencies of Australia and Oceania, Currency +scc, (cubic centimeter of atmosphere, standard cubic centimeter), Common Units, Energy and Work +scf, (cubic foot of atmosphere, standard cubic foot), British and American, Energy and Work +schiffspfund, Old German (Prussian), Historical weights +sch=C5=93nus (rush rope), Ancient Roman, Historical Lengths +schoinos (=CF=83=CF=87=CE=BF=CE=B9=CE=BD=CF=8C=CF=82), Ancient Greek, Historical Lengths +score, Quantity Units, Franctions and Percent +SCR, (Seychellois Rupee), African Curriencies, Currency +scruple, (=E2=84=88), Apothecaries, Mass and weight +scrupulum (1=E2=81=8424 uncia, small pebble), Ancient Roman, Historical weights +scy, (cubic yard of atmosphere, standard cubic yard), British and American, Energy and Work +SDG, (Sudanese Pound), African Curriencies, Currency +se'ah (=D7=A1=D7=90=D7=94), Biblical and Talmudic Dry Measure (Old Testament), Historical Units of Capacity +sea mile per hour, Nautical, Speed +second, (s), Common units, Time +second, (=E2=80=B3), Common Units, Circular measure +second per gibibyte, Data Transfer Time (older, 1024-based), Data transfer rate +second per gigabyte, Data Transfer Time (current, 1000-based), Data transfer rate +second per mebibyte, Data Transfer Time (older, 1024-based), Data transfer rate +second per megabyte, Data Transfer Time (current, 1000-based), Data transfer rate +seconds from 0 to 100 km/h, Car performance, Acceleration +seconds from 0 to 100 mph, Car performance, Acceleration +seconds from 0 to 200 mph, Car performance, Acceleration +seconds from 0 to 60 mph, Car performance, Acceleration +seconds per 100 metres, Pace (Various Sports), Speed +seconds per 100 yards, Pace (Various Sports), Speed +seconds per 500 meters (500m split in rowing), Pace (Various Sports), Speed +seconds per kilometer, Pace (Various Sports), Speed +seconds per mile, Pace (Various Sports), Speed +Section area in circular mils, Wire section area, Wire and Needle Gauge +Section area in square inches, (in=C2=B2), Wire section area, Wire and Needle Gauge +Section area in square micrometres, (=CE=BCm=C2=B2), Wire section area, Wire and Needle Gauge +Section area in square millimetres, (mm=C2=B2), Wire section area, Wire and Needle Gauge +Section area in square mils, Wire section area, Wire and Needle Gauge +Section area in thousands of circular mils, (Kcmil), Wire section area, Wire and Needle Gauge +seek (=E0=B8=8B=E0=B8=B5=E0=B8=81), Thai units, Mass and weight +SEK, (Swedish Krona), European Currencies, Currency +selamim, Old Portuguese Dry Measure, Historical Units of Capacity +semimodius (half of a modius), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +semis (6=E2=81=8412 libra, a half), Ancient Roman, Historical weights +semisextula (1=E2=81=8412 uncia, half-little sixth), Ancient Roman, Historical weights +semuncia (=C2=BD uncia, half-twelfth), Ancient Roman, Historical weights +sen (=E0=B9=80=E0=B8=AA=E0=B9=89=E0=B8=99, rope), Thai units, Distance and Length +septet, Number of Performers, Franctions and Percent +septunx (7=E2=81=8412 libra, seven-twelfths), Ancient Roman, Historical weights +s=C3=A8r, Indian units (Akbar system), Mass and weight +Serbian Dinar, (RSD), European Currencies, Currency +sescuncia (1=E2=81=848 libra, 1=C2=BD twelfths), Ancient Roman, Historical weights +sextans (2=E2=81=8412 libra, a sixth), Ancient Roman, Historical weights +sextans (one sixth of a sextarius), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +sextant, Common Units, Circular measure +sextarius (a sixth), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +sextet, Number of Performers, Franctions and Percent +sextula (1=E2=81=846 uncia, little sixth), Ancient Roman, Historical weights +Seychellois Rupee, (SCR), African Curriencies, Currency +se (=E7=95=9D), Japanese, Area +SGD, (Singapore Dollar), Asian Currencies, Currency +shackle, British Imperial Measure before 1963, Distance and Length +shaftment, British Imperial Measure before 1963, Distance and Length +shaku (=E5=8B=BA), Japanese, Area +shaku (=E5=8B=BA), Japanese, Capacity and volume +shaku (=E5=B0=BA), Japanese, Distance and Length +shao (=E5=8B=BA), Chinese units of 1915, Capacity and volume +shao (=E5=8B=BA), Chinese units of 1930, Capacity and volume +shekel, Biblical, Historical weights +sheng (=E5=8D=87), Chinese units of 1915, Capacity and volume +sheng (=E5=B8=82=E5=8D=87), Chinese units of 1930, Capacity and volume +shesep (palm), Ancient Egypt, Historical Lengths +shkalik, Old Russian Liquid Measure, Historical Units of Capacity +shock, Quantity Units, Franctions and Percent +short hundredweight (US), Avoirdupois (U.S. / British), Mass and weight +short ton-force foot, British and U.S., Torque +short ton (US), Avoirdupois (U.S.), Historical weights +short ton (US), Avoirdupois (U.S. / British), Mass and weight +short (US) ton per day, U.S. and British Imperial, Flow rate by mass +short (US) ton per hour, U.S. and British Imperial, Flow rate by mass +short (US) ton per minute, U.S. and British Imperial, Flow rate by mass +short (US) ton per second, U.S. and British Imperial, Flow rate by mass +short (US) ton per year, U.S. and British Imperial, Flow rate by mass +sho (=E5=8D=87), Japanese, Capacity and volume +SHP, (Saint Helena Pound), African Curriencies, Currency +shtoff, Old Russian Liquid Measure, Historical Units of Capacity +siao/pai (=E0=B9=80=E0=B8=AA=E0=B8=B5=E0=B9=89=E0=B8=A2=E0=B8=A7/=E0=B9=84=E0=B8=9E), Thai units, Mass and weight +sicilicus (=C2=BC uncia, little sickle), Ancient Roman, Historical weights +Sierra Leonean Leone, (SLL), African Curriencies, Currency +sievert, (Sv), Dose equivalent radiation, Radiation +siliqua (1=E2=81=84144 uncia, carat, carob seed), Ancient Roman, Historical weights +Silver (troy ounce), (XAG), Other Currencies and More, Currency +Singapore Dollar, (SGD), Asian Currencies, Currency +si (=E4=B8=9D), Chinese units of 1915, Distance and Length +si (=E4=B8=9D), Chinese units of 1930, Distance and Length +si (=E7=B5=B2), Chinese units between 1930 and 1959, Mass and weight +si (=E7=B5=B2), Chinese units since 1959, Mass and weight +skales (=CF=83=CE=BA=CE=AC=CE=BB=CE=B5=CF=82) of Cyprus, Historical Units Still In Use Today, Area +sk=C3=A5lpund, Old Swedish, Historical weights +skein, British Imperial Measure before 1963, Distance and Length +skeppspund, Old Swedish, Historical weights +skot, Other units, Illuminance +SLL, (Sierra Leonean Leone), African Curriencies, Currency +slope percent, (%), Slope (grade) units, Circular measure +slope permille, (=E2=80=B0), Slope (grade) units, Circular measure +slug/ft=C2=B3, (slug per cubic foot), English Engineering and British Gravitational Units, Density +slug/in=C2=B3, (slug per cubic inch), English Engineering and British Gravitational Units, Density +slug per cubic foot, (slug/ft=C2=B3), English Engineering and British Gravitational Units, Density +slug per cubic inch, (slug/in=C2=B3), English Engineering and British Gravitational Units, Density +slug per cubic yard, (slug/yd=C2=B3), English Engineering and British Gravitational Units, Density +slug/yd=C2=B3, (slug per cubic yard), English Engineering and British Gravitational Units, Density +sn, (sthene), Metre-Tonne-Second System (MTS), Force +sok (=E0=B8=A8=E0=B8=AD=E0=B8=81, cubit), Thai units, Distance and Length +solo, Number of Performers, Franctions and Percent +Solomon Islands Dollar, (SBD), Currencies of Australia and Oceania, Currency +solos (=E0=B9=82=E0=B8=AA=E0=B8=AC=E0=B8=AA), Thai units, Mass and weight +Somali Shilling, (SOS), African Curriencies, Currency +SOS, (Somali Shilling), African Curriencies, Currency +South African Rand, (ZAR), African Curriencies, Currency +South Korean Won, (KRW), Asian Currencies, Currency +South Sudanese Pound, (SSP), African Curriencies, Currency +sp, (span), British Imperial Measure before 1963, Distance and Length +span, Biblical, Historical Lengths +span, (sp), British Imperial Measure before 1963, Distance and Length +span, The American System (US Customary Units) and British Imperial Measures, Distance and Length +Special Drawing Rights (International Monetary Fund), (XDR), Other Currencies and More, Currency +speed of light in vacuum, Speed constants and examples, Speed +speed of sound in gas (mach), Speed constants and examples, Speed +spitham=C4=93 (=CF=83=CF=80=CE=B9=CE=B8=CE=B1=CE=BC=CE=AE, span of all fingers), Ancient Greek, Historical Lengths +square akt, Ancient Roman, Historical Units of Area +square akt (small), Ancient Roman, Historical Units of Area +square arshin, Old Russian, Historical Units of Area +square centimeter, (cm=C2=B2), Metric, Historical Units of Area +square centimeter, (cm=C2=B2), Metric, Area +square decimeter, (dm=C2=B2), Metric, Area +square decimpeda, Ancient Roman, Historical Units of Area +square foot, Old Russian, Historical Units of Area +square foot, (ft=C2=B2), British (Imperial) And U.S. System, Historical Units of Area +square foot, (ft=C2=B2), British (Imperial) And U.S. System, Area +square inch, (in=C2=B2), British (Imperial) And U.S. System, Historical Units of Area +square inch, (in=C2=B2), British (Imperial) And U.S. System, Area +square kilometer, (km=C2=B2), Metric, Historical Units of Area +square kilometer, (km=C2=B2), Metric, Area +square meter, (m=C2=B2), Metric, Historical Units of Area +square meter, (m=C2=B2), Metric, Area +square mil, (th=C2=B2), British (Imperial) And U.S. System, Area +square mile, British (Imperial) And U.S. System, Historical Units of Area +square mile, British (Imperial) And U.S. System, Area +square millimeter, (mm=C2=B2), Metric, Historical Units of Area +square millimeter, (mm=C2=B2), Metric, Area +square ped (legal), Ancient Roman, Historical Units of Area +square ped (ordinary), Ancient Roman, Historical Units of Area +square pied, Old French, Historical Units of Area +square pouce, Old French, Historical Units of Area +square rod, British (Imperial) And U.S. System, Area +square toise, Old French, Historical Units of Area +square vara of Argentina, Paraguay, Uruguay, Historical Units Still In Use Today, Area +square vara of Brazil, Historical Units Still In Use Today, Area +square vara of Chile, Costa Rica, Dominican Republic, Ecuador, El Salvador, Guatemala, Honduras, Mexico, Nicaragua, Peru, S=C3=A3o Tom=C3=A9 and Principe, Venezuela, Historical Units Still In Use Today, Area +square vara of Cuba, Historical Units Still In Use Today, Area +square vara of Panama and Columbia, Historical Units Still In Use Today, Area +square verst, Old Russian, Historical Units of Area +square yard, (yd=C2=B2), British (Imperial) And U.S. System, Historical Units of Area +square yard, (yd=C2=B2), British (Imperial) And U.S. System, Area +SRD, (Surinamese Dollar), South American Currencies, Currency +Sri Lankan Rupee, (LKR), Asian Currencies, Currency +SSP, (South Sudanese Pound), African Curriencies, Currency +st, (stone), Avoirdupois (U.S. / British), Mass and weight +stadium attic, Ancient Greek, Historical Lengths +stadium olympic, Ancient Greek, Historical Lengths +stadium ptolemey, Ancient Greek, Historical Lengths +stadium (stade, furlong), Ancient Roman, Historical Lengths +stain, Old Austrian, Historical weights +stain, Old German (Prussian), Historical weights +Standard acceleration of free fall on Earth, (g), Free Fall Acceleration (Solar System), Acceleration +standard cubic foot of natural gas, Natural Gas Energy Equivalent, Energy and Work +st=C3=A5ng, Old Swedish, Historical Lengths +stater (=CF=83=CF=84=CE=B1=CF=84=CE=AE=CF=81, weight), Ancient Greek (Aeginetic standard), Historical weights +stater (=CF=83=CF=84=CE=B1=CF=84=CE=AE=CF=81, weight), Ancient Greek (Attic/Eubolic standard), Historical weights +STD, (S=C3=A3o Tom=C3=A9 and Pr=C3=ADncipe Dobra (pre-2018)), African Curriencies, Currency +STD, (S=C3=A3o Tom=C3=A9 and Pr=C3=ADncipe Dobra (since 2018)), African Curriencies, Currency +stere, Lumber measure, Capacity and volume +sthene, (sn), Metre-Tonne-Second System (MTS), Force +stilb, (sb), Other units, Illuminance +stone, (st), Avoirdupois (U.S. / British), Mass and weight +stone, pounds, and ounces, (X st Y lbs Z oz), Avoirdupois (U.S. / British), Mass and weight +Storage length in feet, (ft), CNC Memory Capacity, Computer storage +Storage length in meters, (m), CNC Memory Capacity, Computer storage +stremma (=CF=83=CF=84=CF=81=CE=AD=CE=BC=CE=BC=CE=B1) of Greece, Historical Units Still In Use Today, Area +Stubs' Steel Wire Gauge, Wire Gauges, Wire and Needle Gauge +Sudanese Pound, (SDG), African Curriencies, Currency +sun (=E5=AF=B8), Japanese, Distance and Length +Surinamese Dollar, (SRD), South American Currencies, Currency +Sv, (sievert), Dose equivalent radiation, Radiation +SVC, (Salvadoran Col=C3=B3n), Central American Currencies, Currency +Swazi Lilangeni, (SZL), African Curriencies, Currency +Swedish Krona, (SEK), European Currencies, Currency +Swiss Franc, Fr, (CHF), Major World Currencies, Currency +syderic month, Astronomical, Time +syderic year, Astronomical, Time +synodic month, Astronomical, Time +SYP, (Syrian Pound), Middle East Currencies, Currency +Syrian Pound, (SYP), Middle East Currencies, Currency +Syringe Needle Gauge, Medical Needle and Catheter Gauges, Wire and Needle Gauge +SZL, (Swazi Lilangeni), African Curriencies, Currency + +## SECTION T +T, (Planck time), Natural units, Time +T, (tera), Metric Prefixes, Franctions and Percent +T1, Computer Connection Speed, Data transfer rate +table spoon, Apothecaries, Capacity and volume +tablespoon, Cooking (Australian), Capacity and volume +tablespoon, Cooking (International), Capacity and volume +tablespoon, Cooking (U.S.), Capacity and volume +tael (leung), Hong Kong, Mass and weight +tael troy, Hong Kong, Mass and weight +Tajikistani Somoni, (TJS), Asian Currencies, Currency +talent, Biblical, Historical weights +talent (=CF=84=CE=AC=CE=BB=CE=B1=CE=BD=CF=84=CE=BF=CE=BD), Ancient Greek (Aeginetic standard), Historical weights +talent (=CF=84=CE=AC=CE=BB=CE=B1=CE=BD=CF=84=CE=BF=CE=BD), Ancient Greek (Attic/Eubolic standard), Historical weights +Tamil number (Singapour, Sri Lanka, Malaysia, South Africa), Decimal numbers, Roman numbers, Hex, Octal and more +tamlueng (=E0=B8=95=E0=B8=B3=E0=B8=A5=E0=B8=B6=E0=B8=87), Thai units, Mass and weight +tank, Indian units (Akbar system), Mass and weight +Tanzanian Shilling, (TZS), African Curriencies, Currency +tan (=E6=AE=B5, =E5=8F=8D), Japanese, Area +tarang wah (=E0=B8=95=E0=B8=B2=E0=B8=A3=E0=B8=B2=E0=B8=87=E0=B8=A7=E0=B8=B2, square wa), Thai units, Area +Tbit [Tibit], (terabit [tebibit]), Data Storage and Transmission, Computer storage +Tbps, (terabit per second), Basic Units of Data Transfer Rate, Data transfer rate +TB/s, (terabyte per second), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +Tb [TiB], (terabyte [tebibyte]), Data Storage and Transmission, Computer storage +tce, (tonne of coal equivalent), Coal Energy Equivalent, Energy and Work +t/day, (tonne per day), Metric, Flow rate by mass +tea cup, Apothecaries, Capacity and volume +tea spoon, Apothecaries, Capacity and volume +teaspoon, Cooking (Australian), Capacity and volume +teaspoon, Cooking (International), Capacity and volume +teaspoon, Cooking (U.S.), Capacity and volume +tebibyte per day, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +tebibyte per hour, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +tebibyte per minute, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +tebibyte per second, (TiB/s), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +tebibyte per week, Transfer Rate per Different Time Units (older, 1024-based), Data transfer rate +technical atmosphere, Atmosphere, Stress and Pressure +tera, (T), Metric Prefixes, Franctions and Percent +terabit per second, (Tbps), Basic Units of Data Transfer Rate, Data transfer rate +terabit [tebibit], (Tbit [Tibit]), Data Storage and Transmission, Computer storage +terabyte per day, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +terabyte per hour, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +terabyte per minute, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +terabyte per second, (TB/s), Byte-based Transfer Rate Units (current, 1000-based), Data transfer rate +terabyte per week, Transfer Rate per Different Time Units (current, 1000-based), Data transfer rate +terabyte [tebibyte], (Tb [TiB]), Data Storage and Transmission, Computer storage +ternary number (radix 3), Other Radix Numerals, Roman numbers, Hex, Octal and more +teruncius (3=E2=81=8412 libra, triple twelfth), Ancient Roman, Historical weights +tetartemorion (=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, =C2=BC obol), Ancient Greek (Aeginetic standard), Historical weights +tetartemorion (=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, =C2=BC obol), Ancient Greek (Attic/Eubolic standard), Historical weights +tetarton, h=C4=93mikotyl=C4=93 (=CF=84=CE=AD=CF=84=CE=B1=CF=81=CF=84=CE=BF=CE=BD, =E1=BC=A1=CE=BC=CE=B9=CE=BA=CE=BF=CF=84=CF=8D=CE=BB=CE=B7), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +tetradrachm (=CF=84=CE=B5=CF=84=CF=81=CE=AC=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 4 drachmae), Ancient Greek (Aeginetic standard), Historical weights +tetradrachm (=CF=84=CE=B5=CF=84=CF=81=CE=AC=CE=B4=CF=81=CE=B1=CF=87=CE=BC=CE=BF=CE=BD, 4 drachmae), Ancient Greek (Attic/Eubolic standard), Historical weights +tetrobol (=CF=84=CE=B5=CF=84=CF=81=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 4 obols), Ancient Greek (Aeginetic standard), Historical weights +tetrobol (=CF=84=CE=B5=CF=84=CF=81=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 4 obols), Ancient Greek (Attic/Eubolic standard), Historical weights +th, (thou), British Imperial Measure before 1963, Distance and Length +th=C2=B2, (square mil), British (Imperial) And U.S. System, Area +Thai Baht, (THB), Asian Currencies, Currency +Thai number, Decimal numbers, Roman numbers, Hex, Octal and more +thanan (=E0=B8=97=E0=B8=B0=E0=B8=99=E0=B8=B2=E0=B8=99, coconut shell), Thai units, Capacity and volume +thang (=E0=B8=96=E0=B8=B1=E0=B8=87, tank), Thai units, Capacity and volume +THB, (Thai Baht), Asian Currencies, Currency +therm, British and American, Energy and Work +thou, (th), British Imperial Measure before 1963, Distance and Length +t/hour, (tonne per hour), Metric, Flow rate by mass +thousand, Quantity Units, Franctions and Percent +thousand board-feet, (mfbm, mbdft, mbf), Lumber measure, Capacity and volume +thousand of circular mils, (kcmil, MCM), Units for Measuring Wire Gauges, Area +thousand of normal cubic meters of natural gas, Natural Gas Energy Equivalent, Energy and Work +thousand of standard cubic feet of natural gas, Natural Gas Energy Equivalent, Energy and Work +thousand pounds per square inch, (ksi), British and U.S. (Imperial system), Stress and Pressure +TiB/s, (tebibyte per second), Byte-based Transfer Rate Units (older, 1024-based), Data transfer rate +tierce, English wine cask units, Capacity and volume +time per 500 meters (500m split in rowing), (HH:MM:SS), Pace (Various Sports), Speed +time per kilometer, (HH:MM:SS), Pace (Various Sports), Speed +time per mile, (HH:MM:SS), Pace (Various Sports), Speed +tithe, one fifth or .2, (1/5), Fractions, Franctions and Percent +TJS, (Tajikistani Somoni), Asian Currencies, Currency +t/m=C2=B3, (tonne per cubic meter), Metric System, Density +t/min, (tonne per minute), Metric, Flow rate by mass +TMT, (Turkmenistani Manat), Asian Currencies, Currency +TND, (Tunisian Dinar), African Curriencies, Currency +tnf, (ton-force), English Engineering and British Gravitational Units, Force +toe, (tonne of oil equivalent), Oil Energy Equivalent, Energy and Work +toesa, Old Portuguese, Historical Lengths +toise, Old French, Historical Lengths +tol=C3=A4, Indian units (Akbar system), Mass and weight +tonel, Old Portuguese Liquid Measure, Historical Units of Capacity +tonelada, Old Portuguese, Historical weights +tonelada, Old Spanish, Historical weights +ton-force, (tnf), English Engineering and British Gravitational Units, Force +Tongan Pa=CA=BBanga, (TOP), Currencies of Australia and Oceania, Currency +tonnage, Ship tonnage measurements, Capacity and volume +tonne, Metric, Historical weights +tonne, Metric, Mass and weight +tonne-force, Gravitational Metric System, Force +tonne-force centimeter, Metric, Torque +tonne-force meter, Metric, Torque +tonne (metric) of TNT, TNT Energy Equivalent, Energy and Work +tonne of coal equivalent, (tce), Coal Energy Equivalent, Energy and Work +tonne of oil equivalent, (toe), Oil Energy Equivalent, Energy and Work +Tonne of Russian fuel equivalent unit, Coal Energy Equivalent, Energy and Work +tonne per cubic meter, (t/m=C2=B3), Metric System, Density +tonne per day, (t/day), Metric, Flow rate by mass +tonne per hour, (t/hour), Metric, Flow rate by mass +tonne per minute, (t/min), Metric, Flow rate by mass +tonne per second, (t/s), Metric, Flow rate by mass +tonne per square centimeter, Metric, Stress and Pressure +tonne per square meter, Metric, Stress and Pressure +tonne per year, (t/year), Metric, Flow rate by mass +ton of TNT, TNT Energy Equivalent, Energy and Work +ton (U.S.) per square foot, British and U.S. (Imperial system), Stress and Pressure +ton (U.S.) per square inch, British and U.S. (Imperial system), Stress and Pressure +TOP, (Tongan Pa=CA=BBanga), Currencies of Australia and Oceania, Currency +township, British (Imperial) And U.S. System, Area +to (=E6=96=97), Japanese, Capacity and volume +Traditional Chinese number, Decimal numbers, Roman numbers, Hex, Octal and more +triens (4=E2=81=8412 libra, a third), Ancient Roman, Historical weights +triens (one third of a sextarius), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +trihemitetartemorion (=CF=84=CF=81=CE=B9=CE=B7=CE=BC=CE=B9=CF=84=CE=B5=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, 1=C2=BD tetartemorion), Ancient Greek (Aeginetic standard), Historical weights +trihemitetartemorion (=CF=84=CF=81=CE=B9=CE=B7=CE=BC=CE=B9=CF=84=CE=B5=CF=84=CE=B1=CF=81=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, 1=C2=BD tetartemorion), Ancient Greek (Attic/Eubolic standard), Historical weights +Trinidad and Tobago Dollar, (TTD), South American Currencies, Currency +trio, Number of Performers, Franctions and Percent +triobol (=CF=84=CF=81=CE=B9=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 3 obols), Ancient Greek (Aeginetic standard), Historical weights +triobol (=CF=84=CF=81=CE=B9=CF=8E=CE=B2=CE=BF=CE=BB=CE=BF=CE=BD, 3 obols), Ancient Greek (Attic/Eubolic standard), Historical weights +tritartemorion (=CF=84=CF=81=CE=B9=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, 3 tetartemoria), Ancient Greek (Aeginetic standard), Historical weights +tritartemorion (=CF=84=CF=81=CE=B9=CF=84=CE=B7=CE=BC=CF=8C=CF=81=CE=B9=CE=BF=CE=BD, 3 tetartemoria), Ancient Greek (Attic/Eubolic standard), Historical weights +tropic year, Astronomical, Time +TRY, (Turkish Lira), Middle East Currencies, Currency +t/s, (tonne per second), Metric, Flow rate by mass +tsubo (=E5=9D=AA), Japanese, Area +tsun (=E5=AF=B8), Hong Kong units, Distance and Length +TTD, (Trinidad and Tobago Dollar), South American Currencies, Currency +tum (thumb or inch) after 1855, Old Swedish, Historical Lengths +tum (thumb or inch) before 1855, Old Swedish, Historical Lengths +tun, English wine cask units, Capacity and volume +Tunisian Dinar, (TND), African Curriencies, Currency +Turkish Lira, (TRY), Middle East Currencies, Currency +Turkish stremma of Greece, Historical Units Still In Use Today, Area +Turkmenistani Manat, (TMT), Asian Currencies, Currency +tv=C3=A4rhand (hand), Old Swedish, Historical Lengths +TWD, (New Taiwan Dollar), Asian Currencies, Currency +twip, Typographical (British and U.S. - ATA system), Distance and Length +t/year, (tonne per year), Metric, Flow rate by mass +TZS, (Tanzanian Shilling), African Curriencies, Currency + +## SECTION U +U, (rack unit), Computer Equipment, Distance and Length +UAH, (Ukrainian Hryvnia), European Currencies, Currency +Ugandan Shilling, (UGX), African Curriencies, Currency +uger, Ancient Roman, Historical Units of Area +UGX, (Ugandan Shilling), African Curriencies, Currency +U.K. Needle Size (SWG), Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +Ukrainian Hryvnia, (UAH), European Currencies, Currency +UMTS HSDPA, Computer Connection Speed, Data transfer rate +UMTS HSPA+, Computer Connection Speed, Data transfer rate +uncia (inch), Ancient Roman, Historical Lengths +uncia (Roman ounce, a twelfth), Ancient Roman, Historical weights +undecimal number (radix 11), Other Radix Numerals, Roman numbers, Hex, Octal and more +United Arab Emirates Dirham, (AED), Middle East Currencies, Currency +United States Dollar, $, (USD), Major World Currencies, Currency +unit, point, (1), Quantity Units, Franctions and Percent +unze, Old Austrian, Historical weights +unze, Old German (Prussian), Historical weights +urna (urn), Ancient Roman Measure (Liquid and Dry), Historical Units of Capacity +Uruguayan Peso, (UYU), South American Currencies, Currency +USB 1, Computer Connection Speed, Data transfer rate +USB 2.0, Computer Connection Speed, Data transfer rate +USB 3.0, Computer Connection Speed, Data transfer rate +US beer barrel, U.S. brewery cask units, Capacity and volume +US beer half-barrel, U.S. brewery cask units, Capacity and volume +US beer keg (typical), U.S. brewery cask units, Capacity and volume +US beer quarter-barrel, U.S. brewery cask units, Capacity and volume +US cable length, US Nautical Measure, Distance and Length +U.S. Crochet Hook Size, Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +USD, (United States Dollar, $), Major World Currencies, Currency +US fathom, (fath), US Nautical Measure, Distance and Length +U.S. gallon per day, (gal/day), U.S. and British Imperial, Flow rate by volume +U.S. gallon per hour, (gph), U.S. and British Imperial, Flow rate by volume +U.S. gallon per minute, (gpm), U.S. and British Imperial, Flow rate by volume +U.S. gallon per second, (gps), U.S. and British Imperial, Flow rate by volume +U.S. gallon per year, (gal/year), U.S. and British Imperial, Flow rate by volume +US nautical mile, US Nautical Measure, Distance and Length +U.S. Needle Size, Knitting Needle and Crochet Hook Sizes, Wire and Needle Gauge +U.S. refrigeration ton, (USRT), British and American, Power +USRT, (U.S. refrigeration ton), British and American, Power +UYU, (Uruguayan Peso), South American Currencies, Currency +Uzbekistan Som, (UZS), Asian Currencies, Currency +UZS, (Uzbekistan Som), Asian Currencies, Currency + +## SECTION V +V.92 dial-up modem, Computer Connection Speed, Data transfer rate +VA, (volt-ampere), International System (SI), Power +Vanuatu Vatu, (VUV), Currencies of Australia and Oceania, Currency +vara, Old Portuguese, Historical Lengths +vara, Old Spanish, Historical Lengths +vara cuadrada (square vara), Old Spanish, Historical Units of Area +vara of Argentina, Spanish Customary Units Still In Use Today, Distance and Length +vara of Brazil, Spanish Customary Units Still In Use Today, Distance and Length +vara of Chile, Spanish Customary Units Still In Use Today, Distance and Length +vara of Colombia, Spanish Customary Units Still In Use Today, Distance and Length +vara of Costa Rica, Spanish Customary Units Still In Use Today, Distance and Length +vara of Cuba, Spanish Customary Units Still In Use Today, Distance and Length +vara of Dominican Republic, Spanish Customary Units Still In Use Today, Distance and Length +vara of Ecuador, Spanish Customary Units Still In Use Today, Distance and Length +vara of El Salvador, Spanish Customary Units Still In Use Today, Distance and Length +vara of Guatemala, Spanish Customary Units Still In Use Today, Distance and Length +vara of Honduras, Spanish Customary Units Still In Use Today, Distance and Length +vara of Mexico, Spanish Customary Units Still In Use Today, Distance and Length +vara of Nicaragua, Spanish Customary Units Still In Use Today, Distance and Length +vara of Panama, Spanish Customary Units Still In Use Today, Distance and Length +vara of Paraguay, Spanish Customary Units Still In Use Today, Distance and Length +vara of Peru (espa=C3=B1ola), Spanish Customary Units Still In Use Today, Distance and Length +vara of Peru (peruana), Spanish Customary Units Still In Use Today, Distance and Length +vara of S=C3=A3o Tom=C3=A9 and Principe, Spanish Customary Units Still In Use Today, Distance and Length +vara of Uruguay, Spanish Customary Units Still In Use Today, Distance and Length +vara of Venezuela, Spanish Customary Units Still In Use Today, Distance and Length +vara quadrada (square vara), Old Portuguese, Historical Units of Area +vedro, Old Russian Liquid Measure, Historical Units of Capacity +vedro, Old Russian Dry Measure, Historical Units of Capacity +Venezuelan Bol=C3=ADvar Soberano, (VES), South American Currencies, Currency +vershok, Old Russian, Historical Lengths +verst, Old Russian, Historical Lengths +VES, (Venezuelan Bol=C3=ADvar Soberano), South American Currencies, Currency +vierding, Old Austrian, Historical weights +Vietnamese Dong, (VND), Asian Currencies, Currency +vine bottle, Old Russian Liquid Measure, Historical Units of Capacity +VND, (Vietnamese Dong), Asian Currencies, Currency +vodka bottle, Old Russian Liquid Measure, Historical Units of Capacity +volt-ampere, (VA), International System (SI), Power +VUV, (Vanuatu Vatu), Currencies of Australia and Oceania, Currency + +## SECTION W +W, (watt), International System (SI), Power +Washburn & Moen Steel Wire Gauge, W&M, Wire Gauges, Wire and Needle Gauge +watt, (W), International System (SI), Power +watt hour, (W*h), Common Units, Energy and Work +watt second, (W*s), Common Units, Energy and Work +wa (=E0=B8=A7=E0=B8=B2, fathom), Thai units, Distance and Length +weakness, Acute radiation syndrome, Radiation +week, Common units, Time +W*h, (watt hour), Common Units, Energy and Work +Wheat Sheaf (UK, Ireland, Australia, South Africa), Ring Sizes in the United Kingdom, Ireland, Australia, New Zealand, and South Africa (Wheat Sheaf), Ring size +WiFi 802.11ac MU-MIMO (4 antennas), Computer Connection Speed, Data transfer rate +WiFi 802.11ac MU-MIMO (8 antennas), Computer Connection Speed, Data transfer rate +WiFi 802.11b, Computer Connection Speed, Data transfer rate +WiFi 802.11g, Computer Connection Speed, Data transfer rate +WiFi 802.11n, Computer Connection Speed, Data transfer rate +wine glass, Apothecaries, Capacity and volume +W*s, (watt second), Common Units, Energy and Work +WST, (Samoan Tala), Currencies of Australia and Oceania, Currency + +## SECTION X +XAF, (CFA Franc BEAC), African Curriencies, Currency +XAG, (Silver (troy ounce)), Other Currencies and More, Currency +XAU, (Gold (troy ounce)), Other Currencies and More, Currency +XCD, (East Caribbean Dollar), Currencies of the Caribbean, Currency +XDR, (Special Drawing Rights (International Monetary Fund)), Other Currencies and More, Currency +xest=C4=93s (=CE=BE=CE=AD=CF=83=CF=84=CE=B7=CF=82, Roman sextarius), Ancient Greek (Attic) Liquid Measure, Historical Units of Capacity +xest=C4=93s (=CE=BE=CE=AD=CF=83=CF=84=CE=B7=CF=82, Roman sextarius), Ancient Greeek (Attic) Dry Measure, Historical Units of Capacity +XOF, (CFA Franc BCEAO), African Curriencies, Currency +XPD, (Palladium (troy ounce)), Other Currencies and More, Currency +XPF, (French Polynesia CFP Franc), Currencies of Australia and Oceania, Currency +XPT, (Platinum (troy ounce)), Other Currencies and More, Currency +X st Y lbs Z oz, (stone, pounds, and ounces), Avoirdupois (U.S. / British), Mass and weight +x'y", (feet and inches), The American System (US Customary Units) and British Imperial Measures, Distance and Length + +## SECTION Y +y, (yocto), Metric Prefixes, Franctions and Percent +Y, (yotta), Metric Prefixes, Franctions and Percent +yard, (yd), The American System of Measures (US Customary Units), Historical Lengths +yard, (yd), British Imperial Measure before 1963, Distance and Length +yard, (yd), The American System (US Customary Units) and British Imperial Measures, Distance and Length +yd, (yard), The American System of Measures (US Customary Units), Historical Lengths +yd, (yard), British Imperial Measure before 1963, Distance and Length +yd, (yard), The American System (US Customary Units) and British Imperial Measures, Distance and Length +yd=C2=B2, (square yard), British (Imperial) And U.S. System, Historical Units of Area +yd=C2=B2, (square yard), British (Imperial) And U.S. System, Area +yd=C2=B3, (cubic yard), British and U.S. derivatives of length units, Capacity and volume +Yemeni Rial, (YER), Middle East Currencies, Currency +YER, (Yemeni Rial), Middle East Currencies, Currency +yin (=E5=BC=95), Chinese units of 1915, Distance and Length +yin (=E5=BC=95), Chinese units of 1930, Distance and Length +yip mue (=E0=B8=AB=E0=B8=A2=E0=B8=B4=E0=B8=9A=E0=B8=A1=E0=B8=B7=E0=B8=AD, pinch), Thai units, Capacity and volume +yocto, (y), Metric Prefixes, Franctions and Percent +yotta, (Y), Metric Prefixes, Franctions and Percent +yot (=E0=B9=82=E0=B8=A2=E0=B8=8A=E0=B8=99=E0=B9=8C, league), Thai units, Distance and Length +yugada, Old Spanish, Historical Units of Area + +## SECTION Z +z, (zepto), Metric Prefixes, Franctions and Percent +z, (red shift), Astronomical, Distance and Length +Z, (zetta), Metric Prefixes, Franctions and Percent +Zambian Kwacha, (ZMW), African Curriencies, Currency +ZAR, (South African Rand), African Curriencies, Currency +zentner, Old Austrian, Historical weights +zentner, Old German (Prussian), Historical weights +zepto, (z), Metric Prefixes, Franctions and Percent +zetta, (Z), Metric Prefixes, Franctions and Percent +zhang=C2=B2, (fang zhang (=E6=96=B9=E4=B8=88)), Chinese units of 1915, Area +zhang=C2=B2, (fang zhang (=E6=96=B9=E4=B8=88)), Chinese units of 1930, Area +zhang (=E4=B8=88), Chinese units of 1915, Distance and Length +zhang (=E5=B8=82=E4=B8=88), Chinese units of 1930, Distance and Length +Zimbabwean Dollar, (ZWL), African Curriencies, Currency +ZMW, (Zambian Kwacha), African Curriencies, Currency +zoll, Old Austrian, Historical Lengths +zoll, Old German (Prussian), Historical Lengths +zolotnik, Old Russian, Historical weights +ZWL, (Zimbabwean Dollar), African Curriencies, Currency + +## SECTION START + diff --git a/test/files/fuzz_issues/crash28 b/test/files/fuzz_issues/crash28 new file mode 100644 index 00000000..e94af66b Binary files /dev/null and b/test/files/fuzz_issues/crash28 differ diff --git a/test/files/fuzz_issues/rtrip_fail36 b/test/files/fuzz_issues/rtrip_fail36 new file mode 100644 index 00000000..19ab6a48 --- /dev/null +++ b/test/files/fuzz_issues/rtrip_fail36 @@ -0,0 +1 @@ +rc-¹+A+8_A+8US6ó2+B .3 %sq.23s \ No newline at end of file diff --git a/test/files/test_conversions/volume_conversions.txt b/test/files/test_conversions/volume_conversions.txt index 7dcd2d12..2f45cf4c 100644 --- a/test/files/test_conversions/volume_conversions.txt +++ b/test/files/test_conversions/volume_conversions.txt @@ -64,7 +64,7 @@ 66666.66667 33. fluid ounce (UK) [fl oz (UK)]: 35195.07973 -34. barrel (UK) [bbl (UK)]: +34. barrel (UK): 6.110257 35. gallon (UK) [gal (UK)]: 219.969248 @@ -137,4 +137,6 @@ 72. forty foot equivalent [FEU]: 0.0129794 73. 1000 cubic feet [mcf]: -0.03531467 \ No newline at end of file +0.03531467 +74. barrel oil (UK) [bbl (UK)]: +6.28483 \ No newline at end of file diff --git a/test/fuzz_issue_tests.cpp b/test/fuzz_issue_tests.cpp index a87524a6..ca19a3bc 100644 --- a/test/fuzz_issue_tests.cpp +++ b/test/fuzz_issue_tests.cpp @@ -50,7 +50,7 @@ TEST_P(crashProblems, crashFiles) EXPECT_NO_THROW(unit_from_string(cdata)); } -INSTANTIATE_TEST_SUITE_P(crashFiles, crashProblems, ::testing::Range(1, 28)); +INSTANTIATE_TEST_SUITE_P(crashFiles, crashProblems, ::testing::Range(1, 29)); TEST(fuzzFailures, timeouts) { // testing string that have caused a timeout from fuzz testing @@ -253,11 +253,11 @@ TEST_P(rtripProblems, rtripFiles) } } -INSTANTIATE_TEST_SUITE_P(rtripFiles, rtripProblems, ::testing::Range(1, 36)); +INSTANTIATE_TEST_SUITE_P(rtripFiles, rtripProblems, ::testing::Range(1, 38)); TEST(fuzzFailures, rtripSingleProblems) { - auto cdata = loadFailureFile("rtrip_fail", 35); + auto cdata = loadFailureFile("rtrip_fail", 37); auto u1 = unit_from_string(cdata); if (!is_error(u1)) { auto str = to_string(u1); diff --git a/test/test_commodities.cpp b/test/test_commodities.cpp index 38a317d1..7459a4ca 100644 --- a/test/test_commodities.cpp +++ b/test/test_commodities.cpp @@ -183,3 +183,5 @@ TEST(commodities, unusualFromString) EXPECT_EQ(punit.commodity(), 0U); EXPECT_TRUE(precise::custom::is_custom_unit(punit.base_units())); } + +TEST(commodities, packaging) {} diff --git a/test/test_equation_units.cpp b/test/test_equation_units.cpp index a607953d..bc3f05c7 100644 --- a/test/test_equation_units.cpp +++ b/test/test_equation_units.cpp @@ -604,7 +604,7 @@ TEST(otherUnits, unknownEQ) TEST(otherUnits, strings) { - precise_unit eq18(precise::custom::equation_unit(18), 1.36); + precise_unit eq18(1.36, precise::custom::equation_unit(18)); auto str = units::to_string(eq18); EXPECT_EQ(str, "1.36*EQXUN[18]"); diff --git a/test/test_measurement_strings.cpp b/test/test_measurement_strings.cpp index df03443c..cdb0ba99 100644 --- a/test/test_measurement_strings.cpp +++ b/test/test_measurement_strings.cpp @@ -59,6 +59,12 @@ TEST(MeasurementStrings, currency) EXPECT_EQ(pm, 9.99 * precise::currency); } +TEST(MeasurementStrings, interesting) +{ + auto pm = measurement_from_string("nanometre"); + EXPECT_EQ(pm.as_unit(), precise::nano * precise::m); +} + TEST(MeasurementToString, simple) { auto pm = precise_measurement(45.0, precise::m); diff --git a/test/test_r20.cpp b/test/test_r20.cpp new file mode 100644 index 00000000..1236aa79 --- /dev/null +++ b/test/test_r20.cpp @@ -0,0 +1,141 @@ +/* +Copyright (c) 2019-2020, +Lawrence Livermore National Security, LLC; +See the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "test.hpp" +#include "units/units.hpp" + +#include + +using unitD = std::tuple; +#ifdef ENABLE_UNIT_MAP_ACCESS +// Check the order of the array make sure it is order for searching +TEST(r20, order) +{ + std::size_t unit_count{0}; + const void* r20 = units::detail::r20rawData(unit_count); + const auto* r20data = reinterpret_cast(r20); + for (size_t ii = 1; ii < unit_count; ++ii) { + EXPECT_LT( + std::string(std::get<0>(r20data[ii - 1])), + std::string(std::get<0>(r20data[ii]))); + } +} + +// check to make sure the name conversions match +TEST(r20, conversions) +{ + std::size_t unit_count{0}; + const void* r20 = units::detail::r20rawData(unit_count); + const auto* r20data = reinterpret_cast(r20); + int missed{0}; + int correct{0}; + int matchWithCount{0}; + int matchWithPU{0}; + int matchUnitBase{0}; + int mismatchCommodity{0}; + int commQuantity{0}; + int commQuantity2{0}; + int convertible{0}; + int skipped{0}; + int failedConversion{0}; + int defaulted{0}; + for (size_t ii = 1; ii < unit_count; ++ii) { + std::string ustr = std::string(std::get<1>(r20data[ii])); + auto unit = units::measurement_from_string(ustr).as_unit(); + auto udir = units::unit_from_string(ustr); + auto r20unit = std::get<2>(r20data[ii]); + if (is_valid(unit)) { + if (unit != r20unit && udir != r20unit) { + if (units::unit_cast(unit) == units::unit_cast(r20unit)) { + ++mismatchCommodity; + } else { + if (r20unit.commodity() != 0) { + ++commQuantity; + std::cout << ' ' << ii << " \"" + << std::get<0>(r20data[ii]) << "\" " << ustr + << " conversion with commodity doesn't match " + << to_string(unit) << " vs. " + << to_string(r20unit) << '\n'; + } else if (unit.commodity() != 0) { + ++commQuantity2; + std::cout << ' ' << ii << " \"" + << std::get<0>(r20data[ii]) << "\" " << ustr + << " conversion with commodity doesn't match " + << to_string(unit) << " vs. " + << to_string(r20unit) << '\n'; + } else if (r20unit.is_per_unit()) { + ++matchWithPU; + continue; + } else if ( + unit / units::precise::count == r20unit || + unit * units::precise::count == r20unit) { + ++matchWithCount; + continue; + } else if (unit.has_same_base(r20unit)) { + ++matchUnitBase; + } else if (!std::isnan(units::convert(unit, r20unit))) { + ++convertible; + } else { + EXPECT_EQ(unit, r20unit) + << ' ' << ii << " \"" << std::get<0>(r20data[ii]) + << "\" " << ustr << " conversion does not match " + << to_string(unit) << " vs. " << to_string(r20unit); + + ++missed; + } + } + } else { + ++correct; + } + } else { + if (r20unit == units::precise::one / units::precise::count) { + ++defaulted; + } else if (r20unit.commodity() == 0) { + std::cout << "FAILED CONVERSION " << ii << " \"" + << std::get<0>(r20data[ii]) << "\" " << ustr + << " not convertible to " << to_string(r20unit) + << '\n'; + ++failedConversion; + } else { + std::cout << "SKIPPED " << ii << " \"" + << std::get<0>(r20data[ii]) << "\" " << ustr + << " not convertible to " << to_string(r20unit) + << '\n'; + ++skipped; + } + } + } + std::cout << missed << " r20 units not translated properly\n"; + std::cout << mismatchCommodity << " r20 units with mismatched commodity\n"; + std::cout << commQuantity << " r20 units with commodities not matching\n"; + std::cout << commQuantity2 + << " unit translations with commodities not matching\n"; + std::cout << skipped << " r20 units skipped\n"; + std::cout << failedConversion << " r20 units with failed conversion\n"; + std::cout << defaulted << " r20 units are still on default value\n"; + std::cout << matchWithPU << " r20 units matched with pu modifier\n"; + std::cout << matchUnitBase + << " r20 units matched with same base but different number\n"; + std::cout << matchWithCount << " r20 units match with a count modifier\n"; + std::cout << convertible << " r20 unit are convertible to eachother\n"; + std::cout << correct << " r20 units correctly translated\n"; +} + +#endif + +TEST(r20, units) +{ + using namespace units::precise; + EXPECT_EQ(units::r20_unit("A65"), cgs::erg / (cm.pow(2) * s)); + + EXPECT_EQ( + units::r20_unit("54"), + units::precise_unit( + 1.0, mass::tonne, units::commodities::packaging::theoretical)); + + EXPECT_FALSE(is_valid(units::r20_unit("chaos"))); +} diff --git a/test/test_udunits.cpp b/test/test_udunits.cpp index a7e7be8e..0974124b 100644 --- a/test/test_udunits.cpp +++ b/test/test_udunits.cpp @@ -76,7 +76,7 @@ TEST(UDUNITS, acceptedAlias) auto err = doc.LoadFile(TEST_FILE_FOLDER "/UDUNITS2/udunits2-accepted.xml"); ASSERT_FALSE(err) << err << std::endl; auto cs = doc.FirstChildElement("unit-system")->FirstChildElement("unit"); - int failConvert = 0; + int failConvert{0}; while (cs != nullptr) { std::string def = cs->FirstChildElement("def")->FirstChild()->Value(); @@ -265,7 +265,9 @@ TEST(UDUNITS, commonAlias) auto err = doc.LoadFile(TEST_FILE_FOLDER "/UDUNITS2/udunits2-common.xml"); ASSERT_FALSE(err) << err << std::endl; auto cs = doc.FirstChildElement("unit-system")->FirstChildElement("unit"); - int failConvert = 0; + int failConvert{0}; + int mismatchUnit{0}; + int mismatchVal{0}; while (cs != nullptr) { std::string def = cs->FirstChildElement("def")->FirstChild()->Value(); @@ -288,9 +290,17 @@ TEST(UDUNITS, commonAlias) } else { if (convert(unit_cast(nameUnit), unit_cast(definitionUnit)) != 1.0) { - std::cout << "name and unit do not match " << sname - << " and " << def << "\n"; - ++failConvert; + if (definitionUnit.has_same_base(nameUnit)) { + std::cout << "singular name and unit" + << " multiplier do not match " << sname + << " and " << def << "\n"; + ++mismatchVal; + } else { + std::cout << "singular name and unit do not have the " + << "same base units " << sname << " and " + << def << "\n"; + ++mismatchUnit; + } } } if (name->FirstChildElement("plural")) { @@ -305,9 +315,17 @@ TEST(UDUNITS, commonAlias) if (convert( unit_cast(nameUnit), unit_cast(definitionUnit)) != 1.0) { - std::cout << "name and unit do not match " << pname - << " and " << def << "\n"; - ++failConvert; + if (definitionUnit.has_same_base(nameUnit)) { + std::cout << "plural name and unit multiplier " + << "do not match " << sname << " and " + << def << "\n"; + ++mismatchVal; + } else { + std::cout << "plural name and unit " + << "do not have the same base units " + << sname << " and " << def << "\n"; + ++mismatchUnit; + } } } } @@ -319,13 +337,24 @@ TEST(UDUNITS, commonAlias) auto symString = sym->FirstChild()->Value(); auto symUnit = units::unit_from_string(symString); if (is_error(symUnit)) { - std::cout << "unable to convert " << symString + std::cout << "unable to convert symbol" << symString << " into a valid unit def=" << def << '\n'; ++failConvert; } else { if (convert(unit_cast(symUnit), unit_cast(definitionUnit)) != 1.0) { - std::cout << "name and unit do not match " << symString + if (definitionUnit.has_same_base(symUnit)) { + std::cout + << "symbol and unit multiplier do not mismatch" + << symString << " and " << def << "\n"; + ++mismatchVal; + } else { + std::cout << "symbol and unit do not have" + << " the same base units " << symString + << " and " << def << "\n"; + ++mismatchUnit; + } + std::cout << "symbol and unit do not match " << symString << " and " << def << "\n"; ++failConvert; } @@ -336,8 +365,14 @@ TEST(UDUNITS, commonAlias) cs = cs->NextSiblingElement("unit"); } if (failConvert > 0) { - std::cout << "unable to match " << failConvert - << " units and symbols\n"; + std::cout << failConvert << " units were unable to convert at all\n"; + } + if (mismatchUnit > 0) { + std::cout << mismatchUnit + << " units converted but had different base units\n"; + } + if (mismatchVal > 0) { + std::cout << mismatchVal << " units had different multipliers\n"; } // EXPECT_EQ(failConvert, 0); } diff --git a/test/test_unit_ops.cpp b/test/test_unit_ops.cpp index faae292d..a48a87bf 100644 --- a/test/test_unit_ops.cpp +++ b/test/test_unit_ops.cpp @@ -166,9 +166,9 @@ TEST(unitOps, valid) EXPECT_TRUE(is_valid(V)); EXPECT_TRUE(is_valid(unit(std::numeric_limits::quiet_NaN(), m))); EXPECT_FALSE(is_valid( - unit(invalid.base_units(), std::numeric_limits::quiet_NaN()))); + unit(std::numeric_limits::quiet_NaN(), invalid.base_units()))); EXPECT_FALSE(is_valid(unit( - invalid.base_units(), std::numeric_limits::signaling_NaN()))); + std::numeric_limits::signaling_NaN(), invalid.base_units()))); } TEST(unitOps, normal) @@ -592,11 +592,11 @@ TEST(preciseUnitOps, valid) EXPECT_TRUE(is_valid( precise_unit(std::numeric_limits::quiet_NaN(), precise::m))); EXPECT_FALSE(is_valid(precise_unit( - precise::invalid.base_units(), - std::numeric_limits::quiet_NaN()))); + std::numeric_limits::quiet_NaN(), + precise::invalid.base_units()))); EXPECT_FALSE(is_valid(precise_unit( - precise::invalid.base_units(), - std::numeric_limits::signaling_NaN()))); + std::numeric_limits::signaling_NaN(), + precise::invalid.base_units()))); } TEST(preciseUnitOps, cast) diff --git a/test/test_unit_strings.cpp b/test/test_unit_strings.cpp index 5697562d..5f7fdc3f 100644 --- a/test/test_unit_strings.cpp +++ b/test/test_unit_strings.cpp @@ -255,7 +255,7 @@ TEST(unitStrings, infinite) TEST(unitString, almostInfinite) { precise_unit almost_inf( - precise::s.pow(3) * precise::kg * precise::mol, 4.414e307); + 4.414e307, precise::s.pow(3) * precise::kg * precise::mol); auto res = to_string(almost_inf); auto ai2 = unit_from_string(res); @@ -480,6 +480,24 @@ TEST(stringToUnits, Simple) EXPECT_EQ(precise::m, unit_from_string("meter")); } +TEST(stringToUnits, pressure) +{ + EXPECT_EQ( + unit_from_string("M[HG]"), unit_from_string("meter of mercury column")); + EXPECT_EQ( + unit_from_string("M[HG]", units::case_insensitive), + unit_from_string("meter of mercury column")); + EXPECT_EQ(unit_from_string("millimeter_Hg_0C"), precise::pressure::mmHg); + EXPECT_EQ( + unit_from_string("MM[HG]", units::case_insensitive), + unit_from_string("millimeter of mercury column")); +} + +TEST(stringToUnit, fluid) +{ + EXPECT_EQ(unit_from_string("US_fluid_ounce"), precise::us::floz); +} + TEST(stringToUnits, withSpace) { EXPECT_EQ(precise::m.inv(), unit_from_string("1 /m")); @@ -575,6 +593,12 @@ TEST(stringToUnits, specificCombinations) EXPECT_EQ(precise::kg * precise::L, unit_from_string("kg l")); } +TEST(stringToUnits, barrels) +{ + EXPECT_EQ( + precise::kilo * precise::us::barrel / precise::day, + unit_from_string("kbbl (US)/d")); +} TEST(stringToUnits, gasConstant) { auto rval = unit_from_string("J mol^-1 K^-1"); @@ -697,6 +721,15 @@ TEST(stringToUnits, words) EXPECT_EQ( precise::lm * precise::m.pow(2), unit_from_string("lumen square meter")); + + EXPECT_EQ( + unit_from_string("ampere per square metre kelvin squared"), + precise::A / (m.pow(2) * K.pow(2))); + + EXPECT_EQ(unit_from_string("reciprocal cubic meter"), precise::m.pow(-3)); + EXPECT_EQ( + unit_from_string("sixty fourths of an inch"), + precise_unit(1.0 / 64.0, precise::in)); } TEST(stringToUnits, exponentForms) @@ -759,6 +792,12 @@ TEST(stringToUnits, interestingUnits) unit = unit_from_string("m per s2 per Hz^1/2"); EXPECT_EQ(unit, precise::special::ASD); + + unit = unit_from_string("tenth minute"); + EXPECT_EQ(unit, precise_unit(6.0, precise::s)); + + unit = unit_from_string("fluid ounce(UK)"); + EXPECT_EQ(unit, precise::imp::floz); } TEST(stringToUnits, customUnitforms) @@ -794,6 +833,7 @@ TEST(stringToUnits, equivalents2) { EXPECT_EQ(unit_from_string("in us"), unit_from_string("in_us")); EXPECT_EQ(unit_from_string("us in"), unit_from_string("in_us")); + EXPECT_EQ(unit_from_string("[in_us]"), unit_from_string("inch - US")); EXPECT_EQ(unit_from_string("CXCUN[1]^-1"), unit_from_string("/[arb'U]")); EXPECT_EQ( unit_from_string("[CCID_50]"), unit_from_string("CCID50 ")); @@ -821,8 +861,8 @@ TEST(stringToUnits, equivalents2) EXPECT_EQ(unit_from_string("per mins"), unit_from_string("/min")); EXPECT_EQ(unit_from_string("/100 WBCs"), unit_from_string("/100{WBCs}")); - // EXPECT_EQ(unit_from_string("lumen meters squared"), - // unit_from_string("lm.m2")); + EXPECT_EQ( + unit_from_string("lumen meters squared"), unit_from_string("lm.m2")); } TEST(stringToUnits, equivalents3) @@ -846,6 +886,22 @@ TEST(stringToUnits, equivalents3) EXPECT_EQ(u3.multiplier(), std::pow(2.0, 345.0)); } +TEST(stringToUnits, equivalents4) +{ + EXPECT_EQ(unit_from_string("[CAR_AU]"), unit_from_string("[car_Au]")); + EXPECT_EQ(unit_from_string("[bu_us]"), unit_from_string("bushel - US")); + EXPECT_EQ( + unit_from_string("[drp]"), unit_from_string("drop - metric (1/20 mL)")); + EXPECT_EQ( + unit_from_string("[in_i'Hg]"), + unit_from_string("inch of mercury column")); + + EXPECT_EQ( + unit_cast(unit_from_string("nmol/mg{prot}")), + unit_cast(unit_from_string( + "nanomole of (1/2) cystine per milligram of protein"))); +} + TEST(stringToUnits, electronVolt) { EXPECT_EQ(unit_from_string("eV"), precise::energy::eV); @@ -1050,6 +1106,74 @@ TEST(stringToUnits, rotSequences) EXPECT_EQ(u1, unit_from_string("BTU-IT")); } +TEST(stringToUnits, parentheticalModifier) +{ + auto u1 = unit_from_string("mile(statute)"); + EXPECT_EQ(u1, precise::us::mile); + auto u2 = unit_from_string("mile (statute)"); + EXPECT_EQ(u2, precise::us::mile); + auto u3 = unit_from_string("British thermal unit (thermochemical)"); + EXPECT_EQ(u3, precise::energy::btu_th); +} + +TEST(stringToUnit, handlingOfSquared) +{ + auto u1 = unit_from_string("square foot second"); + EXPECT_EQ(u1, precise::ft.pow(2) * precise::s); + + auto u2 = unit_from_string("pascal squared second"); + EXPECT_EQ(u2, precise::Pa.pow(2) * precise::s); + + auto u3 = unit_from_string("coulomb metre squared per volt"); + EXPECT_EQ(u3, precise::C * precise::m.pow(2) / precise::V); + + auto u4 = unit_from_string("ampere square metre per joule second"); + EXPECT_EQ(u4, precise::A * precise::m.pow(2) / (precise::J * precise::s)); + + auto u5 = + unit_from_string("meter per square seconds per square root of hertz"); + EXPECT_EQ(u5, precise::special::ASD); + + auto u6 = unit_from_string("degree Fahrenheit hour square foot per British " + "thermal unit (international table) inch"); + + EXPECT_EQ( + u6, + precise::degF * precise::hr * precise::ft.pow(2) / + precise::energy::btu_it / precise::in); + + auto u7 = unit_from_string("gram square decimeter"); + EXPECT_EQ(u7, g * (deci * m).pow(2)); +} + +TEST(stringToUnits, modifiedStrings) +{ + auto u1 = unit_from_string("linear yard"); + u1.commodity(0); + EXPECT_EQ(u1, precise::yd); + + auto u2 = unit_from_string("kilogram per millimetre"); + EXPECT_EQ(u2, precise::kg / precise::mm); + + auto u3 = unit_from_string("British thermal unit (59 degF)"); + EXPECT_EQ(u3, precise::energy::btu_59); + + auto u4 = unit_from_string("calorie (20 degC)"); + EXPECT_EQ(u4, precise::energy::cal_20); + + auto u5 = unit_from_string("nanometre"); + EXPECT_EQ(u5, precise::nano * precise::m); + + auto u6 = unit_from_string("ton (US) per hour"); + EXPECT_EQ(u6, precise::ton / precise::hr); + + auto u7 = unit_from_string("foot of water(39.2 degF)"); + EXPECT_EQ(u7, precise_unit(2988.98400, Pa)); + + auto u8 = unit_from_string("[qt_us]"); + EXPECT_EQ(u8, unit_from_string("[QT_US]")); +} + TEST(stringToUnits, addition) { auto u1 = unit_from_string("cm+cm"); @@ -1376,12 +1500,12 @@ TEST(userDefinedUnits, fileOp2) "/test_unit_files/other_units2.txt"); EXPECT_TRUE(outputstr.empty()); auto y1 = unit_from_string("yodles"); - EXPECT_EQ(y1, precise_unit(count, 73.0)); + EXPECT_EQ(y1, precise_unit(73.0, count)); auto y2 = unit_from_string("yeedles"); - EXPECT_EQ(y2, precise_unit(y1, 19.0)); + EXPECT_EQ(y2, precise_unit(19.0, y1)); auto y3 = unit_from_string("yimdles"); - EXPECT_EQ(y3, precise_unit(y2, 12.0)); + EXPECT_EQ(y3, precise_unit(12.0, y2)); EXPECT_EQ(unit_from_string("yimdles"), unit_from_string("19*yodles*12")); clearUserDefinedUnits(); } @@ -1392,23 +1516,23 @@ TEST(userDefinedUnits, fileOp3) "/test_unit_files/other_units3.txt"); EXPECT_TRUE(outputstr.empty()); auto y1 = unit_from_string("bl==p"); - EXPECT_EQ(y1, precise_unit(precise::us::cup, 18.7)); + EXPECT_EQ(y1, precise_unit(18.7, precise::us::cup)); EXPECT_EQ(to_string(y1), "bl==p"); auto y2 = unit_from_string("y,,p"); - EXPECT_EQ(y2, precise_unit(precise::ton, 9.0)); + EXPECT_EQ(y2, precise_unit(9.0, precise::ton)); EXPECT_EQ(to_string(y2), "y,,p"); auto y3 = unit_from_string("'np"); - EXPECT_EQ(y3, precise_unit(precise::kg, 14.0)); + EXPECT_EQ(y3, precise_unit(14.0, precise::kg)); EXPECT_EQ(to_string(y3), "'np"); auto y4 = unit_from_string("j\"\""); - EXPECT_EQ(y4, precise_unit(precise::W, 13.5)); + EXPECT_EQ(y4, precise_unit(13.5, precise::W)); EXPECT_EQ(to_string(y4), "j\"\""); auto y5 = unit_from_string("q\"\""); - EXPECT_EQ(y5, precise_unit(precise::W, 15.5)); + EXPECT_EQ(y5, precise_unit(15.5, precise::W)); EXPECT_EQ(to_string(y5), "q\"\""); clearUserDefinedUnits(); } diff --git a/units/CMakeLists.txt b/units/CMakeLists.txt index ca7ef704..878fff65 100644 --- a/units/CMakeLists.txt +++ b/units/CMakeLists.txt @@ -4,10 +4,21 @@ # See the top-level NOTICE for additional details. All rights reserved. # SPDX-License-Identifier: BSD-3-Clause # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -set(units_source_files units.cpp x12_conv.cpp r20_conv.cpp commodities.cpp) -set(units_header_files units.hpp units_decl.hpp unit_definitions.hpp units_util.hpp - units_conversion_maps.hpp units_math.hpp +if(UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + set(units_source_files units.cpp commodities.cpp) +else() + set(units_source_files units.cpp commodities.cpp x12_conv.cpp r20_conv.cpp) +endif() + +set(units_header_files + units.hpp + units_decl.hpp + unit_definitions.hpp + units_util.hpp + units_conversion_maps.hpp + units_math.hpp + commodity_definitions.hpp ) include(GenerateExportHeader) @@ -54,6 +65,9 @@ if(UNITS_BUILD_SHARED_LIBRARY) if(UNITS_DISABLE_NON_ENGLISH_UNITS) target_compile_definitions(units PUBLIC -DUNITS_DISABLE_NON_ENGLISH_UNITS=1) endif() + if(UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + target_compile_definitions(units PUBLIC -DUNITS_DISABLE_EXTRA_UNIT_STANDARDS=1) + endif() if(UNITS_DEFAULT_DOMAIN) target_compile_definitions( units PRIVATE -DUNITS_DEFAULT_DOMAIN=${UNITS_DEFAULT_DOMAIN} @@ -100,6 +114,9 @@ elseif(UNITS_BUILD_OBJECT_LIBRARY) if(UNITS_DISABLE_NON_ENGLISH_UNITS) target_compile_definitions(units PUBLIC -DUNITS_DISABLE_NON_ENGLISH_UNITS=1) endif() + if(UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + target_compile_definitions(units PUBLIC -DUNITS_DISABLE_EXTRA_UNIT_STANDARDS=1) + endif() if(${CMAKE_CXX_STANDARD} GREATER 16) target_compile_definitions(units PRIVATE -DUNITS_CONSTEXPR_IF_SUPPORTED=1) endif() @@ -124,6 +141,9 @@ elseif(UNITS_BUILD_STATIC_LIBRARY) if(UNITS_BASE_TYPE) target_compile_definitions(units PUBLIC -DUNITS_BASE_TYPE=${UNITS_BASE_TYPE}) endif() + if(UNITS_DISABLE_EXTRA_UNIT_STANDARDS) + target_compile_definitions(units PUBLIC -DUNITS_DISABLE_EXTRA_UNIT_STANDARDS=1) + endif() if(UNITS_DEFAULT_DOMAIN) target_compile_definitions( units PRIVATE -DUNITS_DEFAULT_DOMAIN=${UNITS_DEFAULT_DOMAIN} diff --git a/units/commodities.cpp b/units/commodities.cpp index 50b76b7a..a7cc3c49 100644 --- a/units/commodities.cpp +++ b/units/commodities.cpp @@ -111,7 +111,7 @@ namespace commodities { {aluminum, "aluminum"}, {alluminum_alloy, "alluminum_alloy"}, {nickel, "nickel"}, - {cobolt, "cobolt"}, + {cobalt, "cobalt"}, {molybdenum, "molybdenum"}, // energy @@ -129,12 +129,11 @@ namespace commodities { {soybean_oil, "soybean_oil"}, {oats, "oats"}, {rice, "rice"}, - {red_wheat, "red_wheat"}, - {spring_wheat, "spring_wheat"}, + {durum_wheat, "durum_wheat"}, {canola, "canola"}, {rough_rice, "rough_rice"}, {rapeseed, "rapeseed"}, - {adzuci, "adzuci"}, + {adzuki, "adzuki"}, {barley, "barley"}, // meats {live_cattle, "live_cattle"}, @@ -147,7 +146,6 @@ namespace commodities { {orange_juice, "orange_juice"}, {sugar, "sugar"}, {sugar_11, "sugar_11"}, - {sugar_14, "sugar_14"}, {coffee, "coffee"}, {cocoa, "cocoa"}, {palm_oil, "palm_oil"}, @@ -157,7 +155,6 @@ namespace commodities { // other common unit blocks {people, "people"}, - {particles, "particles"}, {vehicle, "vehicle"}, // clinical @@ -201,7 +198,7 @@ namespace commodities { {"aluminum", aluminum}, {"alluminum_alloy", alluminum_alloy}, {"nickel", nickel}, - {"cobolt", cobolt}, + {"cobalt", cobalt}, {"molybdenum", molybdenum}, {"carbon", carbon}, @@ -220,12 +217,12 @@ namespace commodities { {"soybean_oil", soybean_oil}, {"oats", oats}, {"rice", rice}, - {"red_wheat", red_wheat}, - {"spring_wheat", spring_wheat}, + {"durum_wheat", durum_wheat}, {"canola", canola}, {"rough_rice", rough_rice}, {"rapeseed", rapeseed}, - {"adzuci", adzuci}, + {"adzuci", adzuki}, + {"adzuki", adzuki}, {"barley", barley}, // meats {"live_cattle", live_cattle}, @@ -238,7 +235,6 @@ namespace commodities { {"orange_juice", orange_juice}, {"sugar", sugar}, {"sugar_11", sugar_11}, - {"sugar_14", sugar_14}, {"coffee", coffee}, {"cocoa", cocoa}, {"palm_oil", palm_oil}, @@ -248,7 +244,6 @@ namespace commodities { // other common unit blocks {"people", people}, - {"particles", particles}, {"cars", vehicle}, {"vehicle", vehicle}, // clinical @@ -345,7 +340,7 @@ uint32_t getCommodity(std::string comm) } if (comm.compare(0, 7, "cxcomm[") == 0) { - return static_cast(atoi(comm.c_str() + 7)); + return strtoul(comm.c_str() + 7, nullptr, 0); } if ((comm.size() < 6) && std::all_of(comm.begin(), comm.end(), [](char x) { return (x == ' ' || (x >= '_' && x <= '}')); @@ -387,7 +382,7 @@ std::string getCommodityName(std::uint32_t commodity) return fnd->second; } - if ((commodity & 0x60000000U) == 0x40000000U) { + if ((commodity & 0x7C000000U) == 0x40000000U) { std::string ret; ret.push_back((commodity & 0X1FU) + '_'); ret.push_back(((commodity >> 5U) & 0X1FU) + '_'); diff --git a/units/commodity_definitions.hpp b/units/commodity_definitions.hpp new file mode 100644 index 00000000..8e3d1cc4 --- /dev/null +++ b/units/commodity_definitions.hpp @@ -0,0 +1,521 @@ +/* +Copyright (c) 2019-2023, +Lawrence Livermore National Security, LLC; +See the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ +#pragma once + +#include "units_decl.hpp" + +#include +#include + +namespace UNITS_NAMESPACE { + +namespace commodities { + /// generate a harmonized code for use with the units library based on the + /// international harmonized code for international trade + + constexpr std::uint32_t generateHarmonizedCode( + std::uint32_t chapter, + std::uint32_t section, + std::uint32_t subsection) + { + return ((chapter % 100U) << 14U) + ((section % 100U) << 7U) + + ((subsection % 100U)); + } + + constexpr std::uint32_t generateHarmonizedCode( + std::uint32_t chapter, + std::uint32_t section, + std::uint32_t subsection, + std::uint32_t code1, + bool digit = false) + { + return ((chapter % 100U) << 14U) + ((section % 100U) << 7U) + + ((subsection % 100U)) + ((code1 % 100U) << 21U) + + ((digit) ? 0x1000000U : 0U); + } + + // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + template + constexpr std::uint32_t generateStringCode(const char (&code)[N]) + { + static_assert(N == 6, "invalid string code"); + return 0x60000000U + + ((static_cast(code[0] - '_') & 0X1FU) << 20U) + + ((static_cast(code[1] - '_') & 0X1FU) << 15U) + + ((static_cast(code[2] - '_') & 0X1FU) << 10U) + + ((static_cast(code[3] - '_') & 0X1FU) << 5U) + + (static_cast(code[4] - '_') & 0X1FU); + } + + template + constexpr std::uint32_t generateStringCodeUpper(const char (&code)[N]) + { + static_assert(N == 6, "invalid string code"); + return 0x70000000U + + ((static_cast(code[0] - '@') & 0X1FU) << 20U) + + ((static_cast(code[1] - '@') & 0X1FU) << 15U) + + ((static_cast(code[2] - '@') & 0X1FU) << 10U) + + ((static_cast(code[3] - '@') & 0X1FU) << 5U) + + (static_cast(code[4] - '@') & 0X1FU); + } + + template + constexpr std::uint32_t generateShareCode(const char (&code)[N]) + { + return generateStringCodeUpper(code) + (1U << 25U); + } + + // NOLINTEND(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + + constexpr std::uint32_t generateKnownCode(std::uint32_t code) + { + return 0x5C000000U + (code & 0x03FFFFFFU); + } + + constexpr std::uint32_t generatePackagingCode(std::uint32_t code) + { + return 0x20000000U + ((code & 0xFFU) << 21U); + } + + constexpr std::uint32_t generatePackagingCodeAlternate(std::uint32_t code) + { + return 0x20000000U + (((code & 0x7FU) + 0x80U) << 21U); + } + + // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + + template + constexpr std::uint32_t generateCurrencyCode(const char (&code)[N]) + { + static_assert(N == 4, "invalid string code"); + return 0x46000000U + (static_cast(code[0]) << 16U) + + (static_cast(code[1]) << 8U) + + static_cast(code[2]); + } + + template + constexpr std::uint32_t generateChemCode(const char (&code)[N]) + { + static_assert(N == 5, "invalid string code"); + return 0x4D000000U + + ((static_cast(code[0] - ' ') & 0X3FU) << 18U) + + ((static_cast(code[1] - ' ') & 0X3FU) << 12U) + + ((static_cast(code[2] - ' ') & 0X3FU) << 6U) + + (static_cast(code[3] - ' ') & 0X3FU); + } + // NOLINTEND(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + + namespace packaging { + /** Enumeration of potential packaging/form factor modifiers + aligned with recommendation 21 of international trade to the extent + possible + */ + enum packaging : std::uint32_t { + // bulk 0-9 + bulk = generatePackagingCode(0), + powder = generatePackagingCode(1), + grain = generatePackagingCode(2), + nodule = generatePackagingCode(3), + liquid = generatePackagingCode(4), + gas_liquid = generatePackagingCode(5), + gas = generatePackagingCode(6), + + // wet or dry (typically volume or mass) + + dry = generatePackagingCode(7), + dry90 = generatePackagingCode(8), + wet = generatePackagingCode(9), + + // loose,unpacked 10-19 + loose = generatePackagingCode(10), + tube = generatePackagingCode(11), + rod = generatePackagingCode(12), + roll = generatePackagingCode(13), + coil = generatePackagingCode(14), + sheet = generatePackagingCode(15), + bar = generatePackagingCode(16), + ingot = generatePackagingCode(17), + slipsheet = generatePackagingCode(18), + flake = generatePackagingCode(19), + // rigid box type + match_box = generatePackagingCode(21), + can = generatePackagingCode(22), + carton = generatePackagingCode(23), + crate = generatePackagingCode(24), + chest = generatePackagingCode(25), + cage = generatePackagingCode(26), + basket = generatePackagingCode(27), + tank = generatePackagingCode(28), + bottlecrate = generatePackagingCode(29), + + // rigid drum 30-39 + ampoule = generatePackagingCode(31), + bottle = generatePackagingCode(32), + jerrycan = generatePackagingCode(33), + drum = generatePackagingCode(34), + vat = generatePackagingCode(35), + cylindrical_tank = generatePackagingCode(38), + // rigid bulb 40-49 + jug = generatePackagingCode(41), + bulbous_bottle = generatePackagingCode(42), + carboy = generatePackagingCode(43), + barrel = generatePackagingCode(44), + large_barrel = generatePackagingCode(45), + // rigid other 50-59 + bucket = generatePackagingCode(51), + coffin = generatePackagingCode(54), + base_box = generatePackagingCode(55), + // flexible bagtype 60-69 + sachet = generatePackagingCode(61), + bag_small = generatePackagingCode(62), + bag_medium = generatePackagingCode(63), + bag_large = generatePackagingCode(64), + bale = generatePackagingCode(65), + net = generatePackagingCode(66), + filmpack = generatePackagingCode(67), + // 70-79 reserved + displacement = generatePackagingCode(70), + lump = generatePackagingCode(71), + linear = generatePackagingCode(72), + // units library is using 80-89 as descriptors + actual = generatePackagingCode(80), + theoretical = generatePackagingCode(81), + net_quantity = generatePackagingCode(82), + gross_quantity = generatePackagingCode(83), + fixed_rate = generatePackagingCode(84), + deadweight = generatePackagingCode(85), + gross_register = generatePackagingCode(86), + net_register = generatePackagingCode(87), + freight = generatePackagingCode(88), + capacity = generatePackagingCode(89), + // other special packages + bobbin = generatePackagingCode(91), + jumbo = generatePackagingCode(92), + cake = generatePackagingCode(93), + excess = generatePackagingCode(94), + guage = generatePackagingCode(95), + equivalent = generatePackagingCode(96), + pad = generatePackagingCode(97), + tray = generatePackagingCode(98), + // the remaining are not standard containers + // 100 - 109 vehicles + vehicle = generatePackagingCode(100), + car = generatePackagingCode(101), + locomotive = generatePackagingCode(102), + caboose = generatePackagingCode(103), + train = generatePackagingCode(104), + truck = generatePackagingCode(105), + tankcar = generatePackagingCode(106), + tanktruck = generatePackagingCode(107), + split_tank_truck = generatePackagingCode(108), + // 110 - 120 organizational packaging + group = generatePackagingCode(110), + piece = generatePackagingCode(111), + assembly = generatePackagingCode(112), + outfit = generatePackagingCode(113), + composite = generatePackagingCode(114), + track = generatePackagingCode(115), + length = generatePackagingCode(116), + layer = generatePackagingCode(117), + mat = generatePackagingCode(118), + side = generatePackagingCode(119), + trailer = generatePackagingCode(120), + + lift = generatePackagingCodeAlternate(3), + ration = generatePackagingCodeAlternate(4), + stick = generatePackagingCodeAlternate(5), + bulk_car = generatePackagingCodeAlternate(6), + well = generatePackagingCodeAlternate(7), + lite = generatePackagingCodeAlternate(8), + leaf = generatePackagingCodeAlternate(9), + large_spray = generatePackagingCodeAlternate(10), + + container = generatePackagingCodeAlternate(11), + bin = generatePackagingCodeAlternate(12), + bulk_bag = generatePackagingCodeAlternate(13), + bag = generatePackagingCodeAlternate(14), + ball = generatePackagingCodeAlternate(16), + bulk_pack = generatePackagingCodeAlternate(17), + capsule = generatePackagingCodeAlternate(18), + assortment = generatePackagingCodeAlternate(19), + vial = generatePackagingCodeAlternate(20), + bunk = generatePackagingCodeAlternate(21), + billet = generatePackagingCodeAlternate(22), + bundle = generatePackagingCodeAlternate(23), + board = generatePackagingCodeAlternate(24), + segment = generatePackagingCodeAlternate(25), + spool = generatePackagingCodeAlternate(26), + strip = generatePackagingCodeAlternate(27), + skid = generatePackagingCodeAlternate(28), + skein = generatePackagingCodeAlternate(29), + shipment = generatePackagingCodeAlternate(30), + syringe = generatePackagingCodeAlternate(31), + straw = generatePackagingCodeAlternate(32), + suppository = generatePackagingCodeAlternate(33), + + small_tin = generatePackagingCodeAlternate(34), + + treatment = generatePackagingCodeAlternate(35), + tablet = generatePackagingCodeAlternate(36), + patch = generatePackagingCodeAlternate(37), + + wheel = generatePackagingCodeAlternate(38), + wrap = generatePackagingCodeAlternate(39), + hanging_container = generatePackagingCodeAlternate(40), + cast = generatePackagingCodeAlternate(42), + lift_van = generatePackagingCodeAlternate(43), + carset = generatePackagingCodeAlternate(44), + display = generatePackagingCodeAlternate(45), + card = generatePackagingCodeAlternate(46), + cone = generatePackagingCodeAlternate(48), + // + cylinder = generatePackagingCodeAlternate(50), + combo = generatePackagingCodeAlternate(51), + lot = generatePackagingCodeAlternate(52), + book = generatePackagingCodeAlternate(53), + block = generatePackagingCodeAlternate(54), + round = generatePackagingCodeAlternate(55), + cassette = generatePackagingCodeAlternate(56), + beam = generatePackagingCodeAlternate(57), + band = generatePackagingCodeAlternate(58), + sleeve = generatePackagingCodeAlternate(59), + // + disk = generatePackagingCodeAlternate(60), + deal = generatePackagingCodeAlternate(61), + dispenser = generatePackagingCodeAlternate(62), + pack = generatePackagingCodeAlternate(63), + pail = generatePackagingCodeAlternate(64), + reel = generatePackagingCodeAlternate(65), + room = generatePackagingCodeAlternate(66), + session = generatePackagingCodeAlternate(67), + belt = generatePackagingCodeAlternate(68), + dose = generatePackagingCodeAlternate(69), + // + strand = generatePackagingCodeAlternate(70), + zone = generatePackagingCodeAlternate(71), + envelope = generatePackagingCodeAlternate(72), + blank = generatePackagingCodeAlternate(73), + head = generatePackagingCodeAlternate(74), + jar = generatePackagingCodeAlternate(75), + joint = generatePackagingCodeAlternate(76), + keg = generatePackagingCodeAlternate(77), + barge = generatePackagingCodeAlternate(78), + field = generatePackagingCodeAlternate(79), + pallet = generatePackagingCodeAlternate(80), + plate = generatePackagingCodeAlternate(81), + panel = generatePackagingCodeAlternate(82), + meal = generatePackagingCodeAlternate(83), + ring = generatePackagingCodeAlternate(84), + sack = generatePackagingCodeAlternate(85), + set = generatePackagingCodeAlternate(86), + thread = generatePackagingCodeAlternate(87), + large_tin = generatePackagingCodeAlternate(88), + + particle = generatePackagingCodeAlternate(89), + + sling = generatePackagingCodeAlternate(90), + line = generatePackagingCodeAlternate(91), + casing = generatePackagingCodeAlternate(92), + tote = generatePackagingCodeAlternate(93), + cask = generatePackagingCodeAlternate(94), + page = generatePackagingCodeAlternate(95), + rack = generatePackagingCodeAlternate(96), + cap = generatePackagingCodeAlternate(97), + cop = generatePackagingCodeAlternate(98), + powder_vial = generatePackagingCodeAlternate(99), + brush = generatePackagingCodeAlternate(100), + box = generatePackagingCodeAlternate(101), + bolt = generatePackagingCodeAlternate(102), + cell = generatePackagingCodeAlternate(103), + page_electronic = generatePackagingCodeAlternate(104), + hank = generatePackagingCodeAlternate(105), // textile + kit = generatePackagingCodeAlternate(106), + packet = generatePackagingCodeAlternate(107), + article = generatePackagingCodeAlternate(108), + part = generatePackagingCodeAlternate(109), + parcel = generatePackagingCodeAlternate(110), + load = generatePackagingCodeAlternate(111), + lug = generatePackagingCodeAlternate(112), + square = generatePackagingCodeAlternate(113), + run = generatePackagingCodeAlternate(114), + storage_unit = generatePackagingCodeAlternate(115), + shelf_package = generatePackagingCodeAlternate(116), + small_spray = generatePackagingCodeAlternate(117), + heat_lot = generatePackagingCodeAlternate(118), + + batch = generatePackagingCodeAlternate(119), + pump = generatePackagingCodeAlternate(120), + stage = generatePackagingCodeAlternate(121), + coil_group = generatePackagingCodeAlternate(121), + cartridge = generatePackagingCodeAlternate(122), + small_case = generatePackagingCodeAlternate(123), + leave = generatePackagingCodeAlternate(124), + cover = generatePackagingCodeAlternate(125), + syphon = generatePackagingCodeAlternate(125), + batt = generatePackagingCodeAlternate(126), + connector = generatePackagingCodeAlternate(127), + }; + } // namespace packaging + + // https://en.wikipedia.org/wiki/List_of_traded_commodities + enum commodity : std::uint32_t { + water = generateHarmonizedCode(22, 1, 90), + // metals + gold = generateHarmonizedCode(71, 8, 0), + copper = generateHarmonizedCode(74, 0, 0), + silver = generateHarmonizedCode(71, 6, 0), + platinum = generateHarmonizedCode(71, 10, 11), + palladium = generateHarmonizedCode(71, 10, 21), + uranium = generateHarmonizedCode(26, 12, 0), + zinc = generateHarmonizedCode(79, 0, 0), + tin = generateHarmonizedCode(80, 0, 0), + lead = generateHarmonizedCode(78, 0, 0), + iron = generateHarmonizedCode(72, 0, 0), + aluminum = generateHarmonizedCode(76, 0, 0), + alluminum_alloy = generateHarmonizedCode(76, 01, 20), + nickel = generateHarmonizedCode(75, 0, 0), + cobalt = generateHarmonizedCode(81, 05, 0), + molybdenum = generateHarmonizedCode(81, 02, 0), + carbon = generateHarmonizedCode(28, 03, 0), + + // energy + oil = generateHarmonizedCode(27, 9, 0), + coal = generateHarmonizedCode(27, 11, 0), + heat_oil = generateHarmonizedCode(27, 10, 19), + nat_gas = generateHarmonizedCode(27, 11, 21), + brent_crude = generateHarmonizedCode(27, 9, 0, 10, true), + ethanol = generateHarmonizedCode(22, 07, 10), + propane = generateHarmonizedCode(27, 11, 12), + gasoline = generateHarmonizedCode(27, 10, 12, 15, true), + // grains + wheat = generateHarmonizedCode(10, 01, 99), + corn = generateHarmonizedCode(10, 05, 90), + soybeans = generateHarmonizedCode(12, 10, 90), + soybean_meal = generateHarmonizedCode(12, 8, 10), + soybean_oil = generateHarmonizedCode(15, 07, 00), + oats = generateHarmonizedCode(10, 04, 90), + rice = generateHarmonizedCode(10, 06, 00), + durum_wheat = generateHarmonizedCode(10, 01, 10), + canola = generateHarmonizedCode(15, 14, 00), + rough_rice = generateHarmonizedCode(10, 06, 10), + rapeseed = generateHarmonizedCode(12, 05, 0), + adzuki = generateHarmonizedCode(07, 13, 32), + barley = generateHarmonizedCode(10, 03, 90), + // meats + live_cattle = generateHarmonizedCode(01, 02, 29), + feeder_cattle = generateHarmonizedCode(01, 02, 29, 40, true), + lean_hogs = generateHarmonizedCode(01, 03, 92), + milk = generateHarmonizedCode(04, 01, 0), + paper = generateHarmonizedCode(48, 02, 0), + plastic = generateHarmonizedCode(39, 0, 0), + // soft + cotton = generateHarmonizedCode(52, 1, 0), + orange_juice = generateHarmonizedCode(20, 9, 11), + sugar = generateHarmonizedCode(17, 01, 0), + sugar_11 = generateHarmonizedCode(17, 01, 13), + coffee = generateHarmonizedCode(9, 1, 0), + cocoa = generateHarmonizedCode(18, 1, 0), + palm_oil = generateHarmonizedCode(15, 11, 0), + rubber = generateHarmonizedCode(40, 0, 0), + wool = generateHarmonizedCode(51, 01, 0), + lumber = generateHarmonizedCode(44, 00, 0), + brick = generateHarmonizedCode(68, 10, 11), + matches = generateHarmonizedCode(36, 05, 00), + // other common unit blocks + people = generateKnownCode(15), + passenger = 115126, + vehicle = generateHarmonizedCode(87, 3, 0), + failure = generateStringCode("fail_"), + freight = 56226, + labor = generateStringCode("labor"), + overtime = generateStringCode("extra"), + visit = generateStringCode("visit"), + steam = generateStringCode("steam"), + credit = generateStringCode("cred_"), + debit = generateStringCode("debit"), + blank = generateStringCode("blank"), + job = generateStringCode("job__"), + trip = generateStringCode("trip_"), + use = generateStringCode("use__"), + policy = generateStringCode("geico"), + // clinical + tissue = generateKnownCode(52632250), + cell = generateStringCode("cell_"), + embryo = generateKnownCode(52632253), + Hahnemann = generateKnownCode(2352622), + Korsakov = generateKnownCode(26262656), + protein = generateKnownCode(325255), + creatinine = generateKnownCode(2566225), + + // computer + pixel = generateStringCode("pixel"), + dots = generateStringCode("dots_"), + voxel = generateStringCode("voxel"), + frame = generateStringCode("frame"), + errors = generateStringCode("error"), + character = generateStringCode("ascii"), + word = generateStringCode("word_"), + flop = generateStringCode("flop_"), + lines_of_code = generateStringCode("loc__"), + instruction = generateKnownCode(8086), + information = generateKnownCode(411), + linesofservice = generateStringCode("telco"), + port = generateStringCode("port_"), + reset = generateStringCode("reset"), + runtime = generateStringCode("time_"), + record = generateStringCode("data_"), + test = generateStringCode("test_"), + message = generateStringCode("msg__"), + screen = generateStringCode("scrn_"), + accounting = generateKnownCode(1516115), + electronic_mail_box = generateStringCode("email"), + // emmissions + cloud_cover = generateKnownCode(58339544), + // communications + call = generateStringCode("call_"), + person = generateKnownCode(561485), + impression = generateKnownCode(4616518), + service = generateStringCode("serve"), + // food + capsaicin = generateKnownCode(623452), + cigarette = generateHarmonizedCode(24, 02, 20), + + // other + fiber = generateStringCode("fiber"), + tires = generateHarmonizedCode(40, 12, 20), + fissile_material = generateStringCode("nuke_"), + jewel = generateStringCode("jewel"), + air = generateStringCode("air__"), + machine = generateStringCode("mech_"), + meal = generateStringCode("meal_"), + }; + + enum currencies : std::uint32_t { + // codes defined in ISO 4217 + dollar = generateCurrencyCode("USD"), + euro = generateCurrencyCode("EUR"), + yen = generateCurrencyCode("JPY"), + pound = generateCurrencyCode("GBP"), + ruble = generateCurrencyCode("RUB"), + }; + + enum chemicals : std::uint32_t { + KOH = generateHarmonizedCode(28, 15, 20), + hydrogen_peroxide = generateHarmonizedCode(28, 47, 00), + nitrogen = generateHarmonizedCode(28, 04, 30), + methylamine = generateHarmonizedCode(29, 21, 11), + NaOH = generateHarmonizedCode(28, 15, 12), + K2O = generateHarmonizedCode(31, 4, 20, 50, false), + P2O5 = generateHarmonizedCode(28, 9, 0), + W03 = generateHarmonizedCode(28, 25, 90, 40, false), + lactose = generateHarmonizedCode(17, 02, 11), + alcohol = generateHarmonizedCode(22, 07, 10), + choline_chloride = generateHarmonizedCode(29, 23, 10), + }; +} // namespace commodities + +} // namespace UNITS_NAMESPACE diff --git a/units/r20_conv.cpp b/units/r20_conv.cpp index 15a7ce4d..126f9782 100644 --- a/units/r20_conv.cpp +++ b/units/r20_conv.cpp @@ -12,3019 +12,3145 @@ SPDX-License-Identifier: BSD-3-Clause #include #include -namespace UNITS_NAMESPACE { -using unitD = std::tuple; -static UNITS_CPP14_CONSTEXPR_OBJECT std::array r20_units = {{ - unitD{"05", "lift", precise::one / precise::count}, - unitD{"06", "small spray", precise::one / precise::count}, - unitD{"08", "heat lot", precise::one / precise::count}, - unitD{"10", "group", precise::one / precise::count}, - unitD{"11", "outfit", precise::one / precise::count}, - unitD{"13", "ration", precise::one / precise::count}, - unitD{"14", "shot", precise::one / precise::count}, - unitD{"15", "stick, military", precise::one / precise::count}, - unitD{"16", "hundred fifteen kg drum", precise::one / precise::count}, - unitD{"17", "hundred lb drum", precise::one / precise::count}, - unitD{"18", "fiftyfive gallon (US) drum", precise::one / precise::count}, - unitD{"19", "tank truck", precise::one / precise::count}, - unitD{"1A", "car mile", precise::one / precise::count}, - unitD{"1B", "car count", precise::one / precise::count}, - unitD{"1C", "locomotive count", precise::one / precise::count}, - unitD{"1D", "caboose count", precise::one / precise::count}, - unitD{"1E", "empty car", precise::one / precise::count}, - unitD{"1F", "train mile", precise::one / precise::count}, - unitD{"1G", "fuel usage gallon (US)", precise::us::gallon}, - unitD{"1H", "caboose mile", precise::one / precise::count}, - unitD{"1I", "fixed rate", precise::one / precise::count}, - unitD{"1J", "ton mile", precise::one / precise::count}, - unitD{"1K", "locomotive mile", precise::one / precise::count}, - unitD{"1L", "total car count", precise::one / precise::count}, - unitD{"1M", "total car mile", precise::one / precise::count}, - unitD{"1X", "quarter mile", precise_unit(0.25, precise::mile)}, - unitD{ - "20", - "twenty foot container", - precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, - unitD{ - "21", - "forty foot container", - precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, - unitD{"22", "decilitre per gram", precise::one / precise::count}, - unitD{"23", "gram per cubic centimetre", precise::one / precise::count}, - unitD{"24", "theoretical pound", precise::one / precise::count}, - unitD{"25", "gram per square centimetre", precise::one / precise::count}, - unitD{"26", "actual ton", precise::one / precise::count}, - unitD{"27", "theoretical ton", precise::one / precise::count}, - unitD{"28", "kilogram per square metre", precise::one / precise::count}, - unitD{ - "29", - "pound per thousand square foot", - precise::one / precise::count}, - unitD{"2A", "radian per second", precise::rad / precise::s}, - unitD{"2B", "radian per second squared", precise::rad / precise::s.pow(2)}, - unitD{"2C", "roentgen", precise::cgs::roentgen}, - unitD{"2G", "volt AC", precise::one / precise::count}, - unitD{"2H", "volt DC", precise::one / precise::count}, - unitD{ - "2I", - "British thermal unit (international table) per hour", - precise::one / precise::count}, - unitD{"2J", "cubic centimetre per second", precise::one / precise::count}, - unitD{"2K", "cubic foot per hour", precise::one / precise::count}, - unitD{"2L", "cubic foot per minute", precise::one / precise::count}, - unitD{"2M", "centimetre per second", precise::one / precise::count}, - unitD{"2N", "decibel", precise::one / precise::count}, - unitD{"2P", "kilobyte", precise::one / precise::count}, - unitD{"2Q", "kilobecquerel", precise::one / precise::count}, - unitD{"2R", "kilocurie", precise::one / precise::count}, - unitD{"2U", "megagram", precise::one / precise::count}, - unitD{"2V", "megagram per hour", precise::one / precise::count}, - unitD{"2W", "bin", precise::one / precise::count}, - unitD{"2X", "metre per minute", precise::one / precise::count}, - unitD{"2Y", "milliroentgen", precise::one / precise::count}, - unitD{"2Z", "millivolt", precise::one / precise::count}, - unitD{ - "30", - "horse power day per air dry metric ton", - precise::one / precise::count}, - unitD{"31", "catch weight", precise::one / precise::count}, - unitD{ - "32", - "kilogram per air dry metric ton", - precise::one / precise::count}, - unitD{ - "33", - "kilopascal square metre per gram", - precise::one / precise::count}, - unitD{"34", "kilopascal per millimetre", precise::one / precise::count}, - unitD{ - "35", - "millilitre per square centimetre second", - precise::one / precise::count}, - unitD{ - "36", - "cubic foot per minute per square foot", - precise::one / precise::count}, - unitD{"37", "ounce per square foot", precise::one / precise::count}, - unitD{ - "38", - "ounce per square foot per 0,01inch", - precise::one / precise::count}, - unitD{"3B", "megajoule", precise::one / precise::count}, - unitD{"3C", "manmonth", precise::one / precise::count}, - unitD{"3E", "pound per pound of product", precise::one / precise::count}, - unitD{"3G", "pound per piece of product", precise::one / precise::count}, - unitD{ - "3H", - "kilogram per kilogram of product", - precise::one / precise::count}, - unitD{"3I", "kilogram per piece of product", precise::one / precise::count}, - unitD{"40", "millilitre per second", precise::one / precise::count}, - unitD{"41", "millilitre per minute", precise::one / precise::count}, - unitD{"43", "super bulk bag", precise::one / precise::count}, - unitD{"44", "fivehundred kg bulk bag", precise::one / precise::count}, - unitD{"45", "threehundred kg bulk bag", precise::one / precise::count}, - unitD{"46", "fifty lb bulk bag", precise::one / precise::count}, - unitD{"47", "fifty lb bag", precise::one / precise::count}, - unitD{"48", "bulk car load", precise::one / precise::count}, - unitD{"4A", "bobbin", precise::one / precise::count}, - unitD{"4B", "cap", precise::one / precise::count}, - unitD{"4C", "centistokes", precise::one / precise::count}, - unitD{"4E", "twenty pack", precise::one / precise::count}, - unitD{"4G", "microlitre", precise::one / precise::count}, - unitD{"4H", "micrometre (micron)", precise::one / precise::count}, - unitD{"4K", "milliampere", precise::one / precise::count}, - unitD{"4L", "megabyte", precise::one / precise::count}, - unitD{"4M", "milligram per hour", precise::one / precise::count}, - unitD{"4N", "megabecquerel", precise::one / precise::count}, - unitD{"4O", "microfarad", precise::one / precise::count}, - unitD{"4P", "newton per metre", precise::one / precise::count}, - unitD{"4Q", "ounce inch", precise::one / precise::count}, - unitD{"4R", "ounce foot", precise::one / precise::count}, - unitD{"4T", "picofarad", precise::one / precise::count}, - unitD{"4U", "pound per hour", precise::one / precise::count}, - unitD{"4W", "ton (US) per hour", precise::one / precise::count}, - unitD{"4X", "kilolitre per hour", precise::one / precise::count}, - unitD{"53", "theoretical kilogram", precise::one / precise::count}, - unitD{"54", "theoretical tonne", precise::one / precise::count}, - unitD{"56", "sitas", precise::one / precise::count}, - unitD{"57", "mesh", precise::one / precise::count}, - unitD{"58", "net kilogram", precise::one / precise::count}, - unitD{"59", "part per million", precise::one / precise::count}, - unitD{"5A", "barrel (US) per minute", precise::one / precise::count}, - unitD{"5B", "batch", precise::one / precise::count}, - unitD{"5C", "gallon(US) per thousand", precise::one / precise::count}, - unitD{"5E", "MMSCF/day", precise::one / precise::count}, - unitD{"5F", "pound per thousand", precise::one / precise::count}, - unitD{"5G", "pump", precise::one / precise::count}, - unitD{"5H", "stage", precise::one / precise::count}, - unitD{"5I", "standard cubic foot", precise::one / precise::count}, - unitD{"5J", "hydraulic horse power", precise::one / precise::count}, - unitD{"5K", "count per minute", precise::one / precise::count}, - unitD{"5P", "seismic level", precise::one / precise::count}, - unitD{"5Q", "seismic line", precise::one / precise::count}, - unitD{"60", "percent weight", precise::one / precise::count}, - unitD{"61", "part per billion (US)", precise::one / precise::count}, - unitD{"62", "percent per 1000 hour", precise::one / precise::count}, - unitD{"63", "failure rate in time", precise::one / precise::count}, - unitD{"64", "pound per square inch, gauge", precise::one / precise::count}, - unitD{"66", "oersted", precise::one / precise::count}, - unitD{"69", "test specific scale", precise::one / precise::count}, - unitD{"71", "volt ampere per pound", precise::one / precise::count}, - unitD{"72", "watt per pound", precise::one / precise::count}, - unitD{"73", "ampere tum per centimetre", precise::one / precise::count}, - unitD{"74", "millipascal", precise::one / precise::count}, - unitD{"76", "gauss", precise::one / precise::count}, - unitD{"77", "milli-inch", precise::one / precise::count}, - unitD{"78", "kilogauss", precise::one / precise::count}, - unitD{ - "80", - "pound per square inch absolute", - precise::one / precise::count}, - unitD{"81", "henry", precise::one / precise::count}, - unitD{ - "84", - "kilopound-force per square inch", - precise::one / precise::count}, - unitD{"85", "foot pound-force", precise::one / precise::count}, - unitD{"87", "pound per cubic foot", precise::one / precise::count}, - unitD{"89", "poise", precise::one / precise::count}, - unitD{"90", "Saybold universal second", precise::one / precise::count}, - unitD{"91", "stokes", precise::one / precise::count}, - unitD{"92", "calorie per cubic centimetre", precise::one / precise::count}, - unitD{"93", "calorie per gram", precise::one / precise::count}, - unitD{"94", "curl unit", precise::one / precise::count}, - unitD{ - "95", - "twenty thousand gallon (US) tankcar", - precise::one / precise::count}, - unitD{ - "96", - "ten thousand gallon (US) tankcar", - precise::one / precise::count}, - unitD{"97", "ten kg drum", precise::one / precise::count}, - unitD{"98", "fifteen kg drum", precise::one / precise::count}, - unitD{"A1", "15 degC calorie", precise::one / precise::count}, - unitD{ - "A10", - "ampere square metre per joule second", - precise::one / precise::count}, - unitD{"A11", "angstrom", precise::one / precise::count}, - unitD{"A12", "astronomical unit", precise::one / precise::count}, - unitD{"A13", "attojoule", precise::one / precise::count}, - unitD{"A14", "barn", precise::one / precise::count}, - unitD{"A15", "barn per electronvolt", precise::one / precise::count}, - unitD{ - "A16", - "barn per steradian electronvolt", - precise::one / precise::count}, - unitD{"A17", "barn per steradian", precise::one / precise::count}, - unitD{"A18", "becquerel per kilogram", precise::one / precise::count}, - unitD{"A19", "becquerel per cubic metre", precise::one / precise::count}, - unitD{"A2", "ampere per centimetre", precise::one / precise::count}, - unitD{ - "A20", - "British thermal unit (international table) per second square foot degree Rankine", - precise::one / precise::count}, - unitD{ - "A21", - "British thermal unit (international table) per pound degree Rankine", - precise::one / precise::count}, - unitD{ - "A22", - "British thermal unit (international table) per second foot degree Rankine", - precise::one / precise::count}, - unitD{ - "A23", - "British thermal unit (international table) per hour square foot degree Rankine", - precise::one / precise::count}, - unitD{"A24", "candela per square metre", precise::one / precise::count}, - unitD{"A25", "cheval vapeur", precise::one / precise::count}, - unitD{"A26", "coulomb metre", precise::one / precise::count}, - unitD{ - "A27", - "coulomb metre squared per volt", - precise::one / precise::count}, - unitD{"A28", "coulomb per cubic centimetre", precise::one / precise::count}, - unitD{"A29", "coulomb per cubic metre", precise::one / precise::count}, - unitD{"A3", "ampere per millimetre", precise::one / precise::count}, - unitD{"A30", "coulomb per cubic millimetre", precise::one / precise::count}, - unitD{"A31", "coulomb per kilogram second", precise::one / precise::count}, - unitD{"A32", "coulomb per mole", precise::one / precise::count}, - unitD{ - "A33", - "coulomb per square centimetre", - precise::one / precise::count}, - unitD{"A34", "coulomb per square metre", precise::one / precise::count}, - unitD{ - "A35", - "coulomb per square millimetre", - precise::one / precise::count}, - unitD{"A36", "cubic centimetre per mole", precise::one / precise::count}, - unitD{"A37", "cubic decimetre per mole", precise::one / precise::count}, - unitD{"A38", "cubic metre per coulomb", precise::one / precise::count}, - unitD{"A39", "cubic metre per kilogram", precise::one / precise::count}, - unitD{"A4", "ampere per square centimetre", precise::one / precise::count}, - unitD{"A40", "cubic metre per mole", precise::one / precise::count}, - unitD{"A41", "ampere per square metre", precise::one / precise::count}, - unitD{"A42", "curie per kilogram", precise::one / precise::count}, - unitD{"A43", "deadweight tonnage", precise::one / precise::count}, - unitD{"A44", "decalitre", precise::one / precise::count}, - unitD{"A45", "decametre", precise::one / precise::count}, - unitD{"A47", "decitex", precise::one / precise::count}, - unitD{"A48", "degree Rankine", precise::one / precise::count}, - unitD{"A49", "denier", precise::one / precise::count}, - unitD{"A5", "ampere square metre", precise::one / precise::count}, - unitD{ - "A50", - "dyne second per cubic centimetre", - precise::one / precise::count}, - unitD{"A51", "dyne second per centimetre", precise::one / precise::count}, - unitD{ - "A52", - "dyne second per centimetre to the fifth power", - precise::one / precise::count}, - unitD{"A53", "electronvolt", precise::one / precise::count}, - unitD{"A54", "electronvolt per metre", precise::one / precise::count}, - unitD{"A55", "electronvolt square metre", precise::one / precise::count}, - unitD{ - "A56", - "electronvolt square metre per kilogram", - precise::one / precise::count}, - unitD{"A57", "erg", precise::one / precise::count}, - unitD{"A58", "erg per centimetre", precise::one / precise::count}, - unitD{"A59", "8-part cloud cover", precise::one / precise::count}, - unitD{ - "A6", - "ampere per square metre kelvin squared", - precise::one / precise::count}, - unitD{"A60", "erg per cubic centimetre", precise::one / precise::count}, - unitD{"A61", "erg per gram", precise::one / precise::count}, - unitD{"A62", "erg per gram second", precise::one / precise::count}, - unitD{"A63", "erg per second", precise::one / precise::count}, - unitD{ - "A64", - "erg per second square centimetre", - precise::one / precise::count}, - unitD{ - "A65", - "erg per square centimetre second", - precise::one / precise::count}, - unitD{"A66", "erg square centimetre", precise::one / precise::count}, - unitD{ - "A67", - "erg square centimetre per gram", - precise::one / precise::count}, - unitD{"A68", "exajoule", precise::one / precise::count}, - unitD{"A69", "farad per metre", precise::one / precise::count}, - unitD{"A7", "ampere per square millimetre", precise::one / precise::count}, - unitD{"A70", "femtojoule", precise::one / precise::count}, - unitD{"A71", "femtometre", precise::one / precise::count}, - unitD{"A73", "foot per second squared", precise::one / precise::count}, - unitD{"A74", "foot pound-force per second", precise::one / precise::count}, - unitD{"A75", "freight ton", precise::one / precise::count}, - unitD{"A76", "gal", precise::one / precise::count}, - unitD{ - "A77", - "Gaussian CGS (Centimetre-Gram-Second system) unit of displacement", - precise::one / precise::count}, - unitD{ - "A78", - "Gaussian CGS (Centimetre-Gram-Second system) unit of electric current", - precise::one / precise::count}, - unitD{ - "A79", - "Gaussian CGS (Centimetre-Gram-Second system) unit of electric charge", - precise::one / precise::count}, - unitD{"A8", "ampere second", precise::one / precise::count}, - unitD{ - "A80", - "Gaussian CGS (Centimetre-Gram-Second system) unit of electric field strength", - precise::one / precise::count}, - unitD{ - "A81", - "Gaussian CGS (Centimetre-Gram-Second system) unit of electric polarization", - precise::one / precise::count}, - unitD{ - "A82", - "Gaussian CGS (Centimetre-Gram-Second system) unit of electric potential", - precise::one / precise::count}, - unitD{ - "A83", - "Gaussian CGS (Centimetre-Gram-Second system) unit of magnetization", - precise::one / precise::count}, - unitD{"A84", "gigacoulomb per cubic metre", precise::one / precise::count}, - unitD{"A85", "gigaelectronvolt", precise::one / precise::count}, - unitD{"A86", "gigahertz", precise::one / precise::count}, - unitD{"A87", "gigaohm", precise::one / precise::count}, - unitD{"A88", "gigaohm metre", precise::one / precise::count}, - unitD{"A89", "gigapascal", precise::one / precise::count}, - unitD{"A9", "rate", precise::one / precise::count}, - unitD{"A90", "gigawatt", precise::one / precise::count}, - unitD{"A91", "gon", precise::one / precise::count}, - unitD{"A93", "gram per cubic metre", precise::one / precise::count}, - unitD{"A94", "gram per mole", precise::one / precise::count}, - unitD{"A95", "gray", precise::one / precise::count}, - unitD{"A96", "gray per second", precise::one / precise::count}, - unitD{"A97", "hectopascal", precise::one / precise::count}, - unitD{"A98", "henry per metre", precise::one / precise::count}, - unitD{"A99", "bit", precise::one / precise::count}, - unitD{"AA", "ball", precise::one / precise::count}, - unitD{"AB", "bulk pack", precise::one / precise::count}, - unitD{"ACR", "acre", precise::one / precise::count}, - unitD{"ACT", "activity", precise::one / precise::count}, - unitD{"AD", "byte", precise::one / precise::count}, - unitD{"AE", "ampere per metre", precise::one / precise::count}, - unitD{"AH", "additional minute", precise::one / precise::count}, - unitD{"AI", "average minute per call", precise::one / precise::count}, - unitD{"AJ", "cop", precise::one / precise::count}, - unitD{"AK", "fathom", precise::one / precise::count}, - unitD{"AL", "access line", precise::one / precise::count}, - unitD{"AM", "ampoule", precise::one / precise::count}, - unitD{"AMH", "ampere hour", precise::one / precise::count}, - unitD{"AMP", "ampere", precise::one / precise::count}, - unitD{"ANN", "year", precise::one / precise::count}, - unitD{"AP", "aluminium pound only", precise::one / precise::count}, - unitD{ - "APZ", - "troy ounce or apothecary ounce", - precise::one / precise::count}, - unitD{ - "AQ", - "anti-hemophilic factor (AHF) unit", - precise::one / precise::count}, - unitD{"AR", "suppository", precise::one / precise::count}, - unitD{"ARE", "are", precise::one / precise::count}, - unitD{"AS", "assortment", precise::one / precise::count}, - unitD{"ASM", "alcoholic strength by mass", precise::one / precise::count}, - unitD{"ASU", "alcoholic strength by volume", precise::one / precise::count}, - unitD{"ATM", "standard atmosphere", precise::one / precise::count}, - unitD{"ATT", "technical atmosphere", precise::one / precise::count}, - unitD{"AV", "capsule", precise::one / precise::count}, - unitD{"AW", "powder filled vial", precise::one / precise::count}, - unitD{"AY", "assembly", precise::one / precise::count}, - unitD{ - "AZ", - "British thermal unit (international table) per pound", - precise::one / precise::count}, - unitD{"B0", "Btu per cubic foot", precise::one / precise::count}, - unitD{"B1", "barrel (US) per day", precise::one / precise::count}, - unitD{"B10", "bit per second", precise::one / precise::count}, - unitD{"B11", "joule per kilogram kelvin", precise::one / precise::count}, - unitD{"B12", "joule per metre", precise::one / precise::count}, - unitD{"B13", "joule per square metre", precise::one / precise::count}, - unitD{ - "B14", - "joule per metre to the fourth power", - precise::one / precise::count}, - unitD{"B15", "joule per mole", precise::one / precise::count}, - unitD{"B16", "joule per mole kelvin", precise::one / precise::count}, - unitD{"B17", "credit", precise::one / precise::count}, - unitD{"B18", "joule second", precise::one / precise::count}, - unitD{"B19", "digit", precise::one / precise::count}, - unitD{"B2", "bunk", precise::one / precise::count}, - unitD{ - "B20", - "joule square metre per kilogram", - precise::one / precise::count}, - unitD{"B21", "kelvin per watt", precise::one / precise::count}, - unitD{"B22", "kiloampere", precise::one / precise::count}, - unitD{"B23", "kiloampere per square metre", precise::one / precise::count}, - unitD{"B24", "kiloampere per metre", precise::one / precise::count}, - unitD{"B25", "kilobecquerel per kilogram", precise::one / precise::count}, - unitD{"B26", "kilocoulomb", precise::one / precise::count}, - unitD{"B27", "kilocoulomb per cubic metre", precise::one / precise::count}, - unitD{"B28", "kilocoulomb per square metre", precise::one / precise::count}, - unitD{"B29", "kiloelectronvolt", precise::one / precise::count}, - unitD{"B3", "batting pound", precise::one / precise::count}, - unitD{"B30", "gibibit", precise::one / precise::count}, - unitD{"B31", "kilogram metre per second", precise::one / precise::count}, - unitD{"B32", "kilogram metre squared", precise::one / precise::count}, - unitD{ - "B33", - "kilogram metre squared per second", - precise::one / precise::count}, - unitD{"B34", "kilogram per cubic decimetre", precise::one / precise::count}, - unitD{"B35", "kilogram per litre", precise::one / precise::count}, - unitD{ - "B36", - "calorie (thermochemical) per gram", - precise::one / precise::count}, - unitD{"B37", "kilogram-force", precise::one / precise::count}, - unitD{"B38", "kilogram-force metre", precise::one / precise::count}, - unitD{ - "B39", - "kilogram-force metre per second", - precise::one / precise::count}, - unitD{"B4", "barrel, imperial", precise::one / precise::count}, - unitD{ - "B40", - "kilogram-force per square metre", - precise::one / precise::count}, - unitD{"B41", "kilojoule per kelvin", precise::one / precise::count}, - unitD{"B42", "kilojoule per kilogram", precise::one / precise::count}, - unitD{ - "B43", - "kilojoule per kilogram kelvin", - precise::one / precise::count}, - unitD{"B44", "kilojoule per mole", precise::one / precise::count}, - unitD{"B45", "kilomole", precise::one / precise::count}, - unitD{"B46", "kilomole per cubic metre", precise::one / precise::count}, - unitD{"B47", "kilonewton", precise::one / precise::count}, - unitD{"B48", "kilonewton metre", precise::one / precise::count}, - unitD{"B49", "kiloohm", precise::one / precise::count}, - unitD{"B5", "billet", precise::one / precise::count}, - unitD{"B50", "kiloohm metre", precise::one / precise::count}, - unitD{"B51", "kilopond", precise::one / precise::count}, - unitD{"B52", "kilosecond", precise::one / precise::count}, - unitD{"B53", "kilosiemens", precise::one / precise::count}, - unitD{"B54", "kilosiemens per metre", precise::one / precise::count}, - unitD{"B55", "kilovolt per metre", precise::one / precise::count}, - unitD{"B56", "kiloweber per metre", precise::one / precise::count}, - unitD{"B57", "light year", precise::one / precise::count}, - unitD{"B58", "litre per mole", precise::one / precise::count}, - unitD{"B59", "lumen hour", precise::one / precise::count}, - unitD{"B6", "bun", precise::one / precise::count}, - unitD{"B60", "lumen per square metre", precise::one / precise::count}, - unitD{"B61", "lumen per watt", precise::one / precise::count}, - unitD{"B62", "lumen second", precise::one / precise::count}, - unitD{"B63", "lux hour", precise::one / precise::count}, - unitD{"B64", "lux second", precise::one / precise::count}, - unitD{"B65", "maxwell", precise::one / precise::count}, - unitD{"B66", "megaampere per square metre", precise::one / precise::count}, - unitD{"B67", "megabecquerel per kilogram", precise::one / precise::count}, - unitD{"B68", "gigabit", precise::one / precise::count}, - unitD{"B69", "megacoulomb per cubic metre", precise::one / precise::count}, - unitD{"B7", "cycle", precise::one / precise::count}, - unitD{"B70", "megacoulomb per square metre", precise::one / precise::count}, - unitD{"B71", "megaelectronvolt", precise::one / precise::count}, - unitD{"B72", "megagram per cubic metre", precise::one / precise::count}, - unitD{"B73", "meganewton", precise::one / precise::count}, - unitD{"B74", "meganewton metre", precise::one / precise::count}, - unitD{"B75", "megaohm", precise::one / precise::count}, - unitD{"B76", "megaohm metre", precise::one / precise::count}, - unitD{"B77", "megasiemens per metre", precise::one / precise::count}, - unitD{"B78", "megavolt", precise::one / precise::count}, - unitD{"B79", "megavolt per metre", precise::one / precise::count}, - unitD{"B8", "joule per cubic metre", precise::one / precise::count}, - unitD{"B80", "gigabit per second", precise::one / precise::count}, - unitD{ - "B81", - "reciprocal metre squared reciprocal second", - precise::one / precise::count}, - unitD{"B82", "inch per linear foot", precise::one / precise::count}, - unitD{"B83", "metre to the fourth power", precise::one / precise::count}, - unitD{"B84", "microampere", precise::one / precise::count}, - unitD{"B85", "microbar", precise::one / precise::count}, - unitD{"B86", "microcoulomb", precise::one / precise::count}, - unitD{"B87", "microcoulomb per cubic metre", precise::one / precise::count}, - unitD{ - "B88", - "microcoulomb per square metre", - precise::one / precise::count}, - unitD{"B89", "microfarad per metre", precise::one / precise::count}, - unitD{"B9", "batt", precise::one / precise::count}, - unitD{"B90", "microhenry", precise::one / precise::count}, - unitD{"B91", "microhenry per metre", precise::one / precise::count}, - unitD{"B92", "micronewton", precise::one / precise::count}, - unitD{"B93", "micronewton metre", precise::one / precise::count}, - unitD{"B94", "microohm", precise::one / precise::count}, - unitD{"B95", "microohm metre", precise::one / precise::count}, - unitD{"B96", "micropascal", precise::one / precise::count}, - unitD{"B97", "microradian", precise::one / precise::count}, - unitD{"B98", "microsecond", precise::one / precise::count}, - unitD{"B99", "microsiemens", precise::one / precise::count}, - unitD{"BAR", "bar [unit of pressure]", precise::one / precise::count}, - unitD{"BB", "base box", precise::one / precise::count}, - unitD{"BD", "board", precise::one / precise::count}, - unitD{"BE", "bundle", precise::one / precise::count}, - unitD{"BFT", "board foot", precise::one / precise::count}, - unitD{"BG", "bag", precise::one / precise::count}, - unitD{"BH", "brush", precise::one / precise::count}, - unitD{"BHP", "brake horse power", precise::one / precise::count}, - unitD{"BIL", "billion (EUR)", precise::one / precise::count}, - unitD{"BJ", "bucket", precise::one / precise::count}, - unitD{"BK", "basket", precise::one / precise::count}, - unitD{"BL", "bale", precise::one / precise::count}, - unitD{"BLD", "dry barrel (US)", precise::one / precise::count}, - unitD{"BLL", "barrel (US)", precise::one / precise::count}, - unitD{"BO", "bottle", precise::one / precise::count}, - unitD{"BP", "hundred board foot", precise::one / precise::count}, - unitD{"BQL", "becquerel", precise::one / precise::count}, - unitD{"BR", "bar [unit of packaging]", precise::one / precise::count}, - unitD{"BT", "bolt", precise::one / precise::count}, - unitD{ - "BTU", - "British thermal unit (international table)", - precise::one / precise::count}, - unitD{"BUA", "bushel (US)", precise::one / precise::count}, - unitD{"BUI", "bushel (UK)", precise::one / precise::count}, - unitD{"BW", "base weight", precise::one / precise::count}, - unitD{"BX", "box", precise::one / precise::count}, - unitD{"BZ", "million BTUs", precise::one / precise::count}, - unitD{"C0", "call", precise::one / precise::count}, - unitD{ - "C1", - "composite product pound (total weight)", - precise::one / precise::count}, - unitD{"C10", "millifarad", precise::one / precise::count}, - unitD{"C11", "milligal", precise::one / precise::count}, - unitD{"C12", "milligram per metre", precise::one / precise::count}, - unitD{"C13", "milligray", precise::one / precise::count}, - unitD{"C14", "millihenry", precise::one / precise::count}, - unitD{"C15", "millijoule", precise::one / precise::count}, - unitD{"C16", "millimetre per second", precise::one / precise::count}, - unitD{ - "C17", - "millimetre squared per second", - precise::one / precise::count}, - unitD{"C18", "millimole", precise::one / precise::count}, - unitD{"C19", "mole per kilogram", precise::one / precise::count}, - unitD{"C2", "carset", precise::one / precise::count}, - unitD{"C20", "millinewton", precise::one / precise::count}, - unitD{"C21", "kibibit", precise::one / precise::count}, - unitD{"C22", "millinewton per metre", precise::one / precise::count}, - unitD{"C23", "milliohm metre", precise::one / precise::count}, - unitD{"C24", "millipascal second", precise::one / precise::count}, - unitD{"C25", "milliradian", precise::one / precise::count}, - unitD{"C26", "millisecond", precise::one / precise::count}, - unitD{"C27", "millisiemens", precise::one / precise::count}, - unitD{"C28", "millisievert", precise::one / precise::count}, - unitD{"C29", "millitesla", precise::one / precise::count}, - unitD{"C3", "microvolt per metre", precise::one / precise::count}, - unitD{"C30", "millivolt per metre", precise::one / precise::count}, - unitD{"C31", "milliwatt", precise::one / precise::count}, - unitD{"C32", "milliwatt per square metre", precise::one / precise::count}, - unitD{"C33", "milliweber", precise::one / precise::count}, - unitD{"C34", "mole", precise::one / precise::count}, - unitD{"C35", "mole per cubic decimetre", precise::one / precise::count}, - unitD{"C36", "mole per cubic metre", precise::one / precise::count}, - unitD{"C37", "kilobit", precise::one / precise::count}, - unitD{"C38", "mole per litre", precise::one / precise::count}, - unitD{"C39", "nanoampere", precise::one / precise::count}, - unitD{"C4", "carload", precise::one / precise::count}, - unitD{"C40", "nanocoulomb", precise::one / precise::count}, - unitD{"C41", "nanofarad", precise::one / precise::count}, - unitD{"C42", "nanofarad per metre", precise::one / precise::count}, - unitD{"C43", "nanohenry", precise::one / precise::count}, - unitD{"C44", "nanohenry per metre", precise::one / precise::count}, - unitD{"C45", "nanometre", precise::one / precise::count}, - unitD{"C46", "nanoohm metre", precise::one / precise::count}, - unitD{"C47", "nanosecond", precise::one / precise::count}, - unitD{"C48", "nanotesla", precise::one / precise::count}, - unitD{"C49", "nanowatt", precise::one / precise::count}, - unitD{"C5", "cost", precise::one / precise::count}, - unitD{"C50", "neper", precise::one / precise::count}, - unitD{"C51", "neper per second", precise::one / precise::count}, - unitD{"C52", "picometre", precise::one / precise::count}, - unitD{"C53", "newton metre second", precise::one / precise::count}, - unitD{ - "C54", - "newton metre squared per kilogram squared", - precise::one / precise::count}, - unitD{"C55", "newton per square metre", precise::one / precise::count}, - unitD{"C56", "newton per square millimetre", precise::one / precise::count}, - unitD{"C57", "newton second", precise::one / precise::count}, - unitD{"C58", "newton second per metre", precise::one / precise::count}, - unitD{"C59", "octave", precise::one / precise::count}, - unitD{"C6", "cell", precise::one / precise::count}, - unitD{"C60", "ohm centimetre", precise::one / precise::count}, - unitD{"C61", "ohm metre", precise::one / precise::count}, - unitD{"C62", "one", precise::one / precise::count}, - unitD{"C63", "parsec", precise::one / precise::count}, - unitD{"C64", "pascal per kelvin", precise::one / precise::count}, - unitD{"C65", "pascal second", precise::one / precise::count}, - unitD{ - "C66", - "pascal second per cubic metre", - precise::one / precise::count}, - unitD{"C67", "pascal second per metre", precise::one / precise::count}, - unitD{"C68", "petajoule", precise::one / precise::count}, - unitD{"C69", "phon", precise::one / precise::count}, - unitD{"C7", "centipoise", precise::one / precise::count}, - unitD{"C70", "picoampere", precise::one / precise::count}, - unitD{"C71", "picocoulomb", precise::one / precise::count}, - unitD{"C72", "picofarad per metre", precise::one / precise::count}, - unitD{"C73", "picohenry", precise::one / precise::count}, - unitD{"C74", "kilobit per second", precise::one / precise::count}, - unitD{"C75", "picowatt", precise::one / precise::count}, - unitD{"C76", "picowatt per square metre", precise::one / precise::count}, - unitD{"C77", "pound gage", precise::one / precise::count}, - unitD{"C78", "pound-force", precise::one / precise::count}, - unitD{"C79", "kilovolt ampere hour", precise::one / precise::count}, - unitD{"C8", "millicoulomb per kilogram", precise::one / precise::count}, - unitD{"C80", "rad", precise::one / precise::count}, - unitD{"C81", "radian", precise::one / precise::count}, - unitD{"C82", "radian square metre per mole", precise::one / precise::count}, - unitD{ - "C83", - "radian square metre per kilogram", - precise::one / precise::count}, - unitD{"C84", "radian per metre", precise::one / precise::count}, - unitD{"C85", "reciprocal angstrom", precise::one / precise::count}, - unitD{"C86", "reciprocal cubic metre", precise::one / precise::count}, - unitD{ - "C87", - "reciprocal cubic metre per second", - precise::one / precise::count}, - unitD{ - "C88", - "reciprocal electron volt per cubic metre", - precise::one / precise::count}, - unitD{"C89", "reciprocal henry", precise::one / precise::count}, - unitD{"C9", "coil group", precise::one / precise::count}, - unitD{ - "C90", - "reciprocal joule per cubic metre", - precise::one / precise::count}, - unitD{ - "C91", - "reciprocal kelvin or kelvin to the power minus one", - precise::one / precise::count}, - unitD{"C92", "reciprocal metre", precise::one / precise::count}, - unitD{"C93", "reciprocal square metre", precise::one / precise::count}, - unitD{"C94", "reciprocal minute", precise::one / precise::count}, - unitD{"C95", "reciprocal mole", precise::one / precise::count}, - unitD{ - "C96", - "reciprocal pascal or pascal to the power minus one", - precise::one / precise::count}, - unitD{"C97", "reciprocal second", precise::one / precise::count}, - unitD{ - "C98", - "reciprocal second per cubic metre", - precise::one / precise::count}, - unitD{ - "C99", - "reciprocal second per metre squared", - precise::one / precise::count}, - unitD{"CA", "can", precise::one / precise::count}, - unitD{ - "CCT", - "carrying capacity in metric ton", - precise::one / precise::count}, - unitD{"CDL", "candela", precise::one / precise::count}, - unitD{"CEL", "degree Celsius", precise::one / precise::count}, - unitD{"CEN", "hundred", precise::one / precise::count}, - unitD{"CG", "card", precise::one / precise::count}, - unitD{"CGM", "centigram", precise::one / precise::count}, - unitD{"CH", "container", precise::one / precise::count}, - unitD{"CJ", "cone", precise::one / precise::count}, - unitD{"CK", "connector", precise::one / precise::count}, - unitD{"CKG", "coulomb per kilogram", precise::one / precise::count}, - unitD{"CL", "coil", precise::one / precise::count}, - unitD{"CLF", "hundred leave", precise::one / precise::count}, - unitD{"CLT", "centilitre", precise::one / precise::count}, - unitD{"CMK", "square centimetre", precise::one / precise::count}, - unitD{"CMQ", "cubic centimetre", precise::one / precise::count}, - unitD{"CMT", "centimetre", precise::one / precise::count}, - unitD{"CNP", "hundred pack", precise::one / precise::count}, - unitD{"CNT", "cental (UK)", precise::one / precise::count}, - unitD{"CO", "carboy", precise::one / precise::count}, - unitD{"COU", "coulomb", precise::one / precise::count}, - unitD{"CQ", "cartridge", precise::one / precise::count}, - unitD{"CR", "crate", precise::one / precise::count}, - unitD{"CS", "case", precise::one / precise::count}, - unitD{"CT", "carton", precise::one / precise::count}, - unitD{"CTG", "content gram", precise::one / precise::count}, - unitD{"CTM", "metric carat", precise::one / precise::count}, - unitD{"CTN", "content ton (metric)", precise::one / precise::count}, - unitD{"CU", "cup", precise::one / precise::count}, - unitD{"CUR", "curie", precise::one / precise::count}, - unitD{"CV", "cover", precise::one / precise::count}, - unitD{ - "CWA", - "hundred pound (cwt) / hundred weight (US)", - precise::one / precise::count}, - unitD{"CWI", "hundred weight (UK)", precise::one / precise::count}, - unitD{"CY", "cylinder", precise::one / precise::count}, - unitD{"CZ", "combo", precise::one / precise::count}, - unitD{"D03", "kilowatt hour per hour", precise::one / precise::count}, - unitD{"D04", "lot [unit of weight]", precise::one / precise::count}, - unitD{ - "D1", - "reciprocal second per steradian", - precise::one / precise::count}, - unitD{"D10", "siemens per metre", precise::one / precise::count}, - unitD{"D11", "mebibit", precise::one / precise::count}, - unitD{ - "D12", - "siemens square metre per mole", - precise::one / precise::count}, - unitD{"D13", "sievert", precise::one / precise::count}, - unitD{"D14", "thousand linear yard", precise::one / precise::count}, - unitD{"D15", "sone", precise::one / precise::count}, - unitD{"D16", "square centimetre per erg", precise::one / precise::count}, - unitD{ - "D17", - "square centimetre per steradian erg", - precise::one / precise::count}, - unitD{"D18", "metre kelvin", precise::one / precise::count}, - unitD{"D19", "square metre kelvin per watt", precise::one / precise::count}, - unitD{ - "D2", - "reciprocal second per steradian metre squared", - precise::one / precise::count}, - unitD{"D20", "square metre per joule", precise::one / precise::count}, - unitD{"D21", "square metre per kilogram", precise::one / precise::count}, - unitD{"D22", "square metre per mole", precise::one / precise::count}, - unitD{"D23", "pen gram (protein)", precise::one / precise::count}, - unitD{"D24", "square metre per steradian", precise::one / precise::count}, - unitD{ - "D25", - "square metre per steradian joule", - precise::one / precise::count}, - unitD{"D26", "square metre per volt second", precise::one / precise::count}, - unitD{"D27", "steradian", precise::one / precise::count}, - unitD{"D28", "syphon", precise::one / precise::count}, - unitD{"D29", "terahertz", precise::one / precise::count}, - unitD{"D30", "terajoule", precise::one / precise::count}, - unitD{"D31", "terawatt", precise::one / precise::count}, - unitD{"D32", "terawatt hour", precise::one / precise::count}, - unitD{"D33", "tesla", precise::one / precise::count}, - unitD{"D34", "tex", precise::one / precise::count}, - unitD{"D35", "calorie (thermochemical)", precise::one / precise::count}, - unitD{"D36", "megabit", precise::one / precise::count}, - unitD{ - "D37", - "calorie (thermochemical) per gram kelvin", - precise::one / precise::count}, - unitD{ - "D38", - "calorie (thermochemical) per second centimetre kelvin", - precise::one / precise::count}, - unitD{ - "D39", - "calorie (thermochemical) per second square centimetre kelvin", - precise::one / precise::count}, - unitD{"D40", "thousand litre", precise::one / precise::count}, - unitD{"D41", "tonne per cubic metre", precise::one / precise::count}, - unitD{"D42", "tropical year", precise::one / precise::count}, - unitD{"D43", "unified atomic mass unit", precise::one / precise::count}, - unitD{"D44", "var", precise::one / precise::count}, - unitD{ - "D45", - "volt squared per kelvin squared", - precise::one / precise::count}, - unitD{"D46", "volt - ampere", precise::one / precise::count}, - unitD{"D47", "volt per centimetre", precise::one / precise::count}, - unitD{"D48", "volt per kelvin", precise::one / precise::count}, - unitD{"D49", "millivolt per kelvin", precise::one / precise::count}, - unitD{ - "D5", - "kilogram per square centimetre", - precise::one / precise::count}, - unitD{"D50", "volt per metre", precise::one / precise::count}, - unitD{"D51", "volt per millimetre", precise::one / precise::count}, - unitD{"D52", "watt per kelvin", precise::one / precise::count}, - unitD{"D53", "watt per metre kelvin", precise::one / precise::count}, - unitD{"D54", "watt per square metre", precise::one / precise::count}, - unitD{"D55", "watt per square metre kelvin", precise::one / precise::count}, - unitD{ - "D56", - "watt per square metre kelvin to the fourth power", - precise::one / precise::count}, - unitD{"D57", "watt per steradian", precise::one / precise::count}, - unitD{ - "D58", - "watt per steradian square metre", - precise::one / precise::count}, - unitD{"D59", "weber per metre", precise::one / precise::count}, - unitD{"D6", "roentgen per second", precise::one / precise::count}, - unitD{"D60", "weber per millimetre", precise::one / precise::count}, - unitD{"D61", "minute [unit of angle]", precise::one / precise::count}, - unitD{"D62", "second [unit of angle]", precise::one / precise::count}, - unitD{"D63", "book", precise::one / precise::count}, - unitD{"D64", "block", precise::one / precise::count}, - unitD{"D65", "round", precise::one / precise::count}, - unitD{"D66", "cassette", precise::one / precise::count}, - unitD{"D67", "dollar per hour", precise::one / precise::count}, - unitD{"D68", "number of words", precise::one / precise::count}, - unitD{"D69", "inch to the fourth power", precise::one / precise::count}, - unitD{"D7", "sandwich", precise::one / precise::count}, - unitD{ - "D70", - "calorie (international table)", - precise::one / precise::count}, - unitD{ - "D71", - "calorie (international table) per second centimetre kelvin", - precise::one / precise::count}, - unitD{ - "D72", - "calorie (international table) per second square centimetre kelvin", - precise::one / precise::count}, - unitD{"D73", "joule square metre", precise::one / precise::count}, - unitD{"D74", "kilogram per mole", precise::one / precise::count}, - unitD{ - "D75", - "calorie (international table) per gram", - precise::one / precise::count}, - unitD{ - "D76", - "calorie (international table) per gram kelvin", - precise::one / precise::count}, - unitD{"D77", "megacoulomb", precise::one / precise::count}, - unitD{"D78", "megajoule per second", precise::one / precise::count}, - unitD{"D79", "beam", precise::one / precise::count}, - unitD{"D8", "draize score", precise::one / precise::count}, - unitD{"D80", "microwatt", precise::one / precise::count}, - unitD{"D81", "microtesla", precise::one / precise::count}, - unitD{"D82", "microvolt", precise::one / precise::count}, - unitD{"D83", "millinewton metre", precise::one / precise::count}, - unitD{"D85", "microwatt per square metre", precise::one / precise::count}, - unitD{"D86", "millicoulomb", precise::one / precise::count}, - unitD{"D87", "millimole per kilogram", precise::one / precise::count}, - unitD{"D88", "millicoulomb per cubic metre", precise::one / precise::count}, - unitD{ - "D89", - "millicoulomb per square metre", - precise::one / precise::count}, - unitD{"D9", "dyne per square centimetre", precise::one / precise::count}, - unitD{"D90", "cubic metre (net)", precise::one / precise::count}, - unitD{"D91", "rem", precise::one / precise::count}, - unitD{"D92", "band", precise::one / precise::count}, - unitD{"D93", "second per cubic metre", precise::one / precise::count}, - unitD{ - "D94", - "second per cubic metre radian", - precise::one / precise::count}, - unitD{"D95", "joule per gram", precise::one / precise::count}, - unitD{"D96", "pound gross", precise::one / precise::count}, - unitD{"D97", "pallet/unit load", precise::one / precise::count}, - unitD{"D98", "mass pound", precise::one / precise::count}, - unitD{"D99", "sleeve", precise::one / precise::count}, - unitD{"DAA", "decare", precise::one / precise::count}, - unitD{"DAD", "ten day", precise::one / precise::count}, - unitD{"DAY", "day", precise::one / precise::count}, - unitD{"DB", "dry pound", precise::one / precise::count}, - unitD{"DC", "disk (disc)", precise::one / precise::count}, - unitD{"DD", "degree [unit of angle]", precise::one / precise::count}, - unitD{"DE", "deal", precise::one / precise::count}, - unitD{"DEC", "decade", precise::one / precise::count}, - unitD{"DG", "decigram", precise::one / precise::count}, - unitD{"DI", "dispenser", precise::one / precise::count}, - unitD{"DJ", "decagram", precise::one / precise::count}, - unitD{"DLT", "decilitre", precise::one / precise::count}, - unitD{"DMA", "cubic decametre", precise::one / precise::count}, - unitD{"DMK", "square decimetre", precise::one / precise::count}, - unitD{"DMO", "standard kilolitre", precise::one / precise::count}, - unitD{"DMQ", "cubic decimetre", precise::one / precise::count}, - unitD{"DMT", "decimetre", precise::one / precise::count}, - unitD{"DN", "decinewton metre", precise::one / precise::count}, - unitD{"DPC", "dozen piece", precise::one / precise::count}, - unitD{"DPR", "dozen pair", precise::one / precise::count}, - unitD{"DPT", "displacement tonnage", precise::one / precise::count}, - unitD{"DQ", "data record", precise::one / precise::count}, - unitD{"DR", "drum", precise::one / precise::count}, - unitD{"DRA", "dram (US)", precise::one / precise::count}, - unitD{"DRI", "dram (UK)", precise::one / precise::count}, - unitD{"DRL", "dozen roll", precise::one / precise::count}, - unitD{"DRM", "drachm (UK)", precise::one / precise::count}, - unitD{"DS", "display", precise::one / precise::count}, - unitD{"DT", "dry ton", precise::one / precise::count}, - unitD{"DTN", "decitonne", precise::one / precise::count}, - unitD{"DU", "dyne", precise::one / precise::count}, - unitD{"DWT", "pennyweight", precise::one / precise::count}, - unitD{"DX", "dyne per centimetre", precise::one / precise::count}, - unitD{"DY", "directory book", precise::one / precise::count}, - unitD{"DZN", "dozen", precise::one / precise::count}, - unitD{"DZP", "dozen pack", precise::one / precise::count}, - unitD{"E01", "newton per square centimetre", precise::one / precise::count}, - unitD{"E07", "megawatt hour per hour", precise::one / precise::count}, - unitD{"E08", "megawatt per hertz", precise::one / precise::count}, - unitD{"E09", "milliampere hour", precise::one / precise::count}, - unitD{"E10", "degree day", precise::one / precise::count}, - unitD{"E11", "gigacalorie", precise::one / precise::count}, - unitD{"E12", "mille", precise::one / precise::count}, - unitD{ - "E14", - "kilocalorie (international table)", - precise::one / precise::count}, - unitD{ - "E15", - "kilocalorie (thermochemical) per hour", - precise::one / precise::count}, - unitD{"E16", "million Btu(IT) per hour", precise::one / precise::count}, - unitD{"E17", "cubic foot per second", precise::one / precise::count}, - unitD{"E18", "tonne per hour", precise::one / precise::count}, - unitD{"E19", "ping", precise::one / precise::count}, - unitD{"E2", "belt", precise::one / precise::count}, - unitD{"E20", "megabit per second", precise::one / precise::count}, - unitD{"E21", "shares", precise::one / precise::count}, - unitD{"E22", "TEU", precise::one / precise::count}, - unitD{"E23", "tyre", precise::one / precise::count}, - unitD{"E25", "active unit", precise::one / precise::count}, - unitD{"E27", "dose", precise::one / precise::count}, - unitD{"E28", "air dry ton", precise::one / precise::count}, - unitD{"E3", "trailer", precise::one / precise::count}, - unitD{"E30", "strand", precise::one / precise::count}, - unitD{"E31", "square metre per litre", precise::one / precise::count}, - unitD{"E32", "litre per hour", precise::one / precise::count}, - unitD{"E33", "foot per thousand", precise::one / precise::count}, - unitD{"E34", "gigabyte", precise::one / precise::count}, - unitD{"E35", "terabyte", precise::one / precise::count}, - unitD{"E36", "petabyte", precise::one / precise::count}, - unitD{"E37", "pixel", precise::one / precise::count}, - unitD{"E38", "megapixel", precise::one / precise::count}, - unitD{"E39", "dots per inch", precise::one / precise::count}, - unitD{"E4", "gross kilogram", precise::one / precise::count}, - unitD{"E40", "part per hundred thousand", precise::one / precise::count}, - unitD{ - "E41", - "kilogram-force per square millimetre", - precise::one / precise::count}, - unitD{ - "E42", - "kilogram-force per square centimetre", - precise::one / precise::count}, - unitD{"E43", "joule per square centimetre", precise::one / precise::count}, - unitD{ - "E44", - "kilogram-force metre per square centimetre", - precise::one / precise::count}, - unitD{"E45", "milliohm", precise::one / precise::count}, - unitD{ - "E46", - "kilowatt hour per cubic metre", - precise::one / precise::count}, - unitD{"E47", "kilowatt hour per kelvin", precise::one / precise::count}, - unitD{"E48", "service unit", precise::one / precise::count}, - unitD{"E49", "working day", precise::one / precise::count}, - unitD{"E5", "metric long ton", precise::one / precise::count}, - unitD{"E50", "accounting unit", precise::one / precise::count}, - unitD{"E51", "job", precise::one / precise::count}, - unitD{"E52", "run foot", precise::one / precise::count}, - unitD{"E53", "test", precise::one / precise::count}, - unitD{"E54", "trip", precise::one / precise::count}, - unitD{"E55", "use", precise::one / precise::count}, - unitD{"E56", "well", precise::one / precise::count}, - unitD{"E57", "zone", precise::one / precise::count}, - unitD{"E58", "exabit per second", precise::one / precise::count}, - unitD{"E59", "exbibyte", precise::one / precise::count}, - unitD{"E60", "pebibyte", precise::one / precise::count}, - unitD{"E61", "tebibyte", precise::one / precise::count}, - unitD{"E62", "gibibyte", precise::one / precise::count}, - unitD{"E63", "mebibyte", precise::one / precise::count}, - unitD{"E64", "kibibyte", precise::one / precise::count}, - unitD{"E65", "exbibit per metre", precise::one / precise::count}, - unitD{"E66", "exbibit per square metre", precise::one / precise::count}, - unitD{"E67", "exbibit per cubic metre", precise::one / precise::count}, - unitD{"E68", "gigabyte per second", precise::one / precise::count}, - unitD{"E69", "gibibit per metre", precise::one / precise::count}, - unitD{"E70", "gibibit per square metre", precise::one / precise::count}, - unitD{"E71", "gibibit per cubic metre", precise::one / precise::count}, - unitD{"E72", "kibibit per metre", precise::one / precise::count}, - unitD{"E73", "kibibit per square metre", precise::one / precise::count}, - unitD{"E74", "kibibit per cubic metre", precise::one / precise::count}, - unitD{"E75", "mebibit per metre", precise::one / precise::count}, - unitD{"E76", "mebibit per square metre", precise::one / precise::count}, - unitD{"E77", "mebibit per cubic metre", precise::one / precise::count}, - unitD{"E78", "petabit", precise::one / precise::count}, - unitD{"E79", "petabit per second", precise::one / precise::count}, - unitD{"E80", "pebibit per metre", precise::one / precise::count}, - unitD{"E81", "pebibit per square metre", precise::one / precise::count}, - unitD{"E82", "pebibit per cubic metre", precise::one / precise::count}, - unitD{"E83", "terabit", precise::one / precise::count}, - unitD{"E84", "terabit per second", precise::one / precise::count}, - unitD{"E85", "tebibit per metre", precise::one / precise::count}, - unitD{"E86", "tebibit per cubic metre", precise::one / precise::count}, - unitD{"E87", "tebibit per square metre", precise::one / precise::count}, - unitD{"E88", "bit per metre", precise::one / precise::count}, - unitD{"E89", "bit per square metre", precise::one / precise::count}, - unitD{"E90", "reciprocal centimetre", precise::one / precise::count}, - unitD{"E91", "reciprocal day", precise::one / precise::count}, - unitD{"E92", "cubic decimetre per hour", precise::one / precise::count}, - unitD{"E93", "kilogram per hour", precise::one / precise::count}, - unitD{"E94", "kilomole per second", precise::one / precise::count}, - unitD{"E95", "mole per second", precise::one / precise::count}, - unitD{"E96", "degree per second", precise::one / precise::count}, - unitD{ - "E97", - "millimetre per degree Celcius metre", - precise::one / precise::count}, - unitD{"E98", "degree Celsius per kelvin", precise::one / precise::count}, - unitD{"E99", "hectopascal per bar", precise::one / precise::count}, - unitD{"EA", "each", precise::one / precise::count}, - unitD{"EB", "electronic mail box", precise::one / precise::count}, - unitD{"EC", "each per month", precise::one / precise::count}, - unitD{"EP", "eleven pack", precise::one / precise::count}, - unitD{"EQ", "equivalent gallon", precise::one / precise::count}, - unitD{"EV", "envelope", precise::one / precise::count}, - unitD{"F01", "bit per cubic metre", precise::one / precise::count}, - unitD{"F02", "kelvin per kelvin", precise::one / precise::count}, - unitD{"F03", "kilopascal per bar", precise::one / precise::count}, - unitD{"F04", "millibar per bar", precise::one / precise::count}, - unitD{"F05", "megapascal per bar", precise::one / precise::count}, - unitD{"F06", "poise per bar", precise::one / precise::count}, - unitD{"F07", "pascal per bar", precise::one / precise::count}, - unitD{"F08", "milliampere per inch", precise::one / precise::count}, - unitD{"F1", "thousand cubic foot per day", precise::one / precise::count}, - unitD{"F10", "kelvin per hour", precise::one / precise::count}, - unitD{"F11", "kelvin per minute", precise::one / precise::count}, - unitD{"F12", "kelvin per second", precise::one / precise::count}, - unitD{"F13", "slug", precise::one / precise::count}, - unitD{"F14", "gram per kelvin", precise::one / precise::count}, - unitD{"F15", "kilogram per kelvin", precise::one / precise::count}, - unitD{"F16", "milligram per kelvin", precise::one / precise::count}, - unitD{"F17", "pound-force per foot", precise::one / precise::count}, - unitD{"F18", "kilogram square centimetre", precise::one / precise::count}, - unitD{"F19", "kilogram square millimetre", precise::one / precise::count}, - unitD{"F20", "pound inch squared", precise::one / precise::count}, - unitD{"F21", "pound-force inch", precise::one / precise::count}, - unitD{"F22", "pound-force foot per ampere", precise::one / precise::count}, - unitD{"F23", "gram per cubic decimetre", precise::one / precise::count}, - unitD{"F24", "kilogram per kilomol", precise::one / precise::count}, - unitD{"F25", "gram per hertz", precise::one / precise::count}, - unitD{"F26", "gram per day", precise::one / precise::count}, - unitD{"F27", "gram per hour", precise::one / precise::count}, - unitD{"F28", "gram per minute", precise::one / precise::count}, - unitD{"F29", "gram per second", precise::one / precise::count}, - unitD{"F30", "kilogram per day", precise::one / precise::count}, - unitD{"F31", "kilogram per minute", precise::one / precise::count}, - unitD{"F32", "milligram per day", precise::one / precise::count}, - unitD{"F33", "milligram per minute", precise::one / precise::count}, - unitD{"F34", "milligram per second", precise::one / precise::count}, - unitD{"F35", "gram per day kelvin", precise::one / precise::count}, - unitD{"F36", "gram per hour kelvin", precise::one / precise::count}, - unitD{"F37", "gram per minute kelvin", precise::one / precise::count}, - unitD{"F38", "gram per second kelvin", precise::one / precise::count}, - unitD{"F39", "kilogram per day kelvin", precise::one / precise::count}, - unitD{"F40", "kilogram per hour kelvin", precise::one / precise::count}, - unitD{"F41", "kilogram per minute kelvin", precise::one / precise::count}, - unitD{"F42", "kilogram per second kelvin", precise::one / precise::count}, - unitD{"F43", "milligram per day kelvin", precise::one / precise::count}, - unitD{"F44", "milligram per hour kelvin", precise::one / precise::count}, - unitD{"F45", "milligram per minute kelvin", precise::one / precise::count}, - unitD{"F46", "milligram per second kelvin", precise::one / precise::count}, - unitD{"F47", "newton per millimetre", precise::one / precise::count}, - unitD{"F48", "pound-force per inch", precise::one / precise::count}, - unitD{"F49", "rod [unit of distance]", precise::one / precise::count}, - unitD{"F50", "micrometre per kelvin", precise::one / precise::count}, - unitD{"F51", "centimetre per kelvin", precise::one / precise::count}, - unitD{"F52", "metre per kelvin", precise::one / precise::count}, - unitD{"F53", "millimetre per kelvin", precise::one / precise::count}, - unitD{"F54", "milliohm per metre", precise::one / precise::count}, - unitD{"F55", "ohm per mile (statute mile)", precise::one / precise::count}, - unitD{"F56", "ohm per kilometre", precise::one / precise::count}, - unitD{ - "F57", - "milliampere per pound-force per square inch", - precise::one / precise::count}, - unitD{"F58", "reciprocal bar", precise::one / precise::count}, - unitD{"F59", "milliampere per bar", precise::one / precise::count}, - unitD{"F60", "degree Celsius per bar", precise::one / precise::count}, - unitD{"F61", "kelvin per bar", precise::one / precise::count}, - unitD{"F62", "gram per day bar", precise::one / precise::count}, - unitD{"F63", "gram per hour bar", precise::one / precise::count}, - unitD{"F64", "gram per minute bar", precise::one / precise::count}, - unitD{"F65", "gram per second bar", precise::one / precise::count}, - unitD{"F66", "kilogram per day bar", precise::one / precise::count}, - unitD{"F67", "kilogram per hour bar", precise::one / precise::count}, - unitD{"F68", "kilogram per minute bar", precise::one / precise::count}, - unitD{"F69", "kilogram per second bar", precise::one / precise::count}, - unitD{"F70", "milligram per day bar", precise::one / precise::count}, - unitD{"F71", "milligram per hour bar", precise::one / precise::count}, - unitD{"F72", "milligram per minute bar", precise::one / precise::count}, - unitD{"F73", "milligram per second bar", precise::one / precise::count}, - unitD{"F74", "gram per bar", precise::one / precise::count}, - unitD{"F75", "milligram per bar", precise::one / precise::count}, - unitD{"F76", "milliampere per millimetre", precise::one / precise::count}, - unitD{"F77", "pascal second per kelvin", precise::one / precise::count}, - unitD{"F78", "inch of water", precise::one / precise::count}, - unitD{"F79", "inch of mercury", precise::one / precise::count}, - unitD{"F80", "water horse power", precise::one / precise::count}, - unitD{"F81", "bar per kelvin", precise::one / precise::count}, - unitD{"F82", "hectopascal per kelvin", precise::one / precise::count}, - unitD{"F83", "kilopascal per kelvin", precise::one / precise::count}, - unitD{"F84", "millibar per kelvin", precise::one / precise::count}, - unitD{"F85", "megapascal per kelvin", precise::one / precise::count}, - unitD{"F86", "poise per kelvin", precise::one / precise::count}, - unitD{"F87", "volt per litre minute", precise::one / precise::count}, - unitD{"F88", "newton centimetre", precise::one / precise::count}, - unitD{"F89", "newton metre per degree", precise::one / precise::count}, - unitD{ - "F9", - "fibre per cubic centimetre of air", - precise::one / precise::count}, - unitD{"F90", "newton metre per ampere", precise::one / precise::count}, - unitD{"F91", "bar litre per second", precise::one / precise::count}, - unitD{"F92", "bar cubic metre per second", precise::one / precise::count}, - unitD{"F93", "hectopascal litre per second", precise::one / precise::count}, - unitD{ - "F94", - "hectopascal cubic metre per second", - precise::one / precise::count}, - unitD{"F95", "millibar litre per second", precise::one / precise::count}, - unitD{ - "F96", - "millibar cubic metre per second", - precise::one / precise::count}, - unitD{"F97", "megapascal litre per second", precise::one / precise::count}, - unitD{ - "F98", - "megapascal cubic metre per second", - precise::one / precise::count}, - unitD{"F99", "pascal litre per second", precise::one / precise::count}, - unitD{"FAH", "degree Fahrenheit", precise::one / precise::count}, - unitD{"FAR", "farad", precise::one / precise::count}, - unitD{"FB", "field", precise::one / precise::count}, - unitD{"FBM", "fibre metre", precise::one / precise::count}, - unitD{"FC", "thousand cubic foot", precise::one / precise::count}, - unitD{ - "FD", - "million particle per cubic foot", - precise::one / precise::count}, - unitD{"FE", "track foot", precise::one / precise::count}, - unitD{"FF", "hundred cubic metre", precise::one / precise::count}, - unitD{"FG", "transdermal patch", precise::one / precise::count}, - unitD{"FH", "micromole", precise::one / precise::count}, - unitD{"FIT", "failures in time", precise::one / precise::count}, - unitD{"FL", "flake ton", precise::one / precise::count}, - unitD{"FM", "million cubic foot", precise::one / precise::count}, - unitD{"FOT", "foot", precise::one / precise::count}, - unitD{"FP", "pound per square foot", precise::one / precise::count}, - unitD{"FR", "foot per minute", precise::one / precise::count}, - unitD{"FS", "foot per second", precise::one / precise::count}, - unitD{"FTK", "square foot", precise::one / precise::count}, - unitD{"FTQ", "cubic foot", precise::one / precise::count}, - unitD{ - "G01", - "pascal cubic metre per second", - precise::one / precise::count}, - unitD{"G04", "centimetre per bar", precise::one / precise::count}, - unitD{"G05", "metre per bar", precise::one / precise::count}, - unitD{"G06", "millimetre per bar", precise::one / precise::count}, - unitD{"G08", "square inch per second", precise::one / precise::count}, - unitD{ - "G09", - "square metre per second kelvin", - precise::one / precise::count}, - unitD{"G10", "stokes per kelvin", precise::one / precise::count}, - unitD{ - "G11", - "gram per cubic centimetre bar", - precise::one / precise::count}, - unitD{"G12", "gram per cubic decimetre bar", precise::one / precise::count}, - unitD{"G13", "gram per litre bar", precise::one / precise::count}, - unitD{"G14", "gram per cubic metre bar", precise::one / precise::count}, - unitD{"G15", "gram per millilitre bar", precise::one / precise::count}, - unitD{ - "G16", - "kilogram per cubic centimetre bar", - precise::one / precise::count}, - unitD{"G17", "kilogram per litre bar", precise::one / precise::count}, - unitD{"G18", "kilogram per cubic metre bar", precise::one / precise::count}, - unitD{"G19", "newton metre per kilogram", precise::one / precise::count}, - unitD{"G2", "US gallon per minute", precise::one / precise::count}, - unitD{"G20", "pound-force foot per pound", precise::one / precise::count}, - unitD{"G21", "cup [unit of volume]", precise::one / precise::count}, - unitD{"G23", "peck", precise::one / precise::count}, - unitD{"G24", "tablespoon (US)", precise::one / precise::count}, - unitD{"G25", "teaspoon (US)", precise::one / precise::count}, - unitD{"G26", "stere", precise::one / precise::count}, - unitD{"G27", "cubic centimetre per kelvin", precise::one / precise::count}, - unitD{"G28", "litre per kelvin", precise::one / precise::count}, - unitD{"G29", "cubic metre per kelvin", precise::one / precise::count}, - unitD{"G3", "Imperial gallon per minute", precise::one / precise::count}, - unitD{"G30", "millilitre per kelvin", precise::one / precise::count}, - unitD{ - "G31", - "kilogram per cubic centimetre", - precise::one / precise::count}, - unitD{ - "G32", - "ounce (avoirdupois) per cubic yard", - precise::one / precise::count}, - unitD{ - "G33", - "gram per cubic centimetre kelvin", - precise::one / precise::count}, - unitD{ - "G34", - "gram per cubic decimetre kelvin", - precise::one / precise::count}, - unitD{"G35", "gram per litre kelvin", precise::one / precise::count}, - unitD{"G36", "gram per cubic metre kelvin", precise::one / precise::count}, - unitD{"G37", "gram per millilitre kelvin", precise::one / precise::count}, - unitD{ - "G38", - "kilogram per cubic centimetre kelvin", - precise::one / precise::count}, - unitD{"G39", "kilogram per litre kelvin", precise::one / precise::count}, - unitD{ - "G40", - "kilogram per cubic metre kelvin", - precise::one / precise::count}, - unitD{"G41", "square metre per second bar", precise::one / precise::count}, - unitD{"G42", "microsiemens per centimetre", precise::one / precise::count}, - unitD{"G43", "microsiemens per metre", precise::one / precise::count}, - unitD{"G44", "nanosiemens per centimetre", precise::one / precise::count}, - unitD{"G45", "nanosiemens per metre", precise::one / precise::count}, - unitD{"G46", "stokes per bar", precise::one / precise::count}, - unitD{"G47", "cubic centimetre per day", precise::one / precise::count}, - unitD{"G48", "cubic centimetre per hour", precise::one / precise::count}, - unitD{"G49", "cubic centimetre per minute", precise::one / precise::count}, - unitD{"G50", "gallon (US) per hour", precise::one / precise::count}, - unitD{"G51", "litre per second", precise::one / precise::count}, - unitD{"G52", "cubic metre per day", precise::one / precise::count}, - unitD{"G53", "cubic metre per minute", precise::one / precise::count}, - unitD{"G54", "millilitre per day", precise::one / precise::count}, - unitD{"G55", "millilitre per hour", precise::one / precise::count}, - unitD{"G56", "cubic inch per hour", precise::one / precise::count}, - unitD{"G57", "cubic inch per minute", precise::one / precise::count}, - unitD{"G58", "cubic inch per second", precise::one / precise::count}, - unitD{"G59", "milliampere per litre minute", precise::one / precise::count}, - unitD{"G60", "volt per bar", precise::one / precise::count}, - unitD{ - "G61", - "cubic centimetre per day kelvin", - precise::one / precise::count}, - unitD{ - "G62", - "cubic centimetre per hour kelvin", - precise::one / precise::count}, - unitD{ - "G63", - "cubic centimetre per minute kelvin", - precise::one / precise::count}, - unitD{ - "G64", - "cubic centimetre per second kelvin", - precise::one / precise::count}, - unitD{"G65", "litre per day kelvin", precise::one / precise::count}, - unitD{"G66", "litre per hour kelvin", precise::one / precise::count}, - unitD{"G67", "litre per minute kelvin", precise::one / precise::count}, - unitD{"G68", "litre per second kelvin", precise::one / precise::count}, - unitD{"G69", "cubic metre per day kelvin", precise::one / precise::count}, - unitD{"G7", "microfiche sheet", precise::one / precise::count}, - unitD{"G70", "cubic metre per hour kelvin", precise::one / precise::count}, - unitD{ - "G71", - "cubic metre per minute kelvin", - precise::one / precise::count}, - unitD{ - "G72", - "cubic metre per second kelvin", - precise::one / precise::count}, - unitD{"G73", "millilitre per day kelvin", precise::one / precise::count}, - unitD{"G74", "millilitre per hour kelvin", precise::one / precise::count}, - unitD{"G75", "millilitre per minute kelvin", precise::one / precise::count}, - unitD{"G76", "millilitre per second kelvin", precise::one / precise::count}, - unitD{ - "G77", - "millimetre to the fourth power", - precise::one / precise::count}, - unitD{"G78", "cubic centimetre per day bar", precise::one / precise::count}, - unitD{ - "G79", - "cubic centimetre per hour bar", - precise::one / precise::count}, - unitD{ - "G80", - "cubic centimetre per minute bar", - precise::one / precise::count}, - unitD{ - "G81", - "cubic centimetre per second bar", - precise::one / precise::count}, - unitD{"G82", "litre per day bar", precise::one / precise::count}, - unitD{"G83", "litre per hour bar", precise::one / precise::count}, - unitD{"G84", "litre per minute bar", precise::one / precise::count}, - unitD{"G85", "litre per second bar", precise::one / precise::count}, - unitD{"G86", "cubic metre per day bar", precise::one / precise::count}, - unitD{"G87", "cubic metre per hour bar", precise::one / precise::count}, - unitD{"G88", "cubic metre per minute bar", precise::one / precise::count}, - unitD{"G89", "cubic metre per second bar", precise::one / precise::count}, - unitD{"G90", "millilitre per day bar", precise::one / precise::count}, - unitD{"G91", "millilitre per hour bar", precise::one / precise::count}, - unitD{"G92", "millilitre per minute bar", precise::one / precise::count}, - unitD{"G93", "millilitre per second bar", precise::one / precise::count}, - unitD{"G94", "cubic centimetre per bar", precise::one / precise::count}, - unitD{"G95", "litre per bar", precise::one / precise::count}, - unitD{"G96", "cubic metre per bar", precise::one / precise::count}, - unitD{"G97", "millilitre per bar", precise::one / precise::count}, - unitD{"G98", "microhenry per kiloohm", precise::one / precise::count}, - unitD{"G99", "microhenry per ohm", precise::one / precise::count}, - unitD{"GB", "gallon (US) per day", precise::one / precise::count}, - unitD{"GBQ", "gigabecquerel", precise::one / precise::count}, - unitD{"GC", "gram per 100 gram", precise::one / precise::count}, - unitD{"GD", "gross barrel", precise::one / precise::count}, - unitD{"GDW", "gram, dry weight", precise::one / precise::count}, - unitD{"GE", "pound per gallon (US)", precise::one / precise::count}, - unitD{ - "GF", - "gram per metre (gram per 100 centimetres)", - precise::one / precise::count}, - unitD{"GFI", "gram of fissile isotope", precise::one / precise::count}, - unitD{"GGR", "great gross", precise::one / precise::count}, - unitD{"GH", "half gallon (US)", precise::one / precise::count}, - unitD{"GIA", "gill (US)", precise::one / precise::count}, - unitD{"GIC", "gram, including container", precise::one / precise::count}, - unitD{"GII", "gill (UK)", precise::one / precise::count}, - unitD{ - "GIP", - "gram, including inner packaging", - precise::one / precise::count}, - unitD{"GJ", "gram per millilitre", precise::one / precise::count}, - unitD{"GK", "gram per kilogram", precise::one / precise::count}, - unitD{"GL", "gram per litre", precise::one / precise::count}, - unitD{"GLD", "dry gallon (US)", precise::one / precise::count}, - unitD{"GLI", "gallon (UK)", precise::one / precise::count}, - unitD{"GLL", "gallon (US)", precise::one / precise::count}, - unitD{"GM", "gram per square metre", precise::one / precise::count}, - unitD{"GN", "gross gallon", precise::one / precise::count}, - unitD{"GO", "milligram per square metre", precise::one / precise::count}, - unitD{"GP", "milligram per cubic metre", precise::one / precise::count}, - unitD{"GQ", "microgram per cubic metre", precise::one / precise::count}, - unitD{"GRM", "gram", precise::one / precise::count}, - unitD{"GRN", "grain", precise::one / precise::count}, - unitD{"GRO", "gross", precise::one / precise::count}, - unitD{"GRT", "gross register ton", precise::one / precise::count}, - unitD{"GT", "gross ton", precise::one / precise::count}, - unitD{"GV", "gigajoule", precise::one / precise::count}, - unitD{ - "GW", - "gallon per thousand cubic foot", - precise::one / precise::count}, - unitD{"GWH", "gigawatt hour", precise::one / precise::count}, - unitD{"GY", "gross yard", precise::one / precise::count}, - unitD{"GZ", "gage system", precise::one / precise::count}, - unitD{"H03", "henry per kiloohm", precise::one / precise::count}, - unitD{"H04", "henry per ohm", precise::one / precise::count}, - unitD{"H05", "millihenry per kiloohm", precise::one / precise::count}, - unitD{"H06", "millihenry per ohm", precise::one / precise::count}, - unitD{"H07", "pascal second per bar", precise::one / precise::count}, - unitD{"H08", "microbecquerel", precise::one / precise::count}, - unitD{"H09", "reciprocal year", precise::one / precise::count}, - unitD{"H1", "half page - electronic", precise::one / precise::count}, - unitD{"H10", "reciprocal hour", precise::one / precise::count}, - unitD{"H11", "reciprocal month", precise::one / precise::count}, - unitD{"H12", "degree Celsius per hour", precise::one / precise::count}, - unitD{"H13", "degree Celsius per minute", precise::one / precise::count}, - unitD{"H14", "degree Celsius per second", precise::one / precise::count}, - unitD{"H15", "square centimetre per gram", precise::one / precise::count}, - unitD{"H16", "square decametre", precise::one / precise::count}, - unitD{"H18", "square hectometre", precise::one / precise::count}, - unitD{"H19", "cubic hectometre", precise::one / precise::count}, - unitD{"H2", "half litre", precise::one / precise::count}, - unitD{"H20", "cubic kilometre", precise::one / precise::count}, - unitD{"H21", "blank", precise::one / precise::count}, - unitD{ - "H22", - "volt square inch per pound-force", - precise::one / precise::count}, - unitD{"H23", "volt per inch", precise::one / precise::count}, - unitD{"H24", "volt per microsecond", precise::one / precise::count}, - unitD{"H25", "percent per kelvin", precise::one / precise::count}, - unitD{"H26", "ohm per metre", precise::one / precise::count}, - unitD{"H27", "degree per metre", precise::one / precise::count}, - unitD{"H28", "microfarad per kilometre", precise::one / precise::count}, - unitD{"H29", "microgram per litre", precise::one / precise::count}, - unitD{ - "H30", - "square micrometre (square micron)", - precise::one / precise::count}, - unitD{"H31", "ampere per kilogram", precise::one / precise::count}, - unitD{"H32", "ampere squared second", precise::one / precise::count}, - unitD{"H33", "farad per kilometre", precise::one / precise::count}, - unitD{"H34", "hertz metre", precise::one / precise::count}, - unitD{"H35", "kelvin metre per watt", precise::one / precise::count}, - unitD{"H36", "megaohm per kilometre", precise::one / precise::count}, - unitD{"H37", "megaohm per metre", precise::one / precise::count}, - unitD{"H38", "megaampere", precise::one / precise::count}, - unitD{"H39", "megahertz kilometre", precise::one / precise::count}, - unitD{"H40", "newton per ampere", precise::one / precise::count}, - unitD{ - "H41", - "newton metre watt to the power minus 0,5", - precise::one / precise::count}, - unitD{"H42", "pascal per metre", precise::one / precise::count}, - unitD{"H43", "siemens per centimetre", precise::one / precise::count}, - unitD{"H44", "teraohm", precise::one / precise::count}, - unitD{"H45", "volt second per metre", precise::one / precise::count}, - unitD{"H46", "volt per second", precise::one / precise::count}, - unitD{"H47", "watt per cubic metre", precise::one / precise::count}, - unitD{"H48", "attofarad", precise::one / precise::count}, - unitD{"H49", "centimetre per hour", precise::one / precise::count}, - unitD{"H50", "reciprocal cubic centimetre", precise::one / precise::count}, - unitD{"H51", "decibel per kilometre", precise::one / precise::count}, - unitD{"H52", "decibel per metre", precise::one / precise::count}, - unitD{"H53", "kilogram per bar", precise::one / precise::count}, - unitD{ - "H54", - "kilogram per cubic decimetre kelvin", - precise::one / precise::count}, - unitD{ - "H55", - "kilogram per cubic decimetre bar", - precise::one / precise::count}, - unitD{ - "H56", - "kilogram per square metre second", - precise::one / precise::count}, - unitD{"H57", "inch per two pi radiant", precise::one / precise::count}, - unitD{"H58", "metre per volt second", precise::one / precise::count}, - unitD{"H59", "square metre per newton", precise::one / precise::count}, - unitD{"H60", "cubic metre per cubic metre", precise::one / precise::count}, - unitD{"H61", "millisiemens per centimetre", precise::one / precise::count}, - unitD{"H62", "millivolt per minute", precise::one / precise::count}, - unitD{ - "H63", - "milligram per square centimetre", - precise::one / precise::count}, - unitD{"H64", "milligram per gram", precise::one / precise::count}, - unitD{"H65", "millilitre per cubic metre", precise::one / precise::count}, - unitD{"H66", "millimetre per year", precise::one / precise::count}, - unitD{"H67", "millimetre per hour", precise::one / precise::count}, - unitD{"H68", "millimole per gram", precise::one / precise::count}, - unitD{"H69", "picopascal per kilometre", precise::one / precise::count}, - unitD{"H70", "picosecond", precise::one / precise::count}, - unitD{"H71", "percent per month", precise::one / precise::count}, - unitD{"H72", "percent per hectobar", precise::one / precise::count}, - unitD{"H73", "percent per decakelvin", precise::one / precise::count}, - unitD{"H74", "watt per metre", precise::one / precise::count}, - unitD{"H75", "decapascal", precise::one / precise::count}, - unitD{"H76", "gram per millimetre", precise::one / precise::count}, - unitD{"H77", "module width", precise::one / precise::count}, - unitD{ - "H78", - "conventional centimetre of water", - precise::one / precise::count}, - unitD{"H79", "French gauge", precise::one / precise::count}, - unitD{"H80", "rack unit", precise::one / precise::count}, - unitD{"H81", "millimetre per minute", precise::one / precise::count}, - unitD{"H82", "big point", precise::one / precise::count}, - unitD{"H83", "litre per kilogram", precise::one / precise::count}, - unitD{"H84", "gram millimetre", precise::one / precise::count}, - unitD{"H85", "reciprocal week", precise::one / precise::count}, - unitD{"H87", "piece", precise::one / precise::count}, - unitD{"H88", "megaohm kilometre", precise::one / precise::count}, - unitD{"H89", "percent per ohm", precise::one / precise::count}, - unitD{"H90", "percent per degree", precise::one / precise::count}, - unitD{"H91", "percent per ten thousand", precise::one / precise::count}, - unitD{ - "H92", - "percent per one hundred thousand", - precise::one / precise::count}, - unitD{"H93", "percent per hundred", precise::one / precise::count}, - unitD{"H94", "percent per thousand", precise::one / precise::count}, - unitD{"H95", "percent per volt", precise::one / precise::count}, - unitD{"H96", "percent per bar", precise::one / precise::count}, - unitD{"H98", "percent per inch", precise::one / precise::count}, - unitD{"H99", "percent per metre", precise::one / precise::count}, - unitD{"HA", "hank", precise::one / precise::count}, - unitD{"HAR", "hectare", precise::one / precise::count}, - unitD{"HBA", "hectobar", precise::one / precise::count}, - unitD{"HBX", "hundred boxes", precise::one / precise::count}, - unitD{"HC", "hundred count", precise::one / precise::count}, - unitD{"HD", "half dozen", precise::one / precise::count}, - unitD{"HDW", "hundred kilogram, dry weight", precise::one / precise::count}, - unitD{"HE", "hundredth of a carat", precise::one / precise::count}, - unitD{"HEA", "head", precise::one / precise::count}, - unitD{"HF", "hundred foot", precise::one / precise::count}, - unitD{"HGM", "hectogram", precise::one / precise::count}, - unitD{"HH", "hundred cubic foot", precise::one / precise::count}, - unitD{"HI", "hundred sheet", precise::one / precise::count}, - unitD{"HIU", "hundred international unit", precise::one / precise::count}, - unitD{"HJ", "metric horse power", precise::one / precise::count}, - unitD{"HK", "hundred kilogram", precise::one / precise::count}, - unitD{"HKM", "hundred kilogram, net mass", precise::one / precise::count}, - unitD{"HL", "hundred foot (linear)", precise::one / precise::count}, - unitD{"HLT", "hectolitre", precise::one / precise::count}, - unitD{"HM", "mile per hour (statute mile)", precise::one / precise::count}, - unitD{"HMQ", "million cubic metre", precise::one / precise::count}, - unitD{"HMT", "hectometre", precise::one / precise::count}, - unitD{ - "HN", - "conventional millimetre of mercury", - precise::one / precise::count}, - unitD{"HO", "hundred troy ounce", precise::one / precise::count}, - unitD{ - "HP", - "conventional millimetre of water", - precise::one / precise::count}, - unitD{"HPA", "hectolitre of pure alcohol", precise::one / precise::count}, - unitD{"HS", "hundred square foot", precise::one / precise::count}, - unitD{"HT", "half hour", precise::one / precise::count}, - unitD{"HTZ", "hertz", precise::one / precise::count}, - unitD{"HUR", "hour", precise::one / precise::count}, - unitD{"HY", "hundred yard", precise::one / precise::count}, - unitD{"IA", "inch pound (pound inch)", precise::one / precise::count}, - unitD{"IC", "count per inch", precise::one / precise::count}, - unitD{"IE", "person", precise::one / precise::count}, - unitD{"IF", "inches of water", precise::one / precise::count}, - unitD{"II", "column inch", precise::one / precise::count}, - unitD{"IL", "inch per minute", precise::one / precise::count}, - unitD{"IM", "impression", precise::one / precise::count}, - unitD{"INH", "inch", precise::one / precise::count}, - unitD{"INK", "square inch", precise::one / precise::count}, - unitD{"INQ", "cubic inch", precise::one / precise::count}, - unitD{"IP", "insurance policy", precise::one / precise::count}, - unitD{"ISD", "international sugar degree", precise::one / precise::count}, - unitD{"IT", "count per centimetre", precise::one / precise::count}, - unitD{"IU", "inch per second", precise::one / precise::count}, - unitD{"IV", "inch per second squared", precise::one / precise::count}, - unitD{"J10", "percent per millimetre", precise::one / precise::count}, - unitD{"J12", "per mille per psi", precise::one / precise::count}, - unitD{"J13", "degree API", precise::one / precise::count}, - unitD{"J14", "degree Baume (origin scale)", precise::one / precise::count}, - unitD{"J15", "degree Baume (US heavy)", precise::one / precise::count}, - unitD{"J16", "degree Baume (US light)", precise::one / precise::count}, - unitD{"J17", "degree Balling", precise::one / precise::count}, - unitD{"J18", "degree Brix", precise::one / precise::count}, - unitD{ - "J19", - "degree Fahrenheit hour square foot per British thermal unit (thermochemical)", - precise::one / precise::count}, - unitD{"J2", "joule per kilogram", precise::one / precise::count}, - unitD{"J20", "degree Fahrenheit per kelvin", precise::one / precise::count}, - unitD{"J21", "degree Fahrenheit per bar", precise::one / precise::count}, - unitD{ - "J22", - "degree Fahrenheit hour square foot per British thermal unit (international table)", - precise::one / precise::count}, - unitD{"J23", "degree Fahrenheit per hour", precise::one / precise::count}, - unitD{"J24", "degree Fahrenheit per minute", precise::one / precise::count}, - unitD{"J25", "degree Fahrenheit per second", precise::one / precise::count}, - unitD{"J26", "reciprocal degree Fahrenheit", precise::one / precise::count}, - unitD{"J27", "degree Oechsle", precise::one / precise::count}, - unitD{"J28", "degree Rankine per hour", precise::one / precise::count}, - unitD{"J29", "degree Rankine per minute", precise::one / precise::count}, - unitD{"J30", "degree Rankine per second", precise::one / precise::count}, - unitD{"J31", "degree Twaddell", precise::one / precise::count}, - unitD{"J32", "micropoise", precise::one / precise::count}, - unitD{"J33", "microgram per kilogram", precise::one / precise::count}, - unitD{ - "J34", - "microgram per cubic metre kelvin", - precise::one / precise::count}, - unitD{ - "J35", - "microgram per cubic metre bar", - precise::one / precise::count}, - unitD{"J36", "microlitre per litre", precise::one / precise::count}, - unitD{"J38", "baud", precise::one / precise::count}, - unitD{"J39", "British thermal unit (mean)", precise::one / precise::count}, - unitD{ - "J40", - "British thermal unit (international table) foot per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J41", - "British thermal unit (international table) inch per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J42", - "British thermal unit (international table) inch per second square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J43", - "British thermal unit (international table) per pound degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J44", - "British thermal unit (international table) per minute", - precise::one / precise::count}, - unitD{ - "J45", - "British thermal unit (international table) per second", - precise::one / precise::count}, - unitD{ - "J46", - "British thermal unit (thermochemical) foot per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J47", - "British thermal unit (thermochemical) per hour", - precise::one / precise::count}, - unitD{ - "J48", - "British thermal unit (thermochemical) inch per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J49", - "British thermal unit (thermochemical) inch per second square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J50", - "British thermal unit (thermochemical) per pound degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "J51", - "British thermal unit (thermochemical) per minute", - precise::one / precise::count}, - unitD{ - "J52", - "British thermal unit (thermochemical) per second", - precise::one / precise::count}, - unitD{ - "J53", - "coulomb square metre per kilogram", - precise::one / precise::count}, - unitD{"J54", "megabaud", precise::one / precise::count}, - unitD{"J55", "watt second", precise::one / precise::count}, - unitD{"J56", "bar per bar", precise::one / precise::count}, - unitD{"J57", "barrel (UK petroleum)", precise::one / precise::count}, - unitD{ - "J58", - "barrel (UK petroleum) per minute", - precise::one / precise::count}, - unitD{ - "J59", - "barrel (UK petroleum) per day", - precise::one / precise::count}, - unitD{ - "J60", - "barrel (UK petroleum) per hour", - precise::one / precise::count}, - unitD{ - "J61", - "barrel (UK petroleum) per second", - precise::one / precise::count}, - unitD{ - "J62", - "barrel (US petroleum) per hour", - precise::one / precise::count}, - unitD{ - "J63", - "barrel (US petroleum) per second", - precise::one / precise::count}, - unitD{"J64", "bushel (UK) per day", precise::one / precise::count}, - unitD{"J65", "bushel (UK) per hour", precise::one / precise::count}, - unitD{"J66", "bushel (UK) per minute", precise::one / precise::count}, - unitD{"J67", "bushel (UK) per second", precise::one / precise::count}, - unitD{"J68", "bushel (US dry) per day", precise::one / precise::count}, - unitD{"J69", "bushel (US dry) per hour", precise::one / precise::count}, - unitD{"J70", "bushel (US dry) per minute", precise::one / precise::count}, - unitD{"J71", "bushel (US dry) per second", precise::one / precise::count}, - unitD{"J72", "centinewton metre", precise::one / precise::count}, - unitD{"J73", "centipoise per kelvin", precise::one / precise::count}, - unitD{"J74", "centipoise per bar", precise::one / precise::count}, - unitD{"J75", "calorie (mean)", precise::one / precise::count}, - unitD{ - "J76", - "calorie (international table) per gram degree Celsius", - precise::one / precise::count}, - unitD{ - "J78", - "calorie (thermochemical) per centimetre second degree Celsius", - precise::one / precise::count}, - unitD{ - "J79", - "calorie (thermochemical) per gram degree Celsius", - precise::one / precise::count}, - unitD{ - "J81", - "calorie (thermochemical) per minute", - precise::one / precise::count}, - unitD{ - "J82", - "calorie (thermochemical) per second", - precise::one / precise::count}, - unitD{"J83", "clo", precise::one / precise::count}, - unitD{"J84", "centimetre per second kelvin", precise::one / precise::count}, - unitD{"J85", "centimetre per second bar", precise::one / precise::count}, - unitD{ - "J87", - "cubic centimetre per cubic metre", - precise::one / precise::count}, - unitD{"J89", "centimetre of mercury", precise::one / precise::count}, - unitD{"J90", "cubic decimetre per day", precise::one / precise::count}, - unitD{ - "J91", - "cubic decimetre per cubic metre", - precise::one / precise::count}, - unitD{"J92", "cubic decimetre per minute", precise::one / precise::count}, - unitD{"J93", "cubic decimetre per second", precise::one / precise::count}, - unitD{"J94", "dyne centimetre", precise::one / precise::count}, - unitD{"J95", "ounce (UK fluid) per day", precise::one / precise::count}, - unitD{"J96", "ounce (UK fluid) per hour", precise::one / precise::count}, - unitD{"J97", "ounce (UK fluid) per minute", precise::one / precise::count}, - unitD{"J98", "ounce (UK fluid) per second", precise::one / precise::count}, - unitD{"J99", "ounce (US fluid) per day", precise::one / precise::count}, - unitD{"JB", "jumbo", precise::one / precise::count}, - unitD{"JE", "joule per kelvin", precise::one / precise::count}, - unitD{"JG", "jug", precise::one / precise::count}, - unitD{"JK", "megajoule per kilogram", precise::one / precise::count}, - unitD{"JM", "megajoule per cubic metre", precise::one / precise::count}, - unitD{"JNT", "pipeline joint", precise::one / precise::count}, - unitD{"JO", "joint", precise::one / precise::count}, - unitD{"JOU", "joule", precise::one / precise::count}, - unitD{"JPS", "hundred metre", precise::one / precise::count}, - unitD{"JR", "jar", precise::one / precise::count}, - unitD{"JWL", "number of jewels", precise::one / precise::count}, - unitD{"K1", "kilowatt demand", precise::one / precise::count}, - unitD{"K10", "ounce (US fluid) per hour", precise::one / precise::count}, - unitD{"K11", "ounce (US fluid) per minute", precise::one / precise::count}, - unitD{"K12", "ounce (US fluid) per second", precise::one / precise::count}, - unitD{"K13", "foot per degree Fahrenheit", precise::one / precise::count}, - unitD{"K14", "foot per hour", precise::one / precise::count}, - unitD{"K15", "foot pound-force per hour", precise::one / precise::count}, - unitD{"K16", "foot pound-force per minute", precise::one / precise::count}, - unitD{"K17", "foot per psi", precise::one / precise::count}, - unitD{ - "K18", - "foot per second degree Fahrenheit", - precise::one / precise::count}, - unitD{"K19", "foot per second psi", precise::one / precise::count}, - unitD{ - "K2", - "kilovolt ampere reactive demand", - precise::one / precise::count}, - unitD{"K20", "reciprocal cubic foot", precise::one / precise::count}, - unitD{ - "K21", - "cubic foot per degree Fahrenheit", - precise::one / precise::count}, - unitD{"K22", "cubic foot per day", precise::one / precise::count}, - unitD{"K23", "cubic foot per psi", precise::one / precise::count}, - unitD{"K24", "foot of water", precise::one / precise::count}, - unitD{"K25", "foot of mercury", precise::one / precise::count}, - unitD{"K26", "gallon (UK) per day", precise::one / precise::count}, - unitD{"K27", "gallon (UK) per hour", precise::one / precise::count}, - unitD{"K28", "gallon (UK) per second", precise::one / precise::count}, - unitD{"K3", "kilovolt ampere reactive hour", precise::one / precise::count}, - unitD{ - "K30", - "gallon (US liquid) per second", - precise::one / precise::count}, - unitD{ - "K31", - "gram-force per square centimetre", - precise::one / precise::count}, - unitD{"K32", "gill (UK) per day", precise::one / precise::count}, - unitD{"K33", "gill (UK) per hour", precise::one / precise::count}, - unitD{"K34", "gill (UK) per minute", precise::one / precise::count}, - unitD{"K35", "gill (UK) per second", precise::one / precise::count}, - unitD{"K36", "gill (US) per day", precise::one / precise::count}, - unitD{"K37", "gill (US) per hour", precise::one / precise::count}, - unitD{"K38", "gill (US) per minute", precise::one / precise::count}, - unitD{"K39", "gill (US) per second", precise::one / precise::count}, - unitD{ - "K40", - "standard acceleration of free fall", - precise::one / precise::count}, - unitD{"K41", "grain per gallon (US)", precise::one / precise::count}, - unitD{"K42", "horsepower (boiler)", precise::one / precise::count}, - unitD{"K43", "horsepower (electric)", precise::one / precise::count}, - unitD{"K45", "inch per degree Fahrenheit", precise::one / precise::count}, - unitD{"K46", "inch per psi", precise::one / precise::count}, - unitD{ - "K47", - "inch per second degree Fahrenheit", - precise::one / precise::count}, - unitD{"K48", "inch per second psi", precise::one / precise::count}, - unitD{"K49", "reciprocal cubic inch", precise::one / precise::count}, - unitD{"K5", "kilovolt ampere (reactive)", precise::one / precise::count}, - unitD{"K50", "kilobaud", precise::one / precise::count}, - unitD{"K51", "kilocalorie (mean)", precise::one / precise::count}, - unitD{ - "K52", - "kilocalorie (international table) per hour metre degree Celsius", - precise::one / precise::count}, - unitD{"K53", "kilocalorie (thermochemical)", precise::one / precise::count}, - unitD{ - "K54", - "kilocalorie (thermochemical) per minute", - precise::one / precise::count}, - unitD{ - "K55", - "kilocalorie (thermochemical) per second", - precise::one / precise::count}, - unitD{"K58", "kilomole per hour", precise::one / precise::count}, - unitD{ - "K59", - "kilomole per cubic metre kelvin", - precise::one / precise::count}, - unitD{"K6", "kilolitre", precise::one / precise::count}, - unitD{"K60", "kilomole per cubic metre bar", precise::one / precise::count}, - unitD{"K61", "kilomole per minute", precise::one / precise::count}, - unitD{"K62", "litre per litre", precise::one / precise::count}, - unitD{"K63", "reciprocal litre", precise::one / precise::count}, - unitD{ - "K64", - "pound (avoirdupois) per degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K65", - "pound (avoirdupois) square foot", - precise::one / precise::count}, - unitD{"K66", "pound (avoirdupois) per day", precise::one / precise::count}, - unitD{"K67", "pound per foot hour", precise::one / precise::count}, - unitD{"K68", "pound per foot second", precise::one / precise::count}, - unitD{ - "K69", - "pound (avoirdupois) per cubic foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K70", - "pound (avoirdupois) per cubic foot psi", - precise::one / precise::count}, - unitD{ - "K71", - "pound (avoirdupois) per gallon (UK)", - precise::one / precise::count}, - unitD{ - "K73", - "pound (avoirdupois) per hour degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K74", - "pound (avoirdupois) per hour psi", - precise::one / precise::count}, - unitD{ - "K75", - "pound (avoirdupois) per cubic inch degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K76", - "pound (avoirdupois) per cubic inch psi", - precise::one / precise::count}, - unitD{"K77", "pound (avoirdupois) per psi", precise::one / precise::count}, - unitD{ - "K78", - "pound (avoirdupois) per minute", - precise::one / precise::count}, - unitD{ - "K79", - "pound (avoirdupois) per minute degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K80", - "pound (avoirdupois) per minute psi", - precise::one / precise::count}, - unitD{ - "K81", - "pound (avoirdupois) per second", - precise::one / precise::count}, - unitD{ - "K82", - "pound (avoirdupois) per second degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "K83", - "pound (avoirdupois) per second psi", - precise::one / precise::count}, - unitD{"K84", "pound per cubic yard", precise::one / precise::count}, - unitD{"K85", "pound-force per square foot", precise::one / precise::count}, - unitD{ - "K86", - "pound-force per square inch degree Fahrenheit", - precise::one / precise::count}, - unitD{"K87", "psi cubic inch per second", precise::one / precise::count}, - unitD{"K88", "psi litre per second", precise::one / precise::count}, - unitD{"K89", "psi cubic metre per second", precise::one / precise::count}, - unitD{"K90", "psi cubic yard per second", precise::one / precise::count}, - unitD{ - "K91", - "pound-force second per square foot", - precise::one / precise::count}, - unitD{ - "K92", - "pound-force second per square inch", - precise::one / precise::count}, - unitD{"K93", "reciprocal psi", precise::one / precise::count}, - unitD{"K94", "quart (UK liquid) per day", precise::one / precise::count}, - unitD{"K95", "quart (UK liquid) per hour", precise::one / precise::count}, - unitD{"K96", "quart (UK liquid) per minute", precise::one / precise::count}, - unitD{"K97", "quart (UK liquid) per second", precise::one / precise::count}, - unitD{"K98", "quart (US liquid) per day", precise::one / precise::count}, - unitD{"K99", "quart (US liquid) per hour", precise::one / precise::count}, - unitD{"KA", "cake", precise::one / precise::count}, - unitD{"KAT", "katal", precise::one / precise::count}, - unitD{"KB", "kilocharacter", precise::one / precise::count}, - unitD{"KBA", "kilobar", precise::one / precise::count}, - unitD{"KCC", "kilogram of choline chloride", precise::one / precise::count}, - unitD{"KD", "kilogram decimal", precise::one / precise::count}, - unitD{"KDW", "kilogram drained net weight", precise::one / precise::count}, - unitD{"KEL", "kelvin", precise::one / precise::count}, - unitD{"KF", "kilopacket", precise::one / precise::count}, - unitD{"KG", "keg", precise::one / precise::count}, - unitD{"KGM", "kilogram", precise::one / precise::count}, - unitD{"KGS", "kilogram per second", precise::one / precise::count}, - unitD{ - "KHY", - "kilogram of hydrogen peroxide", - precise::one / precise::count}, - unitD{"KHZ", "kilohertz", precise::one / precise::count}, - unitD{"KI", "kilogram per millimetre width", precise::one / precise::count}, - unitD{ - "KIC", - "kilogram, including container", - precise::one / precise::count}, - unitD{ - "KIP", - "kilogram, including inner packaging", - precise::one / precise::count}, - unitD{"KJ", "kilosegment", precise::one / precise::count}, - unitD{"KJO", "kilojoule", precise::one / precise::count}, - unitD{"KL", "kilogram per metre", precise::one / precise::count}, - unitD{ - "KLK", - "lactic dry material percentage", - precise::one / precise::count}, - unitD{"KLX", "kilolux", precise::one / precise::count}, - unitD{"KMA", "kilogram of methylamine", precise::one / precise::count}, - unitD{"KMH", "kilometre per hour", precise::one / precise::count}, - unitD{"KMK", "square kilometre", precise::one / precise::count}, - unitD{"KMQ", "kilogram per cubic metre", precise::one / precise::count}, - unitD{"KMT", "kilometre", precise::one / precise::count}, - unitD{"KNI", "kilogram of nitrogen", precise::one / precise::count}, - unitD{"KNS", "kilogram named substance", precise::one / precise::count}, - unitD{"KNT", "knot", precise::one / precise::count}, - unitD{ - "KO", - "milliequivalence caustic potash per gram of product", - precise::one / precise::count}, - unitD{"KPA", "kilopascal", precise::one / precise::count}, - unitD{ - "KPH", - "kilogram of potassium hydroxide (caustic potash)", - precise::one / precise::count}, - unitD{"KPO", "kilogram of potassium oxide", precise::one / precise::count}, - unitD{ - "KPP", - "kilogram of phosphorus pentoxide (phosphoric anhydride)", - precise::one / precise::count}, - unitD{"KR", "kiloroentgen", precise::one / precise::count}, - unitD{ - "KS", - "thousand pound per square inch", - precise::one / precise::count}, - unitD{ - "KSD", - "kilogram of substance 90 % dry", - precise::one / precise::count}, - unitD{ - "KSH", - "kilogram of sodium hydroxide (caustic soda)", - precise::one / precise::count}, - unitD{"KT", "kit", precise::one / precise::count}, - unitD{"KTM", "kilometre", precise::one / precise::count}, - unitD{"KTN", "kilotonne", precise::one / precise::count}, - unitD{"KUR", "kilogram of uranium", precise::one / precise::count}, - unitD{"KVA", "kilovolt - ampere", precise::one / precise::count}, - unitD{"KVR", "kilovar", precise::one / precise::count}, - unitD{"KVT", "kilovolt", precise::one / precise::count}, - unitD{"KW", "kilogram per millimetre", precise::one / precise::count}, - unitD{"KWH", "kilowatt hour", precise::one / precise::count}, - unitD{ - "KWO", - "kilogram of tungsten trioxide", - precise::one / precise::count}, - unitD{"KWT", "kilowatt", precise::one / precise::count}, - unitD{"KX", "millilitre per kilogram", precise::one / precise::count}, - unitD{"L10", "quart (US liquid) per minute", precise::one / precise::count}, - unitD{"L11", "quart (US liquid) per second", precise::one / precise::count}, - unitD{"L12", "metre per second kelvin", precise::one / precise::count}, - unitD{"L13", "metre per second bar", precise::one / precise::count}, - unitD{ - "L14", - "square metre hour degree Celsius per kilocalorie (international table)", - precise::one / precise::count}, - unitD{ - "L15", - "millipascal second per kelvin", - precise::one / precise::count}, - unitD{"L16", "millipascal second per bar", precise::one / precise::count}, - unitD{ - "L17", - "milligram per cubic metre kelvin", - precise::one / precise::count}, - unitD{ - "L18", - "milligram per cubic metre bar", - precise::one / precise::count}, - unitD{"L19", "millilitre per litre", precise::one / precise::count}, - unitD{"L2", "litre per minute", precise::one / precise::count}, - unitD{"L20", "reciprocal cubic millimetre", precise::one / precise::count}, - unitD{ - "L21", - "cubic millimetre per cubic metre", - precise::one / precise::count}, - unitD{"L23", "mole per hour", precise::one / precise::count}, - unitD{"L24", "mole per kilogram kelvin", precise::one / precise::count}, - unitD{"L25", "mole per kilogram bar", precise::one / precise::count}, - unitD{"L26", "mole per litre kelvin", precise::one / precise::count}, - unitD{"L27", "mole per litre bar", precise::one / precise::count}, - unitD{"L28", "mole per cubic metre kelvin", precise::one / precise::count}, - unitD{"L29", "mole per cubic metre bar", precise::one / precise::count}, - unitD{"L30", "mole per minute", precise::one / precise::count}, - unitD{ - "L31", - "milliroentgen aequivalent men", - precise::one / precise::count}, - unitD{"L32", "nanogram per kilogram", precise::one / precise::count}, - unitD{"L33", "ounce (avoirdupois) per day", precise::one / precise::count}, - unitD{"L34", "ounce (avoirdupois) per hour", precise::one / precise::count}, - unitD{ - "L35", - "ounce (avoirdupois) per minute", - precise::one / precise::count}, - unitD{ - "L36", - "ounce (avoirdupois) per second", - precise::one / precise::count}, - unitD{ - "L37", - "ounce (avoirdupois) per gallon (UK)", - precise::one / precise::count}, - unitD{ - "L38", - "ounce (avoirdupois) per gallon (US)", - precise::one / precise::count}, - unitD{ - "L39", - "ounce (avoirdupois) per cubic inch", - precise::one / precise::count}, - unitD{"L40", "ounce (avoirdupois)-force", precise::one / precise::count}, - unitD{ - "L41", - "ounce (avoirdupois)-force inch", - precise::one / precise::count}, - unitD{"L42", "picosiemens per metre", precise::one / precise::count}, - unitD{"L43", "peck (UK)", precise::one / precise::count}, - unitD{"L44", "peck (UK) per day", precise::one / precise::count}, - unitD{"L45", "peck (UK) per hour", precise::one / precise::count}, - unitD{"L46", "peck (UK) per minute", precise::one / precise::count}, - unitD{"L47", "peck (UK) per second", precise::one / precise::count}, - unitD{"L48", "peck (US dry) per day", precise::one / precise::count}, - unitD{"L49", "peck (US dry) per hour", precise::one / precise::count}, - unitD{"L50", "peck (US dry) per minute", precise::one / precise::count}, - unitD{"L51", "peck (US dry) per second", precise::one / precise::count}, - unitD{"L52", "psi per psi", precise::one / precise::count}, - unitD{"L53", "pint (UK) per day", precise::one / precise::count}, - unitD{"L54", "pint (UK) per hour", precise::one / precise::count}, - unitD{"L55", "pint (UK) per minute", precise::one / precise::count}, - unitD{"L56", "pint (UK) per second", precise::one / precise::count}, - unitD{"L57", "pint (US liquid) per day", precise::one / precise::count}, - unitD{"L58", "pint (US liquid) per hour", precise::one / precise::count}, - unitD{"L59", "pint (US liquid) per minute", precise::one / precise::count}, - unitD{"L60", "pint (US liquid) per second", precise::one / precise::count}, - unitD{"L61", "pint (US dry)", precise::one / precise::count}, - unitD{"L62", "quart (US dry)", precise::one / precise::count}, - unitD{"L63", "slug per day", precise::one / precise::count}, - unitD{"L64", "slug per foot second", precise::one / precise::count}, - unitD{"L65", "slug per cubic foot", precise::one / precise::count}, - unitD{"L66", "slug per hour", precise::one / precise::count}, - unitD{"L67", "slug per minute", precise::one / precise::count}, - unitD{"L68", "slug per second", precise::one / precise::count}, - unitD{"L69", "tonne per kelvin", precise::one / precise::count}, - unitD{"L70", "tonne per bar", precise::one / precise::count}, - unitD{"L71", "tonne per day", precise::one / precise::count}, - unitD{"L72", "tonne per day kelvin", precise::one / precise::count}, - unitD{"L73", "tonne per day bar", precise::one / precise::count}, - unitD{"L74", "tonne per hour kelvin", precise::one / precise::count}, - unitD{"L75", "tonne per hour bar", precise::one / precise::count}, - unitD{"L76", "tonne per cubic metre kelvin", precise::one / precise::count}, - unitD{"L77", "tonne per cubic metre bar", precise::one / precise::count}, - unitD{"L78", "tonne per minute", precise::one / precise::count}, - unitD{"L79", "tonne per minute kelvin", precise::one / precise::count}, - unitD{"L80", "tonne per minute bar", precise::one / precise::count}, - unitD{"L81", "tonne per second", precise::one / precise::count}, - unitD{"L82", "tonne per second kelvin", precise::one / precise::count}, - unitD{"L83", "tonne per second bar", precise::one / precise::count}, - unitD{"L84", "ton (UK shipping)", precise::one / precise::count}, - unitD{"L85", "ton long per day", precise::one / precise::count}, - unitD{"L86", "ton (US shipping)", precise::one / precise::count}, - unitD{ - "L87", - "ton short per degree Fahrenheit", - precise::one / precise::count}, - unitD{"L88", "ton short per day", precise::one / precise::count}, - unitD{ - "L89", - "ton short per hour degree Fahrenheit", - precise::one / precise::count}, - unitD{"L90", "ton short per hour psi", precise::one / precise::count}, - unitD{"L91", "ton short per psi", precise::one / precise::count}, - unitD{"L92", "ton (UK long) per cubic yard", precise::one / precise::count}, - unitD{ - "L93", - "ton (US short) per cubic yard", - precise::one / precise::count}, - unitD{"L94", "ton-force (US short)", precise::one / precise::count}, - unitD{"L95", "common year", precise::one / precise::count}, - unitD{"L96", "sidereal year", precise::one / precise::count}, - unitD{"L98", "yard per degree Fahrenheit", precise::one / precise::count}, - unitD{"L99", "yard per psi", precise::one / precise::count}, - unitD{"LA", "pound per cubic inch", precise::one / precise::count}, - unitD{"LAC", "lactose excess percentage", precise::one / precise::count}, - unitD{"LBR", "pound", precise::one / precise::count}, - unitD{"LBT", "troy pound (US)", precise::one / precise::count}, - unitD{"LC", "linear centimetre", precise::one / precise::count}, - unitD{"LD", "litre per day", precise::one / precise::count}, - unitD{"LE", "lite", precise::one / precise::count}, - unitD{"LEF", "leaf", precise::one / precise::count}, - unitD{"LF", "linear foot", precise::one / precise::count}, - unitD{"LH", "labour hour", precise::one / precise::count}, - unitD{"LI", "linear inch", precise::one / precise::count}, - unitD{"LJ", "large spray", precise::one / precise::count}, - unitD{"LK", "link", precise::one / precise::count}, - unitD{"LM", "linear metre", precise::one / precise::count}, - unitD{"LN", "length", precise::one / precise::count}, - unitD{"LO", "lot [unit of procurement]", precise::one / precise::count}, - unitD{"LP", "liquid pound", precise::one / precise::count}, - unitD{"LPA", "litre of pure alcohol", precise::one / precise::count}, - unitD{"LR", "layer", precise::one / precise::count}, - unitD{"LS", "lump sum", precise::one / precise::count}, - unitD{"LTN", "ton (UK) or long ton (US)", precise::one / precise::count}, - unitD{"LTR", "litre", precise::one / precise::count}, - unitD{"LUB", "metric ton, lubricating oil", precise::one / precise::count}, - unitD{"LUM", "lumen", precise::one / precise::count}, - unitD{"LUX", "lux", precise::one / precise::count}, - unitD{"LX", "linear yard per pound", precise::one / precise::count}, - unitD{"LY", "linear yard", precise::one / precise::count}, - unitD{"M0", "magnetic tape", precise::one / precise::count}, - unitD{"M1", "milligram per litre", precise::one / precise::count}, - unitD{"M10", "reciprocal cubic yard", precise::one / precise::count}, - unitD{ - "M11", - "cubic yard per degree Fahrenheit", - precise::one / precise::count}, - unitD{"M12", "cubic yard per day", precise::one / precise::count}, - unitD{"M13", "cubic yard per hour", precise::one / precise::count}, - unitD{"M14", "cubic yard per psi", precise::one / precise::count}, - unitD{"M15", "cubic yard per minute", precise::one / precise::count}, - unitD{"M16", "cubic yard per second", precise::one / precise::count}, - unitD{"M17", "kilohertz metre", precise::one / precise::count}, - unitD{"M18", "gigahertz metre", precise::one / precise::count}, - unitD{"M19", "Beaufort", precise::one / precise::count}, - unitD{ - "M20", - "reciprocal megakelvin or megakelvin to the power minus one", - precise::one / precise::count}, - unitD{ - "M21", - "reciprocal kilovolt - ampere reciprocal hour", - precise::one / precise::count}, - unitD{ - "M22", - "millilitre per square centimetre minute", - precise::one / precise::count}, - unitD{"M23", "newton per centimetre", precise::one / precise::count}, - unitD{"M24", "ohm kilometre", precise::one / precise::count}, - unitD{"M25", "percent per degree Celsius", precise::one / precise::count}, - unitD{"M26", "gigaohm per metre", precise::one / precise::count}, - unitD{"M27", "megahertz metre", precise::one / precise::count}, - unitD{"M29", "kilogram per kilogram", precise::one / precise::count}, - unitD{ - "M30", - "reciprocal volt - ampere reciprocal second", - precise::one / precise::count}, - unitD{"M31", "kilogram per kilometre", precise::one / precise::count}, - unitD{"M32", "pascal second per litre", precise::one / precise::count}, - unitD{"M33", "millimole per litre", precise::one / precise::count}, - unitD{ - "M34", - "newton metre per square metre", - precise::one / precise::count}, - unitD{"M35", "millivolt - ampere", precise::one / precise::count}, - unitD{"M36", "30-day month", precise::one / precise::count}, - unitD{"M37", "actual/360", precise::one / precise::count}, - unitD{"M38", "kilometre per second squared", precise::one / precise::count}, - unitD{ - "M39", - "centimetre per second squared", - precise::one / precise::count}, - unitD{"M4", "monetary value", precise::one / precise::count}, - unitD{"M40", "yard per second squared", precise::one / precise::count}, - unitD{ - "M41", - "millimetre per second squared", - precise::one / precise::count}, - unitD{ - "M42", - "mile (statute mile) per second squared", - precise::one / precise::count}, - unitD{"M43", "mil", precise::one / precise::count}, - unitD{"M44", "revolution", precise::one / precise::count}, - unitD{ - "M45", - "degree [unit of angle] per second squared", - precise::one / precise::count}, - unitD{"M46", "revolution per minute", precise::one / precise::count}, - unitD{"M47", "circular mil", precise::one / precise::count}, - unitD{ - "M48", - "square mile (based on U.S. survey foot)", - precise::one / precise::count}, - unitD{ - "M49", - "chain (based on U.S. survey foot)", - precise::one / precise::count}, - unitD{"M5", "microcurie", precise::one / precise::count}, - unitD{"M50", "furlong", precise::one / precise::count}, - unitD{"M51", "foot (U.S. survey)", precise::one / precise::count}, - unitD{ - "M52", - "mile (based on U.S. survey foot)", - precise::one / precise::count}, - unitD{"M53", "metre per pascal", precise::one / precise::count}, - unitD{"M55", "metre per radiant", precise::one / precise::count}, - unitD{"M56", "shake", precise::one / precise::count}, - unitD{"M57", "mile per minute", precise::one / precise::count}, - unitD{"M58", "mile per second", precise::one / precise::count}, - unitD{"M59", "metre per second pascal", precise::one / precise::count}, - unitD{"M60", "metre per hour", precise::one / precise::count}, - unitD{"M61", "inch per year", precise::one / precise::count}, - unitD{"M62", "kilometre per second", precise::one / precise::count}, - unitD{"M63", "inch per minute", precise::one / precise::count}, - unitD{"M64", "yard per second", precise::one / precise::count}, - unitD{"M65", "yard per minute", precise::one / precise::count}, - unitD{"M66", "yard per hour", precise::one / precise::count}, - unitD{ - "M67", - "acre-foot (based on U.S. survey foot)", - precise::one / precise::count}, - unitD{"M68", "cord (128 ft3)", precise::one / precise::count}, - unitD{"M69", "cubic mile (UK statute)", precise::one / precise::count}, - unitD{"M7", "micro-inch", precise::one / precise::count}, - unitD{"M70", "ton, register", precise::one / precise::count}, - unitD{"M71", "cubic metre per pascal", precise::one / precise::count}, - unitD{"M72", "bel", precise::one / precise::count}, - unitD{ - "M73", - "kilogram per cubic metre pascal", - precise::one / precise::count}, - unitD{"M74", "kilogram per pascal", precise::one / precise::count}, - unitD{"M75", "kilopound-force", precise::one / precise::count}, - unitD{"M76", "poundal", precise::one / precise::count}, - unitD{ - "M77", - "kilogram metre per second squared", - precise::one / precise::count}, - unitD{"M78", "pond", precise::one / precise::count}, - unitD{"M79", "square foot per hour", precise::one / precise::count}, - unitD{"M80", "stokes per pascal", precise::one / precise::count}, - unitD{"M81", "square centimetre per second", precise::one / precise::count}, - unitD{ - "M82", - "square metre per second pascal", - precise::one / precise::count}, - unitD{"M83", "denier", precise::one / precise::count}, - unitD{"M84", "pound per yard", precise::one / precise::count}, - unitD{"M85", "ton, assay", precise::one / precise::count}, - unitD{"M86", "pfund", precise::one / precise::count}, - unitD{"M87", "kilogram per second pascal", precise::one / precise::count}, - unitD{"M88", "tonne per month", precise::one / precise::count}, - unitD{"M89", "tonne per year", precise::one / precise::count}, - unitD{ - "M9", - "million Btu per 1000 cubic foot", - precise::one / precise::count}, - unitD{"M90", "kilopound per hour", precise::one / precise::count}, - unitD{"M91", "pound per pound", precise::one / precise::count}, - unitD{"M92", "pound-force foot", precise::one / precise::count}, - unitD{"M93", "newton metre per radian", precise::one / precise::count}, - unitD{"M94", "kilogram metre", precise::one / precise::count}, - unitD{"M95", "poundal foot", precise::one / precise::count}, - unitD{"M96", "poundal inch", precise::one / precise::count}, - unitD{"M97", "dyne metre", precise::one / precise::count}, - unitD{ - "M98", - "kilogram centimetre per second", - precise::one / precise::count}, - unitD{"M99", "gram centimetre per second", precise::one / precise::count}, - unitD{"MA", "machine per unit", precise::one / precise::count}, - unitD{ - "MAH", - "megavolt ampere reactive hour", - precise::one / precise::count}, - unitD{"MAL", "megalitre", precise::one / precise::count}, - unitD{"MAM", "megametre", precise::one / precise::count}, - unitD{"MAR", "megavar", precise::one / precise::count}, - unitD{"MAW", "megawatt", precise::one / precise::count}, - unitD{ - "MBE", - "thousand standard brick equivalent", - precise::one / precise::count}, - unitD{"MBF", "thousand board foot", precise::one / precise::count}, - unitD{"MBR", "millibar", precise::one / precise::count}, - unitD{"MC", "microgram", precise::one / precise::count}, - unitD{"MCU", "millicurie", precise::one / precise::count}, - unitD{"MD", "air dry metric ton", precise::one / precise::count}, - unitD{ - "MF", - "milligram per square foot per side", - precise::one / precise::count}, - unitD{"MGM", "milligram", precise::one / precise::count}, - unitD{"MHZ", "megahertz", precise::one / precise::count}, - unitD{"MIK", "square mile (statute mile)", precise::one / precise::count}, - unitD{"MIL", "thousand", precise::one / precise::count}, - unitD{"MIN", "minute [unit of time]", precise::one / precise::count}, - unitD{"MIO", "million", precise::one / precise::count}, - unitD{"MIU", "million international unit", precise::one / precise::count}, - unitD{"MK", "milligram per square inch", precise::one / precise::count}, - unitD{"MLD", "milliard", precise::one / precise::count}, - unitD{"MLT", "millilitre", precise::one / precise::count}, - unitD{"MMK", "square millimetre", precise::one / precise::count}, - unitD{"MMQ", "cubic millimetre", precise::one / precise::count}, - unitD{"MMT", "millimetre", precise::one / precise::count}, - unitD{"MND", "kilogram, dry weight", precise::one / precise::count}, - unitD{"MON", "month", precise::one / precise::count}, - unitD{"MPA", "megapascal", precise::one / precise::count}, - unitD{"MQ", "thousand metre", precise::one / precise::count}, - unitD{"MQH", "cubic metre per hour", precise::one / precise::count}, - unitD{"MQS", "cubic metre per second", precise::one / precise::count}, - unitD{"MSK", "metre per second squared", precise::one / precise::count}, - unitD{"MT", "mat", precise::one / precise::count}, - unitD{"MTK", "square metre", precise::one / precise::count}, - unitD{"MTQ", "cubic metre", precise::one / precise::count}, - unitD{"MTR", "metre", precise::one / precise::count}, - unitD{"MTS", "metre per second", precise::one / precise::count}, - unitD{"MV", "number of mults", precise::one / precise::count}, - unitD{"MVA", "megavolt - ampere", precise::one / precise::count}, - unitD{"MWH", "megawatt hour (1000 kW.h)", precise::one / precise::count}, - unitD{"N1", "pen calorie", precise::one / precise::count}, - unitD{"N10", "pound foot per second", precise::one / precise::count}, - unitD{"N11", "pound inch per second", precise::one / precise::count}, - unitD{"N12", "Pferdestaerke", precise::one / precise::count}, - unitD{ - "N13", - "centimetre of mercury (0 degC)", - precise::one / precise::count}, - unitD{"N14", "centimetre of water (4 degC)", precise::one / precise::count}, - unitD{"N15", "foot of water (39.2 degF)", precise::one / precise::count}, - unitD{"N16", "inch of mercury (32 degF)", precise::one / precise::count}, - unitD{"N17", "inch of mercury (60 degF)", precise::one / precise::count}, - unitD{"N18", "inch of water (39.2 degF)", precise::one / precise::count}, - unitD{"N19", "inch of water (60 degF)", precise::one / precise::count}, - unitD{"N2", "number of lines", precise::one / precise::count}, - unitD{"N20", "kip per square inch", precise::one / precise::count}, - unitD{"N21", "poundal per square foot", precise::one / precise::count}, - unitD{ - "N22", - "ounce (avoirdupois) per square inch", - precise::one / precise::count}, - unitD{"N23", "conventional metre of water", precise::one / precise::count}, - unitD{"N24", "gram per square millimetre", precise::one / precise::count}, - unitD{"N25", "pound per square yard", precise::one / precise::count}, - unitD{"N26", "poundal per square inch", precise::one / precise::count}, - unitD{"N27", "foot to the fourth power", precise::one / precise::count}, - unitD{"N28", "cubic decimetre per kilogram", precise::one / precise::count}, - unitD{"N29", "cubic foot per pound", precise::one / precise::count}, - unitD{"N3", "print point", precise::one / precise::count}, - unitD{"N30", "cubic inch per pound", precise::one / precise::count}, - unitD{"N31", "kilonewton per metre", precise::one / precise::count}, - unitD{"N32", "poundal per inch", precise::one / precise::count}, - unitD{"N33", "pound-force per yard", precise::one / precise::count}, - unitD{ - "N34", - "poundal second per square foot", - precise::one / precise::count}, - unitD{"N35", "poise per pascal", precise::one / precise::count}, - unitD{ - "N36", - "newton second per square metre", - precise::one / precise::count}, - unitD{"N37", "kilogram per metre second", precise::one / precise::count}, - unitD{"N38", "kilogram per metre minute", precise::one / precise::count}, - unitD{"N39", "kilogram per metre day", precise::one / precise::count}, - unitD{"N40", "kilogram per metre hour", precise::one / precise::count}, - unitD{"N41", "gram per centimetre second", precise::one / precise::count}, - unitD{ - "N42", - "poundal second per square inch", - precise::one / precise::count}, - unitD{"N43", "pound per foot minute", precise::one / precise::count}, - unitD{"N44", "pound per foot day", precise::one / precise::count}, - unitD{ - "N45", - "cubic metre per second pascal", - precise::one / precise::count}, - unitD{"N46", "foot poundal", precise::one / precise::count}, - unitD{"N47", "inch poundal", precise::one / precise::count}, - unitD{"N48", "watt per square centimetre", precise::one / precise::count}, - unitD{"N49", "watt per square inch", precise::one / precise::count}, - unitD{ - "N50", - "British thermal unit (international table) per square foot hour", - precise::one / precise::count}, - unitD{ - "N51", - "British thermal unit (thermochemical) per square foot hour", - precise::one / precise::count}, - unitD{ - "N52", - "British thermal unit (thermochemical) per square foot minute", - precise::one / precise::count}, - unitD{ - "N53", - "British thermal unit (international table) per square foot second", - precise::one / precise::count}, - unitD{ - "N54", - "British thermal unit (thermochemical) per square foot second", - precise::one / precise::count}, - unitD{ - "N55", - "British thermal unit (international table) per square inch second", - precise::one / precise::count}, - unitD{ - "N56", - "calorie (thermochemical) per square centimetre minute", - precise::one / precise::count}, - unitD{ - "N57", - "calorie (thermochemical) per square centimetre second", - precise::one / precise::count}, - unitD{ - "N58", - "British thermal unit (international table) per cubic foot", - precise::one / precise::count}, - unitD{ - "N59", - "British thermal unit (thermochemical) per cubic foot", - precise::one / precise::count}, - unitD{ - "N60", - "British thermal unit (international table) per degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N61", - "British thermal unit (thermochemical) per degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N62", - "British thermal unit (international table) per degree Rankine", - precise::one / precise::count}, - unitD{ - "N63", - "British thermal unit (thermochemical) per degree Rankine", - precise::one / precise::count}, - unitD{ - "N64", - "British thermal unit (thermochemical) per pound degree Rankine", - precise::one / precise::count}, - unitD{ - "N65", - "kilocalorie (international table) per gram kelvin", - precise::one / precise::count}, - unitD{ - "N66", - "British thermal unit (39 degF)", - precise::one / precise::count}, - unitD{ - "N67", - "British thermal unit (59 degF)", - precise::one / precise::count}, - unitD{ - "N68", - "British thermal unit (60 degF)", - precise::one / precise::count}, - unitD{"N69", "calorie (20 degC)", precise::one / precise::count}, - unitD{"N70", "quad (1015 BtuIT)", precise::one / precise::count}, - unitD{"N71", "therm (EC)", precise::one / precise::count}, - unitD{"N72", "therm (U.S.)", precise::one / precise::count}, - unitD{ - "N73", - "British thermal unit (thermochemical) per pound", - precise::one / precise::count}, - unitD{ - "N74", - "British thermal unit (international table) per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N75", - "British thermal unit (thermochemical) per hour square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N76", - "British thermal unit (international table) per second square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N77", - "British thermal unit (thermochemical) per second square foot degree Fahrenheit", - precise::one / precise::count}, - unitD{ - "N78", - "kilowatt per square metre kelvin", - precise::one / precise::count}, - unitD{"N79", "kelvin per pascal", precise::one / precise::count}, - unitD{ - "N80", - "watt per metre degree Celsius", - precise::one / precise::count}, - unitD{"N81", "kilowatt per metre kelvin", precise::one / precise::count}, - unitD{ - "N82", - "kilowatt per metre degree Celsius", - precise::one / precise::count}, - unitD{ - "N83", - "metre per degree Celcius metre", - precise::one / precise::count}, - unitD{ - "N84", - "degree Fahrenheit hour per British thermal unit (international table)", - precise::one / precise::count}, - unitD{ - "N85", - "degree Fahrenheit hour per British thermal unit (thermochemical)", - precise::one / precise::count}, - unitD{ - "N86", - "degree Fahrenheit second per British thermal unit (international table)", - precise::one / precise::count}, - unitD{ - "N87", - "degree Fahrenheit second per British thermal unit (thermochemical)", - precise::one / precise::count}, - unitD{ - "N88", - "degree Fahrenheit hour square foot per British thermal unit (international table) inch", - precise::one / precise::count}, - unitD{ - "N89", - "degree Fahrenheit hour square foot per British thermal unit (thermochemical) inch", - precise::one / precise::count}, - unitD{"N90", "kilofarad", precise::one / precise::count}, - unitD{"N91", "reciprocal joule", precise::one / precise::count}, - unitD{"N92", "picosiemens", precise::one / precise::count}, - unitD{"N93", "ampere per pascal", precise::one / precise::count}, - unitD{"N94", "franklin", precise::one / precise::count}, - unitD{"N95", "ampere minute", precise::one / precise::count}, - unitD{"N96", "biot", precise::one / precise::count}, - unitD{"N97", "gilbert", precise::one / precise::count}, - unitD{"N98", "volt per pascal", precise::one / precise::count}, - unitD{"N99", "picovolt", precise::one / precise::count}, - unitD{"NA", "milligram per kilogram", precise::one / precise::count}, - unitD{"NAR", "number of articles", precise::one / precise::count}, - unitD{"NB", "barge", precise::one / precise::count}, - unitD{"NBB", "number of bobbins", precise::one / precise::count}, - unitD{"NC", "car", precise::one / precise::count}, - unitD{"NCL", "number of cells", precise::one / precise::count}, - unitD{"ND", "net barrel", precise::one / precise::count}, - unitD{"NE", "net litre", precise::one / precise::count}, - unitD{"NEW", "newton", precise::one / precise::count}, - unitD{"NF", "message", precise::one / precise::count}, - unitD{"NG", "net gallon (us)", precise::one / precise::count}, - unitD{"NH", "message hour", precise::one / precise::count}, - unitD{"NI", "net imperial gallon", precise::one / precise::count}, - unitD{"NIL", "nil", precise::one / precise::count}, - unitD{ - "NIU", - "number of international units", - precise::one / precise::count}, - unitD{"NJ", "number of screens", precise::one / precise::count}, - unitD{"NL", "load", precise::one / precise::count}, - unitD{"NMI", "nautical mile", precise::one / precise::count}, - unitD{"NMP", "number of packs", precise::one / precise::count}, - unitD{"NN", "train", precise::one / precise::count}, - unitD{"NPL", "number of parcels", precise::one / precise::count}, - unitD{"NPR", "number of pairs", precise::one / precise::count}, - unitD{"NPT", "number of parts", precise::one / precise::count}, - unitD{"NQ", "mho", precise::one / precise::count}, - unitD{"NR", "micromho", precise::one / precise::count}, - unitD{"NRL", "number of rolls", precise::one / precise::count}, - unitD{"NT", "net ton", precise::one / precise::count}, - unitD{"NTT", "net register ton", precise::one / precise::count}, - unitD{"NU", "newton metre", precise::one / precise::count}, - unitD{"NV", "vehicle", precise::one / precise::count}, - unitD{"NX", "part per thousand", precise::one / precise::count}, - unitD{"NY", "pound per air dry metric ton", precise::one / precise::count}, - unitD{"OA", "panel", precise::one / precise::count}, - unitD{"ODE", "ozone depletion equivalent", precise::one / precise::count}, - unitD{"OHM", "ohm", precise::one / precise::count}, - unitD{"ON", "ounce per square yard", precise::one / precise::count}, - unitD{"ONZ", "ounce (avoirdupois)", precise::one / precise::count}, - unitD{"OP", "two pack", precise::one / precise::count}, - unitD{"OT", "overtime hour", precise::one / precise::count}, - unitD{"OZ", "ounce av", precise::one / precise::count}, - unitD{"OZA", "fluid ounce (US)", precise::one / precise::count}, - unitD{"OZI", "fluid ounce (UK)", precise::one / precise::count}, - unitD{"P0", "page - electronic", precise::one / precise::count}, - unitD{"P1", "percent", precise::one / precise::count}, - unitD{"P10", "coulomb per metre", precise::one / precise::count}, - unitD{"P11", "kiloweber", precise::one / precise::count}, - unitD{"P12", "gamma", precise::one / precise::count}, - unitD{"P13", "kilotesla", precise::one / precise::count}, - unitD{"P14", "joule per second", precise::one / precise::count}, - unitD{"P15", "joule per minute", precise::one / precise::count}, - unitD{"P16", "joule per hour", precise::one / precise::count}, - unitD{"P17", "joule per day", precise::one / precise::count}, - unitD{"P18", "kilojoule per second", precise::one / precise::count}, - unitD{"P19", "kilojoule per minute", precise::one / precise::count}, - unitD{"P2", "pound per foot", precise::one / precise::count}, - unitD{"P20", "kilojoule per hour", precise::one / precise::count}, - unitD{"P21", "kilojoule per day", precise::one / precise::count}, - unitD{"P22", "nanoohm", precise::one / precise::count}, - unitD{"P23", "ohm circular-mil per foot", precise::one / precise::count}, - unitD{"P24", "kilohenry", precise::one / precise::count}, - unitD{"P25", "lumen per square foot", precise::one / precise::count}, - unitD{"P26", "phot", precise::one / precise::count}, - unitD{"P27", "footcandle", precise::one / precise::count}, - unitD{"P28", "candela per square inch", precise::one / precise::count}, - unitD{"P29", "footlambert", precise::one / precise::count}, - unitD{"P3", "three pack", precise::one / precise::count}, - unitD{"P30", "lambert", precise::one / precise::count}, - unitD{"P31", "stilb", precise::one / precise::count}, - unitD{"P32", "candela per square foot", precise::one / precise::count}, - unitD{"P33", "kilocandela", precise::one / precise::count}, - unitD{"P34", "millicandela", precise::one / precise::count}, - unitD{"P35", "Hefner-Kerze", precise::one / precise::count}, - unitD{"P36", "international candle", precise::one / precise::count}, - unitD{ - "P37", - "British thermal unit (international table) per square foot", - precise::one / precise::count}, - unitD{ - "P38", - "British thermal unit (thermochemical) per square foot", - precise::one / precise::count}, - unitD{ - "P39", - "calorie (thermochemical) per square centimetre", - precise::one / precise::count}, - unitD{"P4", "four pack", precise::one / precise::count}, - unitD{"P40", "langley", precise::one / precise::count}, - unitD{"P41", "decade (logarithmic)", precise::one / precise::count}, - unitD{"P42", "pascal squared second", precise::one / precise::count}, - unitD{"P43", "bel per metre", precise::one / precise::count}, - unitD{"P44", "pound mole", precise::one / precise::count}, - unitD{"P45", "pound mole per second", precise::one / precise::count}, - unitD{"P46", "pound mole per minute", precise::one / precise::count}, - unitD{"P47", "kilomole per kilogram", precise::one / precise::count}, - unitD{"P48", "pound mole per pound", precise::one / precise::count}, - unitD{ - "P49", - "newton square metre per ampere", - precise::one / precise::count}, - unitD{"P5", "five pack", precise::one / precise::count}, - unitD{"P50", "weber metre", precise::one / precise::count}, - unitD{"P51", "mol per kilogram pascal", precise::one / precise::count}, - unitD{"P52", "mol per cubic metre pascal", precise::one / precise::count}, - unitD{"P53", "unit pole", precise::one / precise::count}, - unitD{"P54", "milligray per second", precise::one / precise::count}, - unitD{"P55", "microgray per second", precise::one / precise::count}, - unitD{"P56", "nanogray per second", precise::one / precise::count}, - unitD{"P57", "gray per minute", precise::one / precise::count}, - unitD{"P58", "milligray per minute", precise::one / precise::count}, - unitD{"P59", "microgray per minute", precise::one / precise::count}, - unitD{"P6", "six pack", precise::one / precise::count}, - unitD{"P60", "nanogray per minute", precise::one / precise::count}, - unitD{"P61", "gray per hour", precise::one / precise::count}, - unitD{"P62", "milligray per hour", precise::one / precise::count}, - unitD{"P63", "microgray per hour", precise::one / precise::count}, - unitD{"P64", "nanogray per hour", precise::one / precise::count}, - unitD{"P65", "sievert per second", precise::one / precise::count}, - unitD{"P66", "millisievert per second", precise::one / precise::count}, - unitD{"P67", "microsievert per second", precise::one / precise::count}, - unitD{"P68", "nanosievert per second", precise::one / precise::count}, - unitD{"P69", "rem per second", precise::one / precise::count}, - unitD{"P7", "seven pack", precise::one / precise::count}, - unitD{"P70", "sievert per hour", precise::one / precise::count}, - unitD{"P71", "millisievert per hour", precise::one / precise::count}, - unitD{"P72", "microsievert per hour", precise::one / precise::count}, - unitD{"P73", "nanosievert per hour", precise::one / precise::count}, - unitD{"P74", "sievert per minute", precise::one / precise::count}, - unitD{"P75", "millisievert per minute", precise::one / precise::count}, - unitD{"P76", "microsievert per minute", precise::one / precise::count}, - unitD{"P77", "nanosievert per minute", precise::one / precise::count}, - unitD{"P78", "reciprocal square inch", precise::one / precise::count}, - unitD{ - "P79", - "pascal square metre per kilogram", - precise::one / precise::count}, - unitD{"P8", "eight pack", precise::one / precise::count}, - unitD{"P80", "millipascal per metre", precise::one / precise::count}, - unitD{"P81", "kilopascal per metre", precise::one / precise::count}, - unitD{"P82", "hectopascal per metre", precise::one / precise::count}, - unitD{ - "P83", - "standard atmosphere per metre", - precise::one / precise::count}, - unitD{ - "P84", - "technical atmosphere per metre", - precise::one / precise::count}, - unitD{"P85", "torr per metre", precise::one / precise::count}, - unitD{"P86", "psi per inch", precise::one / precise::count}, - unitD{ - "P87", - "cubic metre per second square metre", - precise::one / precise::count}, - unitD{"P88", "rhe", precise::one / precise::count}, - unitD{"P89", "pound-force foot per inch", precise::one / precise::count}, - unitD{"P9", "nine pack", precise::one / precise::count}, - unitD{"P90", "pound-force inch per inch", precise::one / precise::count}, - unitD{"P91", "perm (0 degC)", precise::one / precise::count}, - unitD{"P92", "perm (23 degC)", precise::one / precise::count}, - unitD{"P93", "byte per second", precise::one / precise::count}, - unitD{"P94", "kilobyte per second", precise::one / precise::count}, - unitD{"P95", "megabyte per second", precise::one / precise::count}, - unitD{"P96", "reciprocal volt", precise::one / precise::count}, - unitD{"P97", "reciprocal radian", precise::one / precise::count}, - unitD{ - "P98", - "pascal to the power sum of stoichiometric numbers", - precise::one / precise::count}, - unitD{ - "P99", - "mole per cubiv metre to the power sum of stoichiometric numbers", - precise::one / precise::count}, - unitD{"PA", "packet", precise::one / precise::count}, - unitD{"PAL", "pascal", precise::one / precise::count}, - unitD{"PB", "pair inch", precise::one / precise::count}, - unitD{"PD", "pad", precise::one / precise::count}, - unitD{"PE", "pound equivalent", precise::one / precise::count}, - unitD{"PF", "pallet (lift)", precise::one / precise::count}, - unitD{"PFL", "proof litre", precise::one / precise::count}, - unitD{"PG", "plate", precise::one / precise::count}, - unitD{"PGL", "proof gallon", precise::one / precise::count}, - unitD{"PI", "pitch", precise::one / precise::count}, - unitD{"PK", "pack", precise::one / precise::count}, - unitD{"PL", "pail", precise::one / precise::count}, - unitD{"PLA", "degree Plato", precise::one / precise::count}, - unitD{"PM", "pound percentage", precise::one / precise::count}, - unitD{"PN", "pound net", precise::one / precise::count}, - unitD{"PO", "pound per inch of length", precise::one / precise::count}, - unitD{"PQ", "page per inch", precise::one / precise::count}, - unitD{"PR", "pair", precise::one / precise::count}, - unitD{"PS", "pound-force per square inch", precise::one / precise::count}, - unitD{"PT", "pint (US)", precise::one / precise::count}, - unitD{"PTD", "dry pint (US)", precise::one / precise::count}, - unitD{"PTI", "pint (UK)", precise::one / precise::count}, - unitD{"PTL", "liquid pint (US)", precise::one / precise::count}, - unitD{"PU", "tray / tray pack", precise::one / precise::count}, - unitD{"PV", "half pint (US)", precise::one / precise::count}, - unitD{"PW", "pound per inch of width", precise::one / precise::count}, - unitD{"PY", "peck dry (US)", precise::one / precise::count}, - unitD{"PZ", "peck dry (UK)", precise::one / precise::count}, - unitD{"Q10", "joule per tesla", precise::one / precise::count}, - unitD{"Q11", "erlang", precise::one / precise::count}, - unitD{"Q12", "octet", precise::one / precise::count}, - unitD{"Q13", "octet per second", precise::one / precise::count}, - unitD{"Q14", "shannon", precise::one / precise::count}, - unitD{"Q15", "hartley", precise::one / precise::count}, - unitD{"Q16", "natural unit of information", precise::one / precise::count}, - unitD{"Q17", "shannon per second", precise::one / precise::count}, - unitD{"Q18", "hartley per second", precise::one / precise::count}, - unitD{ - "Q19", - "natural unit of information per second", - precise::one / precise::count}, - unitD{"Q20", "second per kilogramm", precise::one / precise::count}, - unitD{"Q21", "watt square metre", precise::one / precise::count}, - unitD{ - "Q22", - "second per radian cubic metre", - precise::one / precise::count}, - unitD{"Q23", "weber to the power minus one", precise::one / precise::count}, - unitD{"Q24", "reciprocal inch", precise::one / precise::count}, - unitD{"Q25", "dioptre", precise::one / precise::count}, - unitD{"Q26", "one per one", precise::one / precise::count}, - unitD{"Q27", "newton metre per metre", precise::one / precise::count}, - unitD{ - "Q28", - "kilogram per square metre pascal second", - precise::one / precise::count}, - unitD{"Q3", "meal", precise::one / precise::count}, - unitD{"QA", "page - facsimile", precise::one / precise::count}, - unitD{"QAN", "quarter (of a year)", precise::one / precise::count}, - unitD{"QB", "page - hardcopy", precise::one / precise::count}, - unitD{"QD", "quarter dozen", precise::one / precise::count}, - unitD{"QH", "quarter hour", precise::one / precise::count}, - unitD{"QK", "quarter kilogram", precise::one / precise::count}, - unitD{"QR", "quire", precise::one / precise::count}, - unitD{"QT", "quart (US)", precise::one / precise::count}, - unitD{"QTD", "dry quart (US)", precise::one / precise::count}, - unitD{"QTI", "quart (UK)", precise::one / precise::count}, - unitD{"QTL", "liquid quart (US)", precise::one / precise::count}, - unitD{"QTR", "quarter (UK)", precise::one / precise::count}, - unitD{"R1", "pica", precise::one / precise::count}, - unitD{"R4", "calorie", precise::one / precise::count}, - unitD{"R9", "thousand cubic metre", precise::one / precise::count}, - unitD{"RA", "rack", precise::one / precise::count}, - unitD{"RD", "rod", precise::one / precise::count}, - unitD{"RG", "ring", precise::one / precise::count}, - unitD{"RH", "running or operating hour", precise::one / precise::count}, - unitD{"RK", "roll metric measure", precise::one / precise::count}, - unitD{"RL", "reel", precise::one / precise::count}, - unitD{"RM", "ream", precise::one / precise::count}, - unitD{"RN", "ream metric measure", precise::one / precise::count}, - unitD{"RO", "roll", precise::one / precise::count}, - unitD{"ROM", "room", precise::one / precise::count}, - unitD{"RP", "pound per ream", precise::one / precise::count}, - unitD{"RPM", "revolutions per minute", precise::one / precise::count}, - unitD{"RPS", "revolutions per second", precise::one / precise::count}, - unitD{"RS", "reset", precise::one / precise::count}, - unitD{"RT", "revenue ton mile", precise::one / precise::count}, - unitD{"RU", "run", precise::one / precise::count}, - unitD{"S3", "square foot per second", precise::one / precise::count}, - unitD{"S4", "square metre per second", precise::one / precise::count}, - unitD{"S5", "sixty fourths of an inch", precise::one / precise::count}, - unitD{"S6", "session", precise::one / precise::count}, - unitD{"S7", "storage unit", precise::one / precise::count}, - unitD{"S8", "standard advertising unit", precise::one / precise::count}, - unitD{"SA", "sack", precise::one / precise::count}, - unitD{"SAN", "half year (6 months)", precise::one / precise::count}, - unitD{"SCO", "score", precise::one / precise::count}, - unitD{"SCR", "scruple", precise::one / precise::count}, - unitD{"SD", "solid pound", precise::one / precise::count}, - unitD{"SE", "section", precise::one / precise::count}, - unitD{"SEC", "second [unit of time]", precise::one / precise::count}, - unitD{"SET", "set", precise::one / precise::count}, - unitD{"SG", "segment", precise::one / precise::count}, - unitD{"SHT", "shipping ton", precise::one / precise::count}, - unitD{"SIE", "siemens", precise::one / precise::count}, - unitD{"SK", "split tank truck", precise::one / precise::count}, - unitD{"SL", "slipsheet", precise::one / precise::count}, - unitD{"SMI", "mile (statute mile)", precise::one / precise::count}, - unitD{"SN", "square rod", precise::one / precise::count}, - unitD{"SO", "spool", precise::one / precise::count}, - unitD{"SP", "shelf package", precise::one / precise::count}, - unitD{"SQ", "square", precise::one / precise::count}, - unitD{"SQR", "square, roofing", precise::one / precise::count}, - unitD{"SR", "strip", precise::one / precise::count}, - unitD{"SS", "sheet metric measure", precise::one / precise::count}, - unitD{ - "SST", - "short standard (7200 matches)", - precise::one / precise::count}, - unitD{"ST", "sheet", precise::one / precise::count}, - unitD{"STC", "stick", precise::one / precise::count}, - unitD{"STI", "stone (UK)", precise::one / precise::count}, - unitD{"STK", "stick, cigarette", precise::one / precise::count}, - unitD{"STL", "standard litre", precise::one / precise::count}, - unitD{ - "STN", - "ton (US) or short ton (UK/US)", - precise::one / precise::count}, - unitD{"STW", "straw", precise::one / precise::count}, - unitD{"SV", "skid", precise::one / precise::count}, - unitD{"SW", "skein", precise::one / precise::count}, - unitD{"SX", "shipment", precise::one / precise::count}, - unitD{"SYR", "syringe", precise::one / precise::count}, - unitD{ - "T0", - "telecommunication line in service", - precise::one / precise::count}, - unitD{"T1", "thousand pound gross", precise::one / precise::count}, - unitD{"T3", "thousand piece", precise::one / precise::count}, - unitD{"T4", "thousand bag", precise::one / precise::count}, - unitD{"T5", "thousand casing", precise::one / precise::count}, - unitD{"T6", "thousand gallon (US)", precise::one / precise::count}, - unitD{"T7", "thousand impression", precise::one / precise::count}, - unitD{"T8", "thousand linear inch", precise::one / precise::count}, - unitD{"TA", "tenth cubic foot", precise::one / precise::count}, - unitD{ - "TAH", - "kiloampere hour (thousand ampere hour)", - precise::one / precise::count}, - unitD{"TAN", "total acid number", precise::one / precise::count}, - unitD{"TC", "truckload", precise::one / precise::count}, - unitD{"TD", "therm", precise::one / precise::count}, - unitD{"TE", "tote", precise::one / precise::count}, - unitD{"TF", "ten square yard", precise::one / precise::count}, - unitD{"TI", "thousand square inch", precise::one / precise::count}, - unitD{ - "TIC", - "metric ton, including container", - precise::one / precise::count}, - unitD{ - "TIP", - "metric ton, including inner packaging", - precise::one / precise::count}, - unitD{"TJ", "thousand square centimetre", precise::one / precise::count}, - unitD{"TK", "tank, rectangular", precise::one / precise::count}, - unitD{"TKM", "tonne kilometre", precise::one / precise::count}, - unitD{"TL", "thousand foot (linear)", precise::one / precise::count}, - unitD{ - "TMS", - "kilogram of imported meat, less offal", - precise::one / precise::count}, - unitD{"TN", "tin", precise::one / precise::count}, - unitD{"TNE", "tonne (metric ton)", precise::one / precise::count}, - unitD{"TP", "ten pack", precise::one / precise::count}, - unitD{"TPR", "ten pair", precise::one / precise::count}, - unitD{"TQ", "thousand foot", precise::one / precise::count}, - unitD{"TQD", "thousand cubic metre per day", precise::one / precise::count}, - unitD{"TR", "ten square foot", precise::one / precise::count}, - unitD{"TRL", "trillion (EUR)", precise::one / precise::count}, - unitD{"TS", "thousand square foot", precise::one / precise::count}, - unitD{"TSD", "tonne of substance 90 % dry", precise::one / precise::count}, - unitD{"TSH", "ton of steam per hour", precise::one / precise::count}, - unitD{"TST", "ten set", precise::one / precise::count}, - unitD{"TT", "thousand linear metre", precise::one / precise::count}, - unitD{"TTS", "ten thousand sticks", precise::one / precise::count}, - unitD{"TU", "tube", precise::one / precise::count}, - unitD{"TV", "thousand kilogram", precise::one / precise::count}, - unitD{"TW", "thousand sheet", precise::one / precise::count}, - unitD{"TY", "tank, cylindrical", precise::one / precise::count}, - unitD{"U1", "treatment", precise::one / precise::count}, - unitD{"U2", "tablet", precise::one / precise::count}, - unitD{"UA", "torr", precise::one / precise::count}, - unitD{ - "UB", - "telecommunication line in service average", - precise::one / precise::count}, - unitD{"UC", "telecommunication port", precise::one / precise::count}, - unitD{"UD", "tenth minute", precise::one / precise::count}, - unitD{"UE", "tenth hour", precise::one / precise::count}, - unitD{ - "UF", - "usage per telecommunication line average", - precise::one / precise::count}, - unitD{"UH", "ten thousand yard", precise::one / precise::count}, - unitD{"UM", "million unit", precise::one / precise::count}, - unitD{"VA", "volt - ampere per kilogram", precise::one / precise::count}, - unitD{"VI", "vial", precise::one / precise::count}, - unitD{"VLT", "volt", precise::one / precise::count}, - unitD{"VP", "percent volume", precise::one / precise::count}, - unitD{"VQ", "bulk", precise::one / precise::count}, - unitD{"VS", "visit", precise::one / precise::count}, - unitD{"W2", "wet kilo", precise::one / precise::count}, - unitD{"W4", "two week", precise::one / precise::count}, - unitD{"WA", "watt per kilogram", precise::one / precise::count}, - unitD{"WB", "wet pound", precise::one / precise::count}, - unitD{"WCD", "cord", precise::one / precise::count}, - unitD{"WE", "wet ton", precise::one / precise::count}, - unitD{"WEB", "weber", precise::one / precise::count}, - unitD{"WEE", "week", precise::one / precise::count}, - unitD{"WG", "wine gallon", precise::one / precise::count}, - unitD{"WH", "wheel", precise::one / precise::count}, - unitD{"WHR", "watt hour", precise::one / precise::count}, - unitD{"WI", "weight per square inch", precise::one / precise::count}, - unitD{"WM", "working month", precise::one / precise::count}, - unitD{"WR", "wrap", precise::one / precise::count}, - unitD{"WSD", "standard", precise::one / precise::count}, - unitD{"WTT", "watt", precise::one / precise::count}, - unitD{"WW", "millilitre of water", precise::one / precise::count}, - unitD{"X1", "Gunter's chain", precise::one / precise::count}, - unitD{"YDK", "square yard", precise::one / precise::count}, - unitD{"YDQ", "cubic yard", precise::one / precise::count}, - unitD{"YL", "hundred linear yard", precise::one / precise::count}, - unitD{"YRD", "yard", precise::one / precise::count}, - unitD{"YT", "ten yard", precise::one / precise::count}, - unitD{"Z1", "lift van", precise::one / precise::count}, - unitD{"Z11", "hanging container", precise::one / precise::count}, - unitD{"Z2", "chest", precise::one / precise::count}, - unitD{"Z3", "cask", precise::one / precise::count}, - unitD{"Z4", "hogshead", precise::one / precise::count}, - unitD{"Z5", "lug", precise::one / precise::count}, - unitD{"Z6", "conference point", precise::one / precise::count}, - unitD{"Z8", "newspage agate line", precise::one / precise::count}, - unitD{"ZP", "page", precise::one / precise::count}, - unitD{"ZZ", "mutually defined", precise::one / precise::count}, -}}; +namespace units { +namespace precise { + using unitD = std::tuple; + static UNITS_CPP14_CONSTEXPR_OBJECT std::array r20_units = {{ + unitD{"05", "lift", {1.0, count, commodities::packaging::lift}}, + unitD{ + "06", + "small spray", + {1.0, count, commodities::packaging::small_spray}}, + unitD{"08", "heat lot", {1.0, count, commodities::packaging::heat_lot}}, + unitD{"10", "group", {1.0, count, commodities::packaging::group}}, + unitD{"11", "outfit", {1.0, count, commodities::packaging::outfit}}, + unitD{"13", "ration", {1.0, count, commodities::packaging::ration}}, + unitD{"14", "shot", us::shot}, + unitD{ + "15", + "stick, military", + {1.0, count, commodities::packaging::stick}}, + unitD{ + "16", + "hundred fifteen kg drum", + {115.0, kg, commodities::packaging::drum}}, + unitD{ + "17", + "hundred lb drum", + {100.0, lb, commodities::packaging::drum}}, + unitD{ + "18", + "fiftyfive gallon (US) drum", + {55.0, us::gallon, commodities::packaging::drum}}, + unitD{ + "19", + "tank truck", + {1.0, count, commodities::packaging::tanktruck}}, + unitD{"1A", "car mile", {1.0, mile, commodities::packaging::car}}, + unitD{"1B", "car count", {1.0, count, commodities::packaging::car}}, + unitD{ + "1C", + "locomotive count", + {1.0, count, commodities::packaging::locomotive}}, + unitD{ + "1D", + "caboose count", + {1.0, count, commodities::packaging::caboose}}, + unitD{"1E", "empty car", {1.0, count, commodities::packaging::car}}, + unitD{"1F", "train mile", {1.0, mile, commodities::packaging::train}}, + unitD{"1G", "fuel usage gallon (US)", us::gallon}, + unitD{ + "1H", + "caboose mile", + {1.0, mile, commodities::packaging::caboose}}, + unitD{ + "1I", + "fixed rate", + {1.0, count, commodities::packaging::fixed_rate}}, + unitD{"1J", "ton mile", ton* mile}, + unitD{ + "1K", + "locomotive mile", + {1.0, mile, commodities::packaging::locomotive}}, + unitD{ + "1L", + "total car count", + {1.0, count, commodities::packaging::car}}, + unitD{"1M", "total car mile", {1.0, mile, commodities::packaging::car}}, + unitD{"1X", "quarter mile", {0.25, mile}}, + unitD{"20", "twenty foot container", {20.0 * 8.0 * 8.5, ft.pow(3)}}, + unitD{"21", "forty foot container", {40.0 * 8.0 * 8.5, ft.pow(3)}}, + unitD{"22", "decilitre per gram", deci* L / g}, + unitD{"23", "gram per cubic centimetre", g / cm.pow(3)}, + unitD{ + "24", + "theoretical pound", + {1.0, lb, commodities::packaging::theoretical}}, + unitD{"25", "gram per square centimetre", g / cm.pow(2)}, + unitD{"26", "actual ton", {1.0, ton, commodities::packaging::actual}}, + unitD{ + "27", + "theoretical ton", + {1.0, ton, commodities::packaging::theoretical}}, + unitD{"28", "kilogram per square metre", kg / m.pow(2)}, + unitD{ + "29", + "pound per thousand square foot", + lb / (thousand * ft.pow(2))}, + unitD{"2A", "radian per second", rad / s}, + unitD{"2B", "radian per second squared", rad / s.pow(2)}, + unitD{"2C", "roentgen", cgs::roentgen}, + unitD{"2G", "volt AC", V}, + unitD{"2H", "volt DC", V}, + unitD{ + "2I", + "British thermal unit (international table) per hour", + energy::btu_it / hr}, + unitD{"2J", "cubic centimetre per second", cm.pow(3) / s}, + unitD{"2K", "cubic foot per hour", ft.pow(3) / hr}, + unitD{"2L", "cubic foot per minute", ft.pow(3) / min}, + unitD{"2M", "centimetre per second", cm / s}, + unitD{"2N", "decibel", log::dB}, + unitD{"2P", "kilobyte", data::kB}, + unitD{"2Q", "kilobecquerel", kilo* Bq}, + unitD{"2R", "kilocurie", kilo* cgs::curie}, + unitD{"2U", "megagram", mega* g}, + unitD{"2V", "megagram per hour", mega* g / hr}, + unitD{"2W", "bin", {1.0, count, commodities::packaging::bin}}, + unitD{"2X", "metre per minute", m / min}, + unitD{"2Y", "milliroentgen", milli* cgs::roentgen}, + unitD{"2Z", "millivolt", milli* V}, + unitD{ + "30", + "horse power day per air dry metric ton", + hp* day / precise_unit(t, commodities::packaging::dry)}, + unitD{"31", "catch weight", pu* lb}, + unitD{ + "32", + "kilogram per air dry metric ton", + kg / precise_unit(t, commodities::packaging::dry)}, + unitD{"33", "kilopascal square metre per gram", kilo* Pa* m.pow(2) / g}, + unitD{"34", "kilopascal per millimetre", kilo* Pa / mm}, + unitD{ + "35", + "millilitre per square centimetre second", + mL / (cm.pow(2) * s)}, + unitD{ + "36", + "cubic foot per minute per square foot", + ft.pow(3) / min / ft.pow(2)}, + unitD{"37", "ounce per square foot", oz / ft.pow(2)}, + unitD{ + "38", + "ounce per square foot per 0.01inch", + oz / ft.pow(2) / precise_unit(0.01, in)}, + unitD{"3B", "megajoule", mega* J}, + unitD{"3C", "manmonth", {1.0, time::mog, commodities::people}}, + unitD{"3E", "pound per pound of product", pu* lb}, + unitD{"3G", "pound per piece of product", lb / count}, + unitD{"3H", "kilogram per kilogram of product", pu* kg}, + unitD{"3I", "kilogram per piece of product", kg / count}, + unitD{"40", "millilitre per second", mL / s}, + unitD{"41", "millilitre per minute", mL / min}, + unitD{ + "43", + "super bulk bag", + {1.0, count, commodities::packaging::bulk_bag}}, + unitD{ + "44", + "fivehundred kg bulk bag", + {500.0, kg, commodities::packaging::bulk_bag}}, + unitD{ + "45", + "threehundred kg bulk bag", + {300.0, kg, commodities::packaging::bulk_bag}}, + unitD{ + "46", + "fifty lb bulk bag", + {50.0, lb, commodities::packaging::bulk_bag}}, + unitD{"47", "fifty lb bag", {50.0, lb, commodities::packaging::bag}}, + unitD{ + "48", + "bulk car load", + {1.0, count, commodities::packaging::bulk_car}}, + unitD{"4A", "bobbin", {1.0, count, commodities::packaging::bobbin}}, + unitD{"4B", "cap", {1.0, count, commodities::packaging::cap}}, + unitD{"4C", "centistokes", cgs::stokes* centi}, + unitD{"4E", "twenty pack", {20, count}}, + unitD{"4G", "microlitre", micro* L}, + unitD{"4H", "micrometre", micro* m}, + unitD{"4K", "milliampere", milli* A}, + unitD{"4L", "megabyte", data::MB}, + unitD{"4M", "milligram per hour", mg / hr}, + unitD{"4N", "megabecquerel", mega* becquerel}, + unitD{"4O", "microfarad", micro* F}, + unitD{"4P", "newton per metre", N / m}, + unitD{"4Q", "ounce inch", oz* in}, + unitD{"4R", "ounce foot", oz* ft}, + unitD{"4T", "picofarad", pico* F}, + unitD{"4U", "pound per hour", lb / hr}, + unitD{"4W", "ton (US) per hour", ton / hr}, + unitD{"4X", "kilolitre per hour", kilo* L / hr}, + unitD{ + "53", + "theoretical kilogram", + {1.0, kg, commodities::packaging::theoretical}}, + unitD{ + "54", + "theoretical tonne", + {1.0, mass::tonne, commodities::packaging::theoretical}}, + unitD{"56", "sitas", {100.0, m.pow(2)}}, + unitD{"57", "mesh", clinical::mesh}, + unitD{ + "58", + "net kilogram", + {1.0, kg, commodities::packaging::net_quantity}}, + unitD{"59", "part per million", other::ppm}, + unitD{"5A", "barrel (US) per minute", us::barrel / min}, + unitD{"5B", "batch", {1.0, count, commodities::packaging::batch}}, + unitD{"5C", "gallon(US) per thousand", us::gallon / (kilo * count)}, + unitD{"5E", "MMSCF/day", precise::mega* precise::energy::scf / day}, + unitD{"5F", "pound per thousand", lb / (kilo * count)}, + unitD{"5G", "pump", {1.0, count, commodities::packaging::pump}}, + unitD{"5H", "stage", {1.0, count, commodities::packaging::stage}}, + unitD{"5I", "standard cubic foot", ft.pow(3)}, + unitD{"5J", "hydraulic horse power", power::hpS}, + unitD{"5K", "count per minute", count / min}, + unitD{"5P", "seismic level", special::moment_magnitude}, + unitD{"5Q", "seismic line", special::moment_energy}, + unitD{"60", "percent weight", percent* pu* kg}, + unitD{"61", "part per billion", other::ppb}, + unitD{"62", "percent per 1000 hour", percent / (thousand * hr)}, + unitD{ + "63", + "failure rate in time", + {1.0, count / s, commodities::failure}}, + unitD{"64", "pound per square inch, gauge", lbf / in.pow(2)}, + unitD{"66", "oersted", cgs::oersted}, + unitD{"69", "test specific scale", generate_custom_unit(333)}, + unitD{"71", "volt ampere per pound", V* A / lb}, + unitD{"72", "watt per pound", W / lb}, + unitD{ + "73", + "ampere turn per centimetre", + precise::A* precise::count / cm}, + unitD{"74", "millipascal", milli* Pa}, + unitD{"76", "gauss", cgs::gauss}, + unitD{"77", "milli-inch", milli* inch}, + unitD{"78", "kilogauss", kilo* cgs::gauss}, + unitD{"80", "pound per square inch absolute", lb / in.pow(2)}, + unitD{"81", "henry", henry}, + unitD{"84", "kilopound-force per square inch", kilo* lbf / in.pow(2)}, + unitD{"85", "foot pound-force", ft* lbf}, + unitD{"87", "pound per cubic foot", lb / ft.pow(3)}, + unitD{"89", "poise", cgs::poise}, + unitD{"90", "Saybold universal second", {0.2158, mm.pow(2) / s}}, + unitD{"91", "stokes", cgs::stokes}, + unitD{"92", "calorie per cubic centimetre", cal / cm.pow(3)}, + unitD{"93", "calorie per gram", cal / g}, + unitD{"94", "curl unit", generate_custom_unit(335)}, + unitD{ + "95", + "twenty thousand gallon (US) tankcar", + {20000.0, us::gallon, commodities::packaging::tankcar}}, + unitD{ + "96", + "ten thousand gallon (US) tankcar", + {10000.0, us::gallon, commodities::packaging::tankcar}}, + unitD{"97", "ten kg drum", {10.0, kg, commodities::packaging::drum}}, + unitD{ + "98", + "fifteen kg drum", + {15.0, kg, commodities::packaging::drum}}, + unitD{"A1", "calorie(15 degC)", energy::cal_15}, + unitD{ + "A10", + "ampere square metre per joule second", + A* m.pow(2) / (J * s)}, + unitD{"A11", "angstrom", distance::angstrom}, + unitD{"A12", "astronomical unit", distance::au}, + unitD{"A13", "attojoule", atto* J}, + unitD{"A14", "barn", area::barn}, + unitD{"A15", "barn per electronvolt", area::barn / energy::eV}, + unitD{ + "A16", + "barn per steradian electronvolt", + area::barn / (rad.pow(2) * energy::eV)}, + unitD{"A17", "barn per steradian", area::barn / rad.pow(2)}, + unitD{"A18", "becquerel per kilogram", Bq / kg}, + unitD{"A19", "becquerel per cubic metre", Bq / m.pow(3)}, + unitD{"A2", "ampere per centimetre", A / cm}, + unitD{ + "A20", + "British thermal unit (international table) per second square foot degree Rankine", + energy::btu_it / (s * ft.pow(2) * temperature::degR)}, + unitD{ + "A21", + "British thermal unit (international table) per pound degree Rankine", + energy::btu_it / (lb * temperature::degR)}, + unitD{ + "A22", + "British thermal unit (international table) per second foot degree Rankine", + energy::btu_it / (s * ft * temperature::degR)}, + unitD{ + "A23", + "British thermal unit (international table) per hour square foot degree Rankine", + energy::btu_it / (hr * ft.pow(2) * temperature::degR)}, + unitD{"A24", "candela per square metre", cd / m.pow(2)}, + unitD{"A25", "cheval vapeur", power::hpM}, + unitD{"A26", "coulomb metre", C* m}, + unitD{"A27", "coulomb metre squared per volt", C* m.pow(2) / V}, + unitD{"A28", "coulomb per cubic centimetre", C / cm.pow(3)}, + unitD{"A29", "coulomb per cubic metre", C / m.pow(3)}, + unitD{"A3", "ampere per millimetre", A / mm}, + unitD{"A30", "coulomb per cubic millimetre", C / mm.pow(3)}, + unitD{"A31", "coulomb per kilogram second", C / (kg * s)}, + unitD{"A32", "coulomb per mole", C / mol}, + unitD{"A33", "coulomb per square centimetre", C / cm.pow(2)}, + unitD{"A34", "coulomb per square metre", C / m.pow(2)}, + unitD{"A35", "coulomb per square millimetre", C / mm.pow(2)}, + unitD{"A36", "cubic centimetre per mole", cm.pow(3) / mol}, + unitD{"A37", "cubic decimetre per mole", (deci * m).pow(3) / mol}, + unitD{"A38", "cubic metre per coulomb", m.pow(3) / C}, + unitD{"A39", "cubic metre per kilogram", m.pow(3) / kg}, + unitD{"A4", "ampere per square centimetre", A / cm.pow(2)}, + unitD{"A40", "cubic metre per mole", m.pow(3) / mol}, + unitD{"A41", "ampere per square metre", A / m.pow(2)}, + unitD{"A42", "curie per kilogram", cgs::curie / kg}, + unitD{ + "A43", + "deadweight tonnage", + {1.0, mass::tonne, commodities::packaging::deadweight}}, + unitD{"A44", "decalitre", deca* L}, + unitD{"A45", "decametre", deca* m}, + unitD{"A47", "decitex", {0.1, textile::tex}}, + unitD{"A48", "degree Rankine", temperature::degR}, + unitD{"A49", "denier", textile::denier}, + unitD{"A5", "ampere square metre", A* m.pow(2)}, + unitD{ + "A50", + "dyne second per cubic centimetre", + cgs::dyn* s / cm.pow(3)}, + unitD{"A51", "dyne second per centimetre", cgs::dyn* s / cm}, + unitD{ + "A52", + "dyne second per centimetre to the fifth power", + cgs::dyn* s / cm.pow(5)}, + unitD{"A53", "electronvolt", energy::eV}, + unitD{"A54", "electronvolt per metre", energy::eV / m}, + unitD{"A55", "electronvolt square metre", energy::eV* m.pow(2)}, + unitD{ + "A56", + "electronvolt square metre per kilogram", + energy::eV* m.pow(2) / kg}, + unitD{"A57", "erg", cgs::erg}, + unitD{"A58", "erg per centimetre", cgs::erg / cm}, + unitD{ + "A59", + "8-part cloud cover", + {constants::pi / 4, sr, commodities::cloud_cover}}, + unitD{ + "A6", + "ampere per square metre kelvin squared", + A / (m.pow(2) * K.pow(2))}, + unitD{"A60", "erg per cubic centimetre", cgs::erg / cm.pow(3)}, + unitD{"A61", "erg per gram", cgs::erg / g}, + unitD{"A62", "erg per gram second", cgs::erg / (g * s)}, + unitD{"A63", "erg per second", cgs::erg / s}, + unitD{ + "A64", + "erg per second square centimetre", + cgs::erg / (cm.pow(2) * s)}, + unitD{ + "A65", + "erg per square centimetre second", + cgs::erg / (cm.pow(2) * s)}, + unitD{"A66", "erg square centimetre", cgs::erg* cm.pow(2)}, + unitD{"A67", "erg square centimetre per gram", cgs::erg* cm.pow(2) / g}, + unitD{"A68", "exajoule", exa* J}, + unitD{"A69", "farad per metre", F / m}, + unitD{"A7", "ampere per square millimetre", A / mm.pow(2)}, + unitD{"A70", "femtojoule", femto* J}, + unitD{"A71", "femtometre", femto* m}, + unitD{"A73", "foot per second squared", ft / s.pow(2)}, + unitD{"A74", "foot pound-force per second", ft* lbf / s}, + unitD{ + "A75", + "freight ton", + {1.0, ton, commodities::packaging::freight}}, + unitD{"A76", "Gal", cgs::gal}, + unitD{ + "A77", + "Gaussian CGS (Centimetre-Gram-Second system) unit of displacement", + cgs::statC_charge / cm.pow(2)}, + unitD{ + "A78", + "Gaussian CGS (Centimetre-Gram-Second system) unit of electric current", + cgs::statC_flux}, + unitD{ + "A79", + "Gaussian CGS (Centimetre-Gram-Second system) unit of electric charge", + cgs::statC_charge}, + unitD{"A8", "ampere second", A* s}, + unitD{ + "A80", + "Gaussian CGS (Centimetre-Gram-Second system) unit of electric field strength", + cgs::statV / cm}, + unitD{ + "A81", + "Gaussian CGS (Centimetre-Gram-Second system) unit of electric polarization", + cgs::statC_charge* cm}, + unitD{ + "A82", + "Gaussian CGS (Centimetre-Gram-Second system) unit of electric potential", + cgs::statV}, + unitD{ + "A83", + "Gaussian CGS (Centimetre-Gram-Second system) unit of magnetization", + cgs::statT}, + unitD{"A84", "gigacoulomb per cubic metre", giga* C / m.pow(3)}, + unitD{"A85", "gigaelectronvolt", giga* energy::eV}, + unitD{"A86", "gigahertz", giga* Hz}, + unitD{"A87", "gigaohm", giga* ohm}, + unitD{"A88", "gigaohm metre", giga* ohm* m}, + unitD{"A89", "gigapascal", giga* Pa}, + unitD{"A9", "rate", count / s}, + unitD{"A90", "gigawatt", giga* W}, + unitD{"A91", "gon", angle::gon}, + unitD{"A93", "gram per cubic metre", g / m.pow(3)}, + unitD{"A94", "gram per mole", g / mol}, + unitD{"A95", "gray", gray}, + unitD{"A96", "gray per second", gray / s}, + unitD{"A97", "hectopascal", hecto* Pa}, + unitD{"A98", "henry per metre", H / m}, + unitD{"A99", "bit", data::bit}, + unitD{"AA", "ball", {1.0, count, commodities::packaging::ball}}, + unitD{ + "AB", + "bulk pack", + {1.0, count, commodities::packaging::bulk_pack}}, + unitD{"ACR", "acre", acre}, + unitD{"ACT", "activity", count / s}, + unitD{"AD", "byte", data::byte}, + unitD{"AE", "ampere per metre", A / m}, + unitD{"AH", "additional minute", min}, + unitD{ + "AI", + "average minute per call", + min / precise_unit(one, commodities::call)}, + unitD{"AJ", "cop", {1.0, count, commodities::packaging::cop}}, + unitD{"AK", "fathom", nautical::fathom}, + unitD{"AL", "access line", {1.0, count, commodities::linesofservice}}, + unitD{"AM", "ampoule", {1.0, count, commodities::packaging::ampoule}}, + unitD{"AMH", "ampere hour", A* hr}, + unitD{"AMP", "ampere", A}, + unitD{"ANN", "year", yr}, + unitD{"AP", "aluminium pound only", {1.0, lb, commodities::aluminum}}, + unitD{"APZ", "troy ounce", troy::oz}, + unitD{"AQ", "anti-hemophilic factor (AHF) unit", clinical::AHF}, + unitD{ + "AR", + "suppository", + {1.0, count, commodities::packaging::suppository}}, + unitD{"ARE", "are", area::are}, + unitD{ + "AS", + "assortment", + {1.0, count, commodities::packaging::assortment}}, + unitD{ + "ASM", + "alcoholic strength by mass", + {1.0, pu* kg, commodities::ethanol}}, + unitD{ + "ASU", + "alcoholic strength by volume", + {1.0, pu* L, commodities::ethanol}}, + unitD{"ATM", "standard atmosphere", pressure::atm}, + unitD{"ATT", "technical atmosphere", pressure::att}, + unitD{"AV", "capsule", {1.0, count, commodities::packaging::capsule}}, + unitD{ + "AW", + "powder filled vial", + {1.0, count, commodities::packaging::powder_vial}}, + unitD{"AY", "assembly", {1.0, count, commodities::packaging::assembly}}, + unitD{ + "AZ", + "British thermal unit (international table) per pound", + energy::btu_it / lb}, + unitD{"B0", "Btu per cubic foot", btu / ft.pow(3)}, + unitD{"B1", "barrel (US) per day", us::barrel / day}, + unitD{"B10", "bit per second", data::bit / s}, + unitD{"B11", "joule per kilogram kelvin", J / (kg * K)}, + unitD{"B12", "joule per metre", J / m}, + unitD{"B13", "joule per square metre", J / m.pow(2)}, + unitD{"B14", "joule per metre to the fourth power", J / m.pow(4)}, + unitD{"B15", "joule per mole", J / mol}, + unitD{"B16", "joule per mole kelvin", J / (mol * K)}, + unitD{"B17", "credit", {1.0, count, commodities::credit}}, + unitD{"B18", "joule second", J* s}, + unitD{"B19", "digit", data::digits}, + unitD{"B2", "bunk", {1.0, count, commodities::packaging::bunk}}, + unitD{"B20", "joule square metre per kilogram", J* m.pow(2) / kg}, + unitD{"B21", "kelvin per watt", K / W}, + unitD{"B22", "kiloampere", kilo* A}, + unitD{"B23", "kiloampere per square metre", kilo* A / m.pow(2)}, + unitD{"B24", "kiloampere per metre", kilo* A / m}, + unitD{"B25", "kilobecquerel per kilogram", kilo* Bq / kg}, + unitD{"B26", "kilocoulomb", kilo* C}, + unitD{"B27", "kilocoulomb per cubic metre", kilo* C / m.pow(3)}, + unitD{"B28", "kilocoulomb per square metre", kilo* C / m.pow(2)}, + unitD{"B29", "kiloelectronvolt", kilo* energy::eV}, + unitD{"B3", "batting pound", {1.0, lb, commodities::fiber}}, + unitD{"B30", "gibibit", gibi* data::bit}, + unitD{"B31", "kilogram metre per second", kg* m / s}, + unitD{"B32", "kilogram metre squared", kg* m.pow(2)}, + unitD{"B33", "kilogram metre squared per second", kg* m.pow(2) / s}, + unitD{"B34", "kilogram per cubic decimetre", kg / (deci * m).pow(3)}, + unitD{"B35", "kilogram per litre", kg / L}, + unitD{"B36", "calorie (thermochemical) per gram", energy::cal_th / g}, + unitD{"B37", "kilogram-force", kg* constants::g0.as_unit()}, + unitD{"B38", "kilogram-force metre", kg* constants::g0.as_unit() * m}, + unitD{ + "B39", + "kilogram-force metre per second", + kg* constants::g0.as_unit() * m / s}, + unitD{"B4", "barrel, imperial", imp::winebarrel}, + unitD{ + "B40", + "kilogram-force per square metre", + kg* constants::g0.as_unit() / m.pow(2)}, + unitD{"B41", "kilojoule per kelvin", kilo* J / K}, + unitD{"B42", "kilojoule per kilogram", kilo* J / kg}, + unitD{"B43", "kilojoule per kilogram kelvin", kilo* J / (kg * K)}, + unitD{"B44", "kilojoule per mole", kilo* J / mol}, + unitD{"B45", "kilomole", kilo* mol}, + unitD{"B46", "kilomole per cubic metre", kilo* mol / m.pow(3)}, + unitD{"B47", "kilonewton", kilo* N}, + unitD{"B48", "kilonewton metre", kilo* N* m}, + unitD{"B49", "kiloohm", kilo* ohm}, + unitD{"B5", "billet", {1.0, count, commodities::packaging::billet}}, + unitD{"B50", "kiloohm metre", kilo* ohm* m}, + unitD{"B51", "kilopond", kilo* gm::pond}, + unitD{"B52", "kilosecond", kilo* s}, + unitD{"B53", "kilosiemens", kilo* S}, + unitD{"B54", "kilosiemens per metre", kilo* S / m}, + unitD{"B55", "kilovolt per metre", kilo* V / m}, + unitD{"B56", "kiloweber per metre", kilo* weber / m}, + unitD{"B57", "light year", distance::ly}, + unitD{"B58", "litre per mole", L / mol}, + unitD{"B59", "lumen hour", lm* hr}, + unitD{"B6", "bun", milli* mol / L}, + unitD{"B60", "lumen per square metre", lm / m.pow(2)}, + unitD{"B61", "lumen per watt", lm / W}, + unitD{"B62", "lumen second", lm* s}, + unitD{"B63", "lux hour", lux* hr}, + unitD{"B64", "lux second", lux* s}, + unitD{"B65", "maxwell", cgs::maxwell}, + unitD{"B66", "megaampere per square metre", mega* A / m.pow(2)}, + unitD{"B67", "megabecquerel per kilogram", mega* Bq / kg}, + unitD{"B68", "gigabit", giga* data::bit}, + unitD{"B69", "megacoulomb per cubic metre", mega* C / m.pow(3)}, + unitD{"B7", "cycle", {constants::tau, rad}}, + unitD{"B70", "megacoulomb per square metre", mega* C / m.pow(2)}, + unitD{"B71", "megaelectronvolt", mega* energy::eV}, + unitD{"B72", "megagram per cubic metre", mega* g / m.pow(3)}, + unitD{"B73", "meganewton", mega* N}, + unitD{"B74", "meganewton metre", mega* N* m}, + unitD{"B75", "megaohm", mega* ohm}, + unitD{"B76", "megaohm metre", mega* ohm* m}, + unitD{"B77", "megasiemens per metre", mega* S / m}, + unitD{"B78", "megavolt", mega* V}, + unitD{"B79", "megavolt per metre", mega* V / m}, + unitD{"B8", "joule per cubic metre", J / m.pow(3)}, + unitD{"B80", "gigabit per second", giga* data::bit / s}, + unitD{ + "B81", + "reciprocal metre squared reciprocal second", + m.pow(-2) * s.inv()}, + unitD{ + "B82", + "inch per linear foot", + in / precise_unit(1.0, ft, commodities::packaging::linear)}, + unitD{"B83", "metre to the fourth power", m.pow(4)}, + unitD{"B84", "microampere", micro* A}, + unitD{"B85", "microbar", micro* bar}, + unitD{"B86", "microcoulomb", micro* C}, + unitD{"B87", "microcoulomb per cubic metre", micro* C / m.pow(3)}, + unitD{"B88", "microcoulomb per square metre", micro* C / m.pow(2)}, + unitD{"B89", "microfarad per metre", micro* F / m}, + unitD{"B9", "batt", {1.0, count, commodities::packaging::batt}}, + unitD{"B90", "microhenry", micro* H}, + unitD{"B91", "microhenry per metre", micro* H / m}, + unitD{"B92", "micronewton", micro* N}, + unitD{"B93", "micronewton metre", micro* N* m}, + unitD{"B94", "microohm", micro* ohm}, + unitD{"B95", "microohm metre", micro* ohm* m}, + unitD{"B96", "micropascal", micro* Pa}, + unitD{"B97", "microradian", micro* rad}, + unitD{"B98", "microsecond", micro* s}, + unitD{"B99", "microsiemens", micro* S}, + unitD{"BAR", "bar [unit of pressure]", bar}, + unitD{"BB", "base box", {1.0, count, commodities::packaging::base_box}}, + unitD{"BD", "board", {1.0, count, commodities::packaging::board}}, + unitD{"BE", "bundle", {1.0, count, commodities::packaging::bundle}}, + unitD{"BFT", "board foot", i::board_foot}, + unitD{"BG", "bag", {1.0, count, commodities::packaging::bag}}, + unitD{"BH", "brush", {1.0, count, commodities::packaging::brush}}, + unitD{"BHP", "brake horse power", power::hpM}, + unitD{"BIL", "billion (EUR)", tera* count}, + unitD{"BJ", "bucket", {1.0, count, commodities::packaging::bucket}}, + unitD{"BK", "basket", {1.0, count, commodities::packaging::basket}}, + unitD{"BL", "bale", {1.0, count, commodities::packaging::bale}}, + unitD{"BLD", "dry barrel (US)", us::dry::barrel}, + unitD{"BLL", "barrel (US)", us::barrel}, + unitD{"BO", "bottle", {1.0, count, commodities::packaging::bottle}}, + unitD{"BP", "hundred board foot", hundred* i::board_foot}, + unitD{"BQL", "becquerel", Bq}, + unitD{ + "BR", + "bar [unit of packaging]", + {1.0, count, commodities::packaging::bar}}, + unitD{"BT", "bolt", {1.0, count, commodities::packaging::bolt}}, + unitD{ + "BTU", + "British thermal unit (international table)", + energy::btu_it}, + unitD{"BUA", "bushel (US)", us::dry::bushel}, + unitD{"BUI", "bushel (UK)", imp::bushel}, + unitD{"BW", "base weight", kg}, + unitD{"BX", "box", {1.0, count, commodities::packaging::box}}, + unitD{"BZ", "million BTUs", mega* btu}, + unitD{"C0", "call", {1.0, count, commodities::call}}, + unitD{ + "C1", + "composite product pound (total weight)", + {1.0, lb, commodities::packaging::composite}}, + unitD{"C10", "millifarad", milli* F}, + unitD{"C11", "milliGal", milli* cgs::gal}, + unitD{"C12", "milligram per metre", mg / m}, + unitD{"C13", "milligray", milli* gray}, + unitD{"C14", "millihenry", milli* H}, + unitD{"C15", "millijoule", milli* J}, + unitD{"C16", "millimetre per second", mm / s}, + unitD{"C17", "millimetre squared per second", mm.pow(2) / s}, + unitD{"C18", "millimole", milli* mol}, + unitD{"C19", "mole per kilogram", mol / kg}, + unitD{"C2", "carset", {1.0, count, commodities::packaging::carset}}, + unitD{"C20", "millinewton", milli* N}, + unitD{"C21", "kibibit", kibi* data::bit}, + unitD{"C22", "millinewton per metre", milli* N / m}, + unitD{"C23", "milliohm metre", milli* ohm* m}, + unitD{"C24", "millipascal second", milli* Pa* s}, + unitD{"C25", "milliradian", milli* rad}, + unitD{"C26", "millisecond", milli* s}, + unitD{"C27", "millisiemens", milli* S}, + unitD{"C28", "millisievert", milli* sievert}, + unitD{"C29", "millitesla", milli* T}, + unitD{"C3", "microvolt per metre", micro* V / m}, + unitD{"C30", "millivolt per metre", milli* V / m}, + unitD{"C31", "milliwatt", milli* watt}, + unitD{"C32", "milliwatt per square metre", milli* W / m.pow(2)}, + unitD{"C33", "milliweber", milli* weber}, + unitD{"C34", "mole", mol}, + unitD{"C35", "mole per cubic decimetre", mol / (deci * m).pow(3)}, + unitD{"C36", "mole per cubic metre", mol / m.pow(3)}, + unitD{"C37", "kilobit", kilo* data::bit}, + unitD{"C38", "mole per litre", mol / L}, + unitD{"C39", "nanoampere", nano* A}, + unitD{"C4", "carload", {1.0, count, commodities::packaging::car}}, + unitD{"C40", "nanocoulomb", nano* C}, + unitD{"C41", "nanofarad", nano* F}, + unitD{"C42", "nanofarad per metre", nano* F / m}, + unitD{"C43", "nanohenry", nano* H}, + unitD{"C44", "nanohenry per metre", nano* H / m}, + unitD{"C45", "nanometre", nano* m}, + unitD{"C46", "nanoohm metre", nano* ohm* m}, + unitD{"C47", "nanosecond", nano* s}, + unitD{"C48", "nanotesla", nano* T}, + unitD{"C49", "nanowatt", nano* W}, + unitD{"C5", "cost", {1.0, currency, commodities::packaging::actual}}, + unitD{"C50", "neper", log::neper}, + unitD{"C51", "neper per second", log::neper / s}, + unitD{"C52", "picometre", pico* m}, + unitD{"C53", "newton metre second", N* m* s}, + unitD{ + "C54", + "newton metre squared per kilogram squared", + N* m.pow(2) / kg.pow(2)}, + unitD{"C55", "newton per square metre", N / m.pow(2)}, + unitD{"C56", "newton per square millimetre", N / mm.pow(2)}, + unitD{"C57", "newton second", N* s}, + unitD{"C58", "newton second per metre", N* s / m}, + unitD{"C59", "octave", log::logbase2}, + unitD{"C6", "cell", {1.0, count, commodities::packaging::cell}}, + unitD{"C60", "ohm centimetre", ohm* cm}, + unitD{"C61", "ohm metre", ohm* m}, + unitD{"C62", "one", count}, + unitD{"C63", "parsec", distance::parsec}, + unitD{"C64", "pascal per kelvin", Pa / K}, + unitD{"C65", "pascal second", Pa* s}, + unitD{"C66", "pascal second per cubic metre", Pa* s / m.pow(3)}, + unitD{"C67", "pascal second per metre", Pa* s / m}, + unitD{"C68", "petajoule", peta* J}, + unitD{"C69", "phon", generate_custom_unit(41)}, + unitD{"C7", "centipoise", centi* cgs::poise}, + unitD{"C70", "picoampere", pico* A}, + unitD{"C71", "picocoulomb", pico* C}, + unitD{"C72", "picofarad per metre", pico* F / m}, + unitD{"C73", "picohenry", pico* H}, + unitD{"C74", "kilobit per second", kilo* data::bit / s}, + unitD{"C75", "picowatt", pico* W}, + unitD{"C76", "picowatt per square metre", pico* W / m.pow(2)}, + unitD{"C77", "pound gage", lb* eflag}, + unitD{"C78", "pound-force", lbf}, + unitD{"C79", "kilovolt ampere hour", kilo* V* A* hr}, + unitD{"C8", "millicoulomb per kilogram", milli* C / kg}, + unitD{"C80", "RAD", cgs::RAD}, + unitD{"C81", "radian", rad}, + unitD{"C82", "radian square metre per mole", rad* m.pow(2) / mol}, + unitD{"C83", "radian square metre per kilogram", rad* m.pow(2) / kg}, + unitD{"C84", "radian per metre", rad / m}, + unitD{"C85", "reciprocal angstrom", distance::angstrom.inv()}, + unitD{"C86", "reciprocal cubic metre", m.pow(-3)}, + unitD{"C87", "reciprocal cubic metre per second", m.pow(-3) / s}, + unitD{ + "C88", + "reciprocal electron volt per cubic metre", + energy::eV.inv() / m.pow(3)}, + unitD{"C89", "reciprocal henry", H.inv()}, + unitD{ + "C9", + "coil group", + {1.0, count, commodities::packaging::coil_group}}, + unitD{"C90", "reciprocal joule per cubic metre", J.inv() / m.pow(3)}, + unitD{ + "C91", + "reciprocal kelvin or kelvin to the power minus one", + K.inv()}, + unitD{"C92", "reciprocal metre", m.inv()}, + unitD{"C93", "reciprocal square metre", m.pow(-2)}, + unitD{"C94", "reciprocal minute", min.inv()}, + unitD{"C95", "reciprocal mole", mol.inv()}, + unitD{ + "C96", + "reciprocal pascal or pascal to the power minus one", + Pa.inv()}, + unitD{"C97", "reciprocal second", s.inv()}, + unitD{"C98", "reciprocal second per cubic metre", s.inv() / m.pow(3)}, + unitD{"C99", "reciprocal second per metre squared", s.inv() / m.pow(2)}, + unitD{"CA", "can", {1.0, count, commodities::packaging::can}}, + unitD{ + "CCT", + "carrying capacity in metric ton", + {1.0, t, commodities::packaging::capacity}}, + unitD{"CDL", "candela", cd}, + unitD{"CEL", "degree Celsius", degC}, + unitD{"CEN", "hundred", hundred* count}, + unitD{"CG", "card", {1.0, count, commodities::packaging::card}}, + unitD{"CGM", "centigram", centi* g}, + unitD{ + "CH", + "container", + {1.0, count, commodities::packaging::container}}, + unitD{"CJ", "cone", {1.0, count, commodities::packaging::cone}}, + unitD{ + "CK", + "connector", + {1.0, count, commodities::packaging::connector}}, + unitD{"CKG", "coulomb per kilogram", C / kg}, + unitD{"CL", "coil", {1.0, count, commodities::packaging::coil}}, + unitD{ + "CLF", + "hundred leave", + {100.0, count, commodities::packaging::leave}}, + unitD{"CLT", "centilitre", centi* L}, + unitD{"CMK", "square centimetre", cm.pow(2)}, + unitD{"CMQ", "cubic centimetre", cm.pow(3)}, + unitD{"CMT", "centimetre", cm}, + unitD{"CNP", "hundred pack", hundred* count}, + unitD{"CNT", "cental (UK)", imp::hundredweight}, + unitD{"CO", "carboy", {1.0, count, commodities::packaging::carboy}}, + unitD{"COU", "coulomb", C}, + unitD{ + "CQ", + "cartridge", + {1.0, count, commodities::packaging::cartridge}}, + unitD{"CR", "crate", {1.0, count, commodities::packaging::crate}}, + unitD{"CS", "case", {1.0, count, commodities::packaging::small_case}}, + unitD{"CT", "carton", {1.0, count, commodities::packaging::carton}}, + unitD{"CTG", "content gram", g}, + unitD{"CTM", "metric carat", metric::carat}, + unitD{"CTN", "content ton (metric)", t}, + unitD{"CU", "cup", us::cup}, + unitD{"CUR", "curie", cgs::curie}, + unitD{"CV", "cover", {1.0, count, commodities::packaging::cover}}, + unitD{ + "CWA", + "hundred pound (cwt) / hundred weight (US)", + av::hundredweight}, + unitD{"CWI", "hundred weight (UK)", av::longhundredweight}, + unitD{"CY", "cylinder", {1.0, count, commodities::packaging::cylinder}}, + unitD{"CZ", "combo", {1.0, count, commodities::packaging::combo}}, + unitD{"D03", "kilowatt hour per hour", energy::kWh / hr}, + unitD{ + "D04", + "lot [unit of weight]", + {1.0, count, commodities::packaging::lot}}, + unitD{"D1", "reciprocal second per steradian", s.inv() / rad.pow(2)}, + unitD{"D10", "siemens per metre", S / m}, + unitD{"D11", "mebibit", mebi* data::bit}, + unitD{"D12", "siemens square metre per mole", S* m.pow(2) / mol}, + unitD{"D13", "sievert", sievert}, + unitD{ + "D14", + "thousand linear yard", + {1000.0, yd, commodities::packaging::linear}}, + unitD{"D15", "sone", precise::special::sone}, + unitD{"D16", "square centimetre per erg", cm.pow(2) / cgs::erg}, + unitD{ + "D17", + "square centimetre per steradian erg", + cm.pow(2) / (rad.pow(2) * cgs::erg)}, + unitD{"D18", "metre kelvin", m* K}, + unitD{"D19", "square metre kelvin per watt", m.pow(2) * K / W}, + unitD{ + "D2", + "reciprocal second per steradian metre squared", + s.inv() / (rad.pow(2) * m.pow(2))}, + unitD{"D20", "square metre per joule", m.pow(2) / J}, + unitD{"D21", "square metre per kilogram", m.pow(2) / kg}, + unitD{"D22", "square metre per mole", m.pow(2) / mol}, + unitD{ + "D23", + "pen gram (protein)", + precise_unit(g, commodities::protein)}, + unitD{"D24", "square metre per steradian", m.pow(2) / rad.pow(2)}, + unitD{ + "D25", + "square metre per steradian joule", + m.pow(2) / (J * rad.pow(2))}, + unitD{"D26", "square metre per volt second", m.pow(2) / (V * s)}, + unitD{"D27", "steradian", rad.pow(2)}, + unitD{"D28", "syphon", {1.0, count, commodities::packaging::syphon}}, + unitD{"D29", "terahertz", tera* Hz}, + unitD{"D30", "terajoule", tera* J}, + unitD{"D31", "terawatt", tera* W}, + unitD{"D32", "terawatt hour", tera* W* hr}, + unitD{"D33", "tesla", tesla}, + unitD{"D34", "tex", textile::tex}, + unitD{"D35", "calorie (thermochemical)", energy::cal_th}, + unitD{"D36", "megabit", mega* data::bit}, + unitD{ + "D37", + "calorie (thermochemical) per gram kelvin", + energy::cal_th / (g * K)}, + unitD{ + "D38", + "calorie (thermochemical) per second centimetre kelvin", + energy::cal_th / (s * cm * K)}, + unitD{ + "D39", + "calorie (thermochemical) per second square centimetre kelvin", + energy::cal_th / (s * cm.pow(2) * K)}, + unitD{"D40", "thousand litre", thousand* L}, + unitD{"D41", "tonne per cubic metre", t / m.pow(3)}, + unitD{"D42", "tropical year", time::at}, + unitD{"D43", "unified atomic mass unit", mass::u}, + unitD{"D44", "var", electrical::VAR}, + unitD{"D45", "volt squared per kelvin squared", V.pow(2) / K.pow(2)}, + unitD{"D46", "volt - ampere", V* A}, + unitD{"D47", "volt per centimetre", V / cm}, + unitD{"D48", "volt per kelvin", V / K}, + unitD{"D49", "millivolt per kelvin", milli* V / K}, + unitD{"D5", "kilogram per square centimetre", kg / cm.pow(2)}, + unitD{"D50", "volt per metre", V / m}, + unitD{"D51", "volt per millimetre", V / mm}, + unitD{"D52", "watt per kelvin", W / K}, + unitD{"D53", "watt per metre kelvin", W / (m * K)}, + unitD{"D54", "watt per square metre", W / m.pow(2)}, + unitD{"D55", "watt per square metre kelvin", W / (m.pow(2) * K)}, + unitD{ + "D56", + "watt per square metre kelvin to the fourth power", + W* K.pow(-4) / m.pow(2)}, + unitD{"D57", "watt per steradian", W / rad.pow(2)}, + unitD{ + "D58", + "watt per steradian square metre", + W / (rad.pow(2) * m.pow(2))}, + unitD{"D59", "weber per metre", Wb / m}, + unitD{"D6", "roentgen per second", cgs::roentgen / s}, + unitD{"D60", "weber per millimetre", Wb / mm}, + unitD{"D61", "minute [unit of angle]", angle::arcmin}, + unitD{"D62", "second [unit of angle]", angle::arcsec}, + unitD{"D63", "book", {1.0, count, commodities::packaging::book}}, + unitD{"D64", "block", {1.0, count, commodities::packaging::block}}, + unitD{"D65", "round", {1.0, count, commodities::packaging::round}}, + unitD{ + "D66", + "cassette", + {1.0, count, commodities::packaging::cassette}}, + unitD{"D67", "dollar per hour", currency / hr}, + unitD{"D68", "number of words", {1.0, count, commodities::word}}, + unitD{"D69", "inch to the fourth power", in.pow(4)}, + unitD{ + "D7", + "sandwich", + {1.0, + count, + commodities::generateHarmonizedCode(19, 05, 90, 80, false)}}, + unitD{"D70", "calorie (international table)", energy::cal_it}, + unitD{ + "D71", + "calorie (international table) per second centimetre kelvin", + energy::cal_it / (s * cm * K)}, + unitD{ + "D72", + "calorie (international table) per second square centimetre kelvin", + energy::cal_it / (s * cm.pow(2) * K)}, + unitD{"D73", "joule square metre", J* m.pow(2)}, + unitD{"D74", "kilogram per mole", kg / mol}, + unitD{ + "D75", + "calorie (international table) per gram", + energy::cal_it / g}, + unitD{ + "D76", + "calorie (international table) per gram kelvin", + energy::cal_it / (g * K)}, + unitD{"D77", "megacoulomb", mega* C}, + unitD{"D78", "megajoule per second", mega* J / s}, + unitD{"D79", "beam", {1.0, count, commodities::packaging::beam}}, + unitD{"D8", "draize score", generate_custom_unit(341)}, + unitD{"D80", "microwatt", micro* W}, + unitD{"D81", "microtesla", micro* T}, + unitD{"D82", "microvolt", micro* V}, + unitD{"D83", "millinewton metre", milli* N* m}, + unitD{"D85", "microwatt per square metre", micro* W / m.pow(2)}, + unitD{"D86", "millicoulomb", milli* C}, + unitD{"D87", "millimole per kilogram", milli* mol / kg}, + unitD{"D88", "millicoulomb per cubic metre", milli* C / m.pow(3)}, + unitD{"D89", "millicoulomb per square metre", milli* C / m.pow(2)}, + unitD{"D9", "dyne per square centimetre", cgs::dyn / cm.pow(2)}, + unitD{"D90", "cubic metre (net)", m.pow(3)}, + unitD{"D91", "rem", cgs::REM}, + unitD{"D92", "band", {1.0, count, commodities::packaging::band}}, + unitD{"D93", "second per cubic metre", s / m.pow(3)}, + unitD{"D94", "second per cubic metre radian", s / (m.pow(3) * rad)}, + unitD{"D95", "joule per gram", J / g}, + unitD{"D96", "pound gross", lb}, + unitD{ + "D97", + "pallet/unit load", + {1.0, count, commodities::packaging::pallet}}, + unitD{"D98", "mass pound", lb}, + unitD{"D99", "sleeve", {1.0, count, commodities::packaging::sleeve}}, + unitD{"DAA", "decare", ten* area::are}, + unitD{"DAD", "ten day", ten* day}, + unitD{"DAY", "day", day}, + unitD{"DB", "dry pound", {1.0, lb, commodities::packaging::dry}}, + unitD{"DC", "disk (disc)", {1.0, count, commodities::packaging::disk}}, + unitD{"DD", "degree", deg}, + unitD{"DE", "deal", {1.0, count, commodities::packaging::deal}}, + unitD{"DEC", "decade", ten* yr}, + unitD{"DG", "decigram", deci* g}, + unitD{ + "DI", + "dispenser", + {1.0, count, commodities::packaging::dispenser}}, + unitD{"DJ", "decagram", deca* g}, + unitD{"DLT", "decilitre", deci* L}, + unitD{"DMA", "cubic decametre", (deca * m).pow(3)}, + unitD{"DMK", "square decimetre", (deci * m).pow(2)}, + unitD{"DMO", "standard kilolitre", kilo* L}, + unitD{"DMQ", "cubic decimetre", (deci * m).pow(3)}, + unitD{"DMT", "decimetre", deci* m}, + unitD{"DN", "decinewton metre", deci* N* m}, + unitD{ + "DPC", + "dozen piece", + {12.0, count, commodities::packaging::piece}}, + unitD{"DPR", "dozen pair", precise_unit(24.0, count)}, + unitD{ + "DPT", + "displacement tonnage", + {1.0, ton, commodities::packaging::displacement}}, + unitD{"DQ", "data record", {1.0, count, commodities::record}}, + unitD{"DR", "drum", {1.0, count, commodities::packaging::drum}}, + unitD{"DRA", "dram (US)", apothecaries::drachm}, + unitD{"DRI", "dram mass (UK)", av::dram}, + unitD{"DRL", "dozen roll", {12.0, count, commodities::packaging::roll}}, + unitD{"DRM", "drachm (UK)", imp::drachm}, + unitD{"DS", "display", {1.0, count, commodities::packaging::display}}, + unitD{"DT", "dry ton", {1.0, ton, commodities::packaging::dry}}, + unitD{"DTN", "decitonne", deci* t}, + unitD{"DU", "dyne", cgs::dyn}, + unitD{"DWT", "pennyweight", troy::pennyweight}, + unitD{"DX", "dyne per centimetre", cgs::dyn / cm}, + unitD{ + "DY", + "directory book", + {1.0, count, commodities::packaging::book}}, + unitD{"DZN", "dozen", {12, count}}, + unitD{"DZP", "dozen pack", {12.0, count, commodities::packaging::pack}}, + unitD{"E01", "newton per square centimetre", N / cm.pow(2)}, + unitD{"E07", "megawatt hour per hour", electrical::MW* hr / hr}, + unitD{"E08", "megawatt per hertz", electrical::MW / Hz}, + unitD{"E09", "milliampere hour", milli* A* hr}, + unitD{"E10", "degree day", deg* day}, + unitD{"E11", "gigacalorie", giga* energy::cal_it}, + unitD{"E12", "mille", {1000.0, count, commodities::cigarette}}, + unitD{"E14", "kilocalorie (international table)", kilo* energy::cal_it}, + unitD{ + "E15", + "kilocalorie (thermochemical) per hour", + kilo* energy::cal_th / hr}, + unitD{"E16", "million Btu(IT) per hour", mega* energy::btu_it / hr}, + unitD{"E17", "cubic foot per second", ft.pow(3) / s}, + unitD{"E18", "tonne per hour", t / hr}, + unitD{"E19", "ping", {3.305, m.pow(2)}}, + unitD{"E2", "belt", {1.0, count, commodities::packaging::belt}}, + unitD{"E20", "megabit per second", mega* data::bit / s}, + unitD{ + "E21", + "shares", + {1.0, count, commodities::generateShareCode(" ")}}, + unitD{"E22", "TEU", {20.0 * 8.0 * 8.5, precise::ft.pow(3)}}, + unitD{"E23", "tyre", {1.0, count, commodities::tires}}, + unitD{"E25", "active unit", count* pu}, + unitD{"E27", "dose", {1.0, count, commodities::packaging::dose}}, + unitD{"E28", "air dry ton", {1.0, ton, commodities::packaging::dry}}, + unitD{"E3", "trailer", {1.0, ton, commodities::packaging::trailer}}, + unitD{"E30", "strand", {1.0, ton, commodities::packaging::strand}}, + unitD{"E31", "square metre per litre", m.pow(2) / L}, + unitD{"E32", "litre per hour", L / hr}, + unitD{"E33", "foot per thousand", ft / (thousand * count)}, + unitD{"E34", "gigabyte", giga* data::byte}, + unitD{"E35", "terabyte", tera* data::byte}, + unitD{"E36", "petabyte", peta* data::byte}, + unitD{"E37", "pixel", {1.0, count, commodities::pixel}}, + unitD{"E38", "megapixel", {1.0, mega* count, commodities::pixel}}, + unitD{"E39", "dots per inch", {1.0, count / in, commodities::dots}}, + unitD{ + "E4", + "gross kilogram", + {1.0, kg, commodities::packaging::gross_quantity}}, + unitD{"E40", "part per hundred thousand", count / (hundred * thousand)}, + unitD{ + "E41", + "kilogram-force per square millimetre", + precise::kilo* precise::gm::pond / mm.pow(2)}, + unitD{ + "E42", + "kilogram-force per square centimetre", + precise::kilo* precise::gm::pond / cm.pow(2)}, + unitD{"E43", "joule per square centimetre", J / cm.pow(2)}, + unitD{ + "E44", + "kilogram-force metre per square centimetre", + precise::kilo* precise::gm::pond* m / cm.pow(2)}, + unitD{"E45", "milliohm", milli* ohm}, + unitD{"E46", "kilowatt hour per cubic metre", kilo* W* hr / m.pow(3)}, + unitD{"E47", "kilowatt hour per kelvin", kilo* W* hr / K}, + unitD{"E48", "service unit", {1.0, count, commodities::service}}, + unitD{"E49", "working day", {1.0, day, commodities::labor}}, + unitD{"E5", "metric long ton", av::longton}, + unitD{"E50", "accounting unit", {1.0, count, commodities::accounting}}, + unitD{"E51", "job", {1.0, count, commodities::job}}, + unitD{"E52", "run foot", {1.0, ft, commodities::packaging::run}}, + unitD{"E53", "test", {1.0, count, commodities::test}}, + unitD{"E54", "trip", {1.0, count, commodities::trip}}, + unitD{"E55", "use", {1.0, count, commodities::use}}, + unitD{"E56", "well", {1.0, count, commodities::packaging::well}}, + unitD{"E57", "zone", {1.0, count, commodities::packaging::zone}}, + unitD{"E58", "exabit per second", exa* data::bit / s}, + unitD{"E59", "exbibyte", exbi* data::byte}, + unitD{"E60", "pebibyte", pebi* data::byte}, + unitD{"E61", "tebibyte", tebi* data::byte}, + unitD{"E62", "gibibyte", gibi* data::byte}, + unitD{"E63", "mebibyte", mebi* data::byte}, + unitD{"E64", "kibibyte", kibi* data::byte}, + unitD{"E65", "exbibit per metre", exbi* data::bit / m}, + unitD{"E66", "exbibit per square metre", exbi* data::bit / m.pow(2)}, + unitD{"E67", "exbibit per cubic metre", exbi* data::bit / m.pow(3)}, + unitD{"E68", "gigabyte per second", giga* data::byte / s}, + unitD{"E69", "gibibit per metre", gibi* data::bit / m}, + unitD{"E70", "gibibit per square metre", gibi* data::bit / m.pow(2)}, + unitD{"E71", "gibibit per cubic metre", gibi* data::bit / m.pow(3)}, + unitD{"E72", "kibibit per metre", kibi* data::bit / m}, + unitD{"E73", "kibibit per square metre", kibi* data::bit / m.pow(2)}, + unitD{"E74", "kibibit per cubic metre", kibi* data::bit / m.pow(3)}, + unitD{"E75", "mebibit per metre", mebi* data::bit / m}, + unitD{"E76", "mebibit per square metre", mebi* data::bit / m.pow(2)}, + unitD{"E77", "mebibit per cubic metre", mebi* data::bit / m.pow(3)}, + unitD{"E78", "petabit", peta* data::bit}, + unitD{"E79", "petabit per second", peta* data::bit / s}, + unitD{"E80", "pebibit per metre", pebi* data::bit / m}, + unitD{"E81", "pebibit per square metre", pebi* data::bit / m.pow(2)}, + unitD{"E82", "pebibit per cubic metre", pebi* data::bit / m.pow(3)}, + unitD{"E83", "terabit", tera* data::bit}, + unitD{"E84", "terabit per second", tera* data::bit / s}, + unitD{"E85", "tebibit per metre", tebi* data::bit / m}, + unitD{"E86", "tebibit per cubic metre", tebi* data::bit / m.pow(3)}, + unitD{"E87", "tebibit per square metre", tebi* data::bit / m.pow(2)}, + unitD{"E88", "bit per metre", data::bit / m}, + unitD{"E89", "bit per square metre", data::bit / m.pow(2)}, + unitD{"E90", "reciprocal centimetre", cm.inv()}, + unitD{"E91", "reciprocal day", day.inv()}, + unitD{"E92", "cubic decimetre per hour", (deci * m).pow(3) / hr}, + unitD{"E93", "kilogram per hour", kg / hr}, + unitD{"E94", "kilomole per second", kilo* mol / s}, + unitD{"E95", "mole per second", mol / s}, + unitD{"E96", "degree per second", deg / s}, + unitD{"E97", "millimetre per degree Celcius metre", mm / (degC * m)}, + unitD{"E98", "degree Celsius per kelvin", degC / K}, + unitD{"E99", "hectopascal per bar", hecto* Pa / bar}, + unitD{"EA", "each", one}, + unitD{ + "EB", + "electronic mail box", + {1.0, count, commodities::electronic_mail_box}}, + unitD{"EC", "each per month", one / time::moj}, + unitD{"EP", "eleven pack", {11, one}}, + unitD{"EQ", "equivalent gallon", gal}, + unitD{"EV", "envelope", {1.0, count, commodities::packaging::envelope}}, + unitD{"F01", "bit per cubic metre", data::bit / m.pow(3)}, + unitD{"F02", "kelvin per kelvin", pu* K}, + unitD{"F03", "kilopascal per bar", kilo* Pa / bar}, + unitD{"F04", "millibar per bar", milli* pu* bar}, + unitD{"F05", "megapascal per bar", mega* Pa / bar}, + unitD{"F06", "poise per bar", cgs::poise / bar}, + unitD{"F07", "pascal per bar", Pa / bar}, + unitD{"F08", "milliampere per inch", milli* A / in}, + unitD{"F1", "thousand cubic foot per day", {1000.0, ft.pow(3) / day}}, + unitD{"F10", "kelvin per hour", K / hr}, + unitD{"F11", "kelvin per minute", K / min}, + unitD{"F12", "kelvin per second", K / s}, + unitD{"F13", "slug", imp::slug}, + unitD{"F14", "gram per kelvin", g / K}, + unitD{"F15", "kilogram per kelvin", kg / K}, + unitD{"F16", "milligram per kelvin", mg / K}, + unitD{"F17", "pound-force per foot", lbf / ft}, + unitD{"F18", "kilogram square centimetre", kg* cm.pow(2)}, + unitD{"F19", "kilogram square millimetre", kg* mm.pow(2)}, + unitD{"F20", "pound inch squared", lb* in.pow(2)}, + unitD{"F21", "pound-force inch", lbf* in}, + unitD{"F22", "pound-force foot per ampere", lbf* ft / A}, + unitD{"F23", "gram per cubic decimetre", g / ((deci * m).pow(3))}, + unitD{"F24", "kilogram per kilomol", g / mol}, + unitD{"F25", "gram per hertz", g / Hz}, + unitD{"F26", "gram per day", g / day}, + unitD{"F27", "gram per hour", g / hr}, + unitD{"F28", "gram per minute", g / min}, + unitD{"F29", "gram per second", g / s}, + unitD{"F30", "kilogram per day", kg / day}, + unitD{"F31", "kilogram per minute", kg / min}, + unitD{"F32", "milligram per day", mg / day}, + unitD{"F33", "milligram per minute", mg / min}, + unitD{"F34", "milligram per second", mg / s}, + unitD{"F35", "gram per day kelvin", g / (day * K)}, + unitD{"F36", "gram per hour kelvin", g / (hr * K)}, + unitD{"F37", "gram per minute kelvin", g / (min * K)}, + unitD{"F38", "gram per second kelvin", g / (s * K)}, + unitD{"F39", "kilogram per day kelvin", kg / (day * K)}, + unitD{"F40", "kilogram per hour kelvin", kg / (hr * K)}, + unitD{"F41", "kilogram per minute kelvin", kg / (min * K)}, + unitD{"F42", "kilogram per second kelvin", kg / (s * K)}, + unitD{"F43", "milligram per day kelvin", mg / (day * K)}, + unitD{"F44", "milligram per hour kelvin", mg / (hr * K)}, + unitD{"F45", "milligram per minute kelvin", mg / (min * K)}, + unitD{"F46", "milligram per second kelvin", mg / (s * K)}, + unitD{"F47", "newton per millimetre", N / mm}, + unitD{"F48", "pound-force per inch", lbf / in}, + unitD{"F49", "rod", us::rod}, + unitD{"F50", "micrometre per kelvin", micro* m / K}, + unitD{"F51", "centimetre per kelvin", cm / K}, + unitD{"F52", "metre per kelvin", m / K}, + unitD{"F53", "millimetre per kelvin", mm / K}, + unitD{"F54", "milliohm per metre", milli* ohm / m}, + unitD{"F55", "ohm per mile (statute)", ohm / mile}, + unitD{"F56", "ohm per kilometre", ohm / km}, + unitD{ + "F57", + "milliampere per (pound-force per square inch)", + milli* A / pressure::psi}, + unitD{"F58", "reciprocal bar", bar.inv()}, + unitD{"F59", "milliampere per bar", milli* A / bar}, + unitD{"F60", "degree Celsius per bar", degC / bar}, + unitD{"F61", "kelvin per bar", K / bar}, + unitD{"F62", "gram per day bar", g / (day * bar)}, + unitD{"F63", "gram per hour bar", g / (hr * bar)}, + unitD{"F64", "gram per minute bar", g / (min * bar)}, + unitD{"F65", "gram per second bar", g / (s * bar)}, + unitD{"F66", "kilogram per day bar", kg / (day * bar)}, + unitD{"F67", "kilogram per hour bar", kg / (hr * bar)}, + unitD{"F68", "kilogram per minute bar", kg / (min * bar)}, + unitD{"F69", "kilogram per second bar", kg / (s * bar)}, + unitD{"F70", "milligram per day bar", mg / (day * bar)}, + unitD{"F71", "milligram per hour bar", mg / (hr * bar)}, + unitD{"F72", "milligram per minute bar", mg / (min * bar)}, + unitD{"F73", "milligram per second bar", mg / (s * bar)}, + unitD{"F74", "gram per bar", g / bar}, + unitD{"F75", "milligram per bar", mg / bar}, + unitD{"F76", "milliampere per millimetre", A / m}, + unitD{"F77", "pascal second per kelvin", Pa* s / K}, + unitD{"F78", "inch of water", pressure::inH2O}, + unitD{"F79", "inch of mercury", pressure::inHg}, + unitD{"F80", "water horse power", power::hpS}, + unitD{"F81", "bar per kelvin", bar / K}, + unitD{"F82", "hectopascal per kelvin", hecto* Pa / K}, + unitD{"F83", "kilopascal per kelvin", kilo* Pa / K}, + unitD{"F84", "millibar per kelvin", milli* bar / K}, + unitD{"F85", "megapascal per kelvin", mega* Pa / K}, + unitD{"F86", "poise per kelvin", cgs::poise / K}, + unitD{"F87", "volt per litre minute", V / (L * min)}, + unitD{"F88", "newton centimetre", N* cm}, + unitD{"F89", "newton metre per degree", N* m / deg}, + unitD{ + "F9", + "fibre per cubic centimetre of air", + precise_unit(count, commodities::fiber) / + precise_unit(cm.pow(3), commodities::air)}, + unitD{"F90", "newton metre per ampere", N* m / A}, + unitD{"F91", "bar litre per second", bar* L / s}, + unitD{"F92", "bar cubic metre per second", bar* m.pow(3) / s}, + unitD{"F93", "hectopascal litre per second", hecto* Pa* L / s}, + unitD{ + "F94", + "hectopascal cubic metre per second", + hecto* Pa* m.pow(3) / s}, + unitD{"F95", "millibar litre per second", milli* bar* L / s}, + unitD{ + "F96", + "millibar cubic metre per second", + milli* bar* m.pow(3) / s}, + unitD{"F97", "megapascal litre per second", mega* Pa* L / s}, + unitD{ + "F98", + "megapascal cubic metre per second", + mega* Pa* m.pow(3) / s}, + unitD{"F99", "pascal litre per second", Pa* L / s}, + unitD{"FAH", "degree Fahrenheit", degF}, + unitD{"FAR", "farad", F}, + unitD{"FB", "field", {1.0, count, commodities::packaging::field}}, + unitD{"FBM", "fibre metre", {1.0, meter, commodities::fiber}}, + unitD{"FC", "thousand cubic foot", thousand* ft.pow(3)}, + unitD{ + "FD", + "million particle per cubic foot", + precise_unit{ + mega * count / ft.pow(3), + commodities::packaging::particle}}, + unitD{"FE", "track foot", {1.0, ft, commodities::packaging::track}}, + unitD{"FF", "hundred cubic metre", hundred* m.pow(3)}, + unitD{ + "FG", + "transdermal patch", + {1.0, count, commodities::packaging::patch}}, + unitD{"FH", "micromole", micro* mol}, + unitD{ + "FIT", + "failures in time", + {1.0, count / s, commodities::failure}}, + unitD{"FL", "flake ton", {1.0, ton, commodities::packaging::flake}}, + unitD{"FM", "million cubic foot", mega* ft.pow(3)}, + unitD{"FOT", "foot", ft}, + unitD{"FP", "pound per square foot", lb / ft.pow(2)}, + unitD{"FR", "foot per minute", ft / min}, + unitD{"FS", "foot per second", ft / s}, + unitD{"FTK", "square foot", ft.pow(2)}, + unitD{"FTQ", "cubic foot", ft.pow(3)}, + unitD{"G01", "pascal cubic metre per second", Pa* m.pow(3) / s}, + unitD{"G04", "centimetre per bar", cm / bar}, + unitD{"G05", "metre per bar", m / bar}, + unitD{"G06", "millimetre per bar", mm / bar}, + unitD{"G08", "square inch per second", in.pow(2) / s}, + unitD{"G09", "square metre per second kelvin", m.pow(2) / (s * K)}, + unitD{"G10", "stokes per kelvin", cgs::stokes / K}, + unitD{"G11", "gram per cubic centimetre bar", g / (cm.pow(3) * bar)}, + unitD{ + "G12", + "gram per cubic decimetre bar", + g / ((deci * m).pow(3) * bar)}, + unitD{"G13", "gram per litre bar", g / (L * bar)}, + unitD{"G14", "gram per cubic metre bar", g / (m.pow(3) * bar)}, + unitD{"G15", "gram per millilitre bar", g / (mL * bar)}, + unitD{ + "G16", + "kilogram per cubic centimetre bar", + kg / (cm.pow(3) * bar)}, + unitD{"G17", "kilogram per litre bar", kg / (L * bar)}, + unitD{"G18", "kilogram per cubic metre bar", kg / (m.pow(3) * bar)}, + unitD{"G19", "newton metre per kilogram", N* m / kg}, + unitD{"G2", "US gallon per minute", us::gallon / min}, + unitD{"G20", "pound-force foot per pound", lbf* ft / lb}, + unitD{"G21", "cup [unit of volume]", us::cup}, + unitD{"G23", "peck", us::dry::peck}, + unitD{"G24", "tablespoon (US)", us::tbsp}, + unitD{"G25", "teaspoon (US)", us::tsp}, + unitD{"G26", "stere", volume::stere}, + unitD{"G27", "cubic centimetre per kelvin", cm.pow(3) / K}, + unitD{"G28", "litre per kelvin", L / K}, + unitD{"G29", "cubic metre per kelvin", m.pow(3) / K}, + unitD{"G3", "Imperial gallon per minute", imp::gallon / min}, + unitD{"G30", "millilitre per kelvin", mL / K}, + unitD{"G31", "kilogram per cubic centimetre", kg / cm.pow(3)}, + unitD{ + "G32", + "ounce (avoirdupois) per cubic yard", + av::ounce / yd.pow(3)}, + unitD{"G33", "gram per cubic centimetre kelvin", g / (cm.pow(3) * K)}, + unitD{ + "G34", + "gram per cubic decimetre kelvin", + g / ((deci * m).pow(3) * K)}, + unitD{"G35", "gram per litre kelvin", g / (L * K)}, + unitD{"G36", "gram per cubic metre kelvin", g / (m.pow(3) * K)}, + unitD{"G37", "gram per millilitre kelvin", g / (mL * K)}, + unitD{ + "G38", + "kilogram per cubic centimetre kelvin", + kg / (cm.pow(3) * K)}, + unitD{"G39", "kilogram per litre kelvin", kg / (L * K)}, + unitD{"G40", "kilogram per cubic metre kelvin", kg / (m.pow(3) * K)}, + unitD{"G41", "square metre per second bar", m.pow(2) / (s * bar)}, + unitD{"G42", "microsiemens per centimetre", micro* siemens / cm}, + unitD{"G43", "microsiemens per metre", micro* siemens / m}, + unitD{"G44", "nanosiemens per centimetre", nano* siemens / cm}, + unitD{"G45", "nanosiemens per metre", nano* siemens / m}, + unitD{"G46", "stokes per bar", cgs::stokes / bar}, + unitD{"G47", "cubic centimetre per day", cm.pow(3) / day}, + unitD{"G48", "cubic centimetre per hour", cm.pow(3) / hr}, + unitD{"G49", "cubic centimetre per minute", cm.pow(3) / min}, + unitD{"G50", "gallon (US) per hour", us::gallon / hr}, + unitD{"G51", "litre per second", L / s}, + unitD{"G52", "cubic metre per day", m.pow(3) / day}, + unitD{"G53", "cubic metre per minute", m.pow(3) / min}, + unitD{"G54", "millilitre per day", mL / day}, + unitD{"G55", "millilitre per hour", mL / hr}, + unitD{"G56", "cubic inch per hour", in.pow(3) / hr}, + unitD{"G57", "cubic inch per minute", in.pow(3) / min}, + unitD{"G58", "cubic inch per second", in.pow(3) / s}, + unitD{"G59", "milliampere per litre minute", milli* A / (L * min)}, + unitD{"G60", "volt per bar", V / bar}, + unitD{"G61", "cubic centimetre per day kelvin", cm.pow(3) / (day * K)}, + unitD{"G62", "cubic centimetre per hour kelvin", cm.pow(3) / (hr * K)}, + unitD{ + "G63", + "cubic centimetre per minute kelvin", + cm.pow(3) / (min * K)}, + unitD{"G64", "cubic centimetre per second kelvin", cm.pow(3) / (s * K)}, + unitD{"G65", "litre per day kelvin", L / (day * K)}, + unitD{"G66", "litre per hour kelvin", L / (hr * K)}, + unitD{"G67", "litre per minute kelvin", L / (min * K)}, + unitD{"G68", "litre per second kelvin", L / (s * K)}, + unitD{"G69", "cubic metre per day kelvin", m.pow(3) / (day * K)}, + unitD{ + "G7", + "microfiche sheet", + {1.0, count, commodities::packaging::sheet}}, + unitD{"G70", "cubic metre per hour kelvin", m.pow(3) / (hr * K)}, + unitD{"G71", "cubic metre per minute kelvin", m.pow(3) / (min * K)}, + unitD{"G72", "cubic metre per second kelvin", m.pow(3) / (s * K)}, + unitD{"G73", "millilitre per day kelvin", mL / (day * K)}, + unitD{"G74", "millilitre per hour kelvin", mL / (hr * K)}, + unitD{"G75", "millilitre per minute kelvin", mL / (min * K)}, + unitD{"G76", "millilitre per second kelvin", mL / (s * K)}, + unitD{"G77", "millimetre to the fourth power", mm.pow(4)}, + unitD{"G78", "cubic centimetre per day bar", cm.pow(3) / (day * bar)}, + unitD{"G79", "cubic centimetre per hour bar", cm.pow(3) / (hr * bar)}, + unitD{ + "G80", + "cubic centimetre per minute bar", + cm.pow(3) / (min * bar)}, + unitD{"G81", "cubic centimetre per second bar", cm.pow(3) / (s * bar)}, + unitD{"G82", "litre per day bar", L / (day * bar)}, + unitD{"G83", "litre per hour bar", L / (hr * bar)}, + unitD{"G84", "litre per minute bar", L / (min * bar)}, + unitD{"G85", "litre per second bar", L / (s * bar)}, + unitD{"G86", "cubic metre per day bar", m.pow(3) / (day * bar)}, + unitD{"G87", "cubic metre per hour bar", m.pow(3) / (hr * bar)}, + unitD{"G88", "cubic metre per minute bar", m.pow(3) / (min * bar)}, + unitD{"G89", "cubic metre per second bar", m.pow(3) / (s * bar)}, + unitD{"G90", "millilitre per day bar", mL / (day * bar)}, + unitD{"G91", "millilitre per hour bar", mL / (hr * bar)}, + unitD{"G92", "millilitre per minute bar", mL / (min * bar)}, + unitD{"G93", "millilitre per second bar", mL / (s * bar)}, + unitD{"G94", "cubic centimetre per bar", cm.pow(3) / bar}, + unitD{"G95", "litre per bar", L / bar}, + unitD{"G96", "cubic metre per bar", m.pow(3) / bar}, + unitD{"G97", "millilitre per bar", mL / bar}, + unitD{"G98", "microhenry per kiloohm", micro* H / (kilo * ohm)}, + unitD{"G99", "microhenry per ohm", micro* H / ohm}, + unitD{"GB", "gallon (US) per day", us::gallon / day}, + unitD{"GBQ", "gigabecquerel", giga* Bq}, + unitD{"GC", "gram per 100 gram", g / (hecto * g)}, + unitD{ + "GD", + "gross barrel", + {144.0, count, commodities::packaging::barrel}}, + unitD{"GDW", "gram, dry weight", g}, + unitD{"GE", "pound per gallon (US)", lb / us::gallon}, + unitD{"GF", "gram per metre", g / m}, + unitD{ + "GFI", + "gram of fissile isotope", + {1.0, g, commodities::fissile_material}}, + unitD{"GGR", "great gross", {1728.0, count}}, + unitD{"GH", "half gallon (US)", {0.5, us::gallon}}, + unitD{"GIA", "gill (US)", us::gill}, + unitD{"GIC", "gram, including container", g}, + unitD{"GII", "gill (UK)", imp::gill}, + unitD{"GIP", "gram, including inner packaging", g}, + unitD{"GJ", "gram per millilitre", g / mL}, + unitD{"GK", "gram per kilogram", g / kg}, + unitD{"GL", "gram per litre", g / L}, + unitD{"GLD", "dry gallon (US)", us::dry::gallon}, + unitD{"GLI", "gallon (UK)", imp::gallon}, + unitD{"GLL", "gallon (US)", us::gallon}, + unitD{"GM", "gram per square metre", g / m.pow(2)}, + unitD{"GN", "gross gallon", {144.0, gal}}, + unitD{"GO", "milligram per square metre", mg / m.pow(2)}, + unitD{"GP", "milligram per cubic metre", mg / m.pow(3)}, + unitD{"GQ", "microgram per cubic metre", micro* g / m.pow(3)}, + unitD{"GRM", "gram", g}, + unitD{"GRN", "grain", i::grain}, + unitD{"GRO", "gross", {144.0, count}}, + unitD{"GRT", "gross register ton", {100.0, ft.pow(3)}}, + unitD{"GT", "gross ton", av::longton}, // NOT CORRECT + unitD{"GV", "gigajoule", giga* J}, + unitD{ + "GW", + "gallon per thousand cubic foot", + us::gallon / (kilo * ft.pow(3))}, + unitD{"GWH", "gigawatt hour", giga* W* hr}, + unitD{"GY", "gross yard", yd}, + unitD{"GZ", "gage system", eflag}, + unitD{"H03", "henry per kiloohm", H / (kilo * ohm)}, + unitD{"H04", "henry per ohm", H / ohm}, + unitD{"H05", "millihenry per kiloohm", milli* H / (kilo * ohm)}, + unitD{"H06", "millihenry per ohm", milli* H / ohm}, + unitD{"H07", "pascal second per bar", Pa* s / bar}, + unitD{"H08", "microbecquerel", micro* Bq}, + unitD{"H09", "reciprocal year", yr.inv()}, + unitD{ + "H1", + "half page - electronic", + {0.5, count, commodities::packaging::page_electronic}}, + unitD{"H10", "reciprocal hour", hr.inv()}, + unitD{"H11", "reciprocal month", time::moj.inv()}, + unitD{"H12", "degree Celsius per hour", degC / hr}, + unitD{"H13", "degree Celsius per minute", degC / min}, + unitD{"H14", "degree Celsius per second", degC / s}, + unitD{"H15", "square centimetre per gram", cm.pow(2) / g}, + unitD{"H16", "square decametre", (ten * m).pow(2)}, + unitD{"H18", "square hectometre", (hecto * m).pow(2)}, + unitD{"H19", "cubic hectometre", (hecto * m).pow(3)}, + unitD{"H2", "half litre", half* L}, + unitD{"H20", "cubic kilometre", km.pow(3)}, + unitD{"H21", "blank", {1.0, count, commodities::blank}}, + unitD{"H22", "volt square inch per pound-force", V* in.pow(2) / lbf}, + unitD{"H23", "volt per inch", V / in}, + unitD{"H24", "volt per microsecond", V / (micro * s)}, + unitD{"H25", "percent per kelvin", percent / K}, + unitD{"H26", "ohm per metre", ohm / m}, + unitD{"H27", "degree per metre", deg / m}, + unitD{"H28", "microfarad per kilometre", micro* F / km}, + unitD{"H29", "microgram per litre", micro* g / L}, + unitD{"H30", "square micrometre", (micro * m).pow(2)}, + unitD{"H31", "ampere per kilogram", A / kg}, + unitD{"H32", "ampere squared second", A.pow(2) * s}, + unitD{"H33", "farad per kilometre", F / km}, + unitD{"H34", "hertz metre", Hz* m}, + unitD{"H35", "kelvin metre per watt", K* m / W}, + unitD{"H36", "megaohm per kilometre", mega* ohm / km}, + unitD{"H37", "megaohm per metre", mega* ohm / m}, + unitD{"H38", "megaampere", mega* A}, + unitD{"H39", "megahertz kilometre", mega* Hz* km}, + unitD{"H40", "newton per ampere", N / A}, + unitD{ + "H41", + "newton metre watt to the power minus 0,5", + generate_custom_unit(879)}, + unitD{"H42", "pascal per metre", Pa / m}, + unitD{"H43", "siemens per centimetre", S / cm}, + unitD{"H44", "teraohm", tera* ohm}, + unitD{"H45", "volt second per metre", V* s / m}, + unitD{"H46", "volt per second", V / s}, + unitD{"H47", "watt per cubic metre", W / m.pow(3)}, + unitD{"H48", "attofarad", atto* F}, + unitD{"H49", "centimetre per hour", cm / hr}, + unitD{"H50", "reciprocal cubic centimetre", cm.pow(-3)}, + unitD{"H51", "decibel per kilometre", log::dB / km}, + unitD{"H52", "decibel per metre", log::dB / m}, + unitD{"H53", "kilogram per bar", kg / bar}, + unitD{ + "H54", + "kilogram per cubic decimetre kelvin", + kg / ((deci * m).pow(3) * K)}, + unitD{ + "H55", + "kilogram per cubic decimetre bar", + kg / ((deci * m).pow(3) * bar)}, + unitD{"H56", "kilogram per square metre second", kg / (m.pow(2) * s)}, + unitD{ + "H57", + "inch per two pi radiant", + {1.0 / constants::tau, in / rad}}, + unitD{"H58", "metre per volt second", m / (V * s)}, + unitD{"H59", "square metre per newton", m.pow(2) / N}, + unitD{"H60", "cubic metre per cubic metre", pu* m.pow(3)}, + unitD{"H61", "millisiemens per centimetre", milli* S / cm}, + unitD{"H62", "millivolt per minute", electrical::mV / min}, + unitD{"H63", "milligram per square centimetre", mg / cm.pow(2)}, + unitD{"H64", "milligram per gram", mg / g}, + unitD{"H65", "millilitre per cubic metre", mL / m.pow(3)}, + unitD{"H66", "millimetre per year", mm / yr}, + unitD{"H67", "millimetre per hour", mm / hr}, + unitD{"H68", "millimole per gram", milli* mol / g}, + unitD{"H69", "picopascal per kilometre", pico* Pa / km}, + unitD{"H70", "picosecond", pico* s}, + unitD{"H71", "percent per month", percent / time::moj}, + unitD{"H72", "percent per hectobar", percent / (hecto * bar)}, + unitD{"H73", "percent per decakelvin", percent / (deca * K)}, + unitD{"H74", "watt per metre", W / m}, + unitD{"H75", "decapascal", ten* Pa}, + unitD{"H76", "gram per millimetre", g / mm}, + unitD{"H77", "module width", pu* m}, + unitD{ + "H78", + "conventional centimetre of water", + {10.0, precise::pressure::mmH2O}}, + unitD{"H79", "French gauge", precise::clinical::charriere}, + unitD{"H80", "rack unit", precise_unit(1.75, precise::i::inch)}, + unitD{"H81", "millimetre per minute", mm / min}, + unitD{"H82", "big point", typographic::dtp::point}, + unitD{"H83", "litre per kilogram", L / kg}, + unitD{"H84", "gram millimetre", g* mm}, + unitD{"H85", "reciprocal week", time::week.inv()}, + unitD{"H87", "piece", {1.0, one, commodities::packaging::piece}}, + unitD{"H88", "megaohm kilometre", mega* ohm* km}, + unitD{"H89", "percent per ohm", percent / ohm}, + unitD{"H90", "percent per degree", percent / deg}, + unitD{ + "H91", + "percent per ten thousand", + percent / (ten * thousand * count)}, + unitD{ + "H92", + "percent per one hundred thousand", + percent / (hundred * thousand * count)}, + unitD{"H93", "percent per hundred", percent / (hundred * count)}, + unitD{"H94", "percent per thousand", percent / (thousand * count)}, + unitD{"H95", "percent per volt", percent / V}, + unitD{"H96", "percent per bar", percent / bar}, + unitD{"H98", "percent per inch", percent / in}, + unitD{"H99", "percent per metre", percent / m}, + unitD{"HA", "hank", {1.0, count, commodities::packaging::hank}}, + unitD{"HAR", "hectare", area::hectare}, + unitD{"HBA", "hectobar", hecto* bar}, + unitD{ + "HBX", + "hundred boxes", + {100.0, count, commodities::packaging::box}}, + unitD{"HC", "hundred count", hundred* count}, + unitD{"HD", "half dozen", {6.0, count}}, + unitD{"HDW", "hundred kilogram, dry weight", {100.0, kg}}, + unitD{"HE", "hundredth of a carat", centi* metric::carat}, + unitD{"HEA", "head", {1.0, count, commodities::packaging::head}}, + unitD{"HF", "hundred foot", hundred* foot}, + unitD{"HGM", "hectogram", hecto* g}, + unitD{"HH", "hundred cubic foot", hundred* ft.pow(3)}, + unitD{ + "HI", + "hundred sheet", + {100.0, count, commodities::packaging::sheet}}, + unitD{ + "HIU", + "hundred international unit", + {100.0, precise::laboratory::IU}}, + unitD{"HJ", "metric horse power", precise::power::hpM}, + unitD{"HK", "hundred kilogram", hundred* kg}, + unitD{"HKM", "hundred kilogram, net mass", hundred* kg}, + unitD{ + "HL", + "hundred foot (linear)", + {100.0, ft, commodities::packaging::linear}}, + unitD{"HLT", "hectolitre", hecto* L}, + unitD{"HM", "mile per hour", mph}, + unitD{"HMQ", "million cubic metre", mega* m.pow(3)}, + unitD{"HMT", "hectometre", hecto* m}, + unitD{"HN", "conventional millimetre of mercury", pressure::mmHg}, + unitD{"HO", "hundred troy ounce", hundred* troy::oz}, + unitD{"HP", "conventional millimetre of water", pressure::mmH2O}, + unitD{ + "HPA", + "hectolitre of pure alcohol", + {1.0, hecto* L, commodities::ethanol}}, + unitD{"HS", "hundred square foot", hundred* ft.pow(2)}, + unitD{"HT", "half hour", half* hr}, + unitD{"HTZ", "hertz", Hz}, + unitD{"HUR", "hour", hr}, + unitD{"HY", "hundred yard", hundred* yd}, + unitD{"IA", "inch pound", in* lb}, + unitD{"IC", "count per inch", count / in}, + unitD{"IE", "person", {1.0, count, commodities::person}}, + unitD{"IF", "inches of water", pressure::inH2O}, + unitD{"II", "column inch", pressure::inH2O* eflag}, + unitD{"IL", "inch per minute", in / min}, + unitD{"IM", "impression", {1.0, count, commodities::impression}}, + unitD{"INH", "inch", in}, + unitD{"INK", "square inch", in.pow(2)}, + unitD{"INQ", "cubic inch", in.pow(3)}, + unitD{"IP", "insurance policy", {1.0, count, commodities::policy}}, + unitD{ + "ISD", + "international sugar degree", + {1.0, generate_custom_unit(107), commodities::sugar}}, + unitD{"IT", "count per centimetre", count / cm}, + unitD{"IU", "inch per second", in / s}, + unitD{"IV", "inch per second squared", in / s.pow(2)}, + unitD{"J10", "percent per millimetre", percent / mm}, + unitD{"J12", "per mille per psi", {0.001, pressure::psi.inv()}}, + unitD{"J13", "degree API", special::degreeAPI}, + unitD{"J14", "degree Baume", special::degreeBaume}, + unitD{"J15", "degree Baume (US heavy)", special::degreeBaume}, + unitD{"J16", "degree Baume (US light)", special::degreeBaume}, + unitD{ + "J17", + "degree Balling", + {1.0, generate_custom_unit(109), commodities::sugar}}, + unitD{ + "J18", + "degree Brix", + {1.0, generate_custom_unit(108), commodities::sugar}}, + unitD{ + "J19", + "degree Fahrenheit hour square foot per British thermal unit (thermochemical)", + degF* hr* ft.pow(2) / energy::btu_th}, + unitD{"J2", "joule per kilogram", J / kg}, + unitD{"J20", "degree Fahrenheit per kelvin", degF / K}, + unitD{"J21", "degree Fahrenheit per bar", degF / bar}, + unitD{ + "J22", + "degree Fahrenheit hour square foot per British thermal unit (international table)", + degF* hr* ft.pow(2) / energy::btu_it}, + unitD{"J23", "degree Fahrenheit per hour", degF / hr}, + unitD{"J24", "degree Fahrenheit per minute", degF / min}, + unitD{"J25", "degree Fahrenheit per second", degF / s}, + unitD{"J26", "reciprocal degree Fahrenheit", degF.inv()}, + unitD{ + "J27", + "degree Oechsle", + {1.0, generate_custom_unit(110), commodities::sugar}}, + unitD{"J28", "degree Rankine per hour", temperature::rankine / hr}, + unitD{"J29", "degree Rankine per minute", temperature::rankine / min}, + unitD{"J30", "degree Rankine per second", temperature::rankine / s}, + unitD{"J31", "degree Twaddell", generate_custom_unit(111)}, + unitD{"J32", "micropoise", micro* cgs::poise}, + unitD{"J33", "microgram per kilogram", micro* g / kg}, + unitD{ + "J34", + "microgram per cubic metre kelvin", + micro* g / (m.pow(3) * K)}, + unitD{ + "J35", + "microgram per cubic metre bar", + micro* g / (m.pow(3) * bar)}, + unitD{"J36", "microlitre per litre", micro* L / L}, + unitD{"J38", "baud", bit / s}, + unitD{"J39", "British thermal unit (mean)", energy::btu_mean}, + unitD{ + "J40", + "British thermal unit (international table) foot " + "per hour square foot degree Fahrenheit", + energy::btu_it* ft / (hr * ft.pow(2) * degF)}, + unitD{ + "J41", + "British thermal unit (international table) inch " + "per hour square foot degree Fahrenheit", + energy::btu_it* in / (hr * ft.pow(2) * degF)}, + unitD{ + "J42", + "British thermal unit (international table) inch " + "per second square foot degree Fahrenheit", + energy::btu_it* in / (s * ft.pow(2) * degF)}, + unitD{ + "J43", + "British thermal unit (international table) per " + "pound degree Fahrenheit", + energy::btu_it / (lb * degF)}, + unitD{ + "J44", + "British thermal unit (international table) per minute", + energy::btu_it / min}, + unitD{ + "J45", + "British thermal unit (international table) per second", + energy::btu_it / s}, + unitD{ + "J46", + "British thermal unit (thermochemical) foot per hour square foot degree Fahrenheit", + energy::btu_th* ft / (hr * ft.pow(2) * degF)}, + unitD{ + "J47", + "British thermal unit (thermochemical) per hour", + energy::btu_th / hr}, + unitD{ + "J48", + "British thermal unit (thermochemical) inch per hour square foot degree Fahrenheit", + energy::btu_th* in / (hr * ft.pow(2) * degF)}, + unitD{ + "J49", + "British thermal unit (thermochemical) inch per second square foot degree Fahrenheit", + energy::btu_th* in / (s * ft.pow(2) * degF)}, + unitD{ + "J50", + "British thermal unit (thermochemical) per pound degree Fahrenheit", + energy::btu_th / (lb * degF)}, + unitD{ + "J51", + "British thermal unit (thermochemical) per minute", + energy::btu_th / min}, + unitD{ + "J52", + "British thermal unit (thermochemical) per second", + energy::btu_th / s}, + unitD{"J53", "coulomb square metre per kilogram", C* m.pow(2) / kg}, + unitD{"J54", "megabaud", mega* bit / s}, + unitD{"J55", "watt second", W* s}, + unitD{"J56", "bar per bar", pu* bar}, + unitD{"J57", "barrel (UK petroleum)", imp::bbl}, + unitD{"J58", "barrel (UK petroleum) per minute", imp::bbl / min}, + unitD{"J59", "barrel (UK petroleum) per day", imp::bbl / day}, + unitD{"J60", "barrel (UK petroleum) per hour", imp::bbl / hr}, + unitD{"J61", "barrel (UK petroleum) per second", imp::bbl / s}, + unitD{"J62", "barrel (US petroleum) per hour", us::barrel / min}, + unitD{"J63", "barrel (US petroleum) per second", us::barrel / s}, + unitD{"J64", "bushel (UK) per day", imp::bushel / day}, + unitD{"J65", "bushel (UK) per hour", imp::bushel / hr}, + unitD{"J66", "bushel (UK) per minute", imp::bushel / min}, + unitD{"J67", "bushel (UK) per second", imp::bushel / s}, + unitD{"J68", "bushel (US dry) per day", us::dry::bushel / day}, + unitD{"J69", "bushel (US dry) per hour", us::dry::bushel / hr}, + unitD{"J70", "bushel (US dry) per minute", us::dry::bushel / min}, + unitD{"J71", "bushel (US dry) per second", us::dry::bushel / s}, + unitD{"J72", "centinewton metre", centi* N* m}, + unitD{"J73", "centipoise per kelvin", centi* cgs::poise / K}, + unitD{"J74", "centipoise per bar", centi* cgs::poise / bar}, + unitD{"J75", "calorie (mean)", energy::cal_mean}, + unitD{ + "J76", + "calorie (international table) per gram degree Celsius", + energy::cal_it / (g * degC)}, + unitD{ + "J78", + "calorie (thermochemical) per centimetre second degree Celsius", + energy::cal_th / (cm * s * degC)}, + unitD{ + "J79", + "calorie (thermochemical) per gram degree Celsius", + energy::cal_th / (g * degC)}, + unitD{ + "J81", + "calorie (thermochemical) per minute", + energy::cal_th / min}, + unitD{"J82", "calorie (thermochemical) per second", energy::cal_th / s}, + unitD{"J83", "clo", {0.155, m.pow(2) * K / W}}, + unitD{"J84", "centimetre per second kelvin", cm / (s * K)}, + unitD{"J85", "centimetre per second bar", cm / (s * bar)}, + unitD{"J87", "cubic centimetre per cubic metre", cm.pow(3) / m.pow(3)}, + unitD{"J89", "centimetre of mercury", {10.0, pressure::mmHg}}, + unitD{"J90", "cubic decimetre per day", (deci * m).pow(3) / day}, + unitD{ + "J91", + "cubic decimetre per cubic metre", + (deci * m).pow(3) / m.pow(3)}, + unitD{"J92", "cubic decimetre per minute", (deci * m).pow(3) / min}, + unitD{"J93", "cubic decimetre per second", (deci * m).pow(3) / s}, + unitD{"J94", "dyne centimetre", cgs::dyn* cm}, + unitD{"J95", "ounce (UK fluid) per day", imp::floz / day}, + unitD{"J96", "ounce (UK fluid) per hour", imp::floz / hr}, + unitD{"J97", "ounce (UK fluid) per minute", imp::floz / min}, + unitD{"J98", "ounce (UK fluid) per second", imp::floz / s}, + unitD{"J99", "ounce (US fluid) per day", us::floz / day}, + unitD{"JB", "jumbo", {1.0, count, commodities::packaging::jumbo}}, + unitD{"JE", "joule per kelvin", J / K}, + unitD{"JG", "jug", {1.0, count, commodities::packaging::jug}}, + unitD{"JK", "megajoule per kilogram", mega* J / kg}, + unitD{"JM", "megajoule per cubic metre", mega* J / m.pow(3)}, + unitD{ + "JNT", + "pipeline joint", + {1.0, count, commodities::packaging::joint}}, + unitD{"JO", "joint", {1.0, count, commodities::packaging::joint}}, + unitD{"JOU", "joule", J}, + unitD{"JPS", "hundred metre", hundred* m}, + unitD{"JR", "jar", {1.0, count, commodities::packaging::jar}}, + unitD{"JWL", "number of jewels", {1.0, count, commodities::jewel}}, + unitD{"K1", "kilowatt demand", electrical::kW}, + unitD{"K10", "ounce (US fluid) per hour", us::floz / hr}, + unitD{"K11", "ounce (US fluid) per minute", us::floz / min}, + unitD{"K12", "ounce (US fluid) per second", us::floz / s}, + unitD{"K13", "foot per degree Fahrenheit", ft / degF}, + unitD{"K14", "foot per hour", ft / hr}, + unitD{"K15", "foot pound-force per hour", ft* lbf / hr}, + unitD{"K16", "foot pound-force per minute", ft* lbf / min}, + unitD{"K17", "foot per psi", ft / pressure::psi}, + unitD{"K18", "foot per second degree Fahrenheit", ft / (s * degF)}, + unitD{"K19", "foot per second psi", ft / (s * pressure::psi)}, + unitD{"K2", "kilovolt ampere reactive demand", electrical::kVAR}, + unitD{"K20", "reciprocal cubic foot", ft.pow(-3)}, + unitD{"K21", "cubic foot per degree Fahrenheit", ft.pow(3) / degF}, + unitD{"K22", "cubic foot per day", ft.pow(3) / day}, + unitD{"K23", "cubic foot per psi", ft.pow(3) / pressure::psi}, + unitD{"K24", "foot of water", {12, pressure::inH2O}}, + unitD{"K25", "foot of mercury", {12, pressure::inHg}}, + unitD{"K26", "gallon (UK) per day", imp::gallon / day}, + unitD{"K27", "gallon (UK) per hour", imp::gallon / hr}, + unitD{"K28", "gallon (UK) per second", imp::gallon / s}, + unitD{"K3", "kilovolt ampere reactive hour", electrical::kVAR* hr}, + unitD{"K30", "gallon (US liquid) per second", us::gallon / s}, + unitD{ + "K31", + "gram-force per square centimetre", + g* constants::g0.as_unit() / cm.pow(2)}, + unitD{"K32", "gill (UK) per day", imp::gill / day}, + unitD{"K33", "gill (UK) per hour", imp::gill / hr}, + unitD{"K34", "gill (UK) per minute", imp::gill / min}, + unitD{"K35", "gill (UK) per second", imp::gill / s}, + unitD{"K36", "gill (US) per day", us::gill / day}, + unitD{"K37", "gill (US) per hour", us::gill / hr}, + unitD{"K38", "gill (US) per minute", us::gill / min}, + unitD{"K39", "gill (US) per second", us::gill / s}, + unitD{ + "K40", + "standard acceleration of free fall", + constants::g0.as_unit()}, + unitD{"K41", "grain per gallon (US)", i::grain / us::gallon}, + unitD{"K42", "horsepower (boiler)", power::hpS}, + unitD{"K43", "horsepower (electric)", power::hpE}, + unitD{"K45", "inch per degree Fahrenheit", in / degF}, + unitD{"K46", "inch per psi", in / pressure::psi}, + unitD{"K47", "inch per second degree Fahrenheit", in / (s * degF)}, + unitD{"K48", "inch per second psi", in / (s * pressure::psi)}, + unitD{"K49", "reciprocal cubic inch", in.pow(-3)}, + unitD{"K5", "kilovolt ampere (reactive)", kilo* electrical::VAR}, + unitD{"K50", "kilobaud", kilo* bit / s}, + unitD{"K51", "kilocalorie (mean)", kilo* energy::cal_mean}, + unitD{ + "K52", + "kilocalorie (international table) per hour metre degree Celsius", + kilo* energy::cal_it / (hr * m * degC)}, + unitD{"K53", "kilocalorie (thermochemical)", kilo* energy::cal_th}, + unitD{ + "K54", + "kilocalorie (thermochemical) per minute", + kilo* energy::cal_th / min}, + unitD{ + "K55", + "kilocalorie (thermochemical) per second", + kilo* energy::cal_th / s}, + unitD{"K58", "kilomole per hour", kilo* mol / hr}, + unitD{ + "K59", + "kilomole per cubic metre kelvin", + kilo* mol / (m.pow(3) * K)}, + unitD{"K6", "kilolitre", kilo* L}, + unitD{ + "K60", + "kilomole per cubic metre bar", + kilo* mol / (m.pow(3) * bar)}, + unitD{"K61", "kilomole per minute", kilo* mol / min}, + unitD{"K62", "litre per litre", pu* L}, + unitD{"K63", "reciprocal litre", L.inv()}, + unitD{ + "K64", + "pound (avoirdupois) per degree Fahrenheit", + av::pound / degF}, + unitD{"K65", "pound (avoirdupois) square foot", av::pound* ft.pow(2)}, + unitD{"K66", "pound (avoirdupois) per day", av::pound / day}, + unitD{"K67", "pound per foot hour", lb / (ft * hr)}, + unitD{"K68", "pound per foot second", lb / (ft * s)}, + unitD{ + "K69", + "pound (avoirdupois) per cubic foot degree Fahrenheit", + av::pound / (ft.pow(3) * degF)}, + unitD{ + "K70", + "pound (avoirdupois) per cubic foot psi", + av::pound / (ft.pow(3) * pressure::psi)}, + unitD{ + "K71", + "pound (avoirdupois) per gallon (UK)", + av::pound / imp::gallon}, + unitD{ + "K73", + "pound (avoirdupois) per hour degree Fahrenheit", + av::pound / (hr * degF)}, + unitD{ + "K74", + "pound (avoirdupois) per hour psi", + av::pound / (hr * pressure::psi)}, + unitD{ + "K75", + "pound (avoirdupois) per cubic inch degree Fahrenheit", + av::pound / (in.pow(3) * degF)}, + unitD{ + "K76", + "pound (avoirdupois) per cubic inch psi", + av::pound / (in.pow(3) * pressure::psi)}, + unitD{"K77", "pound (avoirdupois) per psi", av::pound / pressure::psi}, + unitD{"K78", "pound (avoirdupois) per minute", av::pound / min}, + unitD{ + "K79", + "pound (avoirdupois) per minute degree Fahrenheit", + av::pound / (min * degF)}, + unitD{ + "K80", + "pound (avoirdupois) per minute psi", + av::pound / (min * pressure::psi)}, + unitD{"K81", "pound (avoirdupois) per second", av::pound / s}, + unitD{ + "K82", + "pound (avoirdupois) per second degree Fahrenheit", + av::pound / (s * degF)}, + unitD{ + "K83", + "pound (avoirdupois) per second psi", + av::pound / (s * pressure::psi)}, + unitD{"K84", "pound per cubic yard", lb / yd.pow(3)}, + unitD{"K85", "pound-force per square foot", lbf / ft.pow(2)}, + unitD{ + "K86", + "pound-force per square inch degree Fahrenheit", + lbf / (in.pow(2) * degF)}, + unitD{"K87", "psi cubic inch per second", pressure::psi* in.pow(3) / s}, + unitD{"K88", "psi litre per second", pressure::psi* L / s}, + unitD{"K89", "psi cubic metre per second", pressure::psi* m.pow(3) / s}, + unitD{"K90", "psi cubic yard per second", pressure::psi* yd.pow(3) / s}, + unitD{"K91", "pound-force second per square foot", lbf* s / ft.pow(2)}, + unitD{"K92", "pound-force second per square inch", lbf* s / in.pow(2)}, + unitD{"K93", "reciprocal psi", pressure::psi.inv()}, + unitD{"K94", "quart (UK liquid) per day", imp::quart / day}, + unitD{"K95", "quart (UK liquid) per hour", imp::quart / hr}, + unitD{"K96", "quart (UK liquid) per minute", imp::quart / min}, + unitD{"K97", "quart (UK liquid) per second", imp::quart / s}, + unitD{"K98", "quart (US liquid) per day", us::quart / day}, + unitD{"K99", "quart (US liquid) per hour", us::quart / hr}, + unitD{"KA", "cake", {1.0, count, commodities::packaging::cake}}, + unitD{"KAT", "katal", katal}, + unitD{ + "KB", + "kilocharacter", + {1.0, kilo* count, commodities::character}}, + unitD{"KBA", "kilobar", kilo* bar}, + unitD{ + "KCC", + "kilogram of choline chloride", + {1.0, kg, commodities::chemicals::choline_chloride}}, + unitD{"KD", "kilogram decimal", kg}, + unitD{ + "KDW", + "kilogram drained net weight", + {1.0, kg, commodities::packaging::net_quantity}}, + unitD{"KEL", "kelvin", K}, + unitD{ + "KF", + "kilopacket", + {1000.0, count, commodities::packaging::packet}}, + unitD{"KG", "keg", {1.0, count, commodities::packaging::keg}}, + unitD{"KGM", "kilogram", kg}, + unitD{"KGS", "kilogram per second", kg / s}, + unitD{ + "KHY", + "kilogram of hydrogen peroxide", + {1.0, kg, commodities::hydrogen_peroxide}}, + unitD{"KHZ", "kilohertz", kilo* Hz}, + unitD{"KI", "kilogram per millimetre width", kg / mm}, + unitD{"KIC", "kilogram, including container", kg}, + unitD{"KIP", "kilogram, including inner packaging", kg}, + unitD{ + "KJ", + "kilosegment", + {1.0, kilo* count, commodities::packaging::segment}}, + unitD{"KJO", "kilojoule", kilo* J}, + unitD{"KL", "kilogram per metre", kg / m}, + unitD{ + "KLK", + "lactic dry material percentage", + {1.0, percent, commodities::packaging::dry + commodities::milk}}, + unitD{"KLX", "kilolux", kilo* lux}, + unitD{ + "KMA", + "kilogram of methylamine", + {1.0, kg, commodities::chemicals::methylamine}}, + unitD{"KMH", "kilometre per hour", km / hr}, + unitD{"KMK", "square kilometre", km.pow(2)}, + unitD{"KMQ", "kilogram per cubic metre", kg / m.pow(3)}, + unitD{"KMT", "kilometre", km}, + unitD{"KNI", "kilogram of nitrogen", {1.0, kg, commodities::nitrogen}}, + unitD{"KNS", "kilogram named substance", kg}, + unitD{"KNT", "knot", nautical::knot}, + unitD{ + "KO", + "milliequivalence caustic potash per gram of product", + {1.0, + milli / g, + commodities::packaging::equivalent + commodities::chemicals::KOH}}, + unitD{"KPA", "kilopascal", kilo* Pa}, + unitD{ + "KPH", + "kilogram of potassium hydroxide (caustic potash)", + {1.0, kg, commodities::chemicals::KOH}}, + unitD{ + "KPO", + "kilogram of potassium oxide", + {1.0, kg, commodities::chemicals::K2O}}, + unitD{ + "KPP", + "kilogram of phosphorus pentoxide (phosphoric anhydride)", + {1.0, kg, commodities::chemicals::P2O5}}, + unitD{"KR", "kiloroentgen", kilo* cgs::roentgen}, + unitD{"KS", "thousand pound per square inch", thousand* lb / in.pow(2)}, + unitD{ + "KSD", + "kilogram of substance 90 % dry", + {1.0, kg, commodities::packaging::dry90}}, + unitD{ + "KSH", + "kilogram of sodium hydroxide (caustic soda)", + {1.0, kg, commodities::chemicals::NaOH}}, + unitD{"KT", "kit", {1.0, count, commodities::packaging::kit}}, + unitD{"KTM", "kilometre", km}, + unitD{"KTN", "kilotonne", kilo* t}, + unitD{"KUR", "kilogram of uranium", {1.0, kg, commodities::uranium}}, + unitD{"KVA", "kilovolt - ampere", kilo* V* A}, + unitD{"KVR", "kilovar", kilo* electrical::VAR}, + unitD{"KVT", "kilovolt", electrical::kV}, + unitD{"KW", "kilogram per millimetre", kg / mm}, + unitD{"KWH", "kilowatt hour", electrical::kW* hr}, + unitD{ + "KWO", + "kilogram of tungsten trioxide", + {1.0, kg, commodities::chemicals::W03}}, + unitD{"KWT", "kilowatt", kilo* W}, + unitD{"KX", "millilitre per kilogram", mL / kg}, + unitD{"L10", "quart (US liquid) per minute", us::quart / min}, + unitD{"L11", "quart (US liquid) per second", us::quart / s}, + unitD{"L12", "metre per second kelvin", m / (s * K)}, + unitD{"L13", "metre per second bar", m / (s * bar)}, + unitD{ + "L14", + "square metre hour degree Celsius per kilocalorie (international table)", + m.pow(2) * hr* degC / (kilo * energy::cal_it)}, + unitD{"L15", "millipascal second per kelvin", milli* Pa* s / K}, + unitD{"L16", "millipascal second per bar", milli* Pa* s / bar}, + unitD{"L17", "milligram per cubic metre kelvin", mg / (m.pow(3) * K)}, + unitD{"L18", "milligram per cubic metre bar", mg / (m.pow(3) * bar)}, + unitD{"L19", "millilitre per litre", mL / L}, + unitD{"L2", "litre per minute", L / min}, + unitD{"L20", "reciprocal cubic millimetre", mm.pow(-3)}, + unitD{"L21", "cubic millimetre per cubic metre", mm.pow(3) / m.pow(3)}, + unitD{"L23", "mole per hour", mol / hr}, + unitD{"L24", "mole per kilogram kelvin", mol / (kg * K)}, + unitD{"L25", "mole per kilogram bar", mol / (kg * bar)}, + unitD{"L26", "mole per litre kelvin", mol / (L * K)}, + unitD{"L27", "mole per litre bar", mol / (L * bar)}, + unitD{"L28", "mole per cubic metre kelvin", mol / (m.pow(3) * K)}, + unitD{"L29", "mole per cubic metre bar", mol / (m.pow(3) * bar)}, + unitD{"L30", "mole per minute", mol / min}, + unitD{"L31", "milliroentgen aequivalent men", milli* cgs::REM}, + unitD{"L32", "nanogram per kilogram", nano* g / kg}, + unitD{"L33", "ounce (avoirdupois) per day", av::ounce / day}, + unitD{"L34", "ounce (avoirdupois) per hour", av::ounce / hr}, + unitD{"L35", "ounce (avoirdupois) per minute", av::ounce / min}, + unitD{"L36", "ounce (avoirdupois) per second", av::ounce / s}, + unitD{ + "L37", + "ounce (avoirdupois) per gallon (UK)", + av::ounce / imp::gallon}, + unitD{ + "L38", + "ounce (avoirdupois) per gallon (US)", + av::ounce / us::gallon}, + unitD{ + "L39", + "ounce (avoirdupois) per cubic inch", + av::ounce / in.pow(3)}, + unitD{ + "L40", + "ounce (avoirdupois)-force", + av::ounce* constants::g0.as_unit()}, + unitD{ + "L41", + "ounce (avoirdupois)-force inch", + av::ounce* constants::g0.as_unit() * in}, + unitD{"L42", "picosiemens per metre", pico* S / m}, + unitD{"L43", "peck (UK)", imp::peck}, + unitD{"L44", "peck (UK) per day", imp::peck / day}, + unitD{"L45", "peck (UK) per hour", imp::peck / hr}, + unitD{"L46", "peck (UK) per minute", imp::peck / min}, + unitD{"L47", "peck (UK) per second", imp::peck / s}, + unitD{"L48", "peck (US dry) per day", us::dry::peck / day}, + unitD{"L49", "peck (US dry) per hour", us::dry::peck / hr}, + unitD{"L50", "peck (US dry) per minute", us::dry::peck / min}, + unitD{"L51", "peck (US dry) per second", us::dry::peck / s}, + unitD{"L52", "psi per psi", pu* pressure::psi}, + unitD{"L53", "pint (UK) per day", imp::pint / day}, + unitD{"L54", "pint (UK) per hour", imp::pint / hr}, + unitD{"L55", "pint (UK) per minute", imp::pint / min}, + unitD{"L56", "pint (UK) per second", imp::pint / s}, + unitD{"L57", "pint (US liquid) per day", us::pint / day}, + unitD{"L58", "pint (US liquid) per hour", us::pint / hr}, + unitD{"L59", "pint (US liquid) per minute", us::pint / min}, + unitD{"L60", "pint (US liquid) per second", us::pint / s}, + unitD{"L61", "pint (US dry)", us::dry::pint}, + unitD{"L62", "quart (US dry)", us::dry::quart}, + unitD{"L63", "slug per day", imp::slug / day}, + unitD{"L64", "slug per foot second", imp::slug / (ft * s)}, + unitD{"L65", "slug per cubic foot", imp::slug / ft.pow(3)}, + unitD{"L66", "slug per hour", imp::slug / hr}, + unitD{"L67", "slug per minute", imp::slug / min}, + unitD{"L68", "slug per second", imp::slug / s}, + unitD{"L69", "tonne per kelvin", t / K}, + unitD{"L70", "tonne per bar", t / bar}, + unitD{"L71", "tonne per day", t / day}, + unitD{"L72", "tonne per day kelvin", t / (day * K)}, + unitD{"L73", "tonne per day bar", t / (day * bar)}, + unitD{"L74", "tonne per hour kelvin", t / (hr * K)}, + unitD{"L75", "tonne per hour bar", t / (hr * bar)}, + unitD{"L76", "tonne per cubic metre kelvin", t / (m.pow(3) * K)}, + unitD{"L77", "tonne per cubic metre bar", t / (m.pow(3) * bar)}, + unitD{"L78", "tonne per minute", t / min}, + unitD{"L79", "tonne per minute kelvin", t / (min * K)}, + unitD{"L80", "tonne per minute bar", t / (min * bar)}, + unitD{"L81", "tonne per second", t / s}, + unitD{"L82", "tonne per second kelvin", t / (s * K)}, + unitD{"L83", "tonne per second bar", t / (s * bar)}, + unitD{"L84", "ton (UK shipping)", {42.0, ft.pow(3)}}, + unitD{"L85", "ton long per day", av::longton / day}, + unitD{"L86", "ton (US shipping)", {40.0, ft.pow(3)}}, + unitD{"L87", "ton short per degree Fahrenheit", av::ton / degF}, + unitD{"L88", "ton short per day", av::ton / day}, + unitD{ + "L89", + "ton short per hour degree Fahrenheit", + av::ton / (hr * degF)}, + unitD{"L90", "ton short per hour psi", av::ton / (hr * pressure::psi)}, + unitD{"L91", "ton short per psi", av::ton / pressure::psi}, + unitD{"L92", "ton (UK long) per cubic yard", imp::ton / yd.pow(3)}, + unitD{"L93", "ton (US short) per cubic yard", av::ton / yd.pow(3)}, + unitD{"L94", "ton-force", av::ton* constants::g0.as_unit()}, + unitD{"L95", "common year", time::year}, + unitD{"L96", "sidereal year", time::syr}, + unitD{"L98", "yard per degree Fahrenheit", yd / degF}, + unitD{"L99", "yard per psi", yd / pressure::psi}, + unitD{"LA", "pound per cubic inch", lb / in.pow(3)}, + unitD{ + "LAC", + "lactose excess percentage", + {1.0, + percent, + commodities::packaging::excess + commodities::lactose}}, + unitD{"LBR", "pound", lb}, + unitD{"LBT", "troy pound (US)", troy::pound}, + unitD{ + "LC", + "linear centimetre", + {1.0, cm, commodities::packaging::linear}}, + unitD{"LD", "litre per day", L / day}, + unitD{"LE", "lite", {1.0, count, commodities::packaging::lite}}, + unitD{"LEF", "leaf", {1.0, count, commodities::packaging::leaf}}, + unitD{"LF", "linear foot", {1.0, ft, commodities::packaging::linear}}, + unitD{"LH", "labour hour", {1.0, hr, commodities::labor}}, + unitD{"LI", "linear inch", {1.0, in, commodities::packaging::linear}}, + unitD{ + "LJ", + "large spray", + {1.0, count, commodities::packaging::large_spray}}, + unitD{"LK", "link", {1.0, count, commodities::packaging::length}}, + unitD{"LM", "linear metre", {1.0, m, commodities::packaging::linear}}, + unitD{ + "LN", + "length", + {1.0, count, commodities::packaging::large_spray}}, + unitD{ + "LO", + "lot [unit of procurement]", + {1.0, count, commodities::packaging::lot}}, + unitD{"LP", "liquid pound", {1.0, lb, commodities::packaging::liquid}}, + unitD{ + "LPA", + "litre of pure alcohol", + {1.0, L, commodities::chemicals::alcohol}}, + unitD{"LR", "layer", {1.0, count, commodities::packaging::layer}}, + unitD{"LS", "lump sum", {1.0, currency, commodities::packaging::lump}}, + unitD{"LTN", "ton (UK)", av::longton}, + unitD{"LTR", "litre", L}, + unitD{"LUB", "metric ton, lubricating oil", t}, + unitD{"LUM", "lumen", lm}, + unitD{"LUX", "lux", lux}, + unitD{ + "LX", + "linear yard per pound", + precise_unit(1.0, yd, commodities::packaging::linear) / lb}, + unitD{"LY", "linear yard", {1.0, yd, commodities::packaging::linear}}, + unitD{ + "M0", + "magnetic tape", + {1.0, + count, + commodities::generateHarmonizedCode(85, 23, 29, 15, false)}}, + unitD{"M1", "milligram per litre", mg / L}, + unitD{"M10", "reciprocal cubic yard", yd.pow(-3)}, + unitD{"M11", "cubic yard per degree Fahrenheit", yd.pow(3) / degF}, + unitD{"M12", "cubic yard per day", yd.pow(3) / day}, + unitD{"M13", "cubic yard per hour", yd.pow(3) / hr}, + unitD{"M14", "cubic yard per psi", yd.pow(3) / pressure::psi}, + unitD{"M15", "cubic yard per minute", yd.pow(3) / min}, + unitD{"M16", "cubic yard per second", yd.pow(3) / s}, + unitD{"M17", "kilohertz metre", kilo* Hz* m}, + unitD{"M18", "gigahertz metre", giga* Hz* m}, + unitD{"M19", "Beaufort", special::beaufort}, + unitD{"M20", "reciprocal megakelvin", (mega * K).inv()}, + unitD{ + "M21", + "reciprocal kilovolt - ampere reciprocal hour", + (kilo * V * A).inv() * hr.inv()}, + unitD{ + "M22", + "millilitre per square centimetre minute", + mL / (cm.pow(2) * min)}, + unitD{"M23", "newton per centimetre", N / cm}, + unitD{"M24", "ohm kilometre", ohm* km}, + unitD{"M25", "percent per degree Celsius", percent / degC}, + unitD{"M26", "gigaohm per metre", giga* ohm / m}, + unitD{"M27", "megahertz metre", mega* Hz* m}, + unitD{"M29", "kilogram per kilogram", pu* kg}, + unitD{ + "M30", + "reciprocal volt - ampere reciprocal second", + (V * A).inv() * s.inv()}, + unitD{"M31", "kilogram per kilometre", kg / km}, + unitD{"M32", "pascal second per litre", Pa* s / L}, + unitD{"M33", "millimole per litre", milli* mol / L}, + unitD{"M34", "newton metre per square metre", N* m / m.pow(2)}, + unitD{"M35", "millivolt - ampere", electrical::mV* A}, + unitD{"M36", "month{30-day}", {30.0, day}}, + unitD{"M37", "actual/360", {360.0, day}}, + unitD{"M38", "kilometre per second squared", km / s.pow(2)}, + unitD{"M39", "centimetre per second squared", cm / s.pow(2)}, + unitD{"M4", "monetary value", currency}, + unitD{"M40", "yard per second squared", yd / s.pow(2)}, + unitD{"M41", "millimetre per second squared", mm / s.pow(2)}, + unitD{"M42", "mile (statute) per second squared", mile / s.pow(2)}, + unitD{"M43", "mil", i::mil}, + unitD{"M44", "revolution", {constants::tau, precise::rad}}, + unitD{ + "M45", + "degree [unit of angle] per second squared", + deg / s.pow(2)}, + unitD{"M46", "revolution per minute", other::rpm}, + unitD{"M47", "circular mil", i::circ_mil}, + unitD{"M48", "square mile (U.S. survey)", us::mile.pow(2)}, + unitD{"M49", "chain (U.S. survey)", us::chain}, + unitD{"M5", "microcurie", micro* cgs::curie}, + unitD{"M50", "furlong", us::furlong}, + unitD{"M51", "foot (U.S. survey)", us::foot}, + unitD{"M52", "mile (U.S. survey)", us::mile}, + unitD{"M53", "metre per pascal", m / Pa}, + unitD{"M55", "metre per radiant", m / rad}, + unitD{"M56", "shake", {1e-8, s}}, + unitD{"M57", "mile per minute", mile / min}, + unitD{"M58", "mile per second", mile / s}, + unitD{"M59", "metre per second pascal", m / (s * Pa)}, + unitD{"M60", "metre per hour", m / hr}, + unitD{"M61", "inch per year", in / yr}, + unitD{"M62", "kilometre per second", km / s}, + unitD{"M63", "inch per minute", in / min}, + unitD{"M64", "yard per second", yd / s}, + unitD{"M65", "yard per minute", yd / min}, + unitD{"M66", "yard per hour", yd / hr}, + unitD{"M67", "acre-foot (U.S. survey)", acre* us::foot}, + unitD{"M68", "cord", us::cord}, + unitD{"M69", "cubic mile UK", imp::mile.pow(3)}, + unitD{"M7", "micro-inch", micro* in}, + unitD{"M70", "ton, register", av::ton}, + unitD{"M71", "cubic metre per pascal", m.pow(3) / Pa}, + unitD{"M72", "bel", log::bel}, + unitD{"M73", "kilogram per cubic metre pascal", kg / (m.pow(3) * Pa)}, + unitD{"M74", "kilogram per pascal", kg / Pa}, + unitD{"M75", "kilopound-force", kilo* lbf}, + unitD{"M76", "poundal", av::poundal}, + unitD{"M77", "kilogram metre per second squared", kg* m / s.pow(2)}, + unitD{"M78", "pond", precise::gm::pond}, + unitD{"M79", "square foot per hour", ft.pow(2) / hr}, + unitD{"M80", "stokes per pascal", cgs::stokes / Pa}, + unitD{"M81", "square centimetre per second", cm.pow(2) / s}, + unitD{"M82", "square metre per second pascal", m.pow(2) / (s * Pa)}, + unitD{"M83", "denier", textile::denier}, + unitD{"M84", "pound per yard", lb / yd}, + unitD{"M85", "ton, assay", {0.02916667, kg}}, + unitD{"M86", "pfund", {0.5, kg}}, + unitD{"M87", "kilogram per second pascal", kg / (s * Pa)}, + unitD{"M88", "tonne per month", mass::tonne / time::moj}, + unitD{"M89", "tonne per year", mass::tonne / time::aj}, + unitD{ + "M9", + "million Btu per 1000 cubic foot", + mega* btu / (thousand * ft.pow(3))}, + unitD{"M90", "kilopound per hour", kilo* lbf / hr}, + unitD{"M91", "pound per pound", pu* lb}, + unitD{"M92", "pound-force foot", lbf* ft}, + unitD{"M93", "newton metre per radian", N* m / rad}, + unitD{"M94", "kilogram metre", kg* m}, + unitD{"M95", "poundal foot", av::poundal* ft}, + unitD{"M96", "poundal inch", av::poundal* in}, + unitD{"M97", "dyne metre", cgs::dyn* m}, + unitD{"M98", "kilogram centimetre per second", kg* cm / s}, + unitD{"M99", "gram centimetre per second", g* cm / s}, + unitD{"MA", "machine per unit", {1.0, pu* count, commodities::machine}}, + unitD{"MAH", "megavolt ampere reactive hour", electrical::MVAR* hr}, + unitD{"MAL", "megalitre", mega* L}, + unitD{"MAM", "megametre", mega* m}, + unitD{"MAR", "megavar", electrical::MVAR}, + unitD{"MAW", "megawatt", electrical::MW}, + unitD{ + "MBE", + "thousand standard brick equivalent", + {1000.0, count, commodities::brick}}, + unitD{"MBF", "thousand board foot", thousand* i::board_foot}, + unitD{"MBR", "millibar", milli* bar}, + unitD{"MC", "microgram", micro* g}, + unitD{"MCU", "millicurie", milli* cgs::curie}, + unitD{ + "MD", + "air dry metric ton", + precise_unit(mass::tonne, commodities::packaging::dry)}, + unitD{ + "MF", + "milligram per square foot per side", + {1.0, + mg / ft.pow(2) / precise_unit(one, commodities::packaging::side)}}, + unitD{"MGM", "milligram", mg}, + unitD{"MHZ", "megahertz", mega* Hz}, + unitD{"MIK", "square mile ", mile.pow(2)}, + unitD{"MIL", "thousand", thousand* count}, + unitD{"MIN", "minute [unit of time]", min}, + unitD{"MIO", "million", mega* count}, + unitD{"MIU", "million international unit", mega* laboratory::IU}, + unitD{"MK", "milligram per square inch", mg / in.pow(2)}, + unitD{"MLD", "milliard", giga* count}, + unitD{"MLT", "millilitre", mL}, + unitD{"MMK", "square millimetre", mm.pow(2)}, + unitD{"MMQ", "cubic millimetre", mm.pow(3)}, + unitD{"MMT", "millimetre", mm}, + unitD{"MND", "kilogram, dry weight", kg}, + unitD{"MON", "month", time::moj}, + unitD{"MPA", "megapascal", mega* Pa}, + unitD{"MQ", "thousand metre", thousand* m}, + unitD{"MQH", "cubic metre per hour", m.pow(3) / hr}, + unitD{"MQS", "cubic metre per second", m.pow(3) / s}, + unitD{"MSK", "metre per second squared", m / s.pow(2)}, + unitD{"MT", "mat", {1.0, count, commodities::packaging::mat}}, + unitD{"MTK", "square metre", m.pow(2)}, + unitD{"MTQ", "cubic metre", m.pow(3)}, + unitD{"MTR", "metre", m}, + unitD{"MTS", "metre per second", m / s}, + unitD{"MV", "number of mults", count}, + unitD{"MVA", "megavolt - ampere", mega* V* A}, + unitD{"MWH", "megawatt hour", mega* W* hr}, + unitD{"N1", "pen calorie", cal}, + unitD{"N10", "pound foot per second", lb* ft / s}, + unitD{"N11", "pound inch per second", lb* in / s}, + unitD{"N12", "Pferdestaerke", power::hpM}, + unitD{"N13", "centimetre of mercury (0 degC)", {1333.22, Pa}}, + unitD{"N14", "centimetre of water (4 degC)", {98.0637795, Pa}}, + unitD{"N15", "foot of water (39.2 degF)", {2988.98400, Pa}}, + unitD{"N16", "inch of mercury (32 degF)", {3383.93102, Pa}}, + unitD{"N17", "inch of mercury (60 degF)", {3376.84789, Pa}}, + unitD{"N18", "inch of water (39.2 degF)", {249.082000, Pa}}, + unitD{"N19", "inch of water (60 degF)", {248.840000, Pa}}, + unitD{ + "N2", + "number of lines", + {1.0, count, commodities::linesofservice}}, + unitD{ + "N20", + "kip per square inch", + precise::kilo* precise::lbf / in.pow(2)}, + unitD{"N21", "poundal per square foot", av::poundal / ft.pow(2)}, + unitD{ + "N22", + "ounce (avoirdupois) per square inch", + av::ounce / in.pow(2)}, + unitD{"N23", "conventional metre of water", thousand* pressure::mmH2O}, + unitD{"N24", "gram per square millimetre", g / mm.pow(2)}, + unitD{"N25", "pound per square yard", lb / yd.pow(2)}, + unitD{"N26", "poundal per square inch", av::poundal / in.pow(2)}, + unitD{"N27", "foot to the fourth power", ft.pow(4)}, + unitD{"N28", "cubic decimetre per kilogram", (deci * m).pow(3) / kg}, + unitD{"N29", "cubic foot per pound", ft.pow(3) / lb}, + unitD{"N3", "print point", typographic::printers::point}, + unitD{"N30", "cubic inch per pound", in.pow(3) / lb}, + unitD{"N31", "kilonewton per metre", kilo* N / m}, + unitD{"N32", "poundal per inch", av::poundal / in}, + unitD{"N33", "pound-force per yard", lbf / yd}, + unitD{ + "N34", + "poundal second per square foot", + av::poundal* s / ft.pow(2)}, + unitD{"N35", "poise per pascal", cgs::poise / Pa}, + unitD{"N36", "newton second per square metre", N* s / m.pow(2)}, + unitD{"N37", "kilogram per metre second", kg / (m * s)}, + unitD{"N38", "kilogram per metre minute", kg / (m * min)}, + unitD{"N39", "kilogram per metre day", kg / (m * day)}, + unitD{"N40", "kilogram per metre hour", kg / (m * hr)}, + unitD{"N41", "gram per centimetre second", g / (cm * s)}, + unitD{ + "N42", + "poundal second per square inch", + av::poundal* s / in.pow(2)}, + unitD{"N43", "pound per foot minute", lb / (ft * min)}, + unitD{"N44", "pound per foot day", lb / (ft * day)}, + unitD{"N45", "cubic metre per second pascal", m.pow(3) / (s * Pa)}, + unitD{"N46", "foot poundal", ft* av::poundal}, + unitD{"N47", "inch poundal", in* av::poundal}, + unitD{"N48", "watt per square centimetre", W / cm.pow(2)}, + unitD{"N49", "watt per square inch", W / in.pow(2)}, + unitD{ + "N50", + "British thermal unit (international table) per square foot hour", + energy::btu_it / (ft.pow(2) * hr)}, + unitD{ + "N51", + "British thermal unit (thermochemical) per square foot hour", + energy::btu_th / (ft.pow(2) * hr)}, + unitD{ + "N52", + "British thermal unit (thermochemical) per square foot minute", + energy::btu_th / (ft.pow(2) * min)}, + unitD{ + "N53", + "British thermal unit (international table) per square foot second", + energy::btu_it / (ft.pow(2) * s)}, + unitD{ + "N54", + "British thermal unit (thermochemical) per square foot second", + energy::btu_th / (ft.pow(2) * s)}, + unitD{ + "N55", + "British thermal unit (international table) per square inch second", + energy::btu_it / (in.pow(2) * s)}, + unitD{ + "N56", + "calorie (thermochemical) per square centimetre minute", + energy::cal_th / (cm.pow(2) * min)}, + unitD{ + "N57", + "calorie (thermochemical) per square centimetre second", + energy::cal_th / (cm.pow(2) * s)}, + unitD{ + "N58", + "British thermal unit (international table) per cubic foot", + energy::btu_it / ft.pow(3)}, + unitD{ + "N59", + "British thermal unit (thermochemical) per cubic foot", + energy::btu_th / ft.pow(3)}, + unitD{ + "N60", + "British thermal unit (international table) per degree Fahrenheit", + energy::btu_it / degF}, + unitD{ + "N61", + "British thermal unit (thermochemical) per degree Fahrenheit", + energy::btu_th / degF}, + unitD{ + "N62", + "British thermal unit (international table) per degree Rankine", + energy::btu_it / temperature::degR}, + unitD{ + "N63", + "British thermal unit (thermochemical) per degree Rankine", + energy::btu_th / temperature::degR}, + unitD{ + "N64", + "British thermal unit (thermochemical) per pound degree Rankine", + energy::btu_th / (temperature::degR * lb)}, + unitD{ + "N65", + "kilocalorie (international table) per gram kelvin", + kilo* energy::cal_it / (g * K)}, + unitD{"N66", "British thermal unit (39 degF)", energy::btu_39}, + unitD{"N67", "British thermal unit (59 degF)", energy::btu_59}, + unitD{"N68", "British thermal unit (60 degF)", energy::btu_60}, + unitD{"N69", "calorie (20 degC)", energy::cal_20}, + unitD{"N70", "quad", energy::quad}, + unitD{"N71", "therm (EC)", energy::therm_ec}, + unitD{"N72", "therm (US)", energy::therm_us}, + unitD{ + "N73", + "British thermal unit (thermochemical) per pound", + energy::btu_th / lb}, + unitD{ + "N74", + "British thermal unit (international table) per hour square foot degree Fahrenheit", + energy::btu_it / (hr * ft.pow(2) * degF)}, + unitD{ + "N75", + "British thermal unit (thermochemical) per hour square foot degree Fahrenheit", + energy::btu_th / (hr * ft.pow(2) * degF)}, + unitD{ + "N76", + "British thermal unit (international table) per second square foot degree Fahrenheit", + energy::btu_it / (s * ft.pow(2) * degF)}, + unitD{ + "N77", + "British thermal unit (thermochemical) per second square foot degree Fahrenheit", + energy::btu_th / (s * ft.pow(2) * degF)}, + unitD{ + "N78", + "kilowatt per square metre kelvin", + kilo* W / (m.pow(2) * K)}, + unitD{"N79", "kelvin per pascal", K / Pa}, + unitD{"N80", "watt per metre degree Celsius", W / (m * degC)}, + unitD{"N81", "kilowatt per metre kelvin", kilo* W / (m * K)}, + unitD{ + "N82", + "kilowatt per metre degree Celsius", + electrical::kW / (m * degC)}, + unitD{"N83", "metre per degree Celcius metre", m / (degC * m)}, + unitD{ + "N84", + "degree Fahrenheit hour per British thermal unit (international table)", + degF* hr / energy::btu_it}, + unitD{ + "N85", + "degree Fahrenheit hour per British thermal unit (thermochemical)", + degF* hr / energy::btu_th}, + unitD{ + "N86", + "degree Fahrenheit second per British thermal unit (international table)", + degF* s / energy::btu_it}, + unitD{ + "N87", + "degree Fahrenheit second per British thermal unit (thermochemical)", + degF* s / energy::btu_th}, + unitD{ + "N88", + "degree Fahrenheit hour square foot per British thermal unit " + "(international table) inch", + degF* hr* ft.pow(2) / energy::btu_it / in}, + unitD{ + "N89", + "degree Fahrenheit hour square foot per British thermal unit (thermochemical) inch", + degF* hr* ft.pow(2) / energy::btu_th / in}, + unitD{"N90", "kilofarad", kilo* F}, + unitD{"N91", "reciprocal joule", J.inv()}, + unitD{"N92", "picosiemens", pico* S}, + unitD{"N93", "ampere per pascal", A / Pa}, + unitD{"N94", "franklin", precise::cgs::statC_charge}, + unitD{"N95", "ampere minute", A* min}, + unitD{"N96", "biot", cgs::biot}, + unitD{"N97", "gilbert", cgs::gilbert}, + unitD{"N98", "volt per pascal", V / Pa}, + unitD{"N99", "picovolt", pico* V}, + unitD{"NA", "milligram per kilogram", mg / kg}, + unitD{ + "NAR", + "number of articles", + {1.0, count, commodities::packaging::article}}, + unitD{"NB", "barge", {1.0, count, commodities::packaging::barge}}, + unitD{ + "NBB", + "number of bobbins", + {1.0, count, commodities::packaging::bobbin}}, + unitD{"NC", "car", {1.0, count, commodities::packaging::car}}, + unitD{"NCL", "number of cells", {1.0, count, commodities::cell}}, + unitD{ + "ND", + "net barrel", + {1.0, us::barrel, commodities::packaging::net_quantity}}, + unitD{"NE", "net litre", {1.0, L, commodities::packaging::net}}, + unitD{"NEW", "newton", N}, + unitD{"NF", "message", {1.0, count, commodities::message}}, + unitD{"NG", "net gallon (us)", {1.0, gal, commodities::packaging::net}}, + unitD{"NH", "message hour", {1.0, hr, commodities::message}}, + unitD{ + "NI", + "net imperial gallon", + {1.0, imp::gallon, commodities::packaging::net}}, + unitD{"NIL", "nil", {1.0, count, commodities::blank}}, + unitD{"NIU", "international units", laboratory::IU}, + unitD{"NJ", "number of screens", {1.0, count, commodities::screen}}, + unitD{"NL", "load", {1.0, count, commodities::packaging::load}}, + unitD{"NMI", "nautical mile", nautical::mile}, + unitD{ + "NMP", + "number of packs", + {1.0, count, commodities::packaging::pack}}, + unitD{"NN", "train", {1.0, count, commodities::packaging::train}}, + unitD{ + "NPL", + "number of parcels", + {1.0, count, commodities::packaging::parcel}}, + unitD{"NPR", "number of pairs", {2.0, count}}, + unitD{ + "NPT", + "number of parts", + {1.0, count, commodities::packaging::part}}, + unitD{"NQ", "mho", ohm.inv()}, + unitD{"NR", "micromho", micro* ohm.inv()}, + unitD{ + "NRL", + "number of rolls", + {1.0, count, commodities::packaging::roll}}, + unitD{ + "NT", + "net ton", + {1.0, ton, commodities::packaging::net_quantity}}, + unitD{ + "NTT", + "net register ton", + {1.0, ton, commodities::packaging::net_register}}, + unitD{"NU", "newton metre", N* m}, + unitD{"NV", "vehicle", {1.0, count, commodities::vehicle}}, + unitD{"NX", "part per thousand", milli* count}, + unitD{ + "NY", + "pound per air dry metric ton", + lb / precise_unit(mass::tonne, commodities::packaging::dry)}, + unitD{"OA", "panel", {1.0, count, commodities::packaging::panel}}, + unitD{"ODE", "ozone depletion equivalent", climate::odp}, + unitD{"OHM", "ohm", ohm}, + unitD{"ON", "ounce per square yard", oz / yd.pow(2)}, + unitD{"ONZ", "ounce (avoirdupois)", av::ounce}, + unitD{"OP", "two pack", {2, count}}, + unitD{"OT", "overtime hour", {1.0, count, commodities::overtime}}, + unitD{"OZ", "ounce av", av::ounce}, + unitD{"OZA", "fluid ounce (US)", us::floz}, + unitD{"OZI", "fluid ounce (UK)", imp::floz}, + unitD{ + "P0", + "page - electronic", + {1.0, count, commodities::packaging::page_electronic}}, + unitD{"P1", "percent", percent}, + unitD{"P10", "coulomb per metre", C / m}, + unitD{"P11", "kiloweber", kilo* weber}, + unitD{"P12", "gamma{geo}", precise::nano* precise::T}, + unitD{"P13", "kilotesla", kilo* T}, + unitD{"P14", "joule per second", J / s}, + unitD{"P15", "joule per minute", J / min}, + unitD{"P16", "joule per hour", J / hr}, + unitD{"P17", "joule per day", J / day}, + unitD{"P18", "kilojoule per second", kilo* J / s}, + unitD{"P19", "kilojoule per minute", kilo* J / min}, + unitD{"P2", "pound per foot", lb / ft}, + unitD{"P20", "kilojoule per hour", kilo* J / hr}, + unitD{"P21", "kilojoule per day", kilo* J / day}, + unitD{"P22", "nanoohm", nano* ohm}, + unitD{"P23", "ohm circular-mil per foot", ohm* i::circ_mil / ft}, + unitD{"P24", "kilohenry", kilo* henry}, + unitD{"P25", "lumen per square foot", lm / ft.pow(2)}, + unitD{"P26", "phot", cgs::phot}, + unitD{"P27", "footcandle", precise::lumen / precise::ft.pow(2)}, + unitD{"P28", "candela per square inch", cd / in.pow(2)}, + unitD{ + "P29", + "footlambert", + {1.0 / constants::pi, precise::cd / precise::ft.pow(2)}}, + unitD{"P3", "three pack", {3, one}}, + unitD{"P30", "lambert", cgs::lambert}, + unitD{"P31", "stilb", cgs::stilb}, + unitD{"P32", "candela per square foot", cd / ft.pow(2)}, + unitD{"P33", "kilocandela", kilo* cd}, + unitD{"P34", "millicandela", milli* cd}, + unitD{"P35", "Hefner-Kerze", {0.903, cd}}, + unitD{"P36", "international candle", precise::lm / precise::sr}, + unitD{ + "P37", + "British thermal unit (international table) per square foot", + energy::btu_it / (ft.pow(2))}, + unitD{ + "P38", + "British thermal unit (thermochemical) per square foot", + energy::btu_th / (ft.pow(2))}, + unitD{ + "P39", + "calorie (thermochemical) per square centimetre", + energy::cal_th / cm.pow(2)}, + unitD{"P4", "four pack", {4, count}}, + unitD{"P40", "langley", cgs::langley}, + unitD{"P41", "decade (logarithmic)", log::logbase10}, + unitD{"P42", "pascal squared second", Pa.pow(2) * s}, + unitD{"P43", "bel per metre", log::bel / m}, + unitD{"P44", "pound mole", lb* mol}, + unitD{"P45", "pound mole per second", lb* mol / s}, + unitD{"P46", "pound mole per minute", lb* mol / min}, + unitD{"P47", "kilomole per kilogram", kilo* mol / kg}, + unitD{"P48", "pound mole per pound", lb* mol / lb}, + unitD{"P49", "newton square metre per ampere", N* m.pow(2) / A}, + unitD{"P5", "five pack", {5, one}}, + unitD{"P50", "weber metre", Wb* m}, + unitD{"P51", "mol per kilogram pascal", mol / (kg * Pa)}, + unitD{"P52", "mol per cubic metre pascal", mol / (m.pow(3) * Pa)}, + unitD{"P53", "unit pole", cgs::unitpole}, + unitD{"P54", "milligray per second", milli* gray / s}, + unitD{"P55", "microgray per second", micro* gray / s}, + unitD{"P56", "nanogray per second", nano* gray / s}, + unitD{"P57", "gray per minute", gray / min}, + unitD{"P58", "milligray per minute", milli* gray / min}, + unitD{"P59", "microgray per minute", micro* gray / min}, + unitD{"P6", "six pack", {6, one}}, + unitD{"P60", "nanogray per minute", gray / min}, + unitD{"P61", "gray per hour", gray / hr}, + unitD{"P62", "milligray per hour", milli* gray / hr}, + unitD{"P63", "microgray per hour", micro* gray / hr}, + unitD{"P64", "nanogray per hour", nano* gray / hr}, + unitD{"P65", "sievert per second", sievert / s}, + unitD{"P66", "millisievert per second", milli* sievert / s}, + unitD{"P67", "microsievert per second", micro* sievert / s}, + unitD{"P68", "nanosievert per second", nano* sievert / s}, + unitD{"P69", "rem per second", cgs::REM / s}, + unitD{"P7", "seven pack", {7, one}}, + unitD{"P70", "sievert per hour", sievert / hr}, + unitD{"P71", "millisievert per hour", milli* sievert / hr}, + unitD{"P72", "microsievert per hour", micro* sievert / hr}, + unitD{"P73", "nanosievert per hour", nano* sievert / hr}, + unitD{"P74", "sievert per minute", sievert / min}, + unitD{"P75", "millisievert per minute", milli* sievert / min}, + unitD{"P76", "microsievert per minute", micro* sievert / min}, + unitD{"P77", "nanosievert per minute", nano* sievert / min}, + unitD{"P78", "reciprocal square inch", in.pow(2).inv()}, + unitD{"P79", "pascal square metre per kilogram", Pa* m.pow(2) / kg}, + unitD{"P8", "eight pack", {8, one}}, + unitD{"P80", "millipascal per metre", milli* Pa / m}, + unitD{"P81", "kilopascal per metre", kilo* Pa / m}, + unitD{"P82", "hectopascal per metre", hecto* Pa / m}, + unitD{"P83", "standard atmosphere per metre", pressure::atm / m}, + unitD{"P84", "technical atmosphere per metre", pressure::att / m}, + unitD{"P85", "torr per metre", pressure::torr / m}, + unitD{"P86", "psi per inch", pressure::psi / in}, + unitD{ + "P87", + "cubic metre per second square metre", + m.pow(3) / (s * m.pow(2))}, + unitD{"P88", "rhe", {10.0, m* s / kg}}, + unitD{"P89", "pound-force foot per inch", lbf* ft / in}, + unitD{"P9", "nine pack", {9, one}}, + unitD{"P90", "pound-force inch per inch", lbf* in / in}, + unitD{"P91", "perm (0 degC)", {5.72135e-11, kg / (m.pow(2) * Pa * s)}}, + unitD{"P92", "perm (23 degC)", {5.74525e-11, kg / (m.pow(2) * Pa * s)}}, + unitD{"P93", "byte per second", data::byte / s}, + unitD{"P94", "kilobyte per second", data::kB / s}, + unitD{"P95", "megabyte per second", data::MB / s}, + unitD{"P96", "reciprocal volt", V.inv()}, + unitD{"P97", "reciprocal radian", rad.inv()}, + unitD{"P98", "pascal to the power sum of stoichiometric numbers", Pa}, + unitD{ + "P99", + "mole per cubic metre to the power sum of stoichiometric numbers", + mol / m.pow(3)}, + unitD{"PA", "packet", {1.0, count, commodities::packaging::packet}}, + unitD{"PAL", "pascal", Pa}, + unitD{"PB", "pair inch", {2, count* in}}, + unitD{"PD", "pad", {1.0, count, commodities::packaging::pad}}, + unitD{ + "PE", + "pound equivalent", + {10.0, lb, commodities::packaging::equivalent}}, + unitD{ + "PF", + "pallet (lift)", + {1.0, count, commodities::packaging::pallet}}, + unitD{ + "PFL", + "proof litre", + {1.0, + L, + commodities::packaging::equivalent + + commodities::chemicals::alcohol}}, + unitD{"PG", "plate", {1.0, count, commodities::packaging::plate}}, + unitD{ + "PGL", + "proof gallon", + {1.0, + gal, + commodities::packaging::equivalent + + commodities::chemicals::alcohol}}, + unitD{"PI", "pitch", {1.0, count / in, commodities::character}}, + unitD{"PK", "pack", {1.0, count, commodities::packaging::pack}}, + unitD{"PL", "pail", {1.0, count, commodities::packaging::pail}}, + unitD{ + "PLA", + "degree Plato", + {1.0, generate_custom_unit(112), commodities::sugar}}, + unitD{"PM", "pound percentage", lb* percent}, + unitD{ + "PN", + "pound net", + {1.0, lb, commodities::packaging::net_quantity}}, + unitD{"PO", "pound per inch of length", lb / in}, + unitD{ + "PQ", + "page per inch", + {1.0, count / in, commodities::packaging::page}}, + unitD{"PR", "pair", {2, count}}, + unitD{"PS", "pound-force per square inch", pressure::psi}, + unitD{"PT", "pint (US)", us::pint}, + unitD{"PTD", "dry pint (US)", us::dry::pint}, + unitD{"PTI", "pint (UK)", imp::pint}, + unitD{"PTL", "liquid pint (US)", us::pint}, + unitD{ + "PU", + "tray / tray pack", + {1.0, count, commodities::packaging::tray}}, + unitD{"PV", "half pint (US)", half* us::pint}, + unitD{"PW", "pound per inch of width", lb / in}, + unitD{"PY", "peck dry (US)", us::dry::peck}, + unitD{"PZ", "peck dry (UK)", imp::peck}, + unitD{"Q10", "joule per tesla", J / T}, + unitD{"Q11", "erlang", generate_custom_unit(49)}, + unitD{"Q12", "octet", precise_unit(8.0, precise::count)}, + unitD{"Q13", "octet per second", precise_unit(8.0, precise::count) / s}, + unitD{"Q14", "shannon", data::shannon}, + unitD{"Q15", "hartley", data::hartley}, + unitD{"Q16", "natural unit of information", data::bit_s}, + unitD{"Q17", "shannon per second", data::shannon / s}, + unitD{"Q18", "hartley per second", data::hartley / s}, + unitD{"Q19", "natural unit of information per second", data::bit_s / s}, + unitD{"Q20", "second per kilogramm", s / kg}, + unitD{"Q21", "watt square metre", W* m.pow(2)}, + unitD{"Q22", "second per radian cubic metre", s / (rad * m.pow(3))}, + unitD{"Q23", "weber to the power minus one", weber.inv()}, + unitD{"Q24", "reciprocal inch", in.inv()}, + unitD{"Q25", "dioptre", clinical::diopter}, + unitD{"Q26", "one per one", pu* count}, + unitD{"Q27", "newton metre per metre", N* m / m}, + unitD{ + "Q28", + "kilogram per square metre pascal second", + kg / (m.pow(2) * Pa * s)}, + unitD{"Q3", "meal", {1.0, count, commodities::meal}}, + unitD{ + "QA", + "page - facsimile", + {1.0, count, commodities::packaging::page}}, + unitD{"QAN", "quarter year", {0.25, yr}}, + unitD{ + "QB", + "page - hardcopy", + {1.0, count, commodities::packaging::page + commodities::paper}}, + unitD{"QD", "quarter dozen", {3, one}}, + unitD{"QH", "quarter hour", {0.25, hr}}, + unitD{"QK", "quarter kilogram", {0.25, kg}}, + unitD{ + "QR", + "quire", + {25.0, count, commodities::packaging::sheet + commodities::paper}}, + unitD{"QT", "quart (US)", us::quart}, + unitD{"QTD", "dry quart (US)", us::dry::quart}, + unitD{"QTI", "quart (UK)", imp::quart}, + unitD{"QTL", "liquid quart (US)", us::quart}, + unitD{"QTR", "quarter (UK)", {12.70059, kg}}, + unitD{"R1", "printers pica", typographic::printers::pica}, + unitD{"R4", "calorie", cal}, + unitD{"R9", "thousand cubic metre", kilo* m.pow(3)}, + unitD{"RA", "rack", precise_unit(count, commodities::packaging::rack)}, + unitD{"RD", "rod", us::rod}, + unitD{"RG", "ring", precise_unit(count, commodities::packaging::ring)}, + unitD{ + "RH", + "running or operating hour", + {1.0, hr, commodities::runtime}}, + unitD{ + "RK", + "roll metric measure", + {1.0, count, commodities::packaging::roll}}, + unitD{"RL", "reel", {1.0, count, commodities::packaging::reel}}, + unitD{"RM", "ream", {500, count, commodities::paper}}, + unitD{"RN", "ream metric measure", {500, count, commodities::paper}}, + unitD{"RO", "roll", precise_unit(count, commodities::packaging::roll)}, + unitD{"ROM", "room", {1.0, count, commodities::packaging::room}}, + unitD{ + "RP", + "pound per ream", + lb / precise_unit{500, count, commodities::paper}}, + unitD{"RPM", "revolutions per minute", rpm}, + unitD{"RPS", "revolutions per second", {constants::tau, rad* Hz}}, + unitD{"RS", "reset", {1.0, count, commodities::reset}}, + unitD{"RT", "revenue ton mile", currency* ton* mile}, + unitD{"RU", "run", {1.0, count, commodities::packaging::run}}, + unitD{"S3", "square foot per second", ft.pow(2) / s}, + unitD{"S4", "square metre per second", m.pow(2) / s}, + unitD{"S5", "sixty fourths of an inch", {1.0 / 64.0, in}}, + unitD{"S6", "session", {1.0, count, commodities::packaging::session}}, + unitD{ + "S7", + "storage unit", + {1.0, count, commodities::packaging::storage_unit}}, + unitD{"S8", "standard advertising unit", generate_custom_unit(380)}, + unitD{"SA", "sack", {1.0, count, commodities::packaging::sack}}, + unitD{"SAN", "half year", {0.5, yr}}, + unitD{"SCO", "score", {20.0, count}}, + unitD{"SCR", "scruple", apothecaries::scruple}, + unitD{"SD", "solid pound", {1.0, lb, commodities::packaging::bulk}}, + unitD{"SE", "section", us::section}, + unitD{"SEC", "second [unit of time]", s}, + unitD{"SET", "set", {1.0, count, commodities::packaging::set}}, + unitD{"SG", "segment", {1.0, count, commodities::packaging::segment}}, + unitD{"SHT", "shipping ton", {40.0, ft.pow(3)}}, + unitD{"SIE", "siemens", S}, + unitD{ + "SK", + "split tank truck", + {1.0, count, commodities::packaging::split_tank_truck}}, + unitD{ + "SL", + "slipsheet", + {1.0, count, commodities::packaging::slipsheet}}, + unitD{"SMI", "statute mile", mile}, + unitD{"SN", "square rod", us::rod.pow(2)}, + unitD{"SO", "spool", {1.0, count, commodities::packaging::spool}}, + unitD{ + "SP", + "shelf package", + {1.0, count, commodities::packaging::shelf_package}}, + unitD{"SQ", "square", {1.0, count, commodities::packaging::square}}, + unitD{ + "SQR", + "square, roofing", + {1.0, count, commodities::packaging::square}}, + unitD{"SR", "strip", {1.0, count, commodities::packaging::strip}}, + unitD{ + "SS", + "sheet metric measure", + {1.0, count, commodities::packaging::sheet}}, + unitD{ + "SST", + "short standard (7200 matches)", + {7200.0, count, commodities::matches}}, + unitD{"ST", "sheet", {1.0, count, commodities::packaging::sheet}}, + unitD{"STC", "stick", {1.0, count, commodities::packaging::stick}}, + unitD{"STI", "stone (UK)", imp::stone}, + unitD{ + "STK", + "stick, cigarette", + {1.0, + count, + commodities::packaging::stick + commodities::cigarette}}, + unitD{"STL", "standard litre", L}, + unitD{"STN", "ton (US)", av::ton}, + unitD{"STW", "straw", {1.0, count, commodities::packaging::straw}}, + unitD{"SV", "skid", {1.0, count, commodities::packaging::skid}}, + unitD{"SW", "skein", {1.0, count, commodities::packaging::skein}}, + unitD{"SX", "shipment", {1.0, count, commodities::packaging::shipment}}, + unitD{"SYR", "syringe", {1.0, count, commodities::packaging::syringe}}, + unitD{ + "T0", + "telecommunication line in service", + {1.0, count, commodities::linesofservice}}, + unitD{ + "T1", + "thousand pound gross", + {1000.0, lb, commodities::packaging::gross_quantity}}, + unitD{ + "T3", + "thousand piece", + {1000.0, count, commodities::packaging::piece}}, + unitD{ + "T4", + "thousand bag", + {1000.0, count, commodities::packaging::bag}}, + unitD{ + "T5", + "thousand casing", + {1000.0, count, commodities::packaging::casing}}, + unitD{"T6", "thousand gallon (US)", thousand* us::gallon}, + unitD{ + "T7", + "thousand impression", + {1000.0, count, commodities::impression}}, + unitD{ + "T8", + "thousand linear inch", + {1000.0, in, commodities::packaging::linear}}, + unitD{"TA", "tenth cubic foot", {0.1, ft.pow(3)}}, + unitD{"TAH", "kiloampere hour", kilo* A* hr}, + unitD{"TAN", "total acid number", generate_custom_unit(213)}, + unitD{"TC", "truckload", {1.0, count, commodities::packaging::truck}}, + unitD{"TD", "therm", energy::therm_ec}, + unitD{"TE", "tote", {1.0, count, commodities::packaging::tote}}, + unitD{"TF", "ten square yard", ten* yd.pow(2)}, + unitD{"TI", "thousand square inch", kilo* in.pow(2)}, + unitD{"TIC", "metric ton, including container", mass::tonne}, + unitD{"TIP", "metric ton, including inner packaging", mass::tonne}, + unitD{"TJ", "thousand square centimetre", kilo* cm.pow(2)}, + unitD{ + "TK", + "tank, rectangular", + {1.0, count, commodities::packaging::tank}}, + unitD{"TKM", "tonne kilometre", mass::tonne* km}, + unitD{ + "TL", + "thousand foot linear", + {1000.0, ft, commodities::packaging::linear}}, + unitD{ + "TMS", + "kilogram of imported meat, less offal", + {1.0, kg, commodities::generateHarmonizedCode(1, 2, 0)}}, + unitD{"TN", "tin", {1.0, count, commodities::packaging::small_tin}}, + unitD{"TNE", "tonne", mass::tonne}, + unitD{"TP", "ten pack", {10.0, count, commodities::packaging::pack}}, + unitD{"TPR", "ten pair", {20, count}}, + unitD{"TQ", "thousand foot", kilo* ft}, + unitD{ + "TQD", + "thousand cubic metre per day", + kilo* m.pow(3) / time::day}, + unitD{"TR", "ten square foot", ten* ft.pow(2)}, + unitD{"TRL", "trillion (EUR)", {10e18, one}}, + unitD{"TS", "thousand square foot", kilo* ft.pow(2)}, + unitD{ + "TSD", + "tonne of substance 90 % dry", + {1.0, mass::tonne, commodities::packaging::dry90}}, + unitD{ + "TSH", + "ton of steam per hour", + precise_unit(1.0, ton, commodities::steam) / hr}, + unitD{"TST", "ten set", {10.0, count, commodities::packaging::set}}, + unitD{ + "TT", + "thousand linear metre", + {1000.0, m, commodities::packaging::linear}}, + unitD{ + "TTS", + "ten thousand sticks", + precise_unit(10000, count, commodities::packaging::stick)}, + unitD{ + "TU", + "tube", + precise_unit(1, count, commodities::packaging::tube)}, + unitD{"TV", "thousand kilogram", thousand* kg}, + unitD{ + "TW", + "thousand sheet", + precise_unit(1.0, thousand, commodities::packaging::sheet)}, + unitD{ + "TY", + "tank, cylindrical", + precise_unit(1.0, count, commodities::packaging::cylindrical_tank)}, + unitD{ + "U1", + "treatment", + {1.0, count, commodities::packaging::treatment}}, + unitD{ + "U2", + "tablet", + precise_unit(1.0, count, commodities::packaging::tablet)}, + unitD{"UA", "torr", pressure::torr}, + unitD{ + "UB", + "telecommunication line in service average", + precise_unit(1.0, count, commodities::linesofservice)}, + unitD{"UC", "telecommunication port", {1.0, count, commodities::port}}, + unitD{"UD", "tenth minute", {0.1, min}}, + unitD{"UE", "tenth hour", {0.1, hr}}, + unitD{ + "UF", + "usage per telecommunication line average", + count / precise_unit(1.0, one, commodities::linesofservice)}, + unitD{"UH", "ten thousand yard", {10000.0, yd}}, + unitD{"UM", "million unit", mega* count}, + unitD{"VA", "volt - ampere per kilogram", V* A / kg}, + unitD{"VI", "vial", precise_unit(count, commodities::packaging::vial)}, + unitD{"VLT", "volt", V}, + unitD{"VP", "percent volume", precise_unit(0.01, pu* m.pow(3))}, + unitD{"VQ", "bulk", precise_unit(count, commodities::packaging::bulk)}, + unitD{"VS", "visit", precise_unit(count, commodities::visit)}, + unitD{"W2", "wet kilo", precise_unit(kg, commodities::packaging::wet)}, + unitD{"W4", "two week", {2.0, time::week}}, + unitD{"WA", "watt per kilogram", W / kg}, + unitD{"WB", "wet pound", {1.0, lb, commodities::packaging::wet}}, + unitD{"WCD", "cord", us::cord}, + unitD{"WE", "wet ton", {1.0, ton, commodities::packaging::wet}}, + unitD{"WEB", "weber", weber}, + unitD{"WEE", "week", time::week}, + unitD{"WG", "wine gallon", us::gallon}, + unitD{"WH", "wheel", {1.0, count, commodities::packaging::wheel}}, + unitD{"WHR", "watt hour", W* hr}, + unitD{"WI", "weight per square inch", lb / in.pow(2)}, + unitD{"WM", "working month", {1.0, time::mog, commodities::labor}}, + unitD{"WR", "wrap", {1.0, count, commodities::packaging::wrap}}, + unitD{"WSD", "standard", {4.672, m.pow(3), commodities::lumber}}, + unitD{"WTT", "watt", W}, + unitD{"WW", "millilitre of water", {1.0, mL, commodities::water}}, + unitD{"X1", "Gunter's chain", us::engineers::chain}, + unitD{"YDK", "square yard", yd.pow(2)}, + unitD{"YDQ", "cubic yard", yd.pow(3)}, + unitD{ + "YL", + "hundred linear yard", + {100.0, yd, commodities::packaging::linear}}, + unitD{"YRD", "yard", yd}, + unitD{"YT", "ten yard", {10.0, yd}}, + unitD{ + "Z1", + "lift van", + precise_unit(count, commodities::packaging::lift_van)}, + unitD{ + "Z11", + "hanging container", + precise_unit(count, commodities::packaging::hanging_container)}, + unitD{ + "Z2", + "chest", + precise_unit(count, commodities::packaging::chest)}, + unitD{"Z3", "cask", {1.0, count, commodities::packaging::cask}}, + unitD{"Z4", "hogshead", us::hogshead}, + unitD{"Z5", "lug", {1.0, count, commodities::packaging::lug}}, + unitD{"Z6", "conference point", generate_custom_unit(811)}, + unitD{ + "Z8", + "newspage agate line", + precise_unit(1.0 / 14, in) * precise_unit(2.0, in)}, + unitD{"ZP", "page", {1.0, count, commodities::packaging::page}}, + unitD{"ZZ", "mutually defined", generate_custom_unit(262)}, + }}; + +} // namespace precise precise_unit r20_unit(const std::string& r20_string) { // NOLINTNEXTLINE (readability-qualified-auto) auto ind = std::lower_bound( - r20_units.begin(), - r20_units.end(), + precise::r20_units.begin(), + precise::r20_units.end(), r20_string, - [](const unitD& u_set, const std::string& val) { + [](const precise::unitD& u_set, const std::string& val) { return (strcmp(std::get<0>(u_set), val.c_str()) < 0); }); + if (ind == precise::r20_units.end()) { + return precise::invalid; + } if (strcmp(std::get<0>(*ind), r20_string.c_str()) == 0) { return std::get<2>(*ind); } - return precise::error; + return precise::invalid; } -} // namespace UNITS_NAMESPACE +#ifdef ENABLE_UNIT_MAP_ACCESS +namespace detail { + const void* r20rawData(size_t& array_size) + { + array_size = precise::r20_units.size(); + return precise::r20_units.data(); + } +} // namespace detail + +#endif + +} // namespace units diff --git a/units/unit_definitions.hpp b/units/unit_definitions.hpp index fd8faae5..24f7bf66 100644 --- a/units/unit_definitions.hpp +++ b/units/unit_definitions.hpp @@ -6,6 +6,7 @@ SPDX-License-Identifier: BSD-3-Clause */ #pragma once +#include "commodity_definitions.hpp" #include "units_decl.hpp" #include @@ -21,7 +22,7 @@ static_assert( "nan is used to signify invalid values"); static_assert( std::numeric_limits::has_infinity, - "nan is used to signify invalid values"); + "infinity value is required for some constructs"); namespace constants { constexpr double pi = 3.14159265358979323846; constexpr double tau = 2.0 * pi; @@ -32,98 +33,6 @@ namespace constants { constexpr double speed_of_light = 299792458.0; // speed of light in m/s } // namespace constants -/// basic commodity definitions -namespace commodities { - // https://en.wikipedia.org/wiki/List_of_traded_commodities - enum commodity : std::uint32_t { - water = 1, - // metals - gold = 2, - copper = 4, - silver = 6, - platinum = 7, - palladium = 8, - zinc = 9, - tin = 10, - lead = 11, - aluminum = 12, - alluminum_alloy = 13, - nickel = 14, - cobolt = 15, - molybdenum = 16, - carbon = 17, - - // energy - oil = 101, - heat_oil = 102, - nat_gas = 103, - brent_crude = 104, - ethanol = 105, - propane = 107, - // grains - wheat = 404, - corn = 405, - soybeans = 406, - soybean_meal = 407, - soybean_oil = 408, - oats = 409, - rice = 410, - red_wheat = 411, - spring_wheat = 412, - canola = 413, - rough_rice = 414, - rapeseed = 415, - adzuci = 418, - barley = 420, - // meats - live_cattle = 601, - feeder_cattle = 602, - lean_hogs = 603, - milk = 604, - - // soft - cotton = 945, - orange_juice = 947, - sugar = 948, - sugar_11 = 949, - sugar_14 = 950, - coffee = 952, - cocoa = 961, - palm_oil = 971, - rubber = 999, - wool = 946, - lumber = 5007, - - // other common unit blocks - people = 115125, - passenger = 115126, - particles = 117463, - vehicle = 43567, - freight = 56226, - - // clinical - tissue = 4622626, - cell = 45236884, - embryo = 52632253, - Hahnemann = 2352622, - Korsakov = 262626562, - protein = 325255, - creatinine = 2566225, - - // computer - pixel = 516115414, - voxel = 516115415, - errors = 516115418, - flop = 215262, - instruction = 452255, - - // emmissions - - // food - capsaicin = 623452, - }; -} // namespace commodities - namespace precise { // base units constexpr precise_unit @@ -165,25 +74,28 @@ namespace precise { constexpr precise_unit defunit(detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0)); constexpr precise_unit - invalid(detail::unit_data(nullptr), constants::invalid_conversion); + invalid(constants::invalid_conversion, detail::unit_data(nullptr)); constexpr precise_unit error(detail::unit_data(nullptr)); /// Define some unitless numbers constexpr precise_unit one; constexpr precise_unit hundred = precise_unit(100.0, one); + constexpr precise_unit thousand = precise_unit(1000.0, one); constexpr precise_unit ten = precise_unit(10.0, one); + constexpr precise_unit half = precise_unit(0.5, one); + constexpr precise_unit quarter = precise_unit(0.25, one); constexpr precise_unit percent(0.01, one); constexpr precise_unit ratio = one; constexpr precise_unit infinite( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - constants::infinity); + constants::infinity, + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); constexpr precise_unit neginfinite( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - -constants::infinity); + -constants::infinity, + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); constexpr precise_unit - nan(detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - constants::invalid_conversion); + nan(constants::invalid_conversion, + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); // SI prefixes as units constexpr precise_unit deci(1e-1, one); constexpr precise_unit centi(1e-2, one); @@ -199,6 +111,7 @@ namespace precise { constexpr precise_unit quecto(1e-30, one); constexpr precise_unit deka(10, one); + constexpr precise_unit deca(10, one); constexpr precise_unit hecto(1e2, one); constexpr precise_unit kilo(1e3, one); constexpr precise_unit mega(1e6, one); @@ -508,6 +421,7 @@ namespace precise { constexpr precise_unit hogshead{63.0, gallon}; constexpr precise_unit cord{128.0, i::foot.pow(3)}; constexpr precise_unit fifth{0.2, gallon}; + constexpr precise_unit ale_gallon{282.0, i::inch.pow(3)}; /// Us customary dry measurements namespace dry { @@ -519,6 +433,7 @@ namespace precise { constexpr precise_unit barrel{7056, i::inch.pow(3)}; constexpr precise_unit sack{3.0, bushel}; constexpr precise_unit strike{2.0, bushel}; + constexpr precise_unit winchester_gallon{268.8, precise::in.pow(3)}; } // namespace dry namespace grain { constexpr precise_unit bushel_corn{56.0, av::pound}; @@ -585,6 +500,7 @@ namespace precise { constexpr precise_unit rood{1011.7141056, m* m}; // volume constexpr precise_unit gallon{4546.09, mL}; + constexpr precise_unit winegallon{231.0, in.pow(3)}; constexpr precise_unit quart{0.25, gallon}; constexpr precise_unit pint{0.5, quart}; constexpr precise_unit gill{0.25, pint}; @@ -593,13 +509,14 @@ namespace precise { constexpr precise_unit tbsp{0.5, floz}; constexpr precise_unit tsp{1.0 / 3.0, tbsp}; - constexpr precise_unit barrel{36.0, gallon}; + constexpr precise_unit winebarrel{36.0, gallon}; + constexpr precise_unit bbl{35.0, gallon, commodities::oil}; constexpr precise_unit peck{2.0, gallon}; constexpr precise_unit bushel{4.0, peck}; constexpr precise_unit dram{1.0 / 8.0, floz}; constexpr precise_unit minim{1.0 / 60.0, dram}; // weight - constexpr precise_unit drachm{1.7718451953125, g}; + constexpr precise_unit drachm{3.8879346, g}; constexpr precise_unit stone{6350.29318, g}; constexpr precise_unit hundredweight{112.0, av::pound}; constexpr precise_unit ton{2240.0, av::pound}; @@ -801,8 +718,8 @@ namespace precise { constexpr precise_unit atm(101325.0, Pa); constexpr precise_unit psi{6894.757293168, Pa}; constexpr precise_unit psig = psi * eflag; - constexpr precise_unit inHg{3376.849669, Pa}; // at 60 degF - constexpr precise_unit mmHg{133.322387415, Pa}; + constexpr precise_unit mmHg{133.322387415, Pa}; // at 0 deg C + constexpr precise_unit inHg{25.4, mmHg}; // at 32 degF constexpr precise_unit torr{ 1.0 / 760.0, atm* iflag}; // this is really @@ -813,6 +730,22 @@ namespace precise { constexpr precise_unit att = gm::at; //!< technical atmosphere same as //!< gravitational metric system + + namespace bases { + constexpr precise_unit water{inH2O / in}; + constexpr precise_unit Hg{mmHg / mm}; + constexpr precise_unit Hg_0 = Hg; + constexpr precise_unit Hg_4 = + precise_unit(98.0637795, Pa) / precise::cm; + constexpr precise_unit water_39 = + precise_unit(2988.98400, Pa) / precise::ft; + constexpr precise_unit water_4 = water_39; + constexpr precise_unit Hg_32 = + precise_unit(3383.93102, Pa) / precise::in; + constexpr precise_unit Hg_60 = + precise_unit(3376.84789, Pa) / precise::in; + constexpr precise_unit water_60 = water; + } // namespace bases } // namespace pressure // Power system units @@ -843,7 +776,7 @@ namespace precise { constexpr precise_unit hpI(745.69987158227022, W); // mechanical horsepower constexpr precise_unit hpS(9812.5, W); // Boiler(steam) horsepower - constexpr precise_unit hpM(735.49875, W); // Mechanical horsepower + constexpr precise_unit hpM(735.49875, W); // metric horsepower } // namespace power @@ -1227,6 +1160,11 @@ namespace precise { return std::pow(3.0, val); case 15: return std::exp(val / 0.5); + case 16: // API Gravity + return 141.5 / (val + 131.5); + case 17: // degrees Baume + return (val > 0.0) ? (140.0 / (130.0 + val)) : + (145.0 / (145.0 - val)); case 22: // saffir simpson hurricane wind scale { double out = -0.17613636364; @@ -1302,6 +1240,11 @@ namespace precise { return std::log10(val) / std::log10(3); case 15: return 0.5 * (std::log)(val); + case 16: // API Gravity + return 141.5 / (val)-131.5; + case 17: // degree Baume + return (val > 1.0) ? (145.0 * (1.0 - 1 / val)) : + (140.0 / val - 130); case 22: // saffir simpson hurricane scale from wind speed { // using horners method on polynomial approximation of // saffir-simpson wind speed scale @@ -1359,7 +1302,7 @@ namespace precise { constexpr precise_unit met = precise_unit{3.5, mL / min / kg}; //!< metabolic equivalent constexpr precise_unit hounsfield = generate_custom_unit(37); - + constexpr precise_unit AHF = generate_custom_unit(38); } // namespace clinical /// Units used in chemical and biological laboratories @@ -1464,6 +1407,13 @@ namespace precise { constexpr precise_unit rootMeter = precise_unit( detail::unit_data(-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0)); + // custom defined unit of loudness + constexpr precise_unit sone = generate_custom_unit(40); + // for measuring density in liquids(mainly petroleum products) + constexpr precise_unit degreeAPI = + precise_unit(custom::equation_unit(16)) * g / mL; + constexpr precise_unit degreeBaume = + precise_unit(custom::equation_unit(17)) * g / mL; } // namespace special namespace other { @@ -1471,7 +1421,7 @@ namespace precise { constexpr precise_unit ppm(1e-6, count); constexpr precise_unit ppb(1e-9, count); - constexpr precise_unit candle{0.981, cd}; + constexpr precise_unit candle{0.98135426889107, cd}; // 2019 redefinition constexpr precise_unit faraday{96485.3321233100184, C}; // others @@ -1487,6 +1437,8 @@ namespace precise { constexpr precise_unit gwp = generate_custom_unit(77); // global temperature change potential constexpr precise_unit gtp = generate_custom_unit(78); + // ozone depletion unit + constexpr precise_unit odp = generate_custom_unit(79); } // namespace climate constexpr precise_unit rpm = other::rpm; } // namespace precise @@ -1515,7 +1467,7 @@ constexpr unit rad = unit_cast(precise::rad); constexpr unit defunit = unit_cast(precise::defunit); constexpr unit - invalid(detail::unit_data(nullptr), constants::invalid_conversion); + invalid(constants::invalid_conversion, detail::unit_data(nullptr)); /// Check if a precise unit is a default unit constexpr inline bool is_default(const precise_unit& utest) @@ -1569,6 +1521,8 @@ constexpr inline bool is_valid(const unit& utest) } // SI prefixes as units +constexpr unit deci(0.1, one); +constexpr unit centi(1e-2, one); constexpr unit milli(1e-3, one); constexpr unit micro(1e-6, one); constexpr unit nano(1e-9, one); @@ -1702,9 +1656,9 @@ namespace detail { val *= 9.0 / 5.0; val += 32.0; } else if (result.multiplier() != 1.0) { - if (result.multiplier() < 25.5 && result.multiplier() >= 0.0) { + if (result.multiplier() < 29.5 && result.multiplier() >= 0.0) { val = (val - - biasTable[static_cast(start.multiplier())]) / + biasTable[static_cast(result.multiplier())]) / result.multiplier(); } else { val = val / result.multiplier(); @@ -1992,15 +1946,19 @@ namespace detail { inline double otherUsefulConversions(double val, const UX& start, const UX2& result) { - if (start.has_same_base(N) && result.has_same_base(kg)) { - // weight to mass - return val * start.multiplier() / constants::standard_gravity / - result.multiplier(); - } - if (start.has_same_base(kg) && result.has_same_base(N)) { - // mass to weight - return val * start.multiplier() * constants::standard_gravity / - result.multiplier(); + if (start.base_units().kg() == result.base_units().kg()) { + if ((start.base_units() / result.base_units()) + .has_same_base((m / s.pow(2)).base_units())) { + // weight to mass + return val * start.multiplier() / constants::standard_gravity / + result.multiplier(); + } + if ((result.base_units() / start.base_units()) + .has_same_base((m / s.pow(2)).base_units())) { + // mass to weight + return val * start.multiplier() * constants::standard_gravity / + result.multiplier(); + } } if (unit_cast(start) == kilo) { if (result.has_same_base(kg)) { diff --git a/units/units.cpp b/units/units.cpp index a83cce9e..456ca984 100644 --- a/units/units.cpp +++ b/units/units.cpp @@ -86,7 +86,7 @@ unit root(const unit& un, int power) return error; } return unit{ - un.base_units().root(power), numericalRoot(un.multiplier(), power)}; + numericalRoot(un.multiplier(), power), un.base_units().root(power)}; } precise_unit root(const precise_unit& un, int power) @@ -98,7 +98,7 @@ precise_unit root(const precise_unit& un, int power) return precise::invalid; } return precise_unit{ - un.base_units().root(power), numericalRoot(un.multiplier(), power)}; + numericalRoot(un.multiplier(), power), un.base_units().root(power)}; } measurement root(const measurement& meas, int power) @@ -307,14 +307,18 @@ static bool ReplaceStringInPlace( const char* search, int searchSize, const char* replace, - int replaceSize) + int replaceSize, + std::size_t& firstReplacementIndex) { bool changed{false}; - size_t pos = 0; + std::size_t pos{0}; while ((pos = subject.find(search, pos)) != std::string::npos) { subject.replace(pos, searchSize, replace); + if (!changed) { + changed = true; + firstReplacementIndex = pos; + } pos += replaceSize; - changed = true; } return changed; } @@ -1296,14 +1300,14 @@ static std::string switch (std::fpclassify(un.multiplier())) { case FP_INFINITE: { std::string inf = (un.multiplier() > 0.0) ? "INF" : "-INF"; - un = precise_unit(un.base_units(), 1.0); + un = precise_unit(un.base_units()); if (un == precise::one) { return inf; } return inf + '*' + to_string_internal(un, match_flags); } case FP_NAN: - un = precise_unit(un.base_units(), 1.0); + un = precise_unit(un.base_units()); if (is_error(un)) { return "NaN*ERROR"; } @@ -1314,7 +1318,7 @@ static std::string case FP_SUBNORMAL: case FP_ZERO: // either denormal or 0.0 in either case close enough to 0 - un = precise_unit(un.base_units(), 1.0); + un = precise_unit(un.base_units()); if (un == precise::one) { return "0"; } @@ -1329,7 +1333,7 @@ static std::string // one is if (std::fpclassify(llunit.multiplier_f()) != FP_NORMAL) { auto mstring = getMultiplierString(un.multiplier(), true); - un = precise_unit(un.base_units(), 1.0); + un = precise_unit(un.base_units()); mstring.push_back('*'); mstring.append(to_string_internal(un, match_flags)); @@ -1350,7 +1354,7 @@ static std::string } if (un.base_units().empty()) { auto mstring = getMultiplierString(un.multiplier(), true); - un = precise_unit(un.base_units(), 1.0); + un = precise_unit(un.base_units()); if (un == precise::one) { return mstring; } @@ -1430,7 +1434,7 @@ static std::string // so numbers must be exact auto mult = getMultiplierString(urem.multiplier(), false); if (mult.size() > 5 && isNumericalStartCharacter(mult[0])) { - urem = precise_unit(urem.base_units(), 1.0); + urem = precise_unit(urem.base_units()); if (!urem.base_units().empty()) { return mult + '*' + to_string_internal(urem, match_flags) + '*' + cxstr; @@ -1517,7 +1521,7 @@ static std::string } if (!isNumericalStartCharacter(mult.front())) { - nu = precise_unit{nu.base_units(), 1.0}; + nu = precise_unit{nu.base_units()}; std::string rstring = mult + siU.second; rstring.push_back('*'); rstring.append(to_string_internal(nu, match_flags)); @@ -1548,7 +1552,7 @@ static std::string } if (!isNumericalStartCharacter(mult.front())) { - nu = precise_unit{nu.base_units(), 1.0}; + nu = precise_unit{nu.base_units()}; std::string rstring{to_string_internal(nu, match_flags)}; rstring.push_back('/'); rstring.append(mult); @@ -2082,6 +2086,7 @@ double generateLeadingNumber(const std::string& ustring, size_t& index) noexcept index = 0; double val = getNumberBlock(ustring, index); if (std::isnan(val)) { + index = 0; return val; } while (true) { @@ -2092,6 +2097,7 @@ double generateLeadingNumber(const std::string& ustring, size_t& index) noexcept case '.': case '-': case '+': + index = 0; return constants::invalid_conversion; case '/': case '*': @@ -2388,9 +2394,10 @@ static UNITS_CPP14_CONSTEXPR_OBJECT std::array prefixWords{{ utup{"hella", 1e27, 5}, }}; +static const std::array Esegs{{"()", "[]", "{}", "<>"}}; + bool clearEmptySegments(std::string& unit) { - static const std::array Esegs{{"()", "[]", "{}", "<>"}}; bool changed = false; for (const auto& seg : Esegs) { auto fnd = unit.find(seg); @@ -2429,21 +2436,29 @@ enum class modifier : int { using modSeq = std::tuple; static bool wordModifiers(std::string& unit) { - static UNITS_CPP14_CONSTEXPR_OBJECT std::array modifiers{{ + static UNITS_CPP14_CONSTEXPR_OBJECT std::array modifiers{{ + modSeq{"reciprocalsquare", "^-2", 16, modifier::start_tail}, + modSeq{"reciprocalcubic", "^-3", 15, modifier::start_tail}, modSeq{"squaremeter", "m^2", 11, modifier::anywhere_tail}, modSeq{"cubicmeter", "m^3", 10, modifier::anywhere_tail}, modSeq{"cubic", "^3", 5, modifier::start_tail}, modSeq{"reciprocal", "^-1", 10, modifier::start_tail}, modSeq{"reciprocal", "^-1", 10, modifier::tail_replace}, modSeq{"square", "^2", 6, modifier::start_tail}, - modSeq{"squared", "^2", 7, modifier::tail_replace}, - modSeq{"cubed", "^3", 5, modifier::tail_replace}, + modSeq{"squared", "^2", 7, modifier::start_tail}, + modSeq{"cubed", "^2", 7, modifier::start_tail}, modSeq{"cu", "^3", 2, modifier::start_tail}, modSeq{"sq", "^2", 2, modifier::start_tail}, + modSeq{"tenthousand", "10000", 11, modifier::anywhere_replace}, + modSeq{"tenths", "0.1", 5, modifier::anywhere_replace}, modSeq{"tenth", "0.1", 5, modifier::anywhere_replace}, modSeq{"ten", "10", 3, modifier::anywhere_replace}, modSeq{"one", "", 3, modifier::start_replace}, modSeq{"quarter", "0.25", 7, modifier::anywhere_replace}, + modSeq{"eighth", "0.125", 6, modifier::anywhere_replace}, + modSeq{"sixteenth", "0.0625", 9, modifier::anywhere_replace}, + modSeq{"thirtyseconds", "0.03125", 13, modifier::anywhere_replace}, + modSeq{"sixtyfourths", "0.015625", 12, modifier::anywhere_replace}, modSeq{"half", "0.5", 4, modifier::anywhere_replace}, modSeq{"hundred", "100", 7, modifier::anywhere_replace}, modSeq{"million", "1e6", 7, modifier::anywhere_replace}, @@ -2454,6 +2469,8 @@ static bool wordModifiers(std::string& unit) modSeq{"tothefourthpower", "^4", 16, modifier::anywhere_replace}, modSeq{"tothefifthpower", "^5", 15, modifier::anywhere_replace}, modSeq{"tothesixthpower", "^6", 15, modifier::anywhere_replace}, + modSeq{"squared", "^2", 7, modifier::anywhere_replace}, + modSeq{"cubed", "^3", 5, modifier::anywhere_replace}, modSeq{"square", "^2", 6, modifier::anywhere_tail}, modSeq{"cubic", "^3", 5, modifier::anywhere_tail}, modSeq{"sq", "^2", 2, modifier::tail_replace}, @@ -2547,25 +2564,193 @@ static bool wordModifiers(std::string& unit) return false; } + using ckpair = std::pair; +static const std::unordered_map modifiers{ + ckpair{"internationaltable", "IT"}, + ckpair{"internationalsteamtable", "IT"}, + ckpair{"international table", "IT"}, + ckpair{"international steamtable", "IT"}, + ckpair{"international", "i"}, + ckpair{"USandBritish", "av"}, + ckpair{"US and British", "av"}, + ckpair{"US&British", "av"}, + ckpair{"US & British", "av"}, + ckpair{"USAsurvey", "US"}, + ckpair{"USA survey", "US"}, + ckpair{"USsurvey", "US"}, + ckpair{"US survey", "US"}, + ckpair{"USSurvey", "US"}, + ckpair{"US Survey", "US"}, + ckpair{"USPetroleum", "US"}, + ckpair{"USshipping", "ship"}, + ckpair{"oil", "US"}, + ckpair{"USdry", "US"}, + ckpair{"US dry", "US"}, + ckpair{"USA", "US"}, + ckpair{"USstatute", "US"}, + ckpair{"US statute", "US"}, + ckpair{"statutory", "US"}, + ckpair{"statute", "US"}, + ckpair{"shipping", "ship"}, + ckpair{"gregorian", "g"}, + ckpair{"Gregorian", "g"}, + ckpair{"angle", "ang"}, + ckpair{"synodic", "s"}, + ckpair{"sidereal", "sdr"}, + ckpair{"30-day", "[30]"}, + ckpair{"flux", "flux"}, + ckpair{"charge", "charge"}, + ckpair{"julian", "j"}, + ckpair{"Julian", "j"}, + ckpair{"thermochemical", "th"}, + ckpair{"electric", "electric"}, + ckpair{"electrical", "electric"}, + ckpair{"time", "time"}, + ckpair{"unitoftime", "time"}, + ckpair{"unit of time", "time"}, + ckpair{"Th", "th"}, + ckpair{"th", "th"}, + ckpair{"metric", "m"}, + ckpair{"mean", "m"}, + ckpair{"imperial", "br"}, + ckpair{"Imperial", "br"}, + ckpair{"English", "br"}, + ckpair{"EUR", "br"}, + ckpair{"UKPetroleum", "brl"}, + ckpair{"imp", "br"}, + ckpair{"wine", "wine"}, + ckpair{"beer", "wine"}, + ckpair{"US", "US"}, + ckpair{"30-day", "30"}, + ckpair{"IT", "IT"}, + ckpair{"troy", "tr"}, + ckpair{"apothecary", "ap"}, + ckpair{"apothecaries", "ap"}, + ckpair{"avoirdupois", "av"}, + ckpair{"Chinese", "cn"}, + ckpair{"chinese", "cn"}, + ckpair{"Canadian", "ca"}, + ckpair{"canadian", "ca"}, + ckpair{"survey", "US"}, + ckpair{"tropical", "t"}, + ckpair{"British", "br"}, + ckpair{"british", "br"}, + ckpair{"Br", "br"}, + ckpair{"BR", "br"}, + ckpair{"UK", "br"}, + ckpair{"EUR", "br"}, + ckpair{"conventional", "[90]"}, + ckpair{"AC", "ac"}, + ckpair{"DC", "dc"}, + ckpair{"ang", "ang"}, + ckpair{"angle", "ang"}, + ckpair{"unitofangle", "ang"}, + ckpair{"unit of angle", "ang"}, + ckpair{"H2O", "H2O"}, + ckpair{"water", "H2O"}, + ckpair{"Hg", "Hg"}, + ckpair{"HG", "Hg"}, + ckpair{"mercury", "Hg"}, + ckpair{"mechanical", "mech"}, + ckpair{"hydraulic", "mech"}, + ckpair{"air", "mech"}, + ckpair{"boiler", "steam"}, + ckpair{"steam", "steam"}, + ckpair{"refrigeration", "cooling"}, + ckpair{"cooling", "cooling"}, + ckpair{"cloth", "cloth"}, + ckpair{"clothing", "cloth"}, + ckpair{"15degC", "[15]"}, + ckpair{"20degC", "[20]"}, + ckpair{"59degF", "[59]"}, + ckpair{"60degF", "[60]"}, + ckpair{"39degF", "[39]"}, + ckpair{"23degC", "[23]"}, + ckpair{"23 degC", "[23]"}, + ckpair{"0degC", "[00]"}, + ckpair{"39.2degF", "[39]"}, + ckpair{"4degC", "[04]"}, + ckpair{"15 degC", "[15]"}, + ckpair{"20 degC", "[20]"}, + ckpair{"59 degF", "[59]"}, + ckpair{"60 degF", "[60]"}, + ckpair{"39 degF", "[39]"}, + ckpair{"0 degC", "[00]"}, + ckpair{"39.2 degF", "[39]"}, + ckpair{"4 degC", "[04]"}, + ckpair{"1/20milliliter", "[20]"}, + ckpair{"1/20mL", "[20]"}, +}; + +bool bracketModifiers(std::string& unit_string) +{ + bool modified{false}; + for (const auto& seg : Esegs) { + auto ploc = unit_string.find_first_of(seg[0], 1); + while (ploc != std::string::npos) { + auto cloc = unit_string.find_first_of(seg[1], ploc); + auto tstring = unit_string.substr(ploc + 1, cloc - ploc - 1); + auto modloc = modifiers.find(tstring); + if (modloc != modifiers.end()) { + auto nextloc = unit_string.find_first_not_of(' ', cloc + 1); + if (nextloc != std::string::npos && + unit_string[nextloc] != '/' && + unit_string[nextloc] != '*') { + unit_string.insert(nextloc, 1, '*'); + } + + unit_string.replace(ploc + 1, cloc - ploc, modloc->second); + unit_string[ploc] = '_'; + if (unit_string[ploc - 1] == ' ') { + unit_string.erase(ploc - 1, 1); + --ploc; + } + + modified = true; + } + ploc = unit_string.find_first_of(seg[0], ploc + 1); + } + } + // if (!modified) { + auto ploc = unit_string.find_first_of('-', 1); + if (ploc != std::string::npos) { + auto cloc = unit_string.find_first_of("-[({_", ploc + 1); + auto tstring = (cloc != std::string::npos) ? + unit_string.substr(ploc + 1, cloc - ploc - 1) : + unit_string.substr(ploc + 1); + auto modloc = modifiers.find(tstring); + if (modloc != modifiers.end()) { + unit_string.replace(ploc + 1, cloc - ploc - 1, modloc->second); + unit_string[ploc] = '_'; + modified = true; + } + } + //} + return modified; +} + static precise_unit localityModifiers(std::string unit, std::uint64_t match_flags) { - static UNITS_CPP14_CONSTEXPR_OBJECT std::array + static UNITS_CPP14_CONSTEXPR_OBJECT std::array internationlReplacements{{ ckpair{"internationaltable", "IT"}, ckpair{"internationalsteamtable", "IT"}, ckpair{"international", "i"}, ckpair{"USandBritish", "av"}, ckpair{"US&British", "av"}, - ckpair{"USAsurvey", "us"}, - ckpair{"USsurvey", "us"}, - ckpair{"USSurvey", "us"}, - ckpair{"USA", "us"}, - ckpair{"USstatute", "us"}, - ckpair{"statutory", "us"}, - ckpair{"statute", "us"}, + ckpair{"USAsurvey", "US"}, + ckpair{"USsurvey", "US"}, + ckpair{"USSurvey", "US"}, + ckpair{"USdry", "US"}, + ckpair{"USA", "US"}, + ckpair{"USstatute", "US"}, + ckpair{"statutory", "US"}, + ckpair{"statute", "US"}, + ckpair{"US", "US"}, + ckpair{"shipping", "ship"}, ckpair{"gregorian", "g"}, ckpair{"Gregorian", "g"}, ckpair{"synodic", "s"}, @@ -2573,6 +2758,7 @@ static precise_unit ckpair{"julian", "j"}, ckpair{"Julian", "j"}, ckpair{"thermochemical", "th"}, + ckpair{"hydraulic", "mech"}, ckpair{"Th", "th"}, ckpair{"(th)", "th"}, ckpair{"metric", "m"}, @@ -2581,9 +2767,8 @@ static precise_unit ckpair{"Imperial", "br"}, ckpair{"English", "br"}, ckpair{"imp", "br"}, - ckpair{"wine", "wi"}, - ckpair{"beer", "wi"}, - ckpair{"US", "us"}, + ckpair{"wine", "wine"}, + ckpair{"beer", "wine"}, ckpair{"(IT)", "IT"}, ckpair{"troy", "tr"}, ckpair{"apothecary", "ap"}, @@ -2593,7 +2778,7 @@ static precise_unit ckpair{"chinese", "cn"}, ckpair{"Canadian", "ca"}, ckpair{"canadian", "ca"}, - ckpair{"survey", "us"}, + ckpair{"survey", "US"}, ckpair{"tropical", "t"}, ckpair{"British", "br"}, ckpair{"british", "br"}, @@ -2601,9 +2786,41 @@ static precise_unit ckpair{"BR", "br"}, ckpair{"UK", "br"}, ckpair{"conventional", "90"}, + ckpair{"AC", "ac"}, + ckpair{"DC", "dc"}, + ckpair{"fluid", "FL"}, + ckpair{"liquid", "FL"}, + ckpair{"fl", "FL"}, + ckpair{"15degC", "[15]"}, + ckpair{"20degC", "[20]"}, + ckpair{"59degF", "[59]"}, + ckpair{"60degF", "[60]"}, + ckpair{"39degF", "[39]"}, + ckpair{"0degC", "[00]"}, + // this should be last + + ckpair{"us", "US"}, }}; + if (unit.size() < 3) { + return precise::invalid; + } + if (unit.front() == 'u' && (unit[1] == 'S' || unit[1] == 'K')) { + unit.front() = 'U'; + } bool changed = false; for (const auto& irep : internationlReplacements) { + if (strlen(irep.first) == 2) { + if (strncmp(irep.first, irep.second, 2) == 0) { + if (ends_with(unit, std::string(1, '_') + irep.second)) { + continue; + } + } + if (unit[1] > 0 && (std::isupper(unit[1]) != 0) && + (std::toupper(unit[0]) == irep.first[0]) && + (unit[1] == irep.first[1])) { + unit[0] = std::toupper(unit[0]); + } + } auto fnd = unit.find(irep.first); if (fnd != std::string::npos) { auto len = strlen(irep.first); @@ -2627,14 +2844,18 @@ static precise_unit } changed |= clearEmptySegments(unit); if (changed) { - return unit_from_string_internal( + auto retunit = unit_from_string_internal( unit, match_flags | no_locality_modifiers | no_of_operator); + if (is_error(retunit) && ((match_flags & no_locality_modifiers) == 0)) { + return localityModifiers(unit, match_flags | no_locality_modifiers); + } + return retunit; } if (unit.size() < 4) { return precise::invalid; } - static constexpr std::array rotSequences{ - {"us", "br", "av", "ch", "IT", "th", "ap", "tr"}}; + static constexpr std::array rotSequences{ + {"br", "av", "ch", "IT", "th", "ap", "tr"}}; for (const auto& seq : rotSequences) { if (unit.compare(0, 2, seq) == 0) { auto nunit = unit.substr((unit[3] == '_') ? 3 : 2); @@ -2915,6 +3136,31 @@ static precise_unit unit_string.substr(0, static_cast(ccindex) + 1), match_flags + no_commodities); if (!is_error(bunit)) { + if (bunit.has_same_base(m)) { + static const std::unordered_map + commUnits{ + {"mercury", precise::pressure::bases::Hg}, + {"mercurycolumn", precise::pressure::bases::Hg}, + {"mercuryguage", precise::pressure::bases::Hg}, + {"mercury_i", precise::pressure::bases::Hg}, + {"Hg", precise::pressure::bases::Hg}, + {"water", precise::pressure::bases::water}, + {"watercolumn", precise::pressure::bases::water}, + {"water_i", precise::pressure::bases::water}, + {"waterguage", precise::pressure::bases::water}, + {"H2O", precise::pressure::bases::water}, + {"mercury_[00]", precise::pressure::bases::Hg_0}, + {"water_[04]", precise::pressure::bases::water_4}, + {"water_[39]", precise::pressure::bases::water_39}, + {"mercury_[32]", precise::pressure::bases::Hg_32}, + {"mercury_[60]", precise::pressure::bases::Hg_60}, + {"water_[60]", precise::pressure::bases::water_60}, + }; + auto tunit = commUnits.find(cstring); + if (tunit != commUnits.end()) { + return bunit * tunit->second; + } + } return {1.0, bunit, getCommodity(cstring)}; } return precise::invalid; @@ -2950,7 +3196,7 @@ static precise_unit checkMultiplierCharacter( } else if (ustring[fd + 1] == mchar) { // repeated characters, cannot mean separator return precise::invalid; - } else { + } else if (ustring[fd + 1] != '[' && ustring[fd + 1] != '(') { ustring[fd] = '*'; } // ignore adjacent ones @@ -2984,6 +3230,7 @@ static const std::unordered_map domainSpecificUnit{ {hashGen(domains::ucum, "B"), precise::log::bel}, {hashGen(domains::ucum, "a"), precise::time::aj}, {hashGen(domains::ucum, "year"), precise::time::aj}, + {hashGen(domains::ucum, "equivalent"), precise::mol}, {hashGen(domains::astronomy, "am"), precise::angle::arcmin}, {hashGen(domains::astronomy, "as"), precise::angle::arcsec}, {hashGen(domains::astronomy, "year"), precise::time::at}, @@ -3298,11 +3545,128 @@ static size_t return sep; } +static inline bool isOperator(char X) +{ + return (X == '*') || (X == '/'); +} + +static bool isolatePriorModifier( + std::string& unit_string, + const std::string& modifier, + char check1, + char check2) +{ + bool modified{false}; + auto modfind = unit_string.find(modifier); + if (modfind != std::string::npos) { + auto offset = modfind + modifier.size(); + if (modifier.back() != ' ') { + ++offset; + } + auto kloc = unit_string.find_first_not_of(' ', offset); + if (kloc != std::string::npos && + (unit_string[kloc] == check1 || unit_string[kloc] == check2)) { + // this handles a misinterpretation of square+d to squared when in + // middle of a unit + unit_string[kloc - 1] = '_'; + modified = true; + } + auto nspace = unit_string.find_first_of(' ', kloc); + auto skip = (nspace >= unit_string.size()); + if (!skip) { + skip = isOperator(unit_string[nspace + 1]) || + isOperator(unit_string[nspace - 1]); + } + if (!skip) { + skip = unit_string[nspace + 1] == '(' || + unit_string[nspace - 1] == '('; + skip |= + (skip || unit_string[nspace + 1] == '-' || + unit_string[nspace - 1] == '-'); + skip |= skip || (unit_string.compare(nspace + 1, 2, "of") == 0); + skip |= skip || + unit_string[nspace + 1] == + 'U'; // handle distance units with UK or US modifier + } + if (!skip) { + auto divloc = unit_string.find_last_of('/', modfind); + auto divloc2 = unit_string.find_first_of('/', modfind + 1); + if (divloc < modfind) { + unit_string.insert(divloc + 1, 1, '('); + ++nspace; + if (divloc2 != std::string::npos) { + unit_string.insert(divloc2 + 1, 1, ')'); + // don't worry about nspace increment here as it will be + // skipped or the insertion after the space + } else { + unit_string.push_back(')'); + } + + skip |= (divloc2 < nspace); + modified = true; + } else if (divloc2 < nspace) { + skip = true; + } + } + if (!skip) { + unit_string[nspace] = '*'; + modified = true; + } + } + return modified; +} + +static bool + isolatePostModifier(std::string& unit_string, const std::string& modifier) +{ + bool modified{false}; + auto modfind = unit_string.find(modifier); + if (modfind != std::string::npos) { + auto kloc = unit_string.find_last_not_of(' ', modfind - 1); + + auto nspace = unit_string.find_last_of(" */", kloc); + auto skip = + (nspace == 0 || (nspace >= unit_string.size()) || + unit_string[nspace] != ' '); + if (!skip) { + skip |= skip || isOperator(unit_string[nspace + 1]); + skip |= skip || isOperator(unit_string[nspace - 1]); + skip |= skip || unit_string[nspace + 1] == ')'; + skip |= skip || unit_string[nspace + 1] == '-'; + skip |= skip || unit_string[nspace - 1] == ')'; + skip |= skip || unit_string[nspace - 1] == '-'; + } + if (!skip) { + auto divloc = unit_string.find_last_of('/', modfind); + if (divloc < modfind) { + unit_string.insert(divloc + 1, 1, '('); + auto divloc2 = unit_string.find_first_of('/', modfind + 1); + if (divloc2 != std::string::npos) { + unit_string.insert(divloc2, 1, ')'); + } else { + unit_string.push_back(')'); + } + modified = true; + ++nspace; + skip |= (divloc2 < nspace); + } + } + if (!skip) { + unit_string[nspace] = '*'; + modified = true; + } + } + return modified; +} + // remove spaces and insert multiplies if appropriate static bool cleanSpaces(std::string& unit_string, bool skipMultiply) { static const std::string spaceChars = std::string(" \t\n\r") + '\0'; - bool spacesRemoved = false; + + bool spacesRemoved = isolatePriorModifier(unit_string, "square ", 'd', 'D'); + spacesRemoved |= isolatePriorModifier(unit_string, "cubic ", '_', '-'); + spacesRemoved |= isolatePostModifier(unit_string, " squared"); auto fnd = unit_string.find_first_of(spaceChars); while (fnd != std::string::npos) { spacesRemoved = true; @@ -3314,8 +3678,8 @@ static bool cleanSpaces(std::string& unit_string, bool skipMultiply) } if (fnd == 1) { // if the second character is a space it almost // always means multiply - if (unit_string[nloc] == '*' || unit_string[nloc] == '/' || - unit_string[nloc] == '^' || unit_string[nloc] == '@') { + if (isOperator(unit_string[nloc]) || unit_string[nloc] == '^' || + unit_string[nloc] == '@') { unit_string.erase(fnd, 1); fnd = unit_string.find_first_of(spaceChars, fnd); continue; @@ -3337,7 +3701,7 @@ static bool cleanSpaces(std::string& unit_string, bool skipMultiply) } } } - if (unit_string[fnd - 1] == '/' || unit_string[fnd - 1] == '*') { + if (isOperator(unit_string[fnd - 1])) { unit_string.erase(fnd, 1); fnd = unit_string.find_first_of(spaceChars, fnd); continue; @@ -3347,16 +3711,14 @@ static bool cleanSpaces(std::string& unit_string, bool skipMultiply) fnd = unit_string.find_first_of(spaceChars, fnd + 1); continue; } - if (unit_string.size() > nloc && - (unit_string[nloc] == '/' || unit_string[nloc] == '*')) { + if (unit_string.size() > nloc && isOperator(unit_string[nloc])) { unit_string.erase(fnd, 1); fnd = unit_string.find_first_of(spaceChars, fnd); continue; } if (std::all_of( unit_string.begin(), unit_string.begin() + fnd, [](char X) { - return isNumericalStartCharacter(X) || (X == '/') || - (X == '*'); + return isNumericalStartCharacter(X) || isOperator(X); })) { unit_string[fnd] = '*'; fnd = unit_string.find_first_of(spaceChars, fnd); @@ -4053,14 +4415,15 @@ static bool cleanUnitString(std::string& unit_string, std::uint64_t match_flags) ckpair{"deg ", "deg"}, }}; - static UNITS_CPP14_CONSTEXPR_OBJECT std::array + static UNITS_CPP14_CONSTEXPR_OBJECT std::array allCodeReplacements{{ ckpair{"sq.", "square"}, ckpair{"cu.", "cubic"}, - ckpair{"(US)", "US"}, + ckpair{"U.S.", "US"}, ckpair{"10^", "1e"}, ckpair{"10-", "1e-"}, ckpair{"^+", "^"}, + ckpair{"'s", "s"}, ckpair{"ampere", "amp"}, ckpair{"Ampere", "amp"}, ckpair{"metre", "meter"}, @@ -4139,15 +4502,37 @@ static bool cleanUnitString(std::string& unit_string, std::uint64_t match_flags) if (unit_string.find_first_of(spchar) != std::string::npos) { // deal with some particular string with a space in them - + std::size_t reploc{0}; // clean up some "per" words if (unit_string.compare(0, 4, "per ") == 0) { + reploc = 2; unit_string.replace(0, 4, "1/"); skipMultiply = true; } - if (ReplaceStringInPlace(unit_string, " per ", 5, "/", 1)) { + if (ReplaceStringInPlace(unit_string, " per ", 5, "/", 1, reploc)) { skipMultiply = true; } + if (reploc > 0) { + auto ploc = unit_string.find_first_of('(', reploc); + if (ploc != std::string::npos) { + auto fdiv = unit_string.find_first_of('/', reploc); + std::size_t ndiv{0}; + do { + ndiv = unit_string.find_first_of('/', fdiv + 1); + if (ploc < ndiv) { + if (ndiv != std::string::npos) { + unit_string.insert(ndiv, 1, ')'); + } else { + unit_string.push_back(')'); + } + unit_string.insert(fdiv + 1, 1, '('); + fdiv = ndiv + 2; + } else { + fdiv = ndiv; + } + } while (ndiv != std::string::npos); + } + } checkShortUnits(unit_string, match_flags); auto fndP = unit_string.find(" of "); while (fndP != std::string::npos) { @@ -4185,7 +4570,8 @@ static bool cleanUnitString(std::string& unit_string, std::uint64_t match_flags) if (!skipcodereplacement) { // ** means power in some environments - if (ReplaceStringInPlace(unit_string, "**", 2, "^", 1)) { + std::size_t loc{0}; + if (ReplaceStringInPlace(unit_string, "**", 2, "^", 1, loc)) { changed = true; } } @@ -4384,10 +4770,47 @@ static bool cleanUnitString(std::string& unit_string, std::uint64_t match_flags) return (changed || unit_string.size() != slen); } +static void modifyTailCodes(std::string& unit_string) +{ + if (!unit_string.empty() && + (unit_string.back() == 'F' || unit_string.back() == 'C')) { + static UNITS_CPP14_CONSTEXPR_OBJECT std::array + trailTempCodeReplacements{{ + ckpair{"at39F", "[39]"}, + ckpair{"39F", "[39]"}, + ckpair{"at60F", "[60]"}, + ckpair{"60F", "[60]"}, + ckpair{"at0C", "[00]"}, + ckpair{"0C", "[00]"}, + ckpair{"at23C", "[23]"}, + ckpair{"23C", "[23]"}, + ckpair{"at4C", "[04]"}, + ckpair{"4C", "[04]"}, + }}; + + for (const auto& endTemp : trailTempCodeReplacements) { + if (ends_with(unit_string, endTemp.first)) { + auto sz = strlen(endTemp.first); + unit_string.replace( + unit_string.end() - sz, unit_string.end(), endTemp.second); + if (unit_string[unit_string.size() - 5] != '_') { + unit_string.insert(unit_string.size() - 4, 1, '_'); + } + } + } + } +} + /// cleanup phase 2 if things still aren't working static bool cleanUnitStringPhase2(std::string& unit_string) { + bool changed{false}; auto len = unit_string.length(); + + if (bracketModifiers(unit_string)) { + changed = true; + } + // cleanup extraneous dashes auto dpos = unit_string.find_first_of('-'); while (dpos != std::string::npos) { @@ -4406,7 +4829,8 @@ static bool cleanUnitStringPhase2(std::string& unit_string) unit_string.end()); clearEmptySegments(unit_string); - return (len != unit_string.length()); + + return changed || (len != unit_string.length()); } static precise_unit @@ -4449,19 +4873,14 @@ static inline std::uint64_t getMinPartitionSize(std::uint64_t match_flags) detail::minPartionSizeShift; } -/** Under the assumption units were mashed together to for some new work or -spaces were used as multiplies this function will progressively try to split -apart units and combine them. -*/ -static precise_unit tryUnitPartitioning( - const std::string& unit_string, - std::uint64_t match_flags) +static precise_unit + checkSpecialUnits(const std::string& unit_string, std::uint64_t match_flags) { - std::string ustring = unit_string; // lets try checking for meter next which is one of the most common // reasons for getting here auto fnd = findWordOperatorSep(unit_string, "meter"); if (fnd != std::string::npos) { + std::string ustring = unit_string; ustring.erase(fnd, 5); auto bunit = unit_from_string_internal(ustring, match_flags); if (is_valid(bunit)) { @@ -4476,6 +4895,51 @@ static precise_unit tryUnitPartitioning( return precise::A * bunit; } } + if (unit_string.compare(0, 7, "percent") == 0) { + auto bunit = unit_from_string_internal( + unit_string.substr(7), match_flags | minimum_partition_size3); + if (is_valid(bunit)) { + return precise::percent * pu * bunit; + } + bunit = default_unit(unit_string.substr(7)); + if (is_valid(bunit)) { + return precise::percent * pu * bunit; + } + } + if (unit_string.front() == '%') { + auto bunit = unit_from_string_internal( + unit_string.substr(1), match_flags | minimum_partition_size3); + if (is_valid(bunit)) { + return precise::percent * precise::pu * bunit; + } + bunit = default_unit(unit_string.substr(1)); + if (is_valid(bunit)) { + return precise::percent * precise::pu * bunit; + } + } + if (unit_string.compare(0, 7, "perunit") == 0) { + auto bunit = unit_from_string_internal( + unit_string.substr(7), match_flags | minimum_partition_size3); + if (is_valid(bunit)) { + return precise::pu * bunit; + } + bunit = default_unit(unit_string.substr(7)); + if (is_valid(bunit)) { + return precise::pu * bunit; + } + } + return precise::invalid; +} +/** Under the assumption units were mashed together to for some new work or +spaces were used as multiplies this function will progressively try to split +apart units and combine them. +*/ +static precise_unit tryUnitPartitioning( + const std::string& unit_string, + std::uint64_t match_flags) +{ + std::string ustring = unit_string; + auto mret = getPrefixMultiplierWord(unit_string); if (mret.first != 0.0) { ustring = unit_string.substr(mret.second); @@ -4498,6 +4962,7 @@ static precise_unit tryUnitPartitioning( } auto minPartitionSize = getMinPartitionSize(match_flags); std::vector valid; + precise_unit possible = precise::invalid; bool hasSep{false}; while (part < unit_string.size() - 1) { if (unit_string.size() - part < minPartitionSize) { @@ -4519,7 +4984,15 @@ static precise_unit tryUnitPartitioning( unit_string.substr(part), match_flags | skip_partition_check); if (is_valid(bunit)) { - return res * bunit; + if (!is_valid(possible)) { + possible = res * bunit; + } else { + auto temp = res * bunit; + if (std::abs(log10(temp.multiplier())) < + std::abs(log10(possible.multiplier()))) { + possible = temp; + } + } } valid.push_back(ustring); } @@ -4555,6 +5028,9 @@ static precise_unit tryUnitPartitioning( } } } + if (is_valid(possible)) { + return possible; + } if (minPartitionSize <= 1) { // meter is somewhat common ending so just check that one too if (unit_string.back() == 'm') { @@ -4749,12 +5225,19 @@ static precise_unit auto mux = getPrefixMultiplier2Char(unit_string[0], unit_string[1]); if (mux != 0.0) { auto ustring = unit_string.substr(2); - if (ustring == "B") { - return {mux, precise::data::byte}; - } - if (ustring == "b") { - return {mux, precise::data::bit}; + if (ustring.size() == 1) { + switch (ustring.front()) { + case 'B': + return {mux, precise::data::byte}; + case 'b': + return {mux, precise::data::bit}; + case 'k': + return precise::invalid; + default: + break; + } } + auto retunit = unit_quick_match(ustring, match_flags); if (is_valid(retunit)) { return {mux, retunit}; @@ -4772,11 +5255,17 @@ static precise_unit getStrictSIPrefixMultiplier(c); if (mux != 0.0) { auto ustring = unit_string.substr(1); - if (ustring == "B") { - return {mux, precise::data::byte}; - } - if (ustring == "b") { - return {mux, precise::data::bit}; + if (ustring.size() == 1) { + switch (ustring.front()) { + case 'B': + return {mux, precise::data::byte}; + case 'b': + return {mux, precise::data::bit}; + case 'k': + return precise::invalid; + default: + break; + } } auto retunit = unit_quick_match(ustring, match_flags); if (!is_error(retunit)) { @@ -4813,6 +5302,13 @@ static precise_unit unit_string[sep + 1] == '+') { return precise::invalid; } + if (unit_string[sep - 1] == 'e' || unit_string[sep - 1] == 'E') { + // this is scientific notation not addition + if (isDigitCharacter(unit_string[sep + 1]) && + (sep > 1 && isDigitCharacter(unit_string[sep - 2]))) { + return precise::invalid; + } + } precise_unit a_unit; precise_unit b_unit; if (sep + 1 > unit_string.size() / 2) { @@ -4843,8 +5339,8 @@ static precise_unit auto res = convert(b_unit, a_unit); if (!std::isnan(res)) { return { - a_unit.base_units(), - a_unit.multiplier() + a_unit.multiplier() * res}; + a_unit.multiplier() + a_unit.multiplier() * res, + a_unit.base_units()}; } } return precise::invalid; @@ -5164,6 +5660,19 @@ static precise_unit unit_from_string_internal( if (!is_error(retunit)) { return retunit; } + std::transform( + ustring.begin(), ustring.end(), ustring.begin(), ::toupper); + + retunit = get_unit(ustring, match_flags); + if (is_valid(retunit)) { + return retunit; + } + ustring.insert(ustring.begin(), '['); + ustring.push_back(']'); + retunit = get_unit(ustring, match_flags); + if (is_valid(retunit)) { + return retunit; + } } } auto s_location = unit_string.find("s_"); @@ -5176,6 +5685,8 @@ static precise_unit unit_from_string_internal( } } + modifyTailCodes(unit_string); + if (!containsPer) { retunit = checkMultiplierCharacter(unit_string, match_flags, '-'); if (!is_error(retunit)) { @@ -5189,6 +5700,7 @@ static precise_unit unit_from_string_internal( } // try some other cleaning steps ustring = unit_string; + if (cleanUnitStringPhase2(unit_string)) { if (!unit_string.empty()) { retunit = get_unit(unit_string, match_flags); @@ -5210,11 +5722,26 @@ static precise_unit unit_from_string_internal( unit_string.push_back('}'); return {number, commoditizedUnit(unit_string, match_flags)}; } + retunit = checkSIprefix(unit_string, match_flags); + if (!is_error(retunit)) { + return retunit; + } } else { // if we erased everything this could lead to strange units so // just go back to the original unit_string = ustring; } } + if (unit_string.front() == '[' && unit_string.back() == ']') { + ustring = unit_string.substr(1); + ustring.pop_back(); + if (ustring.back() != 'U') // this means custom unit code + { + retunit = get_unit(ustring, match_flags); + if (!is_error(retunit)) { + return retunit; + } + } + } { // try removing the _ and checking for a match with no partitioning ustring = unit_string; @@ -5246,17 +5773,7 @@ static precise_unit unit_from_string_internal( } } } - if (unit_string.front() == '[' && unit_string.back() == ']') { - ustring = unit_string.substr(1); - ustring.pop_back(); - if (ustring.back() != 'U') // this means custom unit code - { - retunit = get_unit(ustring, match_flags); - if (!is_error(retunit)) { - return retunit; - } - } - } + // try changing out any "per" words for division sign if (containsPer && (match_flags & no_per_operators) == 0) { auto fnd = findWordOperatorSep(unit_string, "per"); @@ -5290,18 +5807,30 @@ static precise_unit unit_from_string_internal( } if ((match_flags & no_commodities) == 0 && (match_flags & no_of_operator) == 0) { - // try changing out and words indicative of a unit commodity + // try changing and words indicative of a unit commodity auto fnd = findWordOperatorSep(unit_string, "of"); if (fnd < unit_string.size() - 2 && fnd != 0) { + if (unit_string[fnd + 2] == 'w' || unit_string[fnd + 2] == 'm') { + // this could indicate pressure + } ustring = unit_string; ustring.replace(fnd, 2, "{"); auto sloc = ustring.find_first_of("{[(", fnd + 3); if (sloc == std::string::npos) { ustring.push_back('}'); - } else { + } else if (ustring[sloc - 1] != '_') { ustring.insert(sloc, 1, '}'); + } else { + sloc = ustring.find_first_of( + getMatchCharacter(ustring[sloc]), sloc); + if (sloc == std::string::npos) { + ustring.push_back('}'); + } else { + ustring.insert(sloc + 1, 1, '}'); + } } + auto cunit = commoditizedUnit(ustring, match_flags + commodity_check1); if (is_valid(cunit)) { @@ -5309,6 +5838,20 @@ static precise_unit unit_from_string_internal( } } } + // deal with string like sixty-fourths of an inch, so this part catch + // of a(n) and removes it getting the following unit + if (unit_string.size() > 3 && unit_string.compare(0, 3, "ofa") == 0) { + if (unit_string.size() > 4 && unit_string[3] == 'n') { + retunit = get_unit(unit_string.substr(4), match_flags); + if (!is_error(retunit)) { + return retunit; + } + } + retunit = get_unit(unit_string.substr(3), match_flags); + if (!is_error(retunit)) { + return retunit; + } + } // make lower case { ustring = unit_string; @@ -5344,6 +5887,11 @@ static precise_unit unit_from_string_internal( } if ((match_flags & skip_partition_check) == 0) { + // check for some special partitioned units + retunit = checkSpecialUnits(unit_string, match_flags); + if (!is_error(retunit)) { + return retunit; + } // maybe some things got merged together so lets try splitting them up // in various ways but only allow 3 layers deep retunit = @@ -5415,6 +5963,11 @@ precise_measurement measurement_from_string( } } */ + auto unit = unit_from_string_internal( + std::move(measurement_string), match_flags | skip_code_replacements); + if (is_valid(unit) && !unit.has_same_base(one.base_units())) { + return {1.0, unit}; + } return {val, precise::invalid}; } diff --git a/units/units.hpp b/units/units.hpp index c3d8f009..487e8af6 100644 --- a/units/units.hpp +++ b/units/units.hpp @@ -2278,6 +2278,11 @@ namespace detail { UNITS_EXPORT const std::unordered_map& getUnitStringMap(); UNITS_EXPORT const std::unordered_map& getUnitNameMap(); + +#ifdef EXTRA_UNIT_STANDARDS + // get the raw array for testing the r20 database + const void* r20rawData(size_t& array_size); +#endif } // namespace detail #endif diff --git a/units/units_conversion_maps.hpp b/units/units_conversion_maps.hpp index 56fe1fab..4e1c2033 100644 --- a/units/units_conversion_maps.hpp +++ b/units/units_conversion_maps.hpp @@ -205,7 +205,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array, 56> /// definitions for the default units for specific types of measurmeents UNITS_CPP14_CONSTEXPR_OBJECT std::array< std::pair, - 1155> + 1219> defined_unit_strings_si{{ {"", precise::defunit}, {"[]", precise::defunit}, @@ -245,24 +245,24 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {".NAN", precise::nan}, {"NaNQ", precise_unit( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - std::numeric_limits::quiet_NaN())}, + std::numeric_limits::quiet_NaN(), + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, {"NaNS", precise::nan}, {"qNaN", precise_unit( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - std::numeric_limits::quiet_NaN())}, + std::numeric_limits::quiet_NaN(), + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, {"sNaN", precise::nan}, {"1.#SNAN", precise::nan}, {"#SNAN", precise::nan}, {"1.#QNAN", precise_unit( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - std::numeric_limits::quiet_NaN())}, + std::numeric_limits::quiet_NaN(), + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, {"#QNAN", precise_unit( - detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - std::numeric_limits::quiet_NaN())}, + std::numeric_limits::quiet_NaN(), + detail::unit_data(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, {"1.#IND", precise::nan}, {"#IND", precise::nan}, {"0.1", precise_unit(0.1, precise::one)}, @@ -305,7 +305,12 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"million", precise::mega}, {"1000000000", precise::giga}, {"billion", precise::giga}, + {"billion_US", precise::giga}, + {"milliard", precise::giga}, + {"billion_br", precise::tera}, {"trillion", precise::tera}, + {"trillion_US", precise::tera}, + {"trillion_br", precise::exa}, {"quadrillion", precise::peta}, {"1e3", precise::kilo}, {"1e6", precise::mega}, @@ -350,6 +355,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"m", precise::m}, {"Sm", precise::m}, // standard meter used in oil and gas usually Sm^3 {"meter", precise::m}, + {"metre", precise::m}, {"squaremeter", precise::m.pow(2)}, // to simplify some things later in the chain {"cubicmeter", precise::m.pow(3)}, @@ -382,12 +388,19 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"molar", precise::laboratory::molarity}, {"Molar", precise::laboratory::molarity}, {"eq", precise::mol}, - {"equivalent", precise::mol}, + {"Eq", precise::mol}, + {"equivalent", {1.0, precise::one, commodities::packaging::equivalent}}, {"EQ", precise::mol}, - {"osm", precise_unit(1.0, precise::mol, commodities::particles)}, - {"osmole", precise_unit(1.0, precise::mol, commodities::particles)}, - {"osmol", precise_unit(1.0, precise::mol, commodities::particles)}, - {"OSM", precise_unit(1.0, precise::mol, commodities::particles)}, + {"osm", + precise_unit(1.0, precise::mol, commodities::packaging::particle)}, + {"osmole", + precise_unit(1.0, precise::mol, commodities::packaging::particle)}, + {"osmol", + precise_unit(1.0, precise::mol, commodities::packaging::particle)}, + {"OSM", + precise_unit(1.0, precise::mol, commodities::packaging::particle)}, + {"totalacidnumber", precise::generate_custom_unit(213)}, + {"TAN", precise::generate_custom_unit(213)}, {"g%", precise_unit(10.0, precise::g / precise::L)}, {"gram%", precise_unit(10.0, precise::g / precise::L)}, {"grampercent", precise_unit(10.0, precise::g / precise::L)}, @@ -406,6 +419,10 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"At", precise::A* precise::count}, {"V", precise::V}, {"volt", precise::V}, + {"volt_ac", precise::V}, + {"volt_dc", precise::V}, + {"voltAC", precise::V}, + {"voltDC", precise::V}, {"W", precise::W}, {"W/m^2", precise::W / precise::m.pow(2)}, {"watt", precise::W}, @@ -422,10 +439,11 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"var", precise::electrical::VAR}, {"s", precise::s}, {"sec", precise::s}, + {"sec_time", precise::s}, {"MAS", precise::mega* precise::s}, {"mAS", precise::mega* precise::s}, {"second", precise::s}, - {"second-time", precise::s}, + {"second_time", precise::s}, {"shake", precise_unit(10.0, precise::ns)}, {"jiffy", precise_unit(0.01, precise::s)}, // use the computer science // definition for playback @@ -471,6 +489,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"coulomb", precise::C}, {"faraday", precise::other::faraday}, {"farady", precise::other::faraday}, + {"chemicalfaraday", {9.64957e4, precise::C}}, + {"physicalfaraday", {9.65219e4, precise::C}}, + {"C12faraday", {9.648531, precise::C}}, {"F", precise::F}, {"farad", precise::F}, {"abF", precise::cgs::abFarad}, @@ -534,6 +555,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Gal", precise::cgs::gal}, {"Gals", precise::cgs::gal}, {"galileos", precise::cgs::gal}, + {"linear", {1.0, precise::one, commodities::packaging::linear}}, {"jansky", precise_unit( 1e-26, @@ -550,10 +572,15 @@ 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 + {"ode", precise::climate::odp}, // ozone depletion equivalent + {"ozonedepletionequivalent", + precise::climate::odp}, // ozone depletion equivalent {"min", precise::min}, + {"min_time", precise::min}, {"mins", precise::min}, {"mIN", precise::min}, {"minute", precise::min}, + {"minute_time", precise::min}, {"ms", precise::ms}, {"millisecond", precise::ms}, {"hr", precise::hr}, @@ -618,6 +645,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< precise_unit(1.0 / 12.0, precise::time::at)}, // tropical month {"mo_t", precise_unit(1.0 / 12.0, precise::time::at)}, // tropical month + {"month_[30]", {30.0, precise::day}}, {"solaryear", precise::time::at}, // year {"ANN_T", precise::time::at}, // year {"a_j", precise::time::aj}, // year @@ -671,19 +699,42 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"DEG", precise::deg}, {"degE", precise::deg* precise::direction::east}, {"east", precise::direction::east}, + {"degsE", precise::deg* precise::direction::east}, {"degW", precise::deg* precise::direction::west}, {"west", precise::direction::west}, + {"degsW", precise::deg* precise::direction::west}, {"degS", precise::deg* precise::direction::south}, {"south", precise::direction::south}, + {"degsS", precise::deg* precise::direction::south}, {"degN", precise::deg* precise::direction::north}, + {"degsN", precise::direction::north}, {"north", precise::direction::north}, {"degT", precise::deg* precise::direction::north}, + {"degsT", precise::deg* precise::direction::north}, {"true", precise::direction::north}, {"o", precise::deg}, {u8"\u00B0", precise::deg}, // unicode degree symbol {"\xB0", precise::deg}, // latin-1 degree {u8"\u00B0(s)", precise::deg}, // unicode degree symbol {"\xB0(s)", precise::deg}, // latin-1 degree + {"degAPI", precise::special::degreeAPI}, + {u8"\u00B0API", precise::special::degreeAPI}, // unicode degree symbol + {"\xB0" + "API", + precise::special::degreeAPI}, // latin-1 degree + {"degBaume", precise::special::degreeBaume}, + {u8"\u00B0Baume", + precise::special::degreeBaume}, // unicode degree symbol + {"\xB0" + "Baume", + precise::special::degreeBaume}, // latin-1 degree + {"degBaume(USheavy)", precise::special::degreeBaume}, + {"degBaume(USlight)", precise::special::degreeBaume}, + {"degBalling", + {1.0, precise::generate_custom_unit(109), commodities::sugar}}, + {"degBrix", + {1.0, precise::generate_custom_unit(108), commodities::sugar}}, + {"deg_ang", precise::deg}, {"arcminute", precise::angle::arcmin}, {"arcmin", precise::angle::arcmin}, {"amin", precise::angle::arcmin}, @@ -692,6 +743,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"'", precise::angle::arcmin}, {"`", precise::angle::arcmin}, {u8"\u2032", precise::angle::arcmin}, // single prime + {"minute_ang", precise::angle::arcmin}, + {"min_ang", precise::angle::arcmin}, {"arcsecond", precise::angle::arcsec}, {"''", precise::angle::arcsec}, {"``", precise::angle::arcsec}, @@ -700,10 +753,13 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"angularsecond", precise::angle::arcsec}, {"\"", precise::angle::arcsec}, {u8"\u2033", precise::angle::arcsec}, // double prime + {"second_ang", precise::angle::arcsec}, + {"sec_ang", precise::angle::arcsec}, {"mas", precise_unit(0.001, precise::angle::arcsec)}, // milliarcsec {"uas", precise_unit(0.000001, precise::angle::arcsec)}, // microarcsec {"rad", precise::rad}, {"radian", precise::rad}, + {"radiant", precise::rad}, {"circ", precise_unit(constants::tau, precise::rad)}, {"CIRC", precise_unit(constants::tau, precise::rad)}, {"quadrant", precise_unit(90.0, precise::deg)}, @@ -839,6 +895,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"[planck::area]", constants::planck::length.as_unit().pow(2)}, {"[planck::volume]", constants::planck::length.as_unit().pow(3)}, {"[planck::energy]", precise_unit(1.9561e9, precise::J)}, + {"dry", {1.0, precise::one, commodities::packaging::dry}}, {"au", precise::distance::au}, {"AU", precise::distance::au}, {"ASU", precise::distance::au}, @@ -846,27 +903,36 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"astronomicunit", precise::distance::au}, {"kph", precise::km / precise::hr}, {"$", precise::currency}, - {"dollar", precise::currency}, - {"euro", precise::currency}, - {"yen", precise::currency}, - {"ruble", precise::currency}, + {"dollar", {1.0, precise::currency, commodities::currencies::dollar}}, + {"euro", {1.0, precise::currency, commodities::currencies::euro}}, + {"yen", {1.0, precise::currency, commodities::currencies::yen}}, + {"ruble", {1.0, precise::currency, commodities::currencies::ruble}}, {"currency", precise::currency}, - {u8"\u00A2", precise_unit(0.01, precise::currency)}, // cent symbol - {"\xA2", precise_unit(0.01, precise::currency)}, // cent symbol latin-1 - {u8"\u00A3", precise::currency}, // pound sign - {"\xA3", precise::currency}, // pound sign latin-1 + {u8"\u00A2", {0.01, precise::currency}}, // cent symbol + {"\xA2", {0.01, precise::currency}}, // cent symbol latin-1 + {u8"\u00A3", + {1.0, precise::currency, commodities::currencies::pound}}, // pound + // sign + {"\xA3", + {1.0, precise::currency, commodities::currencies::pound}}, // pound + // sign + // latin-1 {u8"\u00A4", precise::currency}, // currency sign {"\xA4", precise::currency}, // currency sign latin-1 - {u8"\u00A5", precise::currency}, // Yen sign + {u8"\u00A5", + {1.0, precise::currency, commodities::currencies::yen}}, // Yen sign {"\xA5", precise::currency}, // Yen sign latin-1 - {u8"\u0080", precise::currency}, // Euro sign - {"\x80", precise::currency}, // Euro sign extended ascii + {u8"\u0080", + {1.0, precise::currency, commodities::currencies::euro}}, // Euro sign + {"\x80", + {1.0, precise::currency, commodities::currencies::euro}}, // Euro sign + // extended + // ascii {"count", precise::count}, {"unit", precise::count}, {"pair", precise_unit(2.0, precise::count)}, {"dozen", precise_unit(12.0, precise::count)}, {"bakersdozen", precise_unit(13.0, precise::count)}, - {"baker'sdozen", precise_unit(13.0, precise::count)}, {"score", precise_unit(20.0, precise::count)}, {"octet", precise_unit(8.0, precise::count)}, {"gross", precise_unit(144.0, precise::count)}, @@ -899,6 +965,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"voxel", precise_unit(1.0, precise::count, commodities::voxel)}, // Pixel {"item", precise::count}, + {"piece", precise::count}, {"part", precise::count}, {"ratio", precise::ratio}, {"rat", precise::ratio}, @@ -994,7 +1061,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"rpm", precise::rpm}, {"rps", precise_unit(constants::tau, precise::rad / precise::s)}, {"r", precise_unit(constants::tau, precise::rad)}, - {"revolutions", precise_unit(constants::tau, precise::rad)}, + {"revolutions", {constants::tau, precise::rad}}, {"revolution", precise_unit(constants::tau, precise::rad)}, {"rev", precise_unit(constants::tau, precise::rad)}, {"revs", precise_unit(constants::tau, precise::rad)}, @@ -1010,6 +1077,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"steradian-solidangle", precise::sr}, {"$/MWh", precise::currency / precise::MWh}, {"are", precise::area::are}, + // this is an odd form of the prefix + {"decare", {10.0, precise::area::are}}, {"ar", precise::area::are}, {"AR", precise::area::are}, {"hectare", precise::area::hectare}, @@ -1046,9 +1115,13 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"pu", precise::pu}, {"perunit", precise::pu}, {"flag", precise::iflag}, + {"iflag", precise::iflag}, {"eflag", precise::eflag}, {"FLAG", precise::iflag}, {"EFLAG", precise::eflag}, + {"IFLAG", precise::iflag}, + {"imaginary", precise::iflag}, + {"sqrt(-1)", precise::iflag}, {"puOhm", precise::pu* precise::ohm}, {"puohm", precise::pu* precise::ohm}, {"puHz", precise::electrical::puHz}, @@ -1077,49 +1150,56 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"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}, - {"MM[HG]", precise::pressure::mmHg}, - {"cmHg", precise::ten* precise::pressure::mmHg}, + {"mM_Hg", precise::pressure::mmHg}, {"cm_Hg", 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}, + {"cM_Hg", precise::ten* 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}, - {"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}, - {"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}, - {"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}, - {"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}, + {"cm_H2O", precise::ten* precise::pressure::mmH2O}, + {"cM_H2O", precise::ten* precise::pressure::mmH2O}, + {"cmH2O", precise::ten* precise::pressure::mmH2O}, + + {"mm_H2O", precise::pressure::mmH2O}, + {"mmH2O", precise::pressure::mmH2O}, + {"water_90", precise::pressure::bases::water}, + {"water", precise::pressure::bases::water}, + {"water_[04]", precise::pressure::bases::water_4}, + {"water_[39]", precise::pressure::bases::water_39}, + {"water_[60]", precise::pressure::bases::water_60}, + {"waters_[04]", precise::pressure::bases::water_4}, + {"waters_[39]", precise::pressure::bases::water_39}, + {"waters_[60]", precise::pressure::bases::water_60}, + {"H2O", precise::pressure::bases::water}, + {"H2O_[04]", precise::pressure::bases::water_4}, + {"H2O_[39]", precise::pressure::bases::water_39}, + {"H2O_[60]", precise::pressure::bases::water_60}, + {"h2o", precise::pressure::bases::water}, + {"h2o_[04]", precise::pressure::bases::water_4}, + {"h2o_[39]", precise::pressure::bases::water_39}, + {"h2o_[60]", precise::pressure::bases::water_60}, + {"mercury", precise::pressure::bases::Hg}, + {"mercury_90", precise::pressure::bases::Hg}, + {"mercuries_90", precise::pressure::bases::Hg}, + {"mercury_[32]", precise::pressure::bases::Hg_32}, + {"mercury_[00]", precise::pressure::bases::Hg_0}, + {"mercury_[60]", precise::pressure::bases::Hg_60}, + {"mercuries", precise::pressure::bases::Hg}, + {"mercuries_[32]", precise::pressure::bases::Hg_32}, + {"mercuries_[00]", precise::pressure::bases::Hg_0}, + {"mercuries_[60]", precise::pressure::bases::Hg_60}, + {"Hg", precise::pressure::bases::Hg}, + {"Hg_[32]", precise::pressure::bases::Hg_32}, + {"Hg_[00]", precise::pressure::bases::Hg_0}, + {"Hg_[60]", precise::pressure::bases::Hg_60}, + // {"hg",precise::pressure::bases::Hg}, //conflicts with hectogram + {"hg_[32]", precise::pressure::bases::Hg_32}, + {"hg_[00]", precise::pressure::bases::Hg_0}, + {"hg_[60]", precise::pressure::bases::Hg_60}, {"torr", precise::pressure::torr}, {"Torr", precise::pressure::torr}, {"TORR", precise::pressure::torr}, @@ -1231,9 +1311,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"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)}, + {"carat", precise::metric::carat}, + {"karat", precise::metric::carat}, + {"ct", precise::metric::carat}, // {"kt", precise_unit(200.0, precise::mg)}, {"EER", precise::energy::EER}, {"ppv", precise::one}, // parts per volume @@ -1263,12 +1343,12 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"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)}, + 1e-6, + detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, {"PVU", precise_unit( - detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), - 1e-6)}, + 1e-6, + detail::unit_data(2, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0))}, // 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 @@ -1305,13 +1385,14 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"[drp]", precise::clinical::drop}, {"[DRP]", precise::clinical::drop}, {"drop", precise::clinical::drop}, - {"drop(1/20milliliter)", precise::clinical::drop}, - {"drop-metric", precise::clinical::drop}, + {"drop_[20]", precise::clinical::drop}, {"drop_m", precise::clinical::drop}, - {"drop-metric(1/20mL)", precise::clinical::drop}, + {"drop_m_[20]", precise::clinical::drop}, {"Ch", precise::clinical::charriere}, {"[CH]", precise::clinical::charriere}, {"french(cathetergauge)", precise::clinical::charriere}, + {"frenchguage", precise::clinical::charriere}, + {"Fg", precise::clinical::charriere}, {"mesh_i", precise::clinical::mesh}, {"[MESH_I]", precise::clinical::mesh}, {"mesh", precise::clinical::mesh}, @@ -1329,6 +1410,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"B", precise::data::byte}, {"bel", precise::log::bel}, {"dB", precise::log::dB}, + {"net", {1.0, one, commodities::packaging::net_quantity}}, {"decibel", precise::log::dB}, {"decibels", precise::log::dB}, {"DB", precise::log::dB}, @@ -1336,9 +1418,17 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"NEP", precise::log::neper}, {"nepers", precise::log::neper}, {"neper", precise::log::neper}, + {"octave", precise::log::logbase2}, + {"erlang", precise::generate_custom_unit(49)}, + {"Sh", precise::data::shannon}, + {"shannon", precise::data::shannon}, + {"Hart", precise::data::hartley}, + {"hartley", precise::data::hartley}, {"SPL", precise_unit(2 * 1e-5, precise::pascal)}, {"soundpressurelevel", precise_unit(2 * 1e-5, precise::pascal)}, {"soundpressure", precise_unit(2 * 1e-5, precise::pascal)}, + {"sone", precise::special::sone}, + {"phon", precise::generate_custom_unit(41)}, {"BSPL", precise::log::B_SPL}, {"B[SPL]", precise::log::B_SPL}, {"B(SPL)", precise::log::B_SPL}, @@ -1464,25 +1554,27 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< UNITS_CPP14_CONSTEXPR_OBJECT std::array< std::pair, - 1112> + 1168> defined_unit_strings_customary{ {{"candle", precise::other::candle}, + {"candle_it", precise::lm / precise::sr}, + {"candle_uk", {1.0416666666666666667, precise::lm / precise::sr}}, {"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))}, + {1.0 / constants::pi, precise::cd / precise::ft.pow(2)}}, + {"ftL", {1.0 / constants::pi, precise::cd / precise::ft.pow(2)}}, + {"fl", {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}, + {"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}, + {"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}, @@ -1491,90 +1583,92 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"BAR", precise::bar}, {"in", precise::in}, {"in_i", 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}, {"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}, + {"IN_US", precise::us::inch}, + {"inch_US", precise::us::inch}, + {"inches_US", precise::us::inch}, {"caliber", precise_unit(0.01, precise::i::inch)}, {"rackunit", precise_unit(1.75, precise::i::inch)}, {"RU", precise_unit(1.75, precise::i::inch)}, {"rd", precise::us::rod}, {"rod", precise::us::rod}, - {"rd_us", 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}, + {"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}, + {"chain_US", precise::us::chain}, + {"ch_US", precise::us::chain}, + {"CH_US", precise::us::chain}, + {"gunterschain", precise::us::chain}, + {"gunterschain_US", precise::us::chain}, + {"surveyorsschain_US", precise::us::chain}, + {"surveyorsschain", 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_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}, + {"LK_US", precise::us::link}, + {"linkforGunterschain_US", precise::us::link}, + {"rch_US", precise::us::engineers::chain}, + {"RCH_US", precise::us::engineers::chain}, + {"ramdenschain_US", precise::us::engineers::chain}, + {"rlk_US", precise::us::engineers::link}, + {"RLK_US", precise::us::engineers::link}, + {"linkforRamdenschain_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}, + {"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)}, + {"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}, + {"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}, + {"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}, + {"CML_I", precise::i::circ_mil}, {"hd", precise::i::hand}, {"hd_i", 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}, + {"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}, + {"BF_I", precise::i::board_foot}, {"boardfoot", precise::i::board_foot}, {"boardfeet", precise::i::board_foot}, {"boardfeet_i", precise::i::board_foot}, @@ -1585,30 +1679,32 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"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}, + {"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_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}, + {"SIN_I", precise::in* precise::in}, {"ci", precise::in.pow(3)}, // cubic inch instead of centiinch {"cin", precise::in.pow(3)}, // cubic inch instead of centiinch {"cin_i", precise::in.pow(3)}, - {"[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}, + {"SFT_I", precise::ft* precise::ft}, {"SCF", precise::energy::scf}, // standard cubic foot + {"standardcubicfoot", 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 + {"MMSCF", 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 @@ -1624,8 +1720,8 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"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)}, + {"cft_i", precise::ft.pow(3)}, + {"CFT_I", precise::ft.pow(3)}, {"foot", precise::ft}, {"foot_i", precise::i::foot}, {"feet", precise::ft}, @@ -1635,51 +1731,51 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"yd_i", precise::yd}, {"yard_i", precise::yd}, {"yards_i", precise::yd}, - {"[YD_I]", precise::yd}, + {"YD_I", precise::yd}, {"ydus", precise::us::yard}, - {"yd_us", precise::us::yard}, + {"yd_US", precise::us::yard}, {"ydsus", precise::us::yard}, - {"[YD_US]", precise::us::yard}, + {"YD_US", precise::us::yard}, {"yardus", precise::us::yard}, - {"yard_us", precise::us::yard}, - {"yards_us", precise::us::yard}, + {"yard_US", precise::us::yard}, + {"yards_US", precise::us::yard}, {"marathon", {26.2, precise::mile}}, {"sy", precise::yd* precise::yd}, {"syd", precise::yd* precise::yd}, {"syd_i", 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)}, + {"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}, + {"IN_BR", precise::imp::inch}, {"ft_br", precise::imp::foot}, - {"[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}, + {"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}, + {"CH_BR", precise::imp::chain}, + {"gunterschain_br", precise::imp::chain}, {"lk_br", precise::imp::link}, - {"[LK_BR]", precise::imp::link}, - {"linkforGunter'schain_br", precise::imp::link}, + {"LK_BR", precise::imp::link}, + {"linkforGunterschain_br", precise::imp::link}, {"fth_br", precise::nautical::fathom}, - {"[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}, + {"PC_BR", precise::imp::pace}, {"pace_br", precise::imp::pace}, {"yd_br", precise::imp::yard}, - {"[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}, @@ -1687,18 +1783,19 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"cable_br", precise_unit(0.1, 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}, + {"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}, + {"MI_BR", precise::imp::mile}, {"mile_br", precise::imp::mile}, {"gal_br", precise::imp::gallon}, - {"[GAL_BR]", precise::imp::gallon}, + {"GAL_BR", precise::imp::gallon}, {"gallon_br", precise::imp::gallon}, + {"gallon_br_FL", precise::imp::gallon}, + {"gallon_FL_br", precise::imp::gallon}, {"yard", precise::yd}, {"cubit", precise::distance::cubit}, {"cubit_br", precise::distance::cubit}, - {"cubit(UK)", precise::distance::cubit}, {"ell", precise_unit(45.0, precise::in)}, {"ell_br", precise_unit(45.0, precise::in)}, {"englishell", precise_unit(45.0, precise::in)}, @@ -1710,6 +1807,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< // my kids have taken to measuring thing in number of daddy's so it // need to be in the app {"daddy", {75.0, precise::in}}, + {"theoretical", + {1.0, precise::one, commodities::packaging::theoretical}}, + {"actual", {1.0, precise::one, commodities::packaging::actual}}, {"arpent", precise::distance::arpent_us}, {"arpent_fr", precise::distance::arpent_fr}, {"arpentlin", precise::distance::arpent_fr}, @@ -1726,20 +1826,22 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"grad", precise::angle::grad}, {"gradians", precise::angle::grad}, {"grade", precise::angle::grad}, - {"mil(angle)", precise_unit(0.0625, precise::angle::grad)}, + {"mil_ang", precise_unit(0.0625, precise::angle::grad)}, {"brad", precise::angle::brad}, {"degF", precise::degF}, {"degsF", precise::degF}, - {"[DEGF]", precise::degF}, + {"DEGF", precise::degF}, {u8"\u2109", precise::degF}, // direct unicode symbol {"degR", precise::temperature::degR}, {"degsR", precise::temperature::degR}, - {"[DEGR]", precise::temperature::degR}, + {"DEGR", precise::temperature::degR}, {u8"\u00B0R", precise::temperature::degR}, {u8"\u00B0r", precise::temperature::reaumur}, {"\xB0R", precise::temperature::degR}, + {"\xB0R@459.67", precise::temperature::degF}, + {u8"\u00B0R@459.67", precise::temperature::degR}, {"\xB0r", precise::temperature::reaumur}, - {"[DEGRE]", precise::temperature::reaumur}, + {"DEGRE", precise::temperature::reaumur}, {"degRe", precise::temperature::reaumur}, {"degsRe", precise::temperature::reaumur}, {u8"degR\u00e9aumur", precise::temperature::reaumur}, @@ -1772,37 +1874,77 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< precise::degF}, {u8"\u00b0F", precise::degF}, {"fahrenheit", precise::degF}, + {"perm", + {57.2135, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perm_US", + {57.2135, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perm_m", + {86.8127, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perm_[00]", + {57.2135, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perm_[23]", + {57.4525, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perms_US", + {57.2135, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perms_m", + {86.8127, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perms_[00]", + {57.2135, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, + {"perms_[23]", + {57.4525, + precise::nano* precise::g / + (precise::s * precise::m.pow(2) * precise::Pa)}}, {"mi", precise::mile}, {"mi_i", precise::mile}, {"league", precise::i::league}, {"lea", precise::i::league}, - {"[MI_I]", precise::mile}, + {"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}, + {"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}, + {"srd_US", precise::us::rod* precise::us::rod}, + {"SRD_US", precise::us::rod* precise::us::rod}, {"sct", precise::us::section}, - {"[SCT]", precise::us::section}, + {"SCT", precise::us::section}, {"section", precise::us::section}, {"homestead", precise::us::homestead}, {"twp", precise::us::township}, - {"[TWP]", precise::us::township}, + {"TWP", precise::us::township}, {"township", precise::us::township}, - {"township_us", precise::us::township}, + {"township_US", 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))}, + {"TEU", {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))}, + {"fortyfootcontainer", + precise_unit(40.0 * 8.0 * 8.5, precise::ft.pow(3))}, + {"twentyfootcontainer", + precise_unit(20.0 * 8.0 * 8.5, precise::ft.pow(3))}, {"acre", precise::acre}, {"acr", precise::acre}, {"ac", precise::acre}, @@ -1810,24 +1952,26 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ac*ft", precise::acre* precise::us::foot}, {"acre-foot", precise::acre* precise::us::foot}, {"acrefoot", precise::acre* precise::us::foot}, - {"acre_us", precise::acre}, - {"acr_us", precise::acre}, + {"acre_US", precise::acre}, + {"acr_US", precise::acre}, {"[ACR_US]", precise::acre}, {"[ACR_BR]", precise::imp::acre}, {"acr_br", precise::imp::acre}, {"acre_br", precise::imp::acre}, {"acres_br", precise::imp::acre}, - {"buildersacre", precise_unit(40000.0, precise::ft.pow(2))}, - {"cricketpitch", precise_unit(3.66 * 22.56, precise::m.pow(2))}, - {"cricketpitches", precise_unit(3.66 * 22.56, precise::m.pow(2))}, - {"footballpitch", precise_unit(105.0 * 68.0, precise::m.pow(2))}, - {"footballpitches", precise_unit(105.0 * 68.0, precise::m.pow(2))}, - {"footballfield", precise_unit(360.0 * 160.0, precise::ft.pow(2))}, + {"buildersacre", {40000.0, precise::ft.pow(2)}}, + {"cricketpitch", {3.66 * 22.56, precise::m.pow(2)}}, + {"cricketpitches", {3.66 * 22.56, precise::m.pow(2)}}, + {"sitas", {100.0, m.pow(2)}}, + {"footballpitch", {105.0 * 68.0, precise::m.pow(2)}}, + {"footballpitches", {105.0 * 68.0, precise::m.pow(2)}}, + {"footballfield", {360.0 * 160.0, precise::ft.pow(2)}}, {"Gasolineat15.5C", precise_unit(739.33, precise::kg / precise::m.pow(3))}, - {"rood", precise_unit(0.25, precise::imp::acre)}, + {"rood", {0.25, precise::imp::acre}}, // porous solid permeability - {"darcy", precise_unit(9.869233e-13, precise::m.pow(2))}, + {"darcy", {9.869233e-13, precise::m.pow(2)}}, + {"manmonth", {1.0, precise::time::mog, commodities::people}}, {"$/gal", precise::currency / precise::gal}, // allow lower case watt abbreviation {"w", precise::watt}, @@ -1844,22 +1988,17 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"horsepowermechanical", precise::hp}, {"mechanicalhorsepower", precise::hp}, {"shafthorsepower", precise::hp}, - {"horsepower(mechanical)", precise::hp}, - {"horsepower(water)", precise::hp}, + {"horsepower_mech", precise::hp}, + {"horsepower_H2O", precise::hp}, {"waterhorsepower", precise::hp}, - {"horsepower(hydraulic)", precise::hp}, - {"horsepower(air)", precise::hp}, - {"hp(mechanical)", precise::hp}, - {"hp(water)", precise::hp}, - {"hp(hydraulic)", precise::hp}, - {"hp(air)", precise::hp}, + {"hp_mech", precise::hp}, + {"hp_H2O", precise::hp}, {"hpE", precise::power::hpE}, {"hp(E)", precise::power::hpE}, {"horsepower-electrical", precise::power::hpE}, - {"horsepower(electrical)", precise::power::hpE}, - {"horsepower(electric)", precise::power::hpE}, + {"horsepower_electric", precise::power::hpE}, {"electrichorsepower", precise::power::hpE}, - {"hp(electric)", precise::power::hpE}, + {"hp_electric", precise::power::hpE}, {"hpM", precise::power::hpM}, {"hp_m", precise::power::hpM}, {"hp(M)", precise::power::hpM}, @@ -1867,10 +2006,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"hpS", precise::power::hpS}, {"hp(S)", precise::power::hpS}, {"horsepower-steam", precise::power::hpS}, - {"horsepower(steam)", precise::power::hpS}, - {"horsepower(boiler)", precise::power::hpS}, + {"horsepower_steam", precise::power::hpS}, {"boilerhorsepower", precise::power::hpS}, - {"hp(boiler)", precise::power::hpS}, + {"hp_steam", precise::power::hpS}, {"mph", precise::mph}, {"mileperhour", precise::mph}, @@ -1884,27 +2022,27 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"br", precise::invalid}, {"nmi", precise::nautical::mile}, {"nmi_i", precise::nautical::mile}, - {"[NMI_I]", precise::nautical::mile}, + {"NMI_I", precise::nautical::mile}, {"fth", precise::nautical::fathom}, {"fath", precise::nautical::fathom}, - {"fth_us", precise::nautical::fathom}, + {"fth_US", precise::nautical::fathom}, {"fthus", precise::nautical::fathom}, - {"[FTH_US]", precise::nautical::fathom}, - {"fathom_us", 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}, {"cable_i", precise_unit(0.1, precise::nautical::mile)}, {"cable", precise_unit(0.1, precise::nautical::mile)}, - {"cable_us", precise_unit(219.5, precise::m)}, + {"cable_US", precise_unit(219.5, precise::m)}, {"fth_i", precise::nautical::fathom}, - {"[FTH_I]", precise::nautical::fathom}, + {"FTH_I", precise::nautical::fathom}, {"kn", precise::nautical::knot}, {"knot", precise::nautical::knot}, {"knot_i", precise::nautical::knot}, {"knots_i", precise::nautical::knot}, {"kn_i", precise::nautical::knot}, - {"[KN_I]", precise::nautical::knot}, + {"KN_I", precise::nautical::knot}, {"knots", precise::nautical::knot}, {"kts", precise::nautical::knot}, {"fps", precise::ft / precise::s}, @@ -1927,19 +2065,26 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"caloriesat15C", precise::energy::cal_15}, {"calories15C", precise::energy::cal_15}, {"calorie15C", precise::energy::cal_15}, + {"calorie_15", precise::energy::cal_15}, + {"cal_15", precise::energy::cal_15}, + {"calorie_[15]", precise::energy::cal_15}, {"cal_[20]", precise::energy::cal_20}, {u8"calorieat20\u00B0C", precise::energy::cal_20}, {"caloriesat20C", precise::energy::cal_20}, {"calorie20C", precise::energy::cal_20}, + {"calorie_[20]", precise::energy::cal_20}, {"cals20C", precise::energy::cal_20}, {"cal20C", precise::energy::cal_20}, {"cals15C", precise::energy::cal_15}, {"cal15C", precise::energy::cal_15}, + {"cal15", precise::energy::cal_15}, + {"cal20", precise::energy::cal_20}, + {"cal_20", precise::energy::cal_20}, {u8"cal_20\u00B0C", precise::energy::cal_20}, {"CAL_[15]", precise::energy::cal_15}, {"CAL_[20]", precise::energy::cal_20}, {"cal_m", precise::energy::cal_mean}, - {"meancalorie", precise::energy::cal_mean}, + {"calorie_m", precise::energy::cal_mean}, {"cal_IT", precise::energy::cal_it}, {"CAL_M", precise::energy::cal_mean}, {"CAL_IT", precise::energy::cal_it}, @@ -1948,28 +2093,37 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"cal_th", precise::energy::cal_th}, {"CAL_TH", precise::energy::cal_th}, {"calorie_th", precise::energy::cal_th}, + {"kcal_th", precise::kilo* precise::energy::cal_th}, {"calorie", precise::cal}, {"kcal", precise::energy::kcal}, {"kCal", precise::energy::kcal}, {"KCAL", precise::energy::kcal}, {"Kcal", precise::energy::kcal}, {"kilocalorie", precise::energy::kcal}, + {"kilocalorie_m", precise::kilo* precise::energy::cal_mean}, {"btu", precise::energy::btu_it}, {"Btu", precise::energy::btu_it}, {"BTU", precise::energy::btu_it}, + {"bTU", precise::energy::btu_it}, {"Mbtu", precise_unit(1000.0, precise::energy::btu_it)}, {"MBtu", precise_unit(1000.0, precise::energy::btu_it)}, {"MBTU", precise_unit(1000.0, precise::energy::btu_it)}, + // Next 2 are ucum definitions {"[Btu]", precise::energy::btu_th}, {"[BTU]", precise::energy::btu_th}, {"British thermal unit", precise::energy::btu_th}, // this is for name matching with the UCUM standard {"Btu_39", precise::energy::btu_39}, {"BTU_39", precise::energy::btu_39}, + {"bTU_39", precise::energy::btu_39}, + {"Btu_[39]", precise::energy::btu_39}, + {"BTU_[39]", precise::energy::btu_39}, + {"bTU_[39]", precise::energy::btu_39}, {"BTU39F", precise::energy::btu_39}, {u8"BTU39\u00B0F", precise::energy::btu_39}, {u8"btu_39\u00B0F", precise::energy::btu_39}, {"Btu_59", precise::energy::btu_59}, + {"bTU_[59]", precise::energy::btu_59}, {"BTU_59", precise::energy::btu_59}, {"BTU59F", precise::energy::btu_59}, {u8"BTU59\u00B0F", precise::energy::btu_59}, @@ -1977,16 +2131,23 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"Btu_60", precise::energy::btu_60}, {"BTU_60", precise::energy::btu_60}, {"BTU60F", precise::energy::btu_60}, + {"bTU_60", precise::energy::btu_60}, + {"Btu_[60]", precise::energy::btu_60}, + {"BTU_[60]", precise::energy::btu_60}, + {"bTU_[60]", precise::energy::btu_60}, {u8"BTU60\u00B0F", precise::energy::btu_60}, {u8"btu_60\u00B0F", precise::energy::btu_60}, {"Btu_m", precise::energy::btu_mean}, {"BTU_m", precise::energy::btu_mean}, + {"bTU_m", precise::energy::btu_mean}, {"BTU_M", precise::energy::btu_mean}, {"Btu_IT", precise::energy::btu_it}, {"BTU_IT", precise::energy::btu_it}, + {"bTU_IT", precise::energy::btu_it}, {"Btu_th", precise::energy::btu_th}, - {"[BTU_TH]", precise::energy::btu_th}, + {"BTU_TH", precise::energy::btu_th}, {"BTU_th", precise::energy::btu_th}, + {"bTU_th", precise::energy::btu_th}, {"CHU", precise_unit(1899.0, precise::J)}, {"TNT", precise::energy::ton_tnt}, {"tontnt", precise::energy::ton_tnt}, @@ -2070,40 +2231,14 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"pounds/squareinch", precise::pressure::psi}, {"[PSI]", precise::pressure::psi}, {"[psi]", precise::pressure::psi}, - {"inHg", precise::pressure::inHg}, - {"in_Hg", precise::pressure::inHg}, - {"inchHg", precise::pressure::inHg}, - {"ftH2O", precise_unit(12.0, precise::pressure::inH2O)}, - {"footwater", precise_unit(12.0, precise::pressure::inH2O)}, {"inH2O", precise::pressure::inH2O}, - {"in_H2O", precise::pressure::inH2O}, - {"inchH2O", precise::pressure::inH2O}, {"inAq", precise::pressure::inH2O}, {"in_Aq", precise::pressure::inH2O}, - {"in[Hg]", precise::pressure::inHg}, - {"in[H2O]", precise::pressure::inH2O}, - {"IN[HG]", precise::pressure::inHg}, - {"IN[H2O]", precise::pressure::inH2O}, + {"inHg", precise::pressure::inHg}, {"[in_i'Hg]", precise::pressure::inHg}, {"[IN_I'HG]", precise::pressure::inHg}, - {"inchofmercury", precise::pressure::inHg}, - {"inchesofmercury", precise::pressure::inHg}, - {"inchmercury", precise::pressure::inHg}, - {"inch{mercury}", precise::pressure::inHg}, - {"inchofmercury_i", precise::pressure::inHg}, - {"inchofmercurycolumn", precise::pressure::inHg}, - {"inchesofmercurycolumn", precise::pressure::inHg}, {"[in_i'H2O]", precise::pressure::inH2O}, {"[IN_I'H2O]", precise::pressure::inH2O}, - {"inchwater", precise::pressure::inH2O}, - {"inch(international)ofwater", precise::pressure::inH2O}, - {"inchofwater", precise::pressure::inH2O}, - {"inchesofwater", precise::pressure::inH2O}, - {"inchofwaterguage", precise::pressure::inH2O}, - {"inchofwater_i", precise::pressure::inH2O}, - {"inch{water}", precise::pressure::inH2O}, - {"inchofwatercolumn", precise::pressure::inH2O}, - {"inchesofwatercolumn", precise::pressure::inH2O}, {"iwg", precise::pressure::inH2O}, // cgs unit of electric quadrupole {"buckingham", @@ -2115,45 +2250,55 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"therm(EC)", precise::energy::therm_ec}, {"thm_ec", precise::energy::therm_ec}, {"therm_ec", precise::energy::therm_ec}, - {"therm_us", precise::energy::therm_us}, - {"thm_us", precise::energy::therm_us}, + {"therm_US", precise::energy::therm_us}, + {"thm_US", precise::energy::therm_us}, {"therm_br", precise::energy::therm_br}, {"thermie", precise::MTS::thermie}, {"gal", precise::gal}, - {"gal_us", precise::us::gallon}, - {"[GAL_US]", precise::us::gallon}, - {"gallon_us", precise::us::gallon}, - {"liquidgallon_us", precise::us::gallon}, - {"gal_wi", precise::us::dry::gallon}, - {"wigal", precise::us::dry::gallon}, - {"[GAL_WI]", precise::us::dry::gallon}, - {"drygallon_us", precise::us::dry::gallon}, - {"gallon-historical", precise::us::dry::gallon}, + {"gal_US", precise::us::gallon}, + {"GAL_US", precise::us::gallon}, + {"gallon_US", precise::us::gallon}, + {"gallon_FL_US", precise::us::gallon}, + {"gallon_US_FL", precise::us::gallon}, + {"gal_wi", precise::us::dry::winchester_gallon}, // winchester gallon + {"winchestergallon", + precise::us::dry::winchester_gallon}, // winchester gallon + {"winchestercorngallon", + precise::us::dry::winchester_gallon}, // winchester gallon + {"corngallon", + precise::us::dry::winchester_gallon}, // winchester gallon + {"corngallon_br", + precise::us::dry::winchester_gallon}, // winchester gallon + {"alegallon", precise::us::ale_gallon}, + {"wigal", precise::us::dry::winchester_gallon}, + {"GAL_WI", precise::us::dry::winchester_gallon}, + {"drygallon_US", precise::us::dry::gallon}, + {"drybarrel", precise::us::dry::barrel}, + {"drybarrel_US", precise::us::dry::barrel}, + {"gallon-historical", precise::us::dry::winchester_gallon}, {"firkin", precise_unit(9.0, precise::us::dry::gallon)}, {"rundlet", precise_unit{18.0, precise::imp::gallon}}, - {"rundlet_wi", precise_unit{18.0, precise::imp::gallon}}, + {"rundlet_wine", precise_unit{18.0, precise::imp::gallon}}, {"tierce", precise_unit{42.0, precise::imp::gallon}}, - {"tierce_wi", precise_unit{42.0, precise::imp::gallon}}, + {"tierce_wine", precise_unit{42.0, precise::imp::gallon}}, {"tierce_br", precise_unit{42.0, precise::imp::gallon}}, - {"firkin_wi", precise_unit(70.0, precise::imp::gallon)}, + {"firkin_wine", precise_unit(70.0, precise::imp::gallon)}, {"butterfirkin", precise_unit(25.40117, precise::kg)}, {"soapfirkin", precise_unit(25.40117, precise::kg)}, {"firkin_br", precise_unit(9.0, precise::imp::gallon)}, {"kilderkin", precise_unit(18.0, precise::imp::gallon)}, - {"kilderkin_wi", precise_unit(18.0, precise::imp::gallon)}, - {"hogshead_wi", precise_unit(52.5, precise::imp::gallon)}, - {"tun_wi", precise_unit(210.0, precise::imp::gallon)}, - {"butt_wi", precise_unit(105.0, precise::imp::gallon)}, - {"barrel_wi", precise_unit(26.25, precise::imp::gallon)}, + {"kilderkin_wine", precise_unit(18.0, precise::imp::gallon)}, + {"hogshead_wine", precise_unit(52.5, precise::imp::gallon)}, + {"tun_wine", precise_unit(210.0, precise::imp::gallon)}, + {"butt_wine", precise_unit(105.0, precise::imp::gallon)}, + {"barrel_wine", precise_unit(26.25, precise::imp::gallon)}, {"beerbarrel_br", precise_unit(26.25, precise::imp::gallon)}, {"bbl", precise::us::barrel}, {"barrel", precise::us::barrel}, - {"bbl(oil)", precise::us::barrel}, - {"barrel(oil)", precise::us::barrel}, {"bbl_us", precise::us::barrel}, - {"[bbl_us]", precise::us::barrel}, - {"[BBL_US]", precise::us::barrel}, - {"barrel_us", precise::us::barrel}, + {"bbl_US", precise::us::barrel}, + {"BBL_US", precise::us::barrel}, + {"barrel_US", precise::us::barrel}, {"keg", precise_unit(15.5, precise::us::gallon)}, {"fullkeg", precise_unit(15.5, precise::us::gallon)}, {"importkeg", precise_unit(13.2, precise::us::gallon)}, @@ -2161,14 +2306,14 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"bubba", precise_unit(1.32, precise::us::gallon)}, {"sixtel", precise_unit(5.16, precise::us::gallon)}, {"cornykeg", precise_unit(5.16, precise::us::gallon)}, - {"flbarrel_us", precise::us::flbarrel}, + {"flbarrel_US", precise::us::flbarrel}, {"puncheon", precise_unit(84.0, precise::us::gallon)}, - {"puncheon_wi", precise_unit(84.0, precise::us::gallon)}, - {"fluidbarrel_us", precise::us::flbarrel}, - {"liquidbarrel_us", precise::us::flbarrel}, + {"puncheon_wine", precise_unit(84.0, precise::us::gallon)}, + {"gallon_wine", precise::imp::winegallon}, + {"barrel_US_FL", precise::us::flbarrel}, + {"barrel_FL_US", precise::us::flbarrel}, {"flbarrel", precise::us::flbarrel}, - {"fluidbarrel", precise::us::flbarrel}, - {"liquidbarrel", precise::us::flbarrel}, + {"barrel_FL", precise::us::flbarrel}, {"gal_ca", precise::canada::gallon}, {"gallon_ca", precise::canada::gallon}, {"tbsp_ca", precise::canada::tbsp}, @@ -2189,6 +2334,9 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"lb", precise::lb}, {"LB", precise::lb}, {"kip", precise::kilo* precise::lb}, + {"kipf", precise::kilo* precise::lbf}, + {"kipforce", precise::kilo* precise::lbf}, + {"kilopound", precise::kilo* precise::lb}, {"lb_tr", precise::troy::pound}, {"[LB_TR]", precise::troy::pound}, {"pound-troy", precise::troy::pound}, @@ -2204,16 +2352,13 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"bag", precise_unit(96.0, precise::lb)}, {"tonc", precise::energy::tonc}, // ton cooling - {"ton(refrigeration)", precise::energy::tonc}, // ton cooling + {"ton_cooling", precise::energy::tonc}, // ton cooling {"tonofrefrigeration", precise::energy::tonc}, // ton cooling {"tonsofrefrigeration", precise::energy::tonc}, // ton cooling {"refrigerationton", precise::energy::tonc}, // ton cooling - {"ton(cooling)", precise::energy::tonc}, // ton cooling - {"ton{refrigeration}", precise::energy::tonc}, // ton cooling - {"ton{cooling}", precise::energy::tonc}, // ton cooling {"tonhour", precise::energy::tonhour}, - {"tonhour(refrigeration)", precise::energy::tonhour}, - {"tonhour{refrigeration}", precise::energy::tonhour}, + {"tonhour_cooling", precise::energy::tonhour}, + {"ton-hour_cooling", precise::energy::tonhour}, {"RT", precise::energy::tonc}, // ton cooling {"TR", precise::energy::tonc}, // ton cooling // {"tons", precise::energy::tonc* precise::s}, @@ -2224,29 +2369,26 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ozfl", precise::us::floz}, {"fl oz", precise::us::floz}, {"floz", precise::us::floz}, - {"floz_us", precise::us::floz}, - {"foz_us", precise::us::floz}, + {"floz_US", precise::us::floz}, + {"foz_US", precise::us::floz}, {"foz", precise::us::floz}, {"shot", {1.5, precise::us::floz}}, - {"[FOZ_US]", precise::us::floz}, - {"fluidounce", precise::us::floz}, - {"fluidounce_us", precise::us::floz}, - {"fluiddram", precise_unit(1.0 / 8.0, precise::us::floz)}, - {"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}, + {"FOZ_US", precise::us::floz}, + {"ounce_FL", precise::us::floz}, + {"ounce_US_FL", precise::us::floz}, + {"ounce_FL_US", precise::us::floz}, + {"dram_FL", precise_unit(1.0 / 8.0, precise::us::floz)}, + {"dram_FL_US", precise_unit(1.0 / 8.0, precise::us::floz)}, + {"dram_US_FL", precise_unit(1.0 / 8.0, precise::us::floz)}, {"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}, + {"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}, {"minim", precise::us::minim}, {"ouncefl", precise::us::floz}, - {"fluidoz", precise::us::floz}, - {"liquidoz", precise::us::floz}, + {"oz_FL", precise::us::floz}, {"oz", precise::oz}, {"OZ", precise::oz}, {u8"\u2125", precise::oz}, @@ -2255,7 +2397,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"grain", precise::i::grain}, {"oz_av", precise::av::ounce}, {"oz_i", precise::av::ounce}, - {"[OZ_AV]", precise::av::ounce}, + {"OZ_AV", precise::av::ounce}, {"pound_i", precise::av::pound}, {"pound_av", precise::av::pound}, {"lb_av", precise::av::pound}, @@ -2267,25 +2409,28 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"dr_i", precise::av::dram}, {"dram_av", precise::av::dram}, {"dram_i", precise::av::dram}, - {"[DR_AV]", precise::av::dram}, + {"dram_br", precise::imp::dram}, + {"drammass_br", precise::av::dram}, + {"DR_AV", precise::av::dram}, {"drammassunit", precise::av::dram}, {"scwt", precise::av::hundredweight}, {"scwt_av", precise::av::hundredweight}, - {"[SCWT_AV]", precise::av::hundredweight}, + {"SCWT_AV", precise::av::hundredweight}, {"shorthundredweight", precise::av::hundredweight}, {"lcwt_av", precise::av::longhundredweight}, - {"[LCWT_AV]", precise::av::longhundredweight}, + {"LCWT_AV", precise::av::longhundredweight}, {"longhundredweight", precise::av::longhundredweight}, {"quintal", precise::mass::quintal}, {"quintal_m", precise::mass::quintal}, {"cwt", precise::av::hundredweight}, - {"cwt_us", precise::av::hundredweight}, + {"cwt_US", precise::av::hundredweight}, {"cwt_br", precise::av::longhundredweight}, {"hundredweight", precise::av::hundredweight}, - {"hundredweight_us", precise::av::hundredweight}, + {"hundredweight_US", precise::av::hundredweight}, {"hundredweight_br", precise::av::longhundredweight}, {"hundredweight(short)", precise::av::hundredweight}, {"hundredweight(long)", precise::av::longhundredweight}, + {"quarter_br", {0.25, precise::av::longhundredweight}}, {"assayton", precise::mass::ton_assay}, {"tonassay", precise::mass::ton_assay}, {"ton(assayUS)", precise::mass::ton_assay}, @@ -2293,56 +2438,75 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"ton(assay)_br", precise::mass::longton_assay}, {"longassayton", precise::mass::longton_assay}, {"stone_av", precise::av::stone}, - {"stone_us", precise_unit(0.125, precise::av::hundredweight)}, - {"[STONE_AV]", precise::av::stone}, + {"stone_US", precise_unit(0.125, precise::av::hundredweight)}, + {"STONE_AV", precise::av::stone}, {"ston_av", precise::av::ton}, - {"[STON_AV]", precise::av::ton}, + {"STON_AV", precise::av::ton}, {"shortton", precise::av::ton}, - {"shortton_us", precise::av::ton}, - {"ton_us", precise::av::ton}, + {"tonshort", precise::av::ton}, + {"shortton_US", precise::av::ton}, + {"ton_US", precise::av::ton}, {"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)}, + {"ton(short)_US", precise::ton}, + {"longton", precise::av::longton}, + {"tonlong", precise::av::longton}, + {"longton_m", precise::av::longton}, + {"longton_US", precise::av::longton}, {"lton_av", precise::av::longton}, - {"[LTON_AV]", precise::av::longton}, + {"LTON_AV", precise::av::longton}, {"longton_av", precise::av::longton}, {"ton(long)", precise::av::longton}, + {"ton(long)_US", precise::av::longton}, + {"ton(long)_br", precise::av::longton}, {"longton_br", precise::av::longton}, {"ton_br", precise::av::longton}, + + {"shippington_br", {42.0, ft.pow(3)}}, + {"ton_ship_br", {42.0, ft.pow(3)}}, + {"ton_ship", {40.0, ft.pow(3)}}, + {"shippington_US", {40.0, ft.pow(3)}}, + {"ton_ship_US", {40.0, ft.pow(3)}}, + {"ton_US_ship", {40.0, ft.pow(3)}}, + {"oz_tr", precise::troy::oz}, {"[OZ_TR]", precise::troy::oz}, {"ounce_tr", precise::troy::oz}, {"pound_tr", precise::troy::pound}, {"pwt_tr", precise::troy::pennyweight}, {"pwt", precise::troy::pennyweight}, - {"[PWT_TR]", precise::troy::pennyweight}, + {"PWT_TR", precise::troy::pennyweight}, {"pennyweight_tr", precise::troy::pennyweight}, {"pennyweight", precise::troy::pennyweight}, - {"dram_tr", precise_unit{0.00388793458, precise::kg}}, + {"dram_tr", precise::apothecaries::drachm}, {"sc_ap", precise::apothecaries::scruple}, - {"[SC_AP]", precise::apothecaries::scruple}, + {"SC_AP", precise::apothecaries::scruple}, {"scruple", precise::apothecaries::scruple}, {"scruple_ap", precise::apothecaries::scruple}, {u8"\u2108", precise::apothecaries::scruple}, {"dr_ap", precise::apothecaries::drachm}, {u8"\u0292", precise::apothecaries::drachm}, {"dram_ap", precise::apothecaries::drachm}, - {"[DR_AP]", precise::apothecaries::drachm}, + {"dram_US", precise::apothecaries::drachm}, + {"drachm_br", precise::apothecaries::drachm}, + {"DR_AP", precise::apothecaries::drachm}, {"oz_ap", precise::apothecaries::ounce}, - {"[OZ_AP]", precise::apothecaries::ounce}, + {"OZ_AP", precise::apothecaries::ounce}, {"ounce_ap", precise::apothecaries::ounce}, {"lb_ap", precise::apothecaries::pound}, {"lbsap", precise::apothecaries::pound}, - {"[LB_AP]", precise::apothecaries::pound}, + {"LB_AP", precise::apothecaries::pound}, {"pound_ap", precise::apothecaries::pound}, {"oz_m", precise::apothecaries::metric_ounce}, {"[OZ_M]", precise::apothecaries::metric_ounce}, {"ounce_m", precise::apothecaries::metric_ounce}, {"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}}, + // U at the end leads to custom unit unless this is here {"[CAR_AU]", precise_unit{1.0 / 24.0, precise::one, commodities::gold}}, {"caratofgoldalloys", @@ -2350,25 +2514,22 @@ 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}, {"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_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_US", precise::av::ton* constants::g0.as_unit()}, {"tonf_br", precise::av::longton* constants::g0.as_unit()}, {"sn", precise::MTS::sthene}, {"sthene", precise::MTS::sthene}, {"pz", precise::MTS::pieze}, {"pieze", precise::MTS::pieze}, {"lbf_av", precise::av::lbf}, - {"lbf_us", precise::av::lbf}, - {"[LBF_AV]", precise::av::lbf}, + {"lbf_US", precise::av::lbf}, + {"LBF_AV", precise::av::lbf}, {"lbf", precise::lbf}, {"ozf", precise::av::ozf}, - {"poundforce_us", precise::lbf}, + {"poundforce_US", precise::lbf}, // the next four are energy even though the breakdown would be power {"foot-pound", precise::ft* precise::lbf}, {"foot-pound of energy", precise::ft* precise::lbf}, @@ -2382,23 +2543,23 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"slug", precise::av::slug}, // {"kt", precise_unit(200.0, precise::mg)}, {"cup", precise::us::cup}, - {"cup_us", precise::us::cup}, - {"[CUP_US]", precise::us::cup}, + {"cup_US", precise::us::cup}, + {"CUP_US", precise::us::cup}, {"cupUScustomary", precise::us::cup}, {"sticksofbutter", {0.5, precise::us::cup}}, {"tsp", precise::us::tsp}, - {"tsp_us", precise::us::tsp}, - {"[TSP_US]", precise::us::tsp}, + {"tsp_US", precise::us::tsp}, + {"TSP_US", precise::us::tsp}, {"teaspoon", precise::us::tsp}, - {"teaspoon_us", precise::us::tsp}, + {"teaspoon_US", precise::us::tsp}, {"tbsp", precise::us::tbsp}, {"tblsp", precise::us::tbsp}, {"tbl", precise::us::tbsp}, {"tbs", precise::us::tbsp}, - {"tbs_us", precise::us::tbsp}, - {"[TBS_US]", precise::us::tbsp}, + {"tbs_US", precise::us::tbsp}, + {"TBS_US", precise::us::tbsp}, {"tablespoon", precise::us::tbsp}, - {"tablespoon_us", precise::us::tbsp}, + {"tablespoon_US", precise::us::tbsp}, {"smidgen", precise_unit(1.0 / 32.0, precise::us::tsp)}, {"smdg", precise_unit(1.0 / 32.0, precise::us::tsp)}, {"pinch", precise_unit(1.0 / 24.0, precise::us::tsp)}, @@ -2418,125 +2579,141 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"teacup", precise_unit(1.0 / 2.0, precise::us::cup)}, {"tcf", precise_unit(1.0 / 2.0, precise::us::cup)}, {"cup_m", precise::metric::cup}, + {"cups_m", precise::metric::cup}, {"[CUP_M]", precise::metric::cup_uslegal}, {"[cup_m]", precise::metric::cup_uslegal}, // ucum definitions I think // it is wrong there {"cupUSlegal", precise::metric::cup_uslegal}, {"tsp_m", precise::metric::tsp}, - {"[TSP_M]", precise::metric::tsp}, - {"teaspoon-metric", precise::metric::tsp}, + {"TSP_M", precise::metric::tsp}, {"teaspoon_m", precise::metric::tsp}, {"tbs_m", precise::metric::tbsp}, {"tbsm", precise::metric::tbsp}, {"[TBS_M]", precise::metric::tbsp}, - {"tablespoon-metric", precise::metric::tbsp}, {"tablespoon_m", precise::metric::tbsp}, {"foz_m", precise::metric::floz}, {"[FOZ_M]", precise::metric::floz}, - {"fluidounce-metric", precise::metric::floz}, - {"fluidounce_m", precise::metric::floz}, - {"liquidounce-metric", precise::metric::floz}, - {"liquidounce_m", precise::metric::floz}, + {"ounce_m_FL", precise::metric::floz}, + {"ounce_FL_m", precise::metric::floz}, {"quart", precise::us::quart}, {"qt", precise::us::quart}, {"QT", precise::us::quart}, - {"qt_us", precise::us::quart}, - {"[QT_US]", precise::us::quart}, - {"quart_us", precise::us::quart}, + {"qt_US", precise::us::quart}, + {"QT_US", precise::us::quart}, + {"quart_US", precise::us::quart}, + {"quart_US_FL", precise::us::quart}, + {"quart_FL_US", precise::us::quart}, {"pt", precise::us::pint}, {"pint", precise::us::pint}, - {"pint_us", precise::us::pint}, - {"pt_us", precise::us::pint}, - {"[PT_US]", precise::us::pint}, + {"pint_FL", precise::us::pint}, + {"pint_US", precise::us::pint}, + {"pint_FL_US", precise::us::pint}, + {"pint_US_FL", precise::us::pint}, + {"pt_US", precise::us::pint}, + {"PT_US", precise::us::pint}, {"gill", precise::us::gill}, {"gi", precise::us::gill}, - {"gill_us", precise::us::gill}, - {"gil_us", precise::us::gill}, - {"[GIL_US]", precise::us::gill}, + {"gill_US", precise::us::gill}, + {"gil_US", precise::us::gill}, + {"GIL_US", precise::us::gill}, {"pk", precise::us::dry::peck}, - {"pk_us", precise::us::dry::peck}, - {"[PK_US]", precise::us::dry::peck}, + {"pk_US", precise::us::dry::peck}, + {"PK_US", precise::us::dry::peck}, {"peck", precise::us::dry::peck}, - {"peck_us", precise::us::dry::peck}, - {"bu_us", precise::us::dry::bushel}, - {"bsh_us", precise::us::dry::bushel}, - {"[BU_US]", precise::us::dry::bushel}, - {"bushel_us", precise::us::dry::bushel}, + {"peck_US", precise::us::dry::peck}, + {"peckdry_US", precise::us::dry::peck}, + {"bu_US", precise::us::dry::bushel}, + {"bsh_US", precise::us::dry::bushel}, + {"BU_US", precise::us::dry::bushel}, + {"bushel_US", precise::us::dry::bushel}, {"dqt", precise::us::dry::quart}, - {"dqt_us", precise::us::dry::quart}, + {"dqt_US", precise::us::dry::quart}, {"dryqt", precise::us::dry::quart}, - {"dryqt_us", precise::us::dry::quart}, - {"[DQT_US]", precise::us::dry::quart}, - {"dryquart_us", precise::us::dry::quart}, + {"dryqt_US", precise::us::dry::quart}, + {"DQT_US", precise::us::dry::quart}, + {"dryquart_US", precise::us::dry::quart}, {"dryquart", precise::us::dry::quart}, - {"dpt_us", precise::us::dry::pint}, - {"[DPT_US]", precise::us::dry::pint}, - {"drypint_us", precise::us::dry::pint}, + {"dpt_US", precise::us::dry::pint}, + {"DPT_US", precise::us::dry::pint}, + {"drypint_US", precise::us::dry::pint}, {"drypint", precise::us::dry::pint}, {"drypt", precise::us::dry::pint}, {"qt_br", precise::imp::quart}, - {"[QT_BR]", precise::imp::quart}, + {"QT_BR", precise::imp::quart}, {"quart_br", precise::imp::quart}, + {"quart_br_FL", precise::imp::quart}, + {"quart_FL_br", precise::imp::quart}, {"pt_br", precise::imp::pint}, - {"[PT_BR]", precise::imp::pint}, + {"PT_BR", precise::imp::pint}, {"pint_br", precise::imp::pint}, + {"pint_FL_br", precise::imp::pint}, + {"pint_br_FL", precise::imp::pint}, {"gil_br", precise::imp::gill}, - {"[GIL_BR]", precise::imp::gill}, + {"GIL_BR", precise::imp::gill}, {"gill_br", precise::imp::gill}, + {"gill_br_FL", precise::imp::gill}, + {"gill_FL_br", precise::imp::gill}, {"gi_br", precise::imp::gill}, {"pk_br", precise::imp::peck}, - {"[PK_BR]", precise::imp::peck}, + {"PK_BR", precise::imp::peck}, {"peck_br", precise::imp::peck}, + {"peckdry_br", precise::imp::peck}, {"bu_br", precise::imp::bushel}, {"bsh_br", precise::imp::bushel}, - {"[BU_BR]", precise::imp::bushel}, + {"BU_BR", precise::imp::bushel}, {"bushel_br", precise::imp::bushel}, {"foz_br", precise::imp::floz}, {"floz_br", precise::imp::floz}, - {"[FOZ_BR]", precise::imp::floz}, - {"fluidounce_br", precise::imp::floz}, - {"liquidounce_br", precise::imp::floz}, + {"FOZ_BR", precise::imp::floz}, + {"oz_br_FL", precise::imp::floz}, + {"oz_FL_br", precise::imp::floz}, + {"ounce_br_FL", precise::imp::floz}, + {"ounce_FL_br", precise::imp::floz}, {"fdr_br", precise::imp::dram}, {"[FDR_BR]", precise::imp::dram}, - {"fluiddram_br", precise::imp::dram}, - {"liquiddram_br", precise::imp::dram}, + {"dram_br_FL", precise::imp::dram}, + {"dram_FL_br", precise::imp::dram}, {"min_br", precise::imp::minim}, - {"[MIN_BR]", precise::imp::minim}, + {"MIN_BR", precise::imp::minim}, {"minim_br", precise::imp::minim}, - {"barrel_br", precise::imp::barrel}, - {"bbl_br", precise::imp::barrel}, + {"barrel_brl", precise::imp::bbl}, + {"barrel_br", precise::imp::winebarrel}, + {"barrel_br_wine", precise::imp::winebarrel}, + {"barrel_wine_br", precise::imp::winebarrel}, + {"barreloil_br", precise::imp::bbl}, + {"bbl_br", precise::imp::bbl}, {"tablespoon_br", precise::imp::tbsp}, {"teaspoon_br", precise::imp::tsp}, {"dessertspoon_br", precise_unit(2.0, precise::imp::tsp)}, {"tbsp_br", precise::imp::tbsp}, {"tsp_br", precise::imp::tsp}, {"cup_br", precise::imp::cup}, - {"[lne]", precise::typographic::dtp::line}, - {"[LNE]", precise::typographic::dtp::line}, + {"cup_br_FL", precise::imp::cup}, + {"cup_FL_br", precise::imp::cup}, + {"LNE", precise::typographic::dtp::line}, {"line", precise::typographic::dtp::line}, - {"line_us", precise::typographic::american::line}, - {"point_us", precise::typographic::american::point}, - {"pica_us", precise::typographic::american::pica}, - {"twip_us", precise::typographic::american::twip}, + {"line_US", precise::typographic::american::line}, + {"point_US", precise::typographic::american::point}, + {"pica_US", precise::typographic::american::pica}, + {"twip_US", precise::typographic::american::twip}, {"line_br", precise::typographic::american::line}, {"pnt", precise::typographic::dtp::point}, - {"[PNT]", precise::typographic::dtp::point}, + {"PNT", precise::typographic::dtp::point}, {"desktoppublishingpoint", precise::typographic::dtp::point}, {"pca", precise::typographic::dtp::pica}, - {"[PCA]", precise::typographic::dtp::pica}, + {"PCA", precise::typographic::dtp::pica}, {"dtppica", precise::typographic::dtp::pica}, {"dtptwip", precise::typographic::dtp::twip}, {"dtppoint", precise::typographic::dtp::point}, {"point", precise::typographic::dtp::point}, + {"bigpoint", precise::typographic::dtp::point}, {"pica", precise::typographic::dtp::pica}, {"twip", precise::typographic::dtp::twip}, - {"printer'spoint", precise::typographic::printers::point}, {"printerspoint", precise::typographic::printers::point}, {"pointprinter", precise::typographic::printers::point}, {"pnt_pr", precise::typographic::printers::point}, {"pntpr", precise::typographic::printers::point}, - {"[PNT_PR]", precise::typographic::printers::point}, - {"printer'spica", precise::typographic::printers::pica}, + {"PNT_PR", precise::typographic::printers::point}, {"printerspica", precise::typographic::printers::pica}, {"picaprinter", precise::typographic::printers::pica}, {"ATApica", precise::typographic::printers::pica}, @@ -2547,22 +2724,22 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"pointata", precise::typographic::printers::point}, {"pca_pr", precise::typographic::printers::pica}, {"pcapr", precise::typographic::printers::pica}, - {"[PCA_PR]", precise::typographic::printers::pica}, + {"PCA_PR", precise::typographic::printers::pica}, {"INpoint", precise::typographic::IN::point}, {"INpica", precise::typographic::IN::pica}, {"INPoint", precise::typographic::IN::point}, {"INPica", precise::typographic::IN::pica}, {"pied", precise::typographic::french::pied}, - {"[PIED]", precise::typographic::french::pied}, + {"PIED", precise::typographic::french::pied}, {"pouce", precise::typographic::french::pouce}, - {"[POUCE]", precise::typographic::french::pouce}, + {"POUCE", precise::typographic::french::pouce}, {"ligne", precise::typographic::french::ligne}, - {"[LIGNE]", precise::typographic::french::ligne}, + {"LIGNE", precise::typographic::french::ligne}, {"didot", precise::typographic::french::didot}, {"didotpoint", precise::typographic::french::didot}, - {"[DIDOT]", precise::typographic::french::didot}, + {"DIDOT", precise::typographic::french::didot}, {"cicero", precise::typographic::french::cicero}, - {"[CICERO]", precise::typographic::french::cicero}, + {"CICERO", precise::typographic::french::cicero}, {"postscriptpoint", precise::typographic::postscript::point}, {"pointpostscript", precise::typographic::postscript::point}, {"postscriptpica", precise::typographic::postscript::pica}, @@ -2580,14 +2757,14 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"denier(linearmassdensity)", precise::textile::denier}, {"den", precise::textile::denier}, {"[DEN]", precise::textile::denier}, - {"span(cloth)", precise::textile::span}, - {"finger(cloth)", precise::textile::finger}, - {"nail(cloth)", precise::textile::nail}, + {"span_cloth", precise::textile::span}, + {"finger_cloth", precise::textile::finger}, + {"nail_cloth", precise::textile::nail}, {"nail", precise::textile::nail}, {"span", precise::textile::span}, {"finger", precise::textile::finger}, {"smoot", precise::distance::smoot}, - {"[SMOOT]", precise::distance::smoot}, + {"SMOOT", precise::distance::smoot}, // potrzebie system developed by Dononld Knuth // https://polaris93.livejournal.com/2046896.html {"potrzebie", precise_unit(2.2633484517438173216473, precise::mm)}, @@ -2598,38 +2775,27 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< {"farshimmelt", precise_unit(0.000001, precise::one)}, {"clarke", precise::day}, - {"[hp_X]", - precise_unit(1.0, precise::log::neglog10, commodities::Hahnemann)}, - {"[HP_X]", - precise_unit(1.0, precise::log::neglog10, commodities::Hahnemann)}, - {"[hp_C]", - precise_unit(1.0, precise::log::neglog100, commodities::Hahnemann)}, - {"[HP_C]", - precise_unit(1.0, precise::log::neglog100, commodities::Hahnemann)}, - {"[hp_M]", - precise_unit(1.0, precise::log::neglog1000, commodities::Hahnemann)}, - {"[HP_M]", - precise_unit(1.0, precise::log::neglog1000, commodities::Hahnemann)}, - {"[hp_Q]", - precise_unit(1.0, precise::log::neglog50000, commodities::Hahnemann)}, - {"[HP_Q]", - precise_unit(1.0, precise::log::neglog50000, commodities::Hahnemann)}, - {"[kp_X]", - precise_unit(1.0, precise::log::neglog10, commodities::Korsakov)}, - {"[KP_X]", - precise_unit(1.0, precise::log::neglog10, commodities::Korsakov)}, - {"[kp_C]", - precise_unit(1.0, precise::log::neglog100, commodities::Korsakov)}, - {"[KP_C]", - precise_unit(1.0, precise::log::neglog100, commodities::Korsakov)}, - {"[kp_M]", - precise_unit(1.0, precise::log::neglog1000, commodities::Korsakov)}, - {"[KP_M]", - precise_unit(1.0, precise::log::neglog1000, commodities::Korsakov)}, - {"[kp_Q]", - precise_unit(1.0, precise::log::neglog50000, commodities::Korsakov)}, - {"[KP_Q]", - precise_unit(1.0, precise::log::neglog50000, commodities::Korsakov)}, + {"[hp_X]", {1.0, precise::log::neglog10, commodities::Hahnemann}}, + {"[HP_X]", {1.0, precise::log::neglog10, commodities::Hahnemann}}, + {"[hp_C]", {1.0, precise::log::neglog100, commodities::Hahnemann}}, + {"[HP_C]", {1.0, precise::log::neglog100, commodities::Hahnemann}}, + {"[hp_M]", {1.0, precise::log::neglog1000, commodities::Hahnemann}}, + {"[HP_M]", {1.0, precise::log::neglog1000, commodities::Hahnemann}}, + {"[hp_Q]", {1.0, precise::log::neglog50000, commodities::Hahnemann}}, + {"[HP_Q]", {1.0, precise::log::neglog50000, commodities::Hahnemann}}, + {"[kp_X]", {1.0, precise::log::neglog10, commodities::Korsakov}}, + {"[KP_X]", {1.0, precise::log::neglog10, commodities::Korsakov}}, + {"[kp_C]", {1.0, precise::log::neglog100, commodities::Korsakov}}, + {"[KP_C]", {1.0, precise::log::neglog100, commodities::Korsakov}}, + {"[kp_M]", {1.0, precise::log::neglog1000, commodities::Korsakov}}, + {"[KP_M]", {1.0, precise::log::neglog1000, commodities::Korsakov}}, + {"[kp_Q]", {1.0, precise::log::neglog50000, commodities::Korsakov}}, + {"[KP_Q]", {1.0, precise::log::neglog50000, commodities::Korsakov}}, + {"ream", {500.0, precise::count, commodities::paper}}, + {"ream_br", {480.0, precise::count, commodities::paper}}, + {"quire", {25.0, precise::count, commodities::paper}}, + {"quire_br", {24.0, precise::count, commodities::paper}}, + {"sheet", {1.0, precise::count, commodities::paper}}, {"shu", precise_unit(1.0 / 16, precise::other::ppm, commodities::capsaicin)}, {"scoville", @@ -2645,7 +2811,7 @@ UNITS_CPP14_CONSTEXPR_OBJECT std::array< #if !defined(UNITS_DISABLE_NON_ENGLISH_UNITS) || \ UNITS_DISABLE_NON_ENGLISH_UNITS == 0 UNITS_CPP14_CONSTEXPR_OBJECT -std::array, 61> +std::array, 65> defined_unit_strings_non_english{{ {"ken", precise::japan::ken}, {"cun", precise::chinese::cun}, @@ -2673,9 +2839,9 @@ std::array, 61> // turkey, UAE, levant unit of area {"dunam", precise_unit(1000.0, precise::m.pow(2))}, // taiwan - {"ping", precise_unit(3.305, precise::m.pow(2))}, + {"ping", {3.305, precise::m.pow(2)}}, // korea unit of area - {"pyong", precise_unit(3.305, precise::m.pow(2))}, + {"pyong", {3.305, precise::m.pow(2)}}, // ancient Roman units {"amphora", {27.84, precise::L}}, {"sextarii", {27.84 / 48.0, precise::L}}, @@ -2717,6 +2883,10 @@ std::array, 61> {"labor", {1000000.0 * 3.0 * 278.6 * 3.0 * 278.6, precise::mm.pow(2)}}, {"zenti", {1.0 / 100.0, precise::one}}, // german for centi {"zentner", {50.0, precise::kg}}, // german + {"pferdestaerke", precise::power::hpM}, // german horsepower + {"cheval vapeur", precise::power::hpM}, // french horsepower + {"chevalvapeur", precise::power::hpM}, // french horsepower + {"pfund", {0.5, kg}}, // german }}; @@ -2724,7 +2894,7 @@ std::array, 61> // Mostly from https://en.wikipedia.org/wiki/International_System_of_Units UNITS_CPP14_CONSTEXPR_OBJECT -std::array, 245> defined_measurement_types{ +std::array, 247> defined_measurement_types{ { {"", precise::defunit}, {"arb", precise::defunit}, @@ -2808,6 +2978,7 @@ std::array, 245> defined_measurement_types{ {"heat", precise::J}, {"power", precise::W}, {"powerlevel", precise::W* precise::log::neper}, + {"loudness", precise::special::sone}, {"radiantflux", precise::W}, {"heatfluxdensity", precise::W / precise::m.pow(2)}, {"electriccharge", precise::C}, @@ -2896,6 +3067,7 @@ std::array, 245> defined_measurement_types{ {"heatcapacity", precise::J / precise::K}, {"entropy", precise::J / precise::K}, {"specificentropy", precise::J / precise::kg / precise::K}, + {"specificgravity", precise::pu* precise::kg / precise::m.pow(3)}, {"dynamicviscosity", precise::Pa* precise::s}, {"viscosity", precise::Pa* precise::s}, {"visc", precise::Pa* precise::s}, @@ -2941,7 +3113,8 @@ std::array, 245> defined_measurement_types{ {"acnc", precise::one / precise::L}, {"velcnc", precise::m / precise::s / precise::L}, {"mrat", precise::kg / precise::s}, - {"osmol", precise_unit(1.0, precise::mol, commodities::particles)}, + {"osmol", + precise_unit(1.0, precise::mol, commodities::packaging::particle)}, {"massfraction", precise::pu* precise::kg}, {"mfr", precise::pu* precise::kg}, {"amplitudespectraldensity", precise::special::ASD}, diff --git a/units/units_decl.hpp b/units/units_decl.hpp index ba837f01..f043a6c8 100644 --- a/units/units_decl.hpp +++ b/units/units_decl.hpp @@ -612,42 +612,43 @@ class unit { { } /// Construct unit from base unit and a multiplier - constexpr unit(const detail::unit_data& base_unit, double mult) : - base_units_(base_unit), multiplier_(static_cast(mult)) + constexpr unit(double mult, const detail::unit_data& base_unit) : + multiplier_(static_cast(mult)), base_units_(base_unit) { } /// Construct unit from base unit and a multiplier - constexpr explicit unit(const detail::unit_data& base_unit, float mult) : - base_units_(base_unit), multiplier_(mult) + constexpr explicit unit(float mult, const detail::unit_data& base_unit) : + multiplier_(mult), base_units_(base_unit) { } /// Take the double and unit in either order for simplicity constexpr unit(double mult, const unit& other) : - unit(other.base_units_, mult * other.multiplier()) + unit(mult * other.multiplier(), other.base_units_) { } + /// Unit multiplication constexpr unit operator*(const unit& other) const { return { - base_units_ * other.base_units_, multiplier() * other.multiplier()}; + multiplier() * other.multiplier(), base_units_ * other.base_units_}; } /// Division operator constexpr unit operator/(const unit& other) const { return { - base_units_ / other.base_units_, multiplier() / other.multiplier()}; + multiplier() / other.multiplier(), base_units_ / other.base_units_}; } /// Invert the unit (take 1/unit) constexpr unit inv() const { - return {base_units_.inv(), 1.0 / multiplier()}; + return {1.0 / multiplier(), base_units_.inv()}; } /// take a unit to an integral power constexpr unit pow(int power) const { return unit{ - base_units_.pow(power), detail::power_const(multiplier_, power)}; + detail::power_const(multiplier_, power), base_units_.pow(power)}; } /// Test for unit equivalence to within nominal numerical tolerance (6 /// decimal digits) @@ -732,38 +733,41 @@ class unit { /// generate a new unit but with per_unit flag constexpr unit add_per_unit() const { - return unit{base_units_.add_per_unit(), multiplier_}; + return unit{multiplier_, base_units_.add_per_unit()}; } /// generate a new unit but with i flag constexpr unit add_i_flag() const { - return unit{base_units_.add_i_flag(), multiplier_}; + return unit{multiplier_, base_units_.add_i_flag()}; } /// generate a new unit but with e flag constexpr unit add_e_flag() const { - return unit{base_units_.add_e_flag(), multiplier_}; + return unit{multiplier_, base_units_.add_e_flag()}; } /// generate a new unit but with per_unit flag set to 0 constexpr unit clear_per_unit() const { - return unit{base_units_.clear_per_unit(), multiplier_}; + return unit{multiplier_, base_units_.clear_per_unit()}; } /// generate a new unit but with i flag set to 0 constexpr unit clear_i_flag() const { - return unit{base_units_.clear_i_flag(), multiplier_}; + return unit{multiplier_, base_units_.clear_i_flag()}; } /// generate a new unit but with e flag set to 0 constexpr unit clear_e_flag() const { - return unit{base_units_.clear_e_flag(), multiplier_}; + return unit{ + multiplier_, + base_units_.clear_e_flag(), + }; } private: friend class precise_unit; - detail::unit_data base_units_{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; float multiplier_{1.0}; + detail::unit_data base_units_{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; }; /**Class defining a basic unit module with double precision on the multiplier. @@ -780,117 +784,155 @@ class precise_unit { base_units_(base_unit) { } - /// copy constructor from a less precise unit - explicit constexpr precise_unit(const unit& other) noexcept : - base_units_(other.base_units_), multiplier_(other.multiplier()) + + /// Construct from multiplier, base_unit + constexpr precise_unit( + double mult, + const detail::unit_data& base_unit) noexcept : + multiplier_(mult), + base_units_(base_unit) { } - /// Construct from base_unit and multiplier + + /// Construct from multiplier, base_unit, commodity constexpr precise_unit( + double mult, const detail::unit_data& base_unit, - double mult) noexcept : - base_units_(base_unit), - multiplier_(mult) + std::uint32_t commodity_code) noexcept : + multiplier_(mult), + base_units_(base_unit), commodity_(commodity_code) { } - /// Construct from base_unit, commodity and multiplier - constexpr precise_unit( + + /// Construct from multiplier, base_unit, commodity + explicit constexpr precise_unit( const detail::unit_data& base_unit, - std::uint32_t commodity_code, - double mult) noexcept : + std::uint32_t commodity_code) noexcept : base_units_(base_unit), - commodity_(commodity_code), multiplier_(mult) + commodity_(commodity_code) { } - /// Copy constructor with a multiplier - constexpr precise_unit(const precise_unit& other, double mult) noexcept : - precise_unit( - other.base_units_, - other.commodity_, - mult * other.multiplier_) + + /// copy constructor from a less precise unit + explicit constexpr precise_unit(const unit& other) noexcept : + multiplier_(other.multiplier()), base_units_(other.base_units_) { } + /// Constructor for a double and other unit - constexpr precise_unit(const unit& other, double mult) noexcept : - precise_unit(other.base_units(), mult * other.multiplier()) + constexpr precise_unit(double mult, const unit& other) noexcept : + precise_unit(mult * other.multiplier(), other.base_units()) + { + } + + /// Constructor for a double and other unit and commodity_code + constexpr precise_unit( + double mult, + const unit& other, + std::uint32_t commodity_code) noexcept : + precise_unit( + mult * other.multiplier(), + other.base_units(), + commodity_code) + { + } + + /// Constructor for a double and other unit and commodity_code + explicit constexpr precise_unit( + const unit& other, + std::uint32_t commodity_code) noexcept : + precise_unit(other.multiplier(), other.base_units(), commodity_code) { } + constexpr precise_unit(double mult, const precise_unit& other) noexcept : precise_unit( + mult * other.multiplier_, + other.base_units_, + other.commodity_) + { + } + + /// Copy constructor with a commodity + explicit constexpr precise_unit( + const precise_unit& other, + std::uint32_t commodity_code) noexcept : + precise_unit( + other.multiplier_, other.base_units_, - other.commodity_, - mult * other.multiplier_) + commodity_code | other.commodity_) { } + /// Build a unit from another with a multiplier and commodity constexpr precise_unit( double mult, const precise_unit& other, std::uint32_t commodity_code) noexcept : precise_unit( + mult * other.multiplier_, other.base_units_, - commodity_code, - mult * other.multiplier_) - { - } - /// Constructor for a double and other unit - constexpr precise_unit(double mult, const unit& other) noexcept : - precise_unit(other.base_units(), mult * other.multiplier()) + commodity_code | other.commodity_) { } + /// take the reciprocal of a unit constexpr precise_unit inv() const { return { + 1.0 / multiplier(), base_units_.inv(), (commodity_ == 0) ? 0 : ~commodity_, - 1.0 / multiplier()}; + }; } /// Multiply with another unit constexpr precise_unit operator*(const precise_unit& other) const { return { + multiplier() * other.multiplier(), base_units_ * other.base_units_, (commodity_ == 0) ? other.commodity_ : ((other.commodity_ == 0) ? commodity_ : - commodity_ & other.commodity_), - multiplier() * other.multiplier()}; + commodity_ | other.commodity_), + }; } /// Multiplication operator with a lower precision unit constexpr precise_unit operator*(const unit& other) const { return { + multiplier() * other.multiplier(), base_units_ * other.base_units_, commodity_, - multiplier() * other.multiplier()}; + }; } /// Division operator constexpr precise_unit operator/(const precise_unit& other) const { return { + multiplier() / other.multiplier(), base_units_ / other.base_units_, (commodity_ == 0) ? ((other.commodity_ == 0) ? 0 : ~other.commodity_) : ((other.commodity_ == 0) ? commodity_ : commodity_ & (~other.commodity_)), - multiplier() / other.multiplier()}; + }; } /// Divide by a less precise unit constexpr precise_unit operator/(const unit& other) const { return { + multiplier() / other.multiplier(), base_units_ / other.base_units_, - commodity_, - multiplier() / other.multiplier()}; + commodity_}; } /// take a unit to a power constexpr precise_unit pow(int power) const { return { + detail::power_const(multiplier_, power), base_units_.pow(power), - commodity_, - detail::power_const(multiplier_, power)}; + commodity_}; } /// Overloaded equality operator bool operator==(const precise_unit& other) const @@ -1031,32 +1073,32 @@ class precise_unit { /// generate a new unit but with per_unit flag constexpr precise_unit add_per_unit() const { - return {base_units_.add_per_unit(), commodity_, multiplier_}; + return {multiplier_, base_units_.add_per_unit(), commodity_}; } /// generate a new unit but with i flag constexpr precise_unit add_i_flag() const { - return {base_units_.add_i_flag(), commodity_, multiplier_}; + return {multiplier_, base_units_.add_i_flag(), commodity_}; } /// generate a new unit but with e flag constexpr precise_unit add_e_flag() const { - return {base_units_.add_e_flag(), commodity_, multiplier_}; + return {multiplier_, base_units_.add_e_flag(), commodity_}; } /// generate a new unit but with per_unit flag set to 0 constexpr precise_unit clear_per_unit() const { - return {base_units_.clear_per_unit(), commodity_, multiplier_}; + return {multiplier_, base_units_.clear_per_unit(), commodity_}; } /// generate a new unit but with i flag set to 0 constexpr precise_unit clear_i_flag() const { - return {base_units_.clear_i_flag(), commodity_, multiplier_}; + return {multiplier_, base_units_.clear_i_flag(), commodity_}; } /// generate a new unit but with e flag set to 0 constexpr precise_unit clear_e_flag() const { - return {base_units_.clear_e_flag(), commodity_, multiplier_}; + return {multiplier_, base_units_.clear_e_flag(), commodity_}; } /// Set the commodity precise_unit& commodity(std::uint32_t newCommodity) @@ -1066,9 +1108,9 @@ class precise_unit { } private: + double multiplier_{1.0}; //!< unit multiplier detail::unit_data base_units_{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; std::uint32_t commodity_{0}; //!< a commodity specifier - double multiplier_{1.0}; //!< unit multiplier }; /// Check if a unit down cast is lossless @@ -1080,7 +1122,7 @@ inline constexpr bool is_unit_cast_lossless(const precise_unit& val) /// Downcast a precise unit to the less precise version constexpr unit unit_cast(const precise_unit& val) { - return {val.base_units(), val.multiplier()}; + return {val.multiplier(), val.base_units()}; } constexpr unit unit_cast(const unit& val) {