Floating point classification functions

Add the ability for `isnan`, `isfinite`, and `isinf` to work on dimensioned quantities.
This commit is contained in:
Nick Thompson
2023-12-16 08:08:44 -08:00
parent ffba606115
commit 7a270a6fd9
3 changed files with 63 additions and 0 deletions
+10
View File
@@ -49,6 +49,16 @@ static_assert(compare(pow<1>(2 * m), 2 * m));
static_assert(compare(pow<2>(2 * m), 4 * pow<2>(m), 4 * m2));
static_assert(compare(pow<2>(2 * km), 4 * pow<2>(km), 4 * square(km)));
static_assert(compare(pow<2>(2 * ft), 4 * pow<2>(ft), 4 * square(ft)));
static_assert(isfinite(2 * m));
static_assert(isfinite(2.0 * one));
static_assert(!isfinite(std::numeric_limits<double>::quiet_NaN() * one));
static_assert(!isfinite(std::numeric_limits<double>::infinity() * km));
static_assert(!isinf(2 * m));
static_assert(!isinf(2.0 * one));
static_assert(isinf(std::numeric_limits<double>::infinity() * one));
static_assert(!isnan(2 * m));
static_assert(!isnan(std::numeric_limits<double>::infinity() * one));
static_assert(isnan(std::numeric_limits<double>::quiet_NaN() * m));
static_assert(compare(sqrt(4 * m2), 2 * m));
static_assert(compare(sqrt(4 * square(km)), 2 * km));
static_assert(compare(sqrt(4 * square(ft)), 2 * ft));