-
Notifications
You must be signed in to change notification settings - Fork 1
si::normative_unit
kwikius edited this page Jul 12, 2021
·
13 revisions
A normative si unit is an official si_unit, as opposed to an si unit_conversion.
#include <pqs/systems/si/force.hpp>
using namespace pqs;
#include <iostream>
int main()
{
si::force::kgf<> q1{1};
si::force::mN<> q2 = q1;
std::cout << q1 << " is a normative S.I. quantity = "
<< std::boolalpha << si::is_normative_quantity(q1) << '\n';
std::cout << q2 << " is a normative S.I. quantity = "
<< std::boolalpha << si::is_normative_quantity(q2) << '\n';
}
example output:
1 kgf is a normative S.I. quantity = false
9806.65 mN is a normative S.I quantity = true
The normative si unit is distinguished from unit conversions. In general , in a binary op on 2 quantities in the si system, if one or both has a normative unit, then the result also has a normative unit.
The multiplier of the conversion factor of a normative si unit is always 1. 1
An important advantage of quantities with normative si units is that it is possible to raise them to arbitrary rationals powers and roots. This is often not possible with units where the multiplier of the exponent is not 1.
typename | model of | notes |
---|---|---|
D | dimension | |
E | Base10Exponent |
typename | type | notes |
---|---|---|
Un | si::normative_unit< D, E > |
concept | result |
---|---|
unit< Un > | true |
inline constant | result |
---|---|
si::is_normative_unit< Un > | true |
si::is_prefixable< D , E > | true if {D,E} supports the standard si prefixes |
get_measurement_system< Un > | si_measurement_system |
[1] The fact that the multiplier is 1 does not of itself guarantee that a unit is a normative si unit though.