# Matrices and vectors

**TODO** Document these methods. 

## Matrix

```c
void matrix_zero(size_t size, double * m);
void matrix_transpose(size_t rows, size_t columns, double * m, double * mt);
void matrix_identity(size_t size, double * mi);
void matrix_multiply_scalar(size_t size, double scalar, double * m, double * mout);
void matrix_multiply(size_t n, size_t m, size_t p, double * m0, double * m1, double * mout);
void matrix_set(size_t size, double scalar, double * m);
void matrix_add(size_t size, double * m0, double * m1, double * mout);
void matrix_sub(size_t size, double * m1, double * m0, double * mout);
double matrix_determinant(size_t size, double * m);
void matrix_cofactors(size_t size, double * m, double * mout);
void matrix_adjucate(size_t size, double * m, double * mout);
int matrix_inverse(size_t size, double * m, double * mout);
int matrix_solve(size_t size, double * A, double * B, double * X);
```

## Vector

```c
double vector_length(size_t size, double * v);
void vector_unit(size_t size, double * v, double * vout);
void vector_multiply(size_t size, double scalar, double * v, double * vout);
void vector_interpolate(size_t size, double * v0, double * v1, double t, double * vout);
double vector_dot(size_t size, double * v0, double * v1);
void vector3_cross(double * v0, double * v1, double * vout);
```
