From fa993680f1229a87506a2864bf472681adb309cc Mon Sep 17 00:00:00 2001 From: Jasper Date: Fri, 5 Sep 2025 14:43:14 +0200 Subject: Check if matrix is column or row vector --- matrix.c | 6 +++--- matrix.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/matrix.c b/matrix.c index d0c2cd4..8ffae72 100644 --- a/matrix.c +++ b/matrix.c @@ -280,7 +280,7 @@ Matrix **matrix_LR(const Matrix *A, const Matrix *b) { assert(matrix_is_square(A) && "LR decomposition only works for square matrices"); assert(A->n == b->m && "Dimension mismatch"); - assert(b->n == 1 && "Vector b expected"); + assert(matrix_is_colvec(b) && "Column vector b expected"); Matrix *L = matrix_id(A->n); Matrix *A_prev = matrix_copy(A); @@ -321,7 +321,7 @@ Matrix **matrix_LR(const Matrix *A, const Matrix *b) Matrix *matrix_forwardel(const Matrix *L, const Matrix *b) { assert(L->n == b->m && "Dimension mismatch"); - assert(b->n == 1 && "Vector b expected"); + assert(matrix_is_colvec(b) && "Column vector b expected"); double sum; Matrix *y = matrix_const(L->n, 1, 0); @@ -340,7 +340,7 @@ Matrix *matrix_forwardel(const Matrix *L, const Matrix *b) Matrix *matrix_backsubst(const Matrix *R, const Matrix *y) { assert(R->n == y->m && "Dimension mismatch"); - assert(y->n == 1 && "Vector y expected"); + assert(matrix_is_colvec(y) && "Column vector y expected"); Matrix *x = matrix_const(R->n, 1, 0); double sum; diff --git a/matrix.h b/matrix.h index dc09ef6..2546152 100644 --- a/matrix.h +++ b/matrix.h @@ -11,6 +11,12 @@ #define matrix_foreach_idx(mat, it, i, j) double *it = (mat)->xs; for (size_t i = 0; i < (mat)->m; i++) for (size_t j = 0; j < (mat)->n; j++, ++it) +#define matrix_is_colvec(mat) ((mat)->n == 1) + +#define matrix_is_rowvec(mat) ((mat)->m == 1) + +#define matrix_is_vec(mat) (matrix_is_colvec(mat) || matrix_is_rowvec(mat)) + #define TRUE 1 #define FALSE 0 -- cgit v1.2.3