numpy  2.0.0
src/private/npy_sort.h
Go to the documentation of this file.
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