29 #ifndef PNDFTSVECTOR_H 30 #define PNDFTSVECTOR_H 37 return static_cast<int_v
>(
v) >= int_v(Vc::Zero);
42 inline Vc::int_v Abs<Vc::int_v>(
const Vc::int_v &x)
46 #define SPECIALIZATION(T) \ 48 inline Vc::T Min<Vc::T>(const Vc::T &x, const Vc::T &y) \ 50 return Vc::min(x, y); \ 53 inline Vc::T Max<Vc::T>(const Vc::T &x, const Vc::T &y) \ 55 return Vc::max(x, y); \ 60 #define SPECIALIZATION(T) \ 62 inline T Min<T>(const T &x, const T &y) \ 64 return Vc::min(x, y); \ 67 inline T Max<T>(const T &x, const T &y) \ 69 return Vc::max(x, y); \ 72 inline T Sqrt<T>(const T &x) \ 77 inline T Abs<T>(const T &x) \ 82 inline T Log<T>(const T &x) \ 87 inline T Reciprocal<T>(const T &x) \ 89 return Vc::reciprocal(x); \ 92 inline T Round<T>(const T &x) \ 94 return Vc::round(x); \ 97 inline T RSqrt<T>(const T &x) \ 99 return Vc::rsqrt(x); \ 102 struct FiniteReturnTypeHelper<T> { \ 106 inline FiniteReturnTypeHelper<T>::R Finite<T>(const T &x) \ 108 return Vc::isfinite(x); \ 111 inline T ATan2<T>(const T &x, const T &y) \ 113 return Vc::atan2(x, y); \ 116 inline T ASin<T>(const T &x) \ 118 return Vc::asin(x); \ 121 inline T Sin<T>(const T &x) \ 126 inline T Cos<T>(const T &x) \ 133 #undef SPECIALIZATION 136 static void AtomicMax(
unsigned int volatile *addr, uint_v val)
138 for (
int i = 0;
i < uint_v::Size; ++
i) {
139 AtomicMax(&addr[
i], val[i]);
145 #endif // PNDFTSVECTOR_H
#define SPECIALIZATION(T)
static uint_m validHitIndexes(const uint_v &v)