-
Notifications
You must be signed in to change notification settings - Fork 1
si::normative_unit
A normative si unit is an official si_unit, as opposed to an si unit_conversion. Normative units include both official SI coherent units and official SI non coherent units (where the conversion_factor consists of 10 raised to an integer power e.g 1 millimetre is 1 metre *10^-3 )
si::normative_unit<
dimension,
exponent10>
#include <pqs/systems/si/unit.hpp>
#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 | exponent10 |
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.