void ut_sorted_bounds(int size) { printf("Testing SORTED with BOUNDS.\n\n"); char *name = "test_sorted_bounds"; make_new_column_file(name, SORTED); column_t *c = malloc(sizeof(column_t)); init_col(c, name); bv_t *bv = create_bv(size); int insert_index; for (int i = size-1; i>=0; i--) { insert_index = get_lower_bound(c->fp, c->m.size, i); insert_value_to_file(c, insert_index, i); } printf("Finished inserting data.\n"); #ifdef UT_VERBOSE print_data_file(c->bpt_fp); #endif for (int i = 0; i < size; i++) { printf("Searching values at %d\n", i); mark_matching_bv_for_sorted(c, bv, i, i); assert(is_marked(bv, i)); unmark_all_bv(bv); } return; }
void* threadfunc(void* arg_p) { long rank = (long) arg_p; int lower_bound_x = get_lower_bound(get_x(rank)); int upper_bound_x = get_upper_bound(get_x(rank)); int lower_bound_y = get_lower_bound(get_y(rank)); int upper_bound_y = get_upper_bound(get_y(rank)); int i = 0, j = 0, k = 0; for(i = lower_bound_x; i <= upper_bound_x; i++) { for(j = lower_bound_y; j <= upper_bound_y; j++) { matrix_c[i][j] = 0; for(k = 0; k < matrix_size; k++) { matrix_c[i][j] += matrix_a[i][k] * matrix_b[k][j]; } } } return NULL; }
int get_upper_bound(int coordinate) { // upper bound is 1 less than lower bound of higher coordinate return (int) get_lower_bound(coordinate+1) - 1; }