[math] Dense matrices

This commit is contained in:
Al
2015-08-31 14:57:11 -04:00
parent 0ee72b8dfb
commit 0f617454d3
2 changed files with 156 additions and 0 deletions

34
src/matrix.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef MATRIX_H
#define MATRIX_H
#include <stdlib.h>
#include <stdint.h>
#include "collections.h"
typedef struct matrix {
size_t m;
size_t n;
double *values;
} matrix_t;
matrix_t *matrix_new(size_t m, size_t n);
matrix_t *matrix_new_value(size_t m, size_t n, double value);
matrix_t *matrix_new_values(size_t m, size_t n, double *values);
matrix_t *matrix_new_zeros(size_t m, size_t n);
matrix_t *matrix_new_ones(size_t m, size_t n);
matrix_t *matrix_copy(matrix_t *self);
void matrix_init_values(matrix_t *self, double *values);
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);
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);
void matrix_destroy(matrix_t *self);
#endif