void ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t ph, int x, int nb_new_dims) { ppl_dimension_type i, dim; ppl_dimension_type *map; ppl_dimension_type x_ppl, nb_new_dims_ppl; x_ppl = (ppl_dimension_type) x; nb_new_dims_ppl = (ppl_dimension_type) nb_new_dims; ppl_Pointset_Powerset_C_Polyhedron_space_dimension (ph, &dim); ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (ph, nb_new_dims); map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim + nb_new_dims); for (i = 0; i < x_ppl; i++) map[i] = i; for (i = x_ppl; i < x_ppl + nb_new_dims_ppl; i++) map[dim + i - x_ppl] = i; for (i = x_ppl + nb_new_dims_ppl; i < dim + nb_new_dims_ppl; i++) map[i - nb_new_dims_ppl] = i; ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (ph, map, dim + nb_new_dims); free (map); }
static ppl_Pointset_Powerset_C_Polyhedron_t map_dr_into_dep_poly (graphite_dim_t dim, ppl_Pointset_Powerset_C_Polyhedron_t dr, graphite_dim_t cut0, graphite_dim_t cut1, graphite_dim_t nb0, graphite_dim_t nb1) { ppl_dimension_type pdim; ppl_dimension_type *map; ppl_Pointset_Powerset_C_Polyhedron_t res; ppl_dimension_type i; ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (&res, dr); ppl_Pointset_Powerset_C_Polyhedron_space_dimension (res, &pdim); map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, pdim); /* First mapping: move 'g' vector to right position. */ for (i = 0; i < cut0; i++) map[i] = i; for (i = cut0; i < cut1; i++) map[i] = pdim - cut1 + i; for (i = cut1; i < pdim; i++) map[i] = cut0 + i - cut1; ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (res, map, pdim); free (map); /* After swapping 's' and 'g' vectors, we have to update a new cut. */ cut1 = pdim - cut1 + cut0; ppl_insert_dimensions_pointset (res, 0, nb0); ppl_insert_dimensions_pointset (res, nb0 + cut0, nb1); ppl_insert_dimensions_pointset (res, nb0 + nb1 + cut1, dim - nb0 - nb1 - pdim); return res; }