41 namespace private_absolute
50 inline T signed_min_error()
52 ETL_ASSERT_FAIL(ETL_ERROR_GENERIC(
"absolute value of minimum signed integer is undefined"));
61 ETL_NODISCARD ETL_CONSTEXPR
typename etl::enable_if< etl::is_signed<T>::value && etl::is_integral<T>::value, T>
::type absolute(T value)
63 return (value ==
etl::integral_limits<T>::min) ? etl::private_absolute::signed_min_error<T>() :
static_cast<T
>((value < T(0)) ? -value : value);
67 ETL_NODISCARD ETL_CONSTEXPR
typename etl::enable_if< etl::is_signed<T>::value && !etl::is_integral<T>::value, T>
::type absolute(T value)
70 return (value < T(0)) ? -value : value;
77 ETL_NODISCARD ETL_CONSTEXPR
typename etl::enable_if<etl::is_unsigned<T>::value, T>
::type absolute(T value) ETL_NOEXCEPT
87 ETL_NODISCARD ETL_CONSTEXPR
typename etl::enable_if<etl::is_signed<T>::value,
typename etl::make_unsigned<T>::type>
::type absolute_unsigned(T value)
90 typedef typename etl::make_unsigned<T>::type TReturn;
93 : (value < T(0)) ? TReturn(-value)
101 template <
typename T>
102 ETL_NODISCARD ETL_CONSTEXPR
typename etl::enable_if<etl::is_unsigned<T>::value, T>
::type absolute_unsigned(T value) ETL_NOEXCEPT
104 return etl::absolute(value);