[PPL-devel] [GIT] ppl/ppl(bounded_arithmetic): Fixed functions lshift_assign and rshift_assign.
Alberto Gioia
alberto.gioia1 at studenti.unipr.it
Thu Jul 7 17:47:34 CEST 2011
Module: ppl/ppl
Branch: bounded_arithmetic
Commit: d8fca333c422bb111a15b8c812341f8eb0ffc65d
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=d8fca333c422bb111a15b8c812341f8eb0ffc65d
Author: Alberto Gioia <alberto.gioia1 at studenti.unipr.it>
Date: Thu Jul 7 17:46:53 2011 +0200
Fixed functions lshift_assign and rshift_assign.
---
src/Interval.inlines.hh | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/Interval.inlines.hh b/src/Interval.inlines.hh
index af1a146..402d815 100644
--- a/src/Interval.inlines.hh
+++ b/src/Interval.inlines.hh
@@ -1107,7 +1107,7 @@ Interval<To_Boundary, To_Info>::lshift_assign(const From1& x, const From2& y) {
}
}
/* xls >= 0, yus < 0
- 0 <= x << y <= x/(2^y)
+ 0 <= x << y <= x/(2^|y|)
*/
else
if (yus < 0 ) {
@@ -1128,10 +1128,10 @@ Interval<To_Boundary, To_Info>::lshift_assign(const From1& x, const From2& y) {
else
if (xus < 0 ) {
Boundary_NS::assign(UPPER, upper() , to_info,
- UPPER, f_upper(Constant<-1>::value),
- f_info(Constant<-1>::value));
+ UPPER, f_upper(Constant<0>::value),
+ f_info(Constant<0>::value));
/* xus < 0, yls >= 0
- x*(2^y) <= x << y <= -1
+ x*(2^y) <= x << y <= 0
*/
if(yls >= 0) {
mpz_class tmp_exp((int)ldexp(1.0, f_lower(y)));
@@ -1147,7 +1147,7 @@ Interval<To_Boundary, To_Info>::lshift_assign(const From1& x, const From2& y) {
}
}
/* xus < 0, yus < 0
- x/(2^y) <= x << y <= -1
+ x/(2^|y|) <= x << y <= 0
*/
else
if (yus < 0) {
@@ -1165,8 +1165,8 @@ Interval<To_Boundary, To_Info>::lshift_assign(const From1& x, const From2& y) {
UPPER, f_upper(y), f_info(y));
if (lower() > -1)
Boundary_NS::assign(LOWER, lower(), to_info,
- LOWER, f_lower(Constant<-1>::value),
- f_info(Constant<-1>::value));
+ LOWER, f_lower(Constant<0>::value),
+ f_info(Constant<0>::value));
}
@@ -1209,7 +1209,7 @@ Interval<To_Boundary, To_Info>::rshift_assign(const From1& x, const From2& y) {
else
if (yus < 0) {
/* xls >= 0, yus < 0
- 0 <= x >> y <= x*(2^y)
+ 0 <= x >> y <= x*(2^|y|)
*/
PPL_DIRTY_TEMP(To_Boundary, tmp_upper);
PPL_DIRTY_TEMP(To_Info, tmp_info);
@@ -1228,26 +1228,26 @@ Interval<To_Boundary, To_Info>::rshift_assign(const From1& x, const From2& y) {
else
if (xus < 0) {
Boundary_NS::assign(UPPER, upper() , to_info,
- UPPER, f_upper(Constant<-1>::value),
- f_info(Constant<-1>::value));
+ UPPER, f_upper(Constant<0>::value),
+ f_info(Constant<0>::value));
if(yls >= 0) {
/* xls < 0, yus >= 0
- x/(2^y) <= x >> y <= -1
+ x/(2^y) <= x >> y <= 0
*/
Boundary_NS::div_assign(LOWER, lower(), to_info,
LOWER, f_lower(x), f_info(x),
LOWER, f_lower(y), f_info(y));
if (lower() > -1)
Boundary_NS::assign(LOWER, lower(), to_info,
- LOWER, f_lower(Constant<-1>::value),
- f_info(Constant<-1>::value));
+ LOWER, f_lower(Constant<0>::value),
+ f_info(Constant<0>::value));
}
else
if (yus < 0) {
/* xus < 0, yus < 0
- x*(2^y) <= x >> y <= -1
+ x*(2^|y|) <= x >> y <= 0
*/
PPL_DIRTY_TEMP(To_Boundary, tmp_lower);
PPL_DIRTY_TEMP(To_Info, tmp_info);
More information about the PPL-devel
mailing list