From 49fe504201d6800eb4f29e0ded6114ae5aa33b64 Mon Sep 17 00:00:00 2001 From: Al Date: Sun, 6 Sep 2015 12:37:10 -0700 Subject: [PATCH] [math] Matrix get value at row, column index --- src/matrix.c | 6 +++++- src/matrix.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/matrix.c b/src/matrix.c index d7a4de11..ee176a56 100644 --- a/src/matrix.c +++ b/src/matrix.c @@ -1,6 +1,5 @@ #include "matrix.h" - matrix_t *matrix_new(size_t m, size_t n) { matrix_t *matrix = malloc(sizeof(matrix_t)); @@ -50,6 +49,11 @@ inline void matrix_set_scalar(matrix_t *self, size_t row_index, size_t col_index values[offset] = value; } +inline double matrix_get(matrix_t *self, size_t row_index, size_t col_index) { + size_t index = row_index * self->n + col_index; + return self->values->a[index]; +} + inline matrix_t *matrix_new_value(size_t m, size_t n, double value) { matrix_t *matrix = matrix_new(m, n); matrix_set(matrix, value); diff --git a/src/matrix.h b/src/matrix.h index 93f46f45..4ddfdb8a 100644 --- a/src/matrix.h +++ b/src/matrix.h @@ -25,6 +25,8 @@ void matrix_set(matrix_t *self, double value); void matrix_set_row(matrix_t *self, size_t index, double *row); void matrix_set_scalar(matrix_t *self, size_t row_index, size_t col_index, double value); +double matrix_get(matrix_t *self, size_t row_index, size_t col_index); + void matrix_scale(matrix_t *self, double value); void matrix_dot_vector(matrix_t *self, double *vec, double *result); int matrix_dot_matrix(matrix_t *m1, matrix_t *m2, matrix_t *result);