6 #ifndef VNIX_UNITS_STATDIM_BASE_HPP 7 #define VNIX_UNITS_STATDIM_BASE_HPP 9 #include <vnix/units/dim.hpp> 34 throw "attempt to construct from incompatible dimension";
41 constexpr static dim
d() {
return dim(D); }
45 if (
d() != nul_dim) {
throw "dimensioned quantity is not a number"; }
100 constexpr static recip_basedim
recip() {
return recip_basedim(); }
106 template <int64_t PN, int64_t PD = 1>
constexpr static auto pow() {
129 #include <vnix/units/dyndim-base.hpp> 137 template <dim::word D>
139 if (
d() != db
.d()) {
throw "incompatible dimensions for comparison"; }
144 template <dim::word D>
146 if (
d() != db
.d()) {
throw "incompatible dimensions for addition"; }
152 template <dim::word D>
154 if (
d() != db
.d()) {
throw "incompatible dimensions for subtraction"; }
160 template <dim::word D>
167 template <dim::word D>
static constexpr dim d()
Exponent for each unit in dimensioned quantity.
constexpr word encode() const
Encode data for this dim into a word.
static constexpr dyndim_base prod(dyndim_base const &db)
Dimension for product of dimensioned values.
static constexpr auto diff(statdim_base)
Dimension for difference of dimensioned values.
constexpr statdim_base()
Allow default construction.
Base-type for a dimensioned value whose dimension is specified, perhaps dynamically at run-time...
constexpr basic_dim operator+(basic_dim const &a) const
Add corresponding exponents.
constexpr dim d() const
Exponent for each unit in dimensioned quantity.
static constexpr dyndim_base quot(dyndim_base const &db)
Dimension for quotient of dimensioned values.
static constexpr auto pow()
Dimension for rational power of dimensioned value.
static constexpr dyndim_base sum(dyndim_base const &db)
Dimension for sum of dimensioned values.
static constexpr recip_basedim recip()
Dimension for reciprocal of dimensioned value.
constexpr rational(stype n=0, stype d=1)
Initialize from numerator and denominator.
constexpr basic_dim operator-(basic_dim const &s) const
Subtract corresponding exponents.
static constexpr auto prod(statdim_base< OD >)
Dimension for product of dimensioned values.
static constexpr auto quot(statdim_base< OD >)
Dimension for quotient of dimensioned values.
static constexpr dim nul_dim
Null dimension.
static constexpr void comparison(statdim_base)
Test for comparison of dimensioned values.
static constexpr dyndim_base pow(dim::rat p)
Dimension for rational power of dimensioned value.
static constexpr auto sum(statdim_base)
Dimension for sum of dimensioned values.
static constexpr void number()
Throw if dimension be non-null.
static constexpr dyndim_base diff(dyndim_base const &db)
Dimension for difference of dimensioned values.
Base-type for a dimensioned value whose dimension is specified statically at compile-time by way of a...
constexpr basic_dim operator*(rat f) const
Multiply exponents by rational factor.
Thomas E. Vaughan's public software.
constexpr statdim_base(dim dd)
Check for compatibility on contruction from dim.
static constexpr auto sqrt()
Dimension for square-root of dimensioned value.
Classes and functions supporting a model of physically dimensioned quantities.
static constexpr auto recip_dim
Dimensions corresponding to reciprocal of dimensioned quantity.
constexpr bool operator!=(basic_dim const &d) const
static constexpr void comparison(dyndim_base const &db)
Test for comparison of dimensioned values.
constexpr basic_dim operator/(rat f) const
Divide exponents by rational factor.