Revision d5b6282d Matrix/matrix.c

View differences:

Matrix/matrix.c
23 23
	(m->values[i+j*(m->rows)])
24 24
#define MAT_SET(m,i,j,v) \
25 25
	(m->values[i+j*(m->rows)] = v)
26
#define MAX(a,b) ((a) > (b) ? (a) : (b))
27
#define MIN(a,b) ((a) < (b) ? (a) : (b))
26 28

  
27 29
struct matrix {
28 30
	matsize rows;
......
74 76
	return 0;
75 77
}
76 78

  
79
int matrix_make_bidir(struct matrix * m)
80
{
81
	int res = 0;
82
	matsize i, j;
83
	matvalue v;
84

  
85
	if (m)
86
	{
87
		for(i = 0; i < m->rows; i++)
88
			for(j = 0; j < m->cols; j++)
89
			{
90
				v = MIN(MAT_GET(m, i, j), MAT_GET(m, j, i));
91
				if (v == 0)
92
				{
93
					v = MAX(MAT_GET(m, i, j), MAT_GET(m, j, i));
94
					MAT_SET(m, i, j, v);
95
					MAT_SET(m, j, i, v);
96
				}
97
			}
98
	} else
99
		res = -1;
100

  
101
	return res;
102
}
103

  
77 104
int matrix_add_edge_record(struct matrix * m, struct string_indexer * si, char * rec)
78 105
	//input: 0 4 0.56
79 106
{

Also available in: Unified diff