2 #include "isl_piplib.h"
3 #include "isl_sample_piplib.h"
5 struct isl_vec *isl_pip_basic_set_sample(struct isl_ctx *ctx,
6 struct isl_basic_set *bset)
8 PipOptions *options = NULL;
9 PipMatrix *domain = NULL;
11 struct isl_basic_map *bmap = (struct isl_basic_map *)bset;
12 struct isl_vec *vec = NULL;
17 dim = bmap->nparam + bmap->n_in + bmap->n_out;
18 domain = isl_basic_map_to_pip(bmap, 0, 0, 0);
22 options = pip_options_init();
25 options->Simplify = 1;
26 options->Urs_unknowns = -1;
27 sol = pip_solve(domain, NULL, -1, options);
31 vec = isl_vec_alloc(ctx, 0);
35 vec = isl_vec_alloc(ctx, 1 + dim);
38 isl_int_set_si(vec->block.data[0], 1);
39 for (i = 0, l = sol->list; l && i < dim; ++i, l = l->next) {
40 isl_seq_cpy_from_pip(&vec->block.data[1+i],
41 &l->vector->the_vector[0], 1);
42 if (entier_zero_p(l->vector->the_deno[0]))
43 isl_int_set_si(vec->block.data[0], 0);
50 pip_options_free(options);
51 pip_matrix_free(domain);
53 isl_basic_map_free(ctx, bmap);
56 isl_vec_free(ctx, vec);
57 isl_basic_map_free(ctx, bmap);
61 pip_matrix_free(domain);