67 for (i = 0; i <
MROWS (m); i++)
68 for (j = 0; j <
MCOLS (m); j++)
88 for (i = 0; i <
MROWS (*m); i++)
89 for (j = 0; j <
MCOLS (*m); j++)
105 printf (
"%s\n",message);
108 for (i = 0; i <
MROWS (*m); i++)
110 for (j = 0; j <
MCOLS (*m); j++)
111 printf (
"%10.5f ",
MDATA (*m, i, j));
114 else printf (
"Dimension incorrecta!");
165 printf (
"%s\n",message);
169 printf (
"%f ",
VDATA (*v, i));
172 else printf (
"Dimension incorrecta!");
192 printf (
"ERROR (determinant): MATRIX must be square!\n");
200 *result =
MDATA (*m, 0, 0);
201 else if (
MROWS (*m) == 2)
221 printf (
"ERROR (inverse_matrix): MATRIX must be square!\n");
235 printf (
"ERROR (inverse_matrix): singular MATRIX!\n");
244 MDATA (*n, 0, 0) = 1 / det ;
246 else if (
MROWS (*m) == 2)
279 printf (
"ERROR (multiply_matrix_vector): MATRIX and VECTOR dimensions incompatible!\n");
291 for (i = 0; i <
MROWS (*m); i++)
295 datum = datum +
MDATA (*m, i, j) *
VDATA (*v, j);
296 VDATA (*r, i) = datum;
void initialize_matrix(MATRIX *m, int rows, int cols)
MATRIX create_matrix(int rows, int cols)
void print_matrix(char *message, MATRIX const *m)
void print_vector(char *message, VECTOR const *v)
#define MV_COMPAT_DIM(m, v)
VECTOR create_vector(int elements)
int inverse_matrix(MATRIX const *m, MATRIX *n)
Matrix class auxiliary functions declaration.
int multiply_matrix_vector(MATRIX const *m, VECTOR const *v, VECTOR *r)
void initialize_vector(VECTOR *v, int elements)
float cross_product(MATRIX const *m, int f1, int c1, int f2, int c2)
int determinant(MATRIX const *m, float *result)