From: Matthew Fernandez Date: Wed, 23 Jun 2021 01:13:42 +0000 (-0700) Subject: remove dynamic allocation capability of power_method for eigs X-Git-Tag: 2.48.0~38^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9b3ce7678cd65d2d408a5c6b5c1a0dff8e37813;p=graphviz remove dynamic allocation capability of power_method for eigs The behavior to dynamically allocate memory for eigs was not documented (unlike the parameter eigv). However, the only caller was not using this anyway. This commit removes it to ease ongoing maintenance. --- diff --git a/cmd/gvmap/country_graph_coloring.c b/cmd/gvmap/country_graph_coloring.c index c7f763bb0..fd314f759 100644 --- a/cmd/gvmap/country_graph_coloring.c +++ b/cmd/gvmap/country_graph_coloring.c @@ -136,9 +136,8 @@ static void country_graph_coloring_internal(int seed, SparseMatrix A, int **p, r /* largest eigen vector */ { - real eig, *eigv; - eigv = &eig; - power_method(L, L->n, 1, seed, &v, &eigv); + real eig; + power_method(L, L->n, 1, seed, &v, &eig); } vector_ordering(n, v, p); diff --git a/cmd/gvmap/power.c b/cmd/gvmap/power.c index 230afdfd6..76be11089 100644 --- a/cmd/gvmap/power.c +++ b/cmd/gvmap/power.c @@ -18,7 +18,7 @@ static const int maxit = 100; static const real tolerance = 0.00001; void power_method(void *A, int n, int K, int random_seed, - real **eigv, real **eigs){ + real **eigv, real *eigs){ /* find k-largest eigenvectors of a matrix A. Result in eigv. if eigv == NULL; memory will be allocated. This converges only if the largest eigenvectors/values are real (e.g., if A is symmetric) and the @@ -64,7 +64,6 @@ void power_method(void *A, int n, int K, int random_seed, assert(K <= n && K > 0); if (!(*eigv)) *eigv = MALLOC(sizeof(real)*n*K); - if (!(*eigs)) *eigs = MALLOC(sizeof(real)*K); v = MALLOC(sizeof(real*)*K); vv = MALLOC(sizeof(real)*n); @@ -96,7 +95,7 @@ void power_method(void *A, int n, int K, int random_seed, unorm = vector_product(n, vv, vv);/* ||u||^2 */ unorm = sqrt(unorm); - (*eigs)[k] = unorm; + eigs[k] = unorm; if (unorm > 0) { unorm = 1/unorm; } else { diff --git a/cmd/gvmap/power.h b/cmd/gvmap/power.h index c95794d56..c2e66cf4e 100644 --- a/cmd/gvmap/power.h +++ b/cmd/gvmap/power.h @@ -14,6 +14,6 @@ #include void power_method(void *A, int n, int K, int random_seed, - real **eigv, real **eigs); + real **eigv, real *eigs); #endif