Example #1
0
static void RLE_next(RLE *rle)
{
    RLE_check(rle);

    /* Already finished? */
    if (RLE_finished(rle))
        return;
    rle->sequence++;
    /* Finished now? */
    if (RLE_finished(rle))
        return;

    if (rle->zigzag % 2 == 0)
    {
        if (rle->curr.col < get_max_col(rle))
        {
            /* Same zigzag */
            rle->curr.col++;
            rle->curr.row = get_row_from_col(rle);
        }
        else
        {
            /* Next zigzag */
            rle->zigzag++;
            rle->curr.row = get_min_row(rle);
            rle->curr.col = get_col_from_row(rle);
        }
    }
    else
    {
        if (rle->curr.row < get_max_row(rle))
        {
            /* Same zigzag */
            rle->curr.row++;
            rle->curr.col = get_col_from_row(rle);
        }
        else
        {
            /* Next zigzag */
            rle->zigzag++;
            rle->curr.col = get_min_col(rle);
            rle->curr.row = get_row_from_col(rle);
        }
    }
}
Example #2
0
void gaussian_elimination() {
    int i, j, k;
    double temp;

    for(k = 0; k < size - 1; ++k) {
        # pragma omp single
        swap_rows(k, get_max_row(k));

        # pragma omp for schedule(guided)
        for(i = k + 1; i < size; ++i) {
            for(j = k; j < size + 1; ++j) {
                if( j == k )
                    temp = A[i][k] / A[k][k];
                A[i][j] = A[i][j] - temp * A[k][j];
            }
        }
    }
}