#define N 100 #define M 10000 int main() { float a[N+1][N+1], b[N+1][N+1]; int i,j,k; for( i=1; i<=N; i++ ) for( j=1; j<=N; j++ ) { a[i][j] = 0; b[i][j] = 0; } #pragma omp parallel for shared(a) private(i,j,k) for( i=1; i<=N; i++ ) for( j=1; j<=N; j++ ) for( k=1; k<=M; k++ ) a[i][j] += (i*j) / (i+j+k); #pragma omp parallel for shared(a,b) private(i,j,k) schedule(dynamic) for( i=2; i<=N-1; i++ ) for( j=2; j<=i; j++ ) for( k=1; k<=M; k++ ) b[i][j] += a[i-1][j ]/k + a[i+1][j ]/k + a[i ][j-1]/k + a[i ][j+1]/k + a[i-1][j-1]/(k*k) + a[i+1][j+1]/(k*k) + a[i+1][j-1]/(k*k) + a[i-1][j+1]/(k*k); }