Yet Another eXchange Tool 0.11.3
|
#include <stdlib.h>
#include <stdio.h>
#include "xt/mergesort.h"
#include "xt/xt_sort.h"
#include "core/ppm_xfuncs.h"
#include "xt_mergesort_base.h"
Go to the source code of this file.
Macros | |
#define | SORT_TYPE idxpos_type |
#define | SORT_TYPE_SUFFIX idxpos |
#define | SORT_TYPE_CMP_LT(a, b, ...) ((a).idx < (b).idx || ((a).idx == (b).idx && (a).pos < (b).pos)) |
#define | SORT_TYPE_CMP_LE(a, b, ...) ((a).idx < (b).idx || ((a).idx == (b).idx && (a).pos <= (b).pos)) |
#define | SORT_TYPE_CMP_EQ(a, b, ...) ((a).idx == (b).idx && (a).pos == (b).pos) |
#define | SORT_TYPE int |
#define | SORT_TYPE_SUFFIX int |
#define | SORT_TYPE_CMP_LT(a, b, ...) ((a) < (b)) |
#define | SORT_TYPE_CMP_LE(a, b, ...) ((a) <= (b)) |
#define | SORT_TYPE_CMP_EQ(a, b, ...) ((a) == (b)) |
#define | SORT_TYPE Xt_int |
#define | SORT_TYPE_SUFFIX xt_int |
#define | SORT_TYPE_CMP_LT(a, b, ...) ((a) < (b)) |
#define | SORT_TYPE_CMP_LE(a, b, ...) ((a) <= (b)) |
#define | SORT_TYPE_CMP_EQ(a, b, ...) ((a) == (b)) |
#define | SORT_TYPE Xt_int |
#define | SORT_TYPE_SUFFIX xt_int_permutation |
#define | SORT_TYPE_CMP_LT(u, v, i, j) ((u) < (v) || ((u) == (v) && permutation_v[(i)] < permutation_v[(j)])) |
#define | SORT_TYPE_CMP_LE(u, v, i, j) ((u) < (v) || ((u) == (v) && permutation_v[(i)] <= permutation_v[(j)])) |
#define | SORT_TYPE_CMP_EQ(u, v, i, j) ((u) == (v) && permutation_v[(i)] == permutation_v[(j)]) |
#define | XT_SORT_EXTRA_ARGS_DECL , int *restrict permutation |
#define | XT_SORT_EXTRA_ARGS_PASS , permutation |
#define | XT_SORT_EXTRA_ARGS_INNER_DECL , int *restrict permutation_v, int *restrict permutation_w |
#define | XT_SORT_EXTRA_ARGS_INNER_PASS(a, b) |
#define | XT_SORT_EXTRA_ALLOC_SIZE (sizeof(*permutation) * (n+1)) |
#define | XT_SORT_EXTRA_ALLOC_DECL |
#define | XT_SORT_EXTRA_ARGS_SWAP(i, j) |
#define | XT_SORT_ASSIGN(a, p, b, q) |
#define | SORT_TYPE int |
#define | SORT_TYPE_SUFFIX int_permutation |
#define | SORT_TYPE_CMP_LT(u, v, i, j) ((u) < (v) || (u == v && permutation_v[(i)] < permutation_v[(j)])) |
#define | SORT_TYPE_CMP_LE(u, v, i, j) ((u) < (v) || (u == v && permutation_v[(i)] <= permutation_v[(j)])) |
#define | SORT_TYPE_CMP_EQ(u, v, i, j) ((u) == (v) && permutation_v[(i)] == permutation_v[(j)]) |
#define | XT_SORT_EXTRA_ARGS_DECL , int *restrict permutation |
#define | XT_SORT_EXTRA_ARGS_PASS , permutation |
#define | XT_SORT_EXTRA_ARGS_INNER_DECL , int *restrict permutation_v, int *restrict permutation_w |
#define | XT_SORT_EXTRA_ARGS_INNER_PASS(a, b) |
#define | XT_SORT_EXTRA_ALLOC_SIZE (sizeof(*permutation) * (n+1)) |
#define | XT_SORT_EXTRA_ALLOC_DECL |
#define | XT_SORT_EXTRA_ARGS_SWAP(i, j) |
#define | XT_SORT_ASSIGN(a, p, b, q) |
Functions | |
void | xt_mergesort_xt_int_permutation (Xt_int *a, size_t n, int *restrict permutation) |
void | xt_mergesort_index (Xt_int *restrict v_idx, int n, int *restrict v_pos, int reset_pos) |
static void * | roundPtr (void *p, size_t mult) |
Definition in file mergesort.c.
#define SORT_TYPE idxpos_type |
Definition at line 57 of file mergesort.c.
#define SORT_TYPE int |
Definition at line 57 of file mergesort.c.
#define SORT_TYPE Xt_int |
Definition at line 57 of file mergesort.c.
#define SORT_TYPE Xt_int |
Definition at line 57 of file mergesort.c.
#define SORT_TYPE int |
Definition at line 57 of file mergesort.c.
#define SORT_TYPE_CMP_EQ | ( | a, | |
b, | |||
... ) ((a).idx == (b).idx && (a).pos == (b).pos) |
Definition at line 61 of file mergesort.c.
#define SORT_TYPE_CMP_EQ | ( | a, | |
b, | |||
... ) ((a) == (b)) |
Definition at line 61 of file mergesort.c.
#define SORT_TYPE_CMP_EQ | ( | a, | |
b, | |||
... ) ((a) == (b)) |
Definition at line 61 of file mergesort.c.
#define SORT_TYPE_CMP_EQ | ( | u, | |
v, | |||
i, | |||
j ) ((u) == (v) && permutation_v[(i)] == permutation_v[(j)]) |
Definition at line 61 of file mergesort.c.
#define SORT_TYPE_CMP_EQ | ( | u, | |
v, | |||
i, | |||
j ) ((u) == (v) && permutation_v[(i)] == permutation_v[(j)]) |
Definition at line 61 of file mergesort.c.
#define SORT_TYPE_CMP_LE | ( | a, | |
b, | |||
... ) ((a).idx < (b).idx || ((a).idx == (b).idx && (a).pos <= (b).pos)) |
Definition at line 60 of file mergesort.c.
#define SORT_TYPE_CMP_LE | ( | a, | |
b, | |||
... ) ((a) <= (b)) |
Definition at line 60 of file mergesort.c.
#define SORT_TYPE_CMP_LE | ( | a, | |
b, | |||
... ) ((a) <= (b)) |
Definition at line 60 of file mergesort.c.
#define SORT_TYPE_CMP_LE | ( | u, | |
v, | |||
i, | |||
j ) ((u) < (v) || ((u) == (v) && permutation_v[(i)] <= permutation_v[(j)])) |
Definition at line 60 of file mergesort.c.
#define SORT_TYPE_CMP_LE | ( | u, | |
v, | |||
i, | |||
j ) ((u) < (v) || (u == v && permutation_v[(i)] <= permutation_v[(j)])) |
Definition at line 60 of file mergesort.c.
#define SORT_TYPE_CMP_LT | ( | a, | |
b, | |||
... ) ((a).idx < (b).idx || ((a).idx == (b).idx && (a).pos < (b).pos)) |
Definition at line 59 of file mergesort.c.
#define SORT_TYPE_CMP_LT | ( | a, | |
b, | |||
... ) ((a) < (b)) |
Definition at line 59 of file mergesort.c.
#define SORT_TYPE_CMP_LT | ( | a, | |
b, | |||
... ) ((a) < (b)) |
Definition at line 59 of file mergesort.c.
#define SORT_TYPE_CMP_LT | ( | u, | |
v, | |||
i, | |||
j ) ((u) < (v) || ((u) == (v) && permutation_v[(i)] < permutation_v[(j)])) |
Definition at line 59 of file mergesort.c.
#define SORT_TYPE_CMP_LT | ( | u, | |
v, | |||
i, | |||
j ) ((u) < (v) || (u == v && permutation_v[(i)] < permutation_v[(j)])) |
Definition at line 59 of file mergesort.c.
#define SORT_TYPE_SUFFIX idxpos |
Definition at line 58 of file mergesort.c.
#define SORT_TYPE_SUFFIX int |
Definition at line 58 of file mergesort.c.
#define SORT_TYPE_SUFFIX xt_int |
Definition at line 58 of file mergesort.c.
#define SORT_TYPE_SUFFIX xt_int_permutation |
Definition at line 58 of file mergesort.c.
#define SORT_TYPE_SUFFIX int_permutation |
Definition at line 58 of file mergesort.c.
#define XT_SORT_ASSIGN | ( | a, | |
p, | |||
b, | |||
q ) |
Definition at line 143 of file mergesort.c.
#define XT_SORT_ASSIGN | ( | a, | |
p, | |||
b, | |||
q ) |
Definition at line 143 of file mergesort.c.
#define XT_SORT_EXTRA_ALLOC_DECL |
Definition at line 134 of file mergesort.c.
#define XT_SORT_EXTRA_ALLOC_DECL |
Definition at line 134 of file mergesort.c.
#define XT_SORT_EXTRA_ALLOC_SIZE (sizeof(*permutation) * (n+1)) |
Definition at line 126 of file mergesort.c.
#define XT_SORT_EXTRA_ALLOC_SIZE (sizeof(*permutation) * (n+1)) |
Definition at line 126 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_DECL , int *restrict permutation |
Definition at line 121 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_DECL , int *restrict permutation |
Definition at line 121 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_INNER_DECL , int *restrict permutation_v, int *restrict permutation_w |
Definition at line 123 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_INNER_DECL , int *restrict permutation_v, int *restrict permutation_w |
Definition at line 123 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_INNER_PASS | ( | a, | |
b ) |
Definition at line 124 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_INNER_PASS | ( | a, | |
b ) |
Definition at line 124 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_PASS , permutation |
Definition at line 122 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_PASS , permutation |
Definition at line 122 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_SWAP | ( | i, | |
j ) |
Definition at line 136 of file mergesort.c.
#define XT_SORT_EXTRA_ARGS_SWAP | ( | i, | |
j ) |
Definition at line 136 of file mergesort.c.
|
inlinestatic |
Definition at line 128 of file mergesort.c.
void xt_mergesort_index | ( | Xt_int *restrict | v_idx, |
int | n, | ||
int *restrict | v_pos, | ||
int | reset_pos ) |
Definition at line 69 of file mergesort.c.
void xt_mergesort_xt_int_permutation | ( | Xt_int * | a, |
size_t | n, | ||
int *restrict | permutation ) |