44 lines
985 B
C
44 lines
985 B
C
#include <math.h>
|
|
#include "sparse_matrix.h"
|
|
|
|
void init_vector(double *vector, int size, double value) {
|
|
for (int i = 0; i < size; ++i) {
|
|
vector[i] = value;
|
|
}
|
|
}
|
|
|
|
double diff_norm_vector(double *vector1, double *vector2, int size) {
|
|
double res = 0.0;
|
|
for (int i = 0; i < size; ++i) {
|
|
res += fabs(vector1[i] - vector2[i]);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
void generate_f(const SparseMatrix *matrix, double *res) {
|
|
int N = matrix->num_nodes;
|
|
init_vector(res, N, 0);
|
|
int num_arcs = matrix->num_arcs;
|
|
for (int i = 0; i < num_arcs; ++i) {
|
|
res[matrix->arcs[i].dest] = 1;
|
|
}
|
|
}
|
|
|
|
double vec_product(const double* v1, const double* v2, int N) {
|
|
double sum = 0.0;
|
|
for (int i = 0; i < N; i++) {
|
|
sum += v1[i] * v2[i];
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
void normalize_vector(double* v, int N) {
|
|
double sum = 0.0;
|
|
for (int i = 0; i < N; i++) {
|
|
sum += v[i];
|
|
}
|
|
for (int i = 0; i < N; i++) {
|
|
v[i] /= sum;
|
|
}
|
|
}
|