diff --git a/.github/workflows/ci-clang-tidy.yml b/.github/workflows/ci-clang-tidy.yml index e7ca83d81f..c33d4729c7 100644 --- a/.github/workflows/ci-clang-tidy.yml +++ b/.github/workflows/ci-clang-tidy.yml @@ -66,6 +66,11 @@ concurrency: jobs: generate-matrix: name: "Generate build matrix for ${{ github.workflow }}" + # A PR whose head branch lives in this repository is already covered by the `push` event above, + # whose path filters match only the commits just pushed - unlike `pull_request`, which matches + # them against the whole base...head diff and so re-runs everything for a docs-only push. Fork + # PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} seed: ${{ steps.set-matrix.outputs.seed }} diff --git a/.github/workflows/ci-compile-time.yml b/.github/workflows/ci-compile-time.yml index 4f0eb5f41c..58fa672f8a 100644 --- a/.github/workflows/ci-compile-time.yml +++ b/.github/workflows/ci-compile-time.yml @@ -82,6 +82,11 @@ env: jobs: instantiations: + # A PR whose head branch lives in this repository is already covered by the `push` event above, + # whose path filters match only the commits just pushed - unlike `pull_request`, which matches + # them against the whole base...head diff and so re-runs everything for a docs-only push. Fork + # PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository # One gate per supported language standard: counts differ per -std, and a regression can appear # in one standard alone. Each has its own reviewed baselines in the benchmarks repository. strategy: diff --git a/.github/workflows/ci-conan.yml b/.github/workflows/ci-conan.yml index 083abf68dc..3c68e60f9a 100644 --- a/.github/workflows/ci-conan.yml +++ b/.github/workflows/ci-conan.yml @@ -68,6 +68,11 @@ concurrency: jobs: generate-matrix: name: "Generate build matrix for ${{ github.workflow }}" + # A PR whose head branch lives in this repository is already covered by the `push` event above, + # whose path filters match only the commits just pushed - unlike `pull_request`, which matches + # them against the whole base...head diff and so re-runs everything for a docs-only push. Fork + # PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} seed: ${{ steps.set-matrix.outputs.seed }} diff --git a/.github/workflows/ci-formatting.yml b/.github/workflows/ci-formatting.yml index 0ec1051ef3..08ce8fd4ae 100644 --- a/.github/workflows/ci-formatting.yml +++ b/.github/workflows/ci-formatting.yml @@ -33,6 +33,9 @@ concurrency: jobs: check: + # A PR whose head branch lives in this repository is already covered by the `push` event above. + # Fork PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 diff --git a/.github/workflows/ci-freestanding.yml b/.github/workflows/ci-freestanding.yml index ba2928ca19..5b499a8c8a 100644 --- a/.github/workflows/ci-freestanding.yml +++ b/.github/workflows/ci-freestanding.yml @@ -64,6 +64,11 @@ concurrency: jobs: generate-matrix: name: "Generate build matrix for ${{ github.workflow }}" + # A PR whose head branch lives in this repository is already covered by the `push` event above, + # whose path filters match only the commits just pushed - unlike `pull_request`, which matches + # them against the whole base...head diff and so re-runs everything for a docs-only push. Fork + # PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} seed: ${{ steps.set-matrix.outputs.seed }} diff --git a/.github/workflows/ci-test-package-cmake.yml b/.github/workflows/ci-test-package-cmake.yml index 5024024080..04bf4db714 100644 --- a/.github/workflows/ci-test-package-cmake.yml +++ b/.github/workflows/ci-test-package-cmake.yml @@ -62,6 +62,11 @@ concurrency: jobs: generate-matrix: name: "Generate build matrix for ${{ github.workflow }}" + # A PR whose head branch lives in this repository is already covered by the `push` event above, + # whose path filters match only the commits just pushed - unlike `pull_request`, which matches + # them against the whole base...head diff and so re-runs everything for a docs-only push. Fork + # PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} seed: ${{ steps.set-matrix.outputs.seed }} diff --git a/.github/workflows/citation.yml b/.github/workflows/citation.yml index ae77b68617..fbe2c648d3 100644 --- a/.github/workflows/citation.yml +++ b/.github/workflows/citation.yml @@ -19,6 +19,9 @@ concurrency: jobs: validate-citation-cff: + # A PR whose head branch lives in this repository is already covered by the `push` event above. + # Fork PRs never fire `push` here, so they are what this event exists to serve. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository runs-on: ubuntu-latest timeout-minutes: 10 name: Validate CITATION.cff diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2d76225ce7..3aa2e64578 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,10 @@ repos: hooks: - id: trailing-whitespace args: [--markdown-linebreak-ext=md] + # the NIST CODATA tables are checked in byte-verbatim; nothing may rewrite them + exclude: ^scripts/codata/ - id: end-of-file-fixer + exclude: ^scripts/codata/ - id: check-yaml args: [--unsafe] # mkdocs.yml uses !ENV and !!python/name: tags - id: check-json diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a5a379df6..87d9561a29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,16 +14,51 @@ This page documents the version history and changes for the **mp-units** library - fix: `uncertain::relative_uncertainty()` now divides by the absolute value. GUM and the VIM define the relative standard uncertainty as `u(x)/|x|`, so it is never negative; it used to come out negative for a negative central value +- feat: compile-time factorization now handles composites of large primes: `mul_mod` + uses a double-wide (128-bit) product where the compiler provides one, and + `find_first_factor` finds factors with a batched-Brent Pollard's rho instead of + unbounded trial division (which needed ~266k `constexpr` iterations for real CODATA + mantissas, over GCC's default loop limit). Mirrors the approach validated in Au + (aurora-opensource/au#686); trial division remains as the last-resort fallback +- perf: the whole `unit_magnitude` interface (operators and all queries) moved to hidden + friends of a new non-template `unit_magnitude_interface` base, the same shape as + `unit_interface` and `quantity_spec_interface`. A hidden friend of a class template + is redeclared by every specialization, and magnitude-heavy code instantiates + thousands of specializations per translation unit, so those declarations dominated + compile times; in a non-template base they are declared once and cost nothing while + keeping all hidden-friend benefits. A TU including `si` units and constants dropped + from ~2.6 s to ~1.6 s, and the complete `codata2022.h` from ~40 s to ~4.1 s + (GCC 15; Clang 21 shows 44 s -> 6.8 s) - (!) feat: `pi` and `π` is now a unit constant - (!) feat: `iau::newtonian_constant_of_gravitation` is now imported from `codata::newtonian_constant_of_gravitation` instead of being defined by the IAU system, and the `iau::codata2018` inline namespace is gone. IAU 2015 Resolution B3 asks for the current best estimate of G, so the value now follows whichever adjustment is current. The value is unchanged today, since CODATA 2022 kept G at 6.674 30(15)e-11 -- feat: CODATA fundamental physical constants added as a separate system in - `mp-units/systems/codata.h` (`codata::codata2014`, `codata::codata2018`, and the - `inline` `codata::codata2022`). Deliberately not part of `si`, so that - `mp-units/systems/si.h` does not carry constants most code never names +- feat: CODATA fundamental physical constants added as a separate system with one + namespace and one header per adjustment (`codata::codata2014`, `codata::codata2018`, + and the `inline` `codata::codata2022`), GENERATED from the NIST "allascii" tables by + `scripts/codata_constants.py` for complete coverage (~230 constants per adjustment): + measured constants transcribe the published value and absolute standard uncertainty + digit for digit, exact non-terminating values are defined by their exact symbolic + relations, and an independent verification step recomputes every emitted value + against its source row. Each adjustment ships in two tiers: + `mp-units/systems/codata/codataYYYY_essential.h` (the NIST "frequently used" + selection, cheap to compile) and `mp-units/systems/codata/codataYYYY.h` (the complete + table, including the essential tier), with `mp-units/systems/codata.h` as the + umbrella. Deliberately not part of `si`, so that `mp-units/systems/si.h` does not + carry constants most code never names (#820) +- deprecated: `si::standard_gravity`. It is not an SI defining constant but a conventional + value adopted by CGPM 3 (1901), which is what NIST's "adopted values" CODATA category + holds; its home is now `codata::standard_gravity` from + ``, a single adjustment-invariant entity + shared by all CODATA namespaces (as are the standard atmosphere, the standard-state + pressure, and the conventional Josephson and von Klitzing values). `yard_pound`'s + `pound_force` is now defined through the codata entity +- deprecated: `si::reduced_planck_constant`. ℏ is not an SI defining constant either; its + home is `codata::reduced_planck_constant`, defined as the exact `h / 2π` relation in + the post-2019 adjustments and as the measured "Planck constant over 2 pi" in + `codata2014` - deprecated: `si::magnetic_constant`. The pre-2019 SI defined the ampere through it, which made it exactly 4*pi*1e-7 H/m; since the redefinition it is measured. Its value is unchanged, but use `codata::magnetic_constant` for the current adjustment, @@ -54,11 +89,15 @@ This page documents the version history and changes for the **mp-units** library - (!) feat: IAU system definition improved - feat: `uncertain` representation type added to `mp-units::utility` (first-order uncertainty propagation for independent values) (#464) -- feat: measured constants may now declare their `relative_standard_uncertainty` (exact - magnitude metadata on `named_constant`); `MeasuredConstant` concept, - `get_relative_standard_uncertainty`, and `measurement_of` added; declared for - `iau::newtonian_constant_of_gravitation` and all measured constants in the three - `hep` CODATA namespaces (#464) +- feat: measured constants may now declare their standard uncertainty in the form their + source publishes it (exact metadata on `named_constant`): `standard_uncertainty` + (absolute, in the constant's own dimension, transcribing the CODATA table row + verbatim) or `relative_standard_uncertainty` (unit-invariant, for constants whose + defining unit is not tabulated); `MeasuredConstant` concept, + `get_standard_uncertainty`, `get_relative_standard_uncertainty`, and + `measurement_of` added, with each accessor deriving the undeclared form on demand; + declared for `iau::newtonian_constant_of_gravitation` and all measured constants in + the three `hep` CODATA namespaces (#464, #820) - feat: unit conversion factors built from measured constants carry their relative standard uncertainty; the conversion engine folds it into representation types that opt in via `fold_conversion_uncertainty` (e.g., `uncertain`), with measured constants diff --git a/docs/blog/posts/measurement-uncertainty-and-measured-constants.md b/docs/blog/posts/measurement-uncertainty-and-measured-constants.md index aa073e6649..a974be1fee 100644 --- a/docs/blog/posts/measurement-uncertainty-and-measured-constants.md +++ b/docs/blog/posts/measurement-uncertainty-and-measured-constants.md @@ -1,11 +1,10 @@ --- -date: 2026-08-05 +date: 2026-08-06 authors: - mpusz categories: - Metrology comments: true -draft: true --- # Measurement uncertainty and measured constants @@ -20,8 +19,8 @@ happily prints ten significant digits of a solar mass computed from a constant t guarantees four. **mp-units** now models this honestly. This post introduces the `uncertain` representation -type, the `relative_standard_uncertainty` metadata for measured constants, and the -`measurement_of` helper that connects the two. +type, the `standard_uncertainty` and `relative_standard_uncertainty` metadata for measured +constants, and the `measurement_of` helper that connects them. @@ -116,20 +115,42 @@ adjective-wrapper naming pattern as `std::optional` and `std::expected`. ## Measured constants carry their uncertainty -A measured constant now declares its relative standard uncertainty right in its definition, -as an exact symbolic magnitude, using the exact term the CODATA table uses: +A measured constant now declares its standard uncertainty right in its definition, as an +exact symbolic expression, using the exact term the CODATA table uses. This is how NIST +publishes `G` in the machine-readable +[CODATA 2018 table](https://physics.nist.gov/cuu/Constants/ArchiveASCII/allascii_2018.txt), +with a quantity name, a value, a standard uncertainty, and a unit: + +```text +Quantity Value Uncertainty Unit +----------------------------------------------------------------------------- +Newtonian constant of gravitation 6.674 30 e-11 0.000 15 e-11 m^3 kg^-1 s^-2 +``` + +and this is how that row splits into code: ```cpp inline constexpr struct newtonian_constant_of_gravitation final : named_constant<"G", mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic(si::metre) / si::kilogram / square(si::second), - relative_standard_uncertainty{mag_ratio<22, 10> * mag_power<10, -5>}> {} + standard_uncertainty{mag_ratio<15, 10> * mag_power<10, -15> * cubic(si::metre) / si::kilogram / square(si::second)}> {} newtonian_constant_of_gravitation; ``` -The definition reads like the CODATA entry it transcribes: the value `6.674 30 × 10⁻¹¹`, and -the relative standard uncertainty `2.2 × 10⁻⁵`. No representation type appears anywhere. The -metadata is an annotation only. It never participates in unit equality, conversion factors, -or symbolic simplification, so nothing about the existing constant behavior changes. +Every column of the row lands in the definition: the value `6.674 30 × 10⁻¹¹` and the +standard uncertainty `0.000 15 × 10⁻¹¹` digit for digit, both in the constant's own unit +`m³ kg⁻¹ s⁻²`. Transcribing the pair verbatim matters more than it may look. NIST +publishes the value and the uncertainty mutually rounded, each to two significant digits +of the uncertainty, so no derived form reproduces them exactly. Storing the relative +uncertainty instead (an earlier iteration of this design) reconstructed a σ that was off by +6.1% for the fine-structure constant. σ is the number `uncertain` carries, prints, and +propagates, so it is the wrong number to get wrong. + +A second wrapper, `relative_standard_uncertainty`, remains for constants whose source +publishes only the relative form. A measured constant declares exactly one of the two, and +the accessors derive the missing form on demand as an exact ratio of canonical magnitudes. +No representation type appears anywhere. The metadata is an annotation only. It never +participates in unit equality, conversion factors, or symbolic simplification, so nothing +about the existing constant behavior changes. Exact constants simply do not have this parameter. This makes exact-vs-measured a distinction the type system can see, expressed by the new `MeasuredConstant` concept. @@ -157,8 +178,8 @@ const quantity two_suns = 2.0 * iau::unit_symbols::M_SUN; std::cout << two_suns << "\n"; // 2 M_☉ std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 kg -std::cout << two_suns.in>(kg) << "\n"; // 3.97682e+30 ± 8.749e+25 kg -std::cout << value_cast>(two_suns) << "\n"; // 3.97682e+30 ± 8.749e+25 kg +std::cout << two_suns.in>(kg) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg +std::cout << value_cast>(two_suns) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg ``` The first two lines are exact: `two_suns` in its own unit, and the sanctioned central @@ -175,7 +196,7 @@ const quantity two_suns = uncertain{2.0} * iau::unit_symbols::M_SUN; std::cout << two_suns << "\n"; // 2 ± 0 M_☉ std::cout << two_suns.in(iau::unit_symbols::M_EARTH) << "\n"; // 665892 ± 0 M_⊕ -std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 ± 8.749e+25 kg +std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg ``` `two_suns` is exactly two suns even in an uncertainty-capable representation. Both masses @@ -211,8 +232,8 @@ std::cout << "M_sun = " << solar_mass.in(kg) << "\n"; ``` ```text -G = 6.6743e-11 ± 1.46835e-15 m³ kg⁻¹ s⁻² -M_sun = 1.98841e+30 ± 4.3745e+25 kg +G = 6.6743e-11 ± 1.5e-15 m³ kg⁻¹ s⁻² +M_sun = 1.98841e+30 ± 4.46881e+25 kg ``` The solar mass example is the payoff. The IAU defines the nominal solar mass parameter @@ -249,23 +270,29 @@ both units is fully correlated with itself, and it cancels symbolically before t is ever applied, which is exactly why the solar-to-Earth-mass conversion reports zero rather than a small non-zero number. -**Coverage.** `iau::G` and every measured constant in the three HEP CODATA namespaces carry -the uncertainty published by their own release. Constants that are exact by definition carry -nothing at all, which is what makes the distinction visible to the type system in the first -place. +**Coverage.** Every measured constant in the three HEP CODATA namespaces carries the +uncertainty published by its own release. The new +[`codata`](../../users_guide/systems/codata.md) system goes further: its headers are +generated from the NIST tables and cover every constant of the 2014, 2018, and 2022 +adjustments (roughly 230 per adjustment), each transcribing the published value and +standard uncertainty digit for digit, with an independent verification step recomputing +every emitted value against its source row. `iau::G` now imports the CODATA constant +rather than duplicating it. Constants that are exact by definition carry nothing at all, +which is what makes the distinction visible to the type system in the first place. ## Printing what the standard prints The default text output is the `value ± σ` form, the notation engineers read every day: ```cpp -std::cout << G.in(m3 / kg / s2) << "\n"; // 6.6743e-11 ± 1.46835e-15 m³ kg⁻¹ s⁻² +std::cout << G.in(m3 / kg / s2) << "\n"; // 6.6743e-11 ± 1.5e-15 m³ kg⁻¹ s⁻² ``` ISO 80000-1:2022, 7.2.4 specifies a different one. The value is quoted to the last significant digit of the uncertainty, and the uncertainty follows in parentheses, counted -in units of that digit. Appending `~` to the format spec selects it. The tilde marks the -output as an approximation, because unlike the default form this one rounds the value: +in units of that digit. Appending `~` to the format spec selects it. Where the default form +prints what the object holds, this one quotes the value to the precision the uncertainty +justifies, which is how measurement results are reported: ```cpp std::println("{::N[~]}", G.in(m3 / kg / s2)); // 6.67430(15)e-11 m³ kg⁻¹ s⁻² @@ -303,6 +330,9 @@ documentation: it: the mass of the planet from a pendulum, a radius, and `G` - [Faster-than-lightspeed constants](../../users_guide/framework_basics/faster_than_lightspeed_constants.md) explains why constants are units in the first place +- [The CODATA system](../../users_guide/systems/codata.md) documents the generated + constants: one namespace and one header per adjustment, and the essential and complete + tiers - [CODATA fundamental physical constants](https://physics.nist.gov/cuu/Constants/) are the source of the values and uncertainties transcribed into the systems - [JCGM 100 (GUM)](https://www.bipm.org/en/committees/jc/jcgm/publications) is the diff --git a/docs/examples/weighing_the_earth.md b/docs/examples/weighing_the_earth.md index 08ca7acded..e4fa100875 100644 --- a/docs/examples/weighing_the_earth.md +++ b/docs/examples/weighing_the_earth.md @@ -33,7 +33,7 @@ A pendulum is timed over many swings so that the reaction-time error is divided count. Solving $T = 2\pi\sqrt{L/g}$ for the acceleration gives the first stage: ```cpp title="weighing_the_earth.cpp" ---8<-- "example/weighing_the_earth.cpp:60:71" +--8<-- "example/weighing_the_earth.cpp:61:72" ``` The `π` here is a @@ -58,7 +58,7 @@ The second stage asks what mass a sphere must have to produce the observed surfa rather than used as a bare unit, and its CODATA uncertainty joins the propagation: ```cpp title="weighing_the_earth.cpp" ---8<-- "example/weighing_the_earth.cpp:73:78" +--8<-- "example/weighing_the_earth.cpp:74:79" ``` ## Running the experiment @@ -66,7 +66,7 @@ rather than used as a bare unit, and its CODATA uncertainty joins the propagatio First the measured inputs, each with the uncertainty its instrument justifies: ```cpp title="weighing_the_earth.cpp" ---8<-- "example/weighing_the_earth.cpp:85:91" +--8<-- "example/weighing_the_earth.cpp:86:92" ``` The two _lengths_ are given strong quantity types, and that is typing which buys something. @@ -81,7 +81,7 @@ either constraint. Then the two stages run and the results are printed against their published counterparts: ```cpp title="weighing_the_earth.cpp" ---8<-- "example/weighing_the_earth.cpp:93:105" +--8<-- "example/weighing_the_earth.cpp:94:106" ``` Finally the uncertainty budget, which is where the interesting part is. Each input @@ -90,7 +90,7 @@ and the contributions are combined by hand so that the total can be compared aga the library propagated: ```cpp title="weighing_the_earth.cpp" ---8<-- "example/weighing_the_earth.cpp:107:124" +--8<-- "example/weighing_the_earth.cpp:108:125" ``` ```text @@ -98,8 +98,8 @@ pendulum length = 1 ± 5e-04 m time for 50 swings = 100.3 ± 0.06 s local gravity = 9.8107 ± 0.0127 m/s² standard gravity = 9.8066 m/s² -mass of the Earth = 5.9663e+24 ± 7.7398e+21 kg - accepted value = 5.9722e+24 ± 1.3139e+20 kg +mass of the Earth = 5.9663e+24 ± 7.7399e+21 kg + accepted value = 5.9722e+24 ± 1.3422e+20 kg relative uncertainty contributions pendulum length = 5.0e-04 @@ -116,8 +116,8 @@ relative uncertainty contributions | From the output | Value | |-------------------------------------|----------------------------------| -| this experiment | 5.9663 × 10²⁴ ± 7.7398 × 10²¹ kg | -| published (`iau::terrestrial_mass`) | 5.9722 × 10²⁴ ± 1.3139 × 10²⁰ kg | +| this experiment | 5.9663 × 10²⁴ ± 7.7399 × 10²¹ kg | +| published (`iau::terrestrial_mass`) | 5.9722 × 10²⁴ ± 1.3422 × 10²⁰ kg | The gap between the two central values is 0.099% of the published mass: @@ -127,8 +127,8 @@ $$\Delta = 5.9722 \times 10^{24}\,\mathrm{kg} - 5.9663 \times 10^{24}\,\mathrm{k Because *both* figures carry an uncertainty, the comparison uses their combination rather than either alone: -$$u_\text{combined} = \sqrt{\left(7.7398 \times 10^{21}\right)^2 - + \left(1.3139 \times 10^{20}\right)^2} +$$u_\text{combined} = \sqrt{\left(7.7399 \times 10^{21}\right)^2 + + \left(1.3422 \times 10^{20}\right)^2} = 7.74 \times 10^{21}\,\mathrm{kg}$$ The gap is therefore well inside one combined standard uncertainty: @@ -143,9 +143,10 @@ away. This is the question an uncertainty exists to answer: not "what number did Note where those two uncertainties come from. `iau::terrestrial_mass` is defined as `(GM)⊕ᴺ/G`, so its value *in kilograms* is known only as well as `G` is, and the example opts into reporting that with `.in>(kg)`. The standard free-fall -acceleration, by contrast, prints without a `±`, because `si::standard_gravity` is an exact -*conventional* value fixed by the CGPM rather than a measured one. It is a reference point, -not the true local value: real free-fall acceleration ranges from about 9.78 m/s² at the +acceleration, by contrast, prints without a `±`, because `codata::standard_gravity` is an +exact *conventional* value fixed by the CGPM rather than a measured one. It is a reference +point, not the true local value: real free-fall acceleration ranges from about 9.78 m/s² at +the equator to 9.83 m/s² at the poles, a spread far wider than this experiment's uncertainty. **The budget reconciles with the result.** The contributions are independent, so they diff --git a/docs/how_to_guides/advanced_usage/working_with_measurement_uncertainty.md b/docs/how_to_guides/advanced_usage/working_with_measurement_uncertainty.md index dba4cc4497..9fcddd7ea9 100644 --- a/docs/how_to_guides/advanced_usage/working_with_measurement_uncertainty.md +++ b/docs/how_to_guides/advanced_usage/working_with_measurement_uncertainty.md @@ -136,30 +136,44 @@ Physical constants in **mp-units** are units with exact symbolic magnitudes (see [Faster-than-lightspeed constants](../../users_guide/framework_basics/faster_than_lightspeed_constants.md)). For constants that are exact by definition (the SI defining constants, the IAU nominal values), that is the whole story. Constants that are *measured* additionally declare their -relative standard uncertainty, transcribed from the source metrology table: +uncertainty in one of two forms, whichever their source publishes: the absolute +`standard_uncertainty` or the unit-invariant `relative_standard_uncertainty`. The absolute +form is the common one, transcribed from the source metrology table: ```cpp // CODATA 2018: G = 6.674 30(15) × 10⁻¹¹ m³ kg⁻¹ s⁻² -// value: 6.674 30 × 10⁻¹¹ -> the unit magnitude -// relative standard uncertainty: 2.2 × 10⁻⁵ -> the metadata below +// value: 6.674 30 × 10⁻¹¹ -> the unit magnitude +// standard uncertainty: 0.000 15 × 10⁻¹¹ -> the metadata below inline constexpr struct newtonian_constant_of_gravitation final : named_constant<"G", mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic(si::metre) / si::kilogram / square(si::second), - relative_standard_uncertainty{mag_ratio<22, 10> * mag_power<10, -5>}> {} + standard_uncertainty{mag_ratio<15, 10> * mag_power<10, -15> * cubic(si::metre) / si::kilogram / square(si::second)}> {} newtonian_constant_of_gravitation; ``` The `(15)` in the concise ISO 80000-6 notation is the *absolute* standard uncertainty -(`0.000 15 × 10⁻¹¹ m³ kg⁻¹ s⁻²`). The definition instead stores the *relative* standard -uncertainty `2.2 × 10⁻⁵`, which CODATA publishes alongside it and which describes the same -fact (`0.000 15 / 6.674 30 = 2.2 × 10⁻⁵`). The relative form is used because it is -unit-independent: it stays valid no matter which unit the constant is later converted to. -An absolute uncertainty would have to be respelled for every unit. - -The uncertainty is stored as an exact symbolic magnitude, so no representation type is +(`0.000 15 × 10⁻¹¹ m³ kg⁻¹ s⁻²`), and `standard_uncertainty` stores exactly that, spelled +as a magnitude times a unit of the constant's own dimension. Transcribing the published +pair verbatim matters: NIST rounds the value and its uncertainty consistently, both to two +significant digits of the uncertainty, so a definition that stored only the *relative* +form could not reproduce the published absolute one (deriving it can be off by several +percent in the last digit, 6.1% for the fine-structure constant). The absolute form is +what `uncertain` carries, prints, and propagates, so it is the number to get right. + +A second wrapper, `relative_standard_uncertainty{mag_ratio<22, 10> * mag_power<10, -5>}`, +remains available for the cases where the source publishes only the relative form, or +where the constant's defining unit has no tabulated absolute uncertainty. A measured +constant declares exactly one of the two. Declaring both is not allowed, because the +published pair is mutually rounded and carrying both would embed a contradiction. + +The uncertainty is stored as an exact symbolic expression, so no representation type is imposed at the definition point. It is metadata only and never participates in unit equality, conversion factors, or symbolic simplification. Constants defined this way satisfy the [`MeasuredConstant`](../../users_guide/framework_basics/concepts.md#MeasuredConstant) -concept, and `get_relative_standard_uncertainty(constant)` returns the stored magnitude. +concept. `get_standard_uncertainty(constant)` and +`get_relative_standard_uncertainty(constant)` each return the declared form or derive the +other one on demand. The derivation is an exact ratio of canonical magnitudes +(`u_r = u(x)/|x|`), so it involves no floating-point rounding, and it never carries a sign +even for a negative-valued constant. ## Conversions materialize the uncertainty @@ -179,8 +193,8 @@ const quantity two_suns = 2.0 * iau::unit_symbols::M_SUN; std::cout << two_suns << "\n"; // 2 M_☉ std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 kg -std::cout << two_suns.in>(kg) << "\n"; // 3.97682e+30 ± 8.749e+25 kg -std::cout << value_cast>(two_suns) << "\n"; // 3.97682e+30 ± 8.749e+25 kg +std::cout << two_suns.in>(kg) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg +std::cout << value_cast>(two_suns) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg ``` The first two lines are exact: `two_suns` in its own unit, and the sanctioned central @@ -199,7 +213,7 @@ const quantity two_suns = uncertain{2.0} * iau::unit_symbols::M_SUN; std::cout << two_suns << "\n"; // 2 ± 0 M_☉ std::cout << two_suns.in(iau::unit_symbols::M_EARTH) << "\n"; // 665892 ± 0 M_⊕ -std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 ± 8.749e+25 kg +std::cout << two_suns.in(kg) << "\n"; // 3.97682e+30 ± 8.93761e+25 kg ``` `two_suns` is exactly two suns even in an uncertainty-capable representation. `G` cancels @@ -219,7 +233,7 @@ is applied. `measurement_of` is a factory function that turns a measured constant into a quantity with an uncertainty-capable representation. Its argument is constrained to the `MeasuredConstant` -concept, so it accepts exactly the constants that declare a relative standard uncertainty. +concept, so it accepts exactly the constants that declare a standard uncertainty. The representation's underlying numeric type defaults to `double`, consistent with the rest of the library, and can be chosen explicitly. @@ -233,7 +247,7 @@ appears the moment the quantity leaves units in which the constant cancels: using mp_units::utility::measurement_of; quantity G1 = measurement_of(iau::newtonian_constant_of_gravitation); // exactly 1 G -quantity G2 = G1.in(m3 / kg / s2); // 6.6743e-11 ± 1.46835e-15 m³ kg⁻¹ s⁻² +quantity G2 = G1.in(m3 / kg / s2); // 6.6743e-11 ± 1.5e-15 m³ kg⁻¹ s⁻² quantity G3 = measurement_of(iau::newtonian_constant_of_gravitation); // uncertain ``` @@ -245,14 +259,14 @@ the quantity level: ```cpp const quantity G_measured = measurement_of(iau::newtonian_constant_of_gravitation); const quantity solar_mass = (1. * iau::nominal_solar_mass_parameter) / G_measured; -std::cout << solar_mass.in(kg) << "\n"; // 1.98841e+30 ± 4.3745e+25 kg +std::cout << solar_mass.in(kg) << "\n"; // 1.98841e+30 ± 4.46881e+25 kg ``` The nominal mass parameter is exact by definition, so the result carries exactly `G`'s -2.2 × 10⁻⁵ relative uncertainty. +relative uncertainty (`1.5 × 10⁻¹⁵ / 6.6743 × 10⁻¹¹ ≈ 2.25 × 10⁻⁵`). This is where the `MeasuredConstant` constraint earns its keep. Calling `measurement_of` (or -`get_relative_standard_uncertainty`) on a constant that is exact by definition does not +either uncertainty accessor) on a constant that is exact by definition does not compile. "Exact by definition" and "measured infinitely precisely" are different metrological statements, so the library refuses to return `±0` for the former. @@ -276,9 +290,10 @@ counted in units of that digit. The standard's own example reads: In the expression $l = 23{,}478\,2(32)\ \mathrm{m}$, $23{,}478\,2$ is the numerical value and $32$ represents a standard uncertainty equal to $0{,}003\,2$. -Appending `~` to the `format-spec` selects it. The tilde marks the output as an -approximation: the default form prints the value as it is, while this one rounds it to the -precision the uncertainty justifies. +Appending `~` to the `format-spec` selects it. Where the default form prints both +components losslessly (the view of what the object holds), this one quotes the value to +the precision the uncertainty justifies (the reporting view of GUM 7.2.6). For a constant +transcribed from a metrology table the output reproduces the published notation verbatim. ```cpp std::cout << std::format("{:~}", uncertain{23.4782, 0.0032}) << "\n"; // 23.4782(32) diff --git a/docs/reference/systems_reference/.cache.json b/docs/reference/systems_reference/.cache.json index 86d9e40d4f..a3ac929ce6 100644 --- a/docs/reference/systems_reference/.cache.json +++ b/docs/reference/systems_reference/.cache.json @@ -1,3 +1,3 @@ { - "source_hash": "bf3cee58e59d6f79d66093d092d27b6ae26df036637c83328fac726e8668ffa3" + "source_hash": "2951ed33d9538e9f25aa3c4b4f1a4c8553c9408896ce0dcff6aeeab78e9148af" } diff --git a/docs/reference/systems_reference/constants_index.md b/docs/reference/systems_reference/constants_index.md index 939a291f43..a219ace6b9 100644 --- a/docs/reference/systems_reference/constants_index.md +++ b/docs/reference/systems_reference/constants_index.md @@ -5,45 +5,498 @@ Alphabetical list of all constants. +- [`alpha_particle_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-alpha_particle_electron_mass_ratio) +- [`alpha_particle_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-alpha_particle_electron_mass_ratio) +- [`alpha_particle_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_electron_mass_ratio) +- [`alpha_particle_mass` (codata::codata2014)](systems/codata.md#codata2014-alpha_particle_mass) +- [`alpha_particle_mass` (codata::codata2018)](systems/codata.md#codata2018-alpha_particle_mass) +- [`alpha_particle_mass` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_mass) +- [`alpha_particle_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-alpha_particle_molar_mass) +- [`alpha_particle_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-alpha_particle_molar_mass) +- [`alpha_particle_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_molar_mass) +- [`alpha_particle_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-alpha_particle_proton_mass_ratio) +- [`alpha_particle_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-alpha_particle_proton_mass_ratio) +- [`alpha_particle_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_proton_mass_ratio) +- [`alpha_particle_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-alpha_particle_relative_atomic_mass) +- [`alpha_particle_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_relative_atomic_mass) +- [`alpha_particle_rms_charge_radius` (codata::codata2022)](systems/codata.md#codata2022-alpha_particle_rms_charge_radius) +- [`angstrom_star` (codata::codata2014)](systems/codata.md#codata2014-angstrom_star) +- [`angstrom_star` (codata::codata2018)](systems/codata.md#codata2018-angstrom_star) +- [`angstrom_star` (codata::codata2022)](systems/codata.md#codata2022-angstrom_star) +- [`atomic_mass_constant` (codata::codata2014)](systems/codata.md#codata2014-atomic_mass_constant) +- [`atomic_mass_constant` (codata::codata2018)](systems/codata.md#codata2018-atomic_mass_constant) +- [`atomic_mass_constant` (codata::codata2022)](systems/codata.md#codata2022-atomic_mass_constant) - [`atomic_mass_unit` (hep::codata2014)](systems/hep.md#codata2014-atomic_mass_unit) - [`atomic_mass_unit` (hep::codata2018)](systems/hep.md#codata2018-atomic_mass_unit) - [`atomic_mass_unit` (hep::codata2022)](systems/hep.md#codata2022-atomic_mass_unit) +- [`atomic_unit_of_1st_hyperpolarizability` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_1st_hyperpolarizability) +- [`atomic_unit_of_1st_hyperpolarizability` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_1st_hyperpolarizability) +- [`atomic_unit_of_1st_hyperpolarizability` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_1st_hyperpolarizability) +- [`atomic_unit_of_2nd_hyperpolarizability` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_2nd_hyperpolarizability) +- [`atomic_unit_of_2nd_hyperpolarizability` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_2nd_hyperpolarizability) +- [`atomic_unit_of_2nd_hyperpolarizability` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_2nd_hyperpolarizability) +- [`atomic_unit_of_action` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_action) +- [`atomic_unit_of_action` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_action) +- [`atomic_unit_of_action` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_action) +- [`atomic_unit_of_charge` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_charge) +- [`atomic_unit_of_charge` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_charge) +- [`atomic_unit_of_charge` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_charge) +- [`atomic_unit_of_charge_density` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_charge_density) +- [`atomic_unit_of_charge_density` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_charge_density) +- [`atomic_unit_of_charge_density` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_charge_density) +- [`atomic_unit_of_current` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_current) +- [`atomic_unit_of_current` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_current) +- [`atomic_unit_of_current` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_current) +- [`atomic_unit_of_electric_dipole_moment` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_dipole_moment) +- [`atomic_unit_of_electric_dipole_moment` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_dipole_moment) +- [`atomic_unit_of_electric_dipole_moment` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_dipole_moment) +- [`atomic_unit_of_electric_field` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_field) +- [`atomic_unit_of_electric_field` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_field) +- [`atomic_unit_of_electric_field` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_field) +- [`atomic_unit_of_electric_field_gradient` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_field_gradient) +- [`atomic_unit_of_electric_field_gradient` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_field_gradient) +- [`atomic_unit_of_electric_field_gradient` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_field_gradient) +- [`atomic_unit_of_electric_polarizability` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_polarizability) +- [`atomic_unit_of_electric_polarizability` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_polarizability) +- [`atomic_unit_of_electric_polarizability` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_polarizability) +- [`atomic_unit_of_electric_potential` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_potential) +- [`atomic_unit_of_electric_potential` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_potential) +- [`atomic_unit_of_electric_potential` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_potential) +- [`atomic_unit_of_electric_quadrupole_moment` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_electric_quadrupole_moment) +- [`atomic_unit_of_electric_quadrupole_moment` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_electric_quadrupole_moment) +- [`atomic_unit_of_electric_quadrupole_moment` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_electric_quadrupole_moment) +- [`atomic_unit_of_energy` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_energy) +- [`atomic_unit_of_energy` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_energy) +- [`atomic_unit_of_energy` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_energy) +- [`atomic_unit_of_force` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_force) +- [`atomic_unit_of_force` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_force) +- [`atomic_unit_of_force` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_force) +- [`atomic_unit_of_length` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_length) +- [`atomic_unit_of_length` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_length) +- [`atomic_unit_of_length` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_length) +- [`atomic_unit_of_magnetic_dipole_moment` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_magnetic_dipole_moment) +- [`atomic_unit_of_magnetic_dipole_moment` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_magnetic_dipole_moment) +- [`atomic_unit_of_magnetic_dipole_moment` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_magnetic_dipole_moment) +- [`atomic_unit_of_magnetic_flux_density` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_magnetic_flux_density) +- [`atomic_unit_of_magnetic_flux_density` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_magnetic_flux_density) +- [`atomic_unit_of_magnetic_flux_density` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_magnetic_flux_density) +- [`atomic_unit_of_magnetizability` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_magnetizability) +- [`atomic_unit_of_magnetizability` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_magnetizability) +- [`atomic_unit_of_magnetizability` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_magnetizability) +- [`atomic_unit_of_mass` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_mass) +- [`atomic_unit_of_mass` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_mass) +- [`atomic_unit_of_mass` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_mass) +- [`atomic_unit_of_momentum` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_momentum) +- [`atomic_unit_of_momentum` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_momentum) +- [`atomic_unit_of_momentum` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_momentum) +- [`atomic_unit_of_permittivity` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_permittivity) +- [`atomic_unit_of_permittivity` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_permittivity) +- [`atomic_unit_of_permittivity` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_permittivity) +- [`atomic_unit_of_time` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_time) +- [`atomic_unit_of_time` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_time) +- [`atomic_unit_of_time` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_time) +- [`atomic_unit_of_velocity` (codata::codata2014)](systems/codata.md#codata2014-atomic_unit_of_velocity) +- [`atomic_unit_of_velocity` (codata::codata2018)](systems/codata.md#codata2018-atomic_unit_of_velocity) +- [`atomic_unit_of_velocity` (codata::codata2022)](systems/codata.md#codata2022-atomic_unit_of_velocity) +- [`avogadro_constant` (codata)](systems/codata.md#avogadro_constant) +- [`avogadro_constant` (codata::codata2014)](systems/codata.md#codata2014-avogadro_constant) - [`avogadro_constant` (hep)](systems/hep.md#avogadro_constant) - [`avogadro_constant` (si::si2019)](systems/si.md#si2019-avogadro_constant) +- [`bohr_magneton` (codata::codata2014)](systems/codata.md#codata2014-bohr_magneton) +- [`bohr_magneton` (codata::codata2018)](systems/codata.md#codata2018-bohr_magneton) +- [`bohr_magneton` (codata::codata2022)](systems/codata.md#codata2022-bohr_magneton) - [`bohr_magneton` (hep::codata2014)](systems/hep.md#codata2014-bohr_magneton) - [`bohr_magneton` (hep::codata2018)](systems/hep.md#codata2018-bohr_magneton) - [`bohr_magneton` (hep::codata2022)](systems/hep.md#codata2022-bohr_magneton) +- [`bohr_radius` (codata::codata2014)](systems/codata.md#codata2014-bohr_radius) +- [`bohr_radius` (codata::codata2018)](systems/codata.md#codata2018-bohr_radius) +- [`bohr_radius` (codata::codata2022)](systems/codata.md#codata2022-bohr_radius) - [`bohr_radius` (hep::codata2014)](systems/hep.md#codata2014-bohr_radius) - [`bohr_radius` (hep::codata2018)](systems/hep.md#codata2018-bohr_radius) - [`bohr_radius` (hep::codata2022)](systems/hep.md#codata2022-bohr_radius) +- [`boltzmann_constant` (codata)](systems/codata.md#boltzmann_constant) +- [`boltzmann_constant` (codata::codata2014)](systems/codata.md#codata2014-boltzmann_constant) - [`boltzmann_constant` (hep::codata2014)](systems/hep.md#codata2014-boltzmann_constant) - [`boltzmann_constant` (hep::codata2018)](systems/hep.md#codata2018-boltzmann_constant) - [`boltzmann_constant` (hep::codata2022)](systems/hep.md#codata2022-boltzmann_constant) - [`boltzmann_constant` (si::si2019)](systems/si.md#si2019-boltzmann_constant) +- [`characteristic_impedance_of_vacuum` (codata::codata2014)](systems/codata.md#codata2014-characteristic_impedance_of_vacuum) +- [`characteristic_impedance_of_vacuum` (codata::codata2018)](systems/codata.md#codata2018-characteristic_impedance_of_vacuum) +- [`characteristic_impedance_of_vacuum` (codata::codata2022)](systems/codata.md#codata2022-characteristic_impedance_of_vacuum) +- [`classical_electron_radius` (codata::codata2014)](systems/codata.md#codata2014-classical_electron_radius) +- [`classical_electron_radius` (codata::codata2018)](systems/codata.md#codata2018-classical_electron_radius) +- [`classical_electron_radius` (codata::codata2022)](systems/codata.md#codata2022-classical_electron_radius) - [`classical_electron_radius` (hep::codata2014)](systems/hep.md#codata2014-classical_electron_radius) - [`classical_electron_radius` (hep::codata2018)](systems/hep.md#codata2018-classical_electron_radius) - [`classical_electron_radius` (hep::codata2022)](systems/hep.md#codata2022-classical_electron_radius) +- [`conductance_quantum` (codata::codata2014)](systems/codata.md#codata2014-conductance_quantum) +- [`conductance_quantum` (codata::codata2018)](systems/codata.md#codata2018-conductance_quantum) +- [`conductance_quantum` (codata::codata2022)](systems/codata.md#codata2022-conductance_quantum) +- [`conventional_value_of_ampere_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_ampere_90) +- [`conventional_value_of_ampere_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_ampere_90) +- [`conventional_value_of_coulomb_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_coulomb_90) +- [`conventional_value_of_coulomb_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_coulomb_90) +- [`conventional_value_of_farad_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_farad_90) +- [`conventional_value_of_farad_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_farad_90) +- [`conventional_value_of_henry_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_henry_90) +- [`conventional_value_of_henry_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_henry_90) +- [`conventional_value_of_josephson_constant` (codata)](systems/codata.md#conventional_value_of_josephson_constant) +- [`conventional_value_of_ohm_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_ohm_90) +- [`conventional_value_of_ohm_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_ohm_90) +- [`conventional_value_of_volt_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_volt_90) +- [`conventional_value_of_volt_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_volt_90) +- [`conventional_value_of_von_klitzing_constant` (codata)](systems/codata.md#conventional_value_of_von_klitzing_constant) +- [`conventional_value_of_watt_90` (codata::codata2018)](systems/codata.md#codata2018-conventional_value_of_watt_90) +- [`conventional_value_of_watt_90` (codata::codata2022)](systems/codata.md#codata2022-conventional_value_of_watt_90) +- [`copper_x_unit` (codata::codata2014)](systems/codata.md#codata2014-copper_x_unit) +- [`copper_x_unit` (codata::codata2018)](systems/codata.md#codata2018-copper_x_unit) +- [`copper_x_unit` (codata::codata2022)](systems/codata.md#codata2022-copper_x_unit) +- [`deuteron_electron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_electron_magnetic_moment_ratio) +- [`deuteron_electron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_electron_magnetic_moment_ratio) +- [`deuteron_electron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_electron_magnetic_moment_ratio) +- [`deuteron_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_electron_mass_ratio) +- [`deuteron_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_electron_mass_ratio) +- [`deuteron_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_electron_mass_ratio) +- [`deuteron_g_factor` (codata::codata2014)](systems/codata.md#codata2014-deuteron_g_factor) +- [`deuteron_g_factor` (codata::codata2018)](systems/codata.md#codata2018-deuteron_g_factor) +- [`deuteron_g_factor` (codata::codata2022)](systems/codata.md#codata2022-deuteron_g_factor) +- [`deuteron_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-deuteron_magnetic_moment) +- [`deuteron_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-deuteron_magnetic_moment) +- [`deuteron_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-deuteron_magnetic_moment) +- [`deuteron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_magnetic_moment_to_bohr_magneton_ratio) +- [`deuteron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_magnetic_moment_to_bohr_magneton_ratio) +- [`deuteron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_magnetic_moment_to_bohr_magneton_ratio) +- [`deuteron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_magnetic_moment_to_nuclear_magneton_ratio) +- [`deuteron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_magnetic_moment_to_nuclear_magneton_ratio) +- [`deuteron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_magnetic_moment_to_nuclear_magneton_ratio) +- [`deuteron_mass` (codata::codata2014)](systems/codata.md#codata2014-deuteron_mass) +- [`deuteron_mass` (codata::codata2018)](systems/codata.md#codata2018-deuteron_mass) +- [`deuteron_mass` (codata::codata2022)](systems/codata.md#codata2022-deuteron_mass) +- [`deuteron_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-deuteron_molar_mass) +- [`deuteron_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-deuteron_molar_mass) +- [`deuteron_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-deuteron_molar_mass) +- [`deuteron_neutron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_neutron_magnetic_moment_ratio) +- [`deuteron_neutron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_neutron_magnetic_moment_ratio) +- [`deuteron_neutron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_neutron_magnetic_moment_ratio) +- [`deuteron_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_proton_magnetic_moment_ratio) +- [`deuteron_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_proton_magnetic_moment_ratio) +- [`deuteron_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_proton_magnetic_moment_ratio) +- [`deuteron_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-deuteron_proton_mass_ratio) +- [`deuteron_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-deuteron_proton_mass_ratio) +- [`deuteron_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-deuteron_proton_mass_ratio) +- [`deuteron_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-deuteron_relative_atomic_mass) +- [`deuteron_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-deuteron_relative_atomic_mass) +- [`deuteron_rms_charge_radius` (codata::codata2014)](systems/codata.md#codata2014-deuteron_rms_charge_radius) +- [`deuteron_rms_charge_radius` (codata::codata2018)](systems/codata.md#codata2018-deuteron_rms_charge_radius) +- [`deuteron_rms_charge_radius` (codata::codata2022)](systems/codata.md#codata2022-deuteron_rms_charge_radius) +- [`electron_charge_to_mass_quotient` (codata::codata2014)](systems/codata.md#codata2014-electron_charge_to_mass_quotient) +- [`electron_charge_to_mass_quotient` (codata::codata2018)](systems/codata.md#codata2018-electron_charge_to_mass_quotient) +- [`electron_charge_to_mass_quotient` (codata::codata2022)](systems/codata.md#codata2022-electron_charge_to_mass_quotient) +- [`electron_compton_wavelength` (codata::codata2014)](systems/codata.md#codata2014-electron_compton_wavelength) +- [`electron_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-electron_compton_wavelength) +- [`electron_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-electron_compton_wavelength) - [`electron_compton_wavelength` (hep::codata2014)](systems/hep.md#codata2014-electron_compton_wavelength) - [`electron_compton_wavelength` (hep::codata2018)](systems/hep.md#codata2018-electron_compton_wavelength) - [`electron_compton_wavelength` (hep::codata2022)](systems/hep.md#codata2022-electron_compton_wavelength) +- [`electron_deuteron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_deuteron_magnetic_moment_ratio) +- [`electron_deuteron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_deuteron_magnetic_moment_ratio) +- [`electron_deuteron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_deuteron_magnetic_moment_ratio) +- [`electron_deuteron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_deuteron_mass_ratio) +- [`electron_deuteron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_deuteron_mass_ratio) +- [`electron_deuteron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_deuteron_mass_ratio) +- [`electron_g_factor` (codata::codata2014)](systems/codata.md#codata2014-electron_g_factor) +- [`electron_g_factor` (codata::codata2018)](systems/codata.md#codata2018-electron_g_factor) +- [`electron_g_factor` (codata::codata2022)](systems/codata.md#codata2022-electron_g_factor) +- [`electron_gyromagnetic_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_gyromagnetic_ratio) +- [`electron_gyromagnetic_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_gyromagnetic_ratio) +- [`electron_gyromagnetic_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_gyromagnetic_ratio) +- [`electron_helion_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_helion_mass_ratio) +- [`electron_helion_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_helion_mass_ratio) +- [`electron_helion_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_helion_mass_ratio) +- [`electron_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-electron_magnetic_moment) +- [`electron_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-electron_magnetic_moment) +- [`electron_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-electron_magnetic_moment) +- [`electron_magnetic_moment_anomaly` (codata::codata2014)](systems/codata.md#codata2014-electron_magnetic_moment_anomaly) +- [`electron_magnetic_moment_anomaly` (codata::codata2018)](systems/codata.md#codata2018-electron_magnetic_moment_anomaly) +- [`electron_magnetic_moment_anomaly` (codata::codata2022)](systems/codata.md#codata2022-electron_magnetic_moment_anomaly) +- [`electron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_magnetic_moment_to_bohr_magneton_ratio) +- [`electron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_magnetic_moment_to_bohr_magneton_ratio) +- [`electron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_magnetic_moment_to_bohr_magneton_ratio) +- [`electron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_magnetic_moment_to_nuclear_magneton_ratio) +- [`electron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_magnetic_moment_to_nuclear_magneton_ratio) +- [`electron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_magnetic_moment_to_nuclear_magneton_ratio) +- [`electron_mass` (codata::codata2014)](systems/codata.md#codata2014-electron_mass) +- [`electron_mass` (codata::codata2018)](systems/codata.md#codata2018-electron_mass) +- [`electron_mass` (codata::codata2022)](systems/codata.md#codata2022-electron_mass) - [`electron_mass` (hep::codata2014)](systems/hep.md#codata2014-electron_mass) - [`electron_mass` (hep::codata2018)](systems/hep.md#codata2018-electron_mass) - [`electron_mass` (hep::codata2022)](systems/hep.md#codata2022-electron_mass) +- [`electron_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-electron_molar_mass) +- [`electron_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-electron_molar_mass) +- [`electron_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-electron_molar_mass) +- [`electron_muon_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_muon_magnetic_moment_ratio) +- [`electron_muon_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_muon_magnetic_moment_ratio) +- [`electron_muon_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_muon_magnetic_moment_ratio) +- [`electron_muon_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_muon_mass_ratio) +- [`electron_muon_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_muon_mass_ratio) +- [`electron_muon_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_muon_mass_ratio) +- [`electron_neutron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_neutron_magnetic_moment_ratio) +- [`electron_neutron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_neutron_magnetic_moment_ratio) +- [`electron_neutron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_neutron_magnetic_moment_ratio) +- [`electron_neutron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_neutron_mass_ratio) +- [`electron_neutron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_neutron_mass_ratio) +- [`electron_neutron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_neutron_mass_ratio) +- [`electron_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_proton_magnetic_moment_ratio) +- [`electron_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_proton_magnetic_moment_ratio) +- [`electron_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_proton_magnetic_moment_ratio) +- [`electron_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_proton_mass_ratio) +- [`electron_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_proton_mass_ratio) +- [`electron_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_proton_mass_ratio) +- [`electron_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-electron_relative_atomic_mass) +- [`electron_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-electron_relative_atomic_mass) +- [`electron_tau_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_tau_mass_ratio) +- [`electron_tau_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_tau_mass_ratio) +- [`electron_tau_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_tau_mass_ratio) +- [`electron_to_alpha_particle_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_to_alpha_particle_mass_ratio) +- [`electron_to_alpha_particle_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_to_alpha_particle_mass_ratio) +- [`electron_to_alpha_particle_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_to_alpha_particle_mass_ratio) +- [`electron_to_shielded_helion_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_to_shielded_helion_magnetic_moment_ratio) +- [`electron_to_shielded_helion_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_to_shielded_helion_magnetic_moment_ratio) +- [`electron_to_shielded_helion_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_to_shielded_helion_magnetic_moment_ratio) +- [`electron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_to_shielded_proton_magnetic_moment_ratio) +- [`electron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_to_shielded_proton_magnetic_moment_ratio) +- [`electron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_to_shielded_proton_magnetic_moment_ratio) +- [`electron_triton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-electron_triton_mass_ratio) +- [`electron_triton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-electron_triton_mass_ratio) +- [`electron_triton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-electron_triton_mass_ratio) +- [`elementary_charge` (codata)](systems/codata.md#elementary_charge) +- [`elementary_charge` (codata::codata2014)](systems/codata.md#codata2014-elementary_charge) - [`elementary_charge` (hep)](systems/hep.md#elementary_charge) - [`elementary_charge` (si::si2019)](systems/si.md#si2019-elementary_charge) +- [`elementary_charge_over_h` (codata::codata2014)](systems/codata.md#codata2014-elementary_charge_over_h) +- [`elementary_charge_over_h_bar` (codata::codata2018)](systems/codata.md#codata2018-elementary_charge_over_h_bar) +- [`elementary_charge_over_h_bar` (codata::codata2022)](systems/codata.md#codata2022-elementary_charge_over_h_bar) +- [`faraday_constant` (codata::codata2014)](systems/codata.md#codata2014-faraday_constant) +- [`faraday_constant` (codata::codata2018)](systems/codata.md#codata2018-faraday_constant) +- [`faraday_constant` (codata::codata2022)](systems/codata.md#codata2022-faraday_constant) +- [`fermi_coupling_constant` (codata::codata2014)](systems/codata.md#codata2014-fermi_coupling_constant) +- [`fermi_coupling_constant` (codata::codata2018)](systems/codata.md#codata2018-fermi_coupling_constant) +- [`fermi_coupling_constant` (codata::codata2022)](systems/codata.md#codata2022-fermi_coupling_constant) +- [`fine_structure_constant` (codata::codata2014)](systems/codata.md#codata2014-fine_structure_constant) +- [`fine_structure_constant` (codata::codata2018)](systems/codata.md#codata2018-fine_structure_constant) +- [`fine_structure_constant` (codata::codata2022)](systems/codata.md#codata2022-fine_structure_constant) - [`fine_structure_constant` (hep::codata2014)](systems/hep.md#codata2014-fine_structure_constant) - [`fine_structure_constant` (hep::codata2018)](systems/hep.md#codata2018-fine_structure_constant) - [`fine_structure_constant` (hep::codata2022)](systems/hep.md#codata2022-fine_structure_constant) +- [`first_radiation_constant` (codata::codata2014)](systems/codata.md#codata2014-first_radiation_constant) +- [`first_radiation_constant` (codata::codata2018)](systems/codata.md#codata2018-first_radiation_constant) +- [`first_radiation_constant` (codata::codata2022)](systems/codata.md#codata2022-first_radiation_constant) +- [`first_radiation_constant_for_spectral_radiance` (codata::codata2014)](systems/codata.md#codata2014-first_radiation_constant_for_spectral_radiance) +- [`first_radiation_constant_for_spectral_radiance` (codata::codata2018)](systems/codata.md#codata2018-first_radiation_constant_for_spectral_radiance) +- [`first_radiation_constant_for_spectral_radiance` (codata::codata2022)](systems/codata.md#codata2022-first_radiation_constant_for_spectral_radiance) - [`gas_threshold` (hep)](systems/hep.md#gas_threshold) +- [`hartree_energy` (codata::codata2014)](systems/codata.md#codata2014-hartree_energy) +- [`hartree_energy` (codata::codata2018)](systems/codata.md#codata2018-hartree_energy) +- [`hartree_energy` (codata::codata2022)](systems/codata.md#codata2022-hartree_energy) +- [`helion_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-helion_electron_mass_ratio) +- [`helion_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-helion_electron_mass_ratio) +- [`helion_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-helion_electron_mass_ratio) +- [`helion_g_factor` (codata::codata2014)](systems/codata.md#codata2014-helion_g_factor) +- [`helion_g_factor` (codata::codata2018)](systems/codata.md#codata2018-helion_g_factor) +- [`helion_g_factor` (codata::codata2022)](systems/codata.md#codata2022-helion_g_factor) +- [`helion_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-helion_magnetic_moment) +- [`helion_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-helion_magnetic_moment) +- [`helion_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-helion_magnetic_moment) +- [`helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-helion_magnetic_moment_to_bohr_magneton_ratio) +- [`helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-helion_magnetic_moment_to_bohr_magneton_ratio) +- [`helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-helion_magnetic_moment_to_bohr_magneton_ratio) +- [`helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`helion_mass` (codata::codata2014)](systems/codata.md#codata2014-helion_mass) +- [`helion_mass` (codata::codata2018)](systems/codata.md#codata2018-helion_mass) +- [`helion_mass` (codata::codata2022)](systems/codata.md#codata2022-helion_mass) +- [`helion_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-helion_molar_mass) +- [`helion_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-helion_molar_mass) +- [`helion_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-helion_molar_mass) +- [`helion_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-helion_proton_mass_ratio) +- [`helion_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-helion_proton_mass_ratio) +- [`helion_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-helion_proton_mass_ratio) +- [`helion_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-helion_relative_atomic_mass) +- [`helion_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-helion_relative_atomic_mass) +- [`helion_shielding_shift` (codata::codata2018)](systems/codata.md#codata2018-helion_shielding_shift) +- [`helion_shielding_shift` (codata::codata2022)](systems/codata.md#codata2022-helion_shielding_shift) +- [`hyperfine_structure_transition_frequency_of_cs` (codata)](systems/codata.md#hyperfine_structure_transition_frequency_of_cs) - [`hyperfine_structure_transition_frequency_of_cs` (si::si2019)](systems/si.md#si2019-hyperfine_structure_transition_frequency_of_cs) +- [`inverse_fine_structure_constant` (codata::codata2014)](systems/codata.md#codata2014-inverse_fine_structure_constant) +- [`inverse_fine_structure_constant` (codata::codata2018)](systems/codata.md#codata2018-inverse_fine_structure_constant) +- [`inverse_fine_structure_constant` (codata::codata2022)](systems/codata.md#codata2022-inverse_fine_structure_constant) +- [`inverse_of_conductance_quantum` (codata::codata2014)](systems/codata.md#codata2014-inverse_of_conductance_quantum) +- [`inverse_of_conductance_quantum` (codata::codata2018)](systems/codata.md#codata2018-inverse_of_conductance_quantum) +- [`inverse_of_conductance_quantum` (codata::codata2022)](systems/codata.md#codata2022-inverse_of_conductance_quantum) +- [`josephson_constant` (codata::codata2014)](systems/codata.md#codata2014-josephson_constant) +- [`josephson_constant` (codata::codata2018)](systems/codata.md#codata2018-josephson_constant) +- [`josephson_constant` (codata::codata2022)](systems/codata.md#codata2022-josephson_constant) +- [`lattice_parameter_of_silicon` (codata::codata2014)](systems/codata.md#codata2014-lattice_parameter_of_silicon) +- [`lattice_parameter_of_silicon` (codata::codata2018)](systems/codata.md#codata2018-lattice_parameter_of_silicon) +- [`lattice_parameter_of_silicon` (codata::codata2022)](systems/codata.md#codata2022-lattice_parameter_of_silicon) +- [`lattice_spacing_of_silicon_220` (codata::codata2014)](systems/codata.md#codata2014-lattice_spacing_of_silicon_220) +- [`lattice_spacing_of_silicon_220` (codata::codata2018)](systems/codata.md#codata2018-lattice_spacing_of_silicon_220) +- [`lattice_spacing_of_silicon_220` (codata::codata2022)](systems/codata.md#codata2022-lattice_spacing_of_silicon_220) +- [`loschmidt_constant_atm` (codata::codata2014)](systems/codata.md#codata2014-loschmidt_constant_atm) +- [`loschmidt_constant_atm` (codata::codata2018)](systems/codata.md#codata2018-loschmidt_constant_atm) +- [`loschmidt_constant_atm` (codata::codata2022)](systems/codata.md#codata2022-loschmidt_constant_atm) +- [`loschmidt_constant_stp` (codata::codata2014)](systems/codata.md#codata2014-loschmidt_constant_stp) +- [`loschmidt_constant_stp` (codata::codata2018)](systems/codata.md#codata2018-loschmidt_constant_stp) +- [`loschmidt_constant_stp` (codata::codata2022)](systems/codata.md#codata2022-loschmidt_constant_stp) +- [`luminous_efficacy` (codata)](systems/codata.md#luminous_efficacy) - [`luminous_efficacy` (si::si2019)](systems/si.md#si2019-luminous_efficacy) - [`magnetic_constant` (codata::codata2014)](systems/codata.md#codata2014-magnetic_constant) - [`magnetic_constant` (codata::codata2018)](systems/codata.md#codata2018-magnetic_constant) - [`magnetic_constant` (codata::codata2022)](systems/codata.md#codata2022-magnetic_constant) - [`magnetic_constant` (si)](systems/si.md#magnetic_constant) +- [`magnetic_flux_quantum` (codata::codata2014)](systems/codata.md#codata2014-magnetic_flux_quantum) +- [`magnetic_flux_quantum` (codata::codata2018)](systems/codata.md#codata2018-magnetic_flux_quantum) +- [`magnetic_flux_quantum` (codata::codata2022)](systems/codata.md#codata2022-magnetic_flux_quantum) +- [`molar_gas_constant` (codata::codata2014)](systems/codata.md#codata2014-molar_gas_constant) +- [`molar_gas_constant` (codata::codata2018)](systems/codata.md#codata2018-molar_gas_constant) +- [`molar_gas_constant` (codata::codata2022)](systems/codata.md#codata2022-molar_gas_constant) +- [`molar_mass_constant` (codata::codata2014)](systems/codata.md#codata2014-molar_mass_constant) +- [`molar_mass_constant` (codata::codata2018)](systems/codata.md#codata2018-molar_mass_constant) +- [`molar_mass_constant` (codata::codata2022)](systems/codata.md#codata2022-molar_mass_constant) +- [`molar_mass_of_carbon_12` (codata::codata2014)](systems/codata.md#codata2014-molar_mass_of_carbon_12) +- [`molar_mass_of_carbon_12` (codata::codata2018)](systems/codata.md#codata2018-molar_mass_of_carbon_12) +- [`molar_mass_of_carbon_12` (codata::codata2022)](systems/codata.md#codata2022-molar_mass_of_carbon_12) +- [`molar_planck_constant` (codata::codata2014)](systems/codata.md#codata2014-molar_planck_constant) +- [`molar_planck_constant` (codata::codata2018)](systems/codata.md#codata2018-molar_planck_constant) +- [`molar_planck_constant` (codata::codata2022)](systems/codata.md#codata2022-molar_planck_constant) +- [`molar_planck_constant_times_c` (codata::codata2014)](systems/codata.md#codata2014-molar_planck_constant_times_c) +- [`molar_volume_of_ideal_gas_atm` (codata::codata2014)](systems/codata.md#codata2014-molar_volume_of_ideal_gas_atm) +- [`molar_volume_of_ideal_gas_atm` (codata::codata2018)](systems/codata.md#codata2018-molar_volume_of_ideal_gas_atm) +- [`molar_volume_of_ideal_gas_atm` (codata::codata2022)](systems/codata.md#codata2022-molar_volume_of_ideal_gas_atm) +- [`molar_volume_of_ideal_gas_stp` (codata::codata2014)](systems/codata.md#codata2014-molar_volume_of_ideal_gas_stp) +- [`molar_volume_of_ideal_gas_stp` (codata::codata2018)](systems/codata.md#codata2018-molar_volume_of_ideal_gas_stp) +- [`molar_volume_of_ideal_gas_stp` (codata::codata2022)](systems/codata.md#codata2022-molar_volume_of_ideal_gas_stp) +- [`molar_volume_of_silicon` (codata::codata2014)](systems/codata.md#codata2014-molar_volume_of_silicon) +- [`molar_volume_of_silicon` (codata::codata2018)](systems/codata.md#codata2018-molar_volume_of_silicon) +- [`molar_volume_of_silicon` (codata::codata2022)](systems/codata.md#codata2022-molar_volume_of_silicon) +- [`molybdenum_x_unit` (codata::codata2014)](systems/codata.md#codata2014-molybdenum_x_unit) +- [`molybdenum_x_unit` (codata::codata2018)](systems/codata.md#codata2018-molybdenum_x_unit) +- [`molybdenum_x_unit` (codata::codata2022)](systems/codata.md#codata2022-molybdenum_x_unit) +- [`muon_compton_wavelength` (codata::codata2014)](systems/codata.md#codata2014-muon_compton_wavelength) +- [`muon_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-muon_compton_wavelength) +- [`muon_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-muon_compton_wavelength) +- [`muon_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_electron_mass_ratio) +- [`muon_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_electron_mass_ratio) +- [`muon_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_electron_mass_ratio) +- [`muon_g_factor` (codata::codata2014)](systems/codata.md#codata2014-muon_g_factor) +- [`muon_g_factor` (codata::codata2018)](systems/codata.md#codata2018-muon_g_factor) +- [`muon_g_factor` (codata::codata2022)](systems/codata.md#codata2022-muon_g_factor) +- [`muon_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-muon_magnetic_moment) +- [`muon_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-muon_magnetic_moment) +- [`muon_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-muon_magnetic_moment) +- [`muon_magnetic_moment_anomaly` (codata::codata2014)](systems/codata.md#codata2014-muon_magnetic_moment_anomaly) +- [`muon_magnetic_moment_anomaly` (codata::codata2018)](systems/codata.md#codata2018-muon_magnetic_moment_anomaly) +- [`muon_magnetic_moment_anomaly` (codata::codata2022)](systems/codata.md#codata2022-muon_magnetic_moment_anomaly) +- [`muon_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_magnetic_moment_to_bohr_magneton_ratio) +- [`muon_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_magnetic_moment_to_bohr_magneton_ratio) +- [`muon_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_magnetic_moment_to_bohr_magneton_ratio) +- [`muon_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_magnetic_moment_to_nuclear_magneton_ratio) +- [`muon_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_magnetic_moment_to_nuclear_magneton_ratio) +- [`muon_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_magnetic_moment_to_nuclear_magneton_ratio) +- [`muon_mass` (codata::codata2014)](systems/codata.md#codata2014-muon_mass) +- [`muon_mass` (codata::codata2018)](systems/codata.md#codata2018-muon_mass) +- [`muon_mass` (codata::codata2022)](systems/codata.md#codata2022-muon_mass) +- [`muon_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-muon_molar_mass) +- [`muon_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-muon_molar_mass) +- [`muon_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-muon_molar_mass) +- [`muon_neutron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_neutron_mass_ratio) +- [`muon_neutron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_neutron_mass_ratio) +- [`muon_neutron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_neutron_mass_ratio) +- [`muon_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_proton_magnetic_moment_ratio) +- [`muon_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_proton_magnetic_moment_ratio) +- [`muon_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_proton_magnetic_moment_ratio) +- [`muon_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_proton_mass_ratio) +- [`muon_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_proton_mass_ratio) +- [`muon_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_proton_mass_ratio) +- [`muon_tau_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-muon_tau_mass_ratio) +- [`muon_tau_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-muon_tau_mass_ratio) +- [`muon_tau_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-muon_tau_mass_ratio) +- [`natural_unit_of_action` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_action) +- [`natural_unit_of_action` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_action) +- [`natural_unit_of_action` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_action) +- [`natural_unit_of_energy` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_energy) +- [`natural_unit_of_energy` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_energy) +- [`natural_unit_of_energy` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_energy) +- [`natural_unit_of_length` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_length) +- [`natural_unit_of_length` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_length) +- [`natural_unit_of_length` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_length) +- [`natural_unit_of_mass` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_mass) +- [`natural_unit_of_mass` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_mass) +- [`natural_unit_of_mass` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_mass) +- [`natural_unit_of_momentum` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_momentum) +- [`natural_unit_of_momentum` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_momentum) +- [`natural_unit_of_momentum` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_momentum) +- [`natural_unit_of_time` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_time) +- [`natural_unit_of_time` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_time) +- [`natural_unit_of_time` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_time) +- [`natural_unit_of_velocity` (codata::codata2014)](systems/codata.md#codata2014-natural_unit_of_velocity) +- [`natural_unit_of_velocity` (codata::codata2018)](systems/codata.md#codata2018-natural_unit_of_velocity) +- [`natural_unit_of_velocity` (codata::codata2022)](systems/codata.md#codata2022-natural_unit_of_velocity) +- [`neutron_compton_wavelength` (codata::codata2014)](systems/codata.md#codata2014-neutron_compton_wavelength) +- [`neutron_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-neutron_compton_wavelength) +- [`neutron_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-neutron_compton_wavelength) +- [`neutron_electron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_electron_magnetic_moment_ratio) +- [`neutron_electron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_electron_magnetic_moment_ratio) +- [`neutron_electron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_electron_magnetic_moment_ratio) +- [`neutron_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_electron_mass_ratio) +- [`neutron_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_electron_mass_ratio) +- [`neutron_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_electron_mass_ratio) +- [`neutron_g_factor` (codata::codata2014)](systems/codata.md#codata2014-neutron_g_factor) +- [`neutron_g_factor` (codata::codata2018)](systems/codata.md#codata2018-neutron_g_factor) +- [`neutron_g_factor` (codata::codata2022)](systems/codata.md#codata2022-neutron_g_factor) +- [`neutron_gyromagnetic_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_gyromagnetic_ratio) +- [`neutron_gyromagnetic_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_gyromagnetic_ratio) +- [`neutron_gyromagnetic_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_gyromagnetic_ratio) +- [`neutron_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-neutron_magnetic_moment) +- [`neutron_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-neutron_magnetic_moment) +- [`neutron_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-neutron_magnetic_moment) +- [`neutron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_magnetic_moment_to_bohr_magneton_ratio) +- [`neutron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_magnetic_moment_to_bohr_magneton_ratio) +- [`neutron_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_magnetic_moment_to_bohr_magneton_ratio) +- [`neutron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_magnetic_moment_to_nuclear_magneton_ratio) +- [`neutron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_magnetic_moment_to_nuclear_magneton_ratio) +- [`neutron_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_magnetic_moment_to_nuclear_magneton_ratio) +- [`neutron_mass` (codata::codata2014)](systems/codata.md#codata2014-neutron_mass) +- [`neutron_mass` (codata::codata2018)](systems/codata.md#codata2018-neutron_mass) +- [`neutron_mass` (codata::codata2022)](systems/codata.md#codata2022-neutron_mass) - [`neutron_mass` (hep::codata2014)](systems/hep.md#codata2014-neutron_mass) - [`neutron_mass` (hep::codata2018)](systems/hep.md#codata2018-neutron_mass) - [`neutron_mass` (hep::codata2022)](systems/hep.md#codata2022-neutron_mass) +- [`neutron_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-neutron_molar_mass) +- [`neutron_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-neutron_molar_mass) +- [`neutron_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-neutron_molar_mass) +- [`neutron_muon_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_muon_mass_ratio) +- [`neutron_muon_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_muon_mass_ratio) +- [`neutron_muon_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_muon_mass_ratio) +- [`neutron_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_proton_magnetic_moment_ratio) +- [`neutron_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_proton_magnetic_moment_ratio) +- [`neutron_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_proton_magnetic_moment_ratio) +- [`neutron_proton_mass_difference` (codata::codata2014)](systems/codata.md#codata2014-neutron_proton_mass_difference) +- [`neutron_proton_mass_difference` (codata::codata2018)](systems/codata.md#codata2018-neutron_proton_mass_difference) +- [`neutron_proton_mass_difference` (codata::codata2022)](systems/codata.md#codata2022-neutron_proton_mass_difference) +- [`neutron_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_proton_mass_ratio) +- [`neutron_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_proton_mass_ratio) +- [`neutron_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_proton_mass_ratio) +- [`neutron_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-neutron_relative_atomic_mass) +- [`neutron_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-neutron_relative_atomic_mass) +- [`neutron_tau_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_tau_mass_ratio) +- [`neutron_tau_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_tau_mass_ratio) +- [`neutron_tau_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_tau_mass_ratio) +- [`neutron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-neutron_to_shielded_proton_magnetic_moment_ratio) +- [`neutron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-neutron_to_shielded_proton_magnetic_moment_ratio) +- [`neutron_to_shielded_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-neutron_to_shielded_proton_magnetic_moment_ratio) +- [`newtonian_constant_of_gravitation` (codata::codata2014)](systems/codata.md#codata2014-newtonian_constant_of_gravitation) - [`newtonian_constant_of_gravitation` (codata::codata2018)](systems/codata.md#codata2018-newtonian_constant_of_gravitation) - [`newtonian_constant_of_gravitation` (codata::codata2022)](systems/codata.md#codata2022-newtonian_constant_of_gravitation) - [`newtonian_constant_of_gravitation` (iau)](systems/iau.md#newtonian_constant_of_gravitation) @@ -58,6 +511,9 @@ Alphabetical list of all constants. - [`nominal_terrestrial_mass_parameter` (iau)](systems/iau.md#nominal_terrestrial_mass_parameter) - [`nominal_terrestrial_polar_radius` (iau)](systems/iau.md#nominal_terrestrial_polar_radius) - [`nominal_total_solar_irradiance` (iau)](systems/iau.md#nominal_total_solar_irradiance) +- [`nuclear_magneton` (codata::codata2014)](systems/codata.md#codata2014-nuclear_magneton) +- [`nuclear_magneton` (codata::codata2018)](systems/codata.md#codata2018-nuclear_magneton) +- [`nuclear_magneton` (codata::codata2022)](systems/codata.md#codata2022-nuclear_magneton) - [`nuclear_magneton` (hep::codata2014)](systems/hep.md#codata2014-nuclear_magneton) - [`nuclear_magneton` (hep::codata2018)](systems/hep.md#codata2018-nuclear_magneton) - [`nuclear_magneton` (hep::codata2022)](systems/hep.md#codata2022-nuclear_magneton) @@ -66,20 +522,230 @@ Alphabetical list of all constants. - [`permeability_of_vacuum` (hep::codata2022)](systems/hep.md#codata2022-permeability_of_vacuum) - [`pi` (hep)](systems/hep.md#pi) - [`pi` (mp_units)](systems/core.md#pi) +- [`planck_constant` (codata)](systems/codata.md#planck_constant) +- [`planck_constant` (codata::codata2014)](systems/codata.md#codata2014-planck_constant) - [`planck_constant` (hep)](systems/hep.md#planck_constant) - [`planck_constant` (si::si2019)](systems/si.md#si2019-planck_constant) +- [`planck_length` (codata::codata2014)](systems/codata.md#codata2014-planck_length) +- [`planck_length` (codata::codata2018)](systems/codata.md#codata2018-planck_length) +- [`planck_length` (codata::codata2022)](systems/codata.md#codata2022-planck_length) +- [`planck_mass` (codata::codata2014)](systems/codata.md#codata2014-planck_mass) +- [`planck_mass` (codata::codata2018)](systems/codata.md#codata2018-planck_mass) +- [`planck_mass` (codata::codata2022)](systems/codata.md#codata2022-planck_mass) +- [`planck_temperature` (codata::codata2014)](systems/codata.md#codata2014-planck_temperature) +- [`planck_temperature` (codata::codata2018)](systems/codata.md#codata2018-planck_temperature) +- [`planck_temperature` (codata::codata2022)](systems/codata.md#codata2022-planck_temperature) +- [`planck_time` (codata::codata2014)](systems/codata.md#codata2014-planck_time) +- [`planck_time` (codata::codata2018)](systems/codata.md#codata2018-planck_time) +- [`planck_time` (codata::codata2022)](systems/codata.md#codata2022-planck_time) +- [`proton_charge_to_mass_quotient` (codata::codata2014)](systems/codata.md#codata2014-proton_charge_to_mass_quotient) +- [`proton_charge_to_mass_quotient` (codata::codata2018)](systems/codata.md#codata2018-proton_charge_to_mass_quotient) +- [`proton_charge_to_mass_quotient` (codata::codata2022)](systems/codata.md#codata2022-proton_charge_to_mass_quotient) +- [`proton_compton_wavelength` (codata::codata2014)](systems/codata.md#codata2014-proton_compton_wavelength) +- [`proton_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-proton_compton_wavelength) +- [`proton_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-proton_compton_wavelength) +- [`proton_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_electron_mass_ratio) +- [`proton_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_electron_mass_ratio) +- [`proton_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_electron_mass_ratio) +- [`proton_g_factor` (codata::codata2014)](systems/codata.md#codata2014-proton_g_factor) +- [`proton_g_factor` (codata::codata2018)](systems/codata.md#codata2018-proton_g_factor) +- [`proton_g_factor` (codata::codata2022)](systems/codata.md#codata2022-proton_g_factor) +- [`proton_gyromagnetic_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_gyromagnetic_ratio) +- [`proton_gyromagnetic_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_gyromagnetic_ratio) +- [`proton_gyromagnetic_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_gyromagnetic_ratio) +- [`proton_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-proton_magnetic_moment) +- [`proton_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-proton_magnetic_moment) +- [`proton_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-proton_magnetic_moment) +- [`proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_magnetic_moment_to_bohr_magneton_ratio) +- [`proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_magnetic_moment_to_bohr_magneton_ratio) +- [`proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_magnetic_moment_to_bohr_magneton_ratio) +- [`proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`proton_magnetic_shielding_correction` (codata::codata2014)](systems/codata.md#codata2014-proton_magnetic_shielding_correction) +- [`proton_magnetic_shielding_correction` (codata::codata2018)](systems/codata.md#codata2018-proton_magnetic_shielding_correction) +- [`proton_magnetic_shielding_correction` (codata::codata2022)](systems/codata.md#codata2022-proton_magnetic_shielding_correction) +- [`proton_mass` (codata::codata2014)](systems/codata.md#codata2014-proton_mass) +- [`proton_mass` (codata::codata2018)](systems/codata.md#codata2018-proton_mass) +- [`proton_mass` (codata::codata2022)](systems/codata.md#codata2022-proton_mass) - [`proton_mass` (hep::codata2014)](systems/hep.md#codata2014-proton_mass) - [`proton_mass` (hep::codata2018)](systems/hep.md#codata2018-proton_mass) - [`proton_mass` (hep::codata2022)](systems/hep.md#codata2022-proton_mass) +- [`proton_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-proton_molar_mass) +- [`proton_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-proton_molar_mass) +- [`proton_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-proton_molar_mass) +- [`proton_muon_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_muon_mass_ratio) +- [`proton_muon_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_muon_mass_ratio) +- [`proton_muon_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_muon_mass_ratio) +- [`proton_neutron_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_neutron_magnetic_moment_ratio) +- [`proton_neutron_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_neutron_magnetic_moment_ratio) +- [`proton_neutron_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_neutron_magnetic_moment_ratio) +- [`proton_neutron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_neutron_mass_ratio) +- [`proton_neutron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_neutron_mass_ratio) +- [`proton_neutron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_neutron_mass_ratio) +- [`proton_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-proton_relative_atomic_mass) +- [`proton_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-proton_relative_atomic_mass) +- [`proton_rms_charge_radius` (codata::codata2014)](systems/codata.md#codata2014-proton_rms_charge_radius) +- [`proton_rms_charge_radius` (codata::codata2018)](systems/codata.md#codata2018-proton_rms_charge_radius) +- [`proton_rms_charge_radius` (codata::codata2022)](systems/codata.md#codata2022-proton_rms_charge_radius) +- [`proton_tau_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-proton_tau_mass_ratio) +- [`proton_tau_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-proton_tau_mass_ratio) +- [`proton_tau_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-proton_tau_mass_ratio) +- [`quantum_of_circulation` (codata::codata2014)](systems/codata.md#codata2014-quantum_of_circulation) +- [`quantum_of_circulation` (codata::codata2018)](systems/codata.md#codata2018-quantum_of_circulation) +- [`quantum_of_circulation` (codata::codata2022)](systems/codata.md#codata2022-quantum_of_circulation) +- [`quantum_of_circulation_times_2` (codata::codata2014)](systems/codata.md#codata2014-quantum_of_circulation_times_2) +- [`quantum_of_circulation_times_2` (codata::codata2018)](systems/codata.md#codata2018-quantum_of_circulation_times_2) +- [`quantum_of_circulation_times_2` (codata::codata2022)](systems/codata.md#codata2022-quantum_of_circulation_times_2) +- [`reduced_electron_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-reduced_electron_compton_wavelength) +- [`reduced_electron_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-reduced_electron_compton_wavelength) +- [`reduced_muon_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-reduced_muon_compton_wavelength) +- [`reduced_muon_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-reduced_muon_compton_wavelength) +- [`reduced_neutron_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-reduced_neutron_compton_wavelength) +- [`reduced_neutron_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-reduced_neutron_compton_wavelength) +- [`reduced_planck_constant` (codata::codata2014)](systems/codata.md#codata2014-reduced_planck_constant) +- [`reduced_planck_constant` (codata::codata2018)](systems/codata.md#codata2018-reduced_planck_constant) +- [`reduced_planck_constant` (codata::codata2022)](systems/codata.md#codata2022-reduced_planck_constant) - [`reduced_planck_constant` (natural)](systems/natural.md#reduced_planck_constant) - [`reduced_planck_constant` (si)](systems/si.md#reduced_planck_constant) +- [`reduced_proton_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-reduced_proton_compton_wavelength) +- [`reduced_proton_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-reduced_proton_compton_wavelength) +- [`reduced_tau_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-reduced_tau_compton_wavelength) +- [`reduced_tau_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-reduced_tau_compton_wavelength) +- [`rydberg_constant` (codata::codata2014)](systems/codata.md#codata2014-rydberg_constant) +- [`rydberg_constant` (codata::codata2018)](systems/codata.md#codata2018-rydberg_constant) +- [`rydberg_constant` (codata::codata2022)](systems/codata.md#codata2022-rydberg_constant) +- [`sackur_tetrode_constant_100_kpa` (codata::codata2014)](systems/codata.md#codata2014-sackur_tetrode_constant_100_kpa) +- [`sackur_tetrode_constant_100_kpa` (codata::codata2018)](systems/codata.md#codata2018-sackur_tetrode_constant_100_kpa) +- [`sackur_tetrode_constant_100_kpa` (codata::codata2022)](systems/codata.md#codata2022-sackur_tetrode_constant_100_kpa) +- [`sackur_tetrode_constant_101_325_kpa` (codata::codata2014)](systems/codata.md#codata2014-sackur_tetrode_constant_101_325_kpa) +- [`sackur_tetrode_constant_101_325_kpa` (codata::codata2018)](systems/codata.md#codata2018-sackur_tetrode_constant_101_325_kpa) +- [`sackur_tetrode_constant_101_325_kpa` (codata::codata2022)](systems/codata.md#codata2022-sackur_tetrode_constant_101_325_kpa) +- [`second_radiation_constant` (codata::codata2014)](systems/codata.md#codata2014-second_radiation_constant) +- [`second_radiation_constant` (codata::codata2018)](systems/codata.md#codata2018-second_radiation_constant) +- [`second_radiation_constant` (codata::codata2022)](systems/codata.md#codata2022-second_radiation_constant) +- [`shielded_helion_gyromagnetic_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_gyromagnetic_ratio) +- [`shielded_helion_gyromagnetic_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_gyromagnetic_ratio) +- [`shielded_helion_gyromagnetic_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_gyromagnetic_ratio) +- [`shielded_helion_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_magnetic_moment) +- [`shielded_helion_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_magnetic_moment) +- [`shielded_helion_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_magnetic_moment) +- [`shielded_helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_helion_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielded_helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielded_helion_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielded_helion_to_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_to_proton_magnetic_moment_ratio) +- [`shielded_helion_to_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_to_proton_magnetic_moment_ratio) +- [`shielded_helion_to_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_to_proton_magnetic_moment_ratio) +- [`shielded_helion_to_shielded_proton_magnetic_moment_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_helion_to_shielded_proton_magnetic_moment_ratio) +- [`shielded_helion_to_shielded_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_helion_to_shielded_proton_magnetic_moment_ratio) +- [`shielded_helion_to_shielded_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_helion_to_shielded_proton_magnetic_moment_ratio) +- [`shielded_proton_gyromagnetic_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_proton_gyromagnetic_ratio) +- [`shielded_proton_gyromagnetic_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_proton_gyromagnetic_ratio) +- [`shielded_proton_gyromagnetic_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_proton_gyromagnetic_ratio) +- [`shielded_proton_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-shielded_proton_magnetic_moment) +- [`shielded_proton_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-shielded_proton_magnetic_moment) +- [`shielded_proton_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-shielded_proton_magnetic_moment) +- [`shielded_proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_proton_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_proton_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_proton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_proton_magnetic_moment_to_bohr_magneton_ratio) +- [`shielded_proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-shielded_proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielded_proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-shielded_proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielded_proton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-shielded_proton_magnetic_moment_to_nuclear_magneton_ratio) +- [`shielding_difference_of_d_and_p_in_hd` (codata::codata2018)](systems/codata.md#codata2018-shielding_difference_of_d_and_p_in_hd) +- [`shielding_difference_of_d_and_p_in_hd` (codata::codata2022)](systems/codata.md#codata2022-shielding_difference_of_d_and_p_in_hd) +- [`shielding_difference_of_t_and_p_in_ht` (codata::codata2018)](systems/codata.md#codata2018-shielding_difference_of_t_and_p_in_ht) +- [`shielding_difference_of_t_and_p_in_ht` (codata::codata2022)](systems/codata.md#codata2022-shielding_difference_of_t_and_p_in_ht) +- [`speed_of_light_in_vacuum` (codata)](systems/codata.md#speed_of_light_in_vacuum) - [`speed_of_light_in_vacuum` (hep)](systems/hep.md#speed_of_light_in_vacuum) - [`speed_of_light_in_vacuum` (natural)](systems/natural.md#speed_of_light_in_vacuum) - [`speed_of_light_in_vacuum` (si::si2019)](systems/si.md#si2019-speed_of_light_in_vacuum) +- [`standard_atmosphere` (codata)](systems/codata.md#standard_atmosphere) +- [`standard_gravity` (codata)](systems/codata.md#standard_gravity) - [`standard_gravity` (si)](systems/si.md#standard_gravity) - [`standard_pressure` (hep)](systems/hep.md#standard_pressure) +- [`standard_state_pressure` (codata)](systems/codata.md#standard_state_pressure) - [`standard_temperature` (hep)](systems/hep.md#standard_temperature) +- [`stefan_boltzmann_constant` (codata::codata2014)](systems/codata.md#codata2014-stefan_boltzmann_constant) +- [`stefan_boltzmann_constant` (codata::codata2018)](systems/codata.md#codata2018-stefan_boltzmann_constant) +- [`stefan_boltzmann_constant` (codata::codata2022)](systems/codata.md#codata2022-stefan_boltzmann_constant) +- [`tau_compton_wavelength` (codata::codata2014)](systems/codata.md#codata2014-tau_compton_wavelength) +- [`tau_compton_wavelength` (codata::codata2018)](systems/codata.md#codata2018-tau_compton_wavelength) +- [`tau_compton_wavelength` (codata::codata2022)](systems/codata.md#codata2022-tau_compton_wavelength) +- [`tau_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-tau_electron_mass_ratio) +- [`tau_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-tau_electron_mass_ratio) +- [`tau_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-tau_electron_mass_ratio) +- [`tau_mass` (codata::codata2014)](systems/codata.md#codata2014-tau_mass) +- [`tau_mass` (codata::codata2018)](systems/codata.md#codata2018-tau_mass) +- [`tau_mass` (codata::codata2022)](systems/codata.md#codata2022-tau_mass) +- [`tau_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-tau_molar_mass) +- [`tau_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-tau_molar_mass) +- [`tau_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-tau_molar_mass) +- [`tau_muon_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-tau_muon_mass_ratio) +- [`tau_muon_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-tau_muon_mass_ratio) +- [`tau_muon_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-tau_muon_mass_ratio) +- [`tau_neutron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-tau_neutron_mass_ratio) +- [`tau_neutron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-tau_neutron_mass_ratio) +- [`tau_neutron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-tau_neutron_mass_ratio) +- [`tau_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-tau_proton_mass_ratio) +- [`tau_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-tau_proton_mass_ratio) +- [`tau_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-tau_proton_mass_ratio) +- [`thomson_cross_section` (codata::codata2014)](systems/codata.md#codata2014-thomson_cross_section) +- [`thomson_cross_section` (codata::codata2018)](systems/codata.md#codata2018-thomson_cross_section) +- [`thomson_cross_section` (codata::codata2022)](systems/codata.md#codata2022-thomson_cross_section) +- [`triton_electron_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-triton_electron_mass_ratio) +- [`triton_electron_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-triton_electron_mass_ratio) +- [`triton_electron_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-triton_electron_mass_ratio) +- [`triton_g_factor` (codata::codata2014)](systems/codata.md#codata2014-triton_g_factor) +- [`triton_g_factor` (codata::codata2018)](systems/codata.md#codata2018-triton_g_factor) +- [`triton_g_factor` (codata::codata2022)](systems/codata.md#codata2022-triton_g_factor) +- [`triton_magnetic_moment` (codata::codata2014)](systems/codata.md#codata2014-triton_magnetic_moment) +- [`triton_magnetic_moment` (codata::codata2018)](systems/codata.md#codata2018-triton_magnetic_moment) +- [`triton_magnetic_moment` (codata::codata2022)](systems/codata.md#codata2022-triton_magnetic_moment) +- [`triton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-triton_magnetic_moment_to_bohr_magneton_ratio) +- [`triton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-triton_magnetic_moment_to_bohr_magneton_ratio) +- [`triton_magnetic_moment_to_bohr_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-triton_magnetic_moment_to_bohr_magneton_ratio) +- [`triton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2014)](systems/codata.md#codata2014-triton_magnetic_moment_to_nuclear_magneton_ratio) +- [`triton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2018)](systems/codata.md#codata2018-triton_magnetic_moment_to_nuclear_magneton_ratio) +- [`triton_magnetic_moment_to_nuclear_magneton_ratio` (codata::codata2022)](systems/codata.md#codata2022-triton_magnetic_moment_to_nuclear_magneton_ratio) +- [`triton_mass` (codata::codata2014)](systems/codata.md#codata2014-triton_mass) +- [`triton_mass` (codata::codata2018)](systems/codata.md#codata2018-triton_mass) +- [`triton_mass` (codata::codata2022)](systems/codata.md#codata2022-triton_mass) +- [`triton_molar_mass` (codata::codata2014)](systems/codata.md#codata2014-triton_molar_mass) +- [`triton_molar_mass` (codata::codata2018)](systems/codata.md#codata2018-triton_molar_mass) +- [`triton_molar_mass` (codata::codata2022)](systems/codata.md#codata2022-triton_molar_mass) +- [`triton_proton_mass_ratio` (codata::codata2014)](systems/codata.md#codata2014-triton_proton_mass_ratio) +- [`triton_proton_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-triton_proton_mass_ratio) +- [`triton_proton_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-triton_proton_mass_ratio) +- [`triton_relative_atomic_mass` (codata::codata2018)](systems/codata.md#codata2018-triton_relative_atomic_mass) +- [`triton_relative_atomic_mass` (codata::codata2022)](systems/codata.md#codata2022-triton_relative_atomic_mass) +- [`triton_to_proton_magnetic_moment_ratio` (codata::codata2018)](systems/codata.md#codata2018-triton_to_proton_magnetic_moment_ratio) +- [`triton_to_proton_magnetic_moment_ratio` (codata::codata2022)](systems/codata.md#codata2022-triton_to_proton_magnetic_moment_ratio) +- [`unified_atomic_mass_unit` (codata::codata2014)](systems/codata.md#codata2014-unified_atomic_mass_unit) +- [`unified_atomic_mass_unit` (codata::codata2018)](systems/codata.md#codata2018-unified_atomic_mass_unit) +- [`unified_atomic_mass_unit` (codata::codata2022)](systems/codata.md#codata2022-unified_atomic_mass_unit) - [`universe_mean_density` (hep)](systems/hep.md#universe_mean_density) +- [`vacuum_electric_permittivity` (codata::codata2014)](systems/codata.md#codata2014-vacuum_electric_permittivity) +- [`vacuum_electric_permittivity` (codata::codata2018)](systems/codata.md#codata2018-vacuum_electric_permittivity) +- [`vacuum_electric_permittivity` (codata::codata2022)](systems/codata.md#codata2022-vacuum_electric_permittivity) +- [`von_klitzing_constant` (codata::codata2014)](systems/codata.md#codata2014-von_klitzing_constant) +- [`von_klitzing_constant` (codata::codata2018)](systems/codata.md#codata2018-von_klitzing_constant) +- [`von_klitzing_constant` (codata::codata2022)](systems/codata.md#codata2022-von_klitzing_constant) +- [`w_to_z_mass_ratio` (codata::codata2018)](systems/codata.md#codata2018-w_to_z_mass_ratio) +- [`w_to_z_mass_ratio` (codata::codata2022)](systems/codata.md#codata2022-w_to_z_mass_ratio) +- [`weak_mixing_angle` (codata::codata2014)](systems/codata.md#codata2014-weak_mixing_angle) +- [`weak_mixing_angle` (codata::codata2018)](systems/codata.md#codata2018-weak_mixing_angle) +- [`weak_mixing_angle` (codata::codata2022)](systems/codata.md#codata2022-weak_mixing_angle) +- [`wien_frequency_displacement_law_constant` (codata::codata2014)](systems/codata.md#codata2014-wien_frequency_displacement_law_constant) +- [`wien_frequency_displacement_law_constant` (codata::codata2018)](systems/codata.md#codata2018-wien_frequency_displacement_law_constant) +- [`wien_frequency_displacement_law_constant` (codata::codata2022)](systems/codata.md#codata2022-wien_frequency_displacement_law_constant) +- [`wien_wavelength_displacement_law_constant` (codata::codata2014)](systems/codata.md#codata2014-wien_wavelength_displacement_law_constant) +- [`wien_wavelength_displacement_law_constant` (codata::codata2018)](systems/codata.md#codata2018-wien_wavelength_displacement_law_constant) +- [`wien_wavelength_displacement_law_constant` (codata::codata2022)](systems/codata.md#codata2022-wien_wavelength_displacement_law_constant) +- [`wien_x_frequency` (codata)](systems/codata.md#wien_x_frequency) +- [`wien_x_wavelength` (codata)](systems/codata.md#wien_x_wavelength) - [`π` (mp_units)](systems/core.md#π) -**Total constants:** 76 +**Total constants:** 742 diff --git a/docs/reference/systems_reference/index.md b/docs/reference/systems_reference/index.md index b791624ef6..52be1c2318 100644 --- a/docs/reference/systems_reference/index.md +++ b/docs/reference/systems_reference/index.md @@ -22,7 +22,7 @@ Automatically generated reference documentation for all **mp-units** systems. | [Angular](systems/angular.md) | 1 | 2 | — | 5 | — | — | | [Astronomy](systems/astronomy.md) | — | — | — | 10 | — | — | | [CGS](systems/cgs.md) | — | — | — | 10 | — | — | -| [CODATA](systems/codata.md) | — | — | — | — | 5 | — | +| [CODATA](systems/codata.md) | — | — | — | 8 | 671 | — | | [Core](systems/core.md) | 1 | 1 | — | 5 | 2 | — | | [HEP](systems/hep.md) | 8 | 79 | — | 45 | 45 | — | | [IAU](systems/iau.md) | — | — | — | 5 | 12 | — | diff --git a/docs/reference/systems_reference/systems/codata.md b/docs/reference/systems_reference/systems/codata.md index bf251c39d5..e52c150273 100644 --- a/docs/reference/systems_reference/systems/codata.md +++ b/docs/reference/systems_reference/systems/codata.md @@ -9,17 +9,707 @@ **Header:** `` +**Secondary Headers:** + +- `` +- `` +- `` +- `` +- `` +- `` +- `` +- `` + +## Units + +| Unit Name | Symbol | unit_symbol | Definition | +|-----------|:------:|:-----------:|------------| +| codata2014::speed_of_light_in_vacuum | — | — | alias to [si::si2019::speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | +| codata2018::avogadro_constant | — | — | alias to [si::si2019::avogadro_constant](#si2019-avogadro_constant) | +| codata2018::boltzmann_constant | — | — | alias to [si::si2019::boltzmann_constant](#si2019-boltzmann_constant) | +| codata2018::elementary_charge | — | — | alias to [si::si2019::elementary_charge](#si2019-elementary_charge) | +| codata2018::hyperfine_structure_transition_frequency_of_cs | — | — | alias to [si::si2019::hyperfine_structure_transition_frequency_of_cs](#si2019-hyperfine_structure_transition_frequency_of_cs) | +| codata2018::luminous_efficacy | — | — | alias to [si::si2019::luminous_efficacy](#si2019-luminous_efficacy) | +| codata2018::planck_constant | — | — | alias to [si::si2019::planck_constant](#si2019-planck_constant) | +| codata2018::speed_of_light_in_vacuum | — | — | alias to [si::si2019::speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | + ## Constants -| Name | Symbol | unit_symbol | Definition | Relative standard uncertainty | -|------|:------:|:------------:|------------|:-----------------------------:| -| codata2014::magnetic_constant | μ₀ (u_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [si::henry](si.md#henry) / [si::metre](si.md#metre) | — | -| codata2018::magnetic_constant | μ₀ (u_0) | — | mag_ratio<125'663'706'212, 100'000'000'000> * mag_power<10, -6> * [si::henry](si.md#henry) / [si::metre](si.md#metre) | mag_ratio<15, 10> * mag_power<10, -10> | -| codata2018::newtonian_constant_of_gravitation | G | — | mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | mag_ratio<22, 10> * mag_power<10, -5> | -| codata2022::magnetic_constant | μ₀ (u_0) | — | mag_ratio<125'663'706'127, 100'000'000'000> * mag_power<10, -6> * [si::henry](si.md#henry) / [si::metre](si.md#metre) | mag_ratio<16, 10> * mag_power<10, -10> | -| codata2022::newtonian_constant_of_gravitation | G | — | mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | mag_ratio<22, 10> * mag_power<10, -5> | +| Name | Symbol | unit_symbol | Definition | Standard uncertainty | +|------|:------:|:------------:|------------|:--------------------:| +| avogadro_constant | N_A | — | alias to [si::si2019::avogadro_constant](#si2019-avogadro_constant) | — | +| boltzmann_constant | k | — | alias to [si::si2019::boltzmann_constant](#si2019-boltzmann_constant) | — | +| codata2014::alpha_particle_electron_mass_ratio | alpha_particle_electron_mass_ratio | — | mag_ratio<729'429'954'136, 100'000'000> * [one](core.md#one) | mag_ratio<24, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::alpha_particle_mass | m_α (m_alpha) | — | mag_ratio<6'644'657'230, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<82, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::alpha_particle_molar_mass | alpha_particle_molar_mass | — | mag_ratio<4'001'506'179'127, 1'000'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<63, 10> * mag_power<10, -14> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::alpha_particle_proton_mass_ratio | alpha_particle_proton_mass_ratio | — | mag_ratio<397'259'968'907, 100'000'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::angstrom_star | angstrom_star | — | mag_ratio<100'001'495, 100'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<90, 10> * mag_power<10, -17> * [si::metre](si.md#metre) | +| codata2014::atomic_mass_constant | m_u | — | mag_ratio<1'660'539'040, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<20, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::atomic_unit_of_1st_hyperpolarizability | atomic_unit_of_1st_hyperpolarizability | — | mag_ratio<3'206'361'329, 1'000'000'000> * mag_power<10, -53> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | mag_ratio<20, 10> * mag_power<10, -61> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | +| codata2014::atomic_unit_of_2nd_hyperpolarizability | atomic_unit_of_2nd_hyperpolarizability | — | mag_ratio<6'235'380'085, 1'000'000'000> * mag_power<10, -65> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | mag_ratio<77, 10> * mag_power<10, -73> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | +| codata2014::atomic_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2014::atomic_unit_of_charge | e | — | alias to [elementary_charge](#si2019-elementary_charge) | — | +| codata2014::atomic_unit_of_charge_density | atomic_unit_of_charge_density | — | mag_ratio<10'812'023'770, 10'000'000'000> * mag_power<10, 12> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | mag_ratio<67, 10> * mag_power<10, 3> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | +| codata2014::atomic_unit_of_current | atomic_unit_of_current | — | mag_ratio<6'623'618'183, 1'000'000'000> * mag_power<10, -3> * [si::ampere](si.md#ampere) | mag_ratio<41, 10> * mag_power<10, -11> * [si::ampere](si.md#ampere) | +| codata2014::atomic_unit_of_electric_dipole_moment | atomic_unit_of_electric_dipole_moment | — | mag_ratio<8'478'353'552, 1'000'000'000> * mag_power<10, -30> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | mag_ratio<52, 10> * mag_power<10, -38> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | +| codata2014::atomic_unit_of_electric_field | atomic_unit_of_electric_field | — | mag_ratio<5'142'206'707, 1'000'000'000> * mag_power<10, 11> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | mag_ratio<32, 10> * mag_power<10, 3> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | +| codata2014::atomic_unit_of_electric_field_gradient | atomic_unit_of_electric_field_gradient | — | mag_ratio<9'717'362'356, 1'000'000'000> * mag_power<10, 21> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | mag_ratio<60, 10> * mag_power<10, 13> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | +| codata2014::atomic_unit_of_electric_polarizability | atomic_unit_of_electric_polarizability | — | mag_ratio<16'487'772'731, 10'000'000'000> * mag_power<10, -41> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | mag_ratio<11, 10> * mag_power<10, -50> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | +| codata2014::atomic_unit_of_electric_potential | atomic_unit_of_electric_potential | — | mag_ratio<2'721'138'602, 100'000'000> * [si::volt](si.md#volt) | mag_ratio<17, 10> * mag_power<10, -7> * [si::volt](si.md#volt) | +| codata2014::atomic_unit_of_electric_quadrupole_moment | atomic_unit_of_electric_quadrupole_moment | — | mag_ratio<4'486'551'484, 1'000'000'000> * mag_power<10, -40> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | mag_ratio<28, 10> * mag_power<10, -48> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | +| codata2014::atomic_unit_of_energy | E_h | — | alias to [codata::codata2022::hartree_energy](#codata2022-hartree_energy) | mag_ratio<48, 10> * mag_power<10, -30> * [si::joule](si.md#joule) | +| codata2014::atomic_unit_of_force | atomic_unit_of_force | — | mag_ratio<823'872'336, 100'000'000> * mag_power<10, -8> * [si::newton](si.md#newton) | mag_ratio<10, 10> * mag_power<10, -15> * [si::newton](si.md#newton) | +| codata2014::atomic_unit_of_length | a_0 | — | alias to [codata::codata2022::bohr_radius](#codata2022-bohr_radius) | mag_ratio<82, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2014::atomic_unit_of_magnetic_dipole_moment | atomic_unit_of_magnetic_dipole_moment | — | mag_ratio<1'854'801'999, 1'000'000'000> * mag_power<10, -23> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, -31> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::atomic_unit_of_magnetic_flux_density | atomic_unit_of_magnetic_flux_density | — | mag_ratio<2'350'517'550, 1'000'000'000> * mag_power<10, 5> * [si::tesla](si.md#tesla) | mag_ratio<14, 10> * mag_power<10, -3> * [si::tesla](si.md#tesla) | +| codata2014::atomic_unit_of_magnetizability | atomic_unit_of_magnetizability | — | mag_ratio<78'910'365'886, 10'000'000'000> * mag_power<10, -29> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | mag_ratio<90, 10> * mag_power<10, -38> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | +| codata2014::atomic_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2014::atomic_unit_of_momentum | atomic_unit_of_momentum | — | mag_ratio<1'992'851'882, 1'000'000'000> * mag_power<10, -24> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<24, 10> * mag_power<10, -32> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2014::atomic_unit_of_permittivity | atomic_unit_of_permittivity | — | mag<4> * [π](core.md#π) / [magnetic_constant](#codata2022-magnetic_constant) / square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2014::atomic_unit_of_time | atomic_unit_of_time | — | mag_ratio<2'418'884'326'509, 1'000'000'000'000> * mag_power<10, -17> * [si::second](si.md#second) | mag_ratio<14, 10> * mag_power<10, -28> * [si::second](si.md#second) | +| codata2014::atomic_unit_of_velocity | atomic_unit_of_velocity | — | mag_ratio<218'769'126'277, 100'000'000'000> * mag_power<10, 6> * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<50, 10> * mag_power<10, -4> * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2014::avogadro_constant | N_A | — | mag_ratio<6'022'140'857, 1'000'000'000> * mag_power<10, 23> * [one](core.md#one) / [si::mole](si.md#mole) | mag_ratio<74, 10> * mag_power<10, 15> * [one](core.md#one) / [si::mole](si.md#mole) | +| codata2014::bohr_magneton | μ_B (mu_B) | — | mag_ratio<9'274'009'994, 10'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<57, 10> * mag_power<10, -32> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::bohr_radius | a_0 | — | mag_ratio<52'917'721'067, 100'000'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<12, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2014::boltzmann_constant | k | — | mag_ratio<138'064'852, 100'000'000> * mag_power<10, -23> * [si::joule](si.md#joule) / [si::kelvin](si.md#kelvin) | mag_ratio<79, 10> * mag_power<10, -30> * [si::joule](si.md#joule) / [si::kelvin](si.md#kelvin) | +| codata2014::characteristic_impedance_of_vacuum | Z_0 | — | [magnetic_constant](#codata2022-magnetic_constant) * [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | — | +| codata2014::classical_electron_radius | r_e | — | mag_ratio<28'179'403'227, 10'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<19, 10> * mag_power<10, -24> * [si::metre](si.md#metre) | +| codata2014::conductance_quantum | G_0 | — | mag_ratio<77'480'917'310, 10'000'000'000> * mag_power<10, -5> * [si::siemens](si.md#siemens) | mag_ratio<18, 10> * mag_power<10, -14> * [si::siemens](si.md#siemens) | +| codata2014::copper_x_unit | copper_x_unit | — | mag_ratio<100'207'697, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<28, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2014::deuteron_electron_magnetic_moment_ratio | deuteron_electron_magnetic_moment_ratio | — | -mag_ratio<4'664'345'535, 1'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::deuteron_electron_mass_ratio | deuteron_electron_mass_ratio | — | mag_ratio<367'048'296'785, 100'000'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::deuteron_g_factor | g_d | — | mag_ratio<8'574'382'311, 10'000'000'000> * [one](core.md#one) | mag_ratio<48, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::deuteron_magnetic_moment | μ_d (mu_d) | — | mag_ratio<4'330'735'040, 10'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<36, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::deuteron_magnetic_moment_to_bohr_magneton_ratio | deuteron_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<4'669'754'554, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::deuteron_magnetic_moment_to_nuclear_magneton_ratio | deuteron_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<8'574'382'311, 10'000'000'000> * [one](core.md#one) | mag_ratio<48, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::deuteron_mass | m_d | — | mag_ratio<3'343'583'719, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<41, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::deuteron_molar_mass | deuteron_molar_mass | — | mag_ratio<2'013'553'212'745, 1'000'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<40, 10> * mag_power<10, -14> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::deuteron_neutron_magnetic_moment_ratio | deuteron_neutron_magnetic_moment_ratio | — | -mag_ratio<44'820'652, 100'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::deuteron_proton_magnetic_moment_ratio | deuteron_proton_magnetic_moment_ratio | — | mag_ratio<3'070'122'077, 10'000'000'000> * [one](core.md#one) | mag_ratio<15, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::deuteron_proton_mass_ratio | deuteron_proton_mass_ratio | — | mag_ratio<199'900'750'087, 100'000'000'000> * [one](core.md#one) | mag_ratio<19, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::deuteron_rms_charge_radius | r_d | — | mag_ratio<21'413, 10'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<25, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2014::electron_charge_to_mass_quotient | electron_charge_to_mass_quotient | — | -mag_ratio<1'758'820'024, 1'000'000'000> * mag_power<10, 11> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<11, 10> * mag_power<10, 3> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2014::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<24'263'102'367, 10'000'000'000> * mag_power<10, -12> * [si::metre](si.md#metre) | mag_ratio<11, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2014::electron_deuteron_magnetic_moment_ratio | electron_deuteron_magnetic_moment_ratio | — | -mag_ratio<2'143'923'499, 1'000'000> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2014::electron_deuteron_mass_ratio | electron_deuteron_mass_ratio | — | mag_ratio<2'724'437'107'484, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<96, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2014::electron_g_factor | g_e | — | -mag_ratio<200'231'930'436'182, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<52, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2014::electron_gyromagnetic_ratio | γ_e (gamma_e) | — | mag_ratio<1'760'859'644, 1'000'000'000> * mag_power<10, 11> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, 3> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2014::electron_helion_mass_ratio | electron_helion_mass_ratio | — | mag_ratio<1'819'543'074'854, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<88, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2014::electron_magnetic_moment | μ_e (mu_e) | — | -mag_ratio<9'284'764'620, 10'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<57, 10> * mag_power<10, -32> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::electron_magnetic_moment_anomaly | electron_magnetic_moment_anomaly | — | mag_ratio<115'965'218'091, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2014::electron_magnetic_moment_to_bohr_magneton_ratio | electron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<100'115'965'218'091, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2014::electron_magnetic_moment_to_nuclear_magneton_ratio | electron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<183'828'197'234, 100'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::electron_mass | m_e | — | mag_ratio<910'938'356, 100'000'000> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | mag_ratio<11, 10> * mag_power<10, -38> * [si::kilogram](si.md#kilogram) | +| codata2014::electron_molar_mass | electron_molar_mass | — | mag_ratio<548'579'909'070, 100'000'000'000> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<16, 10> * mag_power<10, -17> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::electron_muon_magnetic_moment_ratio | electron_muon_magnetic_moment_ratio | — | mag_ratio<2'067'669'880, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::electron_muon_mass_ratio | electron_muon_mass_ratio | — | mag_ratio<483'633'170, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::electron_neutron_magnetic_moment_ratio | electron_neutron_magnetic_moment_ratio | — | mag_ratio<96'092'050, 100'000> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2014::electron_neutron_mass_ratio | electron_neutron_mass_ratio | — | mag_ratio<54'386'734'428, 10'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<27, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2014::electron_proton_magnetic_moment_ratio | electron_proton_magnetic_moment_ratio | — | -mag_ratio<6'582'106'866, 10'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::electron_proton_mass_ratio | electron_proton_mass_ratio | — | mag_ratio<544'617'021'352, 100'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<52, 10> * mag_power<10, -14> * [one](core.md#one) | +| codata2014::electron_tau_mass_ratio | electron_tau_mass_ratio | — | mag_ratio<287'592, 100'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::electron_to_alpha_particle_mass_ratio | electron_to_alpha_particle_mass_ratio | — | mag_ratio<1'370'933'554'798, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2014::electron_to_shielded_helion_magnetic_moment_ratio | electron_to_shielded_helion_magnetic_moment_ratio | — | mag_ratio<864'058'257, 1'000'000> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2014::electron_to_shielded_proton_magnetic_moment_ratio | electron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<6'582'275'971, 10'000'000> * [one](core.md#one) | mag_ratio<72, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::electron_triton_mass_ratio | electron_triton_mass_ratio | — | mag_ratio<1'819'200'062'203, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<84, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2014::elementary_charge | e | — | mag_ratio<16'021'766'208, 10'000'000'000> * mag_power<10, -19> * [si::coulomb](si.md#coulomb) | mag_ratio<98, 10> * mag_power<10, -28> * [si::coulomb](si.md#coulomb) | +| codata2014::elementary_charge_over_h | elementary_charge_over_h | — | mag_ratio<2'417'989'262, 1'000'000'000> * mag_power<10, 14> * [si::ampere](si.md#ampere) / [si::joule](si.md#joule) | mag_ratio<15, 10> * mag_power<10, 6> * [si::ampere](si.md#ampere) / [si::joule](si.md#joule) | +| codata2014::faraday_constant | F | — | mag_ratio<9'648'533'289, 100'000> * [si::coulomb](si.md#coulomb) / [si::mole](si.md#mole) | mag_ratio<59, 10> * mag_power<10, -4> * [si::coulomb](si.md#coulomb) / [si::mole](si.md#mole) | +| codata2014::fermi_coupling_constant | fermi_coupling_constant | — | mag_ratio<11'663'787, 10'000'000> * mag_power<10, -5> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | mag<6> * mag_power<10, -12> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | +| codata2014::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'664, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::first_radiation_constant | c_1 | — | mag_ratio<3'741'771'790, 1'000'000'000> * mag_power<10, -16> * [si::watt](si.md#watt) * square([si::metre](si.md#metre)) | mag_ratio<46, 10> * mag_power<10, -24> * [si::watt](si.md#watt) * square([si::metre](si.md#metre)) | +| codata2014::first_radiation_constant_for_spectral_radiance | c_1L | — | mag_ratio<1'191'042'953, 1'000'000'000> * mag_power<10, -16> * [si::watt](si.md#watt) * square([si::metre](si.md#metre)) / [si::steradian](si.md#steradian) | mag_ratio<15, 10> * mag_power<10, -24> * [si::watt](si.md#watt) * square([si::metre](si.md#metre)) / [si::steradian](si.md#steradian) | +| codata2014::hartree_energy | E_h | — | mag_ratio<4'359'744'650, 1'000'000'000> * mag_power<10, -18> * [si::joule](si.md#joule) | mag_ratio<54, 10> * mag_power<10, -26> * [si::joule](si.md#joule) | +| codata2014::helion_electron_mass_ratio | helion_electron_mass_ratio | — | mag_ratio<549'588'527'922, 100'000'000> * [one](core.md#one) | mag_ratio<27, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::helion_g_factor | g_h | — | -mag_ratio<4'255'250'616, 1'000'000'000> * [one](core.md#one) | mag_ratio<50, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::helion_magnetic_moment | helion_magnetic_moment | — | -mag_ratio<1'074'617'522, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<14, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::helion_magnetic_moment_to_bohr_magneton_ratio | helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<1'158'740'958, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2014::helion_magnetic_moment_to_nuclear_magneton_ratio | helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<2'127'625'308, 1'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::helion_mass | m_h | — | mag_ratio<5'006'412'700, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<62, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::helion_molar_mass | helion_molar_mass | — | mag_ratio<301'493'224'673, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<12, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::helion_proton_mass_ratio | helion_proton_mass_ratio | — | mag_ratio<299'315'267'046, 100'000'000'000> * [one](core.md#one) | mag_ratio<29, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::inverse_fine_structure_constant | inverse_fine_structure_constant | — | mag_ratio<137'035'999'139, 1'000'000'000> * [one](core.md#one) | mag_ratio<31, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::inverse_of_conductance_quantum | inverse_of_conductance_quantum | — | mag_ratio<129'064'037'278, 10'000'000> * [si::ohm](si.md#ohm) | mag_ratio<29, 10> * mag_power<10, -6> * [si::ohm](si.md#ohm) | +| codata2014::josephson_constant | K_J | — | mag_ratio<4'835'978'525, 10'000> * mag_power<10, 9> * [si::hertz](si.md#hertz) / [si::volt](si.md#volt) | mag_ratio<30, 10> * mag_power<10, 6> * [si::hertz](si.md#hertz) / [si::volt](si.md#volt) | +| codata2014::lattice_parameter_of_silicon | lattice_parameter_of_silicon | — | mag_ratio<5'431'020'504, 10'000'000> * mag_power<10, -12> * [si::metre](si.md#metre) | mag_ratio<89, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2014::lattice_spacing_of_silicon_220 | lattice_spacing_of_silicon_220 | — | mag_ratio<1'920'155'714, 10'000'000> * mag_power<10, -12> * [si::metre](si.md#metre) | mag_ratio<32, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2014::loschmidt_constant_atm | loschmidt_constant_atm | — | mag_ratio<26'867'811, 10'000'000> * mag_power<10, 25> * [one](core.md#one) / cubic([si::metre](si.md#metre)) | mag_ratio<15, 10> * mag_power<10, 19> * [one](core.md#one) / cubic([si::metre](si.md#metre)) | +| codata2014::loschmidt_constant_stp | n_0 | — | mag_ratio<26'516'467, 10'000'000> * mag_power<10, 25> * [one](core.md#one) / cubic([si::metre](si.md#metre)) | mag_ratio<15, 10> * mag_power<10, 19> * [one](core.md#one) / cubic([si::metre](si.md#metre)) | +| codata2014::magnetic_constant | μ₀ (u_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [si::henry](si.md#henry) / [si::metre](si.md#metre) | — | +| codata2014::magnetic_flux_quantum | Φ₀ (Phi_0) | — | mag_ratio<2'067'833'831, 1'000'000'000> * mag_power<10, -15> * [si::weber](si.md#weber) | mag_ratio<13, 10> * mag_power<10, -23> * [si::weber](si.md#weber) | +| codata2014::molar_gas_constant | R | — | mag_ratio<83'144'598, 10'000'000> * [si::joule](si.md#joule) / [si::mole](si.md#mole) / [si::kelvin](si.md#kelvin) | mag_ratio<48, 10> * mag_power<10, -6> * [si::joule](si.md#joule) / [si::mole](si.md#mole) / [si::kelvin](si.md#kelvin) | +| codata2014::molar_mass_constant | M_u | — | mag<1> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | — | +| codata2014::molar_mass_of_carbon_12 | molar_mass_of_carbon_12 | — | mag<12> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | — | +| codata2014::molar_planck_constant | N_Ah | — | mag_ratio<39'903'127'110, 10'000'000'000> * mag_power<10, -10> * [si::joule](si.md#joule) * [si::second](si.md#second) / [si::mole](si.md#mole) | mag_ratio<18, 10> * mag_power<10, -19> * [si::joule](si.md#joule) * [si::second](si.md#second) / [si::mole](si.md#mole) | +| codata2014::molar_planck_constant_times_c | molar_planck_constant_times_c | — | mag_ratio<119'626'565'582, 1'000'000'000'000> * [si::joule](si.md#joule) * [si::metre](si.md#metre) / [si::mole](si.md#mole) | mag_ratio<54, 10> * mag_power<10, -11> * [si::joule](si.md#joule) * [si::metre](si.md#metre) / [si::mole](si.md#mole) | +| codata2014::molar_volume_of_ideal_gas_atm | molar_volume_of_ideal_gas_atm | — | mag_ratio<22'413'962, 1'000'000> * mag_power<10, -3> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | mag_ratio<13, 10> * mag_power<10, -8> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | +| codata2014::molar_volume_of_ideal_gas_stp | molar_volume_of_ideal_gas_stp | — | mag_ratio<22'710'947, 1'000'000> * mag_power<10, -3> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | mag_ratio<13, 10> * mag_power<10, -8> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | +| codata2014::molar_volume_of_silicon | molar_volume_of_silicon | — | mag_ratio<1'205'883'214, 100'000'000> * mag_power<10, -6> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | mag_ratio<61, 10> * mag_power<10, -13> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | +| codata2014::molybdenum_x_unit | molybdenum_x_unit | — | mag_ratio<100'209'952, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<53, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2014::muon_compton_wavelength | muon_compton_wavelength | — | mag_ratio<1'173'444'111, 100'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<26, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2014::muon_electron_mass_ratio | muon_electron_mass_ratio | — | mag_ratio<2'067'682'826, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::muon_g_factor | g_μ (g_mu) | — | -mag_ratio<20'023'318'418, 10'000'000'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::muon_magnetic_moment | μ_μ (mu_mu) | — | -mag_ratio<449'044'826, 100'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<10, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::muon_magnetic_moment_anomaly | muon_magnetic_moment_anomaly | — | mag_ratio<116'592'089, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<63, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::muon_magnetic_moment_to_bohr_magneton_ratio | muon_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<484'197'048, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::muon_magnetic_moment_to_nuclear_magneton_ratio | muon_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<889'059'705, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::muon_mass | m_μ (m_mu) | — | mag_ratio<1'883'531'594, 1'000'000'000> * mag_power<10, -28> * [si::kilogram](si.md#kilogram) | mag_ratio<48, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2014::muon_molar_mass | muon_molar_mass | — | mag_ratio<1'134'289'257, 10'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<25, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::muon_neutron_mass_ratio | muon_neutron_mass_ratio | — | mag_ratio<1'124'545'167, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::muon_proton_magnetic_moment_ratio | muon_proton_magnetic_moment_ratio | — | -mag_ratio<3'183'345'142, 1'000'000'000> * [one](core.md#one) | mag_ratio<71, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::muon_proton_mass_ratio | muon_proton_mass_ratio | — | mag_ratio<1'126'095'262, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::muon_tau_mass_ratio | muon_tau_mass_ratio | — | mag_ratio<594'649, 100'000> * mag_power<10, -2> * [one](core.md#one) | mag_ratio<54, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::natural_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2014::natural_unit_of_energy | natural_unit_of_energy | — | mag_ratio<818'710'565, 100'000'000> * mag_power<10, -14> * [si::joule](si.md#joule) | mag_ratio<10, 10> * mag_power<10, -21> * [si::joule](si.md#joule) | +| codata2014::natural_unit_of_length | natural_unit_of_length | — | mag_ratio<38'615'926'764, 100'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<18, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2014::natural_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2014::natural_unit_of_momentum | natural_unit_of_momentum | — | mag_ratio<2'730'924'488, 1'000'000'000> * mag_power<10, -22> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<34, 10> * mag_power<10, -30> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2014::natural_unit_of_time | natural_unit_of_time | — | mag_ratio<128'808'866'712, 100'000'000'000> * mag_power<10, -21> * [si::second](si.md#second) | mag_ratio<58, 10> * mag_power<10, -31> * [si::second](si.md#second) | +| codata2014::natural_unit_of_velocity | c | — | alias to [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | — | +| codata2014::neutron_compton_wavelength | neutron_compton_wavelength | — | mag_ratio<131'959'090'481, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<88, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2014::neutron_electron_magnetic_moment_ratio | neutron_electron_magnetic_moment_ratio | — | mag_ratio<104'066'882, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::neutron_electron_mass_ratio | neutron_electron_mass_ratio | — | mag_ratio<183'868'366'158, 100'000'000> * [one](core.md#one) | mag_ratio<90, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::neutron_g_factor | g_n | — | -mag_ratio<382'608'545, 100'000'000> * [one](core.md#one) | mag_ratio<90, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::neutron_gyromagnetic_ratio | γ_n (gamma_n) | — | mag_ratio<183'247'172, 100'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<43, 10> * mag_power<10, 1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2014::neutron_magnetic_moment | μ_n (mu_n) | — | -mag_ratio<96'623'650, 100'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<23, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::neutron_magnetic_moment_to_bohr_magneton_ratio | neutron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<104'187'563, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::neutron_magnetic_moment_to_nuclear_magneton_ratio | neutron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<191'304'273, 100'000'000> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::neutron_mass | m_n | — | mag_ratio<1'674'927'471, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<21, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::neutron_molar_mass | neutron_molar_mass | — | mag_ratio<100'866'491'588, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<49, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::neutron_muon_mass_ratio | neutron_muon_mass_ratio | — | mag_ratio<889'248'408, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::neutron_proton_magnetic_moment_ratio | neutron_proton_magnetic_moment_ratio | — | -mag_ratio<68'497'934, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::neutron_proton_mass_difference | neutron_proton_mass_difference | — | mag_ratio<230'557'377, 100'000'000> * mag_power<10, -30> * [one](core.md#one) | mag_ratio<85, 10> * mag_power<10, -37> * [one](core.md#one) | +| codata2014::neutron_proton_mass_ratio | neutron_proton_mass_ratio | — | mag_ratio<100'137'841'898, 100'000'000'000> * [one](core.md#one) | mag_ratio<51, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::neutron_tau_mass_ratio | neutron_tau_mass_ratio | — | mag_ratio<528'790, 1'000'000> * [one](core.md#one) | mag_ratio<48, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2014::neutron_to_shielded_proton_magnetic_moment_ratio | neutron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<68'499'694, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::newtonian_constant_of_gravitation | G | — | mag_ratio<667'408, 100'000> * mag_power<10, -11> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | mag_ratio<31, 10> * mag_power<10, -15> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | +| codata2014::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<5'050'783'699, 1'000'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<31, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::planck_constant | h | — | mag_ratio<6'626'070'040, 1'000'000'000> * mag_power<10, -34> * [si::joule](si.md#joule) * [si::second](si.md#second) | mag_ratio<81, 10> * mag_power<10, -42> * [si::joule](si.md#joule) * [si::second](si.md#second) | +| codata2014::planck_length | l_P | — | mag_ratio<1'616'229, 1'000'000> * mag_power<10, -35> * [si::metre](si.md#metre) | mag_ratio<38, 10> * mag_power<10, -40> * [si::metre](si.md#metre) | +| codata2014::planck_mass | m_P | — | mag_ratio<2'176'470, 1'000'000> * mag_power<10, -8> * [si::kilogram](si.md#kilogram) | mag_ratio<51, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) | +| codata2014::planck_temperature | T_P | — | mag_ratio<1'416'808, 1'000'000> * mag_power<10, 32> * [si::kelvin](si.md#kelvin) | mag_ratio<33, 10> * mag_power<10, 27> * [si::kelvin](si.md#kelvin) | +| codata2014::planck_time | t_P | — | mag_ratio<539'116, 100'000> * mag_power<10, -44> * [si::second](si.md#second) | mag_ratio<13, 10> * mag_power<10, -48> * [si::second](si.md#second) | +| codata2014::proton_charge_to_mass_quotient | proton_charge_to_mass_quotient | — | mag_ratio<9'578'833'226, 1'000'000'000> * mag_power<10, 7> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<59, 10> * mag_power<10, -1> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2014::proton_compton_wavelength | proton_compton_wavelength | — | mag_ratio<132'140'985'396, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<61, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2014::proton_electron_mass_ratio | proton_electron_mass_ratio | — | mag_ratio<183'615'267'389, 100'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::proton_g_factor | g_p | — | mag_ratio<5'585'694'702, 1'000'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::proton_gyromagnetic_ratio | γ_p (gamma_p) | — | mag_ratio<2'675'221'900, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<18, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2014::proton_magnetic_moment | μ_p (mu_p) | — | mag_ratio<14'106'067'873, 10'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<97, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::proton_magnetic_moment_to_bohr_magneton_ratio | proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<15'210'322'053, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::proton_magnetic_moment_to_nuclear_magneton_ratio | proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<27'928'473'508, 10'000'000'000> * [one](core.md#one) | mag_ratio<85, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::proton_magnetic_shielding_correction | proton_magnetic_shielding_correction | — | mag_ratio<25'691, 1'000> * mag_power<10, -6> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::proton_mass | m_p | — | mag_ratio<1'672'621'898, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<21, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::proton_molar_mass | proton_molar_mass | — | mag_ratio<1'007'276'466'879, 1'000'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<91, 10> * mag_power<10, -14> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::proton_muon_mass_ratio | proton_muon_mass_ratio | — | mag_ratio<888'024'338, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::proton_neutron_magnetic_moment_ratio | proton_neutron_magnetic_moment_ratio | — | -mag_ratio<145'989'805, 100'000'000> * [one](core.md#one) | mag_ratio<34, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::proton_neutron_mass_ratio | proton_neutron_mass_ratio | — | mag_ratio<99'862'347'844, 100'000'000'000> * [one](core.md#one) | mag_ratio<51, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::proton_rms_charge_radius | r_p | — | mag_ratio<8'751, 10'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<61, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2014::proton_tau_mass_ratio | proton_tau_mass_ratio | — | mag_ratio<528'063, 1'000'000> * [one](core.md#one) | mag_ratio<48, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2014::quantum_of_circulation | quantum_of_circulation | — | mag_ratio<36'369'475'486, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<17, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2014::quantum_of_circulation_times_2 | quantum_of_circulation_times_2 | — | mag_ratio<72'738'950'972, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<33, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2014::reduced_planck_constant | ℏ (hbar) | — | mag_ratio<1'054'571'800, 1'000'000'000> * mag_power<10, -34> * [si::joule](si.md#joule) * [si::second](si.md#second) | mag_ratio<13, 10> * mag_power<10, -42> * [si::joule](si.md#joule) * [si::second](si.md#second) | +| codata2014::rydberg_constant | R_∞ (R_inf) | — | mag_ratio<10'973'731'568'508, 1'000'000> * [one](core.md#one) / [si::metre](si.md#metre) | mag_ratio<65, 10> * mag_power<10, -5> * [one](core.md#one) / [si::metre](si.md#metre) | +| codata2014::sackur_tetrode_constant_100_kpa | sackur_tetrode_constant_100_kpa | — | -mag_ratio<11'517'084, 10'000'000> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::sackur_tetrode_constant_101_325_kpa | sackur_tetrode_constant_101_325_kpa | — | -mag_ratio<11'648'714, 10'000'000> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2014::second_radiation_constant | c_2 | — | mag_ratio<143'877'736, 100'000'000> * mag_power<10, -2> * [si::metre](si.md#metre) * [si::kelvin](si.md#kelvin) | mag_ratio<83, 10> * mag_power<10, -9> * [si::metre](si.md#metre) * [si::kelvin](si.md#kelvin) | +| codata2014::shielded_helion_gyromagnetic_ratio | shielded_helion_gyromagnetic_ratio | — | mag_ratio<2'037'894'585, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<27, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2014::shielded_helion_magnetic_moment | shielded_helion_magnetic_moment | — | -mag_ratio<1'074'553'080, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<14, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::shielded_helion_magnetic_moment_to_bohr_magneton_ratio | shielded_helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<1'158'671'471, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2014::shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<2'127'497'720, 1'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::shielded_helion_to_proton_magnetic_moment_ratio | shielded_helion_to_proton_magnetic_moment_ratio | — | -mag_ratio<7'617'665'603, 10'000'000'000> * [one](core.md#one) | mag_ratio<92, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::shielded_helion_to_shielded_proton_magnetic_moment_ratio | shielded_helion_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<7'617'861'313, 10'000'000'000> * [one](core.md#one) | mag_ratio<33, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2014::shielded_proton_gyromagnetic_ratio | shielded_proton_gyromagnetic_ratio | — | mag_ratio<2'675'153'171, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<33, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2014::shielded_proton_magnetic_moment | shielded_proton_magnetic_moment | — | mag_ratio<1'410'570'547, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<18, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::shielded_proton_magnetic_moment_to_bohr_magneton_ratio | shielded_proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<1'520'993'128, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2014::shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<2'792'775'600, 1'000'000'000> * [one](core.md#one) | mag_ratio<30, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::stefan_boltzmann_constant | σ (sigma) | — | mag_ratio<5'670'367, 1'000'000> * mag_power<10, -8> * [si::watt](si.md#watt) / square([si::metre](si.md#metre)) / pow<4>([si::kelvin](si.md#kelvin)) | mag_ratio<13, 10> * mag_power<10, -13> * [si::watt](si.md#watt) / square([si::metre](si.md#metre)) / pow<4>([si::kelvin](si.md#kelvin)) | +| codata2014::tau_compton_wavelength | tau_compton_wavelength | — | mag_ratio<697'787, 1'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<63, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2014::tau_electron_mass_ratio | tau_electron_mass_ratio | — | mag_ratio<347'715, 100> * [one](core.md#one) | mag_ratio<31, 10> * mag_power<10, -1> * [one](core.md#one) | +| codata2014::tau_mass | m_τ (m_tau) | — | mag_ratio<316'747, 100'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<29, 10> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | +| codata2014::tau_molar_mass | tau_molar_mass | — | mag_ratio<190'749, 100'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<17, 10> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::tau_muon_mass_ratio | tau_muon_mass_ratio | — | mag_ratio<168'167, 10'000> * [one](core.md#one) | mag_ratio<15, 10> * mag_power<10, -3> * [one](core.md#one) | +| codata2014::tau_neutron_mass_ratio | tau_neutron_mass_ratio | — | mag_ratio<189'111, 100'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2014::tau_proton_mass_ratio | tau_proton_mass_ratio | — | mag_ratio<189'372, 100'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2014::thomson_cross_section | σ_e (sigma_e) | — | mag_ratio<66'524'587'158, 100'000'000'000> * mag_power<10, -28> * square([si::metre](si.md#metre)) | mag_ratio<91, 10> * mag_power<10, -38> * square([si::metre](si.md#metre)) | +| codata2014::triton_electron_mass_ratio | triton_electron_mass_ratio | — | mag_ratio<549'692'153'588, 100'000'000> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2014::triton_g_factor | g_t | — | mag_ratio<5'957'924'920, 1'000'000'000> * [one](core.md#one) | mag_ratio<28, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::triton_magnetic_moment | μ_t (mu_t) | — | mag_ratio<1'504'609'503, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<12, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2014::triton_magnetic_moment_to_bohr_magneton_ratio | triton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<16'223'936'616, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<76, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::triton_magnetic_moment_to_nuclear_magneton_ratio | triton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<2'978'962'460, 1'000'000'000> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2014::triton_mass | m_t | — | mag_ratio<5'007'356'665, 1'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<62, 10> * mag_power<10, -35> * [si::kilogram](si.md#kilogram) | +| codata2014::triton_molar_mass | triton_molar_mass | — | mag_ratio<301'550'071'632, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<11, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2014::triton_proton_mass_ratio | triton_proton_mass_ratio | — | mag_ratio<299'371'703'348, 100'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2014::unified_atomic_mass_unit | m_u | — | alias to [codata::codata2022::atomic_mass_constant](#codata2022-atomic_mass_constant) | mag_ratio<52, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2014::vacuum_electric_permittivity | ε₀ (eps_0) | — | [one](core.md#one) / [magnetic_constant](#codata2022-magnetic_constant) / square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2014::von_klitzing_constant | R_K | — | mag_ratio<258'128'074'555, 10'000'000> * [si::ohm](si.md#ohm) | mag_ratio<59, 10> * mag_power<10, -6> * [si::ohm](si.md#ohm) | +| codata2014::weak_mixing_angle | weak_mixing_angle | — | mag_ratio<2'223, 10'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -3> * [one](core.md#one) | +| codata2014::wien_frequency_displacement_law_constant | b′ (b_prime) | — | mag_ratio<58'789'238, 10'000'000> * mag_power<10, 10> * [si::hertz](si.md#hertz) / [si::kelvin](si.md#kelvin) | mag_ratio<34, 10> * mag_power<10, 4> * [si::hertz](si.md#hertz) / [si::kelvin](si.md#kelvin) | +| codata2014::wien_wavelength_displacement_law_constant | b | — | mag_ratio<28'977'729, 10'000'000> * mag_power<10, -3> * [si::metre](si.md#metre) * [si::kelvin](si.md#kelvin) | mag_ratio<17, 10> * mag_power<10, -9> * [si::metre](si.md#metre) * [si::kelvin](si.md#kelvin) | +| codata2018::alpha_particle_electron_mass_ratio | alpha_particle_electron_mass_ratio | — | mag_ratio<729'429'954'142, 100'000'000> * [one](core.md#one) | mag_ratio<24, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::alpha_particle_mass | m_α (m_alpha) | — | mag_ratio<66'446'573'357, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<20, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2018::alpha_particle_molar_mass | alpha_particle_molar_mass | — | mag_ratio<40'015'061'777, 10'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<12, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::alpha_particle_proton_mass_ratio | alpha_particle_proton_mass_ratio | — | mag_ratio<397'259'969'009, 100'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::alpha_particle_relative_atomic_mass | alpha_particle_relative_atomic_mass | — | mag_ratio<4'001'506'179'127, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<63, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::angstrom_star | angstrom_star | — | mag_ratio<100'001'495, 100'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<90, 10> * mag_power<10, -17> * [si::metre](si.md#metre) | +| codata2018::atomic_mass_constant | m_u | — | mag_ratio<166'053'906'660, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<50, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2018::atomic_unit_of_1st_hyperpolarizability | atomic_unit_of_1st_hyperpolarizability | — | mag_ratio<32'063'613'061, 10'000'000'000> * mag_power<10, -53> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | mag_ratio<15, 10> * mag_power<10, -62> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | +| codata2018::atomic_unit_of_2nd_hyperpolarizability | atomic_unit_of_2nd_hyperpolarizability | — | mag_ratio<62'353'799'905, 10'000'000'000> * mag_power<10, -65> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | mag_ratio<38, 10> * mag_power<10, -74> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | +| codata2018::atomic_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2018::atomic_unit_of_charge | e | — | alias to [elementary_charge](#si2019-elementary_charge) | — | +| codata2018::atomic_unit_of_charge_density | atomic_unit_of_charge_density | — | mag_ratio<108'120'238'457, 100'000'000'000> * mag_power<10, 12> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | mag_ratio<49, 10> * mag_power<10, 2> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | +| codata2018::atomic_unit_of_current | atomic_unit_of_current | — | mag_ratio<6'623'618'237'510, 1'000'000'000'000> * mag_power<10, -3> * [si::ampere](si.md#ampere) | mag_ratio<13, 10> * mag_power<10, -14> * [si::ampere](si.md#ampere) | +| codata2018::atomic_unit_of_electric_dipole_moment | atomic_unit_of_electric_dipole_moment | — | mag_ratio<84'783'536'255, 10'000'000'000> * mag_power<10, -30> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | mag_ratio<13, 10> * mag_power<10, -39> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | +| codata2018::atomic_unit_of_electric_field | atomic_unit_of_electric_field | — | mag_ratio<514'220'674'763, 100'000'000'000> * mag_power<10, 11> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | mag_ratio<78, 10> * mag_power<10, 1> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | +| codata2018::atomic_unit_of_electric_field_gradient | atomic_unit_of_electric_field_gradient | — | mag_ratio<97'173'624'292, 10'000'000'000> * mag_power<10, 21> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | mag_ratio<29, 10> * mag_power<10, 12> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | +| codata2018::atomic_unit_of_electric_polarizability | atomic_unit_of_electric_polarizability | — | mag_ratio<164'877'727'436, 100'000'000'000> * mag_power<10, -41> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | mag_ratio<50, 10> * mag_power<10, -51> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | +| codata2018::atomic_unit_of_electric_potential | atomic_unit_of_electric_potential | — | mag_ratio<27'211'386'245'988, 1'000'000'000'000> * [si::volt](si.md#volt) | mag_ratio<53, 10> * mag_power<10, -11> * [si::volt](si.md#volt) | +| codata2018::atomic_unit_of_electric_quadrupole_moment | atomic_unit_of_electric_quadrupole_moment | — | mag_ratio<44'865'515'246, 10'000'000'000> * mag_power<10, -40> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | mag_ratio<14, 10> * mag_power<10, -49> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | +| codata2018::atomic_unit_of_energy | E_h | — | alias to [codata::codata2022::hartree_energy](#codata2022-hartree_energy) | mag_ratio<48, 10> * mag_power<10, -30> * [si::joule](si.md#joule) | +| codata2018::atomic_unit_of_force | atomic_unit_of_force | — | mag_ratio<82'387'234'983, 10'000'000'000> * mag_power<10, -8> * [si::newton](si.md#newton) | mag_ratio<12, 10> * mag_power<10, -17> * [si::newton](si.md#newton) | +| codata2018::atomic_unit_of_length | a_0 | — | alias to [codata::codata2022::bohr_radius](#codata2022-bohr_radius) | mag_ratio<82, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2018::atomic_unit_of_magnetic_dipole_moment | atomic_unit_of_magnetic_dipole_moment | — | mag_ratio<185'480'201'566, 100'000'000'000> * mag_power<10, -23> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<56, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::atomic_unit_of_magnetic_flux_density | atomic_unit_of_magnetic_flux_density | — | mag_ratio<235'051'756'758, 100'000'000'000> * mag_power<10, 5> * [si::tesla](si.md#tesla) | mag_ratio<71, 10> * mag_power<10, -5> * [si::tesla](si.md#tesla) | +| codata2018::atomic_unit_of_magnetizability | atomic_unit_of_magnetizability | — | mag_ratio<78'910'366'008, 10'000'000'000> * mag_power<10, -29> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | mag_ratio<48, 10> * mag_power<10, -38> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | +| codata2018::atomic_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2018::atomic_unit_of_momentum | atomic_unit_of_momentum | — | mag_ratio<199'285'191'410, 100'000'000'000> * mag_power<10, -24> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<30, 10> * mag_power<10, -34> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2018::atomic_unit_of_permittivity | atomic_unit_of_permittivity | — | mag_ratio<111'265'005'545, 100'000'000'000> * mag_power<10, -10> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | mag_ratio<17, 10> * mag_power<10, -20> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | +| codata2018::atomic_unit_of_time | atomic_unit_of_time | — | mag_ratio<24'188'843'265'857, 10'000'000'000'000> * mag_power<10, -17> * [si::second](si.md#second) | mag_ratio<47, 10> * mag_power<10, -29> * [si::second](si.md#second) | +| codata2018::atomic_unit_of_velocity | atomic_unit_of_velocity | — | mag_ratio<218'769'126'364, 100'000'000'000> * mag_power<10, 6> * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<33, 10> * mag_power<10, -4> * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2018::bohr_magneton | μ_B (mu_B) | — | mag_ratio<92'740'100'783, 10'000'000'000> * mag_power<10, -24> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<28, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::bohr_radius | a_0 | — | mag_ratio<529'177'210'903, 100'000'000'000> * mag_power<10, -11> * [si::metre](si.md#metre) | mag_ratio<80, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2018::characteristic_impedance_of_vacuum | Z_0 | — | mag_ratio<376'730'313'668, 1'000'000'000> * [si::ohm](si.md#ohm) | mag_ratio<57, 10> * mag_power<10, -8> * [si::ohm](si.md#ohm) | +| codata2018::classical_electron_radius | r_e | — | mag_ratio<28'179'403'262, 10'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<13, 10> * mag_power<10, -24> * [si::metre](si.md#metre) | +| codata2018::conductance_quantum | G_0 | — | mag<2> * square([elementary_charge](#si2019-elementary_charge)) / [planck_constant](#si2019-planck_constant) | — | +| codata2018::conventional_value_of_ampere_90 | conventional_value_of_ampere_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::ampere](si.md#ampere) | — | +| codata2018::conventional_value_of_coulomb_90 | conventional_value_of_coulomb_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::coulomb](si.md#coulomb) | — | +| codata2018::conventional_value_of_farad_90 | conventional_value_of_farad_90 | — | [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::farad](si.md#farad) | — | +| codata2018::conventional_value_of_henry_90 | conventional_value_of_henry_90 | — | [von_klitzing_constant](#codata2022-von_klitzing_constant) / [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) * [si::henry](si.md#henry) | — | +| codata2018::conventional_value_of_ohm_90 | conventional_value_of_ohm_90 | — | [von_klitzing_constant](#codata2022-von_klitzing_constant) / [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) * [si::ohm](si.md#ohm) | — | +| codata2018::conventional_value_of_volt_90 | conventional_value_of_volt_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [si::volt](si.md#volt) | — | +| codata2018::conventional_value_of_watt_90 | conventional_value_of_watt_90 | — | square([conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant)) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::watt](si.md#watt) | — | +| codata2018::copper_x_unit | copper_x_unit | — | mag_ratio<100'207'697, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<28, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2018::deuteron_electron_magnetic_moment_ratio | deuteron_electron_magnetic_moment_ratio | — | -mag_ratio<4'664'345'551, 1'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2018::deuteron_electron_mass_ratio | deuteron_electron_mass_ratio | — | mag_ratio<367'048'296'788, 100'000'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::deuteron_g_factor | g_d | — | mag_ratio<8'574'382'338, 10'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::deuteron_magnetic_moment | μ_d (mu_d) | — | mag_ratio<4'330'735'094, 1'000'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::deuteron_magnetic_moment_to_bohr_magneton_ratio | deuteron_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<4'669'754'570, 1'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2018::deuteron_magnetic_moment_to_nuclear_magneton_ratio | deuteron_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<8'574'382'338, 10'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::deuteron_mass | m_d | — | mag_ratio<33'435'837'724, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<10, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2018::deuteron_molar_mass | deuteron_molar_mass | — | mag_ratio<201'355'321'205, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<61, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::deuteron_neutron_magnetic_moment_ratio | deuteron_neutron_magnetic_moment_ratio | — | -mag_ratio<44'820'653, 100'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::deuteron_proton_magnetic_moment_ratio | deuteron_proton_magnetic_moment_ratio | — | mag_ratio<30'701'220'939, 100'000'000'000> * [one](core.md#one) | mag_ratio<79, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::deuteron_proton_mass_ratio | deuteron_proton_mass_ratio | — | mag_ratio<199'900'750'139, 100'000'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::deuteron_relative_atomic_mass | deuteron_relative_atomic_mass | — | mag_ratio<2'013'553'212'745, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::deuteron_rms_charge_radius | r_d | — | mag_ratio<212'799, 100'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<74, 10> * mag_power<10, -19> * [si::metre](si.md#metre) | +| codata2018::electron_charge_to_mass_quotient | electron_charge_to_mass_quotient | — | -mag_ratio<175'882'001'076, 100'000'000'000> * mag_power<10, 11> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<53, 10> * mag_power<10, 1> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2018::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<242'631'023'867, 100'000'000'000> * mag_power<10, -12> * [si::metre](si.md#metre) | mag_ratio<73, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2018::electron_deuteron_magnetic_moment_ratio | electron_deuteron_magnetic_moment_ratio | — | -mag_ratio<21'439'234'915, 10'000'000> * [one](core.md#one) | mag_ratio<56, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2018::electron_deuteron_mass_ratio | electron_deuteron_mass_ratio | — | mag_ratio<2'724'437'107'462, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<96, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2018::electron_g_factor | g_e | — | -mag_ratio<200'231'930'436'256, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<35, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2018::electron_gyromagnetic_ratio | γ_e (gamma_e) | — | mag_ratio<176'085'963'023, 100'000'000'000> * mag_power<10, 11> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<53, 10> * mag_power<10, 1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2018::electron_helion_mass_ratio | electron_helion_mass_ratio | — | mag_ratio<1'819'543'074'573, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<79, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2018::electron_magnetic_moment | μ_e (mu_e) | — | -mag_ratio<92'847'647'043, 10'000'000'000> * mag_power<10, -24> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<28, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::electron_magnetic_moment_anomaly | electron_magnetic_moment_anomaly | — | mag_ratio<115'965'218'128, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<18, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2018::electron_magnetic_moment_to_bohr_magneton_ratio | electron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<100'115'965'218'128, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<18, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2018::electron_magnetic_moment_to_nuclear_magneton_ratio | electron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<183'828'197'188, 100'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::electron_mass | m_e | — | mag_ratio<91'093'837'015, 10'000'000'000> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2018::electron_molar_mass | electron_molar_mass | — | mag_ratio<54'857'990'888, 10'000'000'000> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<17, 10> * mag_power<10, -16> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::electron_muon_magnetic_moment_ratio | electron_muon_magnetic_moment_ratio | — | mag_ratio<2'067'669'883, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2018::electron_muon_mass_ratio | electron_muon_mass_ratio | — | mag_ratio<483'633'169, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::electron_neutron_magnetic_moment_ratio | electron_neutron_magnetic_moment_ratio | — | mag_ratio<96'092'050, 100'000> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2018::electron_neutron_mass_ratio | electron_neutron_mass_ratio | — | mag_ratio<54'386'734'424, 10'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<26, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2018::electron_proton_magnetic_moment_ratio | electron_proton_magnetic_moment_ratio | — | -mag_ratio<65'821'068'789, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::electron_proton_mass_ratio | electron_proton_mass_ratio | — | mag_ratio<544'617'021'487, 100'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<33, 10> * mag_power<10, -14> * [one](core.md#one) | +| codata2018::electron_relative_atomic_mass | electron_relative_atomic_mass | — | mag_ratio<548'579'909'065, 100'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -14> * [one](core.md#one) | +| codata2018::electron_tau_mass_ratio | electron_tau_mass_ratio | — | mag_ratio<287'585, 100'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<19, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::electron_to_alpha_particle_mass_ratio | electron_to_alpha_particle_mass_ratio | — | mag_ratio<1'370'933'554'787, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2018::electron_to_shielded_helion_magnetic_moment_ratio | electron_to_shielded_helion_magnetic_moment_ratio | — | mag_ratio<864'058'257, 1'000'000> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2018::electron_to_shielded_proton_magnetic_moment_ratio | electron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<6'582'275'971, 10'000'000> * [one](core.md#one) | mag_ratio<72, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2018::electron_triton_mass_ratio | electron_triton_mass_ratio | — | mag_ratio<1'819'200'062'251, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<90, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2018::elementary_charge_over_h_bar | elementary_charge_over_h_bar | — | [elementary_charge](#si2019-elementary_charge) / [reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2018::faraday_constant | F | — | [avogadro_constant](#si2019-avogadro_constant) * [elementary_charge](#si2019-elementary_charge) | — | +| codata2018::fermi_coupling_constant | fermi_coupling_constant | — | mag_ratio<11'663'787, 10'000'000> * mag_power<10, -5> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | mag<6> * mag_power<10, -12> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | +| codata2018::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'693, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2018::first_radiation_constant | c_1 | — | mag<2> * [π](core.md#π) * [planck_constant](#si2019-planck_constant) * square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2018::first_radiation_constant_for_spectral_radiance | c_1L | — | mag<2> * [planck_constant](#si2019-planck_constant) * square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) / [si::steradian](si.md#steradian) | — | +| codata2018::hartree_energy | E_h | — | mag_ratio<43'597'447'222'071, 10'000'000'000'000> * mag_power<10, -18> * [si::joule](si.md#joule) | mag_ratio<85, 10> * mag_power<10, -30> * [si::joule](si.md#joule) | +| codata2018::helion_electron_mass_ratio | helion_electron_mass_ratio | — | mag_ratio<549'588'528'007, 100'000'000> * [one](core.md#one) | mag_ratio<24, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::helion_g_factor | g_h | — | -mag_ratio<4'255'250'615, 1'000'000'000> * [one](core.md#one) | mag_ratio<50, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::helion_magnetic_moment | helion_magnetic_moment | — | -mag_ratio<1'074'617'532, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<13, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::helion_magnetic_moment_to_bohr_magneton_ratio | helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<1'158'740'958, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::helion_magnetic_moment_to_nuclear_magneton_ratio | helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<2'127'625'307, 1'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::helion_mass | m_h | — | mag_ratio<50'064'127'796, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<15, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2018::helion_molar_mass | helion_molar_mass | — | mag_ratio<301'493'224'613, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<91, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::helion_proton_mass_ratio | helion_proton_mass_ratio | — | mag_ratio<299'315'267'167, 100'000'000'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::helion_relative_atomic_mass | helion_relative_atomic_mass | — | mag_ratio<3'014'932'247'175, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<97, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::helion_shielding_shift | helion_shielding_shift | — | mag_ratio<5'996'743, 1'000'000> * mag_power<10, -5> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::inverse_fine_structure_constant | inverse_fine_structure_constant | — | mag_ratio<137'035'999'084, 1'000'000'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::inverse_of_conductance_quantum | inverse_of_conductance_quantum | — | [planck_constant](#si2019-planck_constant) / (mag<2> * square([elementary_charge](#si2019-elementary_charge))) | — | +| codata2018::josephson_constant | K_J | — | mag<2> * [elementary_charge](#si2019-elementary_charge) / [planck_constant](#si2019-planck_constant) | — | +| codata2018::lattice_parameter_of_silicon | lattice_parameter_of_silicon | — | mag_ratio<5'431'020'511, 1'000'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<89, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2018::lattice_spacing_of_silicon_220 | lattice_spacing_of_silicon_220 | — | mag_ratio<1'920'155'716, 1'000'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<32, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2018::loschmidt_constant_atm | loschmidt_constant_atm | — | mag_ratio<10'132'500, 27'315> * [si::pascal](si.md#pascal) / [boltzmann_constant](#si2019-boltzmann_constant) / [si::kelvin](si.md#kelvin) | — | +| codata2018::loschmidt_constant_stp | n_0 | — | mag_ratio<10'000'000, 27'315> * [si::pascal](si.md#pascal) / [boltzmann_constant](#si2019-boltzmann_constant) / [si::kelvin](si.md#kelvin) | — | +| codata2018::magnetic_constant | μ₀ (u_0) | — | mag_ratio<125'663'706'212, 100'000'000'000> * mag_power<10, -6> * [si::newton](si.md#newton) / square([si::ampere](si.md#ampere)) | mag_ratio<19, 10> * mag_power<10, -16> * [si::newton](si.md#newton) / square([si::ampere](si.md#ampere)) | +| codata2018::magnetic_flux_quantum | Φ₀ (Phi_0) | — | [planck_constant](#si2019-planck_constant) / (mag<2> * [elementary_charge](#si2019-elementary_charge)) | — | +| codata2018::molar_gas_constant | R | — | [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) | — | +| codata2018::molar_mass_constant | M_u | — | mag_ratio<99'999'999'965, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<30, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::molar_mass_of_carbon_12 | molar_mass_of_carbon_12 | — | mag_ratio<119'999'999'958, 10'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<36, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::molar_planck_constant | N_Ah | — | [avogadro_constant](#si2019-avogadro_constant) * [planck_constant](#si2019-planck_constant) | — | +| codata2018::molar_volume_of_ideal_gas_atm | molar_volume_of_ideal_gas_atm | — | mag_ratio<27'315, 10'132'500> * [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) * [si::kelvin](si.md#kelvin) / [si::pascal](si.md#pascal) | — | +| codata2018::molar_volume_of_ideal_gas_stp | molar_volume_of_ideal_gas_stp | — | mag_ratio<27'315, 10'000'000> * [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) * [si::kelvin](si.md#kelvin) / [si::pascal](si.md#pascal) | — | +| codata2018::molar_volume_of_silicon | molar_volume_of_silicon | — | mag_ratio<1'205'883'199, 1'000'000'000> * mag_power<10, -5> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | mag_ratio<60, 10> * mag_power<10, -13> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | +| codata2018::molybdenum_x_unit | molybdenum_x_unit | — | mag_ratio<100'209'952, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<53, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2018::muon_compton_wavelength | muon_compton_wavelength | — | mag_ratio<1'173'444'110, 1'000'000'000> * mag_power<10, -14> * [si::metre](si.md#metre) | mag_ratio<26, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2018::muon_electron_mass_ratio | muon_electron_mass_ratio | — | mag_ratio<2'067'682'830, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2018::muon_g_factor | g_μ (g_mu) | — | -mag_ratio<20'023'318'418, 10'000'000'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::muon_magnetic_moment | μ_μ (mu_mu) | — | -mag_ratio<449'044'830, 100'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<10, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::muon_magnetic_moment_anomaly | muon_magnetic_moment_anomaly | — | mag_ratio<116'592'089, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<63, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::muon_magnetic_moment_to_bohr_magneton_ratio | muon_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<484'197'047, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::muon_magnetic_moment_to_nuclear_magneton_ratio | muon_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<889'059'703, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::muon_mass | m_μ (m_mu) | — | mag_ratio<1'883'531'627, 1'000'000'000> * mag_power<10, -28> * [si::kilogram](si.md#kilogram) | mag_ratio<42, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2018::muon_molar_mass | muon_molar_mass | — | mag_ratio<1'134'289'259, 1'000'000'000> * mag_power<10, -4> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<25, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::muon_neutron_mass_ratio | muon_neutron_mass_ratio | — | mag_ratio<1'124'545'170, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::muon_proton_magnetic_moment_ratio | muon_proton_magnetic_moment_ratio | — | -mag_ratio<3'183'345'142, 1'000'000'000> * [one](core.md#one) | mag_ratio<71, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::muon_proton_mass_ratio | muon_proton_mass_ratio | — | mag_ratio<1'126'095'264, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::muon_tau_mass_ratio | muon_tau_mass_ratio | — | mag_ratio<594'635, 100'000> * mag_power<10, -2> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2018::natural_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2018::natural_unit_of_energy | natural_unit_of_energy | — | mag_ratio<81'871'057'769, 10'000'000'000> * mag_power<10, -14> * [si::joule](si.md#joule) | mag_ratio<25, 10> * mag_power<10, -23> * [si::joule](si.md#joule) | +| codata2018::natural_unit_of_length | ƛ_C (lambdabar_C) | — | alias to [codata::codata2018::reduced_electron_compton_wavelength](#codata2022-reduced_electron_compton_wavelength) | mag_ratio<12, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2018::natural_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2018::natural_unit_of_momentum | natural_unit_of_momentum | — | mag_ratio<273'092'453'075, 100'000'000'000> * mag_power<10, -22> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<82, 10> * mag_power<10, -32> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2018::natural_unit_of_time | natural_unit_of_time | — | mag_ratio<128'808'866'819, 100'000'000'000> * mag_power<10, -21> * [si::second](si.md#second) | mag_ratio<39, 10> * mag_power<10, -31> * [si::second](si.md#second) | +| codata2018::natural_unit_of_velocity | c | — | alias to [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | — | +| codata2018::neutron_compton_wavelength | neutron_compton_wavelength | — | mag_ratio<131'959'090'581, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<75, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2018::neutron_electron_magnetic_moment_ratio | neutron_electron_magnetic_moment_ratio | — | mag_ratio<104'066'882, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::neutron_electron_mass_ratio | neutron_electron_mass_ratio | — | mag_ratio<183'868'366'173, 100'000'000> * [one](core.md#one) | mag_ratio<89, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::neutron_g_factor | g_n | — | -mag_ratio<382'608'545, 100'000'000> * [one](core.md#one) | mag_ratio<90, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::neutron_gyromagnetic_ratio | γ_n (gamma_n) | — | mag_ratio<183'247'171, 100'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<43, 10> * mag_power<10, 1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2018::neutron_magnetic_moment | μ_n (mu_n) | — | -mag_ratio<96'623'651, 10'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<23, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::neutron_magnetic_moment_to_bohr_magneton_ratio | neutron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<104'187'563, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::neutron_magnetic_moment_to_nuclear_magneton_ratio | neutron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<191'304'273, 100'000'000> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::neutron_mass | m_n | — | mag_ratio<167'492'749'804, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<95, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2018::neutron_molar_mass | neutron_molar_mass | — | mag_ratio<100'866'491'560, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<57, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::neutron_muon_mass_ratio | neutron_muon_mass_ratio | — | mag_ratio<889'248'406, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::neutron_proton_magnetic_moment_ratio | neutron_proton_magnetic_moment_ratio | — | -mag_ratio<68'497'934, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::neutron_proton_mass_difference | neutron_proton_mass_difference | — | mag_ratio<230'557'435, 100'000'000> * mag_power<10, -30> * [si::kilogram](si.md#kilogram) | mag_ratio<82, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2018::neutron_proton_mass_ratio | neutron_proton_mass_ratio | — | mag_ratio<100'137'841'931, 100'000'000'000> * [one](core.md#one) | mag_ratio<49, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::neutron_relative_atomic_mass | neutron_relative_atomic_mass | — | mag_ratio<100'866'491'595, 100'000'000'000> * [one](core.md#one) | mag_ratio<49, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::neutron_tau_mass_ratio | neutron_tau_mass_ratio | — | mag_ratio<528'779, 1'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2018::neutron_to_shielded_proton_magnetic_moment_ratio | neutron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<68'499'694, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::newtonian_constant_of_gravitation | G | — | mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | mag_ratio<15, 10> * mag_power<10, -15> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | +| codata2018::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<50'507'837'461, 10'000'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<15, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::planck_length | l_P | — | mag_ratio<1'616'255, 1'000'000> * mag_power<10, -35> * [si::metre](si.md#metre) | mag_ratio<18, 10> * mag_power<10, -40> * [si::metre](si.md#metre) | +| codata2018::planck_mass | m_P | — | mag_ratio<2'176'434, 1'000'000> * mag_power<10, -8> * [si::kilogram](si.md#kilogram) | mag_ratio<24, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) | +| codata2018::planck_temperature | T_P | — | mag_ratio<1'416'784, 1'000'000> * mag_power<10, 32> * [si::kelvin](si.md#kelvin) | mag_ratio<16, 10> * mag_power<10, 27> * [si::kelvin](si.md#kelvin) | +| codata2018::planck_time | t_P | — | mag_ratio<5'391'247, 1'000'000> * mag_power<10, -44> * [si::second](si.md#second) | mag_ratio<60, 10> * mag_power<10, -49> * [si::second](si.md#second) | +| codata2018::proton_charge_to_mass_quotient | proton_charge_to_mass_quotient | — | mag_ratio<95'788'331'560, 10'000'000'000> * mag_power<10, 7> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<29, 10> * mag_power<10, -2> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2018::proton_compton_wavelength | proton_compton_wavelength | — | mag_ratio<132'140'985'539, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<40, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2018::proton_electron_mass_ratio | proton_electron_mass_ratio | — | mag_ratio<183'615'267'343, 100'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::proton_g_factor | g_p | — | mag_ratio<55'856'946'893, 10'000'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::proton_gyromagnetic_ratio | γ_p (gamma_p) | — | mag_ratio<26'752'218'744, 10'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, -1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2018::proton_magnetic_moment | μ_p (mu_p) | — | mag_ratio<141'060'679'736, 100'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<60, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::proton_magnetic_moment_to_bohr_magneton_ratio | proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<152'103'220'230, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2018::proton_magnetic_moment_to_nuclear_magneton_ratio | proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<279'284'734'463, 100'000'000'000> * [one](core.md#one) | mag_ratio<82, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::proton_magnetic_shielding_correction | proton_magnetic_shielding_correction | — | mag_ratio<25'689, 10'000> * mag_power<10, -5> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::proton_mass | m_p | — | mag_ratio<167'262'192'369, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<51, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2018::proton_molar_mass | proton_molar_mass | — | mag_ratio<100'727'646'627, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<31, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::proton_muon_mass_ratio | proton_muon_mass_ratio | — | mag_ratio<888'024'337, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::proton_neutron_magnetic_moment_ratio | proton_neutron_magnetic_moment_ratio | — | -mag_ratio<145'989'805, 100'000'000> * [one](core.md#one) | mag_ratio<34, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::proton_neutron_mass_ratio | proton_neutron_mass_ratio | — | mag_ratio<99'862'347'812, 100'000'000'000> * [one](core.md#one) | mag_ratio<49, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::proton_relative_atomic_mass | proton_relative_atomic_mass | — | mag_ratio<1'007'276'466'621, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<53, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::proton_rms_charge_radius | r_p | — | mag_ratio<8'414, 1'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<19, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2018::proton_tau_mass_ratio | proton_tau_mass_ratio | — | mag_ratio<528'051, 1'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2018::quantum_of_circulation | quantum_of_circulation | — | mag_ratio<36'369'475'516, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<11, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2018::quantum_of_circulation_times_2 | quantum_of_circulation_times_2 | — | mag_ratio<72'738'951'032, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<22, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2018::reduced_electron_compton_wavelength | ƛ_C (lambdabar_C) | — | mag_ratio<38'615'926'796, 10'000'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<12, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2018::reduced_muon_compton_wavelength | reduced_muon_compton_wavelength | — | mag_ratio<1'867'594'306, 1'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<42, 10> * mag_power<10, -23> * [si::metre](si.md#metre) | +| codata2018::reduced_neutron_compton_wavelength | reduced_neutron_compton_wavelength | — | mag_ratio<21'001'941'552, 10'000'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<12, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2018::reduced_planck_constant | ℏ (hbar) | — | [planck_constant](#si2019-planck_constant) / (mag<2> * [π](core.md#π)) | — | +| codata2018::reduced_proton_compton_wavelength | reduced_proton_compton_wavelength | — | mag_ratio<210'308'910'336, 100'000'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<64, 10> * mag_power<10, -26> * [si::metre](si.md#metre) | +| codata2018::reduced_tau_compton_wavelength | reduced_tau_compton_wavelength | — | mag_ratio<1'110'538, 1'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<75, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2018::rydberg_constant | R_∞ (R_inf) | — | mag_ratio<10'973'731'568'160, 1'000'000> * [one](core.md#one) / [si::metre](si.md#metre) | mag_ratio<21, 10> * mag_power<10, -5> * [one](core.md#one) / [si::metre](si.md#metre) | +| codata2018::sackur_tetrode_constant_100_kpa | sackur_tetrode_constant_100_kpa | — | -mag_ratio<115'170'753'706, 100'000'000'000> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::sackur_tetrode_constant_101_325_kpa | sackur_tetrode_constant_101_325_kpa | — | -mag_ratio<116'487'052'358, 100'000'000'000> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::second_radiation_constant | c_2 | — | [planck_constant](#si2019-planck_constant) * [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) / [boltzmann_constant](#si2019-boltzmann_constant) | — | +| codata2018::shielded_helion_gyromagnetic_ratio | shielded_helion_gyromagnetic_ratio | — | mag_ratio<2'037'894'569, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<24, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2018::shielded_helion_magnetic_moment | shielded_helion_magnetic_moment | — | -mag_ratio<1'074'553'090, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<13, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::shielded_helion_magnetic_moment_to_bohr_magneton_ratio | shielded_helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<1'158'671'471, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<14, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<2'127'497'719, 1'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::shielded_helion_to_proton_magnetic_moment_ratio | shielded_helion_to_proton_magnetic_moment_ratio | — | -mag_ratio<7'617'665'618, 10'000'000'000> * [one](core.md#one) | mag_ratio<89, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::shielded_helion_to_shielded_proton_magnetic_moment_ratio | shielded_helion_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<7'617'861'313, 10'000'000'000> * [one](core.md#one) | mag_ratio<33, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::shielded_proton_gyromagnetic_ratio | shielded_proton_gyromagnetic_ratio | — | mag_ratio<2'675'153'151, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<29, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2018::shielded_proton_magnetic_moment | shielded_proton_magnetic_moment | — | mag_ratio<1'410'570'560, 1'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<15, 10> * mag_power<10, -34> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::shielded_proton_magnetic_moment_to_bohr_magneton_ratio | shielded_proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<1'520'993'128, 1'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<2'792'775'599, 1'000'000'000> * [one](core.md#one) | mag_ratio<30, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::shielding_difference_of_d_and_p_in_hd | shielding_difference_of_d_and_p_in_hd | — | mag_ratio<20'200, 10'000> * mag_power<10, -8> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::shielding_difference_of_t_and_p_in_ht | shielding_difference_of_t_and_p_in_ht | — | mag_ratio<24'140, 10'000> * mag_power<10, -8> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2018::stefan_boltzmann_constant | σ (sigma) | — | mag_ratio<2, 15> * pow<5>([π](core.md#π)) * pow<4>([boltzmann_constant](#si2019-boltzmann_constant)) / cubic([planck_constant](#si2019-planck_constant)) / square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2018::tau_compton_wavelength | tau_compton_wavelength | — | mag_ratio<697'771, 100'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<47, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2018::tau_electron_mass_ratio | tau_electron_mass_ratio | — | mag_ratio<347'723, 100> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -1> * [one](core.md#one) | +| codata2018::tau_mass | m_τ (m_tau) | — | mag_ratio<316'754, 100'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<21, 10> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | +| codata2018::tau_molar_mass | tau_molar_mass | — | mag_ratio<190'754, 100'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<13, 10> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::tau_muon_mass_ratio | tau_muon_mass_ratio | — | mag_ratio<168'170, 10'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -3> * [one](core.md#one) | +| codata2018::tau_neutron_mass_ratio | tau_neutron_mass_ratio | — | mag_ratio<189'115, 100'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2018::tau_proton_mass_ratio | tau_proton_mass_ratio | — | mag_ratio<189'376, 100'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2018::thomson_cross_section | σ_e (sigma_e) | — | mag_ratio<66'524'587'321, 10'000'000'000> * mag_power<10, -29> * square([si::metre](si.md#metre)) | mag_ratio<60, 10> * mag_power<10, -38> * square([si::metre](si.md#metre)) | +| codata2018::triton_electron_mass_ratio | triton_electron_mass_ratio | — | mag_ratio<549'692'153'573, 100'000'000> * [one](core.md#one) | mag_ratio<27, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2018::triton_g_factor | g_t | — | mag_ratio<5'957'924'931, 1'000'000'000> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2018::triton_magnetic_moment | μ_t (mu_t) | — | mag_ratio<15'046'095'202, 10'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<30, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2018::triton_magnetic_moment_to_bohr_magneton_ratio | triton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<16'223'936'651, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<32, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2018::triton_magnetic_moment_to_nuclear_magneton_ratio | triton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<29'789'624'656, 10'000'000'000> * [one](core.md#one) | mag_ratio<59, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::triton_mass | m_t | — | mag_ratio<50'073'567'446, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<15, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2018::triton_molar_mass | triton_molar_mass | — | mag_ratio<301'550'071'517, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<92, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2018::triton_proton_mass_ratio | triton_proton_mass_ratio | — | mag_ratio<299'371'703'414, 100'000'000'000> * [one](core.md#one) | mag_ratio<15, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::triton_relative_atomic_mass | triton_relative_atomic_mass | — | mag_ratio<301'550'071'621, 100'000'000'000> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2018::triton_to_proton_magnetic_moment_ratio | triton_to_proton_magnetic_moment_ratio | — | mag_ratio<10'666'399'191, 10'000'000'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2018::unified_atomic_mass_unit | m_u | — | alias to [codata::codata2022::atomic_mass_constant](#codata2022-atomic_mass_constant) | mag_ratio<52, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2018::vacuum_electric_permittivity | ε₀ (eps_0) | — | mag_ratio<88'541'878'128, 10'000'000'000> * mag_power<10, -12> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | mag_ratio<13, 10> * mag_power<10, -21> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | +| codata2018::von_klitzing_constant | R_K | — | [planck_constant](#si2019-planck_constant) / square([elementary_charge](#si2019-elementary_charge)) | — | +| codata2018::w_to_z_mass_ratio | w_to_z_mass_ratio | — | mag_ratio<88'153, 100'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2018::weak_mixing_angle | weak_mixing_angle | — | mag_ratio<22'290, 100'000> * [one](core.md#one) | mag_ratio<30, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2018::wien_frequency_displacement_law_constant | b′ (b_prime) | — | [wien_x_frequency](#wien_x_frequency) * [boltzmann_constant](#si2019-boltzmann_constant) / [planck_constant](#si2019-planck_constant) | — | +| codata2018::wien_wavelength_displacement_law_constant | b | — | [second_radiation_constant](#codata2022-second_radiation_constant) / [wien_x_wavelength](#wien_x_wavelength) | — | +| codata2022::alpha_particle_electron_mass_ratio | alpha_particle_electron_mass_ratio | — | mag_ratio<729'429'954'171, 100'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::alpha_particle_mass | m_α (m_alpha) | — | mag_ratio<66'446'573'450, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<21, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2022::alpha_particle_molar_mass | alpha_particle_molar_mass | — | mag_ratio<40'015'061'833, 10'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<12, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::alpha_particle_proton_mass_ratio | alpha_particle_proton_mass_ratio | — | mag_ratio<3'972'599'690'252, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<70, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::alpha_particle_relative_atomic_mass | alpha_particle_relative_atomic_mass | — | mag_ratio<4'001'506'179'129, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<62, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::alpha_particle_rms_charge_radius | alpha_particle_rms_charge_radius | — | mag_ratio<16'785, 10'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<21, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2022::angstrom_star | angstrom_star | — | mag_ratio<100'001'495, 100'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<90, 10> * mag_power<10, -17> * [si::metre](si.md#metre) | +| codata2022::atomic_mass_constant | m_u | — | mag_ratio<166'053'906'892, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<52, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2022::atomic_unit_of_1st_hyperpolarizability | atomic_unit_of_1st_hyperpolarizability | — | mag_ratio<32'063'612'996, 10'000'000'000> * mag_power<10, -53> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | mag_ratio<15, 10> * mag_power<10, -62> * cubic([si::coulomb](si.md#coulomb)) * cubic([si::metre](si.md#metre)) / square([si::joule](si.md#joule)) | +| codata2022::atomic_unit_of_2nd_hyperpolarizability | atomic_unit_of_2nd_hyperpolarizability | — | mag_ratio<62'353'799'735, 10'000'000'000> * mag_power<10, -65> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | mag_ratio<39, 10> * mag_power<10, -74> * pow<4>([si::coulomb](si.md#coulomb)) * pow<4>([si::metre](si.md#metre)) / cubic([si::joule](si.md#joule)) | +| codata2022::atomic_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2022::atomic_unit_of_charge | e | — | alias to [elementary_charge](#si2019-elementary_charge) | — | +| codata2022::atomic_unit_of_charge_density | atomic_unit_of_charge_density | — | mag_ratio<108'120'238'677, 100'000'000'000> * mag_power<10, 12> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | mag_ratio<51, 10> * mag_power<10, 2> * [si::coulomb](si.md#coulomb) / cubic([si::metre](si.md#metre)) | +| codata2022::atomic_unit_of_current | atomic_unit_of_current | — | mag_ratio<66'236'182'375'082, 10'000'000'000'000> * mag_power<10, -3> * [si::ampere](si.md#ampere) | mag_ratio<72, 10> * mag_power<10, -15> * [si::ampere](si.md#ampere) | +| codata2022::atomic_unit_of_electric_dipole_moment | atomic_unit_of_electric_dipole_moment | — | mag_ratio<84'783'536'198, 10'000'000'000> * mag_power<10, -30> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | mag_ratio<13, 10> * mag_power<10, -39> * [si::coulomb](si.md#coulomb) * [si::metre](si.md#metre) | +| codata2022::atomic_unit_of_electric_field | atomic_unit_of_electric_field | — | mag_ratio<514'220'675'112, 100'000'000'000> * mag_power<10, 11> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | mag_ratio<80, 10> * mag_power<10, 1> * [si::volt](si.md#volt) / [si::metre](si.md#metre) | +| codata2022::atomic_unit_of_electric_field_gradient | atomic_unit_of_electric_field_gradient | — | mag_ratio<97'173'624'424, 10'000'000'000> * mag_power<10, 21> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | mag_ratio<30, 10> * mag_power<10, 12> * [si::volt](si.md#volt) / square([si::metre](si.md#metre)) | +| codata2022::atomic_unit_of_electric_polarizability | atomic_unit_of_electric_polarizability | — | mag_ratio<164'877'727'212, 100'000'000'000> * mag_power<10, -41> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | mag_ratio<51, 10> * mag_power<10, -51> * square([si::coulomb](si.md#coulomb)) * square([si::metre](si.md#metre)) / [si::joule](si.md#joule) | +| codata2022::atomic_unit_of_electric_potential | atomic_unit_of_electric_potential | — | mag_ratio<27'211'386'245'981, 1'000'000'000'000> * [si::volt](si.md#volt) | mag_ratio<30, 10> * mag_power<10, -11> * [si::volt](si.md#volt) | +| codata2022::atomic_unit_of_electric_quadrupole_moment | atomic_unit_of_electric_quadrupole_moment | — | mag_ratio<44'865'515'185, 10'000'000'000> * mag_power<10, -40> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | mag_ratio<14, 10> * mag_power<10, -49> * [si::coulomb](si.md#coulomb) * square([si::metre](si.md#metre)) | +| codata2022::atomic_unit_of_energy | E_h | — | alias to [codata::codata2022::hartree_energy](#codata2022-hartree_energy) | mag_ratio<48, 10> * mag_power<10, -30> * [si::joule](si.md#joule) | +| codata2022::atomic_unit_of_force | atomic_unit_of_force | — | mag_ratio<82'387'235'038, 10'000'000'000> * mag_power<10, -8> * [si::newton](si.md#newton) | mag_ratio<13, 10> * mag_power<10, -17> * [si::newton](si.md#newton) | +| codata2022::atomic_unit_of_length | a_0 | — | alias to [codata::codata2022::bohr_radius](#codata2022-bohr_radius) | mag_ratio<82, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2022::atomic_unit_of_magnetic_dipole_moment | atomic_unit_of_magnetic_dipole_moment | — | mag_ratio<185'480'201'315, 100'000'000'000> * mag_power<10, -23> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<58, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::atomic_unit_of_magnetic_flux_density | atomic_unit_of_magnetic_flux_density | — | mag_ratio<235'051'757'077, 100'000'000'000> * mag_power<10, 5> * [si::tesla](si.md#tesla) | mag_ratio<73, 10> * mag_power<10, -5> * [si::tesla](si.md#tesla) | +| codata2022::atomic_unit_of_magnetizability | atomic_unit_of_magnetizability | — | mag_ratio<78'910'365'794, 10'000'000'000> * mag_power<10, -29> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | mag_ratio<49, 10> * mag_power<10, -38> * [si::joule](si.md#joule) / square([si::tesla](si.md#tesla)) | +| codata2022::atomic_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2022::atomic_unit_of_momentum | atomic_unit_of_momentum | — | mag_ratio<199'285'191'545, 100'000'000'000> * mag_power<10, -24> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<31, 10> * mag_power<10, -34> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2022::atomic_unit_of_permittivity | atomic_unit_of_permittivity | — | mag_ratio<111'265'005'620, 100'000'000'000> * mag_power<10, -10> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | mag_ratio<17, 10> * mag_power<10, -20> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | +| codata2022::atomic_unit_of_time | atomic_unit_of_time | — | mag_ratio<24'188'843'265'864, 10'000'000'000'000> * mag_power<10, -17> * [si::second](si.md#second) | mag_ratio<26, 10> * mag_power<10, -29> * [si::second](si.md#second) | +| codata2022::atomic_unit_of_velocity | atomic_unit_of_velocity | — | mag_ratio<218'769'126'216, 100'000'000'000> * mag_power<10, 6> * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<34, 10> * mag_power<10, -4> * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2022::bohr_magneton | μ_B (mu_B) | — | mag_ratio<92'740'100'657, 10'000'000'000> * mag_power<10, -24> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<29, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::bohr_radius | a_0 | — | mag_ratio<529'177'210'544, 100'000'000'000> * mag_power<10, -11> * [si::metre](si.md#metre) | mag_ratio<82, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2022::characteristic_impedance_of_vacuum | Z_0 | — | mag_ratio<376'730'313'412, 1'000'000'000> * [si::ohm](si.md#ohm) | mag_ratio<59, 10> * mag_power<10, -8> * [si::ohm](si.md#ohm) | +| codata2022::classical_electron_radius | r_e | — | mag_ratio<28'179'403'205, 10'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<13, 10> * mag_power<10, -24> * [si::metre](si.md#metre) | +| codata2022::conductance_quantum | G_0 | — | mag<2> * square([elementary_charge](#si2019-elementary_charge)) / [planck_constant](#si2019-planck_constant) | — | +| codata2022::conventional_value_of_ampere_90 | conventional_value_of_ampere_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::ampere](si.md#ampere) | — | +| codata2022::conventional_value_of_coulomb_90 | conventional_value_of_coulomb_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::coulomb](si.md#coulomb) | — | +| codata2022::conventional_value_of_farad_90 | conventional_value_of_farad_90 | — | [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::farad](si.md#farad) | — | +| codata2022::conventional_value_of_henry_90 | conventional_value_of_henry_90 | — | [von_klitzing_constant](#codata2022-von_klitzing_constant) / [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) * [si::henry](si.md#henry) | — | +| codata2022::conventional_value_of_ohm_90 | conventional_value_of_ohm_90 | — | [von_klitzing_constant](#codata2022-von_klitzing_constant) / [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) * [si::ohm](si.md#ohm) | — | +| codata2022::conventional_value_of_volt_90 | conventional_value_of_volt_90 | — | [conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant) * [si::volt](si.md#volt) | — | +| codata2022::conventional_value_of_watt_90 | conventional_value_of_watt_90 | — | square([conventional_value_of_josephson_constant](#conventional_value_of_josephson_constant) / [josephson_constant](#codata2022-josephson_constant)) * [conventional_value_of_von_klitzing_constant](#conventional_value_of_von_klitzing_constant) / [von_klitzing_constant](#codata2022-von_klitzing_constant) * [si::watt](si.md#watt) | — | +| codata2022::copper_x_unit | copper_x_unit | — | mag_ratio<100'207'697, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<28, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2022::deuteron_electron_magnetic_moment_ratio | deuteron_electron_magnetic_moment_ratio | — | -mag_ratio<4'664'345'550, 1'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::deuteron_electron_mass_ratio | deuteron_electron_mass_ratio | — | mag_ratio<3'670'482'967'655, 1'000'000'000> * [one](core.md#one) | mag_ratio<63, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::deuteron_g_factor | g_d | — | mag_ratio<8'574'382'335, 10'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::deuteron_magnetic_moment | μ_d (mu_d) | — | mag_ratio<4'330'735'087, 1'000'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::deuteron_magnetic_moment_to_bohr_magneton_ratio | deuteron_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<4'669'754'568, 1'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::deuteron_magnetic_moment_to_nuclear_magneton_ratio | deuteron_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<8'574'382'335, 10'000'000'000> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::deuteron_mass | m_d | — | mag_ratio<33'435'837'768, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<10, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2022::deuteron_molar_mass | deuteron_molar_mass | — | mag_ratio<201'355'321'466, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<63, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::deuteron_neutron_magnetic_moment_ratio | deuteron_neutron_magnetic_moment_ratio | — | -mag_ratio<44'820'652, 100'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::deuteron_proton_magnetic_moment_ratio | deuteron_proton_magnetic_moment_ratio | — | mag_ratio<30'701'220'930, 100'000'000'000> * [one](core.md#one) | mag_ratio<79, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::deuteron_proton_mass_ratio | deuteron_proton_mass_ratio | — | mag_ratio<19'990'075'012'699, 10'000'000'000'000> * [one](core.md#one) | mag_ratio<84, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::deuteron_relative_atomic_mass | deuteron_relative_atomic_mass | — | mag_ratio<2'013'553'212'544, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<15, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::deuteron_rms_charge_radius | r_d | — | mag_ratio<212'778, 100'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<27, 10> * mag_power<10, -19> * [si::metre](si.md#metre) | +| codata2022::electron_charge_to_mass_quotient | electron_charge_to_mass_quotient | — | -mag_ratio<175'882'000'838, 100'000'000'000> * mag_power<10, 11> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<55, 10> * mag_power<10, 1> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2022::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<242'631'023'538, 100'000'000'000> * mag_power<10, -12> * [si::metre](si.md#metre) | mag_ratio<76, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2022::electron_deuteron_magnetic_moment_ratio | electron_deuteron_magnetic_moment_ratio | — | -mag_ratio<21'439'234'921, 10'000'000> * [one](core.md#one) | mag_ratio<56, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2022::electron_deuteron_mass_ratio | electron_deuteron_mass_ratio | — | mag_ratio<2'724'437'107'629, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<47, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::electron_g_factor | g_e | — | -mag_ratio<200'231'930'436'092, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::electron_gyromagnetic_ratio | γ_e (gamma_e) | — | mag_ratio<176'085'962'784, 100'000'000'000> * mag_power<10, 11> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<55, 10> * mag_power<10, 1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2022::electron_helion_mass_ratio | electron_helion_mass_ratio | — | mag_ratio<1'819'543'074'649, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<53, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::electron_magnetic_moment | μ_e (mu_e) | — | -mag_ratio<92'847'646'917, 10'000'000'000> * mag_power<10, -24> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<29, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::electron_magnetic_moment_anomaly | electron_magnetic_moment_anomaly | — | mag_ratio<115'965'218'046, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<18, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::electron_magnetic_moment_to_bohr_magneton_ratio | electron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<100'115'965'218'046, 100'000'000'000'000> * [one](core.md#one) | mag_ratio<18, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::electron_magnetic_moment_to_nuclear_magneton_ratio | electron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<1'838'281'971'877, 1'000'000'000> * [one](core.md#one) | mag_ratio<32, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::electron_mass | m_e | — | mag_ratio<91'093'837'139, 10'000'000'000> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2022::electron_molar_mass | electron_molar_mass | — | mag_ratio<54'857'990'962, 10'000'000'000> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<17, 10> * mag_power<10, -16> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::electron_muon_magnetic_moment_ratio | electron_muon_magnetic_moment_ratio | — | mag_ratio<2'067'669'881, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2022::electron_muon_mass_ratio | electron_muon_mass_ratio | — | mag_ratio<483'633'170, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::electron_neutron_magnetic_moment_ratio | electron_neutron_magnetic_moment_ratio | — | mag_ratio<96'092'048, 100'000> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2022::electron_neutron_mass_ratio | electron_neutron_mass_ratio | — | mag_ratio<54'386'734'416, 10'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<22, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::electron_proton_magnetic_moment_ratio | electron_proton_magnetic_moment_ratio | — | -mag_ratio<65'821'068'789, 100'000'000> * [one](core.md#one) | mag_ratio<19, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::electron_proton_mass_ratio | electron_proton_mass_ratio | — | mag_ratio<5'446'170'214'889, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<94, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::electron_relative_atomic_mass | electron_relative_atomic_mass | — | mag_ratio<5'485'799'090'441, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<97, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::electron_tau_mass_ratio | electron_tau_mass_ratio | — | mag_ratio<287'585, 100'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<19, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::electron_to_alpha_particle_mass_ratio | electron_to_alpha_particle_mass_ratio | — | mag_ratio<1'370'933'554'733, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<32, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::electron_to_shielded_helion_magnetic_moment_ratio | electron_to_shielded_helion_magnetic_moment_ratio | — | mag_ratio<86'405'823'986, 100'000'000> * [one](core.md#one) | mag_ratio<70, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::electron_to_shielded_proton_magnetic_moment_ratio | electron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<6'582'275'856, 10'000'000> * [one](core.md#one) | mag_ratio<27, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2022::electron_triton_mass_ratio | electron_triton_mass_ratio | — | mag_ratio<1'819'200'062'327, 1'000'000'000'000> * mag_power<10, -4> * [one](core.md#one) | mag_ratio<68, 10> * mag_power<10, -15> * [one](core.md#one) | +| codata2022::elementary_charge_over_h_bar | elementary_charge_over_h_bar | — | [elementary_charge](#si2019-elementary_charge) / [reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2022::faraday_constant | F | — | [avogadro_constant](#si2019-avogadro_constant) * [elementary_charge](#si2019-elementary_charge) | — | +| codata2022::fermi_coupling_constant | fermi_coupling_constant | — | mag_ratio<11'663'787, 10'000'000> * mag_power<10, -5> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | mag<6> * mag_power<10, -12> * [one](core.md#one) / square([si::giga](si.md#giga)<[si::electronvolt](si.md#electronvolt)>) | +| codata2022::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'643, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::first_radiation_constant | c_1 | — | mag<2> * [π](core.md#π) * [planck_constant](#si2019-planck_constant) * square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2022::first_radiation_constant_for_spectral_radiance | c_1L | — | mag<2> * [planck_constant](#si2019-planck_constant) * square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) / [si::steradian](si.md#steradian) | — | +| codata2022::hartree_energy | E_h | — | mag_ratio<43'597'447'222'060, 10'000'000'000'000> * mag_power<10, -18> * [si::joule](si.md#joule) | mag_ratio<48, 10> * mag_power<10, -30> * [si::joule](si.md#joule) | +| codata2022::helion_electron_mass_ratio | helion_electron_mass_ratio | — | mag_ratio<549'588'527'984, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::helion_g_factor | g_h | — | -mag_ratio<42'552'506'995, 10'000'000'000> * [one](core.md#one) | mag_ratio<34, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::helion_magnetic_moment | helion_magnetic_moment | — | -mag_ratio<107'461'755'198, 100'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<93, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::helion_magnetic_moment_to_bohr_magneton_ratio | helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<115'874'098'083, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<94, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::helion_magnetic_moment_to_nuclear_magneton_ratio | helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<21'276'253'498, 10'000'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::helion_mass | m_h | — | mag_ratio<50'064'127'862, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<16, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2022::helion_molar_mass | helion_molar_mass | — | mag_ratio<301'493'225'010, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<94, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::helion_proton_mass_ratio | helion_proton_mass_ratio | — | mag_ratio<2'993'152'671'552, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<70, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::helion_relative_atomic_mass | helion_relative_atomic_mass | — | mag_ratio<3'014'932'246'932, 1'000'000'000'000> * [one](core.md#one) | mag_ratio<74, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::helion_shielding_shift | helion_shielding_shift | — | mag_ratio<59'967'029, 10'000'000> * mag_power<10, -5> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -11> * [one](core.md#one) | +| codata2022::inverse_fine_structure_constant | inverse_fine_structure_constant | — | mag_ratio<137'035'999'177, 1'000'000'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::inverse_of_conductance_quantum | inverse_of_conductance_quantum | — | [planck_constant](#si2019-planck_constant) / (mag<2> * square([elementary_charge](#si2019-elementary_charge))) | — | +| codata2022::josephson_constant | K_J | — | mag<2> * [elementary_charge](#si2019-elementary_charge) / [planck_constant](#si2019-planck_constant) | — | +| codata2022::lattice_parameter_of_silicon | lattice_parameter_of_silicon | — | mag_ratio<5'431'020'511, 1'000'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<89, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2022::lattice_spacing_of_silicon_220 | lattice_spacing_of_silicon_220 | — | mag_ratio<1'920'155'716, 1'000'000'000> * mag_power<10, -10> * [si::metre](si.md#metre) | mag_ratio<32, 10> * mag_power<10, -18> * [si::metre](si.md#metre) | +| codata2022::loschmidt_constant_atm | loschmidt_constant_atm | — | mag_ratio<10'132'500, 27'315> * [si::pascal](si.md#pascal) / [boltzmann_constant](#si2019-boltzmann_constant) / [si::kelvin](si.md#kelvin) | — | +| codata2022::loschmidt_constant_stp | n_0 | — | mag_ratio<10'000'000, 27'315> * [si::pascal](si.md#pascal) / [boltzmann_constant](#si2019-boltzmann_constant) / [si::kelvin](si.md#kelvin) | — | +| codata2022::magnetic_constant | μ₀ (u_0) | — | mag_ratio<125'663'706'127, 100'000'000'000> * mag_power<10, -6> * [si::newton](si.md#newton) / square([si::ampere](si.md#ampere)) | mag_ratio<20, 10> * mag_power<10, -16> * [si::newton](si.md#newton) / square([si::ampere](si.md#ampere)) | +| codata2022::magnetic_flux_quantum | Φ₀ (Phi_0) | — | [planck_constant](#si2019-planck_constant) / (mag<2> * [elementary_charge](#si2019-elementary_charge)) | — | +| codata2022::molar_gas_constant | R | — | [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) | — | +| codata2022::molar_mass_constant | M_u | — | mag_ratio<100'000'000'105, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<31, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::molar_mass_of_carbon_12 | molar_mass_of_carbon_12 | — | mag_ratio<120'000'000'126, 10'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<37, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::molar_planck_constant | N_Ah | — | [avogadro_constant](#si2019-avogadro_constant) * [planck_constant](#si2019-planck_constant) | — | +| codata2022::molar_volume_of_ideal_gas_atm | molar_volume_of_ideal_gas_atm | — | mag_ratio<27'315, 10'132'500> * [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) * [si::kelvin](si.md#kelvin) / [si::pascal](si.md#pascal) | — | +| codata2022::molar_volume_of_ideal_gas_stp | molar_volume_of_ideal_gas_stp | — | mag_ratio<27'315, 10'000'000> * [avogadro_constant](#si2019-avogadro_constant) * [boltzmann_constant](#si2019-boltzmann_constant) * [si::kelvin](si.md#kelvin) / [si::pascal](si.md#pascal) | — | +| codata2022::molar_volume_of_silicon | molar_volume_of_silicon | — | mag_ratio<1'205'883'199, 1'000'000'000> * mag_power<10, -5> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | mag_ratio<60, 10> * mag_power<10, -13> * cubic([si::metre](si.md#metre)) / [si::mole](si.md#mole) | +| codata2022::molybdenum_x_unit | molybdenum_x_unit | — | mag_ratio<100'209'952, 100'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<53, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2022::muon_compton_wavelength | muon_compton_wavelength | — | mag_ratio<1'173'444'110, 1'000'000'000> * mag_power<10, -14> * [si::metre](si.md#metre) | mag_ratio<26, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2022::muon_electron_mass_ratio | muon_electron_mass_ratio | — | mag_ratio<2'067'682'827, 10'000'000> * [one](core.md#one) | mag_ratio<46, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2022::muon_g_factor | g_μ (g_mu) | — | -mag_ratio<200'233'184'123, 100'000'000'000> * [one](core.md#one) | mag_ratio<82, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::muon_magnetic_moment | μ_μ (mu_mu) | — | -mag_ratio<449'044'830, 100'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<10, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::muon_magnetic_moment_anomaly | muon_magnetic_moment_anomaly | — | mag_ratio<116'592'062, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<41, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::muon_magnetic_moment_to_bohr_magneton_ratio | muon_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<484'197'048, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::muon_magnetic_moment_to_nuclear_magneton_ratio | muon_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<889'059'704, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::muon_mass | m_μ (m_mu) | — | mag_ratio<1'883'531'627, 1'000'000'000> * mag_power<10, -28> * [si::kilogram](si.md#kilogram) | mag_ratio<42, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2022::muon_molar_mass | muon_molar_mass | — | mag_ratio<1'134'289'258, 1'000'000'000> * mag_power<10, -4> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<25, 10> * mag_power<10, -12> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::muon_neutron_mass_ratio | muon_neutron_mass_ratio | — | mag_ratio<1'124'545'168, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::muon_proton_magnetic_moment_ratio | muon_proton_magnetic_moment_ratio | — | -mag_ratio<3'183'345'146, 1'000'000'000> * [one](core.md#one) | mag_ratio<71, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::muon_proton_mass_ratio | muon_proton_mass_ratio | — | mag_ratio<1'126'095'262, 10'000'000'000> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::muon_tau_mass_ratio | muon_tau_mass_ratio | — | mag_ratio<594'635, 100'000> * mag_power<10, -2> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -6> * [one](core.md#one) | +| codata2022::natural_unit_of_action | ℏ (hbar) | — | alias to [codata::codata2022::reduced_planck_constant](#codata2022-reduced_planck_constant) | — | +| codata2022::natural_unit_of_energy | natural_unit_of_energy | — | mag_ratio<81'871'057'880, 10'000'000'000> * mag_power<10, -14> * [si::joule](si.md#joule) | mag_ratio<26, 10> * mag_power<10, -23> * [si::joule](si.md#joule) | +| codata2022::natural_unit_of_length | ƛ_C (lambdabar_C) | — | alias to [codata::codata2018::reduced_electron_compton_wavelength](#codata2022-reduced_electron_compton_wavelength) | mag_ratio<12, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2022::natural_unit_of_mass | m_e | — | alias to [codata::codata2022::electron_mass](#codata2022-electron_mass) | mag_ratio<28, 10> * mag_power<10, -40> * [si::kilogram](si.md#kilogram) | +| codata2022::natural_unit_of_momentum | natural_unit_of_momentum | — | mag_ratio<273'092'453'446, 100'000'000'000> * mag_power<10, -22> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | mag_ratio<85, 10> * mag_power<10, -32> * [si::kilogram](si.md#kilogram) * [si::metre](si.md#metre) / [si::second](si.md#second) | +| codata2022::natural_unit_of_time | natural_unit_of_time | — | mag_ratio<128'808'866'644, 100'000'000'000> * mag_power<10, -21> * [si::second](si.md#second) | mag_ratio<40, 10> * mag_power<10, -31> * [si::second](si.md#second) | +| codata2022::natural_unit_of_velocity | c | — | alias to [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | — | +| codata2022::neutron_compton_wavelength | neutron_compton_wavelength | — | mag_ratio<131'959'090'382, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<67, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2022::neutron_electron_magnetic_moment_ratio | neutron_electron_magnetic_moment_ratio | — | mag_ratio<104'066'884, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<24, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::neutron_electron_mass_ratio | neutron_electron_mass_ratio | — | mag_ratio<183'868'366'200, 100'000'000> * [one](core.md#one) | mag_ratio<74, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::neutron_g_factor | g_n | — | -mag_ratio<382'608'552, 100'000'000> * [one](core.md#one) | mag_ratio<90, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::neutron_gyromagnetic_ratio | γ_n (gamma_n) | — | mag_ratio<183'247'174, 100'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<43, 10> * mag_power<10, 1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2022::neutron_magnetic_moment | μ_n (mu_n) | — | -mag_ratio<96'623'653, 10'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<23, 10> * mag_power<10, -33> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::neutron_magnetic_moment_to_bohr_magneton_ratio | neutron_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<104'187'565, 100'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<25, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::neutron_magnetic_moment_to_nuclear_magneton_ratio | neutron_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<191'304'276, 100'000'000> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::neutron_mass | m_n | — | mag_ratio<167'492'750'056, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<85, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2022::neutron_molar_mass | neutron_molar_mass | — | mag_ratio<100'866'491'712, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<51, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::neutron_muon_mass_ratio | neutron_muon_mass_ratio | — | mag_ratio<889'248'408, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::neutron_proton_magnetic_moment_ratio | neutron_proton_magnetic_moment_ratio | — | -mag_ratio<68'497'935, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::neutron_proton_mass_difference | neutron_proton_mass_difference | — | mag_ratio<230'557'461, 100'000'000> * mag_power<10, -30> * [si::kilogram](si.md#kilogram) | mag_ratio<67, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2022::neutron_proton_mass_ratio | neutron_proton_mass_ratio | — | mag_ratio<100'137'841'946, 100'000'000'000> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::neutron_relative_atomic_mass | neutron_relative_atomic_mass | — | mag_ratio<100'866'491'606, 100'000'000'000> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::neutron_tau_mass_ratio | neutron_tau_mass_ratio | — | mag_ratio<528'779, 1'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2022::neutron_to_shielded_proton_magnetic_moment_ratio | neutron_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<68'499'694, 100'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::newtonian_constant_of_gravitation | G | — | mag_ratio<667'430, 100'000> * mag_power<10, -11> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | mag_ratio<15, 10> * mag_power<10, -15> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | +| codata2022::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<50'507'837'393, 10'000'000'000> * mag_power<10, -27> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<16, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::planck_length | l_P | — | mag_ratio<1'616'255, 1'000'000> * mag_power<10, -35> * [si::metre](si.md#metre) | mag_ratio<18, 10> * mag_power<10, -40> * [si::metre](si.md#metre) | +| codata2022::planck_mass | m_P | — | mag_ratio<2'176'434, 1'000'000> * mag_power<10, -8> * [si::kilogram](si.md#kilogram) | mag_ratio<24, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) | +| codata2022::planck_temperature | T_P | — | mag_ratio<1'416'784, 1'000'000> * mag_power<10, 32> * [si::kelvin](si.md#kelvin) | mag_ratio<16, 10> * mag_power<10, 27> * [si::kelvin](si.md#kelvin) | +| codata2022::planck_time | t_P | — | mag_ratio<5'391'247, 1'000'000> * mag_power<10, -44> * [si::second](si.md#second) | mag_ratio<60, 10> * mag_power<10, -49> * [si::second](si.md#second) | +| codata2022::proton_charge_to_mass_quotient | proton_charge_to_mass_quotient | — | mag_ratio<95'788'331'430, 10'000'000'000> * mag_power<10, 7> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | mag_ratio<30, 10> * mag_power<10, -2> * [si::coulomb](si.md#coulomb) / [si::kilogram](si.md#kilogram) | +| codata2022::proton_compton_wavelength | proton_compton_wavelength | — | mag_ratio<132'140'985'360, 100'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<41, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2022::proton_electron_mass_ratio | proton_electron_mass_ratio | — | mag_ratio<1'836'152'673'426, 1'000'000'000> * [one](core.md#one) | mag_ratio<32, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::proton_g_factor | g_p | — | mag_ratio<55'856'946'893, 10'000'000'000> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::proton_gyromagnetic_ratio | γ_p (gamma_p) | — | mag_ratio<26'752'218'708, 10'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * mag_power<10, -1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2022::proton_magnetic_moment | μ_p (mu_p) | — | mag_ratio<141'060'679'545, 100'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<60, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::proton_magnetic_moment_to_bohr_magneton_ratio | proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<152'103'220'230, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<45, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::proton_magnetic_moment_to_nuclear_magneton_ratio | proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<279'284'734'463, 100'000'000'000> * [one](core.md#one) | mag_ratio<82, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::proton_magnetic_shielding_correction | proton_magnetic_shielding_correction | — | mag_ratio<256'715, 100'000> * mag_power<10, -5> * [one](core.md#one) | mag_ratio<41, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::proton_mass | m_p | — | mag_ratio<167'262'192'595, 100'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<52, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2022::proton_molar_mass | proton_molar_mass | — | mag_ratio<100'727'646'764, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<31, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::proton_muon_mass_ratio | proton_muon_mass_ratio | — | mag_ratio<888'024'338, 100'000'000> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::proton_neutron_magnetic_moment_ratio | proton_neutron_magnetic_moment_ratio | — | -mag_ratio<145'989'802, 100'000'000> * [one](core.md#one) | mag_ratio<34, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::proton_neutron_mass_ratio | proton_neutron_mass_ratio | — | mag_ratio<99'862'347'797, 100'000'000'000> * [one](core.md#one) | mag_ratio<40, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::proton_relative_atomic_mass | proton_relative_atomic_mass | — | mag_ratio<10'072'764'665'789, 10'000'000'000'000> * [one](core.md#one) | mag_ratio<83, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::proton_rms_charge_radius | r_p | — | mag_ratio<84'075, 10'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<64, 10> * mag_power<10, -19> * [si::metre](si.md#metre) | +| codata2022::proton_tau_mass_ratio | proton_tau_mass_ratio | — | mag_ratio<528'051, 1'000'000> * [one](core.md#one) | mag_ratio<36, 10> * mag_power<10, -5> * [one](core.md#one) | +| codata2022::quantum_of_circulation | quantum_of_circulation | — | mag_ratio<36'369'475'467, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<11, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2022::quantum_of_circulation_times_2 | quantum_of_circulation_times_2 | — | mag_ratio<72'738'950'934, 10'000'000'000> * mag_power<10, -4> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | mag_ratio<23, 10> * mag_power<10, -13> * square([si::metre](si.md#metre)) / [si::second](si.md#second) | +| codata2022::reduced_electron_compton_wavelength | ƛ_C (lambdabar_C) | — | mag_ratio<38'615'926'744, 10'000'000'000> * mag_power<10, -13> * [si::metre](si.md#metre) | mag_ratio<12, 10> * mag_power<10, -22> * [si::metre](si.md#metre) | +| codata2022::reduced_muon_compton_wavelength | reduced_muon_compton_wavelength | — | mag_ratio<1'867'594'306, 1'000'000'000> * mag_power<10, -15> * [si::metre](si.md#metre) | mag_ratio<42, 10> * mag_power<10, -23> * [si::metre](si.md#metre) | +| codata2022::reduced_neutron_compton_wavelength | reduced_neutron_compton_wavelength | — | mag_ratio<21'001'941'520, 10'000'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<11, 10> * mag_power<10, -25> * [si::metre](si.md#metre) | +| codata2022::reduced_planck_constant | ℏ (hbar) | — | [planck_constant](#si2019-planck_constant) / (mag<2> * [π](core.md#π)) | — | +| codata2022::reduced_proton_compton_wavelength | reduced_proton_compton_wavelength | — | mag_ratio<210'308'910'051, 100'000'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<66, 10> * mag_power<10, -26> * [si::metre](si.md#metre) | +| codata2022::reduced_tau_compton_wavelength | reduced_tau_compton_wavelength | — | mag_ratio<1'110'538, 1'000'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<75, 10> * mag_power<10, -21> * [si::metre](si.md#metre) | +| codata2022::rydberg_constant | R_∞ (R_inf) | — | mag_ratio<10'973'731'568'157, 1'000'000> * [one](core.md#one) / [si::metre](si.md#metre) | mag_ratio<12, 10> * mag_power<10, -5> * [one](core.md#one) / [si::metre](si.md#metre) | +| codata2022::sackur_tetrode_constant_100_kpa | sackur_tetrode_constant_100_kpa | — | -mag_ratio<115'170'753'496, 100'000'000'000> * [one](core.md#one) | mag_ratio<47, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::sackur_tetrode_constant_101_325_kpa | sackur_tetrode_constant_101_325_kpa | — | -mag_ratio<116'487'052'149, 100'000'000'000> * [one](core.md#one) | mag_ratio<47, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::second_radiation_constant | c_2 | — | [planck_constant](#si2019-planck_constant) * [speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) / [boltzmann_constant](#si2019-boltzmann_constant) | — | +| codata2022::shielded_helion_gyromagnetic_ratio | shielded_helion_gyromagnetic_ratio | — | mag_ratio<20'378'946'078, 10'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<18, 10> * mag_power<10, -1> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2022::shielded_helion_magnetic_moment | shielded_helion_magnetic_moment | — | -mag_ratio<107'455'311'035, 100'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<93, 10> * mag_power<10, -36> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::shielded_helion_magnetic_moment_to_bohr_magneton_ratio | shielded_helion_magnetic_moment_to_bohr_magneton_ratio | — | -mag_ratio<115'867'149'457, 100'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<94, 10> * mag_power<10, -13> * [one](core.md#one) | +| codata2022::shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | shielded_helion_magnetic_moment_to_nuclear_magneton_ratio | — | -mag_ratio<21'274'977'624, 10'000'000'000> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::shielded_helion_to_proton_magnetic_moment_ratio | shielded_helion_to_proton_magnetic_moment_ratio | — | -mag_ratio<76'176'657'721, 100'000'000'000> * [one](core.md#one) | mag_ratio<66, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::shielded_helion_to_shielded_proton_magnetic_moment_ratio | shielded_helion_to_shielded_proton_magnetic_moment_ratio | — | -mag_ratio<7'617'861'334, 10'000'000'000> * [one](core.md#one) | mag_ratio<31, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::shielded_proton_gyromagnetic_ratio | shielded_proton_gyromagnetic_ratio | — | mag_ratio<2'675'153'194, 1'000'000'000> * mag_power<10, 8> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | mag_ratio<11, 10> * [one](core.md#one) / [si::second](si.md#second) / [si::tesla](si.md#tesla) | +| codata2022::shielded_proton_magnetic_moment | shielded_proton_magnetic_moment | — | mag_ratio<14'105'705'830, 10'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<58, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::shielded_proton_magnetic_moment_to_bohr_magneton_ratio | shielded_proton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<15'209'931'551, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<62, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | shielded_proton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<2'792'775'648, 1'000'000'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::shielding_difference_of_d_and_p_in_hd | shielding_difference_of_d_and_p_in_hd | — | mag_ratio<198'770, 100'000> * mag_power<10, -8> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::shielding_difference_of_t_and_p_in_ht | shielding_difference_of_t_and_p_in_ht | — | mag_ratio<239'450, 100'000> * mag_power<10, -8> * [one](core.md#one) | mag_ratio<20, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::stefan_boltzmann_constant | σ (sigma) | — | mag_ratio<2, 15> * pow<5>([π](core.md#π)) * pow<4>([boltzmann_constant](#si2019-boltzmann_constant)) / cubic([planck_constant](#si2019-planck_constant)) / square([speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum)) | — | +| codata2022::tau_compton_wavelength | tau_compton_wavelength | — | mag_ratio<697'771, 100'000> * mag_power<10, -16> * [si::metre](si.md#metre) | mag_ratio<47, 10> * mag_power<10, -20> * [si::metre](si.md#metre) | +| codata2022::tau_electron_mass_ratio | tau_electron_mass_ratio | — | mag_ratio<347'723, 100> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -1> * [one](core.md#one) | +| codata2022::tau_mass | m_τ (m_tau) | — | mag_ratio<316'754, 100'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<21, 10> * mag_power<10, -31> * [si::kilogram](si.md#kilogram) | +| codata2022::tau_molar_mass | tau_molar_mass | — | mag_ratio<190'754, 100'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<13, 10> * mag_power<10, -7> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::tau_muon_mass_ratio | tau_muon_mass_ratio | — | mag_ratio<168'170, 10'000> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -3> * [one](core.md#one) | +| codata2022::tau_neutron_mass_ratio | tau_neutron_mass_ratio | — | mag_ratio<189'115, 100'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2022::tau_proton_mass_ratio | tau_proton_mass_ratio | — | mag_ratio<189'376, 100'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2022::thomson_cross_section | σ_e (sigma_e) | — | mag_ratio<66'524'587'051, 10'000'000'000> * mag_power<10, -29> * square([si::metre](si.md#metre)) | mag_ratio<62, 10> * mag_power<10, -38> * square([si::metre](si.md#metre)) | +| codata2022::triton_electron_mass_ratio | triton_electron_mass_ratio | — | mag_ratio<549'692'153'551, 100'000'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -7> * [one](core.md#one) | +| codata2022::triton_g_factor | g_t | — | mag_ratio<5'957'924'930, 1'000'000'000> * [one](core.md#one) | mag_ratio<12, 10> * mag_power<10, -8> * [one](core.md#one) | +| codata2022::triton_magnetic_moment | μ_t (mu_t) | — | mag_ratio<15'046'095'178, 10'000'000'000> * mag_power<10, -26> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | mag_ratio<30, 10> * mag_power<10, -35> * [si::joule](si.md#joule) / [si::tesla](si.md#tesla) | +| codata2022::triton_magnetic_moment_to_bohr_magneton_ratio | triton_magnetic_moment_to_bohr_magneton_ratio | — | mag_ratio<16'223'936'648, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<32, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::triton_magnetic_moment_to_nuclear_magneton_ratio | triton_magnetic_moment_to_nuclear_magneton_ratio | — | mag_ratio<29'789'624'650, 10'000'000'000> * [one](core.md#one) | mag_ratio<59, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::triton_mass | m_t | — | mag_ratio<50'073'567'512, 10'000'000'000> * mag_power<10, -27> * [si::kilogram](si.md#kilogram) | mag_ratio<16, 10> * mag_power<10, -36> * [si::kilogram](si.md#kilogram) | +| codata2022::triton_molar_mass | triton_molar_mass | — | mag_ratio<301'550'071'913, 100'000'000'000> * mag_power<10, -3> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | mag_ratio<94, 10> * mag_power<10, -13> * [si::kilogram](si.md#kilogram) / [si::mole](si.md#mole) | +| codata2022::triton_proton_mass_ratio | triton_proton_mass_ratio | — | mag_ratio<299'371'703'403, 100'000'000'000> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::triton_relative_atomic_mass | triton_relative_atomic_mass | — | mag_ratio<301'550'071'597, 100'000'000'000> * [one](core.md#one) | mag_ratio<10, 10> * mag_power<10, -10> * [one](core.md#one) | +| codata2022::triton_to_proton_magnetic_moment_ratio | triton_to_proton_magnetic_moment_ratio | — | mag_ratio<10'666'399'189, 10'000'000'000> * [one](core.md#one) | mag_ratio<21, 10> * mag_power<10, -9> * [one](core.md#one) | +| codata2022::unified_atomic_mass_unit | m_u | — | alias to [codata::codata2022::atomic_mass_constant](#codata2022-atomic_mass_constant) | mag_ratio<52, 10> * mag_power<10, -37> * [si::kilogram](si.md#kilogram) | +| codata2022::vacuum_electric_permittivity | ε₀ (eps_0) | — | mag_ratio<88'541'878'188, 10'000'000'000> * mag_power<10, -12> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | mag_ratio<14, 10> * mag_power<10, -21> * [si::farad](si.md#farad) / [si::metre](si.md#metre) | +| codata2022::von_klitzing_constant | R_K | — | [planck_constant](#si2019-planck_constant) / square([elementary_charge](#si2019-elementary_charge)) | — | +| codata2022::w_to_z_mass_ratio | w_to_z_mass_ratio | — | mag_ratio<88'145, 100'000> * [one](core.md#one) | mag_ratio<13, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2022::weak_mixing_angle | weak_mixing_angle | — | mag_ratio<22'305, 100'000> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -4> * [one](core.md#one) | +| codata2022::wien_frequency_displacement_law_constant | b′ (b_prime) | — | [wien_x_frequency](#wien_x_frequency) * [boltzmann_constant](#si2019-boltzmann_constant) / [planck_constant](#si2019-planck_constant) | — | +| codata2022::wien_wavelength_displacement_law_constant | b | — | [second_radiation_constant](#codata2022-second_radiation_constant) / [wien_x_wavelength](#wien_x_wavelength) | — | +| conventional_value_of_josephson_constant | K_J-90 | — | mag_ratio<4'835'979, 10> * mag_power<10, 9> * [si::hertz](si.md#hertz) / [si::volt](si.md#volt) | — | +| conventional_value_of_von_klitzing_constant | R_K-90 | — | mag_ratio<25'812'807, 1'000> * [si::ohm](si.md#ohm) | — | +| elementary_charge | e | — | alias to [si::si2019::elementary_charge](#si2019-elementary_charge) | — | +| hyperfine_structure_transition_frequency_of_cs | Δν_Cs (dv_Cs) | — | alias to [si::si2019::hyperfine_structure_transition_frequency_of_cs](#si2019-hyperfine_structure_transition_frequency_of_cs) | — | +| luminous_efficacy | K_cd | — | alias to [si::si2019::luminous_efficacy](#si2019-luminous_efficacy) | — | +| planck_constant | h | — | alias to [si::si2019::planck_constant](#si2019-planck_constant) | — | +| speed_of_light_in_vacuum | c | — | alias to [si::si2019::speed_of_light_in_vacuum](#si2019-speed_of_light_in_vacuum) | — | +| standard_atmosphere | atm | — | mag<101'325> * [si::pascal](si.md#pascal) | — | +| standard_gravity | g₀ (g_0) | — | mag_ratio<980'665, 100'000> * [si::metre](si.md#metre) / square([si::second](si.md#second)) | — | +| standard_state_pressure | standard_state_pressure | — | mag<100'000> * [si::pascal](si.md#pascal) | — | +| wien_x_frequency | x_ν (x_nu) | — | mag * [one](core.md#one) | — | +| wien_x_wavelength | x_λ (x_lambda) | — | mag * [one](core.md#one) | — | -Constants with a relative standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. A `—` means no uncertainty is declared for that constant. +Constants with a standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. The uncertainty is stated in the form its source publishes: an absolute value in the constant's own dimension, or a relative one (marked *(relative)*) when only that form is published. A `—` means no uncertainty is declared for that constant. !!! note "Inline Namespaces" diff --git a/docs/reference/systems_reference/systems/hep.md b/docs/reference/systems_reference/systems/hep.md index bd35ccd0e1..30650d4f38 100644 --- a/docs/reference/systems_reference/systems/hep.md +++ b/docs/reference/systems_reference/systems/hep.md @@ -165,55 +165,55 @@ ## Constants -| Name | Symbol | unit_symbol | Definition | Relative standard uncertainty | -|------|:------:|:------------:|------------|:-----------------------------:| -| avogadro_constant | N_A | `N_A` | mag_ratio<602'214'076, 100'000'000> * mag_power<10, 23> / [mole](#mole) | — | -| codata2014::atomic_mass_unit | u | — | mag_ratio<9'314'940'954, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2014::bohr_magneton | μ_B (mu_B) | — | mag_ratio<9'274'009'994, 1'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2014::bohr_radius | a_0 | — | mag_ratio<52'917'721'067, 10'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<23, 10> * mag_power<10, -10> | -| codata2014::boltzmann_constant | k_B | — | mag_ratio<86'173'303, 10'000'000> * mag_power<10, -11> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / [kelvin](#kelvin) | mag_ratio<57, 10> * mag_power<10, -7> | -| codata2014::classical_electron_radius | r_e | — | mag_ratio<28'179'403'227, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<68, 10> * mag_power<10, -10> | -| codata2014::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<24'263'102'367, 10'000'000'000> * mag_power<10, -12> * [meter](#meter) | mag_ratio<45, 10> * mag_power<10, -10> | -| codata2014::electron_mass | m_e | — | mag_ratio<5'109'989'461, 10'000'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2014::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'664, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<23, 10> * mag_power<10, -10> | -| codata2014::neutron_mass | m_n | — | mag_ratio<9'395'654'133, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2014::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<5'050'783'699, 1'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2014::permeability_of_vacuum | μ₀ (mu_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [henry](#henry) / [meter](#meter) | — | -| codata2014::proton_mass | m_p | — | mag_ratio<9'382'720'813, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<62, 10> * mag_power<10, -9> | -| codata2018::atomic_mass_unit | u | `u` | mag_ratio<93'149'410'242, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<30, 10> * mag_power<10, -10> | -| codata2018::bohr_magneton | μ_B (mu_B) | `mu_B` | mag_ratio<92'740'100'783, 10'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<30, 10> * mag_power<10, -10> | -| codata2018::bohr_radius | a_0 | `a_0` | mag_ratio<529'177'210'903, 100'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<15, 10> * mag_power<10, -10> | -| codata2018::boltzmann_constant | k_B | `k_B` | mag_ratio<8'617'333'262, 1'000'000'000> * mag_power<10, -11> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / [kelvin](#kelvin) | — | -| codata2018::classical_electron_radius | r_e | `r_e` | mag_ratio<28'179'403'262, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<45, 10> * mag_power<10, -10> | -| codata2018::electron_compton_wavelength | λ_C (lambda_C) | `lambda_C` | mag_ratio<242'631'023'867, 100'000'000'000> * mag_power<10, -12> * [meter](#meter) | mag_ratio<30, 10> * mag_power<10, -10> | -| codata2018::electron_mass | m_e | `m_e` | mag_ratio<51'099'895, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<30, 10> * mag_power<10, -10> | -| codata2018::fine_structure_constant | α (alpha) | `alpha` | mag_ratio<72'973'525'693, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<15, 10> * mag_power<10, -10> | -| codata2018::neutron_mass | m_n | `m_n` | mag_ratio<93'956'542'052, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<57, 10> * mag_power<10, -10> | -| codata2018::nuclear_magneton | μ_N (mu_N) | `mu_N` | mag_ratio<50'507'837'461, 10'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2018::permeability_of_vacuum | μ₀ (mu_0) | `mu_0` | mag_ratio<125'663'706'212, 100'000'000'000> * mag_power<10, -6> * [henry](#henry) / [meter](#meter) | mag_ratio<15, 10> * mag_power<10, -10> | -| codata2018::proton_mass | m_p | `m_p` | mag_ratio<938'272'08816, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2022::atomic_mass_unit | u | — | mag_ratio<93'149'410'372, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2022::bohr_magneton | μ_B (mu_B) | — | mag_ratio<92'740'100'657, 10'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2022::bohr_radius | a_0 | — | mag_ratio<529'177'210'544, 100'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<16, 10> * mag_power<10, -10> | -| codata2022::boltzmann_constant | k_B | — | alias to [codata2018::boltzmann_constant](#codata2018-boltzmann_constant) | — | -| codata2022::classical_electron_radius | r_e | — | mag_ratio<28'179'403'205, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<47, 10> * mag_power<10, -10> | -| codata2022::electron_compton_wavelength | λ_C (lambda_C) | — | alias to [codata2018::electron_compton_wavelength](#codata2018-electron_compton_wavelength) | mag_ratio<30, 10> * mag_power<10, -10> | -| codata2022::electron_mass | m_e | — | mag_ratio<51'099'895'069, 100'000'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2022::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'643, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<16, 10> * mag_power<10, -10> | -| codata2022::neutron_mass | m_n | — | mag_ratio<93'956'542'194, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<51, 10> * mag_power<10, -10> | -| codata2022::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<50'507'837'393, 10'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<31, 10> * mag_power<10, -10> | -| codata2022::permeability_of_vacuum | μ₀ (mu_0) | — | mag_ratio<125'663'706'127, 100'000'000'000> * mag_power<10, -6> * [henry](#henry) / [meter](#meter) | mag_ratio<16, 10> * mag_power<10, -10> | -| codata2022::proton_mass | m_p | — | mag_ratio<93'827'208'943, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<31, 10> * mag_power<10, -10> | +| Name | Symbol | unit_symbol | Definition | Standard uncertainty | +|------|:------:|:------------:|------------|:--------------------:| +| avogadro_constant | N_A | `N_A` | mag_ratio<602'214'076, 100'000'000> * mag_power<10, 23> / [mole](#mole) | — | +| codata2014::atomic_mass_unit | u | — | mag_ratio<9'314'940'954, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<57, 10> * mag_power<10, -6> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2014::bohr_magneton | μ_B (mu_B) | — | mag_ratio<9'274'009'994, 1'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<57, 10> * mag_power<10, -32> * [joule](#joule) / [tesla](#tesla) | +| codata2014::bohr_radius | a_0 | — | mag_ratio<52'917'721'067, 10'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<12, 10> * mag_power<10, -21> * [meter](#meter) | +| codata2014::boltzmann_constant | k_B | — | mag_ratio<86'173'303, 10'000'000> * mag_power<10, -11> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / [kelvin](#kelvin) | mag_ratio<50, 10> * mag_power<10, -17> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / [kelvin](#kelvin) | +| codata2014::classical_electron_radius | r_e | — | mag_ratio<28'179'403'227, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<19, 10> * mag_power<10, -24> * [meter](#meter) | +| codata2014::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<24'263'102'367, 10'000'000'000> * mag_power<10, -12> * [meter](#meter) | mag_ratio<11, 10> * mag_power<10, -21> * [meter](#meter) | +| codata2014::electron_mass | m_e | — | mag_ratio<5'109'989'461, 10'000'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<31, 10> * mag_power<10, -9> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2014::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'664, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<17, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2014::neutron_mass | m_n | — | mag_ratio<9'395'654'133, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<58, 10> * mag_power<10, -6> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2014::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<5'050'783'699, 1'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<31, 10> * mag_power<10, -35> * [joule](#joule) / [tesla](#tesla) | +| codata2014::permeability_of_vacuum | μ₀ (mu_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [henry](#henry) / [meter](#meter) | — | +| codata2014::proton_mass | m_p | — | mag_ratio<9'382'720'813, 10'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<58, 10> * mag_power<10, -6> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2018::atomic_mass_unit | u | `u` | mag_ratio<93'149'410'242, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<28, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2018::bohr_magneton | μ_B (mu_B) | `mu_B` | mag_ratio<92'740'100'783, 10'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<28, 10> * mag_power<10, -33> * [joule](#joule) / [tesla](#tesla) | +| codata2018::bohr_radius | a_0 | `a_0` | mag_ratio<529'177'210'903, 100'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<80, 10> * mag_power<10, -21> * [meter](#meter) | +| codata2018::boltzmann_constant | k_B | `k_B` | mag_ratio<8'617'333'262, 1'000'000'000> * mag_power<10, -11> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / [kelvin](#kelvin) | — | +| codata2018::classical_electron_radius | r_e | `r_e` | mag_ratio<28'179'403'262, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<13, 10> * mag_power<10, -24> * [meter](#meter) | +| codata2018::electron_compton_wavelength | λ_C (lambda_C) | `lambda_C` | mag_ratio<242'631'023'867, 100'000'000'000> * mag_power<10, -12> * [meter](#meter) | mag_ratio<73, 10> * mag_power<10, -22> * [meter](#meter) | +| codata2018::electron_mass | m_e | `m_e` | mag_ratio<51'099'895, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<15, 10> * mag_power<10, -10> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2018::fine_structure_constant | α (alpha) | `alpha` | mag_ratio<72'973'525'693, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2018::neutron_mass | m_n | `m_n` | mag_ratio<93'956'542'052, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<54, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2018::nuclear_magneton | μ_N (mu_N) | `mu_N` | mag_ratio<50'507'837'461, 10'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<15, 10> * mag_power<10, -36> * [joule](#joule) / [tesla](#tesla) | +| codata2018::permeability_of_vacuum | μ₀ (mu_0) | `mu_0` | mag_ratio<125'663'706'212, 100'000'000'000> * mag_power<10, -6> * [henry](#henry) / [meter](#meter) | mag_ratio<19, 10> * mag_power<10, -16> * [henry](#henry) / [meter](#meter) | +| codata2018::proton_mass | m_p | `m_p` | mag_ratio<938'272'08816, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<29, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2022::atomic_mass_unit | u | — | mag_ratio<93'149'410'372, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<29, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2022::bohr_magneton | μ_B (mu_B) | — | mag_ratio<92'740'100'657, 10'000'000'000> * mag_power<10, -24> * [joule](#joule) / [tesla](#tesla) | mag_ratio<29, 10> * mag_power<10, -33> * [joule](#joule) / [tesla](#tesla) | +| codata2022::bohr_radius | a_0 | — | mag_ratio<529'177'210'544, 100'000'000'000> * mag_power<10, -11> * [meter](#meter) | mag_ratio<82, 10> * mag_power<10, -21> * [meter](#meter) | +| codata2022::boltzmann_constant | k_B | — | alias to [codata2018::boltzmann_constant](#codata2018-boltzmann_constant) | — | +| codata2022::classical_electron_radius | r_e | — | mag_ratio<28'179'403'205, 10'000'000'000> * mag_power<10, -15> * [meter](#meter) | mag_ratio<13, 10> * mag_power<10, -24> * [meter](#meter) | +| codata2022::electron_compton_wavelength | λ_C (lambda_C) | — | mag_ratio<242'631'023'538, 100'000'000'000> * mag_power<10, -12> * [meter](#meter) | mag_ratio<76, 10> * mag_power<10, -22> * [meter](#meter) | +| codata2022::electron_mass | m_e | — | mag_ratio<51'099'895'069, 100'000'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<16, 10> * mag_power<10, -10> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2022::fine_structure_constant | α (alpha) | — | mag_ratio<72'973'525'643, 10'000'000'000> * mag_power<10, -3> * [one](core.md#one) | mag_ratio<11, 10> * mag_power<10, -12> * [one](core.md#one) | +| codata2022::neutron_mass | m_n | — | mag_ratio<93'956'542'194, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<48, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | +| codata2022::nuclear_magneton | μ_N (mu_N) | — | mag_ratio<50'507'837'393, 10'000'000'000> * mag_power<10, -27> * [joule](#joule) / [tesla](#tesla) | mag_ratio<16, 10> * mag_power<10, -36> * [joule](#joule) / [tesla](#tesla) | +| codata2022::permeability_of_vacuum | μ₀ (mu_0) | — | mag_ratio<125'663'706'127, 100'000'000'000> * mag_power<10, -6> * [henry](#henry) / [meter](#meter) | mag_ratio<20, 10> * mag_power<10, -16> * [henry](#henry) / [meter](#meter) | +| codata2022::proton_mass | m_p | — | mag_ratio<93'827'208'943, 100'000'000> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | mag_ratio<29, 10> * mag_power<10, -7> * [si::mega](si.md#mega)<[electronvolt](#electronvolt)> / square([speed_of_light_in_vacuum](#speed_of_light_in_vacuum)) | | elementary_charge | e | `e` | [eplus](#eplus) | — | -| gas_threshold | gas_threshold | — | mag<10> * [si::milli](si.md#milli)<[gram](#gram)> / cubic([si::centi](si.md#centi)<[meter](#meter)>) | — | +| gas_threshold | gas_threshold | — | mag<10> * [si::milli](si.md#milli)<[gram](#gram)> / cubic([si::centi](si.md#centi)<[meter](#meter)>) | — | | pi | π (pi) | — | alias to [mp_units::pi](#pi) | — | | planck_constant | h | `h` | mag_ratio<662'607'015, 100'000'000> * mag_power<10, -34> * [joule](#joule) * [second](#second) | — | | speed_of_light_in_vacuum | c | `c` | mag<299'792'458> * [meter](#meter) / [second](#second) | — | -| standard_pressure | P_STP | — | [atmosphere](#atmosphere) | — | -| standard_temperature | T_STP | — | mag_ratio<27'315, 100> * [kelvin](#kelvin) | — | -| universe_mean_density | ρ_universe (rho_universe) | — | mag_power<10, -25> * [gram](#gram) / cubic([si::centi](si.md#centi)<[meter](#meter)>) | — | +| standard_pressure | P_STP | — | [atmosphere](#atmosphere) | — | +| standard_temperature | T_STP | — | mag_ratio<27'315, 100> * [kelvin](#kelvin) | — | +| universe_mean_density | ρ_universe (rho_universe) | — | mag_power<10, -25> * [gram](#gram) / cubic([si::centi](si.md#centi)<[meter](#meter)>) | — | -Constants with a relative standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. A `—` means no uncertainty is declared for that constant. +Constants with a standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. The uncertainty is stated in the form its source publishes: an absolute value in the constant's own dimension, or a relative one (marked *(relative)*) when only that form is published. A `—` means no uncertainty is declared for that constant. !!! note "Inline Namespaces" diff --git a/docs/reference/systems_reference/systems/iau.md b/docs/reference/systems_reference/systems/iau.md index 2edb79e1c4..eb0e8053e7 100644 --- a/docs/reference/systems_reference/systems/iau.md +++ b/docs/reference/systems_reference/systems/iau.md @@ -21,19 +21,19 @@ ## Constants -| Name | Symbol | unit_symbol | Definition | Relative standard uncertainty | -|------|:------:|:------------:|------------|:-----------------------------:| -| newtonian_constant_of_gravitation | G | `G` | alias to [codata::newtonian_constant_of_gravitation](codata.md#codata2022-newtonian_constant_of_gravitation) | mag_ratio<22, 10> * mag_power<10, -5> | -| nominal_jovian_equatorial_radius | R_♃ₑᴺ (R_JUP_E_N) | `R_JUP_E_N` | mag_ratio<71'492, 10'000> * mag_power<10, 7> * [si::metre](si.md#metre) | — | -| nominal_jovian_mass_parameter | (GM)_♃ᴺ ((GM)_JUP_N) | `GM_JUP_N` | mag_ratio<12'668'653, 10'000'000> * mag_power<10, 17> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | -| nominal_jovian_polar_radius | R_♃ₚᴺ (R_JUP_P_N) | `R_JUP_P_N` | mag_ratio<66'854, 10'000> * mag_power<10, 7> * [si::metre](si.md#metre) | — | -| nominal_solar_effective_temperature | Tₑff,☉ᴺ (T_EFF_SUN_N) | `T_EFF_SUN_N` | mag<5772> * [si::kelvin](si.md#kelvin) | — | -| nominal_solar_luminosity | L_☉ᴺ (L_SUN_N) | `L_SUN_N` | mag_ratio<3'828, 1'000> * mag_power<10, 26> * [si::watt](si.md#watt) | — | -| nominal_solar_mass_parameter | (GM)_☉ᴺ ((GM)_SUN_N) | `GM_SUN_N` | mag_ratio<13'271'244, 10'000'000> * mag_power<10, 20> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | -| nominal_solar_radius | R_☉ᴺ (R_SUN_N) | `R_SUN_N` | mag_ratio<6'957, 1'000> * mag_power<10, 8> * [si::metre](si.md#metre) | — | -| nominal_terrestrial_equatorial_radius | R_⊕ₑᴺ (R_EARTH_E_N) | `R_EARTH_E_N` | mag_ratio<63'781, 10'000> * mag_power<10, 6> * [si::metre](si.md#metre) | — | -| nominal_terrestrial_mass_parameter | (GM)_⊕ᴺ ((GM)_EARTH_N) | `GM_EARTH_N` | mag_ratio<3'986'004, 1'000'000> * mag_power<10, 14> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | -| nominal_terrestrial_polar_radius | R_⊕ₚᴺ (R_EARTH_P_N) | `R_EARTH_P_N` | mag_ratio<63'568, 10'000> * mag_power<10, 6> * [si::metre](si.md#metre) | — | -| nominal_total_solar_irradiance | S_☉ᴺ (S_SUN_N) | `S_SUN_N` | mag<1361> * [si::watt](si.md#watt) / square([si::metre](si.md#metre)) | — | - -Constants with a relative standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. A `—` means no uncertainty is declared for that constant. +| Name | Symbol | unit_symbol | Definition | Standard uncertainty | +|------|:------:|:------------:|------------|:--------------------:| +| newtonian_constant_of_gravitation | G | `G` | alias to [codata::newtonian_constant_of_gravitation](codata.md#codata2022-newtonian_constant_of_gravitation) | mag_ratio<15, 10> * mag_power<10, -15> * cubic([si::metre](si.md#metre)) / [si::kilogram](si.md#kilogram) / square([si::second](si.md#second)) | +| nominal_jovian_equatorial_radius | R_♃ₑᴺ (R_JUP_E_N) | `R_JUP_E_N` | mag_ratio<71'492, 10'000> * mag_power<10, 7> * [si::metre](si.md#metre) | — | +| nominal_jovian_mass_parameter | (GM)_♃ᴺ ((GM)_JUP_N) | `GM_JUP_N` | mag_ratio<12'668'653, 10'000'000> * mag_power<10, 17> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | +| nominal_jovian_polar_radius | R_♃ₚᴺ (R_JUP_P_N) | `R_JUP_P_N` | mag_ratio<66'854, 10'000> * mag_power<10, 7> * [si::metre](si.md#metre) | — | +| nominal_solar_effective_temperature | Tₑff,☉ᴺ (T_EFF_SUN_N) | `T_EFF_SUN_N` | mag<5772> * [si::kelvin](si.md#kelvin) | — | +| nominal_solar_luminosity | L_☉ᴺ (L_SUN_N) | `L_SUN_N` | mag_ratio<3'828, 1'000> * mag_power<10, 26> * [si::watt](si.md#watt) | — | +| nominal_solar_mass_parameter | (GM)_☉ᴺ ((GM)_SUN_N) | `GM_SUN_N` | mag_ratio<13'271'244, 10'000'000> * mag_power<10, 20> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | +| nominal_solar_radius | R_☉ᴺ (R_SUN_N) | `R_SUN_N` | mag_ratio<6'957, 1'000> * mag_power<10, 8> * [si::metre](si.md#metre) | — | +| nominal_terrestrial_equatorial_radius | R_⊕ₑᴺ (R_EARTH_E_N) | `R_EARTH_E_N` | mag_ratio<63'781, 10'000> * mag_power<10, 6> * [si::metre](si.md#metre) | — | +| nominal_terrestrial_mass_parameter | (GM)_⊕ᴺ ((GM)_EARTH_N) | `GM_EARTH_N` | mag_ratio<3'986'004, 1'000'000> * mag_power<10, 14> * cubic([si::metre](si.md#metre)) / square([si::second](si.md#second)) | — | +| nominal_terrestrial_polar_radius | R_⊕ₚᴺ (R_EARTH_P_N) | `R_EARTH_P_N` | mag_ratio<63'568, 10'000> * mag_power<10, 6> * [si::metre](si.md#metre) | — | +| nominal_total_solar_irradiance | S_☉ᴺ (S_SUN_N) | `S_SUN_N` | mag<1361> * [si::watt](si.md#watt) / square([si::metre](si.md#metre)) | — | + +Constants with a standard uncertainty are measured rather than exact by definition, and satisfy the [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant) concept. The uncertainty is stated in the form its source publishes: an absolute value in the constant's own dimension, or a relative one (marked *(relative)*) when only that form is published. A `—` means no uncertainty is declared for that constant. diff --git a/docs/reference/systems_reference/systems/si.md b/docs/reference/systems_reference/systems/si.md index b5f3bed340..1ccc42a32e 100644 --- a/docs/reference/systems_reference/systems/si.md +++ b/docs/reference/systems_reference/systems/si.md @@ -110,16 +110,16 @@ | Name | Symbol | unit_symbol | Definition | |------|:------:|:------------:|------------| -| magnetic_constant | μ₀ (u_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [henry](#henry) / [metre](#metre) | -| reduced_planck_constant | \u210f (hbar) | — | [si2019::planck_constant](#si2019-planck_constant) / (mag<2> * [π](core.md#π)) | -| si2019::avogadro_constant | N_A | — | mag_ratio<602'214'076, 100'000'000> * mag_power<10, 23> / [mole](#mole) | +| magnetic_constant | μ₀ (u_0) | — | mag<4> * mag_power<10, -7> * [π](core.md#π) * [henry](#henry) / [metre](#metre) | +| reduced_planck_constant | ℏ (hbar) | — | [si2019::planck_constant](codata.md#si2019-planck_constant) / (mag<2> * [π](core.md#π)) | +| si2019::avogadro_constant | N_A | — | mag_ratio<602'214'076, 100'000'000> * mag_power<10, 23> / [mole](#mole) | | si2019::boltzmann_constant | k | — | mag_ratio<1'380'649, 1'000'000> * mag_power<10, -23> * [joule](#joule) / [kelvin](#kelvin) | | si2019::elementary_charge | e | — | mag_ratio<1'602'176'634, 1'000'000'000> * mag_power<10, -19> * [coulomb](#coulomb) | -| si2019::hyperfine_structure_transition_frequency_of_cs | Δν_Cs (dv_Cs) | — | mag<9'192'631'770> * [hertz](#hertz) | -| si2019::luminous_efficacy | K_cd | — | mag<683> * [lumen](#lumen) / [watt](#watt) | +| si2019::hyperfine_structure_transition_frequency_of_cs | Δν_Cs (dv_Cs) | — | mag<9'192'631'770> * [hertz](#hertz) | +| si2019::luminous_efficacy | K_cd | — | mag<683> * [lumen](#lumen) / [watt](#watt) | | si2019::planck_constant | h | — | mag_ratio<662'607'015, 100'000'000> * mag_power<10, -34> * [joule](#joule) * [second](#second) | | si2019::speed_of_light_in_vacuum | c | — | mag<299'792'458> * [metre](#metre) / [second](#second) | -| standard_gravity | g₀ (g_0) | — | mag_ratio<980'665, 100'000> * [metre](#metre) / square([second](#second)) | +| standard_gravity | g₀ (g_0) | — | mag_ratio<980'665, 100'000> * [metre](#metre) / square([second](#second)) | !!! note "Inline Namespaces" diff --git a/docs/reference/systems_reference/systems/yard_pound.md b/docs/reference/systems_reference/systems/yard_pound.md index a6b0bd9f42..5b17b96cd8 100644 --- a/docs/reference/systems_reference/systems/yard_pound.md +++ b/docs/reference/systems_reference/systems/yard_pound.md @@ -33,7 +33,7 @@ | pica | P | `P` | mag_ratio<1, 6> * [inch](#inch) | | point | p | `p` | mag_ratio<1, 12> * [pica](#pica) | | pound | lb | `lb` | mag_ratio<45'359'237, 100'000'000> * [si::kilogram](si.md#kilogram) | -| pound_force | lbf | `lbf` | [pound](#pound) * [si::standard_gravity](si.md#standard_gravity) | +| pound_force | lbf | `lbf` | [pound](#pound) * [codata::standard_gravity](codata.md#standard_gravity) | | pound_mass | lb | — | alias to [pound](#pound) | | poundal | pdl | `pdl` | [pound](#pound) * [foot](#foot) / square([si::second](si.md#second)) | | psi | psi | `psi` | [pound_force](#pound_force) / square([inch](#inch)) | diff --git a/docs/reference/systems_reference/units_index.md b/docs/reference/systems_reference/units_index.md index 7d639faa71..8bf52cfb0e 100644 --- a/docs/reference/systems_reference/units_index.md +++ b/docs/reference/systems_reference/units_index.md @@ -18,6 +18,7 @@ Alphabetical list of all units. - [`astronomical_unit` (iau)](systems/iau.md#astronomical_unit) - [`astronomical_unit` (non_si)](systems/si.md#astronomical_unit) - [`atmosphere` (hep)](systems/hep.md#atmosphere) +- [`avogadro_constant` (codata::codata2018)](systems/codata.md#codata2018-avogadro_constant) - [`bar` (hep)](systems/hep.md#bar) - [`barleycorn` (imperial)](systems/imperial.md#barleycorn) - [`barn` (hep)](systems/hep.md#barn) @@ -27,6 +28,7 @@ Alphabetical list of all units. - [`becquerel` (hep)](systems/hep.md#becquerel) - [`becquerel` (si)](systems/si.md#becquerel) - [`bit` (iec)](systems/iec.md#bit) +- [`boltzmann_constant` (codata::codata2018)](systems/codata.md#codata2018-boltzmann_constant) - [`bushel` (usc)](systems/usc.md#bushel) - [`byte` (iec)](systems/iec.md#byte) - [`cable` (imperial)](systems/imperial.md#cable) @@ -62,6 +64,7 @@ Alphabetical list of all units. - [`electronvolt` (hep)](systems/hep.md#electronvolt) - [`electronvolt` (natural)](systems/natural.md#electronvolt) - [`electronvolt` (non_si)](systems/si.md#electronvolt) +- [`elementary_charge` (codata::codata2018)](systems/codata.md#codata2018-elementary_charge) - [`eplus` (hep)](systems/hep.md#eplus) - [`erg` (cgs)](systems/cgs.md#erg) - [`erlang` (iec)](systems/iec.md#erlang) @@ -102,6 +105,7 @@ Alphabetical list of all units. - [`hertz` (si)](systems/si.md#hertz) - [`hogshead` (usc)](systems/usc.md#hogshead) - [`hour` (non_si)](systems/si.md#hour) +- [`hyperfine_structure_transition_frequency_of_cs` (codata::codata2018)](systems/codata.md#codata2018-hyperfine_structure_transition_frequency_of_cs) - [`inch` (yard_pound)](systems/yard_pound.md#inch) - [`inch_of_mercury` (usc)](systems/usc.md#inch_of_mercury) - [`jansky` (astronomy)](systems/astronomy.md#jansky) @@ -127,6 +131,7 @@ Alphabetical list of all units. - [`long_ton` (imperial)](systems/imperial.md#long_ton) - [`lumen` (hep)](systems/hep.md#lumen) - [`lumen` (si)](systems/si.md#lumen) +- [`luminous_efficacy` (codata::codata2018)](systems/codata.md#codata2018-luminous_efficacy) - [`lunar_distance` (astronomy)](systems/astronomy.md#lunar_distance) - [`lux` (hep)](systems/hep.md#lux) - [`lux` (si)](systems/si.md#lux) @@ -167,6 +172,7 @@ Alphabetical list of all units. - [`pica_us` (typographic)](systems/typographic.md#pica_us) - [`pint` (imperial)](systems/imperial.md#pint) - [`pint` (usc)](systems/usc.md#pint) +- [`planck_constant` (codata::codata2018)](systems/codata.md#codata2018-planck_constant) - [`point` (yard_pound)](systems/yard_pound.md#point) - [`point_dtp` (typographic)](systems/typographic.md#point_dtp) - [`point_us` (typographic)](systems/typographic.md#point_us) @@ -204,6 +210,8 @@ Alphabetical list of all units. - [`siemens` (si)](systems/si.md#siemens) - [`sievert` (si)](systems/si.md#sievert) - [`solar_mass` (iau)](systems/iau.md#solar_mass) +- [`speed_of_light_in_vacuum` (codata::codata2014)](systems/codata.md#codata2014-speed_of_light_in_vacuum) +- [`speed_of_light_in_vacuum` (codata::codata2018)](systems/codata.md#codata2018-speed_of_light_in_vacuum) - [`steradian` (angular)](systems/angular.md#steradian) - [`steradian` (hep)](systems/hep.md#steradian) - [`steradian` (si)](systems/si.md#steradian) @@ -235,4 +243,4 @@ Alphabetical list of all units. - [`weber` (si)](systems/si.md#weber) - [`yard` (yard_pound)](systems/yard_pound.md#yard) -**Total units:** 229 +**Total units:** 237 diff --git a/docs/tutorials/type_safety/compile_time_protection.md b/docs/tutorials/type_safety/compile_time_protection.md index 8749ce5190..26c6541c18 100644 --- a/docs/tutorials/type_safety/compile_time_protection.md +++ b/docs/tutorials/type_safety/compile_time_protection.md @@ -11,6 +11,7 @@ See how **mp-units** catches unit errors at compile time, before your code runs. ```cpp // ce-embed height=550 compiler=clang2110 flags="-std=c++23 -stdlib=libc++ -O3" mp-units=trunk +#include #include #include @@ -23,7 +24,7 @@ int main() quantity time = 10.0 * s; quantity mass = 5.0 * kg; // standard_gravity is a unit constant provided by mp-units (~9.80665 m/s²) - quantity weight = mass * si::standard_gravity; // Force (weight = mass × gravity) + quantity weight = mass * codata::standard_gravity; // Force (weight = mass × gravity) // These work - compatible units quantity total_distance = distance + 50.0 * m; diff --git a/docs/tutorials/type_safety/dimensional_analysis.md b/docs/tutorials/type_safety/dimensional_analysis.md index d5b8a0e69d..ecf87a6c12 100644 --- a/docs/tutorials/type_safety/dimensional_analysis.md +++ b/docs/tutorials/type_safety/dimensional_analysis.md @@ -133,6 +133,7 @@ always happens automatically. ```cpp // ce-embed height=700 compiler=clang2110 flags="-std=c++23 -stdlib=libc++ -O3" mp-units=trunk #include +#include #include #include @@ -143,7 +144,7 @@ int main() // Projectile motion: h = v₀t - ½gt² quantity initial_velocity = 50.0 * m / s; - quantity gravity = 1.0 * si::standard_gravity; // unit constant (implicitly m/s2) + quantity gravity = 1.0 * codata::standard_gravity; // unit constant (implicitly m/s2) quantity time = 3.0 * s; // Upward distance from initial velocity @@ -178,7 +179,7 @@ is correct regardless of intermediate unit representations. 1. **_Density_**: Calculate _density_ from _mass_ 500 g, _volume_ 250 cm³. What unit? 2. **_Gravitational potential energy_**: Calculate $PE = mgh$ for _mass_ 10 kg, - _height_ 5 m, using `si::standard_gravity`. What unit? (Hint: Joule) + _height_ 5 m, using `codata::standard_gravity`. What unit? (Hint: Joule) 3. **_Work_**: _Force_ 10 N over _distance_ 5 m. What unit? (Hint: Joule again) ## What You Learned diff --git a/docs/users_guide/framework_basics/concepts.md b/docs/users_guide/framework_basics/concepts.md index 788fc1c2de..1b4a0ed330 100644 --- a/docs/users_guide/framework_basics/concepts.md +++ b/docs/users_guide/framework_basics/concepts.md @@ -97,9 +97,11 @@ Such units can be passed as an argument to a `prefixed_unit` class template. ### `MeasuredConstant` { #MeasuredConstant } `MeasuredConstant` concept is satisfied by the physical constants that are measured rather -than exact by definition, which are the ones defined with a `relative_standard_uncertainty` -argument to the `named_constant` class template. For such constants -`get_relative_standard_uncertainty(constant)` returns the stored magnitude, and +than exact by definition, which are the ones defined with a `standard_uncertainty` or a +`relative_standard_uncertainty` argument to the `named_constant` class template. A constant +declares exactly one of the two, whichever form its source publishes. For such constants +`get_standard_uncertainty(constant)` and `get_relative_standard_uncertainty(constant)` +each return the declared form or derive the other one from it, and `mp_units::utility::measurement_of(constant)` yields a quantity carrying that uncertainty. Constants that are exact by definition (for example, the defining constants of the SI or the diff --git a/docs/users_guide/systems/codata.md b/docs/users_guide/systems/codata.md index 6a27f9db86..c22f578693 100644 --- a/docs/users_guide/systems/codata.md +++ b/docs/users_guide/systems/codata.md @@ -9,15 +9,16 @@ fundamental physical constants, expressed in SI units. using namespace mp_units; quantity mu = measurement_of(codata::magnetic_constant).in(si::henry / si::metre); -std::cout << mu << "\n"; // 1.25664e-06 ± 2.01062e-16 H/m +std::cout << mu << "\n"; // 1.25664e-06 ± 2e-16 H/m ``` ## Why a separate system The SI fixes exactly seven constants, and those live in the -[SI system](si.md#si-defining-constants) where they belong. Everything CODATA publishes -beyond them is **measured**: each value carries a relative standard uncertainty and shifts -with every adjustment. +[SI system](si.md#si-defining-constants) where they belong (every adjustment namespace +below aliases them, so `codata::planck_constant` is the very same entity as +`si::si2019::planck_constant`). Everything CODATA publishes beyond them is **measured**: +each value carries a standard uncertainty and shifts with every adjustment. Keeping them here rather than in `si` is a deliberate cost decision. `` is the header most translation units reach for, and most of them @@ -25,6 +26,57 @@ never name a CODATA constant. Making everyone pay for the full table so that a m need not write one extra `#include` is the wrong trade. Include this header when you want these constants. +## Generated from the source tables + +The headers of this system are generated by `scripts/codata_constants.py` directly from +the [NIST "allascii" tables](https://physics.nist.gov/cuu/Constants/Table/allascii.txt), +which are checked into the repository verbatim. The generator accounts for every row of +every table and then verifies its own output by recomputing each emitted value in the +row's own unit and comparing it against the printed digits. The rationale behind +generating rather than transcribing is that: + +- a measured constant transcribes the published value and the published absolute standard + uncertainty digit for digit, so nothing in these headers is rounded by us, +- values that NIST prints truncated with an ellipsis (`8.617 333 262... e-5`) are exact + but non-terminating decimals, so they are defined by their exact symbolic relation + (for example, the Boltzmann constant divided by the elementary charge) instead of by + copied digits that would silently define an inexact constant while labelling it exact, +- rows that merely restate a constant in another unit ("... in MeV", "energy equivalent", + unit relationships) are not repeated, because constants are units in this library and + such forms are a conversion at the point of use. + +## Header layout + +Each adjustment ships in two headers spelling the very same constant types: + +- `` provides the + [NIST "Frequently used constants"](https://physics.nist.gov/cgi-bin/cuu/Category?view=html&Frequently+used+constants.x=87&Frequently+used+constants.y=18) + selection (the Newtonian constant of gravitation, the fine-structure constant, particle + masses, and friends), +- `` includes the essential header and adds the + complete table (roughly 230 constants per adjustment). + +The split is a compile-time trade. The essential tier costs nothing measurable on top of +the framework headers it includes, while the complete table instantiates thousands of +magnitude types and adds a few seconds per translation unit, so code that only needs `G` +should not pay for the atomic unit of the second hyperpolarizability. +`` remains the umbrella for all adjustments in full. + +Two more headers hold the constants that do not belong to any single adjustment: + +- `` provides NIST's "adopted values": the + conventional constants fixed by CGPM/CIPM resolutions rather than measured (the standard + gravity, the standard atmosphere, the standard-state pressure, and the conventional + Josephson and von Klitzing values). They are identical in every adjustment, which the + generator verifies, so they live directly in `mp_units::codata` as single + adjustment-invariant entities. This also makes the header the right dependency for units + defined through them: `yard_pound`'s `pound_force` builds on `codata::standard_gravity` + and includes only this tiny header rather than a whole adjustment. +- `` defines the two solutions of the Wien + displacement transcendental equations. Like `π`, they are exact mathematical constants, + and the post-2019 Wien displacement law constants are defined through them instead of + through truncated decimals. + ## Adjustments Each CODATA adjustment gets its own namespace, because a measured constant has no single diff --git a/docs/users_guide/systems/hep.md b/docs/users_guide/systems/hep.md index caf1bbd987..0c763632c4 100644 --- a/docs/users_guide/systems/hep.md +++ b/docs/users_guide/systems/hep.md @@ -389,9 +389,10 @@ Constants that vary by CODATA release (organized in `codata2014`, ### Measurement Uncertainty -Every one of those measured constants declares the relative standard uncertainty published -by its own CODATA release, alongside the central value. `k_B` is the exception: it became -exact with the 2019 SI redefinition, so only the `codata2014` one is annotated. +Every one of those measured constants declares the standard uncertainty published by its +own CODATA release, transcribed verbatim alongside the central value. `k_B` is the +exception: it became exact with the 2019 SI redefinition, so only the `codata2014` one is +annotated. The uncertainty is metadata on the definition and costs nothing until asked for. With an [`uncertain`](../../how_to_guides/advanced_usage/working_with_measurement_uncertainty.md) diff --git a/docs/users_guide/systems/natural_units.md b/docs/users_guide/systems/natural_units.md index 27a75eaf3d..44b7ef1241 100644 --- a/docs/users_guide/systems/natural_units.md +++ b/docs/users_guide/systems/natural_units.md @@ -292,7 +292,7 @@ template auto To = si::second> quantity to_isq(QuantityOf auto t) { // Time: τ_SI [s] = τ_nat [GeV⁻¹] × ℏ [GeV·s] - constexpr double hbar = (1.0 * si::reduced_planck_constant).numerical_value_in(si::giga * To); + constexpr double hbar = (1.0 * codata::reduced_planck_constant).numerical_value_in(si::giga * To); return t.numerical_value_in(one / natural::gigaelectronvolt) * hbar * To; } @@ -300,7 +300,7 @@ template auto To = si::metre> quantity to_isq(QuantityOf auto l) { // Length: l_SI [m] = l_nat [GeV⁻¹] × ℏc [GeV·m] - constexpr double hbarc = (1.0 * si::reduced_planck_constant * si::speed_of_light_in_vacuum) + constexpr double hbarc = (1.0 * codata::reduced_planck_constant * si::speed_of_light_in_vacuum) .numerical_value_in(si::giga * To); return l.numerical_value_in(one / natural::gigaelectronvolt) * hbarc * To; } diff --git a/docs/workshops/advanced/faster_than_lightspeed_constants.md b/docs/workshops/advanced/faster_than_lightspeed_constants.md index aa3c94ecee..3ee8057be2 100644 --- a/docs/workshops/advanced/faster_than_lightspeed_constants.md +++ b/docs/workshops/advanced/faster_than_lightspeed_constants.md @@ -89,7 +89,8 @@ constraints. Complete the implementation by defining: 1. **standard_gravity** (g₀) — Define `standard_gravity` as a unit which represents - 9.80665 m/s² as an exact rational 980'665/100'000 (or use predefined `si::standard_gravity`) + 9.80665 m/s² as an exact rational 980'665/100'000 (or use predefined `codata::standard_gravity` + from ``) 2. **kilogram_force** (kgf) — Define as a `named_unit` that embeds g₀: `kg × g₀` With these definitions in place, observe how: diff --git a/docs/workshops/extensions/custom_quantity_specifications.md b/docs/workshops/extensions/custom_quantity_specifications.md index c5a193c92b..5dc6119832 100644 --- a/docs/workshops/extensions/custom_quantity_specifications.md +++ b/docs/workshops/extensions/custom_quantity_specifications.md @@ -94,6 +94,7 @@ specifications so the type system enforces semantic correctness. ```cpp // ce-embed height=650 compiler=clang2110 flags="-std=c++23 -stdlib=libc++ -O3" mp-units=trunk #include +#include #include #include #include @@ -132,7 +133,7 @@ constexpr quantity total_mass(quantity c constexpr quantity lifting_energy(quantity mass, quantity height) { - constexpr quantity g0 = isq::acceleration_of_free_fall(1 * si::standard_gravity); + constexpr quantity g0 = isq::acceleration_of_free_fall(1 * codata::standard_gravity); return mass * g0 * height; } @@ -194,6 +195,7 @@ int main() ??? tip "Solution" ```cpp + #include #include #include #include @@ -232,7 +234,7 @@ int main() constexpr quantity lifting_energy(quantity mass, quantity height) { - constexpr quantity g0 = isq::acceleration_of_free_fall(1 * si::standard_gravity); + constexpr quantity g0 = isq::acceleration_of_free_fall(1 * codata::standard_gravity); return mass * g0 * height; } @@ -327,7 +329,7 @@ int main() // Type-checked dimensional analysis! quantity energy = - gravitational_potential_energy(total_mass(1200 * kg) * isq::acceleration_of_free_fall(1 * si::standard_gravity) * travel_height(30 * m)); + gravitational_potential_energy(total_mass(1200 * kg) * isq::acceleration_of_free_fall(1 * codata::standard_gravity) * travel_height(30 * m)); ``` The equation form `mass * acceleration_of_free_fall * height`: diff --git a/example/storage_tank.cpp b/example/storage_tank.cpp index 8c1d6c24eb..186aa2c3fb 100644 --- a/example/storage_tank.cpp +++ b/example/storage_tank.cpp @@ -40,6 +40,7 @@ import std; import mp_units; #else #include +#include #include #include #endif @@ -56,7 +57,7 @@ QUANTITY_SPEC(horizontal_length, isq::length); // with a constrained quantity equation QUANTITY_SPEC(horizontal_area, isq::area, horizontal_length* isq::width); -inline constexpr auto g = 1 * si::standard_gravity; +inline constexpr auto g = 1 * codata::standard_gravity; inline constexpr auto air_density = isq::mass_density(1.225 * kg / m3); class StorageTank { diff --git a/example/weighing_the_earth.cpp b/example/weighing_the_earth.cpp index 4d3dc687c7..39814cc571 100644 --- a/example/weighing_the_earth.cpp +++ b/example/weighing_the_earth.cpp @@ -44,6 +44,7 @@ import mp_units; #else #include #include +#include #include #include #include @@ -97,7 +98,8 @@ int main() std::cout << MP_UNITS_STD_FMT::format("time for {} swings = {}\n", swings, total_time); std::cout << MP_UNITS_STD_FMT::format("local gravity = {::N[.4f]}\n", gravity.in(m / s2)); // a conventional value fixed by the CGPM, not a measurement, so it carries no uncertainty - std::cout << MP_UNITS_STD_FMT::format(" standard gravity = {::N[.4f]}\n", (1. * si::standard_gravity).in(m / s2)); + std::cout << MP_UNITS_STD_FMT::format(" standard gravity = {::N[.4f]}\n", + (1. * codata::standard_gravity).in(m / s2)); std::cout << MP_UNITS_STD_FMT::format("mass of the Earth = {::N[.4e]}\n", earth_mass.in(kg)); // the published mass is itself defined as (GM)⊕ᴺ/G, so requesting an uncertainty-capable // representation for the conversion reports how well `G` is known diff --git a/scripts/codata/allascii_2014.txt b/scripts/codata/allascii_2014.txt new file mode 100644 index 0000000000..0e4a86ded8 --- /dev/null +++ b/scripts/codata/allascii_2014.txt @@ -0,0 +1,345 @@ + + 2014 Fundamental Physical Constants --- Complete Listing + + + From: http://physics.nist.gov/constants + + + + Quantity Value Uncertainty Unit +----------------------------------------------------------------------------------------------------------------------------- +{220} lattice spacing of silicon 192.015 5714 e-12 0.000 0032 e-12 m +alpha particle-electron mass ratio 7294.299 541 36 0.000 000 24 +alpha particle mass 6.644 657 230 e-27 0.000 000 082 e-27 kg +alpha particle mass energy equivalent 5.971 920 097 e-10 0.000 000 073 e-10 J +alpha particle mass energy equivalent in MeV 3727.379 378 0.000 023 MeV +alpha particle mass in u 4.001 506 179 127 0.000 000 000 063 u +alpha particle molar mass 4.001 506 179 127 e-3 0.000 000 000 063 e-3 kg mol^-1 +alpha particle-proton mass ratio 3.972 599 689 07 0.000 000 000 36 +Angstrom star 1.000 014 95 e-10 0.000 000 90 e-10 m +atomic mass constant 1.660 539 040 e-27 0.000 000 020 e-27 kg +atomic mass constant energy equivalent 1.492 418 062 e-10 0.000 000 018 e-10 J +atomic mass constant energy equivalent in MeV 931.494 0954 0.000 0057 MeV +atomic mass unit-electron volt relationship 931.494 0954 e6 0.000 0057 e6 eV +atomic mass unit-hartree relationship 3.423 177 6902 e7 0.000 000 0016 e7 E_h +atomic mass unit-hertz relationship 2.252 342 7206 e23 0.000 000 0010 e23 Hz +atomic mass unit-inverse meter relationship 7.513 006 6166 e14 0.000 000 0034 e14 m^-1 +atomic mass unit-joule relationship 1.492 418 062 e-10 0.000 000 018 e-10 J +atomic mass unit-kelvin relationship 1.080 954 38 e13 0.000 000 62 e13 K +atomic mass unit-kilogram relationship 1.660 539 040 e-27 0.000 000 020 e-27 kg +atomic unit of 1st hyperpolarizability 3.206 361 329 e-53 0.000 000 020 e-53 C^3 m^3 J^-2 +atomic unit of 2nd hyperpolarizability 6.235 380 085 e-65 0.000 000 077 e-65 C^4 m^4 J^-3 +atomic unit of action 1.054 571 800 e-34 0.000 000 013 e-34 J s +atomic unit of charge 1.602 176 6208 e-19 0.000 000 0098 e-19 C +atomic unit of charge density 1.081 202 3770 e12 0.000 000 0067 e12 C m^-3 +atomic unit of current 6.623 618 183 e-3 0.000 000 041 e-3 A +atomic unit of electric dipole mom. 8.478 353 552 e-30 0.000 000 052 e-30 C m +atomic unit of electric field 5.142 206 707 e11 0.000 000 032 e11 V m^-1 +atomic unit of electric field gradient 9.717 362 356 e21 0.000 000 060 e21 V m^-2 +atomic unit of electric polarizability 1.648 777 2731 e-41 0.000 000 0011 e-41 C^2 m^2 J^-1 +atomic unit of electric potential 27.211 386 02 0.000 000 17 V +atomic unit of electric quadrupole mom. 4.486 551 484 e-40 0.000 000 028 e-40 C m^2 +atomic unit of energy 4.359 744 650 e-18 0.000 000 054 e-18 J +atomic unit of force 8.238 723 36 e-8 0.000 000 10 e-8 N +atomic unit of length 0.529 177 210 67 e-10 0.000 000 000 12 e-10 m +atomic unit of mag. dipole mom. 1.854 801 999 e-23 0.000 000 011 e-23 J T^-1 +atomic unit of mag. flux density 2.350 517 550 e5 0.000 000 014 e5 T +atomic unit of magnetizability 7.891 036 5886 e-29 0.000 000 0090 e-29 J T^-2 +atomic unit of mass 9.109 383 56 e-31 0.000 000 11 e-31 kg +atomic unit of mom.um 1.992 851 882 e-24 0.000 000 024 e-24 kg m s^-1 +atomic unit of permittivity 1.112 650 056... e-10 (exact) F m^-1 +atomic unit of time 2.418 884 326 509 e-17 0.000 000 000 014 e-17 s +atomic unit of velocity 2.187 691 262 77 e6 0.000 000 000 50 e6 m s^-1 +Avogadro constant 6.022 140 857 e23 0.000 000 074 e23 mol^-1 +Bohr magneton 927.400 9994 e-26 0.000 0057 e-26 J T^-1 +Bohr magneton in eV/T 5.788 381 8012 e-5 0.000 000 0026 e-5 eV T^-1 +Bohr magneton in Hz/T 13.996 245 042 e9 0.000 000 086 e9 Hz T^-1 +Bohr magneton in inverse meters per tesla 46.686 448 14 0.000 000 29 m^-1 T^-1 +Bohr magneton in K/T 0.671 714 05 0.000 000 39 K T^-1 +Bohr radius 0.529 177 210 67 e-10 0.000 000 000 12 e-10 m +Boltzmann constant 1.380 648 52 e-23 0.000 000 79 e-23 J K^-1 +Boltzmann constant in eV/K 8.617 3303 e-5 0.000 0050 e-5 eV K^-1 +Boltzmann constant in Hz/K 2.083 6612 e10 0.000 0012 e10 Hz K^-1 +Boltzmann constant in inverse meters per kelvin 69.503 457 0.000 040 m^-1 K^-1 +characteristic impedance of vacuum 376.730 313 461... (exact) ohm +classical electron radius 2.817 940 3227 e-15 0.000 000 0019 e-15 m +Compton wavelength 2.426 310 2367 e-12 0.000 000 0011 e-12 m +Compton wavelength over 2 pi 386.159 267 64 e-15 0.000 000 18 e-15 m +conductance quantum 7.748 091 7310 e-5 0.000 000 0018 e-5 S +conventional value of Josephson constant 483 597.9 e9 (exact) Hz V^-1 +conventional value of von Klitzing constant 25 812.807 (exact) ohm +Cu x unit 1.002 076 97 e-13 0.000 000 28 e-13 m +deuteron-electron mag. mom. ratio -4.664 345 535 e-4 0.000 000 026 e-4 +deuteron-electron mass ratio 3670.482 967 85 0.000 000 13 +deuteron g factor 0.857 438 2311 0.000 000 0048 +deuteron mag. mom. 0.433 073 5040 e-26 0.000 000 0036 e-26 J T^-1 +deuteron mag. mom. to Bohr magneton ratio 0.466 975 4554 e-3 0.000 000 0026 e-3 +deuteron mag. mom. to nuclear magneton ratio 0.857 438 2311 0.000 000 0048 +deuteron mass 3.343 583 719 e-27 0.000 000 041 e-27 kg +deuteron mass energy equivalent 3.005 063 183 e-10 0.000 000 037 e-10 J +deuteron mass energy equivalent in MeV 1875.612 928 0.000 012 MeV +deuteron mass in u 2.013 553 212 745 0.000 000 000 040 u +deuteron molar mass 2.013 553 212 745 e-3 0.000 000 000 040 e-3 kg mol^-1 +deuteron-neutron mag. mom. ratio -0.448 206 52 0.000 000 11 +deuteron-proton mag. mom. ratio 0.307 012 2077 0.000 000 0015 +deuteron-proton mass ratio 1.999 007 500 87 0.000 000 000 19 +deuteron rms charge radius 2.1413 e-15 0.0025 e-15 m +electric constant 8.854 187 817... e-12 (exact) F m^-1 +electron charge to mass quotient -1.758 820 024 e11 0.000 000 011 e11 C kg^-1 +electron-deuteron mag. mom. ratio -2143.923 499 0.000 012 +electron-deuteron mass ratio 2.724 437 107 484 e-4 0.000 000 000 096 e-4 +electron g factor -2.002 319 304 361 82 0.000 000 000 000 52 +electron gyromag. ratio 1.760 859 644 e11 0.000 000 011 e11 s^-1 T^-1 +electron gyromag. ratio over 2 pi 28 024.951 64 0.000 17 MHz T^-1 +electron-helion mass ratio 1.819 543 074 854 e-4 0.000 000 000 088 e-4 +electron mag. mom. -928.476 4620 e-26 0.000 0057 e-26 J T^-1 +electron mag. mom. anomaly 1.159 652 180 91 e-3 0.000 000 000 26 e-3 +electron mag. mom. to Bohr magneton ratio -1.001 159 652 180 91 0.000 000 000 000 26 +electron mag. mom. to nuclear magneton ratio -1838.281 972 34 0.000 000 17 +electron mass 9.109 383 56 e-31 0.000 000 11 e-31 kg +electron mass energy equivalent 8.187 105 65 e-14 0.000 000 10 e-14 J +electron mass energy equivalent in MeV 0.510 998 9461 0.000 000 0031 MeV +electron mass in u 5.485 799 090 70 e-4 0.000 000 000 16 e-4 u +electron molar mass 5.485 799 090 70 e-7 0.000 000 000 16 e-7 kg mol^-1 +electron-muon mag. mom. ratio 206.766 9880 0.000 0046 +electron-muon mass ratio 4.836 331 70 e-3 0.000 000 11 e-3 +electron-neutron mag. mom. ratio 960.920 50 0.000 23 +electron-neutron mass ratio 5.438 673 4428 e-4 0.000 000 0027 e-4 +electron-proton mag. mom. ratio -658.210 6866 0.000 0020 +electron-proton mass ratio 5.446 170 213 52 e-4 0.000 000 000 52 e-4 +electron-tau mass ratio 2.875 92 e-4 0.000 26 e-4 +electron to alpha particle mass ratio 1.370 933 554 798 e-4 0.000 000 000 045 e-4 +electron to shielded helion mag. mom. ratio 864.058 257 0.000 010 +electron to shielded proton mag. mom. ratio -658.227 5971 0.000 0072 +electron-triton mass ratio 1.819 200 062 203 e-4 0.000 000 000 084 e-4 +electron volt 1.602 176 6208 e-19 0.000 000 0098 e-19 J +electron volt-atomic mass unit relationship 1.073 544 1105 e-9 0.000 000 0066 e-9 u +electron volt-hartree relationship 3.674 932 248 e-2 0.000 000 023 e-2 E_h +electron volt-hertz relationship 2.417 989 262 e14 0.000 000 015 e14 Hz +electron volt-inverse meter relationship 8.065 544 005 e5 0.000 000 050 e5 m^-1 +electron volt-joule relationship 1.602 176 6208 e-19 0.000 000 0098 e-19 J +electron volt-kelvin relationship 1.160 452 21 e4 0.000 000 67 e4 K +electron volt-kilogram relationship 1.782 661 907 e-36 0.000 000 011 e-36 kg +elementary charge 1.602 176 6208 e-19 0.000 000 0098 e-19 C +elementary charge over h 2.417 989 262 e14 0.000 000 015 e14 A J^-1 +Faraday constant 96 485.332 89 0.000 59 C mol^-1 +Faraday constant for conventional electric current 96 485.3251 0.0012 C_90 mol^-1 +Fermi coupling constant 1.166 3787 e-5 0.000 0006 e-5 GeV^-2 +fine-structure constant 7.297 352 5664 e-3 0.000 000 0017 e-3 +first radiation constant 3.741 771 790 e-16 0.000 000 046 e-16 W m^2 +first radiation constant for spectral radiance 1.191 042 953 e-16 0.000 000 015 e-16 W m^2 sr^-1 +hartree-atomic mass unit relationship 2.921 262 3197 e-8 0.000 000 0013 e-8 u +hartree-electron volt relationship 27.211 386 02 0.000 000 17 eV +Hartree energy 4.359 744 650 e-18 0.000 000 054 e-18 J +Hartree energy in eV 27.211 386 02 0.000 000 17 eV +hartree-hertz relationship 6.579 683 920 711 e15 0.000 000 000 039 e15 Hz +hartree-inverse meter relationship 2.194 746 313 702 e7 0.000 000 000 013 e7 m^-1 +hartree-joule relationship 4.359 744 650 e-18 0.000 000 054 e-18 J +hartree-kelvin relationship 3.157 7513 e5 0.000 0018 e5 K +hartree-kilogram relationship 4.850 870 129 e-35 0.000 000 060 e-35 kg +helion-electron mass ratio 5495.885 279 22 0.000 000 27 +helion g factor -4.255 250 616 0.000 000 050 +helion mag. mom. -1.074 617 522 e-26 0.000 000 014 e-26 J T^-1 +helion mag. mom. to Bohr magneton ratio -1.158 740 958 e-3 0.000 000 014 e-3 +helion mag. mom. to nuclear magneton ratio -2.127 625 308 0.000 000 025 +helion mass 5.006 412 700 e-27 0.000 000 062 e-27 kg +helion mass energy equivalent 4.499 539 341 e-10 0.000 000 055 e-10 J +helion mass energy equivalent in MeV 2808.391 586 0.000 017 MeV +helion mass in u 3.014 932 246 73 0.000 000 000 12 u +helion molar mass 3.014 932 246 73 e-3 0.000 000 000 12 e-3 kg mol^-1 +helion-proton mass ratio 2.993 152 670 46 0.000 000 000 29 +hertz-atomic mass unit relationship 4.439 821 6616 e-24 0.000 000 0020 e-24 u +hertz-electron volt relationship 4.135 667 662 e-15 0.000 000 025 e-15 eV +hertz-hartree relationship 1.519 829 846 0088 e-16 0.000 000 000 0090 e-16 E_h +hertz-inverse meter relationship 3.335 640 951... e-9 (exact) m^-1 +hertz-joule relationship 6.626 070 040 e-34 0.000 000 081 e-34 J +hertz-kelvin relationship 4.799 2447 e-11 0.000 0028 e-11 K +hertz-kilogram relationship 7.372 497 201 e-51 0.000 000 091 e-51 kg +inverse fine-structure constant 137.035 999 139 0.000 000 031 +inverse meter-atomic mass unit relationship 1.331 025 049 00 e-15 0.000 000 000 61 e-15 u +inverse meter-electron volt relationship 1.239 841 9739 e-6 0.000 000 0076 e-6 eV +inverse meter-hartree relationship 4.556 335 252 767 e-8 0.000 000 000 027 e-8 E_h +inverse meter-hertz relationship 299 792 458 (exact) Hz +inverse meter-joule relationship 1.986 445 824 e-25 0.000 000 024 e-25 J +inverse meter-kelvin relationship 1.438 777 36 e-2 0.000 000 83 e-2 K +inverse meter-kilogram relationship 2.210 219 057 e-42 0.000 000 027 e-42 kg +inverse of conductance quantum 12 906.403 7278 0.000 0029 ohm +Josephson constant 483 597.8525 e9 0.0030 e9 Hz V^-1 +joule-atomic mass unit relationship 6.700 535 363 e9 0.000 000 082 e9 u +joule-electron volt relationship 6.241 509 126 e18 0.000 000 038 e18 eV +joule-hartree relationship 2.293 712 317 e17 0.000 000 028 e17 E_h +joule-hertz relationship 1.509 190 205 e33 0.000 000 019 e33 Hz +joule-inverse meter relationship 5.034 116 651 e24 0.000 000 062 e24 m^-1 +joule-kelvin relationship 7.242 9731 e22 0.000 0042 e22 K +joule-kilogram relationship 1.112 650 056... e-17 (exact) kg +kelvin-atomic mass unit relationship 9.251 0842 e-14 0.000 0053 e-14 u +kelvin-electron volt relationship 8.617 3303 e-5 0.000 0050 e-5 eV +kelvin-hartree relationship 3.166 8105 e-6 0.000 0018 e-6 E_h +kelvin-hertz relationship 2.083 6612 e10 0.000 0012 e10 Hz +kelvin-inverse meter relationship 69.503 457 0.000 040 m^-1 +kelvin-joule relationship 1.380 648 52 e-23 0.000 000 79 e-23 J +kelvin-kilogram relationship 1.536 178 65 e-40 0.000 000 88 e-40 kg +kilogram-atomic mass unit relationship 6.022 140 857 e26 0.000 000 074 e26 u +kilogram-electron volt relationship 5.609 588 650 e35 0.000 000 034 e35 eV +kilogram-hartree relationship 2.061 485 823 e34 0.000 000 025 e34 E_h +kilogram-hertz relationship 1.356 392 512 e50 0.000 000 017 e50 Hz +kilogram-inverse meter relationship 4.524 438 411 e41 0.000 000 056 e41 m^-1 +kilogram-joule relationship 8.987 551 787... e16 (exact) J +kilogram-kelvin relationship 6.509 6595 e39 0.000 0037 e39 K +lattice parameter of silicon 543.102 0504 e-12 0.000 0089 e-12 m +Loschmidt constant (273.15 K, 100 kPa) 2.651 6467 e25 0.000 0015 e25 m^-3 +Loschmidt constant (273.15 K, 101.325 kPa) 2.686 7811 e25 0.000 0015 e25 m^-3 +mag. constant 12.566 370 614... e-7 (exact) N A^-2 +mag. flux quantum 2.067 833 831 e-15 0.000 000 013 e-15 Wb +molar gas constant 8.314 4598 0.000 0048 J mol^-1 K^-1 +molar mass constant 1 e-3 (exact) kg mol^-1 +molar mass of carbon-12 12 e-3 (exact) kg mol^-1 +molar Planck constant 3.990 312 7110 e-10 0.000 000 0018 e-10 J s mol^-1 +molar Planck constant times c 0.119 626 565 582 0.000 000 000 054 J m mol^-1 +molar volume of ideal gas (273.15 K, 100 kPa) 22.710 947 e-3 0.000 013 e-3 m^3 mol^-1 +molar volume of ideal gas (273.15 K, 101.325 kPa) 22.413 962 e-3 0.000 013 e-3 m^3 mol^-1 +molar volume of silicon 12.058 832 14 e-6 0.000 000 61 e-6 m^3 mol^-1 +Mo x unit 1.002 099 52 e-13 0.000 000 53 e-13 m +muon Compton wavelength 11.734 441 11 e-15 0.000 000 26 e-15 m +muon Compton wavelength over 2 pi 1.867 594 308 e-15 0.000 000 042 e-15 m +muon-electron mass ratio 206.768 2826 0.000 0046 +muon g factor -2.002 331 8418 0.000 000 0013 +muon mag. mom. -4.490 448 26 e-26 0.000 000 10 e-26 J T^-1 +muon mag. mom. anomaly 1.165 920 89 e-3 0.000 000 63 e-3 +muon mag. mom. to Bohr magneton ratio -4.841 970 48 e-3 0.000 000 11 e-3 +muon mag. mom. to nuclear magneton ratio -8.890 597 05 0.000 000 20 +muon mass 1.883 531 594 e-28 0.000 000 048 e-28 kg +muon mass energy equivalent 1.692 833 774 e-11 0.000 000 043 e-11 J +muon mass energy equivalent in MeV 105.658 3745 0.000 0024 MeV +muon mass in u 0.113 428 9257 0.000 000 0025 u +muon molar mass 0.113 428 9257 e-3 0.000 000 0025 e-3 kg mol^-1 +muon-neutron mass ratio 0.112 454 5167 0.000 000 0025 +muon-proton mag. mom. ratio -3.183 345 142 0.000 000 071 +muon-proton mass ratio 0.112 609 5262 0.000 000 0025 +muon-tau mass ratio 5.946 49 e-2 0.000 54 e-2 +natural unit of action 1.054 571 800 e-34 0.000 000 013 e-34 J s +natural unit of action in eV s 6.582 119 514 e-16 0.000 000 040 e-16 eV s +natural unit of energy 8.187 105 65 e-14 0.000 000 10 e-14 J +natural unit of energy in MeV 0.510 998 9461 0.000 000 0031 MeV +natural unit of length 386.159 267 64 e-15 0.000 000 18 e-15 m +natural unit of mass 9.109 383 56 e-31 0.000 000 11 e-31 kg +natural unit of mom.um 2.730 924 488 e-22 0.000 000 034 e-22 kg m s^-1 +natural unit of mom.um in MeV/c 0.510 998 9461 0.000 000 0031 MeV/c +natural unit of time 1.288 088 667 12 e-21 0.000 000 000 58 e-21 s +natural unit of velocity 299 792 458 (exact) m s^-1 +neutron Compton wavelength 1.319 590 904 81 e-15 0.000 000 000 88 e-15 m +neutron Compton wavelength over 2 pi 0.210 019 415 36 e-15 0.000 000 000 14 e-15 m +neutron-electron mag. mom. ratio 1.040 668 82 e-3 0.000 000 25 e-3 +neutron-electron mass ratio 1838.683 661 58 0.000 000 90 +neutron g factor -3.826 085 45 0.000 000 90 +neutron gyromag. ratio 1.832 471 72 e8 0.000 000 43 e8 s^-1 T^-1 +neutron gyromag. ratio over 2 pi 29.164 6933 0.000 0069 MHz T^-1 +neutron mag. mom. -0.966 236 50 e-26 0.000 000 23 e-26 J T^-1 +neutron mag. mom. to Bohr magneton ratio -1.041 875 63 e-3 0.000 000 25 e-3 +neutron mag. mom. to nuclear magneton ratio -1.913 042 73 0.000 000 45 +neutron mass 1.674 927 471 e-27 0.000 000 021 e-27 kg +neutron mass energy equivalent 1.505 349 739 e-10 0.000 000 019 e-10 J +neutron mass energy equivalent in MeV 939.565 4133 0.000 0058 MeV +neutron mass in u 1.008 664 915 88 0.000 000 000 49 u +neutron molar mass 1.008 664 915 88 e-3 0.000 000 000 49 e-3 kg mol^-1 +neutron-muon mass ratio 8.892 484 08 0.000 000 20 +neutron-proton mag. mom. ratio -0.684 979 34 0.000 000 16 +neutron-proton mass difference 2.305 573 77 e-30 0.000 000 85 e-30 +neutron-proton mass difference energy equivalent 2.072 146 37 e-13 0.000 000 76 e-13 +neutron-proton mass difference energy equivalent in MeV 1.293 332 05 0.000 000 48 +neutron-proton mass difference in u 0.001 388 449 00 0.000 000 000 51 +neutron-proton mass ratio 1.001 378 418 98 0.000 000 000 51 +neutron-tau mass ratio 0.528 790 0.000 048 +neutron to shielded proton mag. mom. ratio -0.684 996 94 0.000 000 16 +Newtonian constant of gravitation 6.674 08 e-11 0.000 31 e-11 m^3 kg^-1 s^-2 +Newtonian constant of gravitation over h-bar c 6.708 61 e-39 0.000 31 e-39 (GeV/c^2)^-2 +nuclear magneton 5.050 783 699 e-27 0.000 000 031 e-27 J T^-1 +nuclear magneton in eV/T 3.152 451 2550 e-8 0.000 000 0015 e-8 eV T^-1 +nuclear magneton in inverse meters per tesla 2.542 623 432 e-2 0.000 000 016 e-2 m^-1 T^-1 +nuclear magneton in K/T 3.658 2690 e-4 0.000 0021 e-4 K T^-1 +nuclear magneton in MHz/T 7.622 593 285 0.000 000 047 MHz T^-1 +Planck constant 6.626 070 040 e-34 0.000 000 081 e-34 J s +Planck constant in eV s 4.135 667 662 e-15 0.000 000 025 e-15 eV s +Planck constant over 2 pi 1.054 571 800 e-34 0.000 000 013 e-34 J s +Planck constant over 2 pi in eV s 6.582 119 514 e-16 0.000 000 040 e-16 eV s +Planck constant over 2 pi times c in MeV fm 197.326 9788 0.000 0012 MeV fm +Planck length 1.616 229 e-35 0.000 038 e-35 m +Planck mass 2.176 470 e-8 0.000 051 e-8 kg +Planck mass energy equivalent in GeV 1.220 910 e19 0.000 029 e19 GeV +Planck temperature 1.416 808 e32 0.000 033 e32 K +Planck time 5.391 16 e-44 0.000 13 e-44 s +proton charge to mass quotient 9.578 833 226 e7 0.000 000 059 e7 C kg^-1 +proton Compton wavelength 1.321 409 853 96 e-15 0.000 000 000 61 e-15 m +proton Compton wavelength over 2 pi 0.210 308 910 109 e-15 0.000 000 000 097 e-15 m +proton-electron mass ratio 1836.152 673 89 0.000 000 17 +proton g factor 5.585 694 702 0.000 000 017 +proton gyromag. ratio 2.675 221 900 e8 0.000 000 018 e8 s^-1 T^-1 +proton gyromag. ratio over 2 pi 42.577 478 92 0.000 000 29 MHz T^-1 +proton mag. mom. 1.410 606 7873 e-26 0.000 000 0097 e-26 J T^-1 +proton mag. mom. to Bohr magneton ratio 1.521 032 2053 e-3 0.000 000 0046 e-3 +proton mag. mom. to nuclear magneton ratio 2.792 847 3508 0.000 000 0085 +proton mag. shielding correction 25.691 e-6 0.011 e-6 +proton mass 1.672 621 898 e-27 0.000 000 021 e-27 kg +proton mass energy equivalent 1.503 277 593 e-10 0.000 000 018 e-10 J +proton mass energy equivalent in MeV 938.272 0813 0.000 0058 MeV +proton mass in u 1.007 276 466 879 0.000 000 000 091 u +proton molar mass 1.007 276 466 879 e-3 0.000 000 000 091 e-3 kg mol^-1 +proton-muon mass ratio 8.880 243 38 0.000 000 20 +proton-neutron mag. mom. ratio -1.459 898 05 0.000 000 34 +proton-neutron mass ratio 0.998 623 478 44 0.000 000 000 51 +proton rms charge radius 0.8751 e-15 0.0061 e-15 m +proton-tau mass ratio 0.528 063 0.000 048 +quantum of circulation 3.636 947 5486 e-4 0.000 000 0017 e-4 m^2 s^-1 +quantum of circulation times 2 7.273 895 0972 e-4 0.000 000 0033 e-4 m^2 s^-1 +Rydberg constant 10 973 731.568 508 0.000 065 m^-1 +Rydberg constant times c in Hz 3.289 841 960 355 e15 0.000 000 000 019 e15 Hz +Rydberg constant times hc in eV 13.605 693 009 0.000 000 084 eV +Rydberg constant times hc in J 2.179 872 325 e-18 0.000 000 027 e-18 J +Sackur-Tetrode constant (1 K, 100 kPa) -1.151 7084 0.000 0014 +Sackur-Tetrode constant (1 K, 101.325 kPa) -1.164 8714 0.000 0014 +second radiation constant 1.438 777 36 e-2 0.000 000 83 e-2 m K +shielded helion gyromag. ratio 2.037 894 585 e8 0.000 000 027 e8 s^-1 T^-1 +shielded helion gyromag. ratio over 2 pi 32.434 099 66 0.000 000 43 MHz T^-1 +shielded helion mag. mom. -1.074 553 080 e-26 0.000 000 014 e-26 J T^-1 +shielded helion mag. mom. to Bohr magneton ratio -1.158 671 471 e-3 0.000 000 014 e-3 +shielded helion mag. mom. to nuclear magneton ratio -2.127 497 720 0.000 000 025 +shielded helion to proton mag. mom. ratio -0.761 766 5603 0.000 000 0092 +shielded helion to shielded proton mag. mom. ratio -0.761 786 1313 0.000 000 0033 +shielded proton gyromag. ratio 2.675 153 171 e8 0.000 000 033 e8 s^-1 T^-1 +shielded proton gyromag. ratio over 2 pi 42.576 385 07 0.000 000 53 MHz T^-1 +shielded proton mag. mom. 1.410 570 547 e-26 0.000 000 018 e-26 J T^-1 +shielded proton mag. mom. to Bohr magneton ratio 1.520 993 128 e-3 0.000 000 017 e-3 +shielded proton mag. mom. to nuclear magneton ratio 2.792 775 600 0.000 000 030 +speed of light in vacuum 299 792 458 (exact) m s^-1 +standard acceleration of gravity 9.806 65 (exact) m s^-2 +standard atmosphere 101 325 (exact) Pa +standard-state pressure 100 000 (exact) Pa +Stefan-Boltzmann constant 5.670 367 e-8 0.000 013 e-8 W m^-2 K^-4 +tau Compton wavelength 0.697 787 e-15 0.000 063 e-15 m +tau Compton wavelength over 2 pi 0.111 056 e-15 0.000 010 e-15 m +tau-electron mass ratio 3477.15 0.31 +tau mass 3.167 47 e-27 0.000 29 e-27 kg +tau mass energy equivalent 2.846 78 e-10 0.000 26 e-10 J +tau mass energy equivalent in MeV 1776.82 0.16 MeV +tau mass in u 1.907 49 0.000 17 u +tau molar mass 1.907 49 e-3 0.000 17 e-3 kg mol^-1 +tau-muon mass ratio 16.8167 0.0015 +tau-neutron mass ratio 1.891 11 0.000 17 +tau-proton mass ratio 1.893 72 0.000 17 +Thomson cross section 0.665 245 871 58 e-28 0.000 000 000 91 e-28 m^2 +triton-electron mass ratio 5496.921 535 88 0.000 000 26 +triton g factor 5.957 924 920 0.000 000 028 +triton mag. mom. 1.504 609 503 e-26 0.000 000 012 e-26 J T^-1 +triton mag. mom. to Bohr magneton ratio 1.622 393 6616 e-3 0.000 000 0076 e-3 +triton mag. mom. to nuclear magneton ratio 2.978 962 460 0.000 000 014 +triton mass 5.007 356 665 e-27 0.000 000 062 e-27 kg +triton mass energy equivalent 4.500 387 735 e-10 0.000 000 055 e-10 J +triton mass energy equivalent in MeV 2808.921 112 0.000 017 MeV +triton mass in u 3.015 500 716 32 0.000 000 000 11 u +triton molar mass 3.015 500 716 32 e-3 0.000 000 000 11 e-3 kg mol^-1 +triton-proton mass ratio 2.993 717 033 48 0.000 000 000 22 +unified atomic mass unit 1.660 539 040 e-27 0.000 000 020 e-27 kg +von Klitzing constant 25 812.807 4555 0.000 0059 ohm +weak mixing angle 0.2223 0.0021 +Wien frequency displacement law constant 5.878 9238 e10 0.000 0034 e10 Hz K^-1 +Wien wavelength displacement law constant 2.897 7729 e-3 0.000 0017 e-3 m K diff --git a/scripts/codata/allascii_2018.txt b/scripts/codata/allascii_2018.txt new file mode 100644 index 0000000000..537aea4078 --- /dev/null +++ b/scripts/codata/allascii_2018.txt @@ -0,0 +1,365 @@ + + Fundamental Physical Constants --- Complete Listing + 2018 CODATA adjustment + + + From: http://physics.nist.gov/constants + + + + Quantity Value Uncertainty Unit +----------------------------------------------------------------------------------------------------------------------------- +alpha particle-electron mass ratio 7294.299 541 42 0.000 000 24 +alpha particle mass 6.644 657 3357 e-27 0.000 000 0020 e-27 kg +alpha particle mass energy equivalent 5.971 920 1914 e-10 0.000 000 0018 e-10 J +alpha particle mass energy equivalent in MeV 3727.379 4066 0.000 0011 MeV +alpha particle mass in u 4.001 506 179 127 0.000 000 000 063 u +alpha particle molar mass 4.001 506 1777 e-3 0.000 000 0012 e-3 kg mol^-1 +alpha particle-proton mass ratio 3.972 599 690 09 0.000 000 000 22 +alpha particle relative atomic mass 4.001 506 179 127 0.000 000 000 063 +Angstrom star 1.000 014 95 e-10 0.000 000 90 e-10 m +atomic mass constant 1.660 539 066 60 e-27 0.000 000 000 50 e-27 kg +atomic mass constant energy equivalent 1.492 418 085 60 e-10 0.000 000 000 45 e-10 J +atomic mass constant energy equivalent in MeV 931.494 102 42 0.000 000 28 MeV +atomic mass unit-electron volt relationship 9.314 941 0242 e8 0.000 000 0028 e8 eV +atomic mass unit-hartree relationship 3.423 177 6874 e7 0.000 000 0010 e7 E_h +atomic mass unit-hertz relationship 2.252 342 718 71 e23 0.000 000 000 68 e23 Hz +atomic mass unit-inverse meter relationship 7.513 006 6104 e14 0.000 000 0023 e14 m^-1 +atomic mass unit-joule relationship 1.492 418 085 60 e-10 0.000 000 000 45 e-10 J +atomic mass unit-kelvin relationship 1.080 954 019 16 e13 0.000 000 000 33 e13 K +atomic mass unit-kilogram relationship 1.660 539 066 60 e-27 0.000 000 000 50 e-27 kg +atomic unit of 1st hyperpolarizability 3.206 361 3061 e-53 0.000 000 0015 e-53 C^3 m^3 J^-2 +atomic unit of 2nd hyperpolarizability 6.235 379 9905 e-65 0.000 000 0038 e-65 C^4 m^4 J^-3 +atomic unit of action 1.054 571 817... e-34 (exact) J s +atomic unit of charge 1.602 176 634 e-19 (exact) C +atomic unit of charge density 1.081 202 384 57 e12 0.000 000 000 49 e12 C m^-3 +atomic unit of current 6.623 618 237 510 e-3 0.000 000 000 013 e-3 A +atomic unit of electric dipole mom. 8.478 353 6255 e-30 0.000 000 0013 e-30 C m +atomic unit of electric field 5.142 206 747 63 e11 0.000 000 000 78 e11 V m^-1 +atomic unit of electric field gradient 9.717 362 4292 e21 0.000 000 0029 e21 V m^-2 +atomic unit of electric polarizability 1.648 777 274 36 e-41 0.000 000 000 50 e-41 C^2 m^2 J^-1 +atomic unit of electric potential 27.211 386 245 988 0.000 000 000 053 V +atomic unit of electric quadrupole mom. 4.486 551 5246 e-40 0.000 000 0014 e-40 C m^2 +atomic unit of energy 4.359 744 722 2071 e-18 0.000 000 000 0085 e-18 J +atomic unit of force 8.238 723 4983 e-8 0.000 000 0012 e-8 N +atomic unit of length 5.291 772 109 03 e-11 0.000 000 000 80 e-11 m +atomic unit of mag. dipole mom. 1.854 802 015 66 e-23 0.000 000 000 56 e-23 J T^-1 +atomic unit of mag. flux density 2.350 517 567 58 e5 0.000 000 000 71 e5 T +atomic unit of magnetizability 7.891 036 6008 e-29 0.000 000 0048 e-29 J T^-2 +atomic unit of mass 9.109 383 7015 e-31 0.000 000 0028 e-31 kg +atomic unit of momentum 1.992 851 914 10 e-24 0.000 000 000 30 e-24 kg m s^-1 +atomic unit of permittivity 1.112 650 055 45 e-10 0.000 000 000 17 e-10 F m^-1 +atomic unit of time 2.418 884 326 5857 e-17 0.000 000 000 0047 e-17 s +atomic unit of velocity 2.187 691 263 64 e6 0.000 000 000 33 e6 m s^-1 +Avogadro constant 6.022 140 76 e23 (exact) mol^-1 +Bohr magneton 9.274 010 0783 e-24 0.000 000 0028 e-24 J T^-1 +Bohr magneton in eV/T 5.788 381 8060 e-5 0.000 000 0017 e-5 eV T^-1 +Bohr magneton in Hz/T 1.399 624 493 61 e10 0.000 000 000 42 e10 Hz T^-1 +Bohr magneton in inverse meter per tesla 46.686 447 783 0.000 000 014 m^-1 T^-1 +Bohr magneton in K/T 0.671 713 815 63 0.000 000 000 20 K T^-1 +Bohr radius 5.291 772 109 03 e-11 0.000 000 000 80 e-11 m +Boltzmann constant 1.380 649 e-23 (exact) J K^-1 +Boltzmann constant in eV/K 8.617 333 262... e-5 (exact) eV K^-1 +Boltzmann constant in Hz/K 2.083 661 912... e10 (exact) Hz K^-1 +Boltzmann constant in inverse meter per kelvin 69.503 480 04... (exact) m^-1 K^-1 +characteristic impedance of vacuum 376.730 313 668 0.000 000 057 ohm +classical electron radius 2.817 940 3262 e-15 0.000 000 0013 e-15 m +Compton wavelength 2.426 310 238 67 e-12 0.000 000 000 73 e-12 m +conductance quantum 7.748 091 729... e-5 (exact) S +conventional value of ampere-90 1.000 000 088 87... (exact) A +conventional value of coulomb-90 1.000 000 088 87... (exact) C +conventional value of farad-90 0.999 999 982 20... (exact) F +conventional value of henry-90 1.000 000 017 79... (exact) H +conventional value of Josephson constant 483 597.9 e9 (exact) Hz V^-1 +conventional value of ohm-90 1.000 000 017 79... (exact) ohm +conventional value of volt-90 1.000 000 106 66... (exact) V +conventional value of von Klitzing constant 25 812.807 (exact) ohm +conventional value of watt-90 1.000 000 195 53... (exact) W +Copper x unit 1.002 076 97 e-13 0.000 000 28 e-13 m +deuteron-electron mag. mom. ratio -4.664 345 551 e-4 0.000 000 012 e-4 +deuteron-electron mass ratio 3670.482 967 88 0.000 000 13 +deuteron g factor 0.857 438 2338 0.000 000 0022 +deuteron mag. mom. 4.330 735 094 e-27 0.000 000 011 e-27 J T^-1 +deuteron mag. mom. to Bohr magneton ratio 4.669 754 570 e-4 0.000 000 012 e-4 +deuteron mag. mom. to nuclear magneton ratio 0.857 438 2338 0.000 000 0022 +deuteron mass 3.343 583 7724 e-27 0.000 000 0010 e-27 kg +deuteron mass energy equivalent 3.005 063 231 02 e-10 0.000 000 000 91 e-10 J +deuteron mass energy equivalent in MeV 1875.612 942 57 0.000 000 57 MeV +deuteron mass in u 2.013 553 212 745 0.000 000 000 040 u +deuteron molar mass 2.013 553 212 05 e-3 0.000 000 000 61 e-3 kg mol^-1 +deuteron-neutron mag. mom. ratio -0.448 206 53 0.000 000 11 +deuteron-proton mag. mom. ratio 0.307 012 209 39 0.000 000 000 79 +deuteron-proton mass ratio 1.999 007 501 39 0.000 000 000 11 +deuteron relative atomic mass 2.013 553 212 745 0.000 000 000 040 +deuteron rms charge radius 2.127 99 e-15 0.000 74 e-15 m +electron charge to mass quotient -1.758 820 010 76 e11 0.000 000 000 53 e11 C kg^-1 +electron-deuteron mag. mom. ratio -2143.923 4915 0.000 0056 +electron-deuteron mass ratio 2.724 437 107 462 e-4 0.000 000 000 096 e-4 +electron g factor -2.002 319 304 362 56 0.000 000 000 000 35 +electron gyromag. ratio 1.760 859 630 23 e11 0.000 000 000 53 e11 s^-1 T^-1 +electron gyromag. ratio in MHz/T 28 024.951 4242 0.000 0085 MHz T^-1 +electron-helion mass ratio 1.819 543 074 573 e-4 0.000 000 000 079 e-4 +electron mag. mom. -9.284 764 7043 e-24 0.000 000 0028 e-24 J T^-1 +electron mag. mom. anomaly 1.159 652 181 28 e-3 0.000 000 000 18 e-3 +electron mag. mom. to Bohr magneton ratio -1.001 159 652 181 28 0.000 000 000 000 18 +electron mag. mom. to nuclear magneton ratio -1838.281 971 88 0.000 000 11 +electron mass 9.109 383 7015 e-31 0.000 000 0028 e-31 kg +electron mass energy equivalent 8.187 105 7769 e-14 0.000 000 0025 e-14 J +electron mass energy equivalent in MeV 0.510 998 950 00 0.000 000 000 15 MeV +electron mass in u 5.485 799 090 65 e-4 0.000 000 000 16 e-4 u +electron molar mass 5.485 799 0888 e-7 0.000 000 0017 e-7 kg mol^-1 +electron-muon mag. mom. ratio 206.766 9883 0.000 0046 +electron-muon mass ratio 4.836 331 69 e-3 0.000 000 11 e-3 +electron-neutron mag. mom. ratio 960.920 50 0.000 23 +electron-neutron mass ratio 5.438 673 4424 e-4 0.000 000 0026 e-4 +electron-proton mag. mom. ratio -658.210 687 89 0.000 000 20 +electron-proton mass ratio 5.446 170 214 87 e-4 0.000 000 000 33 e-4 +electron relative atomic mass 5.485 799 090 65 e-4 0.000 000 000 16 e-4 +electron-tau mass ratio 2.875 85 e-4 0.000 19 e-4 +electron to alpha particle mass ratio 1.370 933 554 787 e-4 0.000 000 000 045 e-4 +electron to shielded helion mag. mom. ratio 864.058 257 0.000 010 +electron to shielded proton mag. mom. ratio -658.227 5971 0.000 0072 +electron-triton mass ratio 1.819 200 062 251 e-4 0.000 000 000 090 e-4 +electron volt 1.602 176 634 e-19 (exact) J +electron volt-atomic mass unit relationship 1.073 544 102 33 e-9 0.000 000 000 32 e-9 u +electron volt-hartree relationship 3.674 932 217 5655 e-2 0.000 000 000 0071 e-2 E_h +electron volt-hertz relationship 2.417 989 242... e14 (exact) Hz +electron volt-inverse meter relationship 8.065 543 937... e5 (exact) m^-1 +electron volt-joule relationship 1.602 176 634 e-19 (exact) J +electron volt-kelvin relationship 1.160 451 812... e4 (exact) K +electron volt-kilogram relationship 1.782 661 921... e-36 (exact) kg +elementary charge 1.602 176 634 e-19 (exact) C +elementary charge over h-bar 1.519 267 447... e15 (exact) A J^-1 +Faraday constant 96 485.332 12... (exact) C mol^-1 +Fermi coupling constant 1.166 3787 e-5 0.000 0006 e-5 GeV^-2 +fine-structure constant 7.297 352 5693 e-3 0.000 000 0011 e-3 +first radiation constant 3.741 771 852... e-16 (exact) W m^2 +first radiation constant for spectral radiance 1.191 042 972... e-16 (exact) W m^2 sr^-1 +hartree-atomic mass unit relationship 2.921 262 322 05 e-8 0.000 000 000 88 e-8 u +hartree-electron volt relationship 27.211 386 245 988 0.000 000 000 053 eV +Hartree energy 4.359 744 722 2071 e-18 0.000 000 000 0085 e-18 J +Hartree energy in eV 27.211 386 245 988 0.000 000 000 053 eV +hartree-hertz relationship 6.579 683 920 502 e15 0.000 000 000 013 e15 Hz +hartree-inverse meter relationship 2.194 746 313 6320 e7 0.000 000 000 0043 e7 m^-1 +hartree-joule relationship 4.359 744 722 2071 e-18 0.000 000 000 0085 e-18 J +hartree-kelvin relationship 3.157 750 248 0407 e5 0.000 000 000 0061 e5 K +hartree-kilogram relationship 4.850 870 209 5432 e-35 0.000 000 000 0094 e-35 kg +helion-electron mass ratio 5495.885 280 07 0.000 000 24 +helion g factor -4.255 250 615 0.000 000 050 +helion mag. mom. -1.074 617 532 e-26 0.000 000 013 e-26 J T^-1 +helion mag. mom. to Bohr magneton ratio -1.158 740 958 e-3 0.000 000 014 e-3 +helion mag. mom. to nuclear magneton ratio -2.127 625 307 0.000 000 025 +helion mass 5.006 412 7796 e-27 0.000 000 0015 e-27 kg +helion mass energy equivalent 4.499 539 4125 e-10 0.000 000 0014 e-10 J +helion mass energy equivalent in MeV 2808.391 607 43 0.000 000 85 MeV +helion mass in u 3.014 932 247 175 0.000 000 000 097 u +helion molar mass 3.014 932 246 13 e-3 0.000 000 000 91 e-3 kg mol^-1 +helion-proton mass ratio 2.993 152 671 67 0.000 000 000 13 +helion relative atomic mass 3.014 932 247 175 0.000 000 000 097 +helion shielding shift 5.996 743 e-5 0.000 010 e-5 +hertz-atomic mass unit relationship 4.439 821 6652 e-24 0.000 000 0013 e-24 u +hertz-electron volt relationship 4.135 667 696... e-15 (exact) eV +hertz-hartree relationship 1.519 829 846 0570 e-16 0.000 000 000 0029 e-16 E_h +hertz-inverse meter relationship 3.335 640 951... e-9 (exact) m^-1 +hertz-joule relationship 6.626 070 15 e-34 (exact) J +hertz-kelvin relationship 4.799 243 073... e-11 (exact) K +hertz-kilogram relationship 7.372 497 323... e-51 (exact) kg +hyperfine transition frequency of Cs-133 9 192 631 770 (exact) Hz +inverse fine-structure constant 137.035 999 084 0.000 000 021 +inverse meter-atomic mass unit relationship 1.331 025 050 10 e-15 0.000 000 000 40 e-15 u +inverse meter-electron volt relationship 1.239 841 984... e-6 (exact) eV +inverse meter-hartree relationship 4.556 335 252 9120 e-8 0.000 000 000 0088 e-8 E_h +inverse meter-hertz relationship 299 792 458 (exact) Hz +inverse meter-joule relationship 1.986 445 857... e-25 (exact) J +inverse meter-kelvin relationship 1.438 776 877... e-2 (exact) K +inverse meter-kilogram relationship 2.210 219 094... e-42 (exact) kg +inverse of conductance quantum 12 906.403 72... (exact) ohm +Josephson constant 483 597.848 4... e9 (exact) Hz V^-1 +joule-atomic mass unit relationship 6.700 535 2565 e9 0.000 000 0020 e9 u +joule-electron volt relationship 6.241 509 074... e18 (exact) eV +joule-hartree relationship 2.293 712 278 3963 e17 0.000 000 000 0045 e17 E_h +joule-hertz relationship 1.509 190 179... e33 (exact) Hz +joule-inverse meter relationship 5.034 116 567... e24 (exact) m^-1 +joule-kelvin relationship 7.242 970 516... e22 (exact) K +joule-kilogram relationship 1.112 650 056... e-17 (exact) kg +kelvin-atomic mass unit relationship 9.251 087 3014 e-14 0.000 000 0028 e-14 u +kelvin-electron volt relationship 8.617 333 262... e-5 (exact) eV +kelvin-hartree relationship 3.166 811 563 4556 e-6 0.000 000 000 0061 e-6 E_h +kelvin-hertz relationship 2.083 661 912... e10 (exact) Hz +kelvin-inverse meter relationship 69.503 480 04... (exact) m^-1 +kelvin-joule relationship 1.380 649 e-23 (exact) J +kelvin-kilogram relationship 1.536 179 187... e-40 (exact) kg +kilogram-atomic mass unit relationship 6.022 140 7621 e26 0.000 000 0018 e26 u +kilogram-electron volt relationship 5.609 588 603... e35 (exact) eV +kilogram-hartree relationship 2.061 485 788 7409 e34 0.000 000 000 0040 e34 E_h +kilogram-hertz relationship 1.356 392 489... e50 (exact) Hz +kilogram-inverse meter relationship 4.524 438 335... e41 (exact) m^-1 +kilogram-joule relationship 8.987 551 787... e16 (exact) J +kilogram-kelvin relationship 6.509 657 260... e39 (exact) K +lattice parameter of silicon 5.431 020 511 e-10 0.000 000 089 e-10 m +lattice spacing of ideal Si (220) 1.920 155 716 e-10 0.000 000 032 e-10 m +Loschmidt constant (273.15 K, 100 kPa) 2.651 645 804... e25 (exact) m^-3 +Loschmidt constant (273.15 K, 101.325 kPa) 2.686 780 111... e25 (exact) m^-3 +luminous efficacy 683 (exact) lm W^-1 +mag. flux quantum 2.067 833 848... e-15 (exact) Wb +molar gas constant 8.314 462 618... (exact) J mol^-1 K^-1 +molar mass constant 0.999 999 999 65 e-3 0.000 000 000 30 e-3 kg mol^-1 +molar mass of carbon-12 11.999 999 9958 e-3 0.000 000 0036 e-3 kg mol^-1 +molar Planck constant 3.990 312 712... e-10 (exact) J Hz^-1 mol^-1 +molar volume of ideal gas (273.15 K, 100 kPa) 22.710 954 64... e-3 (exact) m^3 mol^-1 +molar volume of ideal gas (273.15 K, 101.325 kPa) 22.413 969 54... e-3 (exact) m^3 mol^-1 +molar volume of silicon 1.205 883 199 e-5 0.000 000 060 e-5 m^3 mol^-1 +Molybdenum x unit 1.002 099 52 e-13 0.000 000 53 e-13 m +muon Compton wavelength 1.173 444 110 e-14 0.000 000 026 e-14 m +muon-electron mass ratio 206.768 2830 0.000 0046 +muon g factor -2.002 331 8418 0.000 000 0013 +muon mag. mom. -4.490 448 30 e-26 0.000 000 10 e-26 J T^-1 +muon mag. mom. anomaly 1.165 920 89 e-3 0.000 000 63 e-3 +muon mag. mom. to Bohr magneton ratio -4.841 970 47 e-3 0.000 000 11 e-3 +muon mag. mom. to nuclear magneton ratio -8.890 597 03 0.000 000 20 +muon mass 1.883 531 627 e-28 0.000 000 042 e-28 kg +muon mass energy equivalent 1.692 833 804 e-11 0.000 000 038 e-11 J +muon mass energy equivalent in MeV 105.658 3755 0.000 0023 MeV +muon mass in u 0.113 428 9259 0.000 000 0025 u +muon molar mass 1.134 289 259 e-4 0.000 000 025 e-4 kg mol^-1 +muon-neutron mass ratio 0.112 454 5170 0.000 000 0025 +muon-proton mag. mom. ratio -3.183 345 142 0.000 000 071 +muon-proton mass ratio 0.112 609 5264 0.000 000 0025 +muon-tau mass ratio 5.946 35 e-2 0.000 40 e-2 +natural unit of action 1.054 571 817... e-34 (exact) J s +natural unit of action in eV s 6.582 119 569... e-16 (exact) eV s +natural unit of energy 8.187 105 7769 e-14 0.000 000 0025 e-14 J +natural unit of energy in MeV 0.510 998 950 00 0.000 000 000 15 MeV +natural unit of length 3.861 592 6796 e-13 0.000 000 0012 e-13 m +natural unit of mass 9.109 383 7015 e-31 0.000 000 0028 e-31 kg +natural unit of momentum 2.730 924 530 75 e-22 0.000 000 000 82 e-22 kg m s^-1 +natural unit of momentum in MeV/c 0.510 998 950 00 0.000 000 000 15 MeV/c +natural unit of time 1.288 088 668 19 e-21 0.000 000 000 39 e-21 s +natural unit of velocity 299 792 458 (exact) m s^-1 +neutron Compton wavelength 1.319 590 905 81 e-15 0.000 000 000 75 e-15 m +neutron-electron mag. mom. ratio 1.040 668 82 e-3 0.000 000 25 e-3 +neutron-electron mass ratio 1838.683 661 73 0.000 000 89 +neutron g factor -3.826 085 45 0.000 000 90 +neutron gyromag. ratio 1.832 471 71 e8 0.000 000 43 e8 s^-1 T^-1 +neutron gyromag. ratio in MHz/T 29.164 6931 0.000 0069 MHz T^-1 +neutron mag. mom. -9.662 3651 e-27 0.000 0023 e-27 J T^-1 +neutron mag. mom. to Bohr magneton ratio -1.041 875 63 e-3 0.000 000 25 e-3 +neutron mag. mom. to nuclear magneton ratio -1.913 042 73 0.000 000 45 +neutron mass 1.674 927 498 04 e-27 0.000 000 000 95 e-27 kg +neutron mass energy equivalent 1.505 349 762 87 e-10 0.000 000 000 86 e-10 J +neutron mass energy equivalent in MeV 939.565 420 52 0.000 000 54 MeV +neutron mass in u 1.008 664 915 95 0.000 000 000 49 u +neutron molar mass 1.008 664 915 60 e-3 0.000 000 000 57 e-3 kg mol^-1 +neutron-muon mass ratio 8.892 484 06 0.000 000 20 +neutron-proton mag. mom. ratio -0.684 979 34 0.000 000 16 +neutron-proton mass difference 2.305 574 35 e-30 0.000 000 82 e-30 kg +neutron-proton mass difference energy equivalent 2.072 146 89 e-13 0.000 000 74 e-13 J +neutron-proton mass difference energy equivalent in MeV 1.293 332 36 0.000 000 46 MeV +neutron-proton mass difference in u 1.388 449 33 e-3 0.000 000 49 e-3 u +neutron-proton mass ratio 1.001 378 419 31 0.000 000 000 49 +neutron relative atomic mass 1.008 664 915 95 0.000 000 000 49 +neutron-tau mass ratio 0.528 779 0.000 036 +neutron to shielded proton mag. mom. ratio -0.684 996 94 0.000 000 16 +Newtonian constant of gravitation 6.674 30 e-11 0.000 15 e-11 m^3 kg^-1 s^-2 +Newtonian constant of gravitation over h-bar c 6.708 83 e-39 0.000 15 e-39 (GeV/c^2)^-2 +nuclear magneton 5.050 783 7461 e-27 0.000 000 0015 e-27 J T^-1 +nuclear magneton in eV/T 3.152 451 258 44 e-8 0.000 000 000 96 e-8 eV T^-1 +nuclear magneton in inverse meter per tesla 2.542 623 413 53 e-2 0.000 000 000 78 e-2 m^-1 T^-1 +nuclear magneton in K/T 3.658 267 7756 e-4 0.000 000 0011 e-4 K T^-1 +nuclear magneton in MHz/T 7.622 593 2291 0.000 000 0023 MHz T^-1 +Planck constant 6.626 070 15 e-34 (exact) J Hz^-1 +Planck constant in eV/Hz 4.135 667 696... e-15 (exact) eV Hz^-1 +Planck length 1.616 255 e-35 0.000 018 e-35 m +Planck mass 2.176 434 e-8 0.000 024 e-8 kg +Planck mass energy equivalent in GeV 1.220 890 e19 0.000 014 e19 GeV +Planck temperature 1.416 784 e32 0.000 016 e32 K +Planck time 5.391 247 e-44 0.000 060 e-44 s +proton charge to mass quotient 9.578 833 1560 e7 0.000 000 0029 e7 C kg^-1 +proton Compton wavelength 1.321 409 855 39 e-15 0.000 000 000 40 e-15 m +proton-electron mass ratio 1836.152 673 43 0.000 000 11 +proton g factor 5.585 694 6893 0.000 000 0016 +proton gyromag. ratio 2.675 221 8744 e8 0.000 000 0011 e8 s^-1 T^-1 +proton gyromag. ratio in MHz/T 42.577 478 518 0.000 000 018 MHz T^-1 +proton mag. mom. 1.410 606 797 36 e-26 0.000 000 000 60 e-26 J T^-1 +proton mag. mom. to Bohr magneton ratio 1.521 032 202 30 e-3 0.000 000 000 46 e-3 +proton mag. mom. to nuclear magneton ratio 2.792 847 344 63 0.000 000 000 82 +proton mag. shielding correction 2.5689 e-5 0.0011 e-5 +proton mass 1.672 621 923 69 e-27 0.000 000 000 51 e-27 kg +proton mass energy equivalent 1.503 277 615 98 e-10 0.000 000 000 46 e-10 J +proton mass energy equivalent in MeV 938.272 088 16 0.000 000 29 MeV +proton mass in u 1.007 276 466 621 0.000 000 000 053 u +proton molar mass 1.007 276 466 27 e-3 0.000 000 000 31 e-3 kg mol^-1 +proton-muon mass ratio 8.880 243 37 0.000 000 20 +proton-neutron mag. mom. ratio -1.459 898 05 0.000 000 34 +proton-neutron mass ratio 0.998 623 478 12 0.000 000 000 49 +proton relative atomic mass 1.007 276 466 621 0.000 000 000 053 +proton rms charge radius 8.414 e-16 0.019 e-16 m +proton-tau mass ratio 0.528 051 0.000 036 +quantum of circulation 3.636 947 5516 e-4 0.000 000 0011 e-4 m^2 s^-1 +quantum of circulation times 2 7.273 895 1032 e-4 0.000 000 0022 e-4 m^2 s^-1 +reduced Compton wavelength 3.861 592 6796 e-13 0.000 000 0012 e-13 m +reduced muon Compton wavelength 1.867 594 306 e-15 0.000 000 042 e-15 m +reduced neutron Compton wavelength 2.100 194 1552 e-16 0.000 000 0012 e-16 m +reduced Planck constant 1.054 571 817... e-34 (exact) J s +reduced Planck constant in eV s 6.582 119 569... e-16 (exact) eV s +reduced Planck constant times c in MeV fm 197.326 980 4... (exact) MeV fm +reduced proton Compton wavelength 2.103 089 103 36 e-16 0.000 000 000 64 e-16 m +reduced tau Compton wavelength 1.110 538 e-16 0.000 075 e-16 m +Rydberg constant 10 973 731.568 160 0.000 021 m^-1 +Rydberg constant times c in Hz 3.289 841 960 2508 e15 0.000 000 000 0064 e15 Hz +Rydberg constant times hc in eV 13.605 693 122 994 0.000 000 000 026 eV +Rydberg constant times hc in J 2.179 872 361 1035 e-18 0.000 000 000 0042 e-18 J +Sackur-Tetrode constant (1 K, 100 kPa) -1.151 707 537 06 0.000 000 000 45 +Sackur-Tetrode constant (1 K, 101.325 kPa) -1.164 870 523 58 0.000 000 000 45 +second radiation constant 1.438 776 877... e-2 (exact) m K +shielded helion gyromag. ratio 2.037 894 569 e8 0.000 000 024 e8 s^-1 T^-1 +shielded helion gyromag. ratio in MHz/T 32.434 099 42 0.000 000 38 MHz T^-1 +shielded helion mag. mom. -1.074 553 090 e-26 0.000 000 013 e-26 J T^-1 +shielded helion mag. mom. to Bohr magneton ratio -1.158 671 471 e-3 0.000 000 014 e-3 +shielded helion mag. mom. to nuclear magneton ratio -2.127 497 719 0.000 000 025 +shielded helion to proton mag. mom. ratio -0.761 766 5618 0.000 000 0089 +shielded helion to shielded proton mag. mom. ratio -0.761 786 1313 0.000 000 0033 +shielded proton gyromag. ratio 2.675 153 151 e8 0.000 000 029 e8 s^-1 T^-1 +shielded proton gyromag. ratio in MHz/T 42.576 384 74 0.000 000 46 MHz T^-1 +shielded proton mag. mom. 1.410 570 560 e-26 0.000 000 015 e-26 J T^-1 +shielded proton mag. mom. to Bohr magneton ratio 1.520 993 128 e-3 0.000 000 017 e-3 +shielded proton mag. mom. to nuclear magneton ratio 2.792 775 599 0.000 000 030 +shielding difference of d and p in HD 2.0200 e-8 0.0020 e-8 +shielding difference of t and p in HT 2.4140 e-8 0.0020 e-8 +speed of light in vacuum 299 792 458 (exact) m s^-1 +standard acceleration of gravity 9.806 65 (exact) m s^-2 +standard atmosphere 101 325 (exact) Pa +standard-state pressure 100 000 (exact) Pa +Stefan-Boltzmann constant 5.670 374 419... e-8 (exact) W m^-2 K^-4 +tau Compton wavelength 6.977 71 e-16 0.000 47 e-16 m +tau-electron mass ratio 3477.23 0.23 +tau energy equivalent 1776.86 0.12 MeV +tau mass 3.167 54 e-27 0.000 21 e-27 kg +tau mass energy equivalent 2.846 84 e-10 0.000 19 e-10 J +tau mass in u 1.907 54 0.000 13 u +tau molar mass 1.907 54 e-3 0.000 13 e-3 kg mol^-1 +tau-muon mass ratio 16.8170 0.0011 +tau-neutron mass ratio 1.891 15 0.000 13 +tau-proton mass ratio 1.893 76 0.000 13 +Thomson cross section 6.652 458 7321 e-29 0.000 000 0060 e-29 m^2 +triton-electron mass ratio 5496.921 535 73 0.000 000 27 +triton g factor 5.957 924 931 0.000 000 012 +triton mag. mom. 1.504 609 5202 e-26 0.000 000 0030 e-26 J T^-1 +triton mag. mom. to Bohr magneton ratio 1.622 393 6651 e-3 0.000 000 0032 e-3 +triton mag. mom. to nuclear magneton ratio 2.978 962 4656 0.000 000 0059 +triton mass 5.007 356 7446 e-27 0.000 000 0015 e-27 kg +triton mass energy equivalent 4.500 387 8060 e-10 0.000 000 0014 e-10 J +triton mass energy equivalent in MeV 2808.921 132 98 0.000 000 85 MeV +triton mass in u 3.015 500 716 21 0.000 000 000 12 u +triton molar mass 3.015 500 715 17 e-3 0.000 000 000 92 e-3 kg mol^-1 +triton-proton mass ratio 2.993 717 034 14 0.000 000 000 15 +triton relative atomic mass 3.015 500 716 21 0.000 000 000 12 +triton to proton mag. mom. ratio 1.066 639 9191 0.000 000 0021 +unified atomic mass unit 1.660 539 066 60 e-27 0.000 000 000 50 e-27 kg +vacuum electric permittivity 8.854 187 8128 e-12 0.000 000 0013 e-12 F m^-1 +vacuum mag. permeability 1.256 637 062 12 e-6 0.000 000 000 19 e-6 N A^-2 +von Klitzing constant 25 812.807 45... (exact) ohm +weak mixing angle 0.222 90 0.000 30 +Wien frequency displacement law constant 5.878 925 757... e10 (exact) Hz K^-1 +Wien wavelength displacement law constant 2.897 771 955... e-3 (exact) m K +W to Z mass ratio 0.881 53 0.000 17 diff --git a/scripts/codata/allascii_2022.txt b/scripts/codata/allascii_2022.txt new file mode 100644 index 0000000000..a976bb462f --- /dev/null +++ b/scripts/codata/allascii_2022.txt @@ -0,0 +1,366 @@ + + Fundamental Physical Constants --- Complete Listing + 2022 CODATA adjustment + + + From: http://physics.nist.gov/constants + + + + Quantity Value Uncertainty Unit +----------------------------------------------------------------------------------------------------------------------------- +alpha particle-electron mass ratio 7294.299 541 71 0.000 000 17 +alpha particle mass 6.644 657 3450 e-27 0.000 000 0021 e-27 kg +alpha particle mass energy equivalent 5.971 920 1997 e-10 0.000 000 0019 e-10 J +alpha particle mass energy equivalent in MeV 3727.379 4118 0.000 0012 MeV +alpha particle mass in u 4.001 506 179 129 0.000 000 000 062 u +alpha particle molar mass 4.001 506 1833 e-3 0.000 000 0012 e-3 kg mol^-1 +alpha particle-proton mass ratio 3.972 599 690 252 0.000 000 000 070 +alpha particle relative atomic mass 4.001 506 179 129 0.000 000 000 062 +alpha particle rms charge radius 1.6785 e-15 0.0021 e-15 m +Angstrom star 1.000 014 95 e-10 0.000 000 90 e-10 m +atomic mass constant 1.660 539 068 92 e-27 0.000 000 000 52 e-27 kg +atomic mass constant energy equivalent 1.492 418 087 68 e-10 0.000 000 000 46 e-10 J +atomic mass constant energy equivalent in MeV 931.494 103 72 0.000 000 29 MeV +atomic mass unit-electron volt relationship 9.314 941 0372 e8 0.000 000 0029 e8 eV +atomic mass unit-hartree relationship 3.423 177 6922 e7 0.000 000 0011 e7 E_h +atomic mass unit-hertz relationship 2.252 342 721 85 e23 0.000 000 000 70 e23 Hz +atomic mass unit-inverse meter relationship 7.513 006 6209 e14 0.000 000 0023 e14 m^-1 +atomic mass unit-joule relationship 1.492 418 087 68 e-10 0.000 000 000 46 e-10 J +atomic mass unit-kelvin relationship 1.080 954 020 67 e13 0.000 000 000 34 e13 K +atomic mass unit-kilogram relationship 1.660 539 068 92 e-27 0.000 000 000 52 e-27 kg +atomic unit of 1st hyperpolarizability 3.206 361 2996 e-53 0.000 000 0015 e-53 C^3 m^3 J^-2 +atomic unit of 2nd hyperpolarizability 6.235 379 9735 e-65 0.000 000 0039 e-65 C^4 m^4 J^-3 +atomic unit of action 1.054 571 817... e-34 (exact) J s +atomic unit of charge 1.602 176 634 e-19 (exact) C +atomic unit of charge density 1.081 202 386 77 e12 0.000 000 000 51 e12 C m^-3 +atomic unit of current 6.623 618 237 5082 e-3 0.000 000 000 0072 e-3 A +atomic unit of electric dipole mom. 8.478 353 6198 e-30 0.000 000 0013 e-30 C m +atomic unit of electric field 5.142 206 751 12 e11 0.000 000 000 80 e11 V m^-1 +atomic unit of electric field gradient 9.717 362 4424 e21 0.000 000 0030 e21 V m^-2 +atomic unit of electric polarizability 1.648 777 272 12 e-41 0.000 000 000 51 e-41 C^2 m^2 J^-1 +atomic unit of electric potential 27.211 386 245 981 0.000 000 000 030 V +atomic unit of electric quadrupole mom. 4.486 551 5185 e-40 0.000 000 0014 e-40 C m^2 +atomic unit of energy 4.359 744 722 2060 e-18 0.000 000 000 0048 e-18 J +atomic unit of force 8.238 723 5038 e-8 0.000 000 0013 e-8 N +atomic unit of length 5.291 772 105 44 e-11 0.000 000 000 82 e-11 m +atomic unit of mag. dipole mom. 1.854 802 013 15 e-23 0.000 000 000 58 e-23 J T^-1 +atomic unit of mag. flux density 2.350 517 570 77 e5 0.000 000 000 73 e5 T +atomic unit of magnetizability 7.891 036 5794 e-29 0.000 000 0049 e-29 J T^-2 +atomic unit of mass 9.109 383 7139 e-31 0.000 000 0028 e-31 kg +atomic unit of momentum 1.992 851 915 45 e-24 0.000 000 000 31 e-24 kg m s^-1 +atomic unit of permittivity 1.112 650 056 20 e-10 0.000 000 000 17 e-10 F m^-1 +atomic unit of time 2.418 884 326 5864 e-17 0.000 000 000 0026 e-17 s +atomic unit of velocity 2.187 691 262 16 e6 0.000 000 000 34 e6 m s^-1 +Avogadro constant 6.022 140 76 e23 (exact) mol^-1 +Bohr magneton 9.274 010 0657 e-24 0.000 000 0029 e-24 J T^-1 +Bohr magneton in eV/T 5.788 381 7982 e-5 0.000 000 0018 e-5 eV T^-1 +Bohr magneton in Hz/T 1.399 624 491 71 e10 0.000 000 000 44 e10 Hz T^-1 +Bohr magneton in inverse meter per tesla 46.686 447 719 0.000 000 015 m^-1 T^-1 +Bohr magneton in K/T 0.671 713 814 72 0.000 000 000 21 K T^-1 +Bohr radius 5.291 772 105 44 e-11 0.000 000 000 82 e-11 m +Boltzmann constant 1.380 649 e-23 (exact) J K^-1 +Boltzmann constant in eV/K 8.617 333 262... e-5 (exact) eV K^-1 +Boltzmann constant in Hz/K 2.083 661 912... e10 (exact) Hz K^-1 +Boltzmann constant in inverse meter per kelvin 69.503 480 04... (exact) m^-1 K^-1 +characteristic impedance of vacuum 376.730 313 412 0.000 000 059 ohm +classical electron radius 2.817 940 3205 e-15 0.000 000 0013 e-15 m +Compton wavelength 2.426 310 235 38 e-12 0.000 000 000 76 e-12 m +conductance quantum 7.748 091 729... e-5 (exact) S +conventional value of ampere-90 1.000 000 088 87... (exact) A +conventional value of coulomb-90 1.000 000 088 87... (exact) C +conventional value of farad-90 0.999 999 982 20... (exact) F +conventional value of henry-90 1.000 000 017 79... (exact) H +conventional value of Josephson constant 483 597.9 e9 (exact) Hz V^-1 +conventional value of ohm-90 1.000 000 017 79... (exact) ohm +conventional value of volt-90 1.000 000 106 66... (exact) V +conventional value of von Klitzing constant 25 812.807 (exact) ohm +conventional value of watt-90 1.000 000 195 53... (exact) W +Copper x unit 1.002 076 97 e-13 0.000 000 28 e-13 m +deuteron-electron mag. mom. ratio -4.664 345 550 e-4 0.000 000 012 e-4 +deuteron-electron mass ratio 3670.482 967 655 0.000 000 063 +deuteron g factor 0.857 438 2335 0.000 000 0022 +deuteron mag. mom. 4.330 735 087 e-27 0.000 000 011 e-27 J T^-1 +deuteron mag. mom. to Bohr magneton ratio 4.669 754 568 e-4 0.000 000 012 e-4 +deuteron mag. mom. to nuclear magneton ratio 0.857 438 2335 0.000 000 0022 +deuteron mass 3.343 583 7768 e-27 0.000 000 0010 e-27 kg +deuteron mass energy equivalent 3.005 063 234 91 e-10 0.000 000 000 94 e-10 J +deuteron mass energy equivalent in MeV 1875.612 945 00 0.000 000 58 MeV +deuteron mass in u 2.013 553 212 544 0.000 000 000 015 u +deuteron molar mass 2.013 553 214 66 e-3 0.000 000 000 63 e-3 kg mol^-1 +deuteron-neutron mag. mom. ratio -0.448 206 52 0.000 000 11 +deuteron-proton mag. mom. ratio 0.307 012 209 30 0.000 000 000 79 +deuteron-proton mass ratio 1.999 007 501 2699 0.000 000 000 0084 +deuteron relative atomic mass 2.013 553 212 544 0.000 000 000 015 +deuteron rms charge radius 2.127 78 e-15 0.000 27 e-15 m +electron charge to mass quotient -1.758 820 008 38 e11 0.000 000 000 55 e11 C kg^-1 +electron-deuteron mag. mom. ratio -2143.923 4921 0.000 0056 +electron-deuteron mass ratio 2.724 437 107 629 e-4 0.000 000 000 047 e-4 +electron g factor -2.002 319 304 360 92 0.000 000 000 000 36 +electron gyromag. ratio 1.760 859 627 84 e11 0.000 000 000 55 e11 s^-1 T^-1 +electron gyromag. ratio in MHz/T 28 024.951 3861 0.000 0087 MHz T^-1 +electron-helion mass ratio 1.819 543 074 649 e-4 0.000 000 000 053 e-4 +electron mag. mom. -9.284 764 6917 e-24 0.000 000 0029 e-24 J T^-1 +electron mag. mom. anomaly 1.159 652 180 46 e-3 0.000 000 000 18 e-3 +electron mag. mom. to Bohr magneton ratio -1.001 159 652 180 46 0.000 000 000 000 18 +electron mag. mom. to nuclear magneton ratio -1838.281 971 877 0.000 000 032 +electron mass 9.109 383 7139 e-31 0.000 000 0028 e-31 kg +electron mass energy equivalent 8.187 105 7880 e-14 0.000 000 0026 e-14 J +electron mass energy equivalent in MeV 0.510 998 950 69 0.000 000 000 16 MeV +electron mass in u 5.485 799 090 441 e-4 0.000 000 000 097 e-4 u +electron molar mass 5.485 799 0962 e-7 0.000 000 0017 e-7 kg mol^-1 +electron-muon mag. mom. ratio 206.766 9881 0.000 0046 +electron-muon mass ratio 4.836 331 70 e-3 0.000 000 11 e-3 +electron-neutron mag. mom. ratio 960.920 48 0.000 23 +electron-neutron mass ratio 5.438 673 4416 e-4 0.000 000 0022 e-4 +electron-proton mag. mom. ratio -658.210 687 89 0.000 000 19 +electron-proton mass ratio 5.446 170 214 889 e-4 0.000 000 000 094 e-4 +electron relative atomic mass 5.485 799 090 441 e-4 0.000 000 000 097 e-4 +electron-tau mass ratio 2.875 85 e-4 0.000 19 e-4 +electron to alpha particle mass ratio 1.370 933 554 733 e-4 0.000 000 000 032 e-4 +electron to shielded helion mag. mom. ratio 864.058 239 86 0.000 000 70 +electron to shielded proton mag. mom. ratio -658.227 5856 0.000 0027 +electron-triton mass ratio 1.819 200 062 327 e-4 0.000 000 000 068 e-4 +electron volt 1.602 176 634 e-19 (exact) J +electron volt-atomic mass unit relationship 1.073 544 100 83 e-9 0.000 000 000 33 e-9 u +electron volt-hartree relationship 3.674 932 217 5665 e-2 0.000 000 000 0040 e-2 E_h +electron volt-hertz relationship 2.417 989 242... e14 (exact) Hz +electron volt-inverse meter relationship 8.065 543 937... e5 (exact) m^-1 +electron volt-joule relationship 1.602 176 634 e-19 (exact) J +electron volt-kelvin relationship 1.160 451 812... e4 (exact) K +electron volt-kilogram relationship 1.782 661 921... e-36 (exact) kg +elementary charge 1.602 176 634 e-19 (exact) C +elementary charge over h-bar 1.519 267 447... e15 (exact) A J^-1 +Faraday constant 96 485.332 12... (exact) C mol^-1 +Fermi coupling constant 1.166 3787 e-5 0.000 0006 e-5 GeV^-2 +fine-structure constant 7.297 352 5643 e-3 0.000 000 0011 e-3 +first radiation constant 3.741 771 852... e-16 (exact) W m^2 +first radiation constant for spectral radiance 1.191 042 972... e-16 (exact) W m^2 sr^-1 +hartree-atomic mass unit relationship 2.921 262 317 97 e-8 0.000 000 000 91 e-8 u +hartree-electron volt relationship 27.211 386 245 981 0.000 000 000 030 eV +Hartree energy 4.359 744 722 2060 e-18 0.000 000 000 0048 e-18 J +Hartree energy in eV 27.211 386 245 981 0.000 000 000 030 eV +hartree-hertz relationship 6.579 683 920 4999 e15 0.000 000 000 0072 e15 Hz +hartree-inverse meter relationship 2.194 746 313 6314 e7 0.000 000 000 0024 e7 m^-1 +hartree-joule relationship 4.359 744 722 2060 e-18 0.000 000 000 0048 e-18 J +hartree-kelvin relationship 3.157 750 248 0398 e5 0.000 000 000 0034 e5 K +hartree-kilogram relationship 4.850 870 209 5419 e-35 0.000 000 000 0053 e-35 kg +helion-electron mass ratio 5495.885 279 84 0.000 000 16 +helion g factor -4.255 250 6995 0.000 000 0034 +helion mag. mom. -1.074 617 551 98 e-26 0.000 000 000 93 e-26 J T^-1 +helion mag. mom. to Bohr magneton ratio -1.158 740 980 83 e-3 0.000 000 000 94 e-3 +helion mag. mom. to nuclear magneton ratio -2.127 625 3498 0.000 000 0017 +helion mass 5.006 412 7862 e-27 0.000 000 0016 e-27 kg +helion mass energy equivalent 4.499 539 4185 e-10 0.000 000 0014 e-10 J +helion mass energy equivalent in MeV 2808.391 611 12 0.000 000 88 MeV +helion mass in u 3.014 932 246 932 0.000 000 000 074 u +helion molar mass 3.014 932 250 10 e-3 0.000 000 000 94 e-3 kg mol^-1 +helion-proton mass ratio 2.993 152 671 552 0.000 000 000 070 +helion relative atomic mass 3.014 932 246 932 0.000 000 000 074 +helion shielding shift 5.996 7029 e-5 0.000 0023 e-5 +hertz-atomic mass unit relationship 4.439 821 6590 e-24 0.000 000 0014 e-24 u +hertz-electron volt relationship 4.135 667 696... e-15 (exact) eV +hertz-hartree relationship 1.519 829 846 0574 e-16 0.000 000 000 0017 e-16 E_h +hertz-inverse meter relationship 3.335 640 951... e-9 (exact) m^-1 +hertz-joule relationship 6.626 070 15 e-34 (exact) J +hertz-kelvin relationship 4.799 243 073... e-11 (exact) K +hertz-kilogram relationship 7.372 497 323... e-51 (exact) kg +hyperfine transition frequency of Cs-133 9 192 631 770 (exact) Hz +inverse fine-structure constant 137.035 999 177 0.000 000 021 +inverse meter-atomic mass unit relationship 1.331 025 048 24 e-15 0.000 000 000 41 e-15 u +inverse meter-electron volt relationship 1.239 841 984... e-6 (exact) eV +inverse meter-hartree relationship 4.556 335 252 9132 e-8 0.000 000 000 0050 e-8 E_h +inverse meter-hertz relationship 299 792 458 (exact) Hz +inverse meter-joule relationship 1.986 445 857... e-25 (exact) J +inverse meter-kelvin relationship 1.438 776 877... e-2 (exact) K +inverse meter-kilogram relationship 2.210 219 094... e-42 (exact) kg +inverse of conductance quantum 12 906.403 72... (exact) ohm +Josephson constant 483 597.848 4... e9 (exact) Hz V^-1 +joule-atomic mass unit relationship 6.700 535 2471 e9 0.000 000 0021 e9 u +joule-electron volt relationship 6.241 509 074... e18 (exact) eV +joule-hartree relationship 2.293 712 278 3969 e17 0.000 000 000 0025 e17 E_h +joule-hertz relationship 1.509 190 179... e33 (exact) Hz +joule-inverse meter relationship 5.034 116 567... e24 (exact) m^-1 +joule-kelvin relationship 7.242 970 516... e22 (exact) K +joule-kilogram relationship 1.112 650 056... e-17 (exact) kg +kelvin-atomic mass unit relationship 9.251 087 2884 e-14 0.000 000 0029 e-14 u +kelvin-electron volt relationship 8.617 333 262... e-5 (exact) eV +kelvin-hartree relationship 3.166 811 563 4564 e-6 0.000 000 000 0035 e-6 E_h +kelvin-hertz relationship 2.083 661 912... e10 (exact) Hz +kelvin-inverse meter relationship 69.503 480 04... (exact) m^-1 +kelvin-joule relationship 1.380 649 e-23 (exact) J +kelvin-kilogram relationship 1.536 179 187... e-40 (exact) kg +kilogram-atomic mass unit relationship 6.022 140 7537 e26 0.000 000 0019 e26 u +kilogram-electron volt relationship 5.609 588 603... e35 (exact) eV +kilogram-hartree relationship 2.061 485 788 7415 e34 0.000 000 000 0022 e34 E_h +kilogram-hertz relationship 1.356 392 489... e50 (exact) Hz +kilogram-inverse meter relationship 4.524 438 335... e41 (exact) m^-1 +kilogram-joule relationship 8.987 551 787... e16 (exact) J +kilogram-kelvin relationship 6.509 657 260... e39 (exact) K +lattice parameter of silicon 5.431 020 511 e-10 0.000 000 089 e-10 m +lattice spacing of ideal Si (220) 1.920 155 716 e-10 0.000 000 032 e-10 m +Loschmidt constant (273.15 K, 100 kPa) 2.651 645 804... e25 (exact) m^-3 +Loschmidt constant (273.15 K, 101.325 kPa) 2.686 780 111... e25 (exact) m^-3 +luminous efficacy 683 (exact) lm W^-1 +mag. flux quantum 2.067 833 848... e-15 (exact) Wb +molar gas constant 8.314 462 618... (exact) J mol^-1 K^-1 +molar mass constant 1.000 000 001 05 e-3 0.000 000 000 31 e-3 kg mol^-1 +molar mass of carbon-12 12.000 000 0126 e-3 0.000 000 0037 e-3 kg mol^-1 +molar Planck constant 3.990 312 712... e-10 (exact) J Hz^-1 mol^-1 +molar volume of ideal gas (273.15 K, 100 kPa) 22.710 954 64... e-3 (exact) m^3 mol^-1 +molar volume of ideal gas (273.15 K, 101.325 kPa) 22.413 969 54... e-3 (exact) m^3 mol^-1 +molar volume of silicon 1.205 883 199 e-5 0.000 000 060 e-5 m^3 mol^-1 +Molybdenum x unit 1.002 099 52 e-13 0.000 000 53 e-13 m +muon Compton wavelength 1.173 444 110 e-14 0.000 000 026 e-14 m +muon-electron mass ratio 206.768 2827 0.000 0046 +muon g factor -2.002 331 841 23 0.000 000 000 82 +muon mag. mom. -4.490 448 30 e-26 0.000 000 10 e-26 J T^-1 +muon mag. mom. anomaly 1.165 920 62 e-3 0.000 000 41 e-3 +muon mag. mom. to Bohr magneton ratio -4.841 970 48 e-3 0.000 000 11 e-3 +muon mag. mom. to nuclear magneton ratio -8.890 597 04 0.000 000 20 +muon mass 1.883 531 627 e-28 0.000 000 042 e-28 kg +muon mass energy equivalent 1.692 833 804 e-11 0.000 000 038 e-11 J +muon mass energy equivalent in MeV 105.658 3755 0.000 0023 MeV +muon mass in u 0.113 428 9257 0.000 000 0025 u +muon molar mass 1.134 289 258 e-4 0.000 000 025 e-4 kg mol^-1 +muon-neutron mass ratio 0.112 454 5168 0.000 000 0025 +muon-proton mag. mom. ratio -3.183 345 146 0.000 000 071 +muon-proton mass ratio 0.112 609 5262 0.000 000 0025 +muon-tau mass ratio 5.946 35 e-2 0.000 40 e-2 +natural unit of action 1.054 571 817... e-34 (exact) J s +natural unit of action in eV s 6.582 119 569... e-16 (exact) eV s +natural unit of energy 8.187 105 7880 e-14 0.000 000 0026 e-14 J +natural unit of energy in MeV 0.510 998 950 69 0.000 000 000 16 MeV +natural unit of length 3.861 592 6744 e-13 0.000 000 0012 e-13 m +natural unit of mass 9.109 383 7139 e-31 0.000 000 0028 e-31 kg +natural unit of momentum 2.730 924 534 46 e-22 0.000 000 000 85 e-22 kg m s^-1 +natural unit of momentum in MeV/c 0.510 998 950 69 0.000 000 000 16 MeV/c +natural unit of time 1.288 088 666 44 e-21 0.000 000 000 40 e-21 s +natural unit of velocity 299 792 458 (exact) m s^-1 +neutron Compton wavelength 1.319 590 903 82 e-15 0.000 000 000 67 e-15 m +neutron-electron mag. mom. ratio 1.040 668 84 e-3 0.000 000 24 e-3 +neutron-electron mass ratio 1838.683 662 00 0.000 000 74 +neutron g factor -3.826 085 52 0.000 000 90 +neutron gyromag. ratio 1.832 471 74 e8 0.000 000 43 e8 s^-1 T^-1 +neutron gyromag. ratio in MHz/T 29.164 6935 0.000 0069 MHz T^-1 +neutron mag. mom. -9.662 3653 e-27 0.000 0023 e-27 J T^-1 +neutron mag. mom. to Bohr magneton ratio -1.041 875 65 e-3 0.000 000 25 e-3 +neutron mag. mom. to nuclear magneton ratio -1.913 042 76 0.000 000 45 +neutron mass 1.674 927 500 56 e-27 0.000 000 000 85 e-27 kg +neutron mass energy equivalent 1.505 349 765 14 e-10 0.000 000 000 76 e-10 J +neutron mass energy equivalent in MeV 939.565 421 94 0.000 000 48 MeV +neutron mass in u 1.008 664 916 06 0.000 000 000 40 u +neutron molar mass 1.008 664 917 12 e-3 0.000 000 000 51 e-3 kg mol^-1 +neutron-muon mass ratio 8.892 484 08 0.000 000 20 +neutron-proton mag. mom. ratio -0.684 979 35 0.000 000 16 +neutron-proton mass difference 2.305 574 61 e-30 0.000 000 67 e-30 kg +neutron-proton mass difference energy equivalent 2.072 147 12 e-13 0.000 000 60 e-13 J +neutron-proton mass difference energy equivalent in MeV 1.293 332 51 0.000 000 38 MeV +neutron-proton mass difference in u 1.388 449 48 e-3 0.000 000 40 e-3 u +neutron-proton mass ratio 1.001 378 419 46 0.000 000 000 40 +neutron relative atomic mass 1.008 664 916 06 0.000 000 000 40 +neutron-tau mass ratio 0.528 779 0.000 036 +neutron to shielded proton mag. mom. ratio -0.684 996 94 0.000 000 16 +Newtonian constant of gravitation 6.674 30 e-11 0.000 15 e-11 m^3 kg^-1 s^-2 +Newtonian constant of gravitation over h-bar c 6.708 83 e-39 0.000 15 e-39 (GeV/c^2)^-2 +nuclear magneton 5.050 783 7393 e-27 0.000 000 0016 e-27 J T^-1 +nuclear magneton in eV/T 3.152 451 254 17 e-8 0.000 000 000 98 e-8 eV T^-1 +nuclear magneton in inverse meter per tesla 2.542 623 410 09 e-2 0.000 000 000 79 e-2 m^-1 T^-1 +nuclear magneton in K/T 3.658 267 7706 e-4 0.000 000 0011 e-4 K T^-1 +nuclear magneton in MHz/T 7.622 593 2188 0.000 000 0024 MHz T^-1 +Planck constant 6.626 070 15 e-34 (exact) J Hz^-1 +Planck constant in eV/Hz 4.135 667 696... e-15 (exact) eV Hz^-1 +Planck length 1.616 255 e-35 0.000 018 e-35 m +Planck mass 2.176 434 e-8 0.000 024 e-8 kg +Planck mass energy equivalent in GeV 1.220 890 e19 0.000 014 e19 GeV +Planck temperature 1.416 784 e32 0.000 016 e32 K +Planck time 5.391 247 e-44 0.000 060 e-44 s +proton charge to mass quotient 9.578 833 1430 e7 0.000 000 0030 e7 C kg^-1 +proton Compton wavelength 1.321 409 853 60 e-15 0.000 000 000 41 e-15 m +proton-electron mass ratio 1836.152 673 426 0.000 000 032 +proton g factor 5.585 694 6893 0.000 000 0016 +proton gyromag. ratio 2.675 221 8708 e8 0.000 000 0011 e8 s^-1 T^-1 +proton gyromag. ratio in MHz/T 42.577 478 461 0.000 000 018 MHz T^-1 +proton mag. mom. 1.410 606 795 45 e-26 0.000 000 000 60 e-26 J T^-1 +proton mag. mom. to Bohr magneton ratio 1.521 032 202 30 e-3 0.000 000 000 45 e-3 +proton mag. mom. to nuclear magneton ratio 2.792 847 344 63 0.000 000 000 82 +proton mag. shielding correction 2.567 15 e-5 0.000 41 e-5 +proton mass 1.672 621 925 95 e-27 0.000 000 000 52 e-27 kg +proton mass energy equivalent 1.503 277 618 02 e-10 0.000 000 000 47 e-10 J +proton mass energy equivalent in MeV 938.272 089 43 0.000 000 29 MeV +proton mass in u 1.007 276 466 5789 0.000 000 000 0083 u +proton molar mass 1.007 276 467 64 e-3 0.000 000 000 31 e-3 kg mol^-1 +proton-muon mass ratio 8.880 243 38 0.000 000 20 +proton-neutron mag. mom. ratio -1.459 898 02 0.000 000 34 +proton-neutron mass ratio 0.998 623 477 97 0.000 000 000 40 +proton relative atomic mass 1.007 276 466 5789 0.000 000 000 0083 +proton rms charge radius 8.4075 e-16 0.0064 e-16 m +proton-tau mass ratio 0.528 051 0.000 036 +quantum of circulation 3.636 947 5467 e-4 0.000 000 0011 e-4 m^2 s^-1 +quantum of circulation times 2 7.273 895 0934 e-4 0.000 000 0023 e-4 m^2 s^-1 +reduced Compton wavelength 3.861 592 6744 e-13 0.000 000 0012 e-13 m +reduced muon Compton wavelength 1.867 594 306 e-15 0.000 000 042 e-15 m +reduced neutron Compton wavelength 2.100 194 1520 e-16 0.000 000 0011 e-16 m +reduced Planck constant 1.054 571 817... e-34 (exact) J s +reduced Planck constant in eV s 6.582 119 569... e-16 (exact) eV s +reduced Planck constant times c in MeV fm 197.326 980 4... (exact) MeV fm +reduced proton Compton wavelength 2.103 089 100 51 e-16 0.000 000 000 66 e-16 m +reduced tau Compton wavelength 1.110 538 e-16 0.000 075 e-16 m +Rydberg constant 10 973 731.568 157 0.000 012 m^-1 +Rydberg constant times c in Hz 3.289 841 960 2500 e15 0.000 000 000 0036 e15 Hz +Rydberg constant times hc in eV 13.605 693 122 990 0.000 000 000 015 eV +Rydberg constant times hc in J 2.179 872 361 1030 e-18 0.000 000 000 0024 e-18 J +Sackur-Tetrode constant (1 K, 100 kPa) -1.151 707 534 96 0.000 000 000 47 +Sackur-Tetrode constant (1 K, 101.325 kPa) -1.164 870 521 49 0.000 000 000 47 +second radiation constant 1.438 776 877... e-2 (exact) m K +shielded helion gyromag. ratio 2.037 894 6078 e8 0.000 000 0018 e8 s^-1 T^-1 +shielded helion gyromag. ratio in MHz/T 32.434 100 033 0.000 000 028 MHz T^-1 +shielded helion mag. mom. -1.074 553 110 35 e-26 0.000 000 000 93 e-26 J T^-1 +shielded helion mag. mom. to Bohr magneton ratio -1.158 671 494 57 e-3 0.000 000 000 94 e-3 +shielded helion mag. mom. to nuclear magneton ratio -2.127 497 7624 0.000 000 0017 +shielded helion to proton mag. mom. ratio -0.761 766 577 21 0.000 000 000 66 +shielded helion to shielded proton mag. mom. ratio -0.761 786 1334 0.000 000 0031 +shielded proton gyromag. ratio 2.675 153 194 e8 0.000 000 011 e8 s^-1 T^-1 +shielded proton gyromag. ratio in MHz/T 42.576 385 43 0.000 000 17 MHz T^-1 +shielded proton mag. mom. 1.410 570 5830 e-26 0.000 000 0058 e-26 J T^-1 +shielded proton mag. mom. to Bohr magneton ratio 1.520 993 1551 e-3 0.000 000 0062 e-3 +shielded proton mag. mom. to nuclear magneton ratio 2.792 775 648 0.000 000 011 +shielding difference of d and p in HD 1.987 70 e-8 0.000 10 e-8 +shielding difference of t and p in HT 2.394 50 e-8 0.000 20 e-8 +speed of light in vacuum 299 792 458 (exact) m s^-1 +standard acceleration of gravity 9.806 65 (exact) m s^-2 +standard atmosphere 101 325 (exact) Pa +standard-state pressure 100 000 (exact) Pa +Stefan-Boltzmann constant 5.670 374 419... e-8 (exact) W m^-2 K^-4 +tau Compton wavelength 6.977 71 e-16 0.000 47 e-16 m +tau-electron mass ratio 3477.23 0.23 +tau energy equivalent 1776.86 0.12 MeV +tau mass 3.167 54 e-27 0.000 21 e-27 kg +tau mass energy equivalent 2.846 84 e-10 0.000 19 e-10 J +tau mass in u 1.907 54 0.000 13 u +tau molar mass 1.907 54 e-3 0.000 13 e-3 kg mol^-1 +tau-muon mass ratio 16.8170 0.0011 +tau-neutron mass ratio 1.891 15 0.000 13 +tau-proton mass ratio 1.893 76 0.000 13 +Thomson cross section 6.652 458 7051 e-29 0.000 000 0062 e-29 m^2 +triton-electron mass ratio 5496.921 535 51 0.000 000 21 +triton g factor 5.957 924 930 0.000 000 012 +triton mag. mom. 1.504 609 5178 e-26 0.000 000 0030 e-26 J T^-1 +triton mag. mom. to Bohr magneton ratio 1.622 393 6648 e-3 0.000 000 0032 e-3 +triton mag. mom. to nuclear magneton ratio 2.978 962 4650 0.000 000 0059 +triton mass 5.007 356 7512 e-27 0.000 000 0016 e-27 kg +triton mass energy equivalent 4.500 387 8119 e-10 0.000 000 0014 e-10 J +triton mass energy equivalent in MeV 2808.921 136 68 0.000 000 88 MeV +triton mass in u 3.015 500 715 97 0.000 000 000 10 u +triton molar mass 3.015 500 719 13 e-3 0.000 000 000 94 e-3 kg mol^-1 +triton-proton mass ratio 2.993 717 034 03 0.000 000 000 10 +triton relative atomic mass 3.015 500 715 97 0.000 000 000 10 +triton to proton mag. mom. ratio 1.066 639 9189 0.000 000 0021 +unified atomic mass unit 1.660 539 068 92 e-27 0.000 000 000 52 e-27 kg +vacuum electric permittivity 8.854 187 8188 e-12 0.000 000 0014 e-12 F m^-1 +vacuum mag. permeability 1.256 637 061 27 e-6 0.000 000 000 20 e-6 N A^-2 +von Klitzing constant 25 812.807 45... (exact) ohm +weak mixing angle 0.223 05 0.000 23 +Wien frequency displacement law constant 5.878 925 757... e10 (exact) Hz K^-1 +Wien wavelength displacement law constant 2.897 771 955... e-3 (exact) m K +W to Z mass ratio 0.881 45 0.000 13 diff --git a/scripts/codata_constants.py b/scripts/codata_constants.py new file mode 100644 index 0000000000..737086f4ab --- /dev/null +++ b/scripts/codata_constants.py @@ -0,0 +1,1487 @@ +#!/usr/bin/env python3 +# The MIT License (MIT) +# +# Copyright (c) 2018 Mateusz Pusz +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Generate `src/systems/include/mp-units/systems/codata.h` from the NIST tables. + +The source of truth are the fixed-width "allascii" tables published by NIST for each +CODATA adjustment, checked in verbatim under `scripts/codata/`. Every row of every +table must be accounted for in exactly one way: + +- generated as a constant transcribing the row's value and standard uncertainty, +- generated from a curated defining relation (rows printed truncated with `...` are + exact but non-terminating decimals, so copying their digits would define an inexact + constant while labelling it exact - the symbolic expression is the correct value), +- emitted as an alias of another constant (a row that restates an entity that already + has a home, either in `si` or earlier in the same namespace), +- skipped as a unit variant of another row (the tabulated forms restate one constant in + different units, a use-time choice in a library where constants are units), or +- skipped for a curated, documented reason. + +An unaccounted row is an error, so adding a new adjustment cannot silently drop data. + +After emission the generated header is verified independently: each constant's +expression is re-parsed and re-evaluated numerically in the row's own unit and compared +against the printed digits (exactly for transcribed rows, by decimal prefix for the +truncated exact ones). That check is the point of generating rather than transcribing +by hand. + +Usage: + python3 scripts/codata_constants.py # regenerate + verify + python3 scripts/codata_constants.py --report # per-row disposition report + python3 scripts/codata_constants.py --check # verify; fail if the file differs +""" + +from __future__ import annotations + +import argparse +import re +import sys +from dataclasses import dataclass, field +from fractions import Fraction +from pathlib import Path +from typing import Callable, Optional + +REPO_ROOT = Path(__file__).resolve().parent.parent +DATA_DIR = Path(__file__).resolve().parent / "codata" +SYSTEMS_DIR = REPO_ROOT / "src/systems/include/mp-units/systems" + +ADJUSTMENTS = ("2014", "2018", "2022") +INLINE_ADJUSTMENT = "2022" + +# 50 digits of pi as an exact Fraction, plenty for comparing against <=15 printed digits +PI = Fraction(31415926535897932384626433832795028841971693993751, 10**49) + +# Solutions of the Wien displacement transcendental equations `x = n (1 - exp(-x))`, +# for n = 5 (wavelength form) and n = 3 (frequency form), to 50 significant digits. +# They are exact mathematical constants (like pi), which is what makes the Wien rows +# "(exact)" in the post-2019 tables. +WIEN_X_WAVELENGTH = Fraction( + 496511423174427630369875913132289394405558498679725, 10**50 +) +WIEN_X_FREQUENCY = Fraction(282143937212207889340319133029448519534588174407311, 10**50) + + +# -------------------------------------------------------------------------------------- +# Table parsing +# -------------------------------------------------------------------------------------- + + +@dataclass +class Row: + name: str + value: str # verbatim value column + uncertainty: str # verbatim uncertainty column ("(exact)" for exact rows) + unit: str # verbatim unit column ("" for dimensionless) + + @property + def exact(self) -> bool: + return self.uncertainty == "(exact)" + + @property + def truncated(self) -> bool: + return "..." in self.value + + +def parse_table(adjustment: str) -> list[Row]: + lines = (DATA_DIR / f"allascii_{adjustment}.txt").read_text().splitlines() + start = next(i for i, line in enumerate(lines) if line.startswith("----")) + rows = [] + for line in lines[start + 1 :]: + if not line.strip(): + continue + rows.append( + Row( + name=line[:60].strip(), + value=line[60:85].strip(), + uncertainty=line[85:110].strip(), + unit=line[110:].strip(), + ) + ) + return rows + + +# -------------------------------------------------------------------------------------- +# Number handling +# -------------------------------------------------------------------------------------- + + +def split_number(text: str) -> tuple[str, int]: + """Split a table number into its digit string (spaces removed) and base-10 exponent. + + `"6.674 30 e-11"` becomes `("6.67430", -11)`. The digit string keeps the printed + precision (trailing zeros included), which is what the emitted magnitude transcribes. + """ + text = text.replace("...", "").strip() + match = re.fullmatch(r"([-0-9. ]+?)(?:\s*e(-?\d+))?", text) + if not match: + raise ValueError(f"unparsable number: {text!r}") + return match.group(1).replace(" ", ""), int(match.group(2) or 0) + + +def number_fraction(text: str) -> Fraction: + digits, exp = split_number(text) + return Fraction(digits) * Fraction(10) ** exp + + +def group_digits(number: int) -> str: + """Format an integer with C++ digit separators (`'`), matching the repo style.""" + sign, digits = ("-", str(-number)) if number < 0 else ("", str(number)) + grouped = [] + while len(digits) > 3: + grouped.append(digits[-3:]) + digits = digits[:-3] + grouped.append(digits) + return sign + "'".join(reversed(grouped)) + + +def magnitude_expr(text: str) -> str: + """Spell a table number as an exact magnitude expression. + + The printed mantissa becomes a `mag_ratio` (or a plain `mag` when integral) and the + printed exponent a `mag_power<10, N>`, so the emitted definition transcribes the row + digit for digit. + """ + digits, exp = split_number(text) + negative = digits.startswith("-") + if negative: + digits = digits[1:] + if "." in digits: + integral, fraction = digits.split(".") + numerator = int(integral + fraction) + denominator = 10 ** len(fraction) + mag = f"mag_ratio<{group_digits(numerator)}, {group_digits(denominator)}>" + else: + mag = f"mag<{group_digits(int(digits))}>" + if exp != 0: + mag += f" * mag_power<10, {exp}>" + return f"-{mag}" if negative else mag + + +def uncertainty_magnitude_expr(text: str) -> str: + """Spell an uncertainty as a normalized-scientific exact magnitude. + + Uncertainties are published to two significant digits; `"0.000 15 e-11"` becomes + `mag_ratio<15, 10> * mag_power<10, -15>` (1.5 x 10^-15). + """ + digits, exp = split_number(text) + if "." in digits: + integral, fraction = digits.split(".") + exp -= len(fraction) + digits = integral + fraction + significant = digits.lstrip("0") + exp += len(significant) - 1 + if len(significant) == 1: + mag = f"mag<{significant}>" + else: + denominator = 10 ** (len(significant) - 1) + mag = ( + f"mag_ratio<{group_digits(int(significant))}, {group_digits(denominator)}>" + ) + if exp != 0: + mag += f" * mag_power<10, {exp}>" + return mag + + +# -------------------------------------------------------------------------------------- +# Unit handling +# -------------------------------------------------------------------------------------- + +# Token -> (C++ unit expression, SI factor as a Fraction). The factors serve validation +# only; every value comparison happens in the row's own unit, so only the ratio of the +# two factors matters and epoch-dependent choices (the eV) cancel exactly. +UNIT_TOKENS: dict[str, tuple[str, Fraction]] = { + "m": ("si::metre", Fraction(1)), + "kg": ("si::kilogram", Fraction(1)), + "s": ("si::second", Fraction(1)), + "A": ("si::ampere", Fraction(1)), + "K": ("si::kelvin", Fraction(1)), + "mol": ("si::mole", Fraction(1)), + "C": ("si::coulomb", Fraction(1)), + "J": ("si::joule", Fraction(1)), + "N": ("si::newton", Fraction(1)), + "T": ("si::tesla", Fraction(1)), + "V": ("si::volt", Fraction(1)), + "F": ("si::farad", Fraction(1)), + "W": ("si::watt", Fraction(1)), + "Pa": ("si::pascal", Fraction(1)), + "Hz": ("si::hertz", Fraction(1)), + "S": ("si::siemens", Fraction(1)), + "ohm": ("si::ohm", Fraction(1)), + "Wb": ("si::weber", Fraction(1)), + "H": ("si::henry", Fraction(1)), + "lm": ("si::lumen", Fraction(1)), + "sr": ("si::steradian", Fraction(1)), + "eV": ("si::electronvolt", Fraction(1_602_176_634, 10**28)), + "GeV": ("si::giga", Fraction(1_602_176_634, 10**19)), + "u": ("si::dalton", Fraction(166_053_906_892, 10**38)), +} + + +def parse_unit(unit: str) -> list[tuple[str, int]]: + """Parse a table unit string into `(token, exponent)` pairs.""" + if not unit: + return [] + factors = [] + for token in unit.split(): + match = re.fullmatch(r"([A-Za-z_]+)(?:\^(-?\d+))?", token) + if not match: + raise ValueError(f"unparsable unit token {token!r} in {unit!r}") + symbol, exp = match.group(1), int(match.group(2) or 1) + if symbol not in UNIT_TOKENS: + raise ValueError(f"unknown unit token {symbol!r} in {unit!r}") + factors.append((symbol, exp)) + return factors + + +def unit_power_expr(cpp: str, exp: int) -> str: + if exp == 1: + return cpp + if exp == 2: + return f"square({cpp})" + if exp == 3: + return f"cubic({cpp})" + return f"pow<{exp}>({cpp})" + + +def unit_expr(unit: str) -> str: + """Spell a table unit string as a C++ unit expression (`"one"` when dimensionless).""" + factors = parse_unit(unit) + if not factors: + return "one" + numerator = [unit_power_expr(UNIT_TOKENS[t][0], e) for t, e in factors if e > 0] + denominator = [unit_power_expr(UNIT_TOKENS[t][0], -e) for t, e in factors if e < 0] + parts = numerator if numerator else ["one"] + return " * ".join(parts) + "".join(f" / {d}" for d in denominator) + + +def unit_si_factor(unit: str) -> Fraction: + factor = Fraction(1) + for token, exp in parse_unit(unit): + factor *= UNIT_TOKENS[token][1] ** exp + return factor + + +# -------------------------------------------------------------------------------------- +# Curated knowledge +# -------------------------------------------------------------------------------------- + +# Rows that restate another row in a different unit or with an exact numeric factor +# (2 pi). In a library where constants are units, those forms are a use-time choice, so +# they carry no extra information here - exactly the policy `hep` follows. +VARIANT_RE = re.compile( + r"(" + r" energy equivalent( in MeV)?$" + r"| in u$| in MeV$| in GeV$| in eV$| in K$| in Hz$| in J$| in kg$" + r"| in eV s$| in eV/K$| in Hz/K$| in eV/T$| in Hz/T$| in K/T$| in MHz/T$" + r"| in eV/Hz$| in MeV/c$| in MeV fm$" + r"| in inverse meters? per (kelvin|tesla)$" + r"| in inverse meter$" + r"|^(atomic mass unit|electron volt|hartree|hertz|inverse meter|joule|kelvin" + r"|kilogram)-.* relationship$" + r"| over 2 pi( times c in MeV fm)?$" + r")" +) + +# The NIST "Frequently used constants" selection (plus the free `si` aliases). These rows +# form the `codataYYYY_essential.h` tier: a cheap-to-compile subset with the constants most +# code actually names, included by the full per-adjustment header (so both spell the same +# types) and by `iau.h`. Curated relations referenced by these rows must be essential too. +ESSENTIAL_ROWS = { + "atomic mass constant", + "Avogadro constant", + "Bohr magneton", + "Bohr radius", + "Boltzmann constant", + "Compton wavelength", + "conductance quantum", + "electron mass", + "elementary charge", + "Faraday constant", + "fine-structure constant", + "Hartree energy", + "hyperfine transition frequency of Cs-133", + "inverse fine-structure constant", + "Josephson constant", + "luminous efficacy", + "mag. constant", + "mag. flux quantum", + "molar gas constant", + "muon mass", + "neutron mass", + "Newtonian constant of gravitation", + "nuclear magneton", + "Planck constant", + "Planck constant over 2 pi", + "proton mass", + "proton-electron mass ratio", + "reduced Planck constant", + "Rydberg constant", + "speed of light in vacuum", + "standard acceleration of gravity", + "Stefan-Boltzmann constant", + "electric constant", + "vacuum electric permittivity", + "vacuum mag. permeability", + "von Klitzing constant", +} + +# Rows deliberately not represented in one specific adjustment only (currently none). +YEAR_SKIPS: dict[tuple[str, str], str] = {} + +# Rows deliberately not represented, with the reason recorded in the report. +CURATED_SKIPS = { + "Newtonian constant of gravitation over h-bar c": ( + "a natural-units presentation of G; comes free as G / (hbar c) at use time" + ), + "Faraday constant for conventional electric current": ( + "expressed in the conventional coulomb C_90, a unit this library does not define" + ), + "electron volt": "provided as the unit si::electronvolt", +} + +# Rows from NIST's "adopted values" category that are identical in every adjustment +# (conventional values fixed by CGPM/CIPM resolutions rather than measured). They are +# emitted once, directly in `mp_units::codata` (in `codata/adopted_values.h`), so a unit +# defined through one of them (e.g. `yard_pound`'s `pound_force` through the standard +# gravity) keeps a single stable type that does not drift when the inline adjustment +# namespace moves. The generator verifies the rows really are identical across all tables. +ADOPTED_VALUES = { + "standard acceleration of gravity": "standard_gravity", + "standard atmosphere": "standard_atmosphere", + "standard-state pressure": "standard_state_pressure", + "conventional value of Josephson constant": "conventional_value_of_josephson_constant", + "conventional value of von Klitzing constant": "conventional_value_of_von_klitzing_constant", +} + +# Rows that alias an entity that already has a home in the `si` system. The expected +# exact value pins the equivalence; a table that disagreed would fail generation. +SI_ALIASES = { + "speed of light in vacuum": ("si::si2019::speed_of_light_in_vacuum", "299 792 458"), + "Planck constant": ("si::si2019::planck_constant", "6.626 070 15 e-34"), + "elementary charge": ("si::si2019::elementary_charge", "1.602 176 634 e-19"), + "Boltzmann constant": ("si::si2019::boltzmann_constant", "1.380 649 e-23"), + "Avogadro constant": ("si::si2019::avogadro_constant", "6.022 140 76 e23"), + "luminous efficacy": ("si::si2019::luminous_efficacy", "683"), + "hyperfine transition frequency of Cs-133": ( + "si::si2019::hyperfine_structure_transition_frequency_of_cs", + "9 192 631 770", + ), +} +# Rows that alias an exact `si` constant only where they are themselves exact; in +# CODATA 2014 h, e, k, and N_A were measured and get transcribed instead. +SI_ALIASES_MEASURED_IN_2014 = { + "Planck constant", + "elementary charge", + "Boltzmann constant", + "Avogadro constant", +} + +# Rows whose value/uncertainty/unit exactly duplicate another row of the same +# adjustment: the name is an alias for the very same entity, and re-declaring it would +# create a second constant type whose uncertainty the conversion engine would wrongly +# treat as independent. Candidate target names are tried in order; when none is present +# (or the row disagrees with every candidate), the row is transcribed on its own. +DUPLICATE_ALIASES: dict[str, tuple[str, ...]] = { + "atomic unit of action": ("reduced Planck constant", "Planck constant over 2 pi"), + "natural unit of action": ("reduced Planck constant", "Planck constant over 2 pi"), + "atomic unit of charge": ("elementary charge",), + "atomic unit of length": ("Bohr radius",), + "atomic unit of mass": ("electron mass",), + "atomic unit of energy": ("Hartree energy",), + "natural unit of mass": ("electron mass",), + "natural unit of length": ("reduced Compton wavelength",), + "natural unit of velocity": ("speed of light in vacuum",), + "unified atomic mass unit": ("atomic mass constant",), +} + +# Identifier overrides where plain normalization of the printed name is not wanted. A +# row named here is never classified as a unit variant. +IDENTIFIER_OVERRIDES = { + "vacuum mag. permeability": "magnetic_constant", + "mag. constant": "magnetic_constant", + "electric constant": "vacuum_electric_permittivity", + "Planck constant over 2 pi": "reduced_planck_constant", + "fine-structure constant": "fine_structure_constant", + "inverse fine-structure constant": "inverse_fine_structure_constant", + "Compton wavelength": "electron_compton_wavelength", + "reduced Compton wavelength": "reduced_electron_compton_wavelength", + "{220} lattice spacing of silicon": "lattice_spacing_of_silicon_220", + "lattice spacing of ideal Si (220)": "lattice_spacing_of_silicon_220", + "Cu x unit": "copper_x_unit", + "Mo x unit": "molybdenum_x_unit", + "atomic unit of mom.um": "atomic_unit_of_momentum", + "natural unit of mom.um": "natural_unit_of_momentum", + "molar volume of ideal gas (273.15 K, 100 kPa)": "molar_volume_of_ideal_gas_stp", + "molar volume of ideal gas (273.15 K, 101.325 kPa)": "molar_volume_of_ideal_gas_atm", + "Loschmidt constant (273.15 K, 100 kPa)": "loschmidt_constant_stp", + "Loschmidt constant (273.15 K, 101.325 kPa)": "loschmidt_constant_atm", + "Sackur-Tetrode constant (1 K, 100 kPa)": "sackur_tetrode_constant_100_kpa", + "Sackur-Tetrode constant (1 K, 101.325 kPa)": "sackur_tetrode_constant_101_325_kpa", + "standard acceleration of gravity": "standard_gravity", +} + +# Display symbols for constants with a conventional one; everything else falls back to +# its identifier, which is verbose but unambiguous (precedent: hep::gas_threshold). +# A single string is used verbatim; a pair is (unicode, ascii). +SYMBOLS: dict[str, object] = { + "alpha_particle_mass": ("m_α", "m_alpha"), + "atomic_mass_constant": "m_u", + "bohr_magneton": ("μ_B", "mu_B"), + "bohr_radius": "a_0", + "boltzmann_constant": "k", + "avogadro_constant": "N_A", + "planck_constant": "h", + "elementary_charge": "e", + "characteristic_impedance_of_vacuum": "Z_0", + "classical_electron_radius": "r_e", + "electron_compton_wavelength": ("λ_C", "lambda_C"), + "reduced_electron_compton_wavelength": ("ƛ_C", "lambdabar_C"), + "conductance_quantum": "G_0", + "deuteron_g_factor": "g_d", + "deuteron_mass": "m_d", + "deuteron_magnetic_moment": ("μ_d", "mu_d"), + "electron_g_factor": "g_e", + "electron_gyromagnetic_ratio": ("γ_e", "gamma_e"), + "electron_magnetic_moment": ("μ_e", "mu_e"), + "electron_mass": "m_e", + "faraday_constant": "F", + "fine_structure_constant": ("α", "alpha"), + "first_radiation_constant": "c_1", + "first_radiation_constant_for_spectral_radiance": "c_1L", + "hartree_energy": "E_h", + "helion_g_factor": "g_h", + "helion_mass": "m_h", + "josephson_constant": "K_J", + "conventional_value_of_josephson_constant": "K_J-90", + "conventional_value_of_von_klitzing_constant": "R_K-90", + "loschmidt_constant_stp": "n_0", + "magnetic_constant": ("μ₀", "u_0"), + "magnetic_flux_quantum": ("Φ₀", "Phi_0"), + "molar_gas_constant": "R", + "molar_mass_constant": "M_u", + "molar_planck_constant": "N_Ah", + "muon_g_factor": ("g_μ", "g_mu"), + "muon_mass": ("m_μ", "m_mu"), + "muon_magnetic_moment": ("μ_μ", "mu_mu"), + "neutron_g_factor": "g_n", + "neutron_gyromagnetic_ratio": ("γ_n", "gamma_n"), + "neutron_magnetic_moment": ("μ_n", "mu_n"), + "neutron_mass": "m_n", + "newtonian_constant_of_gravitation": "G", + "nuclear_magneton": ("μ_N", "mu_N"), + "planck_length": "l_P", + "planck_mass": "m_P", + "planck_temperature": "T_P", + "planck_time": "t_P", + "proton_g_factor": "g_p", + "proton_gyromagnetic_ratio": ("γ_p", "gamma_p"), + "proton_magnetic_moment": ("μ_p", "mu_p"), + "proton_mass": "m_p", + "proton_rms_charge_radius": "r_p", + "deuteron_rms_charge_radius": "r_d", + "reduced_planck_constant": ("ℏ", "hbar"), + "rydberg_constant": ("R_∞", "R_inf"), + "second_radiation_constant": "c_2", + "speed_of_light_in_vacuum": "c", + "stefan_boltzmann_constant": ("σ", "sigma"), + "standard_atmosphere": "atm", + "standard_gravity": ("g₀", "g_0"), + "tau_mass": ("m_τ", "m_tau"), + "thomson_cross_section": ("σ_e", "sigma_e"), + "triton_g_factor": "g_t", + "triton_mass": "m_t", + "triton_magnetic_moment": ("μ_t", "mu_t"), + "vacuum_electric_permittivity": ("ε₀", "eps_0"), + "von_klitzing_constant": "R_K", + "wien_wavelength_displacement_law_constant": "b", + "wien_frequency_displacement_law_constant": ("b′", "b_prime"), +} + + +@dataclass +class Relation: + """A curated defining relation for an exact but non-terminating table value.""" + + # C++ expression referencing units and previously emitted constants + cpp: str + # numeric equivalent in the row's own unit; receives a dict of previously computed + # constant values (each in the SI-coherent value of its own row's unit) + value: Callable[[dict[str, Fraction]], Fraction] + # extra comment lines to emit above the definition + note: str = "" + + +def _v90(v: dict[str, Fraction]) -> Fraction: + """K_J-90 / K_J: the conventional-to-actual Josephson ratio (the volt-90 in V).""" + return v["conventional_value_of_josephson_constant"] / v["josephson_constant"] + + +def _o90(v: dict[str, Fraction]) -> Fraction: + """R_K / R_K-90: the actual-to-conventional von Klitzing ratio (the ohm-90 in ohm).""" + return v["von_klitzing_constant"] / v["conventional_value_of_von_klitzing_constant"] + + +# Defining relations, keyed by row name; each applies in every adjustment where the row +# is exact and printed truncated. Order matters: a relation may reference constants +# defined by earlier relations of the same adjustment. +RELATIONS: dict[str, Relation] = { + "mag. constant": Relation( + cpp="mag<4> * mag_power<10, -7> * π * si::henry / si::metre", + value=lambda v: 4 * PI * Fraction(10) ** -7, + note=( + "Exact by definition: until the 2019 redefinition the ampere was defined" + " through this constant." + ), + ), + "electric constant": Relation( + cpp="one / magnetic_constant / square(speed_of_light_in_vacuum)", + value=lambda v: 1 + / (v["magnetic_constant"] * v["speed_of_light_in_vacuum"] ** 2), + ), + "characteristic impedance of vacuum": Relation( + cpp="magnetic_constant * speed_of_light_in_vacuum", + value=lambda v: v["magnetic_constant"] * v["speed_of_light_in_vacuum"], + ), + "reduced Planck constant": Relation( + cpp="planck_constant / (mag<2> * π)", + value=lambda v: v["planck_constant"] / (2 * PI), + ), + "atomic unit of permittivity": Relation( + cpp="mag<4> * π / magnetic_constant / square(speed_of_light_in_vacuum)", + value=lambda v: 4 + * PI + / (v["magnetic_constant"] * v["speed_of_light_in_vacuum"] ** 2), + note="4 π ε₀; exact only while μ₀ was exact, hence a relation only pre-2019.", + ), + "elementary charge over h-bar": Relation( + cpp="elementary_charge / reduced_planck_constant", + value=lambda v: v["elementary_charge"] / v["reduced_planck_constant"], + ), + "Josephson constant": Relation( + cpp="mag<2> * elementary_charge / planck_constant", + value=lambda v: 2 * v["elementary_charge"] / v["planck_constant"], + ), + "von Klitzing constant": Relation( + cpp="planck_constant / square(elementary_charge)", + value=lambda v: v["planck_constant"] / v["elementary_charge"] ** 2, + ), + "conductance quantum": Relation( + cpp="mag<2> * square(elementary_charge) / planck_constant", + value=lambda v: 2 * v["elementary_charge"] ** 2 / v["planck_constant"], + ), + "inverse of conductance quantum": Relation( + cpp="planck_constant / (mag<2> * square(elementary_charge))", + value=lambda v: v["planck_constant"] / (2 * v["elementary_charge"] ** 2), + ), + "mag. flux quantum": Relation( + cpp="planck_constant / (mag<2> * elementary_charge)", + value=lambda v: v["planck_constant"] / (2 * v["elementary_charge"]), + ), + "Faraday constant": Relation( + cpp="avogadro_constant * elementary_charge", + value=lambda v: v["avogadro_constant"] * v["elementary_charge"], + ), + "molar gas constant": Relation( + cpp="avogadro_constant * boltzmann_constant", + value=lambda v: v["avogadro_constant"] * v["boltzmann_constant"], + ), + "molar Planck constant": Relation( + cpp="avogadro_constant * planck_constant", + value=lambda v: v["avogadro_constant"] * v["planck_constant"], + ), + "first radiation constant": Relation( + cpp="mag<2> * π * planck_constant * square(speed_of_light_in_vacuum)", + value=lambda v: 2 + * PI + * v["planck_constant"] + * v["speed_of_light_in_vacuum"] ** 2, + ), + "first radiation constant for spectral radiance": Relation( + cpp="mag<2> * planck_constant * square(speed_of_light_in_vacuum) / si::steradian", + value=lambda v: 2 * v["planck_constant"] * v["speed_of_light_in_vacuum"] ** 2, + ), + "second radiation constant": Relation( + cpp="planck_constant * speed_of_light_in_vacuum / boltzmann_constant", + value=lambda v: v["planck_constant"] + * v["speed_of_light_in_vacuum"] + / v["boltzmann_constant"], + ), + "Stefan-Boltzmann constant": Relation( + cpp=( + "mag_ratio<2, 15> * pow<5>(π) * pow<4>(boltzmann_constant) /" + " cubic(planck_constant) / square(speed_of_light_in_vacuum)" + ), + value=lambda v: Fraction(2, 15) + * PI**5 + * v["boltzmann_constant"] ** 4 + / v["planck_constant"] ** 3 + / v["speed_of_light_in_vacuum"] ** 2, + ), + "Wien wavelength displacement law constant": Relation( + cpp="second_radiation_constant / wien_x_wavelength", + value=lambda v: v["second_radiation_constant"] / WIEN_X_WAVELENGTH, + note=( + "b = c₂ / x, where x solves the transcendental equation x = 5 (1 - e^-x);" + " see `wien_x_wavelength` above." + ), + ), + "Wien frequency displacement law constant": Relation( + cpp="wien_x_frequency * boltzmann_constant / planck_constant", + value=lambda v: WIEN_X_FREQUENCY + * v["boltzmann_constant"] + / v["planck_constant"], + note=( + "b' = x k / h, where x solves the transcendental equation x = 3 (1 - e^-x);" + " see `wien_x_frequency` above." + ), + ), + "Loschmidt constant (273.15 K, 100 kPa)": Relation( + cpp="mag_ratio<10'000'000, 27'315> * si::pascal / boltzmann_constant / si::kelvin", + value=lambda v: Fraction(10_000_000, 27_315) / v["boltzmann_constant"], + ), + "Loschmidt constant (273.15 K, 101.325 kPa)": Relation( + cpp="mag_ratio<10'132'500, 27'315> * si::pascal / boltzmann_constant / si::kelvin", + value=lambda v: Fraction(10_132_500, 27_315) / v["boltzmann_constant"], + ), + "molar volume of ideal gas (273.15 K, 100 kPa)": Relation( + cpp=( + "mag_ratio<27'315, 10'000'000> * avogadro_constant * boltzmann_constant *" + " si::kelvin / si::pascal" + ), + value=lambda v: Fraction(27_315, 10_000_000) + * v["avogadro_constant"] + * v["boltzmann_constant"], + ), + "molar volume of ideal gas (273.15 K, 101.325 kPa)": Relation( + cpp=( + "mag_ratio<27'315, 10'132'500> * avogadro_constant * boltzmann_constant *" + " si::kelvin / si::pascal" + ), + value=lambda v: Fraction(27_315, 10_132_500) + * v["avogadro_constant"] + * v["boltzmann_constant"], + ), + "conventional value of ampere-90": Relation( + cpp=( + "conventional_value_of_josephson_constant / josephson_constant *" + " conventional_value_of_von_klitzing_constant / von_klitzing_constant *" + " si::ampere" + ), + value=lambda v: _v90(v) / _o90(v), + note="A_90 = V_90 / Ω_90 = (K_J-90/K_J) (R_K-90/R_K) A.", + ), + "conventional value of coulomb-90": Relation( + cpp=( + "conventional_value_of_josephson_constant / josephson_constant *" + " conventional_value_of_von_klitzing_constant / von_klitzing_constant *" + " si::coulomb" + ), + value=lambda v: _v90(v) / _o90(v), + ), + "conventional value of farad-90": Relation( + cpp=( + "conventional_value_of_von_klitzing_constant / von_klitzing_constant *" + " si::farad" + ), + value=lambda v: 1 / _o90(v), + ), + "conventional value of henry-90": Relation( + cpp=( + "von_klitzing_constant / conventional_value_of_von_klitzing_constant *" + " si::henry" + ), + value=_o90, + ), + "conventional value of ohm-90": Relation( + cpp=( + "von_klitzing_constant / conventional_value_of_von_klitzing_constant *" + " si::ohm" + ), + value=_o90, + ), + "conventional value of volt-90": Relation( + cpp="conventional_value_of_josephson_constant / josephson_constant * si::volt", + value=_v90, + ), + "conventional value of watt-90": Relation( + cpp=( + "square(conventional_value_of_josephson_constant / josephson_constant) *" + " conventional_value_of_von_klitzing_constant / von_klitzing_constant *" + " si::watt" + ), + value=lambda v: _v90(v) ** 2 / _o90(v), + note="W_90 = V_90 A_90 = (K_J-90/K_J)² (R_K-90/R_K) W.", + ), +} + +# Prose notes preserved on specific transcribed constants. +NOTES = { + ("2018", "vacuum mag. permeability"): ( + "Measured since the 2019 SI redefinition fixed `e` instead of the ampere." + ), + ( + "2022", + "Newtonian constant of gravitation", + ): "Unchanged from the 2018 adjustment.", +} + + +# -------------------------------------------------------------------------------------- +# Name normalization +# -------------------------------------------------------------------------------------- + + +def identifier(name: str) -> str: + if name in IDENTIFIER_OVERRIDES: + return IDENTIFIER_OVERRIDES[name] + text = name + text = text.replace("mom.um", "momentum") + text = text.replace("mag.", "magnetic") + text = text.replace("mom.", "moment") + return re.sub(r"[^A-Za-z0-9]+", "_", text).strip("_").lower() + + +def symbol_expr(ident: str) -> str: + sym = SYMBOLS.get(ident, ident) + if isinstance(sym, tuple): + unicode_sym, ascii_sym = sym + return f'symbol_text{{u8"{unicode_sym}", "{ascii_sym}"}}' + return f'"{sym}"' + + +# -------------------------------------------------------------------------------------- +# Generation +# -------------------------------------------------------------------------------------- + + +@dataclass +class Emitted: + ident: str + kind: str # "constant" | "relation" | "alias" | "si-alias" + row: Optional[Row] + lines: list[str] = field(default_factory=list) + + @property + def essential(self) -> bool: + return self.row is not None and self.row.name in ESSENTIAL_ROWS + + +@dataclass +class Disposition: + generated: list[str] = field(default_factory=list) + aliases: list[str] = field(default_factory=list) + variants: list[str] = field(default_factory=list) + skips: list[tuple[str, str]] = field(default_factory=list) + + +def row_comment(row: Row) -> str: + unit = f" {row.unit}" if row.unit else "" + if row.exact: + return f"// {row.name}: {row.value}{unit} (exact)" + return f"// {row.name}: {row.value}{unit}, u = {row.uncertainty}{unit}" + + +def emit_adjustment( + rows: list[Row], adjustment: str +) -> tuple[list[Emitted], Disposition]: + emitted: list[Emitted] = [] + seen_idents: set[str] = set() + disposition = Disposition() + by_name = {row.name: row for row in rows} + values: dict[str, Fraction] = { + "wien_x_wavelength": WIEN_X_WAVELENGTH, + "wien_x_frequency": WIEN_X_FREQUENCY, + } + idents: dict[str, str] = {} # row name -> emitted identifier + + def add(entry: Emitted): + if entry.ident in seen_idents: + raise ValueError( + f"identifier collision in codata{adjustment}: {entry.ident}" + ) + seen_idents.add(entry.ident) + emitted.append(entry) + + def si_alias(row: Row) -> bool: + if row.name not in SI_ALIASES: + return False + if adjustment == "2014" and row.name in SI_ALIASES_MEASURED_IN_2014: + return False + target, expected_value = SI_ALIASES[row.name] + if not row.exact or row.value != expected_value: + raise ValueError( + f"si alias mismatch for {row.name} ({adjustment}): {row.value!r}" + ) + ident = target.rsplit("::", 1)[1] + entry = Emitted(ident=ident, kind="si-alias", row=row) + entry.lines = [row_comment(row), f"using {target};"] + add(entry) + values[ident] = number_fraction(row.value) + idents[row.name] = ident + disposition.aliases.append(f"{row.name} -> {target}") + return True + + def duplicate_alias(row: Row) -> bool: + for target_name in DUPLICATE_ALIASES.get(row.name, ()): + target_row = by_name.get(target_name) + if target_row is None or target_name not in idents: + continue + if (row.value, row.uncertainty, row.unit) != ( + target_row.value, + target_row.uncertainty, + target_row.unit, + ): + raise ValueError( + f"rows {row.name!r} and {target_name!r} differ in {adjustment};" + " the duplicate-alias curation is stale" + ) + target_ident = idents[target_name] + ident = identifier(row.name) + entry = Emitted(ident=ident, kind="alias", row=row) + entry.lines = [ + row_comment(row), + f"inline constexpr auto {ident} = {target_ident};", + ] + add(entry) + values[ident] = values[target_ident] + idents[row.name] = ident + disposition.aliases.append(f"{row.name} -> {target_ident}") + return True + return False + + def relation(row: Row) -> bool: + rel = RELATIONS.get(row.name) + if rel is None or not row.exact: + return False + ident = identifier(row.name) + value = rel.value(values) + entry = Emitted(ident=ident, kind="relation", row=row) + lines = [row_comment(row)] + if rel.note: + lines += [f"// {rel.note}"] + lines += [ + f"inline constexpr struct {ident} final :", + f" named_constant<{symbol_expr(ident)}, {rel.cpp}> {{}} {ident};", + ] + entry.lines = lines + add(entry) + values[ident] = value + idents[row.name] = ident + disposition.generated.append(f"{row.name} (relation)") + return True + + def transcribed(row: Row): + ident = identifier(row.name) + definition = f"{magnitude_expr(row.value)} * {unit_expr(row.unit)}" + entry = Emitted(ident=ident, kind="constant", row=row) + lines = [row_comment(row)] + note = NOTES.get((adjustment, row.name)) + if note: + lines += [f"// {note}"] + if row.exact: + lines += [ + f"inline constexpr struct {ident} final :", + f" named_constant<{symbol_expr(ident)}, {definition}> {{}} {ident};", + ] + else: + unc = ( + f"{uncertainty_magnitude_expr(row.uncertainty)} * {unit_expr(row.unit)}" + ) + lines += [ + f"inline constexpr struct {ident} final :", + f" named_constant<{symbol_expr(ident)}, {definition}," + f" standard_uncertainty{{{unc}}}> {{}} {ident};", + ] + entry.lines = lines + add(entry) + values[ident] = number_fraction(row.value) + idents[row.name] = ident + disposition.generated.append(row.name) + + # Pass 1: literal rows (measured and exact non-truncated) plus si aliases, in table + # order. Deferred rows (relations and duplicate aliases) may reference these. + deferred: list[Row] = [] + for row in rows: + if row.name in ADOPTED_VALUES: + # emitted once in codata/adopted_values.h; register the identifier so relations + # and duplicate aliases of this adjustment may reference it + ident = ADOPTED_VALUES[row.name] + values[ident] = number_fraction(row.value) + idents[row.name] = ident + disposition.aliases.append( + f"{row.name} -> codata::{ident} (adopted, shared)" + ) + elif (adjustment, row.name) in YEAR_SKIPS: + disposition.skips.append((row.name, YEAR_SKIPS[(adjustment, row.name)])) + elif row.name in CURATED_SKIPS: + disposition.skips.append((row.name, CURATED_SKIPS[row.name])) + elif VARIANT_RE.search(row.name) and row.name not in IDENTIFIER_OVERRIDES: + disposition.variants.append(row.name) + elif si_alias(row): + pass + elif any(by_name.get(t) for t in DUPLICATE_ALIASES.get(row.name, ())): + deferred.append(row) + elif row.exact and row.truncated: + deferred.append(row) + else: + transcribed(row) + + # Pass 2: relations in curated order, then duplicate aliases. + deferred_names = {row.name for row in deferred} + for name in RELATIONS: + if name in deferred_names and relation(by_name[name]): + deferred_names.discard(name) + for row in deferred: + if row.name in deferred_names and duplicate_alias(row): + deferred_names.discard(row.name) + if deferred_names: + raise ValueError( + f"unaccounted rows in codata{adjustment}: {sorted(deferred_names)};" + " add a relation, alias, or curated skip" + ) + + return emitted, disposition + + +LICENSE = """\ +// The MIT License (MIT) +// +// Copyright (c) 2018 Mateusz Pusz +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#pragma once + +// This file is GENERATED by `scripts/codata_constants.py` from the NIST "allascii" +// tables checked in under `scripts/codata/`. Do not edit it manually; rerun the script. +""" + +MATH_CONSTANTS_HEADER = LICENSE + """\ +// +// Solutions of the Wien displacement transcendental equations `x = n (1 - exp(-x))` +// (n = 5 for the wavelength form, n = 3 for the frequency form). Like `π`, they are +// exact mathematical constants; the truncated literals below are the approximations +// used when a conversion factor is materialized into a representation type. The Wien +// displacement law constants of the post-2019 adjustments are defined through them. + +#include +#include + +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif + +MP_UNITS_EXPORT +namespace mp_units::codata { + +// clang-format off +#if defined MP_UNITS_COMP_CLANG && MP_UNITS_COMP_CLANG < 18 +inline constexpr struct wien_x_wavelength_c final : mag_constant { + static constexpr auto _value_ = 4.965114231744276303698759131322893944L; +} wien_x_wavelength_c; +inline constexpr struct wien_x_frequency_c final : mag_constant { + static constexpr auto _value_ = 2.821439372122078893403191330294485195L; +} wien_x_frequency_c; +#else +inline constexpr struct wien_x_wavelength_c final : + mag_constant {} wien_x_wavelength_c; +inline constexpr struct wien_x_frequency_c final : + mag_constant {} wien_x_frequency_c; +#endif +inline constexpr struct wien_x_wavelength final : + named_constant * one> {} wien_x_wavelength; +inline constexpr struct wien_x_frequency final : + named_constant * one> {} wien_x_frequency; +// clang-format on + +} // namespace mp_units::codata +""" + +UMBRELLA_HEADER = LICENSE + """\ +// +// The CODATA recommended values of the fundamental physical constants, expressed in SI +// units, with one namespace (and one header) per adjustment. Include this umbrella for +// all of them, or `mp-units/systems/codata/codataYYYY.h` for a single adjustment. +// +// This is a system of its own rather than a part of `si`. The SI fixes exactly seven +// constants (see `si2019` in `si/constants.h`, aliased in every adjustment namespace); +// everything CODATA publishes beyond those is *measured*, so its value carries a +// standard uncertainty and shifts with each adjustment. Keeping them out of `si` means +// `mp-units/systems/si.h`, which is what most translation units reach for, does not pay +// for constants that most of them never name. +// +// Measured constants declare the absolute standard uncertainty exactly as the table +// publishes it (`standard_uncertainty`); exact-by-definition values printed by NIST as +// truncated non-terminating decimals ("...") are defined by their exact symbolic +// relation instead, so nothing in these headers is rounded by us. Rows that restate a +// constant in other units ("... in MeV", "energy equivalent", unit relationships) are +// not repeated: constants are units in this library, so those forms are a conversion at +// the point of use. +// +// The most recent adjustment is `inline`, so `codata::magnetic_constant` is the current +// value and `codata::codata2018::magnetic_constant` pins a specific one. Moving that +// `inline` to a newer adjustment is a deliberate, documented change of the default. +// +// NOTE: these are *not* interchangeable with the constants of the same name in +// `mp_units::hep`. HEP declares its own system of quantities (base dimensions L, T, Q, +// E, ...; energy is a base quantity and there is no mass dimension), so its constants +// are unrelated types. The published uncertainties differ too: before the 2019 +// redefinition the elementary charge was itself measured, so a mass expressed in kg and +// the same mass expressed in MeV/c² are separate CODATA table entries with different +// uncertainties. + +#include +#include +#include +""" + +ADJUSTMENT_DOC = { + "2014": "// The CODATA 2014 adjustment: the last one before the 2019 SI" + " redefinition, so h, e,\n// k, and N_A are measured here and μ₀ is exact.", + "2018": "// The CODATA 2018 adjustment: the basis of the 2019 SI redefinition," + " whose defining\n// constants are aliased from `si::si2019`.", + "2022": "// The CODATA 2022 adjustment (the current one, hence the `inline`" + " namespace).", +} + +ESSENTIAL_DOC = ( + '// This is the `essential` tier: the NIST "Frequently used constants" selection,' + " kept in its\n// own header because the complete table costs two orders of" + " magnitude more to compile. The\n// full " + " includes this header, so both spell the very\n// same constant types and may be" + " mixed freely." +) + + +def adjustment_header(adjustment: str, body: str, uses_wien: bool, tier: str) -> str: + includes = ["#include "] + if tier == "essential": + includes.append("#include ") + if tier == "full": + includes.append( + f"#include " + ) + if uses_wien: + includes.append("#include ") + includes += [ + "#include ", + "#include ", + ] + inline = "inline " if adjustment == INLINE_ADJUSTMENT else "" + doc = ADJUSTMENT_DOC[adjustment] + if tier == "essential": + doc += "\n//\n" + ESSENTIAL_DOC + return ( + LICENSE + + "//\n" + + doc + + "\n" + + "// See for the full description of the system.\n" + + "\n" + + "\n".join(includes) + + "\n\n#ifndef MP_UNITS_IN_MODULE_INTERFACE\n" + + "#include \n" + + "#endif\n" + + "\nMP_UNITS_EXPORT\nnamespace mp_units::codata {\n" + + f"\n{inline}namespace codata{adjustment} {{\n" + + "\n// clang-format off" + + body + + "\n// clang-format on\n" + + f"\n}} // namespace codata{adjustment}\n" + + "\n} // namespace mp_units::codata\n" + ) + + +ADOPTED_DOC = ( + "//\n" + '// The NIST "adopted values": conventional constants fixed by CGPM/CIPM resolutions' + " rather\n// than measured, identical in every CODATA adjustment (the generator verifies" + " that). They\n// live directly in `mp_units::codata`, outside the adjustment namespaces," + " so entities\n// defined through them (e.g. `yard_pound`'s `pound_force` through the" + " standard gravity)\n// keep a single stable type that does not change when the inline" + " adjustment namespace\n// moves to a newer release." +) + + +def emit_adopted_values() -> str: + tables = {adjustment: parse_table(adjustment) for adjustment in ADJUSTMENTS} + rows_2022 = {row.name: row for row in tables["2022"]} + entries = [] + for name, ident in ADOPTED_VALUES.items(): + row = rows_2022[name] + for adjustment, rows in tables.items(): + other = next((r for r in rows if r.name == name), None) + if other is None or (other.value, other.uncertainty, other.unit) != ( + row.value, + row.uncertainty, + row.unit, + ): + raise ValueError( + f"adopted value {name!r} differs (or is missing) in {adjustment};" + " it must not be shared" + ) + assert row.exact and not row.truncated + definition = f"{magnitude_expr(row.value)} * {unit_expr(row.unit)}" + entries.append( + f"{row_comment(row)}\n" + f"inline constexpr struct {ident} final :\n" + f" named_constant<{symbol_expr(ident)}, {definition}> {{}} {ident};" + ) + return ( + LICENSE + + ADOPTED_DOC + + "\n\n#include \n" + + "#include \n" + + "\n#ifndef MP_UNITS_IN_MODULE_INTERFACE\n" + + "#include \n" + + "#endif\n" + + "\nMP_UNITS_EXPORT\nnamespace mp_units::codata {\n" + + "\n// clang-format off\n\n" + + "\n\n".join(entries) + + "\n// clang-format on\n" + + "\n} // namespace mp_units::codata\n" + ) + + +def generate() -> tuple[dict[str, str], dict[str, Disposition]]: + files: dict[str, str] = { + "codata/adopted_values.h": emit_adopted_values(), + "codata/math_constants.h": MATH_CONSTANTS_HEADER, + "codata.h": UMBRELLA_HEADER, + } + dispositions: dict[str, Disposition] = {} + for adjustment in ADJUSTMENTS: + rows = parse_table(adjustment) + emitted, disposition = emit_adjustment(rows, adjustment) + dispositions[adjustment] = disposition + for tier, entries in ( + ("essential", [e for e in emitted if e.essential]), + ("full", [e for e in emitted if not e.essential]), + ): + body = "".join("\n\n" + "\n".join(entry.lines) for entry in entries) + uses_wien = "wien_x_" in body + suffix = "_essential" if tier == "essential" else "" + files[f"codata/codata{adjustment}{suffix}.h"] = adjustment_header( + adjustment, body, uses_wien, tier + ) + return files, dispositions + + +# -------------------------------------------------------------------------------------- +# Verification: re-parse the generated header and recompute every value +# -------------------------------------------------------------------------------------- + + +def evaluate_cpp_expression(expr: str, values: dict[str, Fraction]) -> Fraction: + """Numerically evaluate an emitted C++ unit/magnitude expression. + + Coherent SI units evaluate to 1, so the result of a definition is the value in the + row's own unit once the caller divides by the row unit's factor. + """ + text = expr.replace("'", "") + text = re.sub(r"mag_ratio<([^>]+)>", r"__ratio(\1)", text) + text = re.sub(r"mag_power<10,\s*(-?\d+)>", r"(Fraction(10) ** (\1))", text) + text = re.sub(r"mag<(\d+)>", r"Fraction(\1)", text) + text = text.replace("π", "PI") + text = re.sub(r"pow<(\d+)>\(", r"__pow(\1, ", text) + text = text.replace("square(", "__pow(2, ") + text = text.replace("cubic(", "__pow(3, ") + for token in sorted(UNIT_TOKENS.values(), key=lambda entry: -len(entry[0])): + cpp, factor = token + text = text.replace(cpp, f"Fraction({factor.numerator}, {factor.denominator})") + + def ident_sub(match: re.Match) -> str: + name = match.group(0) + if name in ("Fraction", "PI", "__ratio", "__pow"): + return name + if name == "one": + return "Fraction(1)" + if name in values: + return f"values[{name!r}]" + raise ValueError(f"unknown identifier {name!r} in expression {expr!r}") + + text = re.sub(r"(?\s*\{\s*\}\s*\1;", + re.DOTALL, +) +ALIAS_RE = re.compile(r"inline constexpr auto (\w+) = (\w+);") +USING_RE = re.compile(r"using si::(?:\w+::)?(\w+);") + +SI_EXACT_VALUES = { + "speed_of_light_in_vacuum": Fraction(299_792_458), + "planck_constant": Fraction(662_607_015, 10**8) * Fraction(10) ** -34, + "elementary_charge": Fraction(1_602_176_634, 10**9) * Fraction(10) ** -19, + "boltzmann_constant": Fraction(1_380_649, 10**6) * Fraction(10) ** -23, + "avogadro_constant": Fraction(602_214_076, 10**8) * Fraction(10) ** 23, + "luminous_efficacy": Fraction(683), + "hyperfine_structure_transition_frequency_of_cs": Fraction(9_192_631_770), +} + + +def split_named_constant_args(args: str) -> list[str]: + parts = [] + depth = 0 + current: list[str] = [] + for char in args: + if char in "<{(": + depth += 1 + elif char in ">})": + depth -= 1 + if char == "," and depth == 0: + parts.append("".join(current).strip()) + current = [] + else: + current.append(char) + parts.append("".join(current).strip()) + return parts + + +def rows_by_identifier(adjustment: str) -> dict[str, Row]: + rows = {} + for row in parse_table(adjustment): + ident = identifier(row.name) + rows.setdefault(ident, row) + return rows + + +def decimal_prefix_matches(value: Fraction, printed: str) -> bool: + """Check a computed exact value against a `...`-truncated printed decimal. + + NIST truncates the non-terminating expansion, so the printed digits must be the + truncation (or, defensively, the rounding) of the computed value at that length. + """ + digits, exp = split_number(printed) + negative = digits.startswith("-") + digits = digits.lstrip("-") + point = digits.index(".") if "." in digits else len(digits) + plain = digits.replace(".", "") + scaled = abs(value) / Fraction(10) ** exp / Fraction(10) ** (point - len(plain)) + truncated = int(scaled) + rounded = int(scaled + Fraction(1, 2)) + return int(plain) in (truncated, rounded) and (value < 0) == negative + + +def verify(files: dict[str, str]) -> list[str]: + """Re-parse the generated headers and compare every constant against its table row.""" + errors = [] + + # the adopted-values header first: exact literals validated against the 2022 rows + adopted_values: dict[str, Fraction] = {} + adopted_units: dict[str, str] = {} + rows_2022 = rows_by_identifier("2022") + for match in CONSTANT_RE.finditer(files["codata/adopted_values.h"]): + ident, args = match.group(1), match.group(2) + row = rows_2022.get(ident) + if row is None: + errors.append(f"adopted: no table row found for {ident}") + continue + value = evaluate_cpp_expression( + split_named_constant_args(args)[1], {} + ) / unit_si_factor(row.unit) + if value != number_fraction(row.value): + errors.append(f"adopted: {ident} value {float(value)} != {row.value!r}") + adopted_values[ident] = value + adopted_units[ident] = row.unit + + # the essential tier precedes the full one, exactly as the full header includes it + header = "".join( + files[f"codata/codata{adjustment}_essential.h"] + + files[f"codata/codata{adjustment}.h"] + for adjustment in ADJUSTMENTS + ) + chunks = re.split(r"(?:inline )?namespace (codata\d{4}) \{", header)[1:] + state: dict[str, tuple[dict[str, Fraction], dict[str, str]]] = {} + for namespace, body in zip(chunks[0::2], chunks[1::2]): + adjustment = namespace.removeprefix("codata") + rows = rows_by_identifier(adjustment) + if adjustment not in state: + state[adjustment] = ( + { + "wien_x_wavelength": WIEN_X_WAVELENGTH, + "wien_x_frequency": WIEN_X_FREQUENCY, + } + | adopted_values, + dict(adopted_units), + ) + values, units = state[adjustment] # identifier -> value / row unit string + + for match in USING_RE.finditer(body): + ident = match.group(1) + values[ident] = SI_EXACT_VALUES[ident] + row = rows.get(ident) or rows.get( + { + "hyperfine_structure_transition_frequency_of_cs": ( + "hyperfine_transition_frequency_of_cs_133" + ), + "standard_gravity": "standard_acceleration_of_gravity", + }.get(ident, ident) + ) + units[ident] = row.unit if row else "" + + for match in CONSTANT_RE.finditer(body): + ident, args = match.group(1), match.group(2) + parts = split_named_constant_args(args) + definition = parts[1] + unc_expr = None + if len(parts) > 2: + inner = parts[2] + assert inner.startswith("standard_uncertainty{") and inner.endswith("}") + unc_expr = inner[len("standard_uncertainty{") : -1] + row = rows.get(ident) + if row is None: + errors.append(f"{adjustment}: no table row found for {ident}") + continue + row_factor = unit_si_factor(row.unit) + si_value = evaluate_cpp_expression(definition, values) + value = si_value / row_factor + values[ident] = value + units[ident] = row.unit + if row.truncated: + if not decimal_prefix_matches(value, row.value): + errors.append( + f"{adjustment}: {ident} = {float(value)} does not match" + f" truncated {row.value!r}" + ) + elif value != number_fraction(row.value): + errors.append( + f"{adjustment}: {ident} value {float(value)} != {row.value!r}" + ) + if unc_expr is not None: + unc = evaluate_cpp_expression(unc_expr, values) / row_factor + if unc != number_fraction(row.uncertainty): + errors.append( + f"{adjustment}: {ident} uncertainty {float(unc)} !=" + f" {row.uncertainty!r}" + ) + elif not row.exact: + errors.append(f"{adjustment}: measured row {ident} has no uncertainty") + + for match in ALIAS_RE.finditer(body): + ident, target = match.group(1), match.group(2) + if target not in values: + errors.append(f"{adjustment}: alias {ident} -> unknown {target}") + continue + row = rows.get(ident) + if row is None: + errors.append(f"{adjustment}: no table row found for alias {ident}") + continue + # the duplicate-alias curation guarantees identical unit strings, so the + # target's value is already in the alias row's own unit + if row.truncated: + if not decimal_prefix_matches(values[target], row.value): + errors.append(f"{adjustment}: alias {ident} value mismatch") + elif number_fraction(row.value) != values[target]: + errors.append(f"{adjustment}: alias {ident} value mismatch") + values[ident] = values[target] + units[ident] = units.get(target, "") + return errors + + +# -------------------------------------------------------------------------------------- +# Main +# -------------------------------------------------------------------------------------- + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--report", action="store_true", help="print row dispositions") + parser.add_argument( + "--check", action="store_true", help="verify only; fail if the file differs" + ) + args = parser.parse_args() + + files, dispositions = generate() + + if args.report: + for adjustment, disposition in dispositions.items(): + print(f"== codata{adjustment} ==") + print(f" generated: {len(disposition.generated)}") + print(f" aliases: {len(disposition.aliases)}") + for alias in disposition.aliases: + print(f" {alias}") + print(f" variants: {len(disposition.variants)}") + print(f" skipped: {len(disposition.skips)}") + for name, reason in disposition.skips: + print(f" {name}: {reason}") + return 0 + + errors = verify(files) + if errors: + for error in errors: + print(f"VERIFY: {error}", file=sys.stderr) + return 1 + + if args.check: + stale = [ + name + for name, content in files.items() + if not (SYSTEMS_DIR / name).exists() + or (SYSTEMS_DIR / name).read_text() != content + ] + if stale: + print(f"out of date: {stale}; rerun scripts/codata_constants.py") + return 1 + print("codata headers are up to date and verified") + return 0 + + (SYSTEMS_DIR / "codata").mkdir(exist_ok=True) + for name, content in files.items(): + (SYSTEMS_DIR / name).write_text(content) + total = sum(len(d.generated) + len(d.aliases) for d in dispositions.values()) + print( + f"wrote {len(files)} headers under {SYSTEMS_DIR}" + f" ({total} constants across {len(ADJUSTMENTS)} adjustments)" + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/systems_reference.py b/scripts/systems_reference.py index faa8162750..12ce60dc31 100644 --- a/scripts/systems_reference.py +++ b/scripts/systems_reference.py @@ -151,6 +151,10 @@ class Constant: # Relative standard uncertainty magnitude for a measured constant (e.g., # "mag_ratio<22, 10> * mag_power<10, -5>"); empty for constants that are exact by definition relative_standard_uncertainty: str = "" + # Absolute standard uncertainty expression for a measured constant declared with the + # `standard_uncertainty` wrapper (e.g., "mag_ratio<15, 10> * mag_power<10, -15> * m3 / kg / + # s2"); empty when the constant is exact or declares the relative form instead + standard_uncertainty: str = "" namespace: str = "" file: str = "" subnamespace: Optional[str] = None # Relative subnamespace (e.g., "codata2022") @@ -1070,6 +1074,7 @@ def _parse_units( symbol=const.symbol, definition=const.definition, relative_standard_uncertainty=const.relative_standard_uncertainty, + standard_uncertainty=const.standard_uncertainty, namespace=entity_full_namespace, file=file, alias_target=f"{full_namespace}::{unit_name}", @@ -1118,25 +1123,39 @@ def _extract_template_arg(self, text: str) -> str: return "".join(result).strip() _RSU_MARKER = ", relative_standard_uncertainty{" + _SU_MARKER = ", standard_uncertainty{" + + def _metadata_marker_index(self, definition: str) -> int: + """Index of the first uncertainty-wrapper argument, or -1 when there is none.""" + indices = [ + idx + for idx in ( + definition.find(self._RSU_MARKER), + definition.find(self._SU_MARKER), + ) + if idx != -1 + ] + return min(indices) if indices else -1 def _strip_constant_metadata(self, definition: str) -> str: """Drop trailing `named_constant` metadata arguments from a definition. - Metadata such as `relative_standard_uncertainty{...}` describes the constant, not how - its value is defined, so it gets its own column rather than sharing "Definition". + Metadata such as `relative_standard_uncertainty{...}` or `standard_uncertainty{...}` + describes the constant, not how its value is defined, so it gets its own column rather + than sharing "Definition". """ - idx = definition.find(self._RSU_MARKER) + idx = self._metadata_marker_index(definition) return definition[:idx].strip() if idx != -1 else definition - def _extract_relative_standard_uncertainty(self, definition: str) -> str: - """Extract the relative standard uncertainty magnitude from a raw constant definition. + def _extract_metadata_argument(self, definition: str, marker: str) -> str: + """Extract the content of an uncertainty-wrapper argument from a raw definition. - Returns an empty string for a constant that is exact by definition (no such argument). + Returns an empty string when the definition does not carry that wrapper. """ - idx = definition.find(self._RSU_MARKER) + idx = definition.find(marker) if idx == -1: return "" - inner = definition[idx + len(self._RSU_MARKER) :] + inner = definition[idx + len(marker) :] depth = 0 for pos, char in enumerate(inner): if char == "{": @@ -1147,6 +1166,20 @@ def _extract_relative_standard_uncertainty(self, definition: str) -> str: depth -= 1 return "" + def _extract_relative_standard_uncertainty(self, definition: str) -> str: + """Extract the relative standard uncertainty magnitude from a raw constant definition. + + Returns an empty string for a constant that is exact by definition (no such argument). + """ + return self._extract_metadata_argument(definition, self._RSU_MARKER) + + def _extract_standard_uncertainty(self, definition: str) -> str: + """Extract the absolute standard uncertainty expression from a raw constant definition. + + Returns an empty string for a constant that is exact by definition (no such argument). + """ + return self._extract_metadata_argument(definition, self._SU_MARKER) + def _parse_point_origins(self, content: str, system: SystemInfo, file: str): """Parse point origin definitions""" # Pattern for absolute and relative point origins: @@ -1309,6 +1342,7 @@ def _parse_constants(self, content: str, system: SystemInfo, file: str): definition_full = self._extract_template_arg(definition_raw) definition = self._strip_constant_metadata(definition_full) rsu = self._extract_relative_standard_uncertainty(definition_full) + su = self._extract_standard_uncertainty(definition_full) # Detect nested namespace (including inline namespaces for proper documentation) match_pos = match.start() @@ -1329,6 +1363,7 @@ def _parse_constants(self, content: str, system: SystemInfo, file: str): symbol=symbol, definition=definition, relative_standard_uncertainty=rsu, + standard_uncertainty=su, namespace=full_namespace, file=file, subnamespace=nested_ns, @@ -1344,6 +1379,7 @@ def _parse_constants(self, content: str, system: SystemInfo, file: str): definition_full = self._extract_template_arg(definition_raw) definition = self._strip_constant_metadata(definition_full) rsu = self._extract_relative_standard_uncertainty(definition_full) + su = self._extract_standard_uncertainty(definition_full) # Detect nested namespace (including inline namespaces for proper documentation) match_pos = match.start() @@ -1364,6 +1400,7 @@ def _parse_constants(self, content: str, system: SystemInfo, file: str): symbol=symbol, definition=definition, relative_standard_uncertainty=rsu, + standard_uncertainty=su, namespace=full_namespace, file=file, subnamespace=nested_ns, @@ -1420,8 +1457,11 @@ def _parse_aliases(self, content: str, system: SystemInfo, file: str): s for s in self.systems.values() if s != system ] - # Check if target is a point origin - target_origin = None + # Resolve the target within one system at a time: an entity of any kind in a + # nearer system wins over any kind in a farther one. Sweeping all systems per + # kind instead made `codata::atomic_unit_of_charge = elementary_charge` resolve + # to the `isq` QUANTITY of that name rather than to codata's own constant. + target_origin = target_quantity = target_constant = target_unit = None for search_system in search_systems: if search_system is None: continue @@ -1429,8 +1469,27 @@ def _parse_aliases(self, content: str, system: SystemInfo, file: str): if origin.name == target_lookup: target_origin = origin break - if target_origin: + for qty in search_system.quantities: + if qty.name == target_lookup: + target_quantity = qty + break + for constant in search_system.constants: + if constant.name == target_lookup: + target_constant = constant + break + for unit in search_system.units: + if unit.name == target_lookup: + target_unit = unit + break + if target_origin or target_quantity or target_constant or target_unit: break + # within one system, a point origin wins, then a quantity, a constant, a unit + if target_origin: + target_quantity = target_constant = target_unit = None + elif target_quantity: + target_constant = target_unit = None + elif target_constant: + target_unit = None if target_origin: # Determine the display name for alias_target @@ -1465,18 +1524,6 @@ def _parse_aliases(self, content: str, system: SystemInfo, file: str): system.point_origins.append(alias_origin) continue - # Check if target is a quantity - target_quantity = None - for search_system in search_systems: - if search_system is None: - continue - for qty in search_system.quantities: - if qty.name == target_lookup: - target_quantity = qty - break - if target_quantity: - break - if target_quantity: # Determine the display name for alias_target if "::" in target_name: @@ -1513,18 +1560,6 @@ def _parse_aliases(self, content: str, system: SystemInfo, file: str): system.quantities.append(alias_quantity) continue - # Check if target is a constant - target_constant = None - for search_system in search_systems: - if search_system is None: - continue - for constant in search_system.constants: - if constant.name == target_lookup: - target_constant = constant - break - if target_constant: - break - if target_constant: # Determine the display name for alias_target if "::" in target_name: @@ -1546,30 +1581,38 @@ def _parse_aliases(self, content: str, system: SystemInfo, file: str): f"{target_system_name}::{target_constant.name}" ) - # Add as an alias constant + # An alias defined inside an inline/nested namespace (e.g. the codata + # adjustment namespaces) belongs to it, exactly like a regular constant; + # without this, the three per-adjustment aliases collapse into identical + # index entries with a dead anchor. + nested_ns = self._get_nested_namespace( + content, + match.start(), + system.namespace if system.namespace else "", + include_inline=True, + ) + full_namespace = ( + f"mp_units::{system.namespace}::{nested_ns}" + if nested_ns and system.namespace + else f"mp_units::{system.namespace}" + ) + + # Add as an alias constant. The symbol and the uncertainty are carried over: + # an alias denotes the very same entity. alias_constant = Constant( name=alias_name, symbol=target_constant.symbol, definition=target_constant.definition, - namespace=f"mp_units::{system.namespace}", + relative_standard_uncertainty=target_constant.relative_standard_uncertainty, + standard_uncertainty=target_constant.standard_uncertainty, + namespace=full_namespace, file=file, + subnamespace=nested_ns, alias_target=alias_target_display, ) system.constants.append(alias_constant) continue - # Check if target is a unit - target_unit = None - for search_system in search_systems: - if search_system is None: - continue - for unit in search_system.units: - if unit.name == target_lookup: - target_unit = unit - break - if target_unit: - break - if target_unit: # Determine the display name for alias_target if "::" in target_name: @@ -1788,6 +1831,7 @@ def _parse_using_declarations(self, content: str, system: SystemInfo, file: str) symbol=imported_constant.symbol, definition=f"using {full_namespace}::{unit_name}", relative_standard_uncertainty=imported_constant.relative_standard_uncertainty, + standard_uncertainty=imported_constant.standard_uncertainty, namespace=f"mp_units::{system.namespace}", file=file, alias_target=f"{full_namespace}::{unit_name}", @@ -3153,16 +3197,17 @@ def get_unit_display_name(unit): # narrower table. has_uncertainty = any( constant.relative_standard_uncertainty + or constant.standard_uncertainty for constant in system.constants ) if has_uncertainty: f.write( "| Name | Symbol | unit_symbol | Definition |" - " Relative standard uncertainty |\n" + " Standard uncertainty |\n" ) f.write( "|------|:------:|:------------:|------------|" - ":-----------------------------:|\n" + ":--------------------:|\n" ) else: f.write("| Name | Symbol | unit_symbol | Definition |\n") @@ -3211,24 +3256,15 @@ def get_constant_display_name(constant): else: symbols_display = "—" if has_uncertainty: - if constant.relative_standard_uncertainty: - rsu_display = "{}".format( - self._linkify_definition( - constant.relative_standard_uncertainty.replace( - "|", "\\|" - ), - system, - ) - ) - else: - rsu_display = "—" - rsu_cell = f" {rsu_display} |" + rsu_cell = ( + f" {self._uncertainty_cell(constant, system)} |" + ) else: rsu_cell = "" f.write( f'| ' f"{constant_display_with_breaks} | " - f"{constant.symbol if constant.symbol else '—'} | " + f"{add_word_breaks(constant.symbol) if constant.symbol else '—'} | " f"{symbols_display} | " f"alias to {alias_target_linked} |" f"{rsu_cell}\n" @@ -3248,35 +3284,30 @@ def get_constant_display_name(constant): definition, system ) if has_uncertainty: - if constant.relative_standard_uncertainty: - rsu_display = "{}".format( - self._linkify_definition( - constant.relative_standard_uncertainty.replace( - "|", "\\|" - ), - system, - ) - ) - else: - # Deliberately not "exact": the absence of the annotation - # only means it is not declared, and the audit of measured - # constants is not complete across all systems. - rsu_display = "—" - rsu_cell = f" {rsu_display} |" + # A "—" is deliberately not "exact": the absence of the + # annotation only means it is not declared, and the audit of + # measured constants is not complete across all systems. + rsu_cell = ( + f" {self._uncertainty_cell(constant, system)} |" + ) else: rsu_cell = "" + symbol_display = add_word_breaks(constant.symbol) f.write( f'| {constant_display_with_breaks} | ' - f"{constant.symbol} | {symbols_display} | {definition_linked} |" + f"{symbol_display} | {symbols_display} | {definition_linked} |" f"{rsu_cell}\n" ) if has_uncertainty: f.write( - "\nConstants with a relative standard uncertainty are measured" - " rather than exact by definition, and satisfy the" + "\nConstants with a standard uncertainty are measured rather" + " than exact by definition, and satisfy the" " [`MeasuredConstant`](../../../users_guide/framework_basics/concepts.md#MeasuredConstant)" - " concept. A `—` means no uncertainty is declared for that" + " concept. The uncertainty is stated in the form its source" + " publishes: an absolute value in the constant's own dimension," + " or a relative one (marked *(relative)*) when only that form is" + " published. A `—` means no uncertainty is declared for that" " constant.\n" ) @@ -3562,6 +3593,27 @@ def _add_namespace_prefixes_to_definition(self, unit: Unit) -> str: return definition + def _uncertainty_cell(self, constant, system) -> str: + """Render the "Standard uncertainty" table cell for a constant. + + The declared form is shown as-is: the absolute one is a unit expression in the + constant's own dimension, while the relative one is a bare magnitude and gets marked + accordingly. A constant declares at most one of the two. + """ + if constant.standard_uncertainty: + return "{}".format( + self._linkify_definition( + constant.standard_uncertainty.replace("|", "\\|"), system + ) + ) + if constant.relative_standard_uncertainty: + return "{} *(relative)*".format( + self._linkify_definition( + constant.relative_standard_uncertainty.replace("|", "\\|"), system + ) + ) + return "—" + def _linkify_definition(self, definition: str, current_system: SystemInfo) -> str: """Convert unit/quantity/origin references in definition to markdown links while preserving code font. diff --git a/src/core/include/mp-units/bits/unit_conversion_impl.h b/src/core/include/mp-units/bits/unit_conversion_impl.h index 194bdef87b..452be5780b 100644 --- a/src/core/include/mp-units/bits/unit_conversion_impl.h +++ b/src/core/include/mp-units/bits/unit_conversion_impl.h @@ -260,9 +260,11 @@ consteval void collect_measured_constants(T, const named_constant) // the declared uncertainty covers the constant's whole published value, so nested measured - // constants (contributing only their central values to the magnitude) must not be added again - mp_units::detail::add_measured_constant_contribution(out, mp_units::detail::type_name(), num, den, - get_value(T::_relative_standard_uncertainty_)); + // constants (contributing only their central values to the magnitude) must not be added again; + // the accessor also derives `u_r` for constants that declare the absolute form + mp_units::detail::add_measured_constant_contribution( + out, mp_units::detail::type_name(), num, den, + get_value(mp_units::get_relative_standard_uncertainty(T{}))); else // an unannotated constant may still be defined in terms of measured ones mp_units::detail::collect_measured_constants(U, U, out, num, den); diff --git a/src/core/include/mp-units/bits/unit_magnitude.h b/src/core/include/mp-units/bits/unit_magnitude.h index 80490c5a34..496c4a4b4a 100644 --- a/src/core/include/mp-units/bits/unit_magnitude.h +++ b/src/core/include/mp-units/bits/unit_magnitude.h @@ -250,118 +250,22 @@ consteval void try_accumulate_element(std::optional& result) return static_cast(get_base_value(lhs)) < static_cast(get_base_value(rhs)); } -// The largest integer which can be extracted from any magnitude with only a single basis vector. -template -[[nodiscard]] consteval auto integer_part(unit_magnitude); [[nodiscard]] consteval std::intmax_t integer_part(ratio r) { return r.num / r.den; } -template -[[nodiscard]] consteval auto remove_positive_power(unit_magnitude m); -template -[[nodiscard]] consteval auto remove_mag_constants(unit_magnitude m); -template -[[nodiscard]] consteval auto only_positive_mag_constants(unit_magnitude m); -template -[[nodiscard]] consteval auto only_negative_mag_constants(unit_magnitude m); - template requires is_positive_mag_arg [[nodiscard]] consteval UnitMagnitude auto mag_power_lazy(); -// Forward declarations; fully defined after unit_magnitude -template -[[nodiscard]] consteval auto abs_magnitude(unit_magnitude); -[[nodiscard]] consteval auto abs_magnitude(unit_magnitude<>); - -template -[[nodiscard]] consteval auto pow_magnitude(unit_magnitude<>); -template -[[nodiscard]] consteval auto pow_magnitude(unit_magnitude); - -template -struct magnitude_base {}; - -template -struct magnitude_base> { - template - [[nodiscard]] friend consteval UnitMagnitude auto multiply_impl(unit_magnitude, unit_magnitude) - { - if constexpr (mag_less(H, H2)) { - if constexpr (sizeof...(T) == 0) { - // Shortcut for the "pure prepend" case, which makes it easier to implement some of the other cases. - return unit_magnitude{}; - } else { - return unit_magnitude{} * (unit_magnitude{} * unit_magnitude{}); - } - } else if constexpr (mag_less(H2, H)) { - return unit_magnitude

{} * (unit_magnitude{} * unit_magnitude{}); - } else { - if constexpr (std::is_same_v) { - constexpr auto partial_product = unit_magnitude{} * unit_magnitude{}; - if constexpr (is_negative_tag) { - // (-1) * (-1) = 1: two negatives cancel each other out - return partial_product; - } else if constexpr (get_exponent(H) + get_exponent(H2) == 0) { - return partial_product; - } else { - // Make a new power_v with the common base of H and H2, whose power is their powers' sum. - constexpr auto new_head = power_v_or_T(); - - if constexpr (get_exponent(new_head) == 0) { - return partial_product; - } else { - return unit_magnitude{} * partial_product; - } - } - } - } - } - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Common Magnitude. - // - // The "common Magnitude" C, of two Magnitudes M1 and M2, is the largest Magnitude such that each of its inputs is - // expressible by only positive basis powers relative to C. That is, both (M1 / C) and (M2 / C) contain only positive - // powers in the expansion on our basis. - // - // For rational Magnitudes (or, more precisely, Magnitudes that are rational _relative to each other_), this reduces - // to the familiar convention from the std::chrono library: it is the largest Magnitude C such that each input - // Magnitude is an _integer multiple_ of C. The connection can be seen by considering the definition in the above - // paragraph, and recognizing that both the bases and the powers are all integers for rational Magnitudes. - // - // For relatively _irrational_ Magnitudes (whether from irrational bases, or fractional powers of integer bases), the - // notion of a "common type" becomes less important, because there is no way to preserve pure integer multiplication. - // When we go to retrieve our value, we'll be stuck with a floating point approximation no matter what choice we make. - // Thus, we make the _simplest_ choice which reproduces the correct convention in the rational case: namely, taking - // the minimum power for each base (where absent bases implicitly have a power of 0). - template - [[nodiscard]] friend consteval auto common_magnitude(unit_magnitude, unit_magnitude) - { - if constexpr (get_base_value(H) < get_base_value(H2)) { - // When H1 has the smaller base, prepend to result from recursion. - return mp_units::detail::remove_positive_power(unit_magnitude{}) * - common_magnitude(unit_magnitude{}, unit_magnitude{}); - } else if constexpr (get_base_value(H2) < get_base_value(H)) { - // When H2 has the smaller base, prepend to result from recursion. - return mp_units::detail::remove_positive_power(unit_magnitude

{}) * - common_magnitude(unit_magnitude{}, unit_magnitude{}); - } else { - // When the bases are equal, pick whichever has the lower power. - constexpr auto common_tail = common_magnitude(unit_magnitude{}, unit_magnitude{}); - if constexpr (get_exponent(H) < get_exponent(H2)) { - return unit_magnitude{} * common_tail; - } else { - return unit_magnitude

{} * common_tail; - } - } - } -}; +// The two escape hatches of `unit_magnitude_interface` below. Friend bodies in the interface may +// not name a concrete specialization of the still-incomplete `unit_magnitude` in a non-dependent +// expression, and these two need to (`unit_magnitude<>`, `unit_magnitude`), so +// they are the only magnitude-taking functions living at namespace scope; the dependent calls +// resolve here at instantiation, when the class is complete. +template +[[nodiscard]] consteval unit_magnitude<> empty_magnitude(unit_magnitude); template -[[nodiscard]] consteval std::size_t magnitude_list_size(unit_magnitude) -{ - return sizeof...(Ms); -} +[[nodiscard]] consteval auto negate_magnitude(unit_magnitude); template Out> [[nodiscard]] constexpr Out print_separator(Out out, const unit_symbol_formatting& fmt) @@ -378,25 +282,6 @@ template Out> return out; } -template Out, auto... Ms> - requires(sizeof...(Ms) == 0) -[[nodiscard]] constexpr auto mag_constants_text(Out out, unit_magnitude, const unit_symbol_formatting&, bool) -{ - return out; -} - -template Out, auto M, auto... Rest> -[[nodiscard]] constexpr auto mag_constants_text(Out out, unit_magnitude, const unit_symbol_formatting& fmt, - bool negative_power) -{ - auto to_symbol = [&](T v) { - out = copy_symbol(get_base(v)._symbol_, fmt.char_set, negative_power, out); - constexpr ratio r = get_exponent(T{}); - return copy_symbol_exponent(fmt.char_set, negative_power, out); - }; - return (to_symbol(M), ..., (out = print_separator(out, fmt), to_symbol(Rest))); -} - template Out> [[nodiscard]] constexpr Out magnitude_symbol_impl(Out out, const unit_symbol_formatting& fmt) @@ -461,49 +346,69 @@ template