1 /** D bindings for GSL. 2 Authors: Chibisi Chima-Okereke 3 Copyright: Copyright (c) 2016, Chibisi Chima-Okereke. All rights reserved. 4 License: Boost License 1.0 5 */ 6 7 module gsl.sort; 8 import gsl.vector; 9 import gsl.errno; 10 import gsl.permutation; 11 import core.stdc.config : c_long, c_ulong; 12 //import core.stdc.float; 13 14 15 //gsl_heapsort 16 alias int function (const(void)*, const(void)*) gsl_comparison_fn_t; 17 18 void gsl_heapsort (void* array, size_t count, size_t size, gsl_comparison_fn_t compare); 19 int gsl_heapsort_index (size_t* p, const(void)* array, size_t count, size_t size, gsl_comparison_fn_t compare); 20 21 //gsl_sort_char 22 void gsl_sort_char (char* data, const size_t stride, const size_t n); 23 void gsl_sort2_char (char* data1, const size_t stride1, char* data2, const size_t stride2, const size_t n); 24 void gsl_sort_char_index (size_t* p, const(char)* data, const size_t stride, const size_t n); 25 int gsl_sort_char_smallest (char* dest, const size_t k, const(char)* src, const size_t stride, const size_t n); 26 int gsl_sort_char_smallest_index (size_t* p, const size_t k, const(char)* src, const size_t stride, const size_t n); 27 int gsl_sort_char_largest (char* dest, const size_t k, const(char)* src, const size_t stride, const size_t n); 28 int gsl_sort_char_largest_index (size_t* p, const size_t k, const(char)* src, const size_t stride, const size_t n); 29 30 //gsl_sort_double 31 void gsl_sort (double* data, const size_t stride, const size_t n); 32 void gsl_sort2 (double* data1, const size_t stride1, double* data2, const size_t stride2, const size_t n); 33 void gsl_sort_index (size_t* p, const(double)* data, const size_t stride, const size_t n); 34 int gsl_sort_smallest (double* dest, const size_t k, const(double)* src, const size_t stride, const size_t n); 35 int gsl_sort_smallest_index (size_t* p, const size_t k, const(double)* src, const size_t stride, const size_t n); 36 int gsl_sort_largest (double* dest, const size_t k, const(double)* src, const size_t stride, const size_t n); 37 int gsl_sort_largest_index (size_t* p, const size_t k, const(double)* src, const size_t stride, const size_t n); 38 39 //gsl_sort_float 40 void gsl_sort_float (float* data, const size_t stride, const size_t n); 41 void gsl_sort2_float (float* data1, const size_t stride1, float* data2, const size_t stride2, const size_t n); 42 void gsl_sort_float_index (size_t* p, const(float)* data, const size_t stride, const size_t n); 43 int gsl_sort_float_smallest (float* dest, const size_t k, const(float)* src, const size_t stride, const size_t n); 44 int gsl_sort_float_smallest_index (size_t* p, const size_t k, const(float)* src, const size_t stride, const size_t n); 45 int gsl_sort_float_largest (float* dest, const size_t k, const(float)* src, const size_t stride, const size_t n); 46 int gsl_sort_float_largest_index (size_t* p, const size_t k, const(float)* src, const size_t stride, const size_t n); 47 48 //gsl_sort_int 49 void gsl_sort_int (int* data, const size_t stride, const size_t n); 50 void gsl_sort2_int (int* data1, const size_t stride1, int* data2, const size_t stride2, const size_t n); 51 void gsl_sort_int_index (size_t* p, const(int)* data, const size_t stride, const size_t n); 52 int gsl_sort_int_smallest (int* dest, const size_t k, const(int)* src, const size_t stride, const size_t n); 53 int gsl_sort_int_smallest_index (size_t* p, const size_t k, const(int)* src, const size_t stride, const size_t n); 54 int gsl_sort_int_largest (int* dest, const size_t k, const(int)* src, const size_t stride, const size_t n); 55 int gsl_sort_int_largest_index (size_t* p, const size_t k, const(int)* src, const size_t stride, const size_t n); 56 57 //gsl_sort_long 58 void gsl_sort_long (c_long* data, const size_t stride, const size_t n); 59 void gsl_sort2_long (c_long* data1, const size_t stride1, c_long* data2, const size_t stride2, const size_t n); 60 void gsl_sort_long_index (size_t* p, const(c_long)* data, const size_t stride, const size_t n); 61 int gsl_sort_long_smallest (c_long* dest, const size_t k, const(c_long)* src, const size_t stride, const size_t n); 62 int gsl_sort_long_smallest_index (size_t* p, const size_t k, const(c_long)* src, const size_t stride, const size_t n); 63 int gsl_sort_long_largest (c_long* dest, const size_t k, const(c_long)* src, const size_t stride, const size_t n); 64 int gsl_sort_long_largest_index (size_t* p, const size_t k, const(c_long)* src, const size_t stride, const size_t n); 65 66 //gsl_sort_long_double 67 void gsl_sort_long_double (real* data, const size_t stride, const size_t n); 68 void gsl_sort2_long_double (real* data1, const size_t stride1, real* data2, const size_t stride2, const size_t n); 69 void gsl_sort_long_double_index (size_t* p, const(real)* data, const size_t stride, const size_t n); 70 int gsl_sort_long_double_smallest (real* dest, const size_t k, const(real)* src, const size_t stride, const size_t n); 71 int gsl_sort_long_double_smallest_index (size_t* p, const size_t k, const(real)* src, const size_t stride, const size_t n); 72 int gsl_sort_long_double_largest (real* dest, const size_t k, const(real)* src, const size_t stride, const size_t n); 73 int gsl_sort_long_double_largest_index (size_t* p, const size_t k, const(real)* src, const size_t stride, const size_t n); 74 75 //gsl_sort_short 76 void gsl_sort_short (short* data, const size_t stride, const size_t n); 77 void gsl_sort2_short (short* data1, const size_t stride1, short* data2, const size_t stride2, const size_t n); 78 void gsl_sort_short_index (size_t* p, const(short)* data, const size_t stride, const size_t n); 79 int gsl_sort_short_smallest (short* dest, const size_t k, const(short)* src, const size_t stride, const size_t n); 80 int gsl_sort_short_smallest_index (size_t* p, const size_t k, const(short)* src, const size_t stride, const size_t n); 81 int gsl_sort_short_largest (short* dest, const size_t k, const(short)* src, const size_t stride, const size_t n); 82 int gsl_sort_short_largest_index (size_t* p, const size_t k, const(short)* src, const size_t stride, const size_t n); 83 84 //gsl_sort_uchar 85 void gsl_sort_uchar (ubyte* data, const size_t stride, const size_t n); 86 void gsl_sort2_uchar (ubyte* data1, const size_t stride1, ubyte* data2, const size_t stride2, const size_t n); 87 void gsl_sort_uchar_index (size_t* p, const(ubyte)* data, const size_t stride, const size_t n); 88 int gsl_sort_uchar_smallest (ubyte* dest, const size_t k, const(ubyte)* src, const size_t stride, const size_t n); 89 int gsl_sort_uchar_smallest_index (size_t* p, const size_t k, const(ubyte)* src, const size_t stride, const size_t n); 90 int gsl_sort_uchar_largest (ubyte* dest, const size_t k, const(ubyte)* src, const size_t stride, const size_t n); 91 int gsl_sort_uchar_largest_index (size_t* p, const size_t k, const(ubyte)* src, const size_t stride, const size_t n); 92 93 //gsl_sort_uint 94 void gsl_sort_uint (uint* data, const size_t stride, const size_t n); 95 void gsl_sort2_uint (uint* data1, const size_t stride1, uint* data2, const size_t stride2, const size_t n); 96 void gsl_sort_uint_index (size_t* p, const(uint)* data, const size_t stride, const size_t n); 97 int gsl_sort_uint_smallest (uint* dest, const size_t k, const(uint)* src, const size_t stride, const size_t n); 98 int gsl_sort_uint_smallest_index (size_t* p, const size_t k, const(uint)* src, const size_t stride, const size_t n); 99 int gsl_sort_uint_largest (uint* dest, const size_t k, const(uint)* src, const size_t stride, const size_t n); 100 int gsl_sort_uint_largest_index (size_t* p, const size_t k, const(uint)* src, const size_t stride, const size_t n); 101 102 //gsl_sort_ulong 103 void gsl_sort_ulong (c_ulong* data, const size_t stride, const size_t n); 104 void gsl_sort2_ulong (c_ulong* data1, const size_t stride1, c_ulong* data2, const size_t stride2, const size_t n); 105 void gsl_sort_ulong_index (size_t* p, const(c_ulong)* data, const size_t stride, const size_t n); 106 int gsl_sort_ulong_smallest (c_ulong* dest, const size_t k, const(c_ulong)* src, const size_t stride, const size_t n); 107 int gsl_sort_ulong_smallest_index (size_t* p, const size_t k, const(c_ulong)* src, const size_t stride, const size_t n); 108 int gsl_sort_ulong_largest (c_ulong* dest, const size_t k, const(c_ulong)* src, const size_t stride, const size_t n); 109 int gsl_sort_ulong_largest_index (size_t* p, const size_t k, const(c_ulong)* src, const size_t stride, const size_t n); 110 111 //gsl_sort_ushort 112 void gsl_sort_ushort (ushort* data, const size_t stride, const size_t n); 113 void gsl_sort2_ushort (ushort* data1, const size_t stride1, ushort* data2, const size_t stride2, const size_t n); 114 void gsl_sort_ushort_index (size_t* p, const(ushort)* data, const size_t stride, const size_t n); 115 int gsl_sort_ushort_smallest (ushort* dest, const size_t k, const(ushort)* src, const size_t stride, const size_t n); 116 int gsl_sort_ushort_smallest_index (size_t* p, const size_t k, const(ushort)* src, const size_t stride, const size_t n); 117 int gsl_sort_ushort_largest (ushort* dest, const size_t k, const(ushort)* src, const size_t stride, const size_t n); 118 int gsl_sort_ushort_largest_index (size_t* p, const size_t k, const(ushort)* src, const size_t stride, const size_t n); 119 120 //gsl_sort_vector_char 121 void gsl_sort_vector_char (gsl_vector_char* v); 122 void gsl_sort_vector2_char (gsl_vector_char* v1, gsl_vector_char* v2); 123 int gsl_sort_vector_char_index (gsl_permutation* p, const(gsl_vector_char)* v); 124 int gsl_sort_vector_char_smallest (char* dest, const size_t k, const(gsl_vector_char)* v); 125 int gsl_sort_vector_char_largest (char* dest, const size_t k, const(gsl_vector_char)* v); 126 int gsl_sort_vector_char_smallest_index (size_t* p, const size_t k, const(gsl_vector_char)* v); 127 int gsl_sort_vector_char_largest_index (size_t* p, const size_t k, const(gsl_vector_char)* v); 128 129 //gsl_sort_vector 130 void gsl_sort_vector (gsl_vector* v); 131 void gsl_sort_vector2 (gsl_vector* v1, gsl_vector* v2); 132 int gsl_sort_vector_index (gsl_permutation* p, const(gsl_vector)* v); 133 int gsl_sort_vector_smallest (double* dest, const size_t k, const(gsl_vector)* v); 134 int gsl_sort_vector_largest (double* dest, const size_t k, const(gsl_vector)* v); 135 int gsl_sort_vector_smallest_index (size_t* p, const size_t k, const(gsl_vector)* v); 136 int gsl_sort_vector_largest_index (size_t* p, const size_t k, const(gsl_vector)* v); 137 138 //gsl_sort_vector_float 139 void gsl_sort_vector_float (gsl_vector_float* v); 140 void gsl_sort_vector2_float (gsl_vector_float* v1, gsl_vector_float* v2); 141 int gsl_sort_vector_float_index (gsl_permutation* p, const(gsl_vector_float)* v); 142 int gsl_sort_vector_float_smallest (float* dest, const size_t k, const(gsl_vector_float)* v); 143 int gsl_sort_vector_float_largest (float* dest, const size_t k, const(gsl_vector_float)* v); 144 int gsl_sort_vector_float_smallest_index (size_t* p, const size_t k, const(gsl_vector_float)* v); 145 int gsl_sort_vector_float_largest_index (size_t* p, const size_t k, const(gsl_vector_float)* v); 146 147 //gsl_sort_vector_int 148 void gsl_sort_vector_int (gsl_vector_int* v); 149 void gsl_sort_vector2_int (gsl_vector_int* v1, gsl_vector_int* v2); 150 int gsl_sort_vector_int_index (gsl_permutation* p, const(gsl_vector_int)* v); 151 int gsl_sort_vector_int_smallest (int* dest, const size_t k, const(gsl_vector_int)* v); 152 int gsl_sort_vector_int_largest (int* dest, const size_t k, const(gsl_vector_int)* v); 153 int gsl_sort_vector_int_smallest_index (size_t* p, const size_t k, const(gsl_vector_int)* v); 154 int gsl_sort_vector_int_largest_index (size_t* p, const size_t k, const(gsl_vector_int)* v); 155 156 //gsl_sort_vector_long 157 void gsl_sort_vector_long (gsl_vector_long* v); 158 void gsl_sort_vector2_long (gsl_vector_long* v1, gsl_vector_long* v2); 159 int gsl_sort_vector_long_index (gsl_permutation* p, const(gsl_vector_long)* v); 160 int gsl_sort_vector_long_smallest (c_long* dest, const size_t k, const(gsl_vector_long)* v); 161 int gsl_sort_vector_long_largest (c_long* dest, const size_t k, const(gsl_vector_long)* v); 162 int gsl_sort_vector_long_smallest_index (size_t* p, const size_t k, const(gsl_vector_long)* v); 163 int gsl_sort_vector_long_largest_index (size_t* p, const size_t k, const(gsl_vector_long)* v); 164 165 //gsl_sort_vector_long_double 166 void gsl_sort_vector_long_double (gsl_vector_long_double* v); 167 void gsl_sort_vector2_long_double (gsl_vector_long_double* v1, gsl_vector_long_double* v2); 168 int gsl_sort_vector_long_double_index (gsl_permutation* p, const(gsl_vector_long_double)* v); 169 int gsl_sort_vector_long_double_smallest (real* dest, const size_t k, const(gsl_vector_long_double)* v); 170 int gsl_sort_vector_long_double_largest (real* dest, const size_t k, const(gsl_vector_long_double)* v); 171 int gsl_sort_vector_long_double_smallest_index (size_t* p, const size_t k, const(gsl_vector_long_double)* v); 172 int gsl_sort_vector_long_double_largest_index (size_t* p, const size_t k, const(gsl_vector_long_double)* v); 173 174 //gsl_sort_vector_short 175 void gsl_sort_vector_short (gsl_vector_short* v); 176 void gsl_sort_vector2_short (gsl_vector_short* v1, gsl_vector_short* v2); 177 int gsl_sort_vector_short_index (gsl_permutation* p, const(gsl_vector_short)* v); 178 int gsl_sort_vector_short_smallest (short* dest, const size_t k, const(gsl_vector_short)* v); 179 int gsl_sort_vector_short_largest (short* dest, const size_t k, const(gsl_vector_short)* v); 180 int gsl_sort_vector_short_smallest_index (size_t* p, const size_t k, const(gsl_vector_short)* v); 181 int gsl_sort_vector_short_largest_index (size_t* p, const size_t k, const(gsl_vector_short)* v); 182 183 //gsl_sort_vector_uchar 184 void gsl_sort_vector_uchar (gsl_vector_uchar* v); 185 void gsl_sort_vector2_uchar (gsl_vector_uchar* v1, gsl_vector_uchar* v2); 186 int gsl_sort_vector_uchar_index (gsl_permutation* p, const(gsl_vector_uchar)* v); 187 int gsl_sort_vector_uchar_smallest (ubyte* dest, const size_t k, const(gsl_vector_uchar)* v); 188 int gsl_sort_vector_uchar_largest (ubyte* dest, const size_t k, const(gsl_vector_uchar)* v); 189 int gsl_sort_vector_uchar_smallest_index (size_t* p, const size_t k, const(gsl_vector_uchar)* v); 190 int gsl_sort_vector_uchar_largest_index (size_t* p, const size_t k, const(gsl_vector_uchar)* v); 191 192 //gsl_sort_vector_uint 193 void gsl_sort_vector_uint (gsl_vector_uint* v); 194 void gsl_sort_vector2_uint (gsl_vector_uint* v1, gsl_vector_uint* v2); 195 int gsl_sort_vector_uint_index (gsl_permutation* p, const(gsl_vector_uint)* v); 196 int gsl_sort_vector_uint_smallest (uint* dest, const size_t k, const(gsl_vector_uint)* v); 197 int gsl_sort_vector_uint_largest (uint* dest, const size_t k, const(gsl_vector_uint)* v); 198 int gsl_sort_vector_uint_smallest_index (size_t* p, const size_t k, const(gsl_vector_uint)* v); 199 int gsl_sort_vector_uint_largest_index (size_t* p, const size_t k, const(gsl_vector_uint)* v); 200 201 //gsl_sort_vector_ulong 202 void gsl_sort_vector_ulong (gsl_vector_ulong* v); 203 void gsl_sort_vector2_ulong (gsl_vector_ulong* v1, gsl_vector_ulong* v2); 204 int gsl_sort_vector_ulong_index (gsl_permutation* p, const(gsl_vector_ulong)* v); 205 int gsl_sort_vector_ulong_smallest (c_ulong* dest, const size_t k, const(gsl_vector_ulong)* v); 206 int gsl_sort_vector_ulong_largest (c_ulong* dest, const size_t k, const(gsl_vector_ulong)* v); 207 int gsl_sort_vector_ulong_smallest_index (size_t* p, const size_t k, const(gsl_vector_ulong)* v); 208 int gsl_sort_vector_ulong_largest_index (size_t* p, const size_t k, const(gsl_vector_ulong)* v); 209 210 //gsl_sort_vector_ushort 211 void gsl_sort_vector_ushort (gsl_vector_ushort* v); 212 void gsl_sort_vector2_ushort (gsl_vector_ushort* v1, gsl_vector_ushort* v2); 213 int gsl_sort_vector_ushort_index (gsl_permutation* p, const(gsl_vector_ushort)* v); 214 int gsl_sort_vector_ushort_smallest (ushort* dest, const size_t k, const(gsl_vector_ushort)* v); 215 int gsl_sort_vector_ushort_largest (ushort* dest, const size_t k, const(gsl_vector_ushort)* v); 216 int gsl_sort_vector_ushort_smallest_index (size_t* p, const size_t k, const(gsl_vector_ushort)* v); 217 int gsl_sort_vector_ushort_largest_index (size_t* p, const size_t k, const(gsl_vector_ushort)* v);