18 |
|
double mtx[1]; /* extends struct */ |
19 |
|
} RMATRIX; |
20 |
|
|
21 |
< |
#define rmx_indx(rm,r,c,i) (((i)*(rm)->nrows+(r))*(rm)->ncols+(c)) |
21 |
> |
#define rmx_lval(rm,r,c,i) (rm)->mtx[((i)*(rm)->nrows+(r))*(rm)->ncols+(c)] |
22 |
|
|
23 |
– |
#define rmx_lval(rm,r,c,i) (rm)->mtx[rmx_indx(rm,r,c,i)] |
24 |
– |
|
23 |
|
#define rmx_free(rm) free(rm) |
24 |
|
|
25 |
|
/* Allocate a nr x nc matrix with n components */ |
37 |
|
/* Duplicate the given matrix */ |
38 |
|
extern RMATRIX *rmx_copy(const RMATRIX *rm); |
39 |
|
|
40 |
< |
/* Swap rows and columns in the given matrix in situ */ |
41 |
< |
extern int rmx_transpose(RMATRIX *rm); |
40 |
> |
/* Allocate and assign transposed matrix */ |
41 |
> |
extern RMATRIX *rmx_transpose(const RMATRIX *rm); |
42 |
|
|
43 |
|
/* Multiply (concatenate) two matrices and allocate the result */ |
44 |
|
extern RMATRIX *rmx_multiply(const RMATRIX *m1, const RMATRIX *m2); |