39 #define MROWS(m) ((m).rows) 40 #define MCOLS(m) ((m).cols) 41 #define MDATA(m,i,j) ((m).data[i][j]) 43 #define VELEMENTS(v) ((v).elements) 44 #define VDATA(v,i) ((v).data[i]) 46 #define M_SQUARE(m) ((m).rows == (m).cols) 47 #define M_COMPAT_DIM(m, n) ((m).cols == (n).rows) 48 #define M_EQUAL_DIM(m, n) (((m).rows == (n).rows) && ((m).cols == (n).cols)) 49 #define V_EQUAL_DIM(v, w) (((v).elements == (w).elements)) 50 #define MV_COMPAT_DIM(m, v) ((m).cols == (v).elements) 52 #define FIRST(b) ((b).mat[0]) 53 #define SECOND(b) ((b).mat[1]) 54 #define THIRD(b) ((b).mat[2]) 55 #define RANGE(b) ((b).range) 57 #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)