31#ifndef ETL_GDC_INCLUDED
32#define ETL_GDC_INCLUDED
36#include "static_assert.h"
48 gcd(T a, T b) ETL_NOEXCEPT
52 if ((a == 0 || b == 0))
75 gcd(T a, T b) ETL_NOEXCEPT
81 utype ua = etl::absolute_unsigned(a);
82 utype ub = etl::absolute_unsigned(b);
84 return static_cast<T
>(gcd(ua, ub));
88 #if ETL_HAS_INITIALIZER_LIST
94 template<
typename T,
typename... TRest>
97 T gcd(T first, TRest... rest) ETL_NOEXCEPT
101 for (T value : {rest...})
103 result = gcd(result, value);
121 template<
typename T,
typename... TRest>
124 T gcd(T a, T b, TRest... rest) ETL_NOEXCEPT
126 T gcd_ab = gcd(a, b);
136 return gcd(gcd_ab, rest...);
is_integral
Definition type_traits_generator.h:1001
make_unsigned
Definition type_traits_generator.h:1181
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164