numpy
2.0.0
|
00001 #ifndef __NPY_SORT_H__ 00002 #define __NPY_SORT_H__ 00003 00004 /* Python include is for future object sorts */ 00005 #include <Python.h> 00006 #include <numpy/npy_common.h> 00007 #include <numpy/ndarraytypes.h> 00008 00009 #define NPY_ENOMEM 1 00010 #define NPY_ECOMP 2 00011 00012 static NPY_INLINE int npy_get_msb(npy_uintp unum) 00013 { 00014 int depth_limit = 0; 00015 while (unum >>= 1) { 00016 depth_limit++; 00017 } 00018 return depth_limit; 00019 } 00020 00021 int quicksort_bool(void *vec, npy_intp cnt, void *null); 00022 int heapsort_bool(void *vec, npy_intp cnt, void *null); 00023 int mergesort_bool(void *vec, npy_intp cnt, void *null); 00024 int aquicksort_bool(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00025 int aheapsort_bool(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00026 int amergesort_bool(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00027 00028 00029 int quicksort_byte(void *vec, npy_intp cnt, void *null); 00030 int heapsort_byte(void *vec, npy_intp cnt, void *null); 00031 int mergesort_byte(void *vec, npy_intp cnt, void *null); 00032 int aquicksort_byte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00033 int aheapsort_byte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00034 int amergesort_byte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00035 00036 00037 int quicksort_ubyte(void *vec, npy_intp cnt, void *null); 00038 int heapsort_ubyte(void *vec, npy_intp cnt, void *null); 00039 int mergesort_ubyte(void *vec, npy_intp cnt, void *null); 00040 int aquicksort_ubyte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00041 int aheapsort_ubyte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00042 int amergesort_ubyte(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00043 00044 00045 int quicksort_short(void *vec, npy_intp cnt, void *null); 00046 int heapsort_short(void *vec, npy_intp cnt, void *null); 00047 int mergesort_short(void *vec, npy_intp cnt, void *null); 00048 int aquicksort_short(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00049 int aheapsort_short(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00050 int amergesort_short(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00051 00052 00053 int quicksort_ushort(void *vec, npy_intp cnt, void *null); 00054 int heapsort_ushort(void *vec, npy_intp cnt, void *null); 00055 int mergesort_ushort(void *vec, npy_intp cnt, void *null); 00056 int aquicksort_ushort(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00057 int aheapsort_ushort(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00058 int amergesort_ushort(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00059 00060 00061 int quicksort_int(void *vec, npy_intp cnt, void *null); 00062 int heapsort_int(void *vec, npy_intp cnt, void *null); 00063 int mergesort_int(void *vec, npy_intp cnt, void *null); 00064 int aquicksort_int(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00065 int aheapsort_int(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00066 int amergesort_int(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00067 00068 00069 int quicksort_uint(void *vec, npy_intp cnt, void *null); 00070 int heapsort_uint(void *vec, npy_intp cnt, void *null); 00071 int mergesort_uint(void *vec, npy_intp cnt, void *null); 00072 int aquicksort_uint(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00073 int aheapsort_uint(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00074 int amergesort_uint(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00075 00076 00077 int quicksort_long(void *vec, npy_intp cnt, void *null); 00078 int heapsort_long(void *vec, npy_intp cnt, void *null); 00079 int mergesort_long(void *vec, npy_intp cnt, void *null); 00080 int aquicksort_long(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00081 int aheapsort_long(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00082 int amergesort_long(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00083 00084 00085 int quicksort_ulong(void *vec, npy_intp cnt, void *null); 00086 int heapsort_ulong(void *vec, npy_intp cnt, void *null); 00087 int mergesort_ulong(void *vec, npy_intp cnt, void *null); 00088 int aquicksort_ulong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00089 int aheapsort_ulong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00090 int amergesort_ulong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00091 00092 00093 int quicksort_longlong(void *vec, npy_intp cnt, void *null); 00094 int heapsort_longlong(void *vec, npy_intp cnt, void *null); 00095 int mergesort_longlong(void *vec, npy_intp cnt, void *null); 00096 int aquicksort_longlong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00097 int aheapsort_longlong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00098 int amergesort_longlong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00099 00100 00101 int quicksort_ulonglong(void *vec, npy_intp cnt, void *null); 00102 int heapsort_ulonglong(void *vec, npy_intp cnt, void *null); 00103 int mergesort_ulonglong(void *vec, npy_intp cnt, void *null); 00104 int aquicksort_ulonglong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00105 int aheapsort_ulonglong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00106 int amergesort_ulonglong(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00107 00108 00109 int quicksort_half(void *vec, npy_intp cnt, void *null); 00110 int heapsort_half(void *vec, npy_intp cnt, void *null); 00111 int mergesort_half(void *vec, npy_intp cnt, void *null); 00112 int aquicksort_half(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00113 int aheapsort_half(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00114 int amergesort_half(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00115 00116 00117 int quicksort_float(void *vec, npy_intp cnt, void *null); 00118 int heapsort_float(void *vec, npy_intp cnt, void *null); 00119 int mergesort_float(void *vec, npy_intp cnt, void *null); 00120 int aquicksort_float(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00121 int aheapsort_float(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00122 int amergesort_float(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00123 00124 00125 int quicksort_double(void *vec, npy_intp cnt, void *null); 00126 int heapsort_double(void *vec, npy_intp cnt, void *null); 00127 int mergesort_double(void *vec, npy_intp cnt, void *null); 00128 int aquicksort_double(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00129 int aheapsort_double(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00130 int amergesort_double(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00131 00132 00133 int quicksort_longdouble(void *vec, npy_intp cnt, void *null); 00134 int heapsort_longdouble(void *vec, npy_intp cnt, void *null); 00135 int mergesort_longdouble(void *vec, npy_intp cnt, void *null); 00136 int aquicksort_longdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00137 int aheapsort_longdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00138 int amergesort_longdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00139 00140 00141 int quicksort_cfloat(void *vec, npy_intp cnt, void *null); 00142 int heapsort_cfloat(void *vec, npy_intp cnt, void *null); 00143 int mergesort_cfloat(void *vec, npy_intp cnt, void *null); 00144 int aquicksort_cfloat(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00145 int aheapsort_cfloat(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00146 int amergesort_cfloat(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00147 00148 00149 int quicksort_cdouble(void *vec, npy_intp cnt, void *null); 00150 int heapsort_cdouble(void *vec, npy_intp cnt, void *null); 00151 int mergesort_cdouble(void *vec, npy_intp cnt, void *null); 00152 int aquicksort_cdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00153 int aheapsort_cdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00154 int amergesort_cdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00155 00156 00157 int quicksort_clongdouble(void *vec, npy_intp cnt, void *null); 00158 int heapsort_clongdouble(void *vec, npy_intp cnt, void *null); 00159 int mergesort_clongdouble(void *vec, npy_intp cnt, void *null); 00160 int aquicksort_clongdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00161 int aheapsort_clongdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00162 int amergesort_clongdouble(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00163 00164 00165 int quicksort_string(void *vec, npy_intp cnt, void *arr); 00166 int heapsort_string(void *vec, npy_intp cnt, void *arr); 00167 int mergesort_string(void *vec, npy_intp cnt, void *arr); 00168 int aquicksort_string(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00169 int aheapsort_string(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00170 int amergesort_string(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00171 00172 00173 int quicksort_unicode(void *vec, npy_intp cnt, void *arr); 00174 int heapsort_unicode(void *vec, npy_intp cnt, void *arr); 00175 int mergesort_unicode(void *vec, npy_intp cnt, void *arr); 00176 int aquicksort_unicode(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00177 int aheapsort_unicode(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00178 int amergesort_unicode(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00179 00180 00181 int quicksort_datetime(void *vec, npy_intp cnt, void *null); 00182 int heapsort_datetime(void *vec, npy_intp cnt, void *null); 00183 int mergesort_datetime(void *vec, npy_intp cnt, void *null); 00184 int aquicksort_datetime(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00185 int aheapsort_datetime(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00186 int amergesort_datetime(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00187 00188 00189 int quicksort_timedelta(void *vec, npy_intp cnt, void *null); 00190 int heapsort_timedelta(void *vec, npy_intp cnt, void *null); 00191 int mergesort_timedelta(void *vec, npy_intp cnt, void *null); 00192 int aquicksort_timedelta(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00193 int aheapsort_timedelta(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00194 int amergesort_timedelta(void *vec, npy_intp *ind, npy_intp cnt, void *null); 00195 00196 00197 int npy_quicksort(void *vec, npy_intp cnt, void *arr); 00198 int npy_heapsort(void *vec, npy_intp cnt, void *arr); 00199 int npy_mergesort(void *vec, npy_intp cnt, void *arr); 00200 int npy_aquicksort(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00201 int npy_aheapsort(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00202 int npy_amergesort(void *vec, npy_intp *ind, npy_intp cnt, void *arr); 00203 00204 #endif