00001
00012 #include "metislib.h"
00013
00014
00015
00017
00018 GK_MKBLAS(i, idx_t, idx_t)
00019 GK_MKBLAS(r, real_t, real_t)
00020
00021
00023
00024 GK_MKALLOC(i, idx_t)
00025 GK_MKALLOC(r, real_t)
00026 GK_MKALLOC(ikv, ikv_t)
00027 GK_MKALLOC(rkv, rkv_t)
00028
00029
00031
00032 #define key_gt(a, b) ((a) > (b))
00033 GK_MKPQUEUE(ipq, ipq_t, ikv_t, idx_t, idx_t, ikvmalloc, IDX_MAX, key_gt)
00034 GK_MKPQUEUE(rpq, rpq_t, rkv_t, real_t, idx_t, rkvmalloc, REAL_MAX, key_gt)
00035 #undef key_gt
00036
00037
00039
00040 GK_MKRANDOM(i, idx_t, idx_t)
00041
00042
00044
00045 GK_MKARRAY2CSR(i, idx_t)
00046
00047
00049
00050 void isorti(size_t n, idx_t *base)
00051 {
00052 #define i_lt(a, b) ((*a) < (*b))
00053 GK_MKQSORT(idx_t, base, n, i_lt);
00054 #undef i_lt
00055 }
00056
00057 void isortd(size_t n, idx_t *base)
00058 {
00059 #define i_gt(a, b) ((*a) > (*b))
00060 GK_MKQSORT(idx_t, base, n, i_gt);
00061 #undef i_gt
00062 }
00063
00064 void rsorti(size_t n, real_t *base)
00065 {
00066 #define r_lt(a, b) ((*a) < (*b))
00067 GK_MKQSORT(real_t, base, n, r_lt);
00068 #undef r_lt
00069 }
00070
00071 void rsortd(size_t n, real_t *base)
00072 {
00073 #define r_gt(a, b) ((*a) > (*b))
00074 GK_MKQSORT(real_t, base, n, r_gt);
00075 #undef r_gt
00076 }
00077
00078 void ikvsorti(size_t n, ikv_t *base)
00079 {
00080 #define ikey_lt(a, b) ((a)->key < (b)->key)
00081 GK_MKQSORT(ikv_t, base, n, ikey_lt);
00082 #undef ikey_lt
00083 }
00084
00085
00086 void ikvsortii(size_t n, ikv_t *base)
00087 {
00088 #define ikeyval_lt(a, b) ((a)->key < (b)->key || ((a)->key == (b)->key && (a)->val < (b)->val))
00089 GK_MKQSORT(ikv_t, base, n, ikeyval_lt);
00090 #undef ikeyval_lt
00091 }
00092
00093 void ikvsortd(size_t n, ikv_t *base)
00094 {
00095 #define ikey_gt(a, b) ((a)->key > (b)->key)
00096 GK_MKQSORT(ikv_t, base, n, ikey_gt);
00097 #undef ikey_gt
00098 }
00099
00100 void rkvsorti(size_t n, rkv_t *base)
00101 {
00102 #define rkey_lt(a, b) ((a)->key < (b)->key)
00103 GK_MKQSORT(rkv_t, base, n, rkey_lt);
00104 #undef rkey_lt
00105 }
00106
00107 void rkvsortd(size_t n, rkv_t *base)
00108 {
00109 #define rkey_gt(a, b) ((a)->key > (b)->key)
00110 GK_MKQSORT(rkv_t, base, n, rkey_gt);
00111 #undef rkey_gt
00112 }
00113
00114 void uvwsorti(size_t n, uvw_t *base)
00115 {
00116 #define uvwkey_lt(a, b) ((a)->u < (b)->u || ((a)->u == (b)->u && (a)->v < (b)->v))
00117 GK_MKQSORT(uvw_t, base, n, uvwkey_lt);
00118 #undef uvwkey_lt
00119 }
00120