struct matrix {
	int m_rows, m_cols;
	};

struct m_ {
	int m_rows, m_cols;
	double m_value[1];
	};

double m_cofactor(), m_determinant();
struct matrix *m_copy(), *m_invert(), *m_transpose(), *m_multiply(), *m_solve();

#define	m_v(m, r, c)	((struct m_ *)m)->m_value[r * (m->m_cols) + c]
#define	M_NULL	((struct matrix *)0)

#define	m_create(m, r, c) {\
			if (((int)(m = (struct matrix *)malloc(sizeof(struct matrix) + (sizeof(double) * r * c)))) == 0) {\
				printf("Allocation error: %s\n", __FILE__);\
				exit(1);\
				}\
			m->m_rows = r;\
			m->m_cols = c;\
			}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               