From 13eb8d94e5220fbd6007400e4805e2a1834daf85 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Thu, 11 Jul 2019 16:16:28 +0200
Subject: [PATCH] [Eva] Eval_terms: minor simplification by creating and using
 efloat as ereal.

---
 src/plugins/value/legacy/eval_terms.ml | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/plugins/value/legacy/eval_terms.ml b/src/plugins/value/legacy/eval_terms.ml
index 34d987a154e..a132819cbe1 100644
--- a/src/plugins/value/legacy/eval_terms.ml
+++ b/src/plugins/value/legacy/eval_terms.ml
@@ -446,9 +446,13 @@ let einteger v =
 
 (* Note: some reals cannot be exactly represented as floats; in which
    case we do not know their under-approximation. *)
-let ereal v =
+let efloating_point etype fval =
+  let v = V.inject_float fval in
   let eunder = under_from_over v in
-  { etype = Cil.doubleType; eunder; eover = v; ldeps = empty_logic_deps }
+  { etype; eunder; eover = v; ldeps = empty_logic_deps }
+
+let ereal = efloating_point Cil.doubleType
+let efloat = efloating_point Cil.floatType
 
 let is_true = function
   | `True | `TrueReduced _ -> true
@@ -725,7 +729,7 @@ let rec eval_term ~alarm_mode env t =
       let r_lower = Fval.F.of_float r_lower in
       let r_upper = Fval.F.of_float r_upper in
       let f = Fval.inject Fval.Real r_lower r_upper in
-      ereal (V.inject_ival (Ival.inject_float f))
+      ereal f
     end
 
   (*  | TConst ((CStr | CWstr) Missing cases *)
@@ -745,17 +749,13 @@ let rec eval_term ~alarm_mode env t =
       eover = loc_bits_to_loc_bytes r.eover }
 
   (* Special case for the constants \pi, \e, \infinity and \NaN. *)
-  | TLval (TVar {lv_name = "\\pi"}, _) -> ereal (V.inject_float Fval.pi)
-  | TLval (TVar {lv_name = "\\e"}, _)  -> ereal (V.inject_float Fval.e)
+  | TLval (TVar {lv_name = "\\pi"}, _) -> ereal Fval.pi
+  | TLval (TVar {lv_name = "\\e"}, _)  -> ereal Fval.e
   | TLval (TVar {lv_name = "\\plus_infinity"}, _) ->
-    let v = V.inject_float (Fval.pos_infinity Float_sig.Single) in
-    { etype = Cil.floatType; eunder = v; eover = v; ldeps = empty_logic_deps }
+    efloat Fval.(pos_infinity Single)
   | TLval (TVar {lv_name = "\\minus_infinity"}, _) ->
-    let v = V.inject_float (Fval.neg_infinity Float_sig.Single) in
-    { etype = Cil.floatType; eunder = v; eover = v; ldeps = empty_logic_deps }
-  | TLval (TVar {lv_name = "\\NaN"}, _) ->
-    let v = V.inject_float Fval.nan in
-    { etype = Cil.floatType; eunder = v; eover = v; ldeps = empty_logic_deps }
+    efloat Fval.(neg_infinity Single)
+  | TLval (TVar {lv_name = "\\NaN"}, _) -> efloat Fval.nan
 
   | TLval _ ->
     let lval = eval_tlval ~alarm_mode env t in
-- 
GitLab