diff --git a/src/libraries/utils/floating_point.ml b/src/libraries/utils/floating_point.ml
index 9d5399133a88d812663316acd729259e4f6585f3..3a87fedd855315e79ef10b129648cc28303bd653 100644
--- a/src/libraries/utils/floating_point.ml
+++ b/src/libraries/utils/floating_point.ml
@@ -295,7 +295,7 @@ let pretty_normal ~use_hex fmt f =
   let firstdigit, exp =
     if exp <> 0
     then 1, (exp - 1023)
-    else 0, -1022
+    else 0, if f = 0. then 0 else -1022
   in
   if not use_hex
   then begin
diff --git a/tests/float/oracle/cond.res.oracle b/tests/float/oracle/cond.res.oracle
index 707cac7a8bd634103f9af0eb5ba13fc7b832ec50..fb36e697b14e57cb73e252497ad700c8b8a48120 100644
--- a/tests/float/oracle/cond.res.oracle
+++ b/tests/float/oracle/cond.res.oracle
@@ -40,7 +40,7 @@
 [eva] ====== VALUES COMPUTED ======
 [eva:final-states] Values at end of function main:
   Frama_C_entropy_source ∈ [--..--]
-  x ∈ [-0x0.0000000000000p-1022 .. 0x1.4000000000000p3]
+  x ∈ [-0x0.0000000000000p0 .. 0x1.4000000000000p3]
   dx ∈ [0x1.0000000000001p0 .. 0x1.4000000000000p3]
   dz ∈ [0x1.0000000000001p0 .. 0x1.4000000000000p3]
   dt ∈ [-0x1.4000000000000p3 .. 0x1.fffffffffffffp-1]
diff --git a/tests/float/oracle/const.res.oracle b/tests/float/oracle/const.res.oracle
index e70a11cc85789fe4df7c48f86c096f1b1f5eb73c..82eb8a1af5e2752e2a6ab2025df18f5de5ee051c 100644
--- a/tests/float/oracle/const.res.oracle
+++ b/tests/float/oracle/const.res.oracle
@@ -1,10 +1,10 @@
 [kernel] Parsing tests/float/const.i (no preprocessing)
 [kernel:parser:decimal-float] tests/float/const.i:21: Warning: 
-  Floating-point constant 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 is not represented exactly. Will use 0x0.0000000000000p-1022.
+  Floating-point constant 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 is not represented exactly. Will use 0x0.0000000000000p0.
 [kernel:parser:decimal-float] tests/float/const.i:22: Warning: 
   Floating-point constant 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812501 is not represented exactly. Will use 0x0.0000000000001p-1022.
 [kernel:parser:decimal-float] tests/float/const.i:23: Warning: 
-  Floating-point constant 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812499 is not represented exactly. Will use 0x0.0000000000000p-1022.
+  Floating-point constant 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812499 is not represented exactly. Will use 0x0.0000000000000p0.
 [kernel:parser:decimal-float] tests/float/const.i:26: Warning: 
   Floating-point constant 0.0000000000000000000000000000000000000000000014012984643248170709237295832899161312802619418765157717570682838897910826858606014866381883621215820312499 is not represented exactly. Will use 0x1.0000000000000p-149.
 [kernel:parser:decimal-float] tests/float/const.i:27: Warning: 
@@ -18,9 +18,9 @@
 [kernel:parser:decimal-float] tests/float/const.i:34: Warning: 
   Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562501 is not represented exactly. Will use 0x1.0000000000000p-150.
 [kernel:parser:decimal-float] tests/float/const.i:35: Warning: 
-  Floating-point constant 0.000000000000000000000000000000000000000000000700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625f is not represented exactly. Will use 0x0.0000000000000p-1022.
+  Floating-point constant 0.000000000000000000000000000000000000000000000700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625f is not represented exactly. Will use 0x0.0000000000000p0.
 [kernel:parser:decimal-float] tests/float/const.i:36: Warning: 
-  Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562499f is not represented exactly. Will use 0x0.0000000000000p-1022.
+  Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562499f is not represented exactly. Will use 0x0.0000000000000p0.
 [kernel:parser:decimal-float] tests/float/const.i:37: Warning: 
   Floating-point constant 0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562501f is not represented exactly. Will use 0x1.0000000000000p-149.
 [eva] Analyzing a complete application starting at main
