27 size_t * a,
size_t n,
size_t * b,
double * c );
33 int * a,
size_t n,
size_t * b,
size_t * c );
35 int * a,
size_t n,
size_t * b,
yac_int * c );
38 int (*compar)(
const void*,
const void*));
52 unsigned prev = array[0];
54 for (
size_t i = 1; i <
N; ++i) {
56 if (array[i] == prev)
continue;
61 if (pos != i) array[pos] = array[i];
79 double prev = array[0];
81 for (
size_t i = 1; i <
N; ++i) {
84 if (!memcmp(&array[i], &prev,
sizeof(prev)))
continue;
89 if (pos != i) array[pos] = array[i];
107 size_t prev = array[0];
109 for (
size_t i = 1; i <
N; ++i) {
111 if (array[i] == prev)
continue;
116 if (pos != i) array[pos] = array[i];
128 size_t (*array)[2],
size_t * n) {
135 size_t prev[2] = {array[0][0],
138 for (
size_t i = 1; i <
N; ++i) {
140 if ((array[i][0] == prev[0]) &&
141 (array[i][1] == prev[1]))
continue;
143 prev[0] = array[i][0];
144 prev[1] = array[i][1];
148 array[pos][0] = array[i][0];
149 array[pos][1] = array[i][1];
162 size_t (*array)[3],
size_t * n) {
169 size_t prev[3] = {array[0][0],
173 for (
size_t i = 1; i <
N; ++i) {
175 if ((array[i][0] == prev[0]) &&
176 (array[i][1] == prev[1]) &&
177 (array[i][2] == prev[2]))
continue;
179 prev[0] = array[i][0];
180 prev[1] = array[i][1];
181 prev[2] = array[i][2];
185 array[pos][0] = array[i][0];
186 array[pos][1] = array[i][1];
187 array[pos][2] = array[i][2];
209 for (
size_t i = 1; i <
N; ++i) {
211 if (array[i] == prev)
continue;
216 if (pos != i) array[pos] = array[i];
230 size_t * array_size_t,
int *
flag,
size_t false_count) {
236 for (
size_t i = 0, j = false_count; i < false_count; ++i) {
240 for (;
flag[j]; ++j);
242 size_t temp_size_t = array_size_t[i];
243 array_size_t[i] = array_size_t[j];
244 array_size_t[j] = temp_size_t;
265 fprintf(stderr, "### Assertion violation: %s in %s:%d\n",\
266 #c, __FILE__, __LINE__);\
270#define COPY_DATA(data, count) \
272 xmalloc((size_t)(count) * sizeof(*(data))), \
273 (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)
char * yac_string_dup(char const *string)
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)