summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--matrix.c6
-rw-r--r--matrix.h6
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