

// MatrixInverse.h

#ifndef MATRIX_INVERSE_H
	#define MATRIX_INVERSE_H

	// -- defined vars
	#define NROWS 4				// NOTE: no semicolon after #define construct.
	#define NCOLS 6

	// -- static vars
	static int prec = 15;
	// static int nrows = 4;	// NOTE: can't use static ints for array dimensions.
	// static int ncols = 5;

	// Main line fns
	int main(int argc, char **argv);
	int PrepareMatrixInversion(void);
	int PrepareMatrixInversionLargeSystem(void);
	int PrepareMatrixMult(void);
	int PrepareSwap(void);
	
	// Matrix-based functions
	void GaussJordanEliminationFullPivoting(double **A, int n, double **B, int m);
	void MatrixMult(int nrowsA, int ncolsA, int ncolsB, double **A, double **B, double **C);
	double MatrixNorm(int nrows, int ncols, double **M);
	int SetupMatrix(void);

	// Misc. fns
	void Swap(double &a, double &b);

	// Print fns
	int PrintMatrix(double **M, int nrows, int ncols);
	int PrintVector(double *v, int ncols);

	// -- classes
	// none yet.	
#endif

// eof