}
-
-
-SparseMatrix SparseMatrix_scaled_by_vector(SparseMatrix A, real *v, int apply_to_row){
- /* A SCALED BY VECOTR V IN ROW/COLUMN. Real only for now. */
- int i, j, *ia, *ja, m;
- real *a;
- assert(A->format == FORMAT_CSR);
- assert(A->type == MATRIX_TYPE_REAL);
-
- a = (real*) A->a;
- ia = A->ia;
- ja = A->ja;
- m = A->m;
-
-
- if (!apply_to_row){
- for (i = 0; i < m; i++){
- for (j = ia[i]; j < ia[i+1]; j++){
- a[j] *= v[ja[j]];
- }
- }
- } else {
- for (i = 0; i < m; i++){
- if (v[i] != 0){
- for (j = ia[i]; j < ia[i+1]; j++){
- a[j] *= v[i];
- }
- }
- }
- }
- return A;
-
-}
-
SparseMatrix SparseMatrix_multiply(SparseMatrix A, SparseMatrix B){
int m;
SparseMatrix C = NULL;
SparseMatrix SparseMatrix_apply_fun(SparseMatrix A, double (*fun)(double x));/* for real only! */
SparseMatrix SparseMatrix_copy(SparseMatrix A);
int SparseMatrix_has_diagonal(SparseMatrix A);
-SparseMatrix SparseMatrix_scaled_by_vector(SparseMatrix A, real *v, int apply_to_row);
SparseMatrix SparseMatrix_make_undirected(SparseMatrix A);/* make it strictly low diag only, and set flag to undirected */
real SparseMatrix_pseudo_diameter_weighted(SparseMatrix A0, int root, int aggressive, int *end1, int *end2, int *connectedQ); /* assume real distances, unsymmetric matrix ill be symmetrized */
real SparseMatrix_pseudo_diameter_unweighted(SparseMatrix A0, int root, int aggressive, int *end1, int *end2, int *connectedQ); /* assume unit edge length, unsymmetric matrix ill be symmetrized */