@@ -29,13 +29,14 @@ TYPED_TEST_SUITE_P(simdsort);
29
29
TYPED_TEST_P (simdsort, test_qsort)
30
30
{
31
31
for (auto type : this ->arrtype ) {
32
+ bool hasnan = (type == " rand_with_nan" ) ? true : false ;
32
33
for (auto size : this ->arrsize ) {
33
34
std::vector<TypeParam> arr = get_array<TypeParam>(type, size);
34
35
std::vector<TypeParam> sortedarr = arr;
35
36
std::sort (sortedarr.begin (),
36
37
sortedarr.end (),
37
38
compare<TypeParam, std::less<TypeParam>>());
38
- x86simdsort::qsort (arr.data (), arr.size ());
39
+ x86simdsort::qsort (arr.data (), arr.size (), hasnan );
39
40
IS_SORTED (sortedarr, arr, type);
40
41
arr.clear ();
41
42
sortedarr.clear ();
@@ -46,13 +47,14 @@ TYPED_TEST_P(simdsort, test_qsort)
46
47
TYPED_TEST_P (simdsort, test_argsort)
47
48
{
48
49
for (auto type : this ->arrtype ) {
50
+ bool hasnan = (type == " rand_with_nan" ) ? true : false ;
49
51
for (auto size : this ->arrsize ) {
50
52
std::vector<TypeParam> arr = get_array<TypeParam>(type, size);
51
53
std::vector<TypeParam> sortedarr = arr;
52
54
std::sort (sortedarr.begin (),
53
55
sortedarr.end (),
54
56
compare<TypeParam, std::less<TypeParam>>());
55
- auto arg = x86simdsort::argsort (arr.data (), arr.size ());
57
+ auto arg = x86simdsort::argsort (arr.data (), arr.size (), hasnan );
56
58
IS_ARG_SORTED (sortedarr, arr, arg, type);
57
59
arr.clear ();
58
60
arg.clear ();
@@ -63,6 +65,7 @@ TYPED_TEST_P(simdsort, test_argsort)
63
65
TYPED_TEST_P (simdsort, test_qselect)
64
66
{
65
67
for (auto type : this ->arrtype ) {
68
+ bool hasnan = (type == " rand_with_nan" ) ? true : false ;
66
69
for (auto size : this ->arrsize ) {
67
70
size_t k = rand () % size;
68
71
std::vector<TypeParam> arr = get_array<TypeParam>(type, size);
@@ -71,7 +74,7 @@ TYPED_TEST_P(simdsort, test_qselect)
71
74
sortedarr.begin () + k,
72
75
sortedarr.end (),
73
76
compare<TypeParam, std::less<TypeParam>>());
74
- x86simdsort::qselect (arr.data (), k, arr.size (), true );
77
+ x86simdsort::qselect (arr.data (), k, arr.size (), hasnan );
75
78
IS_ARR_PARTITIONED (arr, k, sortedarr[k], type);
76
79
arr.clear ();
77
80
sortedarr.clear ();
@@ -82,15 +85,15 @@ TYPED_TEST_P(simdsort, test_qselect)
82
85
TYPED_TEST_P (simdsort, test_argselect)
83
86
{
84
87
for (auto type : this ->arrtype ) {
88
+ bool hasnan = (type == " rand_with_nan" ) ? true : false ;
85
89
for (auto size : this ->arrsize ) {
86
90
size_t k = rand () % size;
87
91
std::vector<TypeParam> arr = get_array<TypeParam>(type, size);
88
92
std::vector<TypeParam> sortedarr = arr;
89
93
std::sort (sortedarr.begin (),
90
94
sortedarr.end (),
91
95
compare<TypeParam, std::less<TypeParam>>());
92
- auto arg = x86simdsort::argselect (arr.data (), k, arr.size ());
93
- auto arg1 = x86simdsort::argsort (arr.data (), arr.size ());
96
+ auto arg = x86simdsort::argselect (arr.data (), k, arr.size (), hasnan);
94
97
IS_ARG_PARTITIONED (arr, arg, sortedarr[k], k, type);
95
98
arr.clear ();
96
99
sortedarr.clear ();
@@ -101,6 +104,7 @@ TYPED_TEST_P(simdsort, test_argselect)
101
104
TYPED_TEST_P (simdsort, test_partial_qsort)
102
105
{
103
106
for (auto type : this ->arrtype ) {
107
+ bool hasnan = (type == " rand_with_nan" ) ? true : false ;
104
108
for (auto size : this ->arrsize ) {
105
109
// k should be at least 1
106
110
size_t k = std::max ((size_t )1 , rand () % size);
@@ -109,7 +113,7 @@ TYPED_TEST_P(simdsort, test_partial_qsort)
109
113
std::sort (sortedarr.begin (),
110
114
sortedarr.end (),
111
115
compare<TypeParam, std::less<TypeParam>>());
112
- x86simdsort::partial_qsort (arr.data (), k, arr.size (), true );
116
+ x86simdsort::partial_qsort (arr.data (), k, arr.size (), hasnan );
113
117
IS_ARR_PARTIALSORTED (arr, k, sortedarr, type);
114
118
arr.clear ();
115
119
sortedarr.clear ();
0 commit comments