27 return mat ? mat->ctx : NULL;
43 for (i = 0; i < mat->n_row; ++i) {
54 unsigned n_row,
unsigned n_col)
72 for (i = 0; i <
n_row; ++i)
101 if (mat->max_col >=
n_col && mat->n_row >=
n_row) {
102 if (mat->n_col <
n_col)
107 if (mat->max_col <
n_col) {
110 if (n_row < mat->
n_row)
115 for (i = 0; i < mat->n_row; ++i)
125 old = mat->block.data;
134 for (i = 0; i < mat->n_row; ++i)
135 mat->row[i] = mat->block.data + (mat->row[i] - old);
136 for (i = mat->n_row; i <
n_row; ++i)
137 mat->row[i] = mat->block.data + i * mat->max_col;
139 if (mat->n_col <
n_col)
149 unsigned first_row,
unsigned n_row,
unsigned first_col,
unsigned n_col)
160 for (i = 0; i <
n_row; ++i)
161 mat->
row[i] =
row[first_row+i] + first_col;
176 unsigned first_row,
unsigned n_row,
unsigned first_col,
unsigned n_col)
185 unsigned n_row,
unsigned dst_col,
unsigned src_col,
unsigned n_col)
189 for (i = 0; i <
n_row; ++i)
194 unsigned n_row,
unsigned dst_col,
unsigned src_col,
unsigned n_col)
198 for (i = 0; i <
n_row; ++i)
221 for (i = 0; i < mat->n_row; ++i)
273 if (col < 0 || col >= mat->n_col)
285 if (row < 0 || row >= mat->n_row)
298 if (first +
n > mat->n_col || first +
n < first)
300 "column position or range out of bounds",
312 if (first +
n > mat->n_row || first +
n < first)
314 "row position or range out of bounds",
357 int row,
int col,
int v)
377 "expecting integer value",
goto error);
394 for (i = 0; i <
n_row; ++i) {
413 for (i = 0; i <
n_row; ++i)
434 if (mat->n_row != mat->n_col)
437 for (i = 0; i < mat->n_row; ++i) {
440 if (
isl_int_ne(mat->row[0][0], mat->row[i][i]))
443 mat->n_col - (i + 1)) != -1)
459 isl_assert(mat->ctx, mat->n_col == vec->size,
goto error);
465 for (i = 0; i < prod->
size; ++i)
488 for (i = 0; i < vec->size; ++i)
496 for (i = 0; i < vec->size; ++i)
515 isl_assert(mat->ctx, mat->n_row == vec->size,
goto error);
521 for (i = 0; i < prod->
size; ++i) {
523 for (j = 0; j < vec->size; ++j)
544 isl_assert(left->ctx, left->n_row == right->n_row,
goto error);
545 isl_assert(left->ctx, left->n_row >= 1,
goto error);
546 isl_assert(left->ctx, left->n_col >= 1,
goto error);
547 isl_assert(left->ctx, right->n_col >= 1,
goto error);
555 sum =
isl_mat_alloc(left->ctx, left->n_row, left->n_col + right->n_col - 1);
563 for (i = 1; i < sum->
n_row; ++i) {
566 right->row[0][0], right->row[i][0]);
570 right->row[i]+1, right->row[0][0],
589 for (r =
row; r <
M->n_row; ++r)
592 for (r = 0; r < (*U)->n_row; ++r)
603 for (r =
row; r <
M->n_row; ++r)
606 for (r = 0; r < (*U)->n_row; ++r)
610 for (r = 0; r < (*Q)->n_col; ++r)
619 for (r =
row; r <
M->n_row; ++r)
622 for (r = 0; r < (*U)->n_row; ++r)
626 isl_seq_neg((*Q)->row[col], (*Q)->row[col], (*Q)->n_col);
685 M->n_col-first)) != -1) {
694 for (i = 0; i < col; ++i) {
733 if (nr < 0 || nc < 0)
738 for (k = 0; k < nr; ++k) {
769 if (nr < 0 || nc < 0)
774 for (; last >= 0; --last) {
775 for (k =
row; k >= 0; --k)
808 if (nr < 0 || nc < 0)
811 for (i = 0; i < nr; ++i) {
841 for (col = first_col,
row = 0; col < H->n_col; ++col) {
905 for (i = 0; i < mat->n_row; ++i) {
931 mat1->n_col + mat2->n_col);
934 for (i = 0; i < mat1->n_row; ++i) {
938 for (i = 0; i < mat2->n_row; ++i) {
941 mat2->row[i], mat2->n_col);
956 for (i = 0; i <
n_row; ++i)
967 for (i = min + 1; i <
n_row; ++i) {
982 if (!*left || !*right)
999 left->ctx->one, left->row[i]+
row,
1003 m, right->row[
row], right->n_col);
1014 if (!left || !right)
1017 isl_assert(left->ctx, left->n_row == left->n_col,
goto error);
1018 isl_assert(left->ctx, left->n_row == right->n_row,
goto error);
1020 if (left->n_row == 0) {
1027 if (!left || !right)
1032 for (
row = 0;
row < left->n_row; ++
row) {
1033 int pivot, first, i, off;
1038 isl_assert(left->ctx, pivot >= 0,
goto error);
1048 left->n_row-first,
row)) != -1) {
1060 for (i = 0; i <
row; ++i) {
1068 a, left->row[i] + i,
1069 b, left->row[
row] + i,
1072 b, right->row[
row], right->n_col);
1084 for (
row = 0;
row < left->n_row; ++
row) {
1089 left->row[
row][
row], right->n_col);
1105 for (i = 0; i < mat->n_row; ++i)
1116 for (i = 0; i < mat->n_row; ++i) {
1141 for (
row = 0;
row < mat->n_row; ++
row) {
1142 int pivot, first, i, off;
1147 isl_assert(mat->ctx, pivot >= 0,
goto error);
1156 mat->n_col-first)) != -1) {
1166 for (i = 0; i <
row; ++i) {
1186 for (
row = 0;
row < mat->n_row; ++
row) {
1205 struct isl_mat *transpose = NULL;
1211 if (mat->n_col == mat->n_row) {
1215 for (i = 0; i < mat->n_row; ++i)
1216 for (j = i + 1; j < mat->n_col; ++j)
1220 transpose =
isl_mat_alloc(mat->ctx, mat->n_col, mat->n_row);
1223 for (i = 0; i < mat->n_row; ++i)
1224 for (j = 0; j < mat->n_col; ++j)
1234 unsigned i,
unsigned j)
1243 for (r = 0; r < mat->n_row; ++r)
1249 unsigned i,
unsigned j)
1261 mat->row[i] = mat->row[j];
1277 if (!left || !right)
1279 isl_assert(left->ctx, left->n_col == right->n_row,
goto error);
1283 if (left->n_col == 0) {
1284 for (i = 0; i < prod->
n_row; ++i)
1290 for (i = 0; i < prod->
n_row; ++i) {
1291 for (j = 0; j < prod->
n_col; ++j)
1293 left->row[i][0], right->row[0][j]);
1294 for (k = 1; k < left->n_col; ++k) {
1297 for (j = 0; j < prod->
n_col; ++j)
1299 left->row[i][k], right->row[k][j]);
1323 unsigned n_div,
int has_div,
struct isl_mat *mat)
1334 for (i = 0; i <
n; ++i)
1340 for (i = 0; i <
n; ++i) {
1343 q[i] + has_div +
t->n_col + e, n_div);
1376 if (mat->n_col > mat->n_row) {
1378 mat->n_col - mat->n_row);
1381 }
else if (mat->n_col < mat->n_row) {
1385 bset->dim->n_out -= mat->n_row - mat->n_col;
1388 if (
preimage(ctx, bset->eq, bset->n_eq, bset->n_div, 0,
1392 if (
preimage(ctx, bset->ineq, bset->n_ineq, bset->n_div, 0,
1396 if (
preimage(ctx, bset->div, bset->n_div, bset->n_div, 1, mat) < 0)
1425 for (i = 0; i <
set->n; ++i) {
1431 if (mat->n_col != mat->n_row) {
1435 set->dim->n_out += mat->n_col;
1436 set->dim->n_out -= mat->n_row;
1465 for (i = 0; i < n_row; ++i)
1476 fprintf(out,
"%*snull mat\n", indent,
"");
1480 if (mat->n_row == 0)
1481 fprintf(out,
"%*s[]\n", indent,
"");
1483 for (i = 0; i < mat->n_row; ++i) {
1485 fprintf(out,
"%*s[[", indent,
"");
1487 fprintf(out,
"%*s[", indent+1,
"");
1488 for (j = 0; j < mat->n_col; ++j) {
1493 if (i == mat->n_row-1)
1494 fprintf(out,
"]]\n");
1496 fprintf(out,
"]\n");
1506 unsigned col,
unsigned n)
1517 if (col != mat->n_col-
n) {
1518 for (r = 0; r < mat->n_row; ++r)
1520 mat->n_col - col -
n);
1527 unsigned row,
unsigned n)
1535 for (r = row; r+
n < mat->n_row; ++r)
1536 mat->row[r] = mat->row[r+
n];
1543 unsigned col,
unsigned n)
1558 col +
n, col, mat->n_col - col);
1568 unsigned first,
unsigned n)
1578 for (i = 0; i < mat->n_row; ++i)
1593 unsigned row,
unsigned n)
1608 mat->n_row - row, 0, 0, mat->n_col);
1626 unsigned row,
unsigned n)
1634 for (i = 0; i <
n; ++i)
1649 int dst_col,
isl_int f,
int src_col)
1653 for (i = 0; i < mat->n_row; ++i)
1664 for (i = 0; i < mat->n_row; ++i)
1666 mat->row[i][dst_col], mat->row[i][src_col]);
1674 for (i = 0; i < mat->n_row; ++i)
1675 isl_int_mul(mat->row[i][dst_col],
f, mat->row[i][src_col]);
1689 for (i = 0; i < mat->n_row; ++i) {
1710 for (i = 0; i < mat->n_row; ++i) {
1733 isl_seq_neg(mat->row[row], mat->row[row], mat->n_col);
1740 struct isl_mat *H = NULL, *Q = NULL;
1748 M->n_row =
M->n_col;
1751 for (r = 0; r <
row; ++r)
1753 for (r =
row; r <
M->n_row; ++r)
1773 isl_assert(top->ctx, top->n_col == bot->n_col,
goto error);
1774 if (top->n_row == 0) {
1778 if (bot->n_row == 0) {
1783 mat =
isl_mat_alloc(top->ctx, top->n_row + bot->n_row, top->n_col);
1806 if (mat1->n_row != mat2->n_row)
1809 if (mat1->n_col != mat2->n_col)
1812 for (i = 0; i < mat1->n_row; ++i)
1813 if (!
isl_seq_eq(mat1->row[i], mat2->row[i], mat1->n_col))
1846 if (
row >= mat->n_row)
1865 unsigned dst_col,
unsigned src_col,
unsigned n)
1871 if (
n == 0 || dst_col == src_col)
1878 if (dst_col < src_col) {
1882 dst_col, src_col,
n);
1884 dst_col +
n, dst_col, src_col - dst_col);
1886 src_col +
n, src_col +
n,
1887 res->n_col - src_col -
n);
1892 src_col, src_col +
n, dst_col - src_col);
1894 dst_col, src_col,
n);
1896 dst_col +
n, dst_col +
n,
1897 res->n_col - dst_col -
n);
1930 for (i = 0; i < mat->n_row; ++i) {
1950 for (i = 0; i < mat->n_row; ++i)
1967 for (i = 0; i < mat->n_row; ++i)
2023 for (i = 0; i < mat->n_col; ++i)
2062 if (n1 < 0 || !H || !Q)
static RegisterPass< ScopPrinterWrapperPass > M("dot-scops", "Polly - Print Scops of function")
#define isl_die(ctx, errno, msg, code)
void isl_ctx_deref(struct isl_ctx *ctx)
#define isl_assert(ctx, test, code)
isl_bool isl_bool_ok(int b)
#define isl_alloc_array(ctx, type, n)
#define isl_calloc_array(ctx, type, n)
#define ISL_F_ISSET(p, f)
#define isl_alloc_type(ctx, type)
#define isl_realloc_array(ctx, ptr, type, n)
void isl_ctx_ref(struct isl_ctx *ctx)
#define isl_hash_hash(h, h2)
#define isl_hash_byte(h, b)
void GMPZAPI() neg(mp_int rop, mp_int op)
void GMPZAPI() gcd(mp_int rop, mp_int op1, mp_int op2)
struct isl_blk isl_blk_extend(struct isl_ctx *ctx, struct isl_blk block, size_t new_n)
int isl_blk_is_error(struct isl_blk block)
void isl_blk_free(struct isl_ctx *ctx, struct isl_blk block)
struct isl_blk isl_blk_alloc(struct isl_ctx *ctx, size_t n)
struct isl_blk isl_blk_empty()
#define isl_int_is_nonneg(i)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_print(out, i, width)
#define isl_int_is_neg(i)
#define isl_int_gcd(r, i, j)
#define isl_int_neg(r, i)
#define isl_int_add(r, i, j)
#define isl_int_addmul(r, i, j)
#define isl_int_abs_lt(i, j)
#define isl_int_set(r, i)
#define isl_int_cdiv_q(r, i, j)
#define isl_int_lcm(r, i, j)
#define isl_int_divexact(r, i, j)
#define isl_int_mul(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_fdiv_q(r, i, j)
#define isl_int_swap(i, j)
#define isl_int_submul(r, i, j)
__isl_give isl_set * isl_set_cow(__isl_take isl_set *set)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
isl_stat isl_basic_set_check_no_params(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_cow(__isl_take isl_basic_set *bset)
#define ISL_BASIC_SET_NO_REDUNDANT
#define ISL_BASIC_SET_ALL_EQUALITIES
#define ISL_BASIC_SET_NO_IMPLICIT
__isl_give isl_basic_set * isl_basic_set_simplify(__isl_take isl_basic_set *bset)
#define ISL_SET_NORMALIZED
#define ISL_BASIC_SET_SORTED
__isl_give isl_basic_set * isl_basic_set_finalize(__isl_take isl_basic_set *bset)
#define ISL_BASIC_SET_NORMALIZED_DIVS
void isl_mat_sub_copy(struct isl_ctx *ctx, isl_int **dst, isl_int **src, unsigned n_row, unsigned dst_col, unsigned src_col, unsigned n_col)
__isl_give isl_mat * isl_mat_set_element(__isl_take isl_mat *mat, int row, int col, isl_int v)
__isl_give isl_mat * isl_mat_cow(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_transpose(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
int isl_mat_get_element(__isl_keep isl_mat *mat, int row, int col, isl_int *v)
void isl_mat_dump(__isl_keep isl_mat *mat)
void isl_mat_sub_neg(struct isl_ctx *ctx, isl_int **dst, isl_int **src, unsigned n_row, unsigned dst_col, unsigned src_col, unsigned n_col)
__isl_give isl_mat * isl_mat_row_basis_extension(__isl_take isl_mat *mat1, __isl_take isl_mat *mat2)
__isl_give isl_mat * isl_mat_insert_zero_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
__isl_give isl_vec * isl_mat_vec_inverse_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_normalize_row(__isl_take isl_mat *mat, int row)
__isl_give isl_mat * isl_mat_product(__isl_take isl_mat *left, __isl_take isl_mat *right)
static isl_stat check_row(__isl_keep isl_mat *mat, int row)
__isl_give isl_mat * isl_mat_add_zero_cols(__isl_take isl_mat *mat, unsigned n)
__isl_give isl_mat * isl_mat_col_neg(__isl_take isl_mat *mat, int col)
__isl_give isl_mat * isl_mat_scale_down(__isl_take isl_mat *mat, isl_int m)
static int row_first_non_zero(isl_int **row, unsigned n_row, unsigned col)
__isl_give isl_mat * isl_mat_insert_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
static isl_stat inv_exchange(__isl_keep isl_mat **left, __isl_keep isl_mat **right, unsigned i, unsigned j)
void isl_mat_col_combine(__isl_keep isl_mat *mat, unsigned dst, isl_int m1, unsigned src1, isl_int m2, unsigned src2)
__isl_give isl_mat * isl_mat_right_kernel(__isl_take isl_mat *mat)
isl_size isl_mat_cols(__isl_keep isl_mat *mat)
void isl_mat_print_internal(__isl_keep isl_mat *mat, FILE *out, int indent)
__isl_give isl_basic_set * isl_basic_set_preimage(__isl_take isl_basic_set *bset, __isl_take isl_mat *mat)
isl_size isl_mat_rows(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_identity(isl_ctx *ctx, unsigned n_row)
isl_bool isl_mat_has_linearly_independent_rows(__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2)
static void oppose(__isl_keep isl_mat *M, __isl_keep isl_mat **U, __isl_keep isl_mat **Q, unsigned row, unsigned col)
__isl_give isl_mat * isl_mat_set_element_val(__isl_take isl_mat *mat, int row, int col, __isl_take isl_val *v)
__isl_give isl_mat * isl_mat_swap_cols(__isl_take isl_mat *mat, unsigned i, unsigned j)
__isl_give isl_mat * isl_mat_sub_alloc6(isl_ctx *ctx, isl_int **row, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
__isl_give isl_mat * isl_mat_from_row_vec(__isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_diag(isl_ctx *ctx, unsigned n_row, isl_int d)
__isl_give isl_mat * isl_mat_left_hermite(__isl_take isl_mat *M, int neg, __isl_give isl_mat **U, __isl_give isl_mat **Q)
__isl_give isl_mat * isl_mat_zero(isl_ctx *ctx, unsigned n_row, unsigned n_col)
__isl_give isl_mat * isl_mat_drop_rows(__isl_take isl_mat *mat, unsigned row, unsigned n)
__isl_give isl_vec * isl_mat_vec_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_diagonal(__isl_take isl_mat *mat1, __isl_take isl_mat *mat2)
static void inv_subtract(__isl_keep isl_mat *left, __isl_keep isl_mat *right, unsigned row, unsigned i, isl_int m)
isl_stat isl_mat_row_gcd(__isl_keep isl_mat *mat, int row, isl_int *gcd)
void isl_mat_col_mul(__isl_keep isl_mat *mat, int dst_col, isl_int f, int src_col)
__isl_give isl_mat * isl_mat_row_basis(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_right_inverse(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_swap_rows(__isl_take isl_mat *mat, unsigned i, unsigned j)
__isl_give isl_mat * isl_mat_row_neg(__isl_take isl_mat *mat, int row)
__isl_give isl_mat * isl_mat_lin_to_aff(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_lexnonneg_rows(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_reverse_gauss(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_add_rows(__isl_take isl_mat *mat, unsigned n)
__isl_give isl_mat * isl_mat_col_addmul(__isl_take isl_mat *mat, int dst_col, isl_int f, int src_col)
static isl_stat check_col(__isl_keep isl_mat *mat, int col)
__isl_give isl_val * isl_mat_get_element_val(__isl_keep isl_mat *mat, int row, int col)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
static int hermite_first_zero_col(__isl_keep isl_mat *H, int first_col, int n_row)
static int row_abs_min_non_zero(isl_int **row, unsigned n_row, unsigned col)
static void subtract(__isl_keep isl_mat *M, __isl_keep isl_mat **U, __isl_keep isl_mat **Q, unsigned row, unsigned i, unsigned j, isl_int m)
__isl_give isl_mat * isl_mat_dup(__isl_keep isl_mat *mat)
__isl_give isl_vec * isl_mat_get_row(__isl_keep isl_mat *mat, unsigned row)
isl_stat isl_mat_sub_transform(isl_int **row, unsigned n_row, unsigned first_col, __isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_insert_zero_cols(__isl_take isl_mat *mat, unsigned first, unsigned n)
static isl_stat check_row_range(__isl_keep isl_mat *mat, unsigned first, unsigned n)
__isl_give isl_mat * isl_mat_scale(__isl_take isl_mat *mat, isl_int m)
void isl_mat_col_scale(__isl_keep isl_mat *mat, unsigned col, isl_int m)
void isl_mat_gcd(__isl_keep isl_mat *mat, isl_int *gcd)
void isl_mat_col_submul(__isl_keep isl_mat *mat, int dst_col, isl_int f, int src_col)
void isl_mat_col_add(__isl_keep isl_mat *mat, int dst_col, int src_col)
int isl_mat_initial_non_zero_cols(__isl_keep isl_mat *mat)
__isl_give isl_mat * isl_mat_alloc(isl_ctx *ctx, unsigned n_row, unsigned n_col)
__isl_give isl_mat * isl_mat_sub_alloc(__isl_keep isl_mat *mat, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
__isl_give isl_mat * isl_mat_vec_concat(__isl_take isl_mat *top, __isl_take isl_vec *bot)
static void inv_oppose(__isl_keep isl_mat *left, __isl_keep isl_mat *right, unsigned row)
static isl_stat check_col_range(__isl_keep isl_mat *mat, unsigned first, unsigned n)
static __isl_give isl_mat * eliminate(__isl_take isl_mat *mat, int row, int col)
isl_ctx * isl_mat_get_ctx(__isl_keep isl_mat *mat)
isl_size isl_mat_rank(__isl_keep isl_mat *mat)
isl_bool isl_mat_is_scaled_identity(__isl_keep isl_mat *mat)
__isl_give isl_set * isl_set_preimage(__isl_take isl_set *set, __isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_concat(__isl_take isl_mat *top, __isl_take isl_mat *bot)
uint32_t isl_mat_get_hash(__isl_keep isl_mat *mat)
isl_bool isl_mat_is_equal(__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2)
__isl_give isl_mat * isl_mat_set_element_si(__isl_take isl_mat *mat, int row, int col, int v)
__isl_give isl_mat * isl_mat_inverse_product(__isl_take isl_mat *left, __isl_take isl_mat *right)
__isl_give isl_mat * isl_mat_add_zero_rows(__isl_take isl_mat *mat, unsigned n)
__isl_give isl_mat * isl_mat_extend(__isl_take isl_mat *mat, unsigned n_row, unsigned n_col)
__isl_give isl_mat * isl_mat_scale_down_row(__isl_take isl_mat *mat, int row, isl_int m)
static int preimage(struct isl_ctx *ctx, isl_int **q, unsigned n, unsigned n_div, int has_div, struct isl_mat *mat)
__isl_give isl_mat * isl_mat_normalize(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_aff_direct_sum(__isl_take isl_mat *left, __isl_take isl_mat *right)
__isl_give isl_mat * isl_mat_insert_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
static void exchange(__isl_keep isl_mat *M, __isl_keep isl_mat **U, __isl_keep isl_mat **Q, unsigned row, unsigned i, unsigned j)
__isl_give isl_mat * isl_mat_drop_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
__isl_give isl_mat * isl_mat_unimodular_complete(__isl_take isl_mat *M, int row)
__isl_give isl_mat * isl_mat_move_cols(__isl_take isl_mat *mat, unsigned dst_col, unsigned src_col, unsigned n)
__isl_give isl_vec * isl_vec_mat_product(__isl_take isl_vec *vec, __isl_take isl_mat *mat)
void isl_seq_combine(isl_int *dst, isl_int m1, isl_int *src1, isl_int m2, isl_int *src2, unsigned len)
void isl_seq_inner_product(isl_int *p1, isl_int *p2, unsigned len, isl_int *prod)
int isl_seq_abs_min_non_zero(isl_int *p, unsigned len)
int isl_seq_first_non_zero(isl_int *p, unsigned len)
void isl_seq_scale_down(isl_int *dst, isl_int *src, isl_int m, unsigned len)
void isl_seq_swp_or_cpy(isl_int *dst, isl_int *src, unsigned len)
void isl_seq_gcd(isl_int *p, unsigned len, isl_int *gcd)
void isl_seq_clr(isl_int *p, unsigned len)
void isl_seq_scale(isl_int *dst, isl_int *src, isl_int m, unsigned len)
void isl_seq_elim(isl_int *dst, isl_int *src, unsigned pos, unsigned len, isl_int *m)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
uint32_t isl_seq_get_hash(isl_int *p, unsigned len)
int isl_seq_eq(isl_int *p1, isl_int *p2, unsigned len)
void isl_seq_normalize(struct isl_ctx *ctx, isl_int *p, unsigned len)
void isl_seq_neg(isl_int *dst, isl_int *src, unsigned len)
__isl_give isl_space * isl_space_cow(__isl_take isl_space *space)
__isl_give isl_val * isl_val_int_from_isl_int(isl_ctx *ctx, isl_int n)
struct isl_basic_set isl_basic_set
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_add_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned n)
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
__isl_export isl_bool isl_val_is_int(__isl_keep isl_val *v)
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)