26 size_t * a,
size_t n,
size_t * b,
double * c );
32 int * a,
size_t n,
size_t * b,
size_t * c );
34 int * a,
size_t n,
size_t * b,
yac_int * c );
37 int (*compar)(
const void*,
const void*));
51 unsigned prev = array[0];
53 for (
size_t i = 1; i <
N; ++i) {
55 if (array[i] == prev)
continue;
60 if (pos != i) array[pos] = array[i];
78 double prev = array[0];
80 for (
size_t i = 1; i <
N; ++i) {
83 if (!memcmp(&array[i], &prev,
sizeof(prev)))
continue;
88 if (pos != i) array[pos] = array[i];
106 size_t prev = array[0];
108 for (
size_t i = 1; i <
N; ++i) {
110 if (array[i] == prev)
continue;
115 if (pos != i) array[pos] = array[i];
127 size_t (*array)[2],
size_t * n) {
134 size_t prev[2] = {array[0][0],
137 for (
size_t i = 1; i <
N; ++i) {
139 if ((array[i][0] == prev[0]) &&
140 (array[i][1] == prev[1]))
continue;
142 prev[0] = array[i][0];
143 prev[1] = array[i][1];
147 array[pos][0] = array[i][0];
148 array[pos][1] = array[i][1];
161 size_t (*array)[3],
size_t * n) {
168 size_t prev[3] = {array[0][0],
172 for (
size_t i = 1; i <
N; ++i) {
174 if ((array[i][0] == prev[0]) &&
175 (array[i][1] == prev[1]) &&
176 (array[i][2] == prev[2]))
continue;
178 prev[0] = array[i][0];
179 prev[1] = array[i][1];
180 prev[2] = array[i][2];
184 array[pos][0] = array[i][0];
185 array[pos][1] = array[i][1];
186 array[pos][2] = array[i][2];
208 for (
size_t i = 1; i <
N; ++i) {
210 if (array[i] == prev)
continue;
215 if (pos != i) array[pos] = array[i];
229 size_t * array_size_t,
int *
flag,
size_t false_count) {
235 for (
size_t i = 0, j = false_count; i < false_count; ++i) {
239 for (;
flag[j]; ++j);
241 size_t temp_size_t = array_size_t[i];
242 array_size_t[i] = array_size_t[j];
243 array_size_t[j] = temp_size_t;
252 fprintf(stderr, "### Assertion violation: %s in %s:%d\n",\
253 #c, __FILE__, __LINE__);\
257#define COPY_DATA(data, count) \
259 xmalloc((size_t)(count) * sizeof(*(data))), \
260 (data), (size_t)(count) * sizeof(*(data))))
void yac_mergesort(void *base, size_t num, size_t size, int(*compar)(const void *, const void *))
void yac_quicksort_index_yac_int_size_t(yac_int *a, size_t n, size_t *idx)
void yac_quicksort_index_size_t_size_t_double(size_t *a, size_t n, size_t *b, double *c)
void yac_quicksort_index_int_yac_int(int *a, size_t n, yac_int *idx)
static void yac_remove_duplicates_size_t_3(size_t(*array)[3], size_t *n)
static void yac_flag_sort_size_t(size_t *array_size_t, int *flag, size_t false_count)
void yac_quicksort_index_int_double(int *a, size_t n, double *idx)
void yac_quicksort_index_yac_int_yac_int_size_t(yac_int *a, size_t n, yac_int *b, size_t *c)
void yac_quicksort_index_size_t_yac_int(size_t *a, size_t n, yac_int *idx)
void yac_quicksort_index_size_t_void_p(size_t *a, size_t n, void **idx)
static void yac_remove_duplicates_uint(unsigned *array, size_t *n)
void yac_quicksort_index_yac_int_int(yac_int *a, size_t n, int *idx)
void yac_quicksort_index_int_size_t(int *a, size_t n, size_t *idx)
void yac_quicksort_index_int_size_t_size_t(int *a, size_t n, size_t *b, size_t *c)
static void yac_remove_duplicates_size_t(size_t *array, size_t *n)
void yac_quicksort_index_size_t_int(size_t *a, size_t n, int *idx)
void yac_quicksort_index_uint64_t_size_t(uint64_t *a, size_t n, size_t *idx)
static void yac_remove_duplicates_double(double *array, size_t *n)
void yac_quicksort_index_size_t_size_t(size_t *a, size_t n, size_t *idx)
void yac_quicksort_index(int *a, size_t n, int *idx)
void yac_quicksort_index_yac_int_yac_int(yac_int *a, size_t n, yac_int *idx)
void yac_quicksort_index_yac_int_uint64_t(yac_int *a, size_t n, uint64_t *idx)
void yac_quicksort_index_int_size_t_yac_int(int *a, size_t n, size_t *b, yac_int *c)
void yac_quicksort_index_yac_int_yac_int_double(yac_int *a, size_t n, yac_int *b, double *c)
static void yac_remove_duplicates_size_t_2(size_t(*array)[2], size_t *n)
static void yac_remove_duplicates_yac_int(yac_int *array, size_t *n)