#include #include #include "mpi.h" #define BLOCK_LOW(id,p,n) ((id)*(n)/(p)) #define BLOCK_HIGH(id,p,n) (BLOCK_LOW((id)+1,p,n)-1) #define BLOCK_SIZE(id,p,n) (BLOCK_HIGH(id,p,n)-BLOCK_LOW(id,p,n)+1) double* allocate1D(int n) { double *a; a = (double *)malloc(n * sizeof(double)); return a; } double** allocate2D(int m, int n) { double **a; double *a_storage; int i; a_storage = (double*)malloc(m*n*sizeof(double)); a = (double**)malloc((unsigned)m*sizeof(double*)); for(i=0; i