From: Matthew Fernandez Date: Thu, 1 Jul 2021 02:17:52 +0000 (-0700) Subject: remove support for transposed matrix v in SparseMatrix_multiply_dense X-Git-Tag: 2.48.0~11^2~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=06c165c0d3e82b11f6f8b81230c9c10b4ebfbf2b;p=graphviz remove support for transposed matrix v in SparseMatrix_multiply_dense The only use of this function is with not-transposed matrices. --- diff --git a/lib/sfdpgen/post_process.c b/lib/sfdpgen/post_process.c index 44c9ab962..c82644212 100644 --- a/lib/sfdpgen/post_process.c +++ b/lib/sfdpgen/post_process.c @@ -659,7 +659,7 @@ real StressMajorizationSmoother_smooth(StressMajorizationSmoother sm, int dim, r } /* solve (Lw+lambda*I) x = Lwdd y + lambda x0 */ - SparseMatrix_multiply_dense(Lwdd, x, FALSE, &y, FALSE, dim); + SparseMatrix_multiply_dense(Lwdd, x, &y, FALSE, dim); } else { for (i = 0; i < m; i++){ for (j = 0; j < dim; j++){ diff --git a/lib/sfdpgen/spring_electrical.c b/lib/sfdpgen/spring_electrical.c index 7989a5948..c9de0225e 100644 --- a/lib/sfdpgen/spring_electrical.c +++ b/lib/sfdpgen/spring_electrical.c @@ -1685,7 +1685,7 @@ void interpolate_coord(int dim, SparseMatrix A, real *x){ } static void prolongate(int dim, SparseMatrix A, SparseMatrix P, SparseMatrix R, real *x, real *y, int coarsen_scheme_used, real delta){ int nc, *ia, *ja, i, j, k; - SparseMatrix_multiply_dense(P, x, FALSE, &y, FALSE, dim); + SparseMatrix_multiply_dense(P, x, &y, FALSE, dim); /* xu yao rao dong */ if (coarsen_scheme_used > EDGE_BASED_STA && coarsen_scheme_used < EDGE_BASED_STO){ diff --git a/lib/sparse/SparseMatrix.c b/lib/sparse/SparseMatrix.c index 3e3f2c397..0bf5cf316 100644 --- a/lib/sparse/SparseMatrix.c +++ b/lib/sparse/SparseMatrix.c @@ -1091,22 +1091,16 @@ static void SparseMatrix_multiply_dense2(SparseMatrix A, real *v, real **res, in } -void SparseMatrix_multiply_dense(SparseMatrix A, real *v, int vTransposed, real **res, int res_transposed, int dim){ - /* depend on value of {vTransposed}, assume res_transposed == FALSE - {FALSE}: A * V, with A dimension m x n, with V of dimension n x dim. v[i*dim+j] gives V[i,j]. Result of dimension m x dim - {TRUE}: A*V^T, with A dimension m x n, V dimension dim x n, v[i*n+j] gives V[i,j]. Result of dimension m x dim +void SparseMatrix_multiply_dense(SparseMatrix A, real *v, real **res, int res_transposed, int dim){ + /* assume res_transposed == FALSE + A * V, with A dimension m x n, with V of dimension n x dim. v[i*dim+j] gives V[i,j]. Result of dimension m x dim furthermore, if res_transpose d== TRUE, then the result is transposed. Hence if res_transposed == TRUE - {FALSE}: V^T A^T, with A dimension m x n, with V of dimension n x dim. v[i*dim+j] gives V[i,j]. Result of dimension dim x dim - {TRUE}: V*A^T, with A dimension m x n, V dimension dim x n, v[i*n+j] gives V[i,j]. Result of dimension dim x m + V^T A^T, with A dimension m x n, with V of dimension n x dim. v[i*dim+j] gives V[i,j]. Result of dimension dim x dim */ - if (!vTransposed) { - SparseMatrix_multiply_dense1(A, v, res, dim, 0, res_transposed); - } else { - SparseMatrix_multiply_dense2(A, v, res, dim, 0, res_transposed); - } + SparseMatrix_multiply_dense1(A, v, res, dim, 0, res_transposed); } void SparseMatrix_multiply_vector(SparseMatrix A, real *v, real **res, int transposed){ diff --git a/lib/sparse/SparseMatrix.h b/lib/sparse/SparseMatrix.h index 32c95c981..fa867a7aa 100644 --- a/lib/sparse/SparseMatrix.h +++ b/lib/sparse/SparseMatrix.h @@ -73,7 +73,7 @@ SparseMatrix SparseMatrix_remove_diagonal(SparseMatrix A); SparseMatrix SparseMatrix_remove_upper(SparseMatrix A);/* remove diag and upper diag */ SparseMatrix SparseMatrix_divide_row_by_degree(SparseMatrix A); SparseMatrix SparseMatrix_get_real_adjacency_matrix_symmetrized(SparseMatrix A); /* symmetric, all entries to 1, diaginal removed */ -void SparseMatrix_multiply_dense(SparseMatrix A, real *v, int vTransposed, real **res, int res_transpose, int dim); +void SparseMatrix_multiply_dense(SparseMatrix A, real *v, real **res, int res_transpose, int dim); SparseMatrix SparseMatrix_apply_fun(SparseMatrix A, double (*fun)(double x));/* for real only! */ SparseMatrix SparseMatrix_copy(SparseMatrix A); int SparseMatrix_has_diagonal(SparseMatrix A);