Lines Matching full:data

22 	__isl_take isl_qpolynomial *poly, struct range_data *data);
97 __isl_keep isl_qpolynomial *poly, struct range_data *data) in monotonicity() argument
123 s = has_sign(bset, diff, 1, data->signs); in monotonicity()
129 s = has_sign(bset, diff, -1, data->signs); in monotonicity()
189 /* Add term "term" to data->poly if it has sign data->sign.
191 * and variables in data->signs. The integer divisions, if
196 struct isl_fixed_sign_data *data = (struct isl_fixed_sign_data *)user; in collect_fixed_sign_terms() local
215 if (data->signs[i] > 0) in collect_fixed_sign_terms()
224 if (data->signs[nparam + i] > 0) in collect_fixed_sign_terms()
233 if (sign == data->sign) { in collect_fixed_sign_terms()
236 data->poly = isl_qpolynomial_add(data->poly, t); in collect_fixed_sign_terms()
251 struct isl_fixed_sign_data data = { signs, sign }; in isl_qpolynomial_terms_of_sign() local
254 data.poly = isl_qpolynomial_zero_on_domain(space); in isl_qpolynomial_terms_of_sign()
256 if (isl_qpolynomial_foreach_term(poly, collect_fixed_sign_terms, &data) < 0) in isl_qpolynomial_terms_of_sign()
259 return data.poly; in isl_qpolynomial_terms_of_sign()
261 isl_qpolynomial_free(data.poly); in isl_qpolynomial_terms_of_sign()
269 __isl_take isl_qpolynomial *poly, struct range_data *data) in add_guarded_poly() argument
271 enum isl_fold type = data->sign < 0 ? isl_fold_min : isl_fold_max; in add_guarded_poly()
282 if (data->tight) in add_guarded_poly()
283 data->pwf_tight = isl_pw_qpolynomial_fold_fold( in add_guarded_poly()
284 data->pwf_tight, pwf); in add_guarded_poly()
286 data->pwf = isl_pw_qpolynomial_fold_fold(data->pwf, pwf); in add_guarded_poly()
302 __isl_take isl_qpolynomial *sub, struct range_data *data) in plug_in_at_pos() argument
321 data->tight = 0; in plug_in_at_pos()
324 return signed_infty(space, data->sign); in plug_in_at_pos()
339 * eliminate the variable from data->poly based on these bounds.
356 struct range_data *data = (struct range_data *)user; in propagate_on_bound_pair() local
357 int save_tight = data->tight; in propagate_on_bound_pair()
367 if (data->monotonicity) { in propagate_on_bound_pair()
369 isl_space *space = isl_qpolynomial_get_domain_space(data->poly); in propagate_on_bound_pair()
370 if (data->monotonicity * data->sign > 0) { in propagate_on_bound_pair()
371 if (data->tight) in propagate_on_bound_pair()
372 data->tight = bound_is_integer(upper, nvar); in propagate_on_bound_pair()
376 if (data->tight) in propagate_on_bound_pair()
377 data->tight = bound_is_integer(lower, nvar); in propagate_on_bound_pair()
381 poly = isl_qpolynomial_copy(data->poly); in propagate_on_bound_pair()
382 poly = plug_in_at_pos(poly, nvar, sub, data); in propagate_on_bound_pair()
387 isl_space *space = isl_qpolynomial_get_domain_space(data->poly); in propagate_on_bound_pair()
388 int sign = data->sign * data->signs[nparam + nvar]; in propagate_on_bound_pair()
390 data->tight = 0; in propagate_on_bound_pair()
395 pos = isl_qpolynomial_terms_of_sign(data->poly, data->signs, sign); in propagate_on_bound_pair()
396 neg = isl_qpolynomial_terms_of_sign(data->poly, data->signs, -sign); in propagate_on_bound_pair()
398 pos = plug_in_at_pos(pos, nvar, u, data); in propagate_on_bound_pair()
399 neg = plug_in_at_pos(neg, nvar, l, data); in propagate_on_bound_pair()
406 r = add_guarded_poly(bset, poly, data); in propagate_on_bound_pair()
408 r = propagate_on_domain(bset, poly, data); in propagate_on_bound_pair()
410 data->tight = save_tight; in propagate_on_bound_pair()
421 * defined over the basic set "bset" and collect the results in "data".
424 __isl_take isl_qpolynomial *poly, struct range_data *data) in propagate_on_domain() argument
428 isl_qpolynomial *save_poly = data->poly; in propagate_on_domain()
429 int save_monotonicity = data->monotonicity; in propagate_on_domain()
443 return add_guarded_poly(bset, poly, data); in propagate_on_domain()
446 if (data->test_monotonicity) in propagate_on_domain()
447 data->monotonicity = monotonicity(bset, poly, data); in propagate_on_domain()
449 data->monotonicity = 0; in propagate_on_domain()
450 if (data->monotonicity < -1) in propagate_on_domain()
453 data->poly = poly; in propagate_on_domain()
455 &propagate_on_bound_pair, data) < 0) in propagate_on_domain()
460 data->monotonicity = save_monotonicity; in propagate_on_domain()
461 data->poly = save_poly; in propagate_on_domain()
467 data->monotonicity = save_monotonicity; in propagate_on_domain()
468 data->poly = save_poly; in propagate_on_domain()
475 struct range_data *data = (struct range_data *)user; in basic_guarded_poly_bound() local
482 data->signs = NULL; in basic_guarded_poly_bound()
488 data->signs = isl_alloc_array(ctx, int, total); in basic_guarded_poly_bound()
491 data->signs + nparam) < 0) in basic_guarded_poly_bound()
494 data->signs) < 0) in basic_guarded_poly_bound()
497 r = propagate_on_domain(bset, isl_qpolynomial_copy(data->poly), data); in basic_guarded_poly_bound()
499 free(data->signs); in basic_guarded_poly_bound()
503 free(data->signs); in basic_guarded_poly_bound()
510 struct range_data *data) in qpolynomial_bound_on_domain_range() argument
520 return add_guarded_poly(bset, poly, data); in qpolynomial_bound_on_domain_range()
526 data->poly = poly; in qpolynomial_bound_on_domain_range()
528 data->test_monotonicity = 1; in qpolynomial_bound_on_domain_range()
529 if (isl_set_foreach_basic_set(set, &basic_guarded_poly_bound, data) < 0) in qpolynomial_bound_on_domain_range()
545 struct range_data data; in isl_qpolynomial_bound_on_domain_range() local
548 data.pwf = bound->pwf; in isl_qpolynomial_bound_on_domain_range()
549 data.pwf_tight = bound->pwf_tight; in isl_qpolynomial_bound_on_domain_range()
550 data.tight = bound->check_tight; in isl_qpolynomial_bound_on_domain_range()
552 data.sign = -1; in isl_qpolynomial_bound_on_domain_range()
554 data.sign = 1; in isl_qpolynomial_bound_on_domain_range()
556 r = qpolynomial_bound_on_domain_range(bset, poly, &data); in isl_qpolynomial_bound_on_domain_range()
558 bound->pwf = data.pwf; in isl_qpolynomial_bound_on_domain_range()
559 bound->pwf_tight = data.pwf_tight; in isl_qpolynomial_bound_on_domain_range()