86 #define MROWS(m) ((m).rows)
87 #define MCOLS(m) ((m).cols)
88 #define MDATA(m,i,j) ((m).data[i][j])
90 #define VELEMENTS(v) ((v).elements)
91 #define VDATA(v,i) ((v).data[i])
93 #define M_SQUARE(m) ((m).rows == (m).cols)
94 #define M_COMPAT_DIM(m, n) ((m).cols == (n).rows)
95 #define M_EQUAL_DIM(m, n) (((m).rows == (n).rows) && ((m).cols == (n).cols))
96 #define V_EQUAL_DIM(v, w) (((v).elements == (w).elements))
97 #define MV_COMPAT_DIM(m, v) ((m).cols == (v).elements)
99 #define FIRST(b) ((b).mat[0])
100 #define SECOND(b) ((b).mat[1])
101 #define THIRD(b) ((b).mat[2])
102 #define RANGE(b) ((b).range)
104 #define SQUARE(x) ((x)*(x))
MATRIX create_matrix(int rows, int cols)
float cross_product(MATRIX const *m, int f1, int c1, int f2, int c2)
void initialize_matrix(MATRIX *m, int rows, int cols)
void print_matrix(char *message, MATRIX const *m)
void print_vector(char *message, VECTOR const *v)
int multiply_matrix_vector(MATRIX const *m, VECTOR const *v, VECTOR *r)
int inverse_matrix(MATRIX const *m, MATRIX *n)
void initialize_vector(VECTOR *v, int elements)
void diagonal_matrix(MATRIX *m, int dim, float el1, float el2, float el3)
VECTOR create_vector(int elements)
int determinant(MATRIX const *m, float *result)