MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / median_test

Function median_test

test/median.cpp:77–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75
76template<typename To, typename Ti, int dim>
77void median_test(int nx, int ny = 1, int nz = 1, int nw = 1) {
78 SUPPORTED_TYPE_CHECK(Ti);
79
80 array a = generateArray<Ti>(nx, ny, nz, nw);
81
82 // If selected dim is higher than input ndims, then return
83 if (dim >= a.dims().ndims()) return;
84
85 array verify;
86
87 // Verification
88 array sa = sort(a, dim);
89
90 double mid = (a.dims(dim) + 1) / 2;
91 seq mSeq[4] = {span, span, span, span};
92 mSeq[dim] = seq(mid, mid, 1.0);
93
94 if (sa.dims(dim) % 2 == 1) {
95 mSeq[dim] = mSeq[dim] - 1.0;
96 sa = sa.as((af_dtype)dtype_traits<To>::af_type);
97 verify = sa(mSeq[0], mSeq[1], mSeq[2], mSeq[3]);
98 } else {
99 dim_t sdim[4] = {0};
100 sdim[dim] = 1;
101 sa = sa.as((af_dtype)dtype_traits<To>::af_type);
102 array sas = shift(sa, sdim[0], sdim[1], sdim[2], sdim[3]);
103 verify = ((sa + sas) / To(2))(mSeq[0], mSeq[1], mSeq[2], mSeq[3]);
104 }
105
106 // Test Part
107 array out = median(a, dim);
108
109 ASSERT_EQ(out.dims() == verify.dims(), true);
110 ASSERT_ARRAYS_EQ(verify, out);
111}
112
113#define MEDIAN_FLAT(To, Ti) \
114 TEST(MedianFlat, Ti##_flat_even) { median_flat<To, Ti>(1000); } \

Callers

nothing calls this directly

Calls 7

seqClass · 0.85
asMethod · 0.80
sortFunction · 0.50
shiftFunction · 0.50
medianFunction · 0.50
ndimsMethod · 0.45
dimsMethod · 0.45

Tested by

no test coverage detected