Home | History | Annotate | Download | only in dist

Lines Matching defs:mat

43 	tab->mat = isl_mat_alloc(ctx, n_row, off + n_var);
44 if (!tab->mat)
102 return tab ? isl_mat_get_ctx(tab->mat) : NULL;
117 con = isl_realloc_array(tab->mat->ctx, tab->con,
124 if (tab->mat->n_row < tab->n_row + n_new) {
127 tab->mat = isl_mat_extend(tab->mat,
129 if (!tab->mat)
131 row_var = isl_realloc_array(tab->mat->ctx, tab->row_var,
132 int, tab->mat->n_row);
138 s = isl_realloc_array(tab->mat->ctx, tab->row_sign,
139 enum isl_tab_row_sign, tab->mat->n_row);
157 var = isl_realloc_array(tab->mat->ctx, tab->var,
165 if (tab->mat->n_col < off + tab->n_col + n_new) {
168 tab->mat = isl_mat_extend(tab->mat,
169 tab->mat->n_row, off + tab->n_col + n_new);
170 if (!tab->mat)
172 p = isl_realloc_array(tab->mat->ctx, tab->col_var,
209 isl_mat_free(tab->mat);
233 dup = isl_calloc_type(tab->mat->ctx, struct isl_tab);
236 dup->mat = isl_mat_dup(tab->mat);
237 if (!dup->mat)
239 dup->var = isl_alloc_array(tab->mat->ctx, struct isl_tab_var, tab->max_var);
244 dup->con = isl_alloc_array(tab->mat->ctx, struct isl_tab_var, tab->max_con);
249 dup->col_var = isl_alloc_array(tab->mat->ctx, int, tab->mat->n_col - off);
250 if ((tab->mat->n_col - off) && !dup->col_var)
254 dup->row_var = isl_alloc_array(tab->mat->ctx, int, tab->mat->n_row);
255 if (tab->mat->n_row && !dup->row_var)
260 dup->row_sign = isl_alloc_array(tab->mat->ctx, enum isl_tab_row_sign,
261 tab->mat->n_row);
262 if (tab->mat->n_row && !dup->row_sign)
271 dup->sample_index = isl_alloc_array(tab->mat->ctx, int,
312 * mat{1,2} is the coefficient matrix of tableau {1,2}
444 isl_assert(tab1->mat->ctx, tab1->M == tab2->M, return NULL);
445 isl_assert(tab1->mat->ctx, tab1->rational == tab2->rational, return NULL);
446 isl_assert(tab1->mat->ctx, tab1->cone == tab2->cone, return NULL);
447 isl_assert(tab1->mat->ctx, !tab1->row_sign, return NULL);
448 isl_assert(tab1->mat->ctx, !tab2->row_sign, return NULL);
449 isl_assert(tab1->mat->ctx, tab1->n_param == 0, return NULL);
450 isl_assert(tab1->mat->ctx, tab2->n_param == 0, return NULL);
451 isl_assert(tab1->mat->ctx, tab1->n_div == 0, return NULL);
452 isl_assert(tab1->mat->ctx, tab2->n_div == 0, return NULL);
459 prod = isl_calloc_type(tab1->mat->ctx, struct isl_tab);
462 prod->mat = tab_mat_product(tab1->mat, tab2->mat,
465 if (!prod->mat)
467 prod->var = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var,
481 prod->con = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var,
495 prod->col_var = isl_alloc_array(tab1->mat->ctx, int,
512 prod->row_var = isl_alloc_array(tab1->mat->ctx, int,
513 tab1->mat->n_row + tab2->mat->n_row);
514 if ((tab1->mat->n_row + tab2->mat->n_row) && !prod->row_var)
594 if (!isl_int_is_neg(tab->mat->row[i][off + var->index]))
615 if (!isl_int_is_pos(tab->mat->row[i][off + var->index]))
629 isl_int_mul(*t, tab->mat->row[r1][2], tab->mat->row[r2][off+c]);
630 isl_int_submul(*t, tab->mat->row[r2][2], tab->mat->row[r1][off+c]);
635 isl_int_mul(*t, tab->mat->row[r1][1], tab->mat->row[r2][off + c]);
636 isl_int_submul(*t, tab->mat->row[r2][1], tab->mat->row[r1][off + c]);
674 if (sgn * isl_int_sgn(tab->mat->row[j][off + c]) >= 0)
714 isl_assert(tab->mat->ctx, var->is_row, return);
715 tr = tab->mat->row[var->index] + 2 + tab->M;
750 if (isl_int_is_neg(tab->mat->row[row][1]))
752 if (tab->strict_redundant && isl_int_is_zero(tab->mat->row[row][1]))
754 if (tab->M && isl_int_is_neg(tab->mat->row[row][2]))
758 if (isl_int_is_zero(tab->mat->row[row][off + i]))
762 if (isl_int_is_neg(tab->mat->row[row][off + i]))
780 tab->mat = isl_mat_swap_rows(tab->mat, row1, row2);
809 undo = isl_alloc_type(tab->mat->ctx, struct isl_tab_undo);
849 u.col_var = isl_alloc_array(tab->mat->ctx, int, tab->n_col);
872 tab->samples = isl_mat_alloc(tab->mat->ctx, 1, 1 + tab->n_var);
875 tab->sample_index = isl_alloc_array(tab->mat->ctx, int, 1);
890 int *t = isl_realloc_array(tab->mat->ctx,
960 isl_assert(tab->mat->ctx, row >= tab->n_redundant, return -1);
1047 struct isl_mat *mat = tab->mat;
1055 isl_assert(mat->ctx, row_sgn > 0, return);
1056 isl_assert(mat->ctx, tab->row_sign[row] == isl_tab_row_neg, return);
1062 s = isl_int_sgn(mat->row[i][off + col]);
1131 struct isl_mat *mat = tab->mat;
1139 isl_int_swap(mat->row[row][0], mat->row[row][off + col]);
1140 sgn = isl_int_sgn(mat->row[row][0]);
1142 isl_int_neg(mat->row[row][0], mat->row[row][0]);
1143 isl_int_neg(mat->row[row][off + col], mat->row[row][off + col]);
1148 isl_int_neg(mat->row[row][1 + j], mat->row[row][1 + j]);
1150 if (!isl_int_is_one(mat->row[row][0]))
1151 isl_seq_normalize(mat->ctx, mat->row[row], off + tab->n_col);
1155 if (isl_int_is_zero(mat->row[i][off + col]))
1157 isl_int_mul(mat->row[i][0], mat->row[i][0], mat->row[row][0]);
1161 isl_int_mul(mat->row[i][1 + j],
1162 mat->row[i][1 + j], mat->row[row][0]);
1163 isl_int_addmul(mat->row[i][1 + j],
1164 mat->row[i][off + col], mat->row[row][1 + j]);
1166 isl_int_mul(mat->row[i][off + col],
1167 mat->row[i][off + col], mat->row[row][off + col]);
1168 if (!isl_int_is_one(mat->row[i][0]))
1169 isl_seq_normalize(mat->ctx, mat->row[i], off + tab->n_col);
1184 if (isl_int_is_zero(mat->row[i][off + col]))
1215 if (!isl_int_is_zero(tab->mat->row[r][off+var->index]))
1217 isl_assert(tab->mat->ctx, r < tab->n_row, return -1);
1220 isl_assert(tab->mat->ctx, r >= 0, return -1);
1243 isl_assert(tab->mat->ctx,
1244 !isl_int_is_neg(tab->mat->row[i][2]), abort());
1245 if (isl_int_is_pos(tab->mat->row[i][2]))
1248 isl_assert(tab->mat->ctx, !isl_int_is_neg(tab->mat->row[i][1]),
1272 while (!isl_int_is_pos(tab->mat->row[var->index][1])) {
1275 return isl_int_sgn(tab->mat->row[var->index][1]);
1292 isl_assert(tab->mat->ctx, !var->is_redundant, return -2);
1293 isl_assert(tab->mat->ctx, !var->is_zero, return -2);
1301 return isl_int_is_neg(tab->mat->row[row][1]);
1302 if (isl_int_is_pos(tab->mat->row[row][2]))
1304 if (isl_int_is_neg(tab->mat->row[row][2]))
1306 return isl_int_is_neg(tab->mat->row[row][1]);
1312 return isl_int_sgn(tab->mat->row[row][1]);
1313 if (!isl_int_is_zero(tab->mat->row[row][2]))
1314 return isl_int_sgn(tab->mat->row[row][2]);
1316 return isl_int_sgn(tab->mat->row[row][1]);
1349 while (isl_int_is_neg(tab->mat->row[var->index][1])) {
1358 return !isl_int_is_neg(tab->mat->row[var->index][1]);
1393 if (isl_int_is_neg(tab->mat->row[var->index][1])) {
1408 while (!isl_int_is_neg(tab->mat->row[var->index][1])) {
1413 return isl_int_sgn(tab->mat->row[var->index][1]);
1435 if (isl_int_is_pos(tab->mat->row[row][2]))
1437 if (isl_int_is_neg(tab->mat->row[row][2]))
1440 return isl_int_is_neg(tab->mat->row[row][1]) &&
1441 isl_int_abs_ge(tab->mat->row[row][1],
1442 tab->mat->row[row][0]);
1522 r = tab->mat->row[var->index];
1544 tab->mat = isl_mat_swap_cols(tab->mat, off + col1, off + col2);
1583 if (tab->M && !isl_int_eq(tab->mat->row[row][2],
1584 tab->mat->row[row][0]))
1586 if (isl_seq_first_non_zero(tab->mat->row[row] + off + tab->n_dead,
1590 return !isl_int_is_divisible_by(tab->mat->row[row][1],
1591 tab->mat->row[row][0]);
1639 struct isl_mat *mat = tab->mat;
1652 if (isl_int_is_zero(mat->row[var->index][off + j]))
1654 if (isl_int_is_pos(mat->row[var->index][off + j]))
1681 isl_assert(tab->mat->ctx, tab->n_row < tab->mat->n_row, return -1);
1682 isl_assert(tab->mat->ctx, tab->n_con < tab->max_con, return -1);
1766 isl_assert(tab->mat->ctx, tab->n_col < tab->mat->n_col, return -1);
1781 isl_int_set_si(tab->mat->row[i][off + tab->n_col], 0);
1826 row = tab->mat->row[tab->con[r].index];
1835 row[0], tab->mat->row[tab->var[i].index][0]);
1839 row[0], tab->mat->row[tab->var[i].index][0]);
1842 b, tab->mat->row[tab->var[i].index] + 1,
1850 isl_seq_normalize(tab->mat->ctx, row, off + tab->n_col);
1862 isl_assert(tab->mat->ctx, ~tab->row_var[row] == tab->n_con - 1,
1907 isl_assert(tab->mat->ctx, tab->n_eq == bmap->n_eq,
1909 isl_assert(tab->mat->ctx,
1963 while (isl_int_is_pos(tab->mat->row[var->index][1])) {
1965 isl_assert(tab->mat->ctx, row != -1, return -1);
1973 if (!isl_int_is_zero(tab->mat->row[var->index][off + i]))
1976 isl_assert(tab->mat->ctx, i < tab->n_col, return -1);
2003 i = isl_seq_first_non_zero(tab->mat->row[r] + 2 + tab->M + tab->n_dead,
2005 isl_assert(tab->mat->ctx, i >= 0, goto error);
2024 return tab->M && !isl_int_is_zero(tab->mat->row[row][2]);
2031 if (!isl_int_is_zero(tab->mat->row[row][1]))
2035 return isl_seq_first_non_zero(tab->mat->row[row] + off + tab->n_dead,
2064 if (isl_int_is_neg(tab->mat->row[r][1])) {
2065 isl_seq_neg(tab->mat->row[r] + 1, tab->mat->row[r] + 1,
2094 row = tab->mat->row[tab->con[r].index];
2119 isl_assert(tab->mat->ctx, !tab->M, return isl_stat_error);
2160 sgn = isl_int_sgn(tab->mat->row[row][1]);
2163 isl_seq_neg(tab->mat->row[row] + 1, tab->mat->row[row] + 1,
2535 if (!isl_int_is_divisible_by(tab->mat->row[row][1],
2536 tab->mat->row[row][0]))
2547 vec = isl_vec_alloc(tab->mat->ctx, 1 + tab->n_var);
2558 tab->mat->row[row][1], tab->mat->row[row][0]);
2574 vec = isl_vec_alloc(tab->mat->ctx, 1 + tab->n_var);
2588 isl_int_gcd(m, vec->block.data[0], tab->mat->row[row][0]);
2589 isl_int_divexact(m, tab->mat->row[row][0], m);
2591 isl_int_divexact(m, vec->block.data[0], tab->mat->row[row][0]);
2592 isl_int_mul(vec->block.data[1 + i], m, tab->mat->row[row][1]);
2609 isl_int_cdiv_q(*v, tab->mat->row[var->index][1],
2610 tab->mat->row[var->index][0]);
2612 isl_int_fdiv_q(*v, tab->mat->row[var->index][1],
2613 tab->mat->row[var->index][0]);
2714 row = tab->mat->row[tab->n_row];
2717 isl_int_set(row[0], tab->mat->row[var->index][0]);
2719 tab->mat->row[var->index] + 1, 1 + tab->n_col);
2788 isl_die(tab->mat->ctx, isl_error_invalid,
2791 isl_die(tab->mat->ctx, isl_error_invalid,
2802 isl_int_add(tab->mat->row[var->index][1],
2803 tab->mat->row[var->index][1], tab->mat->row[var->index][0]);
2811 if (isl_int_is_zero(tab->mat->row[i][off + var->index]))
2813 isl_int_sub(tab->mat->row[i][1], tab->mat->row[i][1],
2814 tab->mat->row[i][off + var->index]);
2865 isl_int_addmul(tab->mat->row[var->index][1],
2866 shift, tab->mat->row[var->index][0]);
2872 if (isl_int_is_zero(tab->mat->row[i][off + var->index]))
2874 isl_int_submul(tab->mat->row[i][1],
2875 shift, tab->mat->row[i][off + var->index]);
2916 return tab->rational ? isl_int_is_zero(tab->mat->row[row][1])
2917 : isl_int_lt(tab->mat->row[row][1],
2918 tab->mat->row[row][0]);
3041 isl_die(tab->mat->ctx, isl_error_internal,
3332 return isl_int_is_zero(tab->mat->row[row][1]) &&
3334 isl_seq_first_non_zero(tab->mat->row[row] + off + tab->n_dead,
3380 isl_int_mul(tab->mat->row[var->index][0],
3381 tab->mat->row[var->index][0], denom);
3386 tab->dual = isl_vec_alloc(tab->mat->ctx, 1 + tab->n_con);
3389 isl_int_set(tab->dual->el[0], tab->mat->row[var->index][0]);
3399 tab->mat->row[var->index][pos]);
3402 tab->mat->row[var->index][pos]);
3407 isl_int_set(*opt, tab->mat->row[var->index][1]);
3408 isl_int_set(*opt_denom, tab->mat->row[var->index][0]);
3448 isl_mat *mat = tab->mat;
3459 pos = isl_seq_first_non_zero(mat->row[row] + off + tab->n_dead, n);
3463 isl_int_divexact(*value, mat->row[row][1], mat->row[row][0]);
3482 isl_int_mul(*tmp, tab->mat->row[var->index][0], target);
3484 return isl_int_ge(tab->mat->row[var->index][1], *tmp);
3486 return isl_int_le(tab->mat->row[var->index][1], *tmp);
3720 isl_int_sub(tab->mat->row[var->index][1],
3721 tab->mat->row[var->index][1], tab->mat->row[var->index][0]);
3724 isl_assert(tab->mat->ctx, sgn >= 0,
3731 if (isl_int_is_zero(tab->mat->row[i][off + var->index]))
3733 isl_int_add(tab->mat->row[i][1], tab->mat->row[i][1],
3734 tab->mat->row[i][off + var->index]);
3805 isl_assert(tab->mat->ctx, !var->is_row,
3826 isl_die(tab->mat->ctx, isl_error_internal,
3906 extra = isl_alloc_array(tab->mat->ctx, int, tab->n_col);
3929 if (!isl_int_is_zero(tab->mat->row[row][off+extra[j]]))
3931 isl_assert(tab->mat->ctx, j < n_extra, goto error);
4006 isl_assert(tab->mat->ctx, 0, return isl_stat_error);
4059 if (!isl_int_is_one(tab->mat->row[row][0]))
4062 pos = isl_seq_first_non_zero(tab->mat->row[row] + off + tab->n_dead,
4065 if (isl_int_is_negone(tab->mat->row[row][1]))
4071 if (!isl_int_eq(tab->mat->row[row][1],
4072 tab->mat->row[row][off + tab->n_dead + pos]))
4076 tab->mat->row[row] + off + tab->n_dead + pos + 1,
4112 else if (isl_int_is_neg(tab->mat->row[row][1]) &&
4114 isl_int_abs_ge(tab->mat->row[row][1],
4115 tab->mat->row[row][0]))) {
4154 isl_assert(tab->mat->ctx, tab->n_eq == bmap->n_eq, goto error);
4155 isl_assert(tab->mat->ctx,
4254 r = tab->mat->n_row;
4255 tab->mat->n_row = tab->n_row;
4256 c = tab->mat->n_col;
4257 tab->mat->n_col = 2 + tab->M + tab->n_col;
4258 isl_mat_print_internal(tab->mat, out, indent);
4259 tab->mat->n_row = r;
4260 tab->mat->n_col = c;