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 typedef int (*npy_comparator)(const void *, const void *); 00013 00014 int quicksort_bool(npy_bool *vec, npy_intp cnt, void *null); 00015 int heapsort_bool(npy_bool *vec, npy_intp cnt, void *null); 00016 int mergesort_bool(npy_bool *vec, npy_intp cnt, void *null); 00017 int aquicksort_bool(npy_bool *vec, npy_intp *ind, npy_intp cnt, void *null); 00018 int aheapsort_bool(npy_bool *vec, npy_intp *ind, npy_intp cnt, void *null); 00019 int amergesort_bool(npy_bool *vec, npy_intp *ind, npy_intp cnt, void *null); 00020 00021 00022 int quicksort_byte(npy_byte *vec, npy_intp cnt, void *null); 00023 int heapsort_byte(npy_byte *vec, npy_intp cnt, void *null); 00024 int mergesort_byte(npy_byte *vec, npy_intp cnt, void *null); 00025 int aquicksort_byte(npy_byte *vec, npy_intp *ind, npy_intp cnt, void *null); 00026 int aheapsort_byte(npy_byte *vec, npy_intp *ind, npy_intp cnt, void *null); 00027 int amergesort_byte(npy_byte *vec, npy_intp *ind, npy_intp cnt, void *null); 00028 00029 00030 int quicksort_ubyte(npy_ubyte *vec, npy_intp cnt, void *null); 00031 int heapsort_ubyte(npy_ubyte *vec, npy_intp cnt, void *null); 00032 int mergesort_ubyte(npy_ubyte *vec, npy_intp cnt, void *null); 00033 int aquicksort_ubyte(npy_ubyte *vec, npy_intp *ind, npy_intp cnt, void *null); 00034 int aheapsort_ubyte(npy_ubyte *vec, npy_intp *ind, npy_intp cnt, void *null); 00035 int amergesort_ubyte(npy_ubyte *vec, npy_intp *ind, npy_intp cnt, void *null); 00036 00037 00038 int quicksort_short(npy_short *vec, npy_intp cnt, void *null); 00039 int heapsort_short(npy_short *vec, npy_intp cnt, void *null); 00040 int mergesort_short(npy_short *vec, npy_intp cnt, void *null); 00041 int aquicksort_short(npy_short *vec, npy_intp *ind, npy_intp cnt, void *null); 00042 int aheapsort_short(npy_short *vec, npy_intp *ind, npy_intp cnt, void *null); 00043 int amergesort_short(npy_short *vec, npy_intp *ind, npy_intp cnt, void *null); 00044 00045 00046 int quicksort_ushort(npy_ushort *vec, npy_intp cnt, void *null); 00047 int heapsort_ushort(npy_ushort *vec, npy_intp cnt, void *null); 00048 int mergesort_ushort(npy_ushort *vec, npy_intp cnt, void *null); 00049 int aquicksort_ushort(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00050 int aheapsort_ushort(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00051 int amergesort_ushort(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00052 00053 00054 int quicksort_int(npy_int *vec, npy_intp cnt, void *null); 00055 int heapsort_int(npy_int *vec, npy_intp cnt, void *null); 00056 int mergesort_int(npy_int *vec, npy_intp cnt, void *null); 00057 int aquicksort_int(npy_int *vec, npy_intp *ind, npy_intp cnt, void *null); 00058 int aheapsort_int(npy_int *vec, npy_intp *ind, npy_intp cnt, void *null); 00059 int amergesort_int(npy_int *vec, npy_intp *ind, npy_intp cnt, void *null); 00060 00061 00062 int quicksort_uint(npy_uint *vec, npy_intp cnt, void *null); 00063 int heapsort_uint(npy_uint *vec, npy_intp cnt, void *null); 00064 int mergesort_uint(npy_uint *vec, npy_intp cnt, void *null); 00065 int aquicksort_uint(npy_uint *vec, npy_intp *ind, npy_intp cnt, void *null); 00066 int aheapsort_uint(npy_uint *vec, npy_intp *ind, npy_intp cnt, void *null); 00067 int amergesort_uint(npy_uint *vec, npy_intp *ind, npy_intp cnt, void *null); 00068 00069 00070 int quicksort_long(npy_long *vec, npy_intp cnt, void *null); 00071 int heapsort_long(npy_long *vec, npy_intp cnt, void *null); 00072 int mergesort_long(npy_long *vec, npy_intp cnt, void *null); 00073 int aquicksort_long(npy_long *vec, npy_intp *ind, npy_intp cnt, void *null); 00074 int aheapsort_long(npy_long *vec, npy_intp *ind, npy_intp cnt, void *null); 00075 int amergesort_long(npy_long *vec, npy_intp *ind, npy_intp cnt, void *null); 00076 00077 00078 int quicksort_ulong(npy_ulong *vec, npy_intp cnt, void *null); 00079 int heapsort_ulong(npy_ulong *vec, npy_intp cnt, void *null); 00080 int mergesort_ulong(npy_ulong *vec, npy_intp cnt, void *null); 00081 int aquicksort_ulong(npy_ulong *vec, npy_intp *ind, npy_intp cnt, void *null); 00082 int aheapsort_ulong(npy_ulong *vec, npy_intp *ind, npy_intp cnt, void *null); 00083 int amergesort_ulong(npy_ulong *vec, npy_intp *ind, npy_intp cnt, void *null); 00084 00085 00086 int quicksort_longlong(npy_longlong *vec, npy_intp cnt, void *null); 00087 int heapsort_longlong(npy_longlong *vec, npy_intp cnt, void *null); 00088 int mergesort_longlong(npy_longlong *vec, npy_intp cnt, void *null); 00089 int aquicksort_longlong(npy_longlong *vec, npy_intp *ind, npy_intp cnt, void *null); 00090 int aheapsort_longlong(npy_longlong *vec, npy_intp *ind, npy_intp cnt, void *null); 00091 int amergesort_longlong(npy_longlong *vec, npy_intp *ind, npy_intp cnt, void *null); 00092 00093 00094 int quicksort_ulonglong(npy_ulonglong *vec, npy_intp cnt, void *null); 00095 int heapsort_ulonglong(npy_ulonglong *vec, npy_intp cnt, void *null); 00096 int mergesort_ulonglong(npy_ulonglong *vec, npy_intp cnt, void *null); 00097 int aquicksort_ulonglong(npy_ulonglong *vec, npy_intp *ind, npy_intp cnt, void *null); 00098 int aheapsort_ulonglong(npy_ulonglong *vec, npy_intp *ind, npy_intp cnt, void *null); 00099 int amergesort_ulonglong(npy_ulonglong *vec, npy_intp *ind, npy_intp cnt, void *null); 00100 00101 00102 int quicksort_half(npy_ushort *vec, npy_intp cnt, void *null); 00103 int heapsort_half(npy_ushort *vec, npy_intp cnt, void *null); 00104 int mergesort_half(npy_ushort *vec, npy_intp cnt, void *null); 00105 int aquicksort_half(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00106 int aheapsort_half(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00107 int amergesort_half(npy_ushort *vec, npy_intp *ind, npy_intp cnt, void *null); 00108 00109 00110 int quicksort_float(npy_float *vec, npy_intp cnt, void *null); 00111 int heapsort_float(npy_float *vec, npy_intp cnt, void *null); 00112 int mergesort_float(npy_float *vec, npy_intp cnt, void *null); 00113 int aquicksort_float(npy_float *vec, npy_intp *ind, npy_intp cnt, void *null); 00114 int aheapsort_float(npy_float *vec, npy_intp *ind, npy_intp cnt, void *null); 00115 int amergesort_float(npy_float *vec, npy_intp *ind, npy_intp cnt, void *null); 00116 00117 00118 int quicksort_double(npy_double *vec, npy_intp cnt, void *null); 00119 int heapsort_double(npy_double *vec, npy_intp cnt, void *null); 00120 int mergesort_double(npy_double *vec, npy_intp cnt, void *null); 00121 int aquicksort_double(npy_double *vec, npy_intp *ind, npy_intp cnt, void *null); 00122 int aheapsort_double(npy_double *vec, npy_intp *ind, npy_intp cnt, void *null); 00123 int amergesort_double(npy_double *vec, npy_intp *ind, npy_intp cnt, void *null); 00124 00125 00126 int quicksort_longdouble(npy_longdouble *vec, npy_intp cnt, void *null); 00127 int heapsort_longdouble(npy_longdouble *vec, npy_intp cnt, void *null); 00128 int mergesort_longdouble(npy_longdouble *vec, npy_intp cnt, void *null); 00129 int aquicksort_longdouble(npy_longdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00130 int aheapsort_longdouble(npy_longdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00131 int amergesort_longdouble(npy_longdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00132 00133 00134 int quicksort_cfloat(npy_cfloat *vec, npy_intp cnt, void *null); 00135 int heapsort_cfloat(npy_cfloat *vec, npy_intp cnt, void *null); 00136 int mergesort_cfloat(npy_cfloat *vec, npy_intp cnt, void *null); 00137 int aquicksort_cfloat(npy_cfloat *vec, npy_intp *ind, npy_intp cnt, void *null); 00138 int aheapsort_cfloat(npy_cfloat *vec, npy_intp *ind, npy_intp cnt, void *null); 00139 int amergesort_cfloat(npy_cfloat *vec, npy_intp *ind, npy_intp cnt, void *null); 00140 00141 00142 int quicksort_cdouble(npy_cdouble *vec, npy_intp cnt, void *null); 00143 int heapsort_cdouble(npy_cdouble *vec, npy_intp cnt, void *null); 00144 int mergesort_cdouble(npy_cdouble *vec, npy_intp cnt, void *null); 00145 int aquicksort_cdouble(npy_cdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00146 int aheapsort_cdouble(npy_cdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00147 int amergesort_cdouble(npy_cdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00148 00149 00150 int quicksort_clongdouble(npy_clongdouble *vec, npy_intp cnt, void *null); 00151 int heapsort_clongdouble(npy_clongdouble *vec, npy_intp cnt, void *null); 00152 int mergesort_clongdouble(npy_clongdouble *vec, npy_intp cnt, void *null); 00153 int aquicksort_clongdouble(npy_clongdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00154 int aheapsort_clongdouble(npy_clongdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00155 int amergesort_clongdouble(npy_clongdouble *vec, npy_intp *ind, npy_intp cnt, void *null); 00156 00157 00158 int quicksort_string(npy_char *vec, npy_intp cnt, PyArrayObject *arr); 00159 int heapsort_string(npy_char *vec, npy_intp cnt, PyArrayObject *arr); 00160 int mergesort_string(npy_char *vec, npy_intp cnt, PyArrayObject *arr); 00161 int aquicksort_string(npy_char *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00162 int aheapsort_string(npy_char *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00163 int amergesort_string(npy_char *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00164 00165 00166 int quicksort_unicode(npy_ucs4 *vec, npy_intp cnt, PyArrayObject *arr); 00167 int heapsort_unicode(npy_ucs4 *vec, npy_intp cnt, PyArrayObject *arr); 00168 int mergesort_unicode(npy_ucs4 *vec, npy_intp cnt, PyArrayObject *arr); 00169 int aquicksort_unicode(npy_ucs4 *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00170 int aheapsort_unicode(npy_ucs4 *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00171 int amergesort_unicode(npy_ucs4 *vec, npy_intp *ind, npy_intp cnt, PyArrayObject *arr); 00172 00173 00174 int npy_quicksort(void *base, size_t num, size_t size, npy_comparator cmp); 00175 int npy_heapsort(void *base, size_t num, size_t size, npy_comparator cmp); 00176 int npy_mergesort(void *base, size_t num, size_t size, npy_comparator cmp); 00177 00178 #endif