2 * Copyright 2017 Sven Verdoolaege
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege
9 #define xCAT(A,B) A ## B
10 #define CAT(A,B) xCAT(A,B)
12 #define TYPE CAT(isl_,BASE)
13 #define xBFN(BASE,NAME) isl_ ## BASE ## _ ## NAME
14 #define BFN(BASE,NAME) xBFN(BASE,NAME)
16 /* Return the minimal (maximal if "max" is set) value attained
17 * by the given set dimension,
18 * independently of the parameter values and of any other dimensions.
20 * Return infinity or negative infinity if the optimal value is unbounded and
21 * NaN if "set" is empty.
23 static __isl_give isl_val
*BFN(BASE
,dim_opt_val
)(__isl_take TYPE
*set
, int max
,
30 if (BFN(BASE
,check_range
)(set
, isl_dim_set
, pos
, 1) < 0)
32 ls
= isl_local_space_from_space(BFN(BASE
,get_space
)(set
));
33 obj
= isl_aff_var_on_domain(ls
, isl_dim_set
, pos
);
34 v
= BFN(BASE
,opt_val
)(set
, max
, obj
);