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 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