4#ifndef TETL_RATIO_RATIO_HPP
5#define TETL_RATIO_RATIO_HPP
7#include <etl/_cstdint/intmax_t.hpp>
8#include <etl/_math/abs.hpp>
9#include <etl/_math/sign.hpp>
10#include <etl/_numeric/gcd.hpp>
21template <intmax_t Num, intmax_t Denom = 1>
23 static constexpr intmax_t
num = detail::sign(Num) * detail::sign(Denom) *
abs(Num
) /
gcd(Num
, Denom
);
29using atto =
ratio<1, 1'000'000'000'000'000'000>;
30using femto =
ratio<1, 1'000'000'000'000'000>;
31using pico =
ratio<1, 1'000'000'000'000>;
32using nano =
ratio<1, 1'000'000'000>;
33using micro =
ratio<1, 1'000'000>;
40using mega =
ratio<1'000'000, 1>;
41using giga =
ratio<1'000'000'000, 1>;
42using tera =
ratio<1'000'000'000'000, 1>;
43using peta =
ratio<1'000'000'000'000'000, 1>;
44using exa =
ratio<1'000'000'000'000'000'000, 1>;
constexpr auto gcd(M m, N n) noexcept -> etl::common_type_t< M, N >
Computes the greatest common divisor of the integers m and n.
Definition gcd.hpp:17
Definition adjacent_find.hpp:9
constexpr auto abs(long n) noexcept -> long
Definition abs.hpp:35
The typename template provides compile-time rational arithmetic support. Each instantiation of this t...
Definition ratio.hpp:22
static constexpr intmax_t den
Definition ratio.hpp:24
static constexpr intmax_t num
Definition ratio.hpp:23