aboutsummaryrefslogtreecommitdiff
path: root/nerv/lib/matrix/matrix.h
blob: cbf32c2350e4a1a437a08882caa426cfde050ba0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef NERV_GENERIC_MATRIX_H
#define NERV_GENERIC_MATRIX_H

#include <stddef.h>

typedef struct Matrix {
    size_t stride;              /* size of a row */
    long ncol, nrow, nmax;    /* dimension of the matrix */
    union {
        float *f;
        double *d;
        long *i;
    } data;                   /* pointer to actual storage */
    long *data_ref;
} Matrix;

#define MATRIX_ROW_PTR(self, row) \
    (MATRIX_ELEM *)((char *)MATRIX_ELEM_PTR(self) + (row) * (self)->stride)
#endif