19 requires(std::is_arithmetic_v<T> && std::numeric_limits<T>::is_specialized)
25 static constexpr int digits() noexcept {
return std::numeric_limits<T>::digits; }
26 static constexpr int digits(T
const&)
noexcept {
return digits(); }
34 static constexpr int digits10() noexcept {
return std::numeric_limits<T>::digits10; }
43 static constexpr int max_digits10() noexcept {
return std::numeric_limits<T>::max_digits10; }
48 return max_digits10();
55 return std::numeric_limits<T>::epsilon();
60 requires(std::is_same_v<T, U> && std::numeric_limits<T>::is_specialized)
61 static constexpr T
epsilon(U
const&)
noexcept
63 return std::numeric_limits<T>::epsilon();
70 if (
p != native)
throw std::invalid_argument(
"fixed-precision scalar requires its native precision");
75 requires requires { numeric_limits<T>::is_specialized; }
104 requires(
requires(T
const& x) { x.is_exact(); } || has_numeric_limits_v<T>)
107 if constexpr (
requires { x.is_exact(); })
Exact arithmetic or an explicit binary working precision.
Definition core/precision.hpp:13
static constexpr Precision exact() noexcept
No approximation has been selected; rational arithmetic remains exact.
Definition core/precision.hpp:17
constexpr bool has_numeric_limits_v
True when Uni20 has numeric limits for T.
Definition numeric_limits.hpp:95
Definition data_table.cpp:8
Definition async/async.hpp:26
constexpr bool is_exact(detail::standard_complex< T > const &x)
A standard complex value is exact only when both components are exact.
Definition math.hpp:50
mpreal epsilon(Precision precision)
Spacing above one for a specified binary working precision.
Definition mpreal.hpp:805
constexpr void require_precision(Precision p)
Reject an operation precision incompatible with a fixed scalar result.
Definition runtime_precision.hpp:66
static constexpr int max_digits10(Precision p)
Definition numeric_limits.hpp:45
static constexpr int digits10(T const &) noexcept
Definition numeric_limits.hpp:35
static constexpr int digits(Precision p)
Definition numeric_limits.hpp:27
static constexpr T epsilon(Precision p)
Spacing above one at this type's precision; reject incompatible requests.
Definition numeric_limits.hpp:52
static constexpr T epsilon(U const &) noexcept
Spacing above one, accepting an exemplar for scalar-generic code.
Definition numeric_limits.hpp:61
static constexpr int digits10() noexcept
Decimal digits preserved by conversion into this native type.
Definition numeric_limits.hpp:34
static constexpr int digits10(Precision p)
Definition numeric_limits.hpp:36
static constexpr int digits() noexcept
Fixed significand capacity, also available through an exemplar or precision.
Definition numeric_limits.hpp:25
static constexpr int digits(T const &) noexcept
Definition numeric_limits.hpp:26
static constexpr int max_digits10(T const &) noexcept
Definition numeric_limits.hpp:44
static constexpr int max_digits10() noexcept
Decimal digits sufficient to round-trip a value of this native type.
Definition numeric_limits.hpp:43
Project-level numeric limits customization point.
Definition numeric_limits.hpp:16