[PPL-devel] [GIT] ppl/ppl(floating_point): Never add a rounding error when casting 1.

Fabio Bossi bossi at cs.unipr.it
Tue Oct 5 15:34:57 CEST 2010


Module: ppl/ppl
Branch: floating_point
Commit: 8c02f7d8aa8325c3771e4eb66da031d7e05c7b0b
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=8c02f7d8aa8325c3771e4eb66da031d7e05c7b0b

Author: Fabio Bossi <bossi at cs.unipr.it>
Date:   Tue Oct  5 15:34:20 2010 +0200

Never add a rounding error when casting 1.

---

 src/linearize.hh |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/linearize.hh b/src/linearize.hh
index 5374a93..1a06b84 100644
--- a/src/linearize.hh
+++ b/src/linearize.hh
@@ -601,10 +601,11 @@ cast_linearize(const Cast_Operator<Target>& cast_expr,
       return false;
     if (!is_less_precise_than(analyzed_format,
                               cast_arg->type().floating_point_format()) ||
-        result == FP_Linear_Form(FP_Interval_Type(0)))
+        result == FP_Linear_Form(FP_Interval_Type(0)) ||
+        result == FP_Linear_Form(FP_Interval_Type(1)))
       /*
-        We are casting to a more precise format or casting the 0 value.
-        Do not add errors.
+        We are casting to a more precise format or casting
+        a definitely safe value: do not add errors.
       */
       return true;
   }
@@ -614,10 +615,11 @@ cast_linearize(const Cast_Operator<Target>& cast_expr,
       return false;
     result = FP_Linear_Form(expr_value);
     if (is_less_precise_than(Float<analyzer_format>::Binary::floating_point_format, analyzed_format) ||
-        result == FP_Linear_Form(FP_Interval_Type(0)))
+        result == FP_Linear_Form(FP_Interval_Type(0)) ||
+        result == FP_Linear_Form(FP_Interval_Type(1)))
       /*
-        We are casting to a more precise format or casting the 0 value.
-        Do not add errors.
+        We are casting to a more precise format or casting
+        a definitely safe value: do not add errors.
       */
       return true;
   }




More information about the PPL-devel mailing list