i'm trying to run the following program but i keep getting the message "badly placed ()'s" can u help?
#include "modularity_mat.h"
#include "../sparse_mlpl/sparse_matrix.h"
adj_matrix_arr* allocate_mem_for_matrix_arr (int y) {
/* Create the adj matrix and allocate memory */
adj_matrix_arr* A;
A = ((adj_matrix_arr*)malloc(sizeof(adj_matrix_arr)));
if (A == NULL) {
printf("Memory allocation for matrix failed");
return NULL;
}
/* Initialize values */
A->size = y;
A->values = ((elem*)calloc(y*y, sizeof(elem)));
if (A->values == NULL) {
printf("Memory allocation for matrix failed");
return NULL;
}
return A ;}
group_arr* allocate_mem_for_group_arr (int y) {
/* Create the group and allocate memory */
group_arr* g;
g = (malloc(sizeof(group_arr)));
if (g == NULL) {
printf("Memory allocation for group failed");
return NULL;}
/* Initialize values */
g->size = y;
g->values = ((int*)calloc(y, sizeof(int)));
if (g->values == NULL) {
printf("Memory allocation for group failed");
return NULL;}
return g ;}
adj_matrix_arr *get_matrix_from_file (char *f_name){
int y , i;
elem num;
adj_matrix_arr *A;
FILE *m_file;
/* Open file handlers */
m_file = fopen(f_name, "r");
if ( m_file == NULL ) {
printf ("file not found");
fclose(m_file);
return NULL;
}
/* Read data */
if ((fscanf(m_file, "%d", &y)) <= 0) {
printf("scan failed");
fclose(m_file);
return NULL;
}
A = allocate_mem_for_matrix_arr (y);
for (i=0; i < y*y; i++) {
if ((fscanf(m_file, "%lf", &num)) <= 0) {
fclose(m_file);
printf("Scan failed");
return NULL;
}
A->values = num;
}
fclose(m_file);
return A;
}
group_arr *get_group_from_file(char *f_name) {
FILE *g_file;
group_arr* g;
int num;
int n, i;
/* Open file handlers */
g_file = fopen(f_name, "r");
if (g_file == NULL ) {
printf("file not found");
fclose(g_file);
return NULL;
}
/* Read data */
g = allocate_mem_for_group_arr(0);
for(i=0 ; i<n; i++){
if (fscanf(g_file , "%d", &num) <= 0)
break;
g->size++;
g->values = (int*)realloc(g->values, sizeof(int)*(i+1));
if (g->values == NULL) {
printf("Memory allocation for group failed");
fclose(g_file);
return NULL;
}
g->values=num ;}
fclose(g_file);
return g ;}
/* Given a adj matrix and a group, create the sparse sub-matrix according to the group */
adj_matrix_arr* create_mat(adj_matrix_arr* m, group_arr *g) {
int i,j;
int y = g->size;
adj_matrix_arr* A;
A = allocate_mem_for_matrix_arr(y);
if (A == NULL) return NULL;
for (i=0; i < y; i++) {
for (j=0; j < y; j++) {
A->values[i*y + j] = m->values[(g->values) * (m->size) + g->values[j]];
}
}
return A;
}
adj_matrix_arr* edges_count(adj_matrix_arr* m) {
int i,j;
int M = 0;
adj_matrix_arr* A;
int* deg;
deg = (int*)calloc(m->size, sizeof(int));
if (deg == NULL) {
printf("Memory allocation failed");
return NULL;
}
for (i=0; i<m->size;i++) {
for (j=0; j<m->size;j++) {
deg += (int)m->values[i*m->size + j];
}
}
for(i=0; i<m->size; i++)
M += deg;
if ((A = allocate_mem_for_matrix_arr(m->size)) == NULL) return NULL;
for (i=0; i<m->size;i++) {
for (j=0; j<m->size;j++) {
A->values[i*A->size + j] = (deg*deg[j])/(double)M;
}
}
return A;
;}
adj_matrix_arr* create_modol_m(adj_matrix_arr* A, adj_matrix_arr* C) {
int i,j;
int y = A->size;
adj_matrix_arr *B;
B = allocate_mem_for_matrix_arr(y);
if ( B == NULL) return NULL;
for (i=0; i < y; i++) {
for (j=0; j < y; j++)
B->values[i*y + j] = A->values[i*y + j] - C->values[i*y + j];
}
return B;
}
elem* calc_fg(adj_matrix_arr *B) {
int i,j;
int y = B->size;
elem *fg;
fg = calloc(y, sizeof(elem));
if (fg == NULL) {
printf("memory allocation failed");
return NULL;
}
for (i=0; i < y; i++)
for (j=0; j < y; j++){
fg += B->values[i*y + j];}
return fg;
}
adj_matrix_arr* calc_g_modol_m(adj_matrix_arr* Bg, elem *fg) {
int i,j,y;
adj_matrix_arr *HBj;
y = Bg->size;
HBj = allocate_mem_for_matrix_arr(y);
if (HBj == NULL) return NULL;
for (i=0; i < y; i++)
for (j=0; j < y; j++)
HBj->values[i*y + j] = Bg->values[i*y + j] - delta(i,j)*fg;
return HBj;
}
void print_matrix(adj_matrix_arr* A) {
int i,j;
int y = A->size;
printf("%d \n", y);
for (i=0; i < y; i++) {
for (j=0; j < y; j++) {
printf("%.6f ", A->values[i*y + j]);
}
if (i != y-1)
printf("\n");
}
}
int delta(int i, int j) {
if (i == j)
return 1;
else
return 0;
}
adj_matrix_arr *create_g_mod_m(adj_matrix_arr *A, group_arr *g) {
adj_matrix_arr *Ag, *B, *Bg, *HBj, *C;
elem* fg;
/* Create the necessary data for eigenpair computation */
Ag = create_mat(A, g);
if (Ag == NULL) return NULL;
C = edges_count(A);
if (C == NULL) {
free_adj_matrix_arr(Ag);
return NULL;
}
B = create_modol_m(A, C);
if (B == NULL) {
free_adj_matrix_arr(Ag);
free_adj_matrix_arr(C);
return NULL;
}
Bg = create_mat(B, g);
if (Bg == NULL) {
free_adj_matrix_arr(Ag);
free_adj_matrix_arr(C);
free_adj_matrix_arr(B);
return NULL;
}
fg = calc_fg(Bg);
if (fg == NULL) {
free_adj_matrix_arr(Ag);
free_adj_matrix_arr(C);
free_adj_matrix_arr(B);
free_adj_matrix_arr(Bg);
return NULL;
}
HBj = calc_g_modol_m(Bg,fg);
if (HBj == NULL) {
free_adj_matrix_arr(Ag);
free_adj_matrix_arr(C);
free_adj_matrix_arr(B);
free_adj_matrix_arr(Bg);
free(fg);
return NULL;
}
free_adj_matrix_arr(Ag);
free_adj_matrix_arr(C);
free_adj_matrix_arr(B);
free_adj_matrix_arr(Bg);
free(fg);
return HBj;
}
void free_adj_matrix_arr(adj_matrix_arr* m) {
if (m != NULL) {
free(m->values);
free(m);
}
}
void free_group_arr(group_arr* g) {
if (g != NULL) {
free(g->values);
free(g);
}
}