21 for (
int j = ia[i]; j < ia[i+1]; j++){
22 if (ja[j] == i)
continue;
23 norm = fmin(
norm, abs(p[i] - p[ja[j]]));
28static void get_12_norm(
int n,
const int *ia,
const int *ja,
int *p,
34 for (
int i = 0; i < n; i++){
36 for (
int j = ia[i]; j < ia[i+1]; j++){
37 if (ja[j] == i)
continue;
38 norm[0] = fmin(
norm[0], abs(p[i] - p[ja[j]]));
39 tmp = fmin(tmp, abs(p[i] - p[ja[j]]));
47 int cnt = 1, n =
A->m, *ia =
A->ia, *ja =
A->ja;
49 clock_t start = clock();
53 fprintf(stderr,
"saving timing vs antiband data to timing_greedy\n");
54 fp = fopen(
"timing_greedy",
"w");
57 for (
bool improved =
true; improved; ) {
59 for (
int i = 0; i < n; i++) {
61 for (
int j = 0; j < n; j++) {
70 if (fmin(norm11, norm22) > fmin(norm1[0], norm2)){
80 fprintf(fp,
"%f %f %f\n", ((
double)(clock() - start)) / CLOCKS_PER_SEC,
86 fprintf(stderr,
"[%d] aband = %f, aband_avg = %f\n",
cnt++, norm1[0], norm1[1]);
87 fprintf(fp,
"%f %f %f\n", ((
double)(clock() - start)) / CLOCKS_PER_SEC,
99 clock_t start = clock();
100 assert(
A->m ==
A->n);
102 const int *
const ia = A2->
ia;
103 const int *
const ja = A2->
ja;
107 for (
int i = 0; i < n; i++){
109 for (
int j = ia[i]; j < ia[i+1]; j++){
110 const int jj = ja[j];
129 fprintf(stderr,
"cpu time for spectral ordering (before greedy) = %f\n",
130 ((
double)(clock() - start)) / CLOCKS_PER_SEC);
132 clock_t start2 = clock();
136 fprintf(stderr,
"cpu time for greedy refinement = %f\n",
137 ((
double)(clock() - start2)) / CLOCKS_PER_SEC);
139 fprintf(stderr,
"cpu time for spectral + greedy = %f\n",
140 ((
double)(clock() - start)) / CLOCKS_PER_SEC);
SparseMatrix SparseMatrix_from_coordinate_format(SparseMatrix A)
SparseMatrix SparseMatrix_symmetrize(SparseMatrix A, bool pattern_symmetric_only)
SparseMatrix SparseMatrix_coordinate_form_add_entry(SparseMatrix A, int irn, int jcn, const void *val)
bool SparseMatrix_is_symmetric(SparseMatrix A, bool test_pattern_symmetry_only)
void SparseMatrix_delete(SparseMatrix A)
SparseMatrix SparseMatrix_new(int m, int n, int nz, int type, int format)
void country_graph_coloring(int seed, SparseMatrix A, int **p)
void improve_antibandwidth_by_swapping(SparseMatrix A, int *p)
static double get_local_12_norm(int n, int i, const int *ia, const int *ja, const int *p)
static void get_12_norm(int n, const int *ia, const int *ja, int *p, double *norm)
static double norm(int n, const double *x)
void vector_ordering(int n, double *v, int **p)
static int cnt(Dict_t *d, Dtlink_t **set)
double * power_method(void *A, int n, int random_seed)