diff --git a/matrix.c b/matrix.c index cf75a94..feca5cc 100644 --- a/matrix.c +++ b/matrix.c @@ -67,14 +67,18 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) return createMatrix(0, 0); } + // matrices not compatible + if (matrix1.rows != matrix2.rows) + { + clearMatrix(&resMat); + return resMat; + } + + // check if broadcasting is possible if (matrix1.cols != matrix2.cols) { - if (matrix1.rows != matrix2.rows) - { - clearMatrix(&resMat); - return resMat; - } - else if (matrix1.cols == 1) + // matrix1 is a vector + if (matrix1.cols == 1) { // broadcast vector for (size_t m = 0; m < matrix2.rows; m++) @@ -86,6 +90,7 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) } return resMat; } + // matrix2 is a vector else if (matrix2.cols == 1) { // broadcast vector @@ -98,6 +103,7 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) } return resMat; } + // addition not possible else { clearMatrix(&resMat);