__isl_keep isl_aff *obj);
enum isl_lp_result isl_set_min(__isl_keep isl_set *set,
__isl_keep isl_aff *obj, isl_int *opt);
+ __isl_give isl_val *isl_set_min_val(
+ __isl_keep isl_set *set,
+ __isl_keep isl_aff *obj);
enum isl_lp_result isl_set_max(__isl_keep isl_set *set,
__isl_keep isl_aff *obj, isl_int *opt);
__isl_give isl_val *isl_set_max_val(
C<isl_lp_ok>, C<isl_lp_unbounded> or C<isl_lp_empty>, in case of
an C<isl_lp_result>. If the result is an C<isl_val> then
the result is C<NULL> in case of an error, the optimal value in case
-there is one, infinity if the problem is unbounded and
+there is one, negative infinity or infinity if the problem is unbounded and
NaN if the problem is empty.
=item * Parametric optimization
__isl_keep isl_aff *obj, isl_int *opt);
enum isl_lp_result isl_set_max(__isl_keep isl_set *set,
__isl_keep isl_aff *obj, isl_int *opt);
+__isl_give isl_val *isl_set_min_val(__isl_keep isl_set *set,
+ __isl_keep isl_aff *obj);
__isl_give isl_val *isl_set_max_val(__isl_keep isl_set *set,
__isl_keep isl_aff *obj);
return convert_lp_result(lp_res, res, max);
}
+/* Return the minimum of the integer affine
+ * expression "obj" over the points in "set".
+ *
+ * Return infinity or negative infinity if the optimal value is unbounded and
+ * NaN if "bset" is empty.
+ */
+__isl_give isl_val *isl_set_min_val(__isl_keep isl_set *set,
+ __isl_keep isl_aff *obj)
+{
+ return isl_set_opt_val(set, 0, obj);
+}
+
/* Return the maximum of the integer affine
* expression "obj" over the points in "set".
*