31#ifndef ETL_ROUNDED_INTEGRAL_DIVISION_INCLUDED
32#define ETL_ROUNDED_INTEGRAL_DIVISION_INCLUDED
41 namespace private_rounded_integral_division
50 are_same_sign(
T a,
T b) ETL_NOEXCEPT
52 return ((a ^
b) >= 0);
62 are_same_sign(
T ,
T ) ETL_NOEXCEPT
103 template <
typename T1,
typename T2>
109 typename etl::common_type<T1, T2>::type>::type
112 typedef typename etl::common_type<T1, T2>::type type;
125 template <
typename T>
148 template <
typename T1,
typename T2>
154 typename etl::common_type<T1, T2>::type>::type
157 typedef typename etl::common_type<T1, T2>::type type;
170 template <
typename T>
199 template <
typename T1,
typename T2>
205 typename etl::common_type<T1, T2>::type>::type
208 typedef typename etl::common_type<T1, T2>::type type;
221 template <
typename T>
240 template <
typename T1,
typename T2>
246 typename etl::common_type<T1, T2>::type>::type
249 typedef typename etl::common_type<T1, T2>::type type;
265 template <
typename T>
296 template <
typename T1,
typename T2>
302 typename etl::common_type<T1, T2>::type>::type
305 typedef typename etl::common_type<T1, T2>::type type;
318 template <
typename T>
340 template <
typename T1,
typename T2>
346 typename etl::common_type<T1, T2>::type>::type
349 typedef typename etl::common_type<T1, T2>::type type;
362 template <
typename T>
381 template <
typename T1,
typename T2>
385 typename etl::common_type<T1, T2>::type>::type
388 typedef typename etl::common_type<T1, T2>::type type;
405 template <
typename T>
417 typedef typename std::make_unsigned<T>::type
utype;
449 template <
typename T1,
typename T2>
455 typename etl::common_type<T1, T2>::type>::type
458 typedef typename etl::common_type<T1, T2>::type type;
471 template <
typename T>
494 template <
typename T1,
typename T2>
502 typedef typename etl::common_type<T1, T2>::type type;
515 template <
typename T>
543 template <
typename T1,
typename T2>
549 typename etl::common_type<T1, T2>::type>::type
552 typedef typename etl::common_type<T1, T2>::type type;
565 template <
typename T>
588 template <
typename T1,
typename T2>
596 typedef typename etl::common_type<T1, T2>::type type;
609 template <
typename T>
646 template <
typename T1,
typename T2>
652 typename etl::common_type<T1, T2>::type>::type
655 typedef typename etl::common_type<T1, T2>::type type;
668 template <
typename T>
704 template <
typename T1,
typename T2>
710 typename etl::common_type<T1, T2>::type>::type
713 typedef typename etl::common_type<T1, T2>::type type;
726 template <
typename T>
763 template <
typename T1,
typename T2>
769 typename etl::common_type<T1, T2>::type>::type
772 typedef typename etl::common_type<T1, T2>::type type;
785 template <
typename T>
820 template <
typename T1,
typename T2>
826 typename etl::common_type<T1, T2>::type>::type
829 typedef typename etl::common_type<T1, T2>::type type;
enable_if
Definition type_traits_generator.h:1254
is_integral
Definition type_traits_generator.h:1064
is_signed
Definition type_traits_generator.h:1074
is_unsigned
Definition type_traits_generator.h:1084
bitset_ext
Definition absolute.h:39
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_half_odd(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to half odd. For signed integral types. For identical argument types.
Definition rounded_integral_division.h:731
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_to_infinity(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding towards infinity. For signed integral types. For identical argument t...
Definition rounded_integral_division.h:270
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value, T >::type divide_round_to_zero(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding towards zero. For integral types. For identical argument types.
Definition rounded_integral_division.h:367
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:315
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_half_down(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to half down. For signed integral types. For identical argument types...
Definition rounded_integral_division.h:520
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_half_up(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to half up. For signed integral types. For identical argument types.
Definition rounded_integral_division.h:410
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_half_even(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to half even. For signed integral types. For identical argument types...
Definition rounded_integral_division.h:614
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_to_floor(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to floor. For signed integral types. For identical argument types.
Definition rounded_integral_division.h:175
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_signed< T >::value, T >::type divide_round_to_ceiling(T numerator, T denominator) ETL_NOEXCEPT
Integral division with rounding to ceiling. For signed integral types. For identical argument types.
Definition rounded_integral_division.h:79