#ifndef MatMult_h
#define MatMult_h
class MatMult {
/**
* Matrix Multiplication main class.
* @author Joachim Staats.
*/
public:
/**
* Constructor.
*/
MatMult(){;};
/**
* Performs a subtraction operation between two arrays sequentially.
* @param C result matrix = A-B.
* @param A left matrix.
* @param B right matirx.
*/
void seqdiff(double* C, int m, int n, double* A, double* B);
/**
* Performs a transpose operation of the matrix.
* Must be a square matrix.
* @param A matrix.
*/
void transposeInplace(double* A, int m, int n);
/**
* Performs a transpose operation of the matrix.
* If A is n x m then B must be m x n.
* @param A Array.
* @param B Array transpose(A).
*/
void transpose(double* B, double* A, int m, int n);
/**
* Generates a matrix.
* Creates a two dimensional array A
with the dimension n, m.
* The method random
returns a
* random number within the intervall [0,1].
* @param n dimension of matrix.
* @param m dimension of matrix.
*/
double* matgen(int m, int n);
/**
* Generates the null-matrix.
* @param n dimension of matrix.
* @param m dimension of matrix.
*/
double* matgen0(int m, int n);
/**
* Generates the unit-matrix.
* @param n dimension of matrix.
* @param m dimension of matrix.
*/
double* matgen1(int m, int n);
/**
* Prints out the rows of matrix.
* @param A Array.
*/
void matprint(double* A, int m, int n);
/**
* Checks if the matrix is approximatly zero.
* Checks if the absolut value of the matrix's elements are less than
* the production of the smallest positive value and 1000.
* @param A Two dimensional array.
*/
bool matcheck0(double* A, int m, int n);
/**
* Makes a copy of matrix A.
* @param A Two dimensional array.
* @param B Two dimensional array.
*/
void copy (double* A, double* B, int m, int n);
};
#endif