31#ifndef ETL_NUMERIC_INCLUDED
32#define ETL_NUMERIC_INCLUDED
56 template <
typename TIterator,
typename T>
57 ETL_CONSTEXPR14
void iota(TIterator first, TIterator last, T value)
71 !etl::is_integral<T>::value &&
78 return ((
abs(a) <= hi) && (
abs(b) <= hi)) ?
84 (a / T(2)) + (b / T(2));
93 etl::is_integral<T>::value &&
100 return a - ((a - b) >> 1);
104 return a + ((b - a) >> 1);
112 template <
typename T>
114 etl::is_integral<T>::value &&
116 etl::is_signed<T>::value, T>::type
123 return a - T(utype(utype(a) - utype(b)) >> 1);
127 return a + T((utype(b) - utype(a)) >> 1);
135 template <
typename T>
137 !etl::is_integral<T>::value &&
143 return b + (etl::distance(b, a) / 2U);
147 return a + (etl::distance(a, b) / 2U);
155 template <
typename T>
157 !etl::is_integral<T>::value &&
159 etl::is_same<
typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::random_access_iterator_tag>::value ,
int>
::type = 0)
163 return b + (etl::distance(b, a) / 2U);
167 return a + (etl::distance(a, b) / 2U);
176 template <
typename T>
178 !etl::is_integral<T>::value &&
180 (
etl::is_same<
typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::forward_iterator_tag>::value ||
181 etl::is_same<
typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::bidirectional_iterator_tag>::value)),
int>
::type = 0)
183 etl::advance(a, etl::distance(a, b) / 2U);
191 template <
typename T>
193 lerp(T a, T b, T t) ETL_NOEXCEPT
195 return a + (t * (b - a));
202 template <
typename TArithmetic1,
typename TArithmetic2,
typename TArithmetic3>
208 lerp(TArithmetic1 a, TArithmetic2 b, TArithmetic3 t) ETL_NOEXCEPT
214 return typecast_a(a) + (typecast_t(t) * (typecast_b(b) - typecast_a(a)));
ETL_CONSTEXPR14 void iota(TIterator first, TIterator last, T value)
Definition numeric.h:57
conditional
Definition type_traits_generator.h:1223
enable_if
Definition type_traits_generator.h:1254
is_floating_point
Definition type_traits_generator.h:1094
is_pointer
Definition type_traits_generator.h:1164
is_same
Definition type_traits_generator.h:1104
is_unsigned
Definition type_traits_generator.h:1084
make_unsigned
Definition type_traits_generator.h:1244
bitset_ext
Definition absolute.h:39
ETL_CONSTEXPR14 etl::chrono::duration< TRep, TPeriod > abs(etl::chrono::duration< TRep, TPeriod > d) ETL_NOEXCEPT
Returns the absolute value of a duration.
Definition duration.h:705
ETL_CONSTEXPR etl::enable_if< etl::is_floating_point< T >::value, T >::type lerp(T a, T b, T t) ETL_NOEXCEPT
Definition numeric.h:193
ETL_CONSTEXPR14 etl::enable_if<!etl::is_pointer< T >::value &&!etl::is_integral< T >::value &&etl::is_floating_point< T >::value, T >::type midpoint(T a, T b) ETL_NOEXCEPT
Definition numeric.h:73