17 #ifndef PNDFTSVECTOR_H 18 #define PNDFTSVECTOR_H 25 return static_cast<int_v
>(
v) >= int_v(Vc::Zero);
30 inline Vc::int_v Abs<Vc::int_v>(
const Vc::int_v &x)
34 #define SPECIALIZATION(T) \ 36 inline Vc::T Min<Vc::T>(const Vc::T &x, const Vc::T &y) \ 38 return Vc::min(x, y); \ 41 inline Vc::T Max<Vc::T>(const Vc::T &x, const Vc::T &y) \ 43 return Vc::max(x, y); \ 48 #define SPECIALIZATION(T) \ 50 inline T Min<T>(const T &x, const T &y) \ 52 return Vc::min(x, y); \ 55 inline T Max<T>(const T &x, const T &y) \ 57 return Vc::max(x, y); \ 60 inline T Sqrt<T>(const T &x) \ 65 inline T Abs<T>(const T &x) \ 70 inline T Log<T>(const T &x) \ 75 inline T Reciprocal<T>(const T &x) \ 77 return Vc::reciprocal(x); \ 80 inline T Round<T>(const T &x) \ 82 return Vc::round(x); \ 85 inline T RSqrt<T>(const T &x) \ 87 return Vc::rsqrt(x); \ 90 struct FiniteReturnTypeHelper<T> { \ 94 inline FiniteReturnTypeHelper<T>::R Finite<T>(const T &x) \ 96 return Vc::isfinite(x); \ 99 inline T ATan2<T>(const T &x, const T &y) \ 101 return Vc::atan2(x, y); \ 104 inline T ASin<T>(const T &x) \ 106 return Vc::asin(x); \ 109 inline T Sin<T>(const T &x) \ 114 inline T Cos<T>(const T &x) \ 121 #undef SPECIALIZATION 124 static void AtomicMax(
unsigned int volatile *addr, uint_v val)
126 for (
int i = 0;
i < uint_v::Size; ++
i) {
127 AtomicMax(&addr[
i], val[i]);
133 #endif // PNDFTSVECTOR_H
#define SPECIALIZATION(T)
static uint_m validHitIndexes(const uint_v &v)