1 #include "cheetah/dred/cuda/detail/MedianScrunch.cuh" 10 inline __host__ __device__ T median3(T a, T b, T c)
12 return a < b ? b < c ? b
19 inline __host__ __device__ T median4(T a, T b, T c, T d)
21 return a < c ? b < d ? a < b ? c < d ? 0.5f*(b+c) : 0.5f*(b+d)
22 : c < d ? 0.5f*(a+c) : 0.5f*(a+d)
23 : a < d ? c < b ? 0.5f*(d+c) : 0.5f*(b+d)
24 : c < b ? 0.5f*(a+c) : 0.5f*(a+b)
25 : b < d ? c < b ? a < d ? 0.5f*(b+a) : 0.5f*(b+d)
26 : a < d ? 0.5f*(a+c) : 0.5f*(c+d)
27 : c < d ? a < b ? 0.5f*(d+a) : 0.5f*(b+d)
28 : a < b ? 0.5f*(a+c) : 0.5f*(c+b);
32 inline __host__ __device__ T median5(T a, T b, T c, T d, T e)
34 return b < a ? d < c ? b < d ? a < e ? a < d ? e < d ? e : d
36 : e < d ? a < d ? a : d
38 : c < e ? b < c ? a < c ? a : c
40 : b < e ? a < e ? a : e
42 : b < c ? a < e ? a < c ? e < c ? e : c
44 : e < c ? a < c ? a : c
46 : d < e ? b < d ? a < d ? a : d
48 : b < e ? a < e ? a : e
50 : d < c ? a < d ? b < e ? b < d ? e < d ? e : d
52 : e < d ? b < d ? b : d
54 : c < e ? a < c ? b < c ? b : c
56 : a < e ? b < e ? b : e
58 : a < c ? b < e ? b < c ? e < c ? e : c
60 : e < c ? b < c ? b : c
62 : d < e ? a < d ? b < d ? b : d
64 : a < e ? b < e ? b : e
69 Median5Functor<T>::Median5Functor(
const T* in)
75 inline __host__ __device__ T Median5Functor<T>::operator()(
unsigned int i)
const 82 return median5<T>(a, b, c, d, e);
86 LinearStretchFunctor<T>::LinearStretchFunctor(
const T* in,
unsigned in_size,
float step)
90 , _correction(((int)(_step/2))/_step)
95 T LinearStretchFunctor<T>::operator()(
unsigned out_idx)
const 97 float fidx = ((float)out_idx) / _step - _correction;
98 unsigned idx = (unsigned) fidx;
101 else if (idx + 1 >= _in_size)
103 return _in[idx] + ((_in[idx+1] - _in[idx]) * (fidx-idx));
Some limits and constants for FLDO.