matrix.c