6 #include "../vnix/units/statdim-base.hpp" 10 template <uint64_t D>
using statdim_base = vnix::units::statdim_base<D>;
14 TEST_CASE(
"Check dimension on statdim_base from dim.",
"[statdim-base]") {
15 dim
constexpr d(-1, 1, 0, 0, 0);
22 TEST_CASE(
"Sum & diff require same dimension for statdim.",
"[statdim-base]") {
23 dim
constexpr d1(-1, 1, 1, 0, 0);
24 dim
constexpr d2(+1, 0, 0, 0, 0);
27 dyndim_base ddb1
(d1
), ddb2
(d2
);
29 REQUIRE_NOTHROW(sdb
.sum(sdb
));
30 REQUIRE_NOTHROW(sdb
.sum(ddb1
));
32 REQUIRE_NOTHROW(sdb
.diff(ddb1
));
39 REQUIRE_THROWS(sdb
.sum(ddb2
));
44 TEST_CASE(
"Prod & quot change dimension for statdim.",
"[statdim-base]") {
45 dim
constexpr d1(-1, +1, +1, 0, 0);
46 dim
constexpr d2(+1, +0, +0, 0, 0);
47 dim
constexpr d3(+0, +1, +1, 0, 0);
48 dim
constexpr d4(-2, +1, +1, 0, 0);
49 dim
constexpr d5(+1, -1, -1, 0, 0);
55 REQUIRE(sdb1.prod(sdb2)
.d() == d3);
56 REQUIRE(sdb1.quot(sdb2)
.d() == d4);
63 TEST_CASE(
"Pow and sqrt change dimension for statdim.",
"[statdim-base]") {
64 dim
constexpr d1(-1, +1, +1, 0, 0);
65 dim
constexpr d2(-2, +2, +2, 0, 0);
69 REQUIRE(sdb1.pow<2>()
.d() == d2);
72 dim
constexpr d3(dim
::rat
(-1
, 2
), dim
::rat
(1
, 2
), dim
::rat
(1
, 2
), 0, 0);
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.
Base-type for a dimensioned value whose dimension is specified, perhaps dynamically at run-time...
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 dyndim_base sum(dyndim_base const &db)
Dimension for sum of dimensioned values.
constexpr dyndim_base(dim dd)
Initialize from exponents representing dimension.
static constexpr recip_basedim recip()
Dimension for reciprocal of dimensioned value.
constexpr rational(stype n=0, stype d=1)
Initialize from numerator and denominator.
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 dyndim_base diff(dyndim_base const &db)
Dimension for difference of dimensioned values.
constexpr bool operator==(basic_dim const &d) const
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.