#include <marray/marray.h>
#define RANK 3
#define DIM1 5
#define DIM2 2
#define DIM3 4
int main (void)
{
size_t dimensions[3] = { DIM1, DIM2, DIM3 }; /* to pass marray dimensions */
size_t i, j, k; /* marray indices */
size_t indices[3]; /* to pass marray indices */
/* Allocate space for the marrays */
marray * a = marray_calloc (RANK, dimensions);
marray * b = marray_calloc (RANK, dimensions);
marray * t = marray_calloc (RANK, dimensions);
/* Fill them */
for (i = 0; i < DIM1; i++)
{
for (j = 0; j < DIM2; j++)
{
for (k = 0; k < DIM3; k++)
{
indices[0] = i; indices[1] = j; indices[2] = k;
marray_set (a, indices, 3 + i + 5 * j + 2 * k);
marray_set (b, indices, 3 + 2 * i + 4 * j + k);
}
}
}
/*
* Do some operations
*/
/* Sum */
marray_memcpy (t, a);
marray_add (t, b); /* t = a + b */
marray_fprintf (stdout, t, "%g");
/* Element division */
marray_memcpy (t, a);
marray_div_elements (t, b); /* t = a ./ b */
marray_fprintf (stdout, t, "%g");
marray_free (a);
marray_free (b);
marray_free (t);
return 0;
}
Compile with:
gcc myprog.c -o myprog -lgsl -lgslcblas -lm -lmarray
(Add -I$MDIR/include -L$MDIR/lib if necessary, with $MDIR the installation directory of marray.)