Exemplo n.º 1
0
/* ************************************************************************* */
int compare_array_2d(N_array_2d * a, N_array_2d * b)
{
    int rows, cols, type;
    int i, j, res = 0;

    cols = a->cols;
    rows = a->rows;
    type = N_get_array_2d_type(a);

    #pragma omp parallel for private (i, j) shared (cols, rows, type, a, b) reduction(+:res)
    for (j = 0; j < rows; j++) {
        for (i = 0; i < cols; i++) {
            if (type == CELL_TYPE) {
                if (N_get_array_2d_c_value(a, i, j) !=
                        N_get_array_2d_c_value(b, i, j))
                    res++;
            }
            if (type == FCELL_TYPE) {
                if (N_get_array_2d_f_value(a, i, j) !=
                        N_get_array_2d_f_value(b, i, j))
                    res++;
            }
            if (type == DCELL_TYPE) {
                if (N_get_array_2d_d_value(a, i, j) !=
                        N_get_array_2d_d_value(b, i, j))
                    res++;
            }
        }
    }

    return res;
}
Exemplo n.º 2
0
/* ************************************************************************* */
int fill_array_2d(N_array_2d * a)
{
    int rows, cols, type;
    int i, j, res = 0;

    rows = a->rows;
    cols = a->cols;
    type = N_get_array_2d_type(a);

    #pragma omp parallel for private (i, j) shared (cols, rows, type, a) reduction(+:res)
    for (j = 0; j < rows; j++) {
        for (i = 0; i < cols; i++) {
            if (type == CELL_TYPE) {
                N_put_array_2d_c_value(a, i, j, (CELL) i * (CELL) j);
                if (N_get_array_2d_c_value(a, i, j) != (CELL) i * (CELL) j)
                    res++;
            }
            if (type == FCELL_TYPE) {
                N_put_array_2d_f_value(a, i, j, (FCELL) i * (FCELL) j);
                if (N_get_array_2d_f_value(a, i, j) != (FCELL) i * (FCELL) j)
                    res++;
            }
            if (type == DCELL_TYPE) {
                N_put_array_2d_d_value(a, i, j, (DCELL) i * (DCELL) j);
                if (N_get_array_2d_d_value(a, i, j) != (DCELL) i * (DCELL) j)
                    res++;
            }
        }
    }

    return res;
}
Exemplo n.º 3
0
/*!
 * \brief Write info and content of the N_array_2d struct to stdout
 *
 * Offsets are ignored
 *
 * \param data N_array_2d *
 * \return void
 * */
void N_print_array_2d(N_array_2d * data)
{
    int i, j;

    N_print_array_2d_info(data);

    for (j = 0 - data->offset; j < data->rows + data->offset; j++) {
	for (i = 0 - data->offset; i < data->cols + data->offset; i++) {
	    if (data->type == CELL_TYPE)
		fprintf(stdout, "%6d ", N_get_array_2d_c_value(data, i, j));
	    else if (data->type == FCELL_TYPE)
		fprintf(stdout, "%6.6f ", N_get_array_2d_f_value(data, i, j));
	    else if (data->type == DCELL_TYPE)
		printf("%6.6f ", N_get_array_2d_d_value(data, i, j));
	}
	fprintf(stdout, "\n");
    }
    fprintf(stdout, "\n");

    return;
}