
Module: ppl/ppl Branch: floating_point Commit: 4fa3f4c26c6d3c7adada8cd08d659f67a6e5ef94 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=4fa3f4c26c6d3...
Author: Fabio Bossi bossi@cs.unipr.it Date: Thu Sep 17 11:17:11 2009 +0200
Optimized linear_form_upper_bound: got rid of two unnecessary temporaries.
---
src/Octagonal_Shape.templates.hh | 20 +++++++++----------- 1 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/src/Octagonal_Shape.templates.hh b/src/Octagonal_Shape.templates.hh index 99c9d5b..67148c2 100644 --- a/src/Octagonal_Shape.templates.hh +++ b/src/Octagonal_Shape.templates.hh @@ -5323,8 +5323,6 @@ linear_form_upper_bound(const Linear_Form< Interval<T, Interval_Info> >& lf,
PPL_DIRTY_TEMP(N, first_comparison_term); PPL_DIRTY_TEMP(N, second_comparison_term); - PPL_DIRTY_TEMP(N, third_comparison_term); - PPL_DIRTY_TEMP(N, fourth_comparison_term);
PPL_DIRTY_TEMP(N, negator);
@@ -5354,24 +5352,24 @@ linear_form_upper_bound(const Linear_Form< Interval<T, Interval_Info> >& lf, // Next addend will be the maximum of four quantities. assign_r(first_comparison_term, 0, ROUND_NOT_NEEDED); assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); - assign_r(third_comparison_term, 0, ROUND_NOT_NEEDED); - assign_r(fourth_comparison_term, 0, ROUND_NOT_NEEDED); add_mul_assign_r(first_comparison_term, curr_var_ub, curr_ub, ROUND_UP); - add_mul_assign_r(third_comparison_term, curr_var_ub, curr_lb, - ROUND_UP); - add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_ub, - ROUND_UP); - add_mul_assign_r(fourth_comparison_term, curr_minus_var_ub, curr_lb, + add_mul_assign_r(second_comparison_term, curr_var_ub, curr_lb, ROUND_UP); assign_r(first_comparison_term, std::max(first_comparison_term, second_comparison_term), ROUND_NOT_NEEDED); + assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); + add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_ub, + ROUND_UP); assign_r(first_comparison_term, std::max(first_comparison_term, - third_comparison_term), + second_comparison_term), ROUND_NOT_NEEDED); + assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); + add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_lb, + ROUND_UP); assign_r(first_comparison_term, std::max(first_comparison_term, - fourth_comparison_term), + second_comparison_term), ROUND_NOT_NEEDED);
add_assign_r(result, result, first_comparison_term, ROUND_UP);