/* ************************************************************************* */ int compare_array_3d(N_array_3d * a, N_array_3d * b) { int rows, cols, depths, type; int i, j, k, res = 0; rows = a->rows; cols = a->cols; depths = a->depths; type = N_get_array_3d_type(a); #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a, b) reduction(+:res) for (k = 0; k < depths; k++) { for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { if (type == FCELL_TYPE) { if (N_get_array_3d_f_value(a, i, j, k) != N_get_array_3d_f_value(b, i, j, k)) res++; } if (type == DCELL_TYPE) { if (N_get_array_3d_d_value(a, i, j, k) != N_get_array_3d_d_value(b, i, j, k)) res++; } } } } return res; }
/* ************************************************************************* */ int fill_array_3d(N_array_3d * a) { int rows, cols, depths, type; int i, j, k, res = 0; cols = a->cols; rows = a->rows; depths = a->depths; type = N_get_array_3d_type(a); #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a) reduction(+:res) for (k = 0; k < depths; k++) { for (j = 0; j < rows; j++) { for (i = 0; i < cols; i++) { if (type == FCELL_TYPE) { N_put_array_3d_f_value(a, i, j, k, (float)i * (float)j * (float)k); if (N_get_array_3d_f_value(a, i, j, k) != (float)i * (float)j * (float)k) res++; } if (type == DCELL_TYPE) { N_put_array_3d_d_value(a, i, j, k, (double)i * (double)j * (double)k); if (N_get_array_3d_d_value(a, i, j, k) != (double)i * (double)j * (double)k) res++; } } } } return res; }
/*! * \brief Write info and content of the array data to stdout * * Offsets are ignored * * \param data N_array_2d * * \return void * */ void N_print_array_3d(N_array_3d * data) { int i, j, k; N_print_array_3d_info(data); for (k = 0; k < data->depths; k++) { for (j = 0; j < data->rows; j++) { for (i = 0; i < data->cols; i++) { if (data->type == FCELL_TYPE) printf("%6.6f ", N_get_array_3d_f_value(data, i, j, k)); else if (data->type == DCELL_TYPE) printf("%6.6f ", N_get_array_3d_d_value(data, i, j, k)); } printf("\n"); } printf("\n"); } printf("\n"); return; }