add isl_union_pw_qpolynomial_to_polynomial
[platform/upstream/isl.git] / doc / user.pod
index d324e5b..69e962b 100644 (file)
@@ -205,6 +205,10 @@ after the last use.
 
 =item isl_int_set_si(r,i)
 
+=item isl_int_set_gmp(r,g)
+
+=item isl_int_get_gmp(i,g)
+
 =item isl_int_abs(r,i)
 
 =item isl_int_neg(r,i)
@@ -546,6 +550,19 @@ appear in the last columns before the constant column.
 The coefficients of any existentially quantified variables appear
 between those of the set variables and those of the parameters.
 
+=head3 Extended C<PolyLib> format
+
+The extended C<PolyLib> format is nearly identical to the
+C<PolyLib> format.  The only difference is that the line
+containing the number of rows and columns of a constraint matrix
+also contains four additional numbers:
+the number of output dimensions, the number of input dimensions,
+the number of local dimensions (i.e., the number of existentially
+quantified variables) and the number of parameters.
+For sets, the number of ``output'' dimensions is equal
+to the number of set dimensions, while the number of ``input''
+dimensions is zero.
+
 =head3 Input
 
        #include <isl_set.h>
@@ -601,8 +618,9 @@ The behavior of the printer can be modified in various ways
        __isl_give isl_printer *isl_printer_set_suffix(
                __isl_take isl_printer *p, const char *suffix);
 
-The C<output_format> may be either C<ISL_FORMAT_ISL>, C<ISL_FORMAT_OMEGA>
-or C<ISL_FORMAT_POLYLIB> and defaults to C<ISL_FORMAT_ISL>.
+The C<output_format> may be either C<ISL_FORMAT_ISL>, C<ISL_FORMAT_OMEGA>,
+C<ISL_FORMAT_POLYLIB>, C<ISL_FORMAT_EXT_POLYLIB> or C<ISL_FORMAT_LATEX>
+and defaults to C<ISL_FORMAT_ISL>.
 Each line in the output is indented by C<indent> spaces
 (default: 0), prefixed by C<prefix> and suffixed by C<suffix>.
 In the C<PolyLib> format output,
@@ -1201,6 +1219,15 @@ The followning functions check whether the domain of the given
 The functions above construct a (basic, regular or union) relation
 that maps (a wrapped version of) the input relation to its domain or range.
 
+=item * Identity
+
+       __isl_give isl_map *isl_set_identity(
+               __isl_take isl_set *set);
+       __isl_give isl_union_map *isl_union_set_identity(
+               __isl_take isl_union_set *uset);
+
+Construct an identity relation on the given (union) set.
+
 =item * Deltas
 
        __isl_give isl_basic_set *isl_basic_map_deltas(
@@ -1271,6 +1298,23 @@ of the constraints describing the basic sets or relations in the input.
 In case of union sets and relations, the affine hull is computed
 per space.
 
+=item * Polyhedral hull
+
+       __isl_give isl_basic_set *isl_set_polyhedral_hull(
+               __isl_take isl_set *set);
+       __isl_give isl_basic_map *isl_map_polyhedral_hull(
+               __isl_take isl_map *map);
+       __isl_give isl_union_set *isl_union_set_polyhedral_hull(
+               __isl_take isl_union_set *uset);
+       __isl_give isl_union_map *isl_union_map_polyhedral_hull(
+               __isl_take isl_union_map *umap);
+
+These functions compute a single basic set or relation
+not involving any existentially quantified variables
+that contains the whole input set or relation.
+In case of union sets and relations, the polyhedral hull is computed
+per space.
+
 =item * Power
 
        __isl_give isl_map *isl_map_power(__isl_take isl_map *map,
@@ -1330,6 +1374,23 @@ the overapproximation), then you will get an error message.
        __isl_give isl_union_map *isl_union_set_unwrap(
                __isl_take isl_union_set *uset);
 
+=item * Flattening
+
+Remove any internal structure of domain (and range) of the given
+set or relation.  If there is any such internal structure in the input,
+then the name of the space is also removed.
+
+       __isl_give isl_set *isl_set_flatten(
+               __isl_take isl_set *set);
+       __isl_give isl_map *isl_map_flatten(
+               __isl_take isl_map *map);
+
+       __isl_give isl_map *isl_set_flatten_map(
+               __isl_take isl_set *set);
+
+The function above constructs a relation
+that maps the input set to a flattened version of the set.
+
 =item * Dimension manipulation
 
        __isl_give isl_set *isl_set_add_dims(
@@ -1680,8 +1741,10 @@ enumerating and return C<-1> as well.
 If the enumeration is performed successfully and to completion,
 then C<isl_set_foreach_point> returns C<0>.
 
-To obtain a single point of a set, use
+To obtain a single point of a (basic) set, use
 
+       __isl_give isl_point *isl_basic_set_sample_point(
+               __isl_take isl_basic_set *bset);
        __isl_give isl_point *isl_set_sample_point(
                __isl_take isl_set *set);
 
@@ -1973,9 +2036,20 @@ are returned in C<*n> and C<*d>, respectively.
 
 The gist operation applies the gist operation to each of
 the cells in the domain of the input piecewise quasipolynomial.
-In future, the operation will also exploit the context
+The context is also exploited
 to simplify the quasipolynomials associated to each cell.
 
+       __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_to_polynomial(
+               __isl_take isl_pw_qpolynomial *pwqp, int sign);
+       __isl_give isl_union_pw_qpolynomial *
+       isl_union_pw_qpolynomial_to_polynomial(
+               __isl_take isl_union_pw_qpolynomial *upwqp, int sign);
+
+Approximate each quasipolynomial by a polynomial.  If C<sign> is positive,
+the polynomial will be an overapproximation.  If C<sign> is negative,
+it will be an underapproximation.  If C<sign> is zero, the approximation
+will lie somewhere in between.
+
 =head2 Bounds on Piecewise Quasipolynomials and Piecewise Quasipolynomial Reductions
 
 A piecewise quasipolynomial reduction is a piecewise
@@ -2037,7 +2111,15 @@ output format of the printer
 needs to be set to either C<ISL_FORMAT_ISL> or C<ISL_FORMAT_C>.
 For C<isl_printer_print_union_pw_qpolynomial_fold>,
 output format of the printer
-needs to be set to either C<ISL_FORMAT_ISL>.
+needs to be set to C<ISL_FORMAT_ISL>.
+In case of printing in C<ISL_FORMAT_C>, the user may want
+to set the names of all dimensions
+
+       __isl_give isl_pw_qpolynomial_fold *
+       isl_pw_qpolynomial_fold_set_dim_name(
+               __isl_take isl_pw_qpolynomial_fold *pwf,
+               enum isl_dim_type type, unsigned pos,
+               const char *s);
 
 =head3 Inspecting (Piecewise) Quasipolynomial Reductions
 
@@ -2075,6 +2157,10 @@ To iterate over all quasipolynomials in a reduction, use
 
 =head3 Operations on Piecewise Quasipolynomial Reductions
 
+       __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_add(
+               __isl_take isl_pw_qpolynomial_fold *pwf1,
+               __isl_take isl_pw_qpolynomial_fold *pwf2);
+
        __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_fold(
                __isl_take isl_pw_qpolynomial_fold *pwf1,
                __isl_take isl_pw_qpolynomial_fold *pwf2);