From 5bffda9580a408b9ef86dd359fdd28e2ab8e3f9d Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Wed, 30 Jul 2014 17:19:04 +0200 Subject: convert matrix utility functions to defines --- include/msvmmaj_matrix.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'include/msvmmaj_matrix.h') diff --git a/include/msvmmaj_matrix.h b/include/msvmmaj_matrix.h index 8f5ca59..db64303 100644 --- a/include/msvmmaj_matrix.h +++ b/include/msvmmaj_matrix.h @@ -14,15 +14,23 @@ #include "globals.h" -void matrix_set(double *M, long cols, long i, long j, double val); -void matrix_add(double *M, long cols, long i, long j, double val); -void matrix_mul(double *M, long cols, long i, long j, double val); +// Set a matrix element (RowMajor) +#define matrix_set(M, cols, i, j, val) M[(i)*(cols)+j] = val -double matrix_get(double *M, long cols, long i, long j); +// Get a matrix element (RowMajor) +#define matrix_get(M, cols, i, j) M[(i)*(cols)+j] -void matrix3_set(double *M, long N2, long N3, long i, long j, long k, - double val); -double matrix3_get(double *M, long N2, long N3, long i, long j, long k); +// Add to a matrix element (RowMajor) +#define matrix_add(M, cols, i, j, val) M[(i)*(cols)+j] += val + +// Multiply a matrix element (RowMajor) +#define matrix_mul(M, cols, i, j, val) M[(i)*(cols)+j] *= val + +// Set a 3D matrix element (N2 = second dim, N3 = third dim, RowMajor) +#define matrix3_set(M, N2, N3, i, j, k, val) M[k+(N3)*(j+(N2)*(i))] = val + +// Get a 3D matrix element (N2 = second dim, N3 = third dim, RowMajor) +#define matrix3_get(M, N2, N3, i, j, k) M[k+(N3)*(j+(N2)*(i))] void print_matrix(double *M, long rows, long cols); -- cgit v1.2.3