diff options
author | Sven Verdoolaege <skimo@purples.(none)> | 2009-09-13 19:39:17 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@purples.(none)> | 2009-09-13 19:39:17 +0200 |
commit | 2cc57ea2b8a85684ea243fbd3581483670356168 (patch) | |
tree | d6a5dc13ece2e26d9b6168ec4db575807db2cbfc /isl_sample.c | |
parent | 6437c208a0d25a16fbadd23676d66468caa9e8b2 (diff) | |
download | isl-2cc57ea2b8a85684ea243fbd3581483670356168.tar.gz isl-2cc57ea2b8a85684ea243fbd3581483670356168.tar.bz2 isl-2cc57ea2b8a85684ea243fbd3581483670356168.zip |
isl_sample.c: move isl_basic_set_from_vec from isl_affine_hull.c
Diffstat (limited to 'isl_sample.c')
-rw-r--r-- | isl_sample.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/isl_sample.c b/isl_sample.c index 1d3b296c..4784f144 100644 --- a/isl_sample.c +++ b/isl_sample.c @@ -939,3 +939,37 @@ struct isl_vec *isl_basic_set_sample_bounded(struct isl_basic_set *bset) { return basic_set_sample(bset, 1); } + +__isl_give isl_basic_set *isl_basic_set_from_vec(__isl_take isl_vec *vec) +{ + int i; + int k; + struct isl_basic_set *bset = NULL; + struct isl_ctx *ctx; + unsigned dim; + + if (!vec) + return NULL; + ctx = vec->ctx; + isl_assert(ctx, vec->size != 0, goto error); + + bset = isl_basic_set_alloc(ctx, 0, vec->size - 1, 0, vec->size - 1, 0); + if (!bset) + goto error; + dim = isl_basic_set_n_dim(bset); + for (i = dim - 1; i >= 0; --i) { + k = isl_basic_set_alloc_equality(bset); + if (k < 0) + goto error; + isl_seq_clr(bset->eq[k], 1 + dim); + isl_int_neg(bset->eq[k][0], vec->el[1 + i]); + isl_int_set(bset->eq[k][1 + i], vec->el[0]); + } + isl_vec_free(vec); + + return bset; +error: + isl_basic_set_free(bset); + isl_vec_free(vec); + return NULL; +} |