@@ -137,11 +137,11 @@
 [eva] done for function main
 [eva] ====== VALUES COMPUTED ======
 [eva:final-states] Values at end of function main:
-  f_ ∈ {-0x0.0000000000000p-1022}
+  f_ ∈ {-0x0.0000000000000p0}
   f00 ∈ {0}
   f2 ∈ {0x1.8000000000000p1}
   f3 ∈ {0x1.8000000000000p1}
-  f_0 ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  f_0 ∈ [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
   f13 ∈ [0x1.0000000000000p0 .. 0x1.8000000000000p1]
   f26 ∈ [0x1.0000000000000p1 .. 0x1.8000000000000p2]
   fic0 ∈ {0}
@@ -151,10 +151,10 @@
   fec0 ∈ {0}
   fec2 ∈ {0x1.0000000000000p1}
   fec4 ∈ {0x1.0000000000000p2}
-  m_ ∈ {-0x0.0000000000000p-1022}
+  m_ ∈ {-0x0.0000000000000p0}
   m00 ∈ {0}
   m2 ∈ {0x1.8000000000000p1}
-  m_0 ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  m_0 ∈ [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
   m13 ∈ [0x1.0000000000000p0 .. 0x1.8000000000000p1]
   m26 ∈ [0x1.0000000000000p1 .. 0x1.8000000000000p2]
   d2 ∈ {0x1.8000000000000p1}
diff --git a/tests/float/oracle/logic.0.res.oracle b/tests/float/oracle/logic.0.res.oracle
index a5db6778fcbd447992f1b8d621519278457e4fc0..a78dc74e8eaac554d264eb78a2b28fffc8e7de2c 100644
--- a/tests/float/oracle/logic.0.res.oracle
+++ b/tests/float/oracle/logic.0.res.oracle
@@ -112,55 +112,46 @@
   Called from tests/float/logic.i:118.
 [eva] tests/float/logic.i:84: 
   Frama_C_show_each_eq:
-  {-0x0.0000000000000p-1022},
-  [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
-  {-0x0.0000000000000p-1022},
-  [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
+  {-0x0.0000000000000p0}, [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:92: 
   Frama_C_show_each_lt:
-  {-0x0.0000000000000p-1022},
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  {-0x0.0000000000000p-1022},
-  [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  {-0x0.0000000000000p-1022},
-  [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
+  {-0x0.0000000000000p0}, [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  {-0x0.0000000000000p-1022},
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
-  {-0x0.0000000000000p-1022},
-  [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023]
+  {-0x0.0000000000000p0}, [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023]
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
 [eva] computing for function test_comparison_reduction <- 
                           test_builtin_comparisons <- main.
   Called from tests/float/logic.i:119.
 [eva] tests/float/logic.i:84: 
-  Frama_C_show_each_eq:
-  {0}, [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  Frama_C_show_each_eq: {0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
   {0}, [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:92: 
-  Frama_C_show_each_lt:
-  {0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  Frama_C_show_each_lt: {0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  {0}, [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  {0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
   {0}, [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  {0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  {0}, [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
   {0}, [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023]
@@ -228,31 +219,31 @@
   Called from tests/float/logic.i:126.
 [eva] tests/float/logic.i:84: 
   Frama_C_show_each_eq:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:92: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
+  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
+  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023]
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
@@ -261,31 +252,31 @@
   Called from tests/float/logic.i:128.
 [eva] tests/float/logic.i:84: 
   Frama_C_show_each_eq:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:92: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
+  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
+  [-0x1.fffffffffffffp1023 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
   [-0x1.fffffffffffffp1023 .. 0x1.fffffffffffffp1023]
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
@@ -368,7 +359,7 @@
   __retres ∈ {-0x1.bca1b00000000p-1}
 [eva:final-states] Values at end of function test_comparison_evaluation:
   zero ∈ {0}
-  minus_zero ∈ {-0x0.0000000000000p-1022}
+  minus_zero ∈ {-0x0.0000000000000p0}
   one ∈ {0x1.0000000000000p0}
   higher ∈ [0x1.91eb860000000p1 .. 0x1.9000000000000p3]
   middle ∈ [-0x1.91eb860000000p1 .. 0x1.91eb860000000p1]
diff --git a/tests/float/oracle/logic.1.res.oracle b/tests/float/oracle/logic.1.res.oracle
index b96f0877b04afbdaa6c5b4ac5b41541a316de63d..bb6624dbb5c74b65b0b362f284d69594f5b29aa7 100644
--- a/tests/float/oracle/logic.1.res.oracle
+++ b/tests/float/oracle/logic.1.res.oracle
@@ -116,24 +116,22 @@
                           test_builtin_comparisons <- main.
   Called from tests/float/logic.i:118.
 [eva] tests/float/logic.i:84: 
-  Frama_C_show_each_eq: {-0x0.0000000000000p-1022}, [-inf .. inf] ∪ {NaN}
+  Frama_C_show_each_eq: {-0x0.0000000000000p0}, [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:88: 
-  Frama_C_show_each_lt: {-0x0.0000000000000p-1022}, [-inf .. inf] ∪ {NaN}
+  Frama_C_show_each_lt: {-0x0.0000000000000p0}, [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:92: 
-  Frama_C_show_each_lt: {-0x0.0000000000000p-1022}, [-inf .. inf] ∪ {NaN}
+  Frama_C_show_each_lt: {-0x0.0000000000000p0}, [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  {-0x0.0000000000000p-1022},
-  [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  {-0x0.0000000000000p-1022}, [-inf .. -0x0.0000000000001p-1022]
+  {-0x0.0000000000000p0}, [-inf .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  {-0x0.0000000000000p-1022}, [-inf .. 0x0.0000000000000p-1022]
+  {-0x0.0000000000000p0}, [-inf .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
-  Frama_C_show_each_ne_double:
-  {-0x0.0000000000000p-1022}, [-inf .. inf] ∪ {NaN}
+  Frama_C_show_each_ne_double: {-0x0.0000000000000p0}, [-inf .. inf] ∪ {NaN}
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
 [eva] computing for function test_comparison_reduction <- 
@@ -144,11 +142,11 @@
 [eva] tests/float/logic.i:92: Frama_C_show_each_lt: {0}, [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  {0}, [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  {0}, [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double: {0}, [-inf .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
-  Frama_C_show_each_le_double: {0}, [-inf .. 0x0.0000000000000p-1022]
+  Frama_C_show_each_le_double: {0}, [-inf .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double: {0}, [-inf .. inf] ∪ {NaN}
 [eva] Recording results for test_comparison_reduction
@@ -208,28 +206,27 @@
   Called from tests/float/logic.i:126.
 [eva] tests/float/logic.i:84: 
   Frama_C_show_each_eq:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:92: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0],
   [-inf .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022],
-  [-inf .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0], [-inf .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
-  [-0x1.4000000000000p3 .. -0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. -0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
 [eva] computing for function test_comparison_reduction <- 
@@ -237,28 +234,27 @@
   Called from tests/float/logic.i:128.
 [eva] tests/float/logic.i:84: 
   Frama_C_show_each_eq:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:88: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:92: 
   Frama_C_show_each_lt:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] tests/float/logic.i:96: 
   Frama_C_show_each_eq_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:100: 
   Frama_C_show_each_lt_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0],
   [-inf .. -0x0.0000000000001p-1022]
 [eva] tests/float/logic.i:104: 
   Frama_C_show_each_le_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022],
-  [-inf .. 0x0.0000000000000p-1022]
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0], [-inf .. 0x0.0000000000000p0]
 [eva] tests/float/logic.i:108: 
   Frama_C_show_each_ne_double:
-  [-0x1.4000000000000p3 .. 0x0.0000000000000p-1022], [-inf .. inf] ∪ {NaN}
+  [-0x1.4000000000000p3 .. 0x0.0000000000000p0], [-inf .. inf] ∪ {NaN}
 [eva] Recording results for test_comparison_reduction
 [eva] Done for function test_comparison_reduction
 [eva] computing for function test_comparison_reduction <- 
@@ -368,7 +364,7 @@
   __retres ∈ {-0x1.bca1b00000000p-1}
 [eva:final-states] Values at end of function test_comparison_evaluation:
   zero ∈ {0}
-  minus_zero ∈ {-0x0.0000000000000p-1022}
+  minus_zero ∈ {-0x0.0000000000000p0}
   one ∈ {0x1.0000000000000p0}
   higher ∈ [0x1.91eb860000000p1 .. 0x1.9000000000000p3]
   middle ∈ [-0x1.91eb860000000p1 .. 0x1.91eb860000000p1]
diff --git a/tests/float/oracle/nonlin.0.res.oracle b/tests/float/oracle/nonlin.0.res.oracle
index 6d1d4f37afd1253fb605b4b558fb0c6fae3766e5..95c633d605b3c85d119c84dc019c403d42da933d 100644
--- a/tests/float/oracle/nonlin.0.res.oracle
+++ b/tests/float/oracle/nonlin.0.res.oracle
@@ -247,7 +247,7 @@
 [eva:final-states] Values at end of function around_zeros:
   Frama_C_entropy_source ∈ [--..--]
   f1 ∈ {0x1.0000000000000p-149}
-  f ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p-149]
+  f ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p-149]
   res ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
 [eva:final-states] Values at end of function garbled:
   a_0 ∈
@@ -257,7 +257,7 @@
 [eva:final-states] Values at end of function nonlin_f:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2]
@@ -286,7 +286,7 @@
 [eva:final-states] Values at end of function main:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2]
diff --git a/tests/float/oracle/nonlin.1.res.oracle b/tests/float/oracle/nonlin.1.res.oracle
index ec20b5dbc24d8c34781a2d2cb7e935ebe29ddfaf..f1aa30fd850f5bf88444511a31c4390c0696ade2 100644
--- a/tests/float/oracle/nonlin.1.res.oracle
+++ b/tests/float/oracle/nonlin.1.res.oracle
@@ -270,7 +270,7 @@
 [eva:final-states] Values at end of function around_zeros:
   Frama_C_entropy_source ∈ [--..--]
   f1 ∈ {0x1.0000000000000p-149}
-  f ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  f ∈ [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
   res ∈ {-0x1.0000000000000p0}
 [eva:final-states] Values at end of function garbled:
   a_0 ∈
@@ -280,7 +280,7 @@
 [eva:final-states] Values at end of function nonlin_f:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffffffffffp2]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffffffffffp2]
@@ -288,7 +288,7 @@
 [eva:final-states] Values at end of function norm:
   v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
   v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
-  square ∈ [-0x0.0000000000000p-1022 .. 0x1.fffffc0000020p256]
+  square ∈ [-0x0.0000000000000p0 .. 0x1.fffffc0000020p256]
 [eva:final-states] Values at end of function other:
   Frama_C_entropy_source ∈ [--..--]
   i ∈ [-0x1.714fffffffff7p1 .. 0x1.71c0000000003p1]
@@ -309,7 +309,7 @@
 [eva:final-states] Values at end of function main:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffffffffffp2]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffffffffffp2]
diff --git a/tests/float/oracle/nonlin.2.res.oracle b/tests/float/oracle/nonlin.2.res.oracle
index 55f870a84bcdd6c2e6f5c9025399144c0d05e58d..d8f939ec1d88d22950096d4bcd45a9dfe16bc7e4 100644
--- a/tests/float/oracle/nonlin.2.res.oracle
+++ b/tests/float/oracle/nonlin.2.res.oracle
@@ -247,7 +247,7 @@
 [eva:final-states] Values at end of function around_zeros:
   Frama_C_entropy_source ∈ [--..--]
   f1 ∈ {0x1.0000000000000p-149}
-  f ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p-149]
+  f ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p-149]
   res ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
 [eva:final-states] Values at end of function garbled:
   a_0 ∈
@@ -257,7 +257,7 @@
 [eva:final-states] Values at end of function nonlin_f:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2]
@@ -286,7 +286,7 @@
 [eva:final-states] Values at end of function main:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.2000000000000p3]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c800000000000p2]
diff --git a/tests/float/oracle/nonlin.3.res.oracle b/tests/float/oracle/nonlin.3.res.oracle
index 81c915845524d4a3fe60b0bb518b170df0c80389..1a9170be5a49927871fee4b6f676bc4f1856b6aa 100644
--- a/tests/float/oracle/nonlin.3.res.oracle
+++ b/tests/float/oracle/nonlin.3.res.oracle
@@ -270,7 +270,7 @@
 [eva:final-states] Values at end of function around_zeros:
   Frama_C_entropy_source ∈ [--..--]
   f1 ∈ {0x1.0000000000000p-149}
-  f ∈ [-0x0.0000000000000p-1022 .. 0x0.0000000000000p-1022]
+  f ∈ [-0x0.0000000000000p0 .. 0x0.0000000000000p0]
   res ∈ {-0x1.0000000000000p0}
 [eva:final-states] Values at end of function garbled:
   a_0 ∈
@@ -280,7 +280,7 @@
 [eva:final-states] Values at end of function nonlin_f:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffe0000000p2]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffe0000000p2]
@@ -288,7 +288,7 @@
 [eva:final-states] Values at end of function norm:
   v1 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
   v2 ∈ [-0x1.fffffe0000000p127 .. 0x1.fffffe0000000p127]
-  square ∈ [-0x0.0000000000000p-1022 .. 0x1.fffffc0000020p256]
+  square ∈ [-0x0.0000000000000p0 .. 0x1.fffffc0000020p256]
 [eva:final-states] Values at end of function other:
   Frama_C_entropy_source ∈ [--..--]
   i ∈ [-0x1.714fee0000000p1 .. 0x1.71c0040000000p1]
@@ -309,7 +309,7 @@
 [eva:final-states] Values at end of function main:
   Frama_C_entropy_source ∈ [--..--]
   a ∈ [0x1.4000000000000p2 .. 0x1.c000000000000p2]
-  b ∈ [-0x0.0000000000000p-1022 .. 0x1.0000000000000p0]
+  b ∈ [-0x0.0000000000000p0 .. 0x1.0000000000000p0]
   c ∈ {0x1.c000000000000p2}
   r1 ∈ [0x1.4000000000000p2 .. 0x1.cffffe0000000p2]
   r2 ∈ [0x1.4000000000000p2 .. 0x1.c0fffe0000000p2]
diff --git a/tests/value/oracle/cond_integer_cast_of_float.res.oracle b/tests/value/oracle/cond_integer_cast_of_float.res.oracle
index 155d172a35dc47fea547d2fc34072173597e0c97..1111e966466fff474fc3a0967b31d1ded39ed23f 100644
--- a/tests/value/oracle/cond_integer_cast_of_float.res.oracle
+++ b/tests/value/oracle/cond_integer_cast_of_float.res.oracle
@@ -152,7 +152,7 @@
 [eva] tests/value/cond_integer_cast_of_float.i:17: 
   Frama_C_show_each_float_: [0x1.0000000000000p1 .. 0x1.0000000000000p3]
 [eva] tests/value/cond_integer_cast_of_float.i:20: 
-  Frama_C_show_each_float_: [-0x0.0000000000000p-1022 .. 0x1.3ffffe0000000p2]
+  Frama_C_show_each_float_: [-0x0.0000000000000p0 .. 0x1.3ffffe0000000p2]
 [eva] tests/value/cond_integer_cast_of_float.i:23: 
   Frama_C_show_each_float_: [0x1.0000000000000p0 .. 0x1.0000000000000p3]
 [eva] tests/value/cond_integer_cast_of_float.i:26: 
@@ -160,13 +160,13 @@
 [eva] tests/value/cond_integer_cast_of_float.i:29: 
   Frama_C_show_each_double: [0x1.0000000000000p1 .. 0x1.0000000000000p3]
 [eva] tests/value/cond_integer_cast_of_float.i:32: 
-  Frama_C_show_each_double: [-0x0.0000000000000p-1022 .. 0x1.3ffffffffffffp2]
+  Frama_C_show_each_double: [-0x0.0000000000000p0 .. 0x1.3ffffffffffffp2]
 [eva] tests/value/cond_integer_cast_of_float.i:35: 
   Frama_C_show_each_double: [0x1.0000000000000p0 .. 0x1.0000000000000p3]
 [eva] tests/value/cond_integer_cast_of_float.i:38: 
   Frama_C_show_each_double: [0x1.8000000000000p1 .. 0x1.fffffffffffffp1]
 [eva] tests/value/cond_integer_cast_of_float.i:73: 
-  Frama_C_show_each: [-0x0.0000000000000p-1022 .. 0x1.0000000000000p3], [0..8]
+  Frama_C_show_each: [-0x0.0000000000000p0 .. 0x1.0000000000000p3], [0..8]
 [eva] Recording results for main1
 [eva] Done for function main1
 [eva] computing for function main2 <- main <- mainbis.