diff --git a/matrix.c b/matrix.c index d3f9afb..1babd3e 100644 --- a/matrix.c +++ b/matrix.c @@ -1,9 +1,6 @@ #include #include #include "matrix.h" -#include - -// TODO Matrix-Funktionen implementieren Matrix createMatrix(size_t rows, size_t cols) { @@ -17,7 +14,7 @@ Matrix createMatrix(size_t rows, size_t cols) return m; } - // Single allocation for entire matrix + //Allocate Matrix buffer m.buffer = malloc(rows * cols * sizeof(MatrixType)); if(!m.buffer){ @@ -25,7 +22,7 @@ Matrix createMatrix(size_t rows, size_t cols) return m; } - // Initialize (optional) + //Initialize matrix with default value for(unsigned int i = 0; i < rows * cols; i++){ m.buffer[i] = UNDEFINED_MATRIX_VALUE; } @@ -75,7 +72,7 @@ MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int co Matrix add(const Matrix matrix1, const Matrix matrix2) { - bool doBroadcast = false; + unsigned int doBroadcast = 0; Matrix larger, smaller; if(matrix1.rows == matrix2.rows && matrix1.cols == matrix2.cols){ @@ -86,13 +83,13 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) { larger = matrix1; smaller = matrix2; - doBroadcast = true; + doBroadcast = 1; } else if (matrix1.rows == matrix2.rows && matrix1.cols == 1) { larger = matrix2; smaller = matrix1; - doBroadcast = true; + doBroadcast = 1; } else{ Matrix m = {NULL, 0, 0}; @@ -101,6 +98,7 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) Matrix outputMatrix = createMatrix(larger.rows, larger.cols); if(doBroadcast){ + //Broadcasting for(int i = 0; i < outputMatrix.rows; i++){ MatrixType broadcastValue = smaller.buffer[i]; for(int j = 0; j < outputMatrix.cols; j++){ @@ -108,6 +106,7 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) } } } else{ + //Classic execution for (int i = 0; i < matrix1.rows;i++) { for (int j = 0; j < matrix1.cols; j++) { // how this should work in normal Matrix version: