From a2ad829d52435478f2fb66168dc4d42742647396 Mon Sep 17 00:00:00 2001 From: Al Date: Fri, 16 Oct 2015 16:26:27 -0400 Subject: [PATCH] [math] matrix scalar arithmetic --- src/matrix.c | 21 +++++++++++++++++++-- src/matrix.h | 5 ++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/matrix.c b/src/matrix.c index ee176a56..0c42c340 100644 --- a/src/matrix.c +++ b/src/matrix.c @@ -74,10 +74,27 @@ matrix_t *matrix_new_values(size_t m, size_t n, double *values) { return matrix; } -inline void matrix_scale(matrix_t *self, double value) { - double_array_mul(self->values, self->m * self->n, value); + +inline void matrix_div(matrix_t *self, double value) { + double_array_div(self->values, value, self->m * self->n); } + +inline void matrix_mul(matrix_t *self, double value) { + double_array_mul(self->values, value, self->m * self->n); +} + + +inline void matrix_add(matrix_t *self, double value) { + double_array_add(self->values, self->m * self->n, value); +} + + +inline void matrix_sub(matrix_t *self, double value) { + double_array_sub(self->values, value, self->m * self->n); +} + + void matrix_dot_vector(matrix_t *self, double *vec, double *result) { double *values = self->values; size_t n = self->n; diff --git a/src/matrix.h b/src/matrix.h index 4ddfdb8a..e5384312 100644 --- a/src/matrix.h +++ b/src/matrix.h @@ -27,7 +27,10 @@ void matrix_set_scalar(matrix_t *self, size_t row_index, size_t col_index, doubl double matrix_get(matrix_t *self, size_t row_index, size_t col_index); -void matrix_scale(matrix_t *self, double value); +void matrix_add(matrix_t *self, double value); +void matrix_sub(matrix_t *self, double value); +void matrix_mul(matrix_t *self, double value); +void matrix_div(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);