From 17537151c3a71a6a76691ca04341940d6e18939d Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sun, 16 Jan 2022 11:42:06 -0800 Subject: [PATCH] SparseMatrix_is_symmetric: take a C99 bool instead of an int --- cmd/gvmap/country_graph_coloring.c | 2 +- lib/mingle/agglomerative_bundling.cpp | 4 ++-- lib/neatogen/adjust.c | 2 +- lib/neatogen/overlap.c | 5 +++-- lib/sfdpgen/Multilevel.c | 15 ++++++++------- lib/sfdpgen/post_process.c | 11 ++++++----- lib/sfdpgen/spring_electrical.c | 4 ++-- lib/sfdpgen/stress_model.c | 3 ++- lib/sfdpgen/uniform_stress.c | 5 +++-- lib/sparse/SparseMatrix.c | 19 ++++++++++--------- lib/sparse/SparseMatrix.h | 3 ++- lib/sparse/clustering.c | 6 +++--- lib/sparse/mq.c | 7 ++++--- 13 files changed, 47 insertions(+), 39 deletions(-) diff --git a/cmd/gvmap/country_graph_coloring.c b/cmd/gvmap/country_graph_coloring.c index cf7ebb928..a01579abf 100644 --- a/cmd/gvmap/country_graph_coloring.c +++ b/cmd/gvmap/country_graph_coloring.c @@ -64,7 +64,7 @@ void improve_antibandwidth_by_swapping(SparseMatrix A, int *p){ fprintf(stderr,"saving timing vs antiband data to timing_greedy\n"); fp = fopen("timing_greedy","w"); } - assert(SparseMatrix_is_symmetric(A, TRUE)); + assert(SparseMatrix_is_symmetric(A, true)); while (improved){ improved = false; for (i = 0; i < n; i++){ diff --git a/lib/mingle/agglomerative_bundling.cpp b/lib/mingle/agglomerative_bundling.cpp index 7912a6455..0bea555be 100644 --- a/lib/mingle/agglomerative_bundling.cpp +++ b/lib/mingle/agglomerative_bundling.cpp @@ -33,7 +33,7 @@ static Agglomerative_Ink_Bundling Agglomerative_Ink_Bundling_init(SparseMatrix A Agglomerative_Ink_Bundling grid; int n = A->n, i; - assert(SparseMatrix_is_symmetric(A, TRUE)); + assert(SparseMatrix_is_symmetric(A, true)); if (!A) return NULL; assert(A->m == n); @@ -286,7 +286,7 @@ static Agglomerative_Ink_Bundling Agglomerative_Ink_Bundling_new(SparseMatrix A0 Agglomerative_Ink_Bundling grid; SparseMatrix A = A0; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ A = SparseMatrix_get_real_adjacency_matrix_symmetrized(A); } grid = Agglomerative_Ink_Bundling_init(A, edges, 0); diff --git a/lib/neatogen/adjust.c b/lib/neatogen/adjust.c index 3f172f1e3..18b822ba8 100644 --- a/lib/neatogen/adjust.c +++ b/lib/neatogen/adjust.c @@ -755,7 +755,7 @@ fdpAdjust (graph_t* g, adjust_data* am) } } - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL) { + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL) { A = SparseMatrix_get_real_adjacency_matrix_symmetrized(A); } else { A = SparseMatrix_remove_diagonal(A); diff --git a/lib/neatogen/overlap.c b/lib/neatogen/overlap.c index 7c35ed755..c5f33bc47 100644 --- a/lib/neatogen/overlap.c +++ b/lib/neatogen/overlap.c @@ -20,6 +20,7 @@ #include #include #include +#include #include static void ideal_distance_avoid_overlap(int dim, SparseMatrix A, double *x, double *width, double *ideal_distance, double *tmax, double *tmin){ @@ -35,7 +36,7 @@ static void ideal_distance_avoid_overlap(int dim, SparseMatrix A, double *x, dou *tmax = 0; *tmin = 1.e10; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); for (i = 0; i < A->m; i++){ for (j = ia[i]; j < ia[i+1]; j++){ jj = ja[j]; @@ -371,7 +372,7 @@ OverlapSmoother OverlapSmoother_new(SparseMatrix A, int m, SparseMatrix B; double *lambda, *d, *w, diag_d, diag_w, dist; - assert((!A) || SparseMatrix_is_symmetric(A, FALSE)); + assert((!A) || SparseMatrix_is_symmetric(A, false)); sm = GNEW(struct OverlapSmoother_struct); sm->scheme = SM_SCHEME_NORMAL; diff --git a/lib/sfdpgen/Multilevel.c b/lib/sfdpgen/Multilevel.c index e54cfdf4f..dafa8cfe3 100644 --- a/lib/sfdpgen/Multilevel.c +++ b/lib/sfdpgen/Multilevel.c @@ -15,6 +15,7 @@ #include #include #include +#include Multilevel_control Multilevel_control_new(int scheme, int mode){ Multilevel_control ctrl; @@ -258,7 +259,7 @@ static void maximal_independent_edge_set_heavest_edge_pernode(SparseMatrix A, in for (i = 0; i < m; i++) (*matching)[i] = i; *nmatch = n; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); assert(A->type == MATRIX_TYPE_REAL); a = (double*) A->a; @@ -344,7 +345,7 @@ static void maximal_independent_edge_set_heavest_edge_pernode_leaves_first(Spars for (i = 0; i < m; i++) matched[i] = i; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); assert(A->type == MATRIX_TYPE_REAL); *ncluster = 0; @@ -521,7 +522,7 @@ static void maximal_independent_edge_set_heavest_edge_pernode_supernodes_first(S for (i = 0; i < m; i++) matched[i] = i; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); assert(A->type == MATRIX_TYPE_REAL); SparseMatrix_decompose_to_supervariables(A, &nsuper, &super, &superp); @@ -666,7 +667,7 @@ static void maximal_independent_edge_set_heavest_cluster_pernode_leaves_first(Sp for (i = 0; i < m; i++) matched[i] = i; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); assert(A->type == MATRIX_TYPE_REAL); *ncluster = 0; @@ -756,7 +757,7 @@ static void maximal_independent_edge_set_heavest_edge_pernode_scaled(SparseMatri for (i = 0; i < m; i++) (*matching)[i] = i; *nmatch = n; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); assert(A->type == MATRIX_TYPE_REAL); a = (double*) A->a; @@ -1183,10 +1184,10 @@ Multilevel Multilevel_new(SparseMatrix A0, SparseMatrix D0, double *node_weights Multilevel grid; SparseMatrix A = A0, D = D0; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ A = SparseMatrix_get_real_adjacency_matrix_symmetrized(A); } - if (D && (!SparseMatrix_is_symmetric(D, FALSE) || D->type != MATRIX_TYPE_REAL)){ + if (D && (!SparseMatrix_is_symmetric(D, false) || D->type != MATRIX_TYPE_REAL)){ D = SparseMatrix_symmetrize_nodiag(D); } grid = Multilevel_init(A, D, node_weights); diff --git a/lib/sfdpgen/post_process.c b/lib/sfdpgen/post_process.c index 557783b86..be2777fd8 100644 --- a/lib/sfdpgen/post_process.c +++ b/lib/sfdpgen/post_process.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,7 @@ static SparseMatrix ideal_distance_matrix(SparseMatrix A, int dim, double *x){ int *mask = NULL; double len, di, sum, sumd; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); D = SparseMatrix_copy(A); ia = D->ia; @@ -110,7 +111,7 @@ StressMajorizationSmoother StressMajorizationSmoother2_new(SparseMatrix A, int d double *avg_dist, diag_d, diag_w, dist, s = 0, stop = 0, sbot = 0; SparseMatrix ID; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); ID = ideal_distance_matrix(A, dim, x); @@ -302,7 +303,7 @@ StressMajorizationSmoother SparseStressMajorizationSmoother_new(SparseMatrix A, double diag_d, diag_w, *a, dist, s = 0, stop = 0, sbot = 0; double xdot = 0; - assert(SparseMatrix_is_symmetric(A, FALSE) && A->type == MATRIX_TYPE_REAL); + assert(SparseMatrix_is_symmetric(A, false) && A->type == MATRIX_TYPE_REAL); /* if x is all zero, make it random */ for (i = 0; i < m*dim; i++) xdot += x[i]*x[i]; @@ -761,7 +762,7 @@ TriangleSmoother TriangleSmoother_new(SparseMatrix A, int dim, double lambda0, d double *avg_dist, *lambda, *d, *w, diag_d, diag_w, dist; double s = 0, stop = 0, sbot = 0; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); avg_dist = N_GNEW(m,double); @@ -876,7 +877,7 @@ SpringSmoother SpringSmoother_new(SparseMatrix A, int dim, spring_electrical_con double *avg_dist; SparseMatrix ID = NULL; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); ID = ideal_distance_matrix(A, dim, x); dd = (double*) ID->a; diff --git a/lib/sfdpgen/spring_electrical.c b/lib/sfdpgen/spring_electrical.c index 14d6a56aa..d1c1dda6e 100644 --- a/lib/sfdpgen/spring_electrical.c +++ b/lib/sfdpgen/spring_electrical.c @@ -161,7 +161,7 @@ int oned_optimizer_get(oned_optimizer opt){ double average_edge_length(SparseMatrix A, int dim, double *coord){ double dist = 0, d; int *ia = A->ia, *ja = A->ja, i, j, k; - assert(SparseMatrix_is_symmetric(A, TRUE)); + assert(SparseMatrix_is_symmetric(A, true)); if (ia[A->m] == 0) return 1; for (i = 0; i < A->m; i++){ @@ -1945,7 +1945,7 @@ static void multilevel_spring_electrical_embedding_core(int dim, SparseMatrix A0 n = A->n; if (n <= 0 || dim <= 0) return; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ if (ctrl->method == METHOD_SPRING_MAXENT){ A = SparseMatrix_symmetrize_nodiag(A); assert(D0); diff --git a/lib/sfdpgen/stress_model.c b/lib/sfdpgen/stress_model.c index 93fb50ba8..e1cfde98f 100644 --- a/lib/sfdpgen/stress_model.c +++ b/lib/sfdpgen/stress_model.c @@ -3,6 +3,7 @@ #include #include #include +#include static void stress_model_core(int dim, SparseMatrix B, double **x, int edge_len_weighted, int maxit_sm, double tol, int *flag){ int m; @@ -11,7 +12,7 @@ static void stress_model_core(int dim, SparseMatrix B, double **x, int edge_len_ int i; SparseMatrix A = B; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ if (A->type == MATRIX_TYPE_REAL){ A = SparseMatrix_symmetrize(A, FALSE); A = SparseMatrix_remove_diagonal(A); diff --git a/lib/sfdpgen/uniform_stress.c b/lib/sfdpgen/uniform_stress.c index 2bb70c653..f06a091ce 100644 --- a/lib/sfdpgen/uniform_stress.c +++ b/lib/sfdpgen/uniform_stress.c @@ -16,6 +16,7 @@ #include #include #include +#include /* uniform stress solves the model: @@ -32,7 +33,7 @@ UniformStressSmoother UniformStressSmoother_new(int dim, SparseMatrix A, double double *d, *w, *a = (double*) A->a; double diag_d, diag_w, dist, epsilon = 0.01; - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); sm = MALLOC(sizeof(struct StressMajorizationSmoother_struct)); sm->data = NULL; @@ -156,7 +157,7 @@ void uniform_stress(int dim, SparseMatrix A, double *x, int *flag){ } B = get_distance_matrix(A, scaling); - assert(SparseMatrix_is_symmetric(B, FALSE)); + assert(SparseMatrix_is_symmetric(B, false)); sm = UniformStressSmoother_new(dim, B, x, 1000000*lambda0, M, flag); UniformStressSmoother_smooth(sm, dim, x, maxit); diff --git a/lib/sparse/SparseMatrix.c b/lib/sparse/SparseMatrix.c index 8315cc780..1625f40be 100644 --- a/lib/sparse/SparseMatrix.c +++ b/lib/sparse/SparseMatrix.c @@ -19,6 +19,7 @@ #include #include #include +#include static size_t size_of_matrix_type(int type){ size_t size = 0; @@ -145,7 +146,7 @@ SparseMatrix SparseMatrix_transpose(SparseMatrix A){ SparseMatrix SparseMatrix_symmetrize(SparseMatrix A, int pattern_symmetric_only){ SparseMatrix B; - if (SparseMatrix_is_symmetric(A, pattern_symmetric_only)) return SparseMatrix_copy(A); + if (SparseMatrix_is_symmetric(A, pattern_symmetric_only != 0)) return SparseMatrix_copy(A); B = SparseMatrix_transpose(A); if (!B) return NULL; A = SparseMatrix_add(A, B); @@ -157,7 +158,7 @@ SparseMatrix SparseMatrix_symmetrize(SparseMatrix A, int pattern_symmetric_only) SparseMatrix SparseMatrix_symmetrize_nodiag(SparseMatrix A){ SparseMatrix B; - if (SparseMatrix_is_symmetric(A, FALSE)) { + if (SparseMatrix_is_symmetric(A, false)) { B = SparseMatrix_copy(A); return SparseMatrix_remove_diagonal(B); } @@ -170,7 +171,7 @@ SparseMatrix SparseMatrix_symmetrize_nodiag(SparseMatrix A){ return SparseMatrix_remove_diagonal(A); } -int SparseMatrix_is_symmetric(SparseMatrix A, int test_pattern_symmetry_only){ +int SparseMatrix_is_symmetric(SparseMatrix A, bool test_pattern_symmetry_only){ if (!A) return FALSE; /* assume no repeated entries! */ @@ -1982,7 +1983,7 @@ void SparseMatrix_weakly_connected_components(SparseMatrix A0, int *ncomp, int * int *levelset_ptr = NULL, *levelset = NULL, *mask = NULL, nlevel; int m = A->m, i, nn; - if (!SparseMatrix_is_symmetric(A, TRUE)){ + if (!SparseMatrix_is_symmetric(A, true)){ A = SparseMatrix_symmetrize(A, TRUE); } if (!(*comps_ptr)) *comps_ptr = MALLOC(sizeof(int)*((size_t)(m+1))); @@ -2053,7 +2054,7 @@ static int Dijkstra_internal(SparseMatrix A, int root, double *dist, int *nlist, Set to FINISHED after extracted as min from heap */ int found = 0; - assert(SparseMatrix_is_symmetric(A, TRUE)); + assert(SparseMatrix_is_symmetric(A, true)); assert(m == A->n); @@ -2299,10 +2300,10 @@ SparseMatrix SparseMatrix_to_square_matrix(SparseMatrix A, int bipartite_options if (A->m == A->n) return A; break; case BIPARTITE_PATTERN_UNSYM: - if (A->m == A->n && SparseMatrix_is_symmetric(A, TRUE)) return A; + if (A->m == A->n && SparseMatrix_is_symmetric(A, true)) return A; break; case BIPARTITE_UNSYM: - if (A->m == A->n && SparseMatrix_is_symmetric(A, FALSE)) return A; + if (A->m == A->n && SparseMatrix_is_symmetric(A, false)) return A; break; case BIPARTITE_ALWAYS: break; @@ -2524,7 +2525,7 @@ int SparseMatrix_distance_matrix(SparseMatrix D0, int weighted, double **dist0){ int flag = 0, i, j, k, nlevel; double dmax; - if (!SparseMatrix_is_symmetric(D, FALSE)){ + if (!SparseMatrix_is_symmetric(D, false)){ D = SparseMatrix_symmetrize(D, FALSE); } @@ -2578,7 +2579,7 @@ SparseMatrix SparseMatrix_distance_matrix_khops(int khops, SparseMatrix D0, int int flag = 0, i, j, k, itmp, nlevel; double dmax, dtmp; - if (!SparseMatrix_is_symmetric(D, FALSE)){ + if (!SparseMatrix_is_symmetric(D, false)){ D = SparseMatrix_symmetrize(D, FALSE); } diff --git a/lib/sparse/SparseMatrix.h b/lib/sparse/SparseMatrix.h index 2fbc1c6d4..e4544c02d 100644 --- a/lib/sparse/SparseMatrix.h +++ b/lib/sparse/SparseMatrix.h @@ -11,6 +11,7 @@ #pragma once #include +#include #include #ifdef __cplusplus @@ -68,7 +69,7 @@ SparseMatrix SparseMatrix_multiply3(SparseMatrix A, SparseMatrix B, SparseMatrix enum {SUM_REPEATED_NONE = 0, SUM_REPEATED_ALL, }; SparseMatrix SparseMatrix_sum_repeat_entries(SparseMatrix A, int what_to_sum); SparseMatrix SparseMatrix_coordinate_form_add_entries(SparseMatrix A, int nentries, int *irn, int *jcn, void *val); -int SparseMatrix_is_symmetric(SparseMatrix A, int test_pattern_symmetry_only); +int SparseMatrix_is_symmetric(SparseMatrix A, bool test_pattern_symmetry_only); SparseMatrix SparseMatrix_transpose(SparseMatrix A); SparseMatrix SparseMatrix_symmetrize(SparseMatrix A, int pattern_symmetric_only); SparseMatrix SparseMatrix_symmetrize_nodiag(SparseMatrix A); diff --git a/lib/sparse/clustering.c b/lib/sparse/clustering.c index b2323a967..d6dcd4ebb 100644 --- a/lib/sparse/clustering.c +++ b/lib/sparse/clustering.c @@ -12,7 +12,7 @@ #include #include #include - +#include static Multilevel_Modularity_Clustering Multilevel_Modularity_Clustering_init(SparseMatrix A, int level){ @@ -20,7 +20,7 @@ static Multilevel_Modularity_Clustering Multilevel_Modularity_Clustering_init(Sp int n = A->n, i, j; assert(A->type == MATRIX_TYPE_REAL); - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); if (!A) return NULL; assert(A->m == n); @@ -273,7 +273,7 @@ static Multilevel_Modularity_Clustering Multilevel_Modularity_Clustering_new(Spa Multilevel_Modularity_Clustering grid; SparseMatrix A = A0; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ A = SparseMatrix_get_real_adjacency_matrix_symmetrized(A); } grid = Multilevel_Modularity_Clustering_init(A, 0); diff --git a/lib/sparse/mq.c b/lib/sparse/mq.c index 59275f3b1..e58ffc3e4 100644 --- a/lib/sparse/mq.c +++ b/lib/sparse/mq.c @@ -60,6 +60,7 @@ #include #include #include +#include #include static double get_mq(SparseMatrix A, int *assignment, int *ncluster0, double *mq_in0, double *mq_out0, double **dout0){ @@ -72,7 +73,7 @@ static double get_mq(SparseMatrix A, int *assignment, int *ncluster0, double *mq */ int ncluster = 0; int n = A->m; - int test_pattern_symmetry_only = FALSE; + bool test_pattern_symmetry_only = false; int *counts, *ia = A->ia, *ja = A->ja, k, i, j, jj; double mq_in = 0, mq_out = 0, *a = NULL, Vi, Vj; int c; @@ -154,7 +155,7 @@ static Multilevel_MQ_Clustering Multilevel_MQ_Clustering_init(SparseMatrix A, in int *matching; assert(A->type == MATRIX_TYPE_REAL); - assert(SparseMatrix_is_symmetric(A, FALSE)); + assert(SparseMatrix_is_symmetric(A, false)); if (!A) return NULL; assert(A->m == n); @@ -521,7 +522,7 @@ static Multilevel_MQ_Clustering Multilevel_MQ_Clustering_new(SparseMatrix A0, in SparseMatrix A = A0; if (maxcluster <= 0) maxcluster = A->m; - if (!SparseMatrix_is_symmetric(A, FALSE) || A->type != MATRIX_TYPE_REAL){ + if (!SparseMatrix_is_symmetric(A, false) || A->type != MATRIX_TYPE_REAL){ A = SparseMatrix_get_real_adjacency_matrix_symmetrized(A); } grid = Multilevel_MQ_Clustering_init(A, 0); -- 2.40.0