summaryrefslogtreecommitdiff
path: root/isl_sample.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@purples.(none)>2009-09-13 19:39:17 +0200
committerSven Verdoolaege <skimo@purples.(none)>2009-09-13 19:39:17 +0200
commit2cc57ea2b8a85684ea243fbd3581483670356168 (patch)
treed6a5dc13ece2e26d9b6168ec4db575807db2cbfc /isl_sample.c
parent6437c208a0d25a16fbadd23676d66468caa9e8b2 (diff)
downloadisl-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.c34
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;
+}