#ifndef MATRIX_H
#define MATRIX_H

#define UNDEFINED_MATRIX_VALUE 0

typedef float MatrixType;
// TODO Matrixtyp definieren

typedef struct Matrix {
    MatrixType *buffer;
    size_t rows; //X-Element
    size_t cols; //Y-Element
} Matrix;


Matrix createMatrix(size_t rows, size_t cols);
void clearMatrix(Matrix *matrix);
void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx);
MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx);
Matrix add(const Matrix matrix1, const Matrix matrix2);
Matrix multiply(const Matrix matrix1, const Matrix matrix2);


#endif
