@@ -8,19 +8,26 @@ namespace xss {
88namespace avx512 {
99 // quicksort
1010 template <typename T>
11- XSS_HIDE_SYMBOL void qsort (T *arr, size_t arrsize, bool hasnan = false );
11+ XSS_HIDE_SYMBOL void
12+ qsort (T *arr, size_t arrsize, bool hasnan = false , bool descending = false );
1213 // key-value quicksort
1314 template <typename T1, typename T2>
1415 XSS_EXPORT_SYMBOL void
1516 keyvalue_qsort (T1 *key, T2 *val, size_t arrsize, bool hasnan = false );
1617 // quickselect
1718 template <typename T>
18- XSS_HIDE_SYMBOL void
19- qselect (T *arr, size_t k, size_t arrsize, bool hasnan = false );
19+ XSS_HIDE_SYMBOL void qselect (T *arr,
20+ size_t k,
21+ size_t arrsize,
22+ bool hasnan = false ,
23+ bool descending = false );
2024 // partial sort
2125 template <typename T>
22- XSS_HIDE_SYMBOL void
23- partial_qsort (T *arr, size_t k, size_t arrsize, bool hasnan = false );
26+ XSS_HIDE_SYMBOL void partial_qsort (T *arr,
27+ size_t k,
28+ size_t arrsize,
29+ bool hasnan = false ,
30+ bool descending = false );
2431 // argsort
2532 template <typename T>
2633 XSS_HIDE_SYMBOL std::vector<size_t >
@@ -33,19 +40,26 @@ namespace avx512 {
3340namespace avx2 {
3441 // quicksort
3542 template <typename T>
36- XSS_HIDE_SYMBOL void qsort (T *arr, size_t arrsize, bool hasnan = false );
43+ XSS_HIDE_SYMBOL void
44+ qsort (T *arr, size_t arrsize, bool hasnan = false , bool descending = false );
3745 // key-value quicksort
3846 template <typename T1, typename T2>
3947 XSS_EXPORT_SYMBOL void
4048 keyvalue_qsort (T1 *key, T2 *val, size_t arrsize, bool hasnan = false );
4149 // quickselect
4250 template <typename T>
43- XSS_HIDE_SYMBOL void
44- qselect (T *arr, size_t k, size_t arrsize, bool hasnan = false );
51+ XSS_HIDE_SYMBOL void qselect (T *arr,
52+ size_t k,
53+ size_t arrsize,
54+ bool hasnan = false ,
55+ bool descending = false );
4556 // partial sort
4657 template <typename T>
47- XSS_HIDE_SYMBOL void
48- partial_qsort (T *arr, size_t k, size_t arrsize, bool hasnan = false );
58+ XSS_HIDE_SYMBOL void partial_qsort (T *arr,
59+ size_t k,
60+ size_t arrsize,
61+ bool hasnan = false ,
62+ bool descending = false );
4963 // argsort
5064 template <typename T>
5165 XSS_HIDE_SYMBOL std::vector<size_t >
@@ -58,19 +72,26 @@ namespace avx2 {
5872namespace scalar {
5973 // quicksort
6074 template <typename T>
61- XSS_HIDE_SYMBOL void qsort (T *arr, size_t arrsize, bool hasnan = false );
75+ XSS_HIDE_SYMBOL void
76+ qsort (T *arr, size_t arrsize, bool hasnan = false , bool descending = false );
6277 // key-value quicksort
6378 template <typename T1, typename T2>
6479 XSS_EXPORT_SYMBOL void
6580 keyvalue_qsort (T1 *key, T2 *val, size_t arrsize, bool hasnan = false );
6681 // quickselect
6782 template <typename T>
68- XSS_HIDE_SYMBOL void
69- qselect (T *arr, size_t k, size_t arrsize, bool hasnan = false );
83+ XSS_HIDE_SYMBOL void qselect (T *arr,
84+ size_t k,
85+ size_t arrsize,
86+ bool hasnan = false ,
87+ bool descending = false );
7088 // partial sort
7189 template <typename T>
72- XSS_HIDE_SYMBOL void
73- partial_qsort (T *arr, size_t k, size_t arrsize, bool hasnan = false );
90+ XSS_HIDE_SYMBOL void partial_qsort (T *arr,
91+ size_t k,
92+ size_t arrsize,
93+ bool hasnan = false ,
94+ bool descending = false );
7495 // argsort
7596 template <typename T>
7697 XSS_HIDE_SYMBOL std::vector<size_t >
0 commit comments