23 for (
int j = ia[i]; j < ia[i+1]; j++){
24 if (ja[j] == i)
continue;
25 norm = fmin(
norm, abs(p[i] - p[ja[j]]));
30static void get_12_norm(
int n,
const int *ia,
const int *ja,
int *p,
36 for (
int i = 0; i < n; i++){
38 for (
int j = ia[i]; j < ia[i+1]; j++){
39 if (ja[j] == i)
continue;
40 norm[0] = fmin(
norm[0], abs(p[i] - p[ja[j]]));
41 tmp = fmin(tmp, abs(p[i] - p[ja[j]]));
49 int cnt = 1, n =
A->m, *ia =
A->ia, *ja =
A->ja;
51 clock_t start = clock();
55 fprintf(stderr,
"saving timing vs antiband data to timing_greedy\n");
56 fp = fopen(
"timing_greedy",
"w");
59 for (
bool improved =
true; improved; ) {
61 for (
int i = 0; i < n; i++) {
63 for (
int j = 0; j < n; j++) {
72 if (fmin(norm11, norm22) > fmin(norm1[0], norm2)){
82 fprintf(fp,
"%f %f %f\n", ((
double)(clock() - start)) / CLOCKS_PER_SEC,
88 fprintf(stderr,
"[%d] aband = %f, aband_avg = %f\n",
cnt++, norm1[0], norm1[1]);
89 fprintf(fp,
"%f %f %f\n", ((
double)(clock() - start)) / CLOCKS_PER_SEC,
101 clock_t start = clock();
102 assert(
A->m ==
A->n);
104 const int *
const ia = A2->
ia;
105 const int *
const ja = A2->
ja;
109 for (
int i = 0; i < n; i++){
111 for (
int j = ia[i]; j < ia[i+1]; j++){
112 const int jj = ja[j];
131 fprintf(stderr,
"cpu time for spectral ordering (before greedy) = %f\n",
132 ((
double)(clock() - start)) / CLOCKS_PER_SEC);
134 clock_t start2 = clock();
138 fprintf(stderr,
"cpu time for greedy refinement = %f\n",
139 ((
double)(clock() - start2)) / CLOCKS_PER_SEC);
141 fprintf(stderr,
"cpu time for spectral + greedy = %f\n",
142 ((
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, size_t 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)