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)