diff --git a/tests/float/math_builtins.c b/tests/float/math_builtins.c
index 9efd3c38a400336febc160631731df3e5b268778..f80fecc9bbbfbb523878eacb49f60477c8880192 100644
--- a/tests/float/math_builtins.c
+++ b/tests/float/math_builtins.c
@@ -722,6 +722,20 @@ void test_roundf() {
   float f32__c = roundf(f32__x);
 }
 
+void test_uninit() {
+  double a, b, r;
+  if (nondet) {
+    r = sqrt(a);
+    Frama_C_show_each_unreachable(r);
+  }
+  if (nondet) {
+    a = 0.5;
+    b = double_interval(0.25, 8.5);
+  }
+  r = sqrt(a);   // initialization alarm and reduction of a.
+  r = pow(b, a); // initialization alarm and reduction of b.
+}
+
 int main() {
   test_cos_det();
   test_sin_det();
@@ -770,5 +784,7 @@ int main() {
   test_truncf();
   test_roundf();
 
+  test_uninit();
+
   return 0;
 }
diff --git a/tests/float/oracle/math_builtins.res.oracle b/tests/float/oracle/math_builtins.res.oracle
index d26ea5986d7f6f4b7d8f01bb1f4ecbfb33efa5dd..37a8d134ebb75c914776a9211dccb373d73424c9 100644
--- a/tests/float/oracle/math_builtins.res.oracle
+++ b/tests/float/oracle/math_builtins.res.oracle
@@ -10,7 +10,7 @@
   any_double ∈ [--..--]
   any_float ∈ [--..--]
 [eva] computing for function test_cos_det <- main.
-  Called from tests/float/math_builtins.c:726.
+  Called from tests/float/math_builtins.c:740.
 [eva] tests/float/math_builtins.c:19: 
   Call to builtin Frama_C_cos for function cos
 [eva] tests/float/math_builtins.c:19: 
@@ -26,7 +26,7 @@
 [eva] Recording results for test_cos_det
 [eva] Done for function test_cos_det
 [eva] computing for function test_sin_det <- main.
-  Called from tests/float/math_builtins.c:727.
+  Called from tests/float/math_builtins.c:741.
 [eva] tests/float/math_builtins.c:25: 
   Call to builtin Frama_C_sin for function sin
 [eva] tests/float/math_builtins.c:25: 
@@ -42,7 +42,7 @@
 [eva] Recording results for test_sin_det
 [eva] Done for function test_sin_det
 [eva] computing for function test_acos <- main.
-  Called from tests/float/math_builtins.c:728.
+  Called from tests/float/math_builtins.c:742.
 [eva] tests/float/math_builtins.c:31: Call to builtin acos
 [eva] tests/float/math_builtins.c:31: 
   function acos: precondition 'in_domain' got status valid.
@@ -96,7 +96,7 @@
 [eva] Recording results for test_acos
 [eva] Done for function test_acos
 [eva] computing for function test_asin <- main.
-  Called from tests/float/math_builtins.c:729.
+  Called from tests/float/math_builtins.c:743.
 [eva] tests/float/math_builtins.c:59: Call to builtin asin
 [eva] tests/float/math_builtins.c:59: 
   function asin: precondition 'in_domain' got status valid.
@@ -150,7 +150,7 @@
 [eva] Recording results for test_asin
 [eva] Done for function test_asin
 [eva] computing for function test_atan <- main.
-  Called from tests/float/math_builtins.c:730.
+  Called from tests/float/math_builtins.c:744.
 [eva] tests/float/math_builtins.c:87: Call to builtin atan
 [eva] tests/float/math_builtins.c:87: 
   function atan: precondition 'number_arg' got status valid.
@@ -183,7 +183,7 @@
 [eva] Recording results for test_atan
 [eva] Done for function test_atan
 [eva] computing for function test_atan2_det <- main.
-  Called from tests/float/math_builtins.c:731.
+  Called from tests/float/math_builtins.c:745.
 [eva] tests/float/math_builtins.c:99: 
   Call to builtin Frama_C_atan2 for function atan2
 [eva] tests/float/math_builtins.c:99: 
@@ -239,7 +239,7 @@
 [eva] Recording results for test_atan2_det
 [eva] Done for function test_atan2_det
 [eva] computing for function test_atan2 <- main.
-  Called from tests/float/math_builtins.c:732.
+  Called from tests/float/math_builtins.c:746.
 [eva] computing for function double_interval <- test_atan2 <- main.
   Called from tests/float/math_builtins.c:116.
 [eva] Recording results for double_interval
@@ -347,7 +347,7 @@
 [eva] Recording results for test_atan2
 [eva] Done for function test_atan2
 [eva] computing for function test_pow_det <- main.
-  Called from tests/float/math_builtins.c:733.
+  Called from tests/float/math_builtins.c:747.
 [eva] tests/float/math_builtins.c:145: 
   Call to builtin Frama_C_pow for function pow
 [eva] tests/float/math_builtins.c:145: 
@@ -383,7 +383,7 @@
 [eva] Recording results for test_pow_det
 [eva] Done for function test_pow_det
 [eva] computing for function test_pow_singleton_exp <- main.
-  Called from tests/float/math_builtins.c:734.
+  Called from tests/float/math_builtins.c:748.
 [eva] computing for function double_interval <- test_pow_singleton_exp <- main.
   Called from tests/float/math_builtins.c:168.
 [eva] Recording results for double_interval
@@ -500,7 +500,7 @@
 [eva] Recording results for test_pow_singleton_exp
 [eva] Done for function test_pow_singleton_exp
 [eva] computing for function test_pow <- main.
-  Called from tests/float/math_builtins.c:735.
+  Called from tests/float/math_builtins.c:749.
 [eva] computing for function double_interval <- test_pow <- main.
   Called from tests/float/math_builtins.c:217.
 [eva] Recording results for double_interval
@@ -721,7 +721,7 @@
 [eva] Recording results for test_pow
 [eva] Done for function test_pow
 [eva] computing for function test_fmod_det <- main.
-  Called from tests/float/math_builtins.c:736.
+  Called from tests/float/math_builtins.c:750.
 [eva] tests/float/math_builtins.c:405: 
   Call to builtin Frama_C_fmod for function fmod
 [eva] tests/float/math_builtins.c:405: 
@@ -753,7 +753,7 @@
 [eva] Recording results for test_fmod_det
 [eva] Done for function test_fmod_det
 [eva] computing for function test_fmod <- main.
-  Called from tests/float/math_builtins.c:737.
+  Called from tests/float/math_builtins.c:751.
 [eva] computing for function double_interval <- test_fmod <- main.
   Called from tests/float/math_builtins.c:416.
 [eva] Recording results for double_interval
@@ -993,7 +993,7 @@
 [eva] Recording results for test_fmod
 [eva] Done for function test_fmod
 [eva] computing for function test_sqrt_det <- main.
-  Called from tests/float/math_builtins.c:738.
+  Called from tests/float/math_builtins.c:752.
 [eva] tests/float/math_builtins.c:478: 
   Call to builtin Frama_C_sqrt for function sqrt
 [eva] tests/float/math_builtins.c:478: 
@@ -1027,7 +1027,7 @@
 [eva] Recording results for test_sqrt_det
 [eva] Done for function test_sqrt_det
 [eva] computing for function test_sqrt <- main.
-  Called from tests/float/math_builtins.c:739.
+  Called from tests/float/math_builtins.c:753.
 [eva] computing for function double_interval <- test_sqrt <- main.
   Called from tests/float/math_builtins.c:486.
 [eva] Recording results for double_interval
@@ -1071,7 +1071,7 @@
 [eva] Recording results for test_sqrt
 [eva] Done for function test_sqrt
 [eva] computing for function test_exp_det <- main.
-  Called from tests/float/math_builtins.c:740.
+  Called from tests/float/math_builtins.c:754.
 [eva] tests/float/math_builtins.c:516: 
   Call to builtin Frama_C_exp for function exp
 [eva] tests/float/math_builtins.c:516: 
@@ -1123,7 +1123,7 @@
 [eva] Recording results for test_exp_det
 [eva] Done for function test_exp_det
 [eva] computing for function test_log_det <- main.
-  Called from tests/float/math_builtins.c:741.
+  Called from tests/float/math_builtins.c:755.
 [eva] tests/float/math_builtins.c:533: 
   Call to builtin Frama_C_log for function log
 [eva] tests/float/math_builtins.c:533: 
@@ -1163,7 +1163,7 @@
 [eva] Recording results for test_log_det
 [eva] Done for function test_log_det
 [eva] computing for function test_log10_det <- main.
-  Called from tests/float/math_builtins.c:742.
+  Called from tests/float/math_builtins.c:756.
 [eva] tests/float/math_builtins.c:551: 
   Call to builtin Frama_C_log10 for function log10
 [eva] tests/float/math_builtins.c:551: 
@@ -1203,7 +1203,7 @@
 [eva] Recording results for test_log10_det
 [eva] Done for function test_log10_det
 [eva] computing for function test_powf_det <- main.
-  Called from tests/float/math_builtins.c:744.
+  Called from tests/float/math_builtins.c:758.
 [eva] tests/float/math_builtins.c:156: 
   Call to builtin Frama_C_powf for function powf
 [eva] tests/float/math_builtins.c:156: 
@@ -1239,7 +1239,7 @@
 [eva] Recording results for test_powf_det
 [eva] Done for function test_powf_det
 [eva] computing for function test_powf_singleton_exp <- main.
-  Called from tests/float/math_builtins.c:745.
+  Called from tests/float/math_builtins.c:759.
 [eva] computing for function double_interval <- test_powf_singleton_exp <- main.
   Called from tests/float/math_builtins.c:301.
 [eva] Recording results for double_interval
@@ -1354,7 +1354,7 @@
 [eva] Recording results for test_powf_singleton_exp
 [eva] Done for function test_powf_singleton_exp
 [eva] computing for function test_powf <- main.
-  Called from tests/float/math_builtins.c:746.
+  Called from tests/float/math_builtins.c:760.
 [eva] computing for function double_interval <- test_powf <- main.
   Called from tests/float/math_builtins.c:350.
 [eva] Recording results for double_interval
@@ -1494,7 +1494,7 @@
 [eva] Recording results for test_powf
 [eva] Done for function test_powf
 [eva] computing for function test_sqrtf_det <- main.
-  Called from tests/float/math_builtins.c:747.
+  Called from tests/float/math_builtins.c:761.
 [eva] tests/float/math_builtins.c:497: 
   Call to builtin Frama_C_sqrtf for function sqrtf
 [eva] tests/float/math_builtins.c:497: 
@@ -1528,7 +1528,7 @@
 [eva] Recording results for test_sqrtf_det
 [eva] Done for function test_sqrtf_det
 [eva] computing for function test_sqrtf <- main.
-  Called from tests/float/math_builtins.c:748.
+  Called from tests/float/math_builtins.c:762.
 [eva] computing for function double_interval <- test_sqrtf <- main.
   Called from tests/float/math_builtins.c:505.
 [eva] Recording results for double_interval
@@ -1572,7 +1572,7 @@
 [eva] Recording results for test_sqrtf
 [eva] Done for function test_sqrtf
 [eva] computing for function test_expf_det <- main.
-  Called from tests/float/math_builtins.c:749.
+  Called from tests/float/math_builtins.c:763.
 [eva] tests/float/math_builtins.c:525: 
   Call to builtin Frama_C_expf for function expf
 [eva] tests/float/math_builtins.c:525: 
@@ -1616,7 +1616,7 @@
 [eva] Recording results for test_expf_det
 [eva] Done for function test_expf_det
 [eva] computing for function test_logf_det <- main.
-  Called from tests/float/math_builtins.c:750.
+  Called from tests/float/math_builtins.c:764.
 [eva] tests/float/math_builtins.c:542: 
   Call to builtin Frama_C_logf for function logf
 [eva] tests/float/math_builtins.c:542: 
@@ -1656,7 +1656,7 @@
 [eva] Recording results for test_logf_det
 [eva] Done for function test_logf_det
 [eva] computing for function test_log10f_det <- main.
-  Called from tests/float/math_builtins.c:751.
+  Called from tests/float/math_builtins.c:765.
 [eva] tests/float/math_builtins.c:560: 
   Call to builtin Frama_C_log10f for function log10f
 [eva] tests/float/math_builtins.c:560: 
@@ -1696,7 +1696,7 @@
 [eva] Recording results for test_log10f_det
 [eva] Done for function test_log10f_det
 [eva] computing for function test_diff_pow_powf <- main.
-  Called from tests/float/math_builtins.c:753.
+  Called from tests/float/math_builtins.c:767.
 [eva] tests/float/math_builtins.c:569: 
   Call to builtin Frama_C_pow for function pow
 [eva] tests/float/math_builtins.c:569: 
@@ -1708,7 +1708,7 @@
 [eva] Recording results for test_diff_pow_powf
 [eva] Done for function test_diff_pow_powf
 [eva] computing for function test_floor_det <- main.
-  Called from tests/float/math_builtins.c:755.
+  Called from tests/float/math_builtins.c:769.
 [eva] tests/float/math_builtins.c:574: 
   Call to builtin Frama_C_floor for function floor
 [eva] tests/float/math_builtins.c:574: 
@@ -1736,7 +1736,7 @@
 [eva] Recording results for test_floor_det
 [eva] Done for function test_floor_det
 [eva] computing for function test_ceil_det <- main.
-  Called from tests/float/math_builtins.c:756.
+  Called from tests/float/math_builtins.c:770.
 [eva] tests/float/math_builtins.c:583: 
   Call to builtin Frama_C_ceil for function ceil
 [eva] tests/float/math_builtins.c:583: 
@@ -1764,7 +1764,7 @@
 [eva] Recording results for test_ceil_det
 [eva] Done for function test_ceil_det
 [eva] computing for function test_trunc_det <- main.
-  Called from tests/float/math_builtins.c:757.
+  Called from tests/float/math_builtins.c:771.
 [eva] tests/float/math_builtins.c:592: 
   Call to builtin Frama_C_trunc for function trunc
 [eva] tests/float/math_builtins.c:592: 
@@ -1792,7 +1792,7 @@
 [eva] Recording results for test_trunc_det
 [eva] Done for function test_trunc_det
 [eva] computing for function test_round_det <- main.
-  Called from tests/float/math_builtins.c:758.
+  Called from tests/float/math_builtins.c:772.
 [eva] tests/float/math_builtins.c:601: 
   Call to builtin Frama_C_round for function round
 [eva] tests/float/math_builtins.c:601: 
@@ -1820,7 +1820,7 @@
 [eva] Recording results for test_round_det
 [eva] Done for function test_round_det
 [eva] computing for function test_floor <- main.
-  Called from tests/float/math_builtins.c:759.
+  Called from tests/float/math_builtins.c:773.
 [eva] computing for function double_interval <- test_floor <- main.
   Called from tests/float/math_builtins.c:611.
 [eva] Recording results for double_interval
@@ -1848,7 +1848,7 @@
 [eva] Recording results for test_floor
 [eva] Done for function test_floor
 [eva] computing for function test_ceil <- main.
-  Called from tests/float/math_builtins.c:760.
+  Called from tests/float/math_builtins.c:774.
 [eva] computing for function double_interval <- test_ceil <- main.
   Called from tests/float/math_builtins.c:621.
 [eva] Recording results for double_interval
@@ -1876,7 +1876,7 @@
 [eva] Recording results for test_ceil
 [eva] Done for function test_ceil
 [eva] computing for function test_trunc <- main.
-  Called from tests/float/math_builtins.c:761.
+  Called from tests/float/math_builtins.c:775.
 [eva] computing for function double_interval <- test_trunc <- main.
   Called from tests/float/math_builtins.c:631.
 [eva] Recording results for double_interval
@@ -1904,7 +1904,7 @@
 [eva] Recording results for test_trunc
 [eva] Done for function test_trunc
 [eva] computing for function test_round <- main.
-  Called from tests/float/math_builtins.c:762.
+  Called from tests/float/math_builtins.c:776.
 [eva] computing for function double_interval <- test_round <- main.
   Called from tests/float/math_builtins.c:641.
 [eva] Recording results for double_interval
@@ -1932,7 +1932,7 @@
 [eva] Recording results for test_round
 [eva] Done for function test_round
 [eva] computing for function test_floorf_det <- main.
-  Called from tests/float/math_builtins.c:764.
+  Called from tests/float/math_builtins.c:778.
 [eva] tests/float/math_builtins.c:650: 
   Call to builtin Frama_C_floorf for function floorf
 [eva] tests/float/math_builtins.c:650: 
@@ -1960,7 +1960,7 @@
 [eva] Recording results for test_floorf_det
 [eva] Done for function test_floorf_det
 [eva] computing for function test_ceilf_det <- main.
-  Called from tests/float/math_builtins.c:765.
+  Called from tests/float/math_builtins.c:779.
 [eva] tests/float/math_builtins.c:659: 
   Call to builtin Frama_C_ceilf for function ceilf
 [eva] tests/float/math_builtins.c:659: 
@@ -1988,7 +1988,7 @@
 [eva] Recording results for test_ceilf_det
 [eva] Done for function test_ceilf_det
 [eva] computing for function test_truncf_det <- main.
-  Called from tests/float/math_builtins.c:766.
+  Called from tests/float/math_builtins.c:780.
 [eva] tests/float/math_builtins.c:668: 
   Call to builtin Frama_C_truncf for function truncf
 [eva] tests/float/math_builtins.c:668: 
@@ -2016,7 +2016,7 @@
 [eva] Recording results for test_truncf_det
 [eva] Done for function test_truncf_det
 [eva] computing for function test_roundf_det <- main.
-  Called from tests/float/math_builtins.c:767.
+  Called from tests/float/math_builtins.c:781.
 [eva] tests/float/math_builtins.c:677: 
   Call to builtin Frama_C_roundf for function roundf
 [eva] tests/float/math_builtins.c:677: 
@@ -2044,7 +2044,7 @@
 [eva] Recording results for test_roundf_det
 [eva] Done for function test_roundf_det
 [eva] computing for function test_floorf <- main.
-  Called from tests/float/math_builtins.c:768.
+  Called from tests/float/math_builtins.c:782.
 [eva] computing for function double_interval <- test_floorf <- main.
   Called from tests/float/math_builtins.c:687.
 [eva] Recording results for double_interval
@@ -2072,7 +2072,7 @@
 [eva] Recording results for test_floorf
 [eva] Done for function test_floorf
 [eva] computing for function test_ceilf <- main.
-  Called from tests/float/math_builtins.c:769.
+  Called from tests/float/math_builtins.c:783.
 [eva] computing for function double_interval <- test_ceilf <- main.
   Called from tests/float/math_builtins.c:697.
 [eva] Recording results for double_interval
@@ -2100,7 +2100,7 @@
 [eva] Recording results for test_ceilf
 [eva] Done for function test_ceilf
 [eva] computing for function test_truncf <- main.
-  Called from tests/float/math_builtins.c:770.
+  Called from tests/float/math_builtins.c:784.
 [eva] computing for function double_interval <- test_truncf <- main.
   Called from tests/float/math_builtins.c:707.
 [eva] Recording results for double_interval
@@ -2128,7 +2128,7 @@
 [eva] Recording results for test_truncf
 [eva] Done for function test_truncf
 [eva] computing for function test_roundf <- main.
-  Called from tests/float/math_builtins.c:771.
+  Called from tests/float/math_builtins.c:785.
 [eva] computing for function double_interval <- test_roundf <- main.
   Called from tests/float/math_builtins.c:717.
 [eva] Recording results for double_interval
@@ -2155,8 +2155,34 @@
   function roundf: precondition 'finite_arg' got status valid.
 [eva] Recording results for test_roundf
 [eva] Done for function test_roundf
+[eva] computing for function test_uninit <- main.
+  Called from tests/float/math_builtins.c:787.
+[eva:alarm] tests/float/math_builtins.c:728: Warning: 
+  accessing uninitialized left-value. assert \initialized(&a);
+[eva] computing for function double_interval <- test_uninit <- main.
+  Called from tests/float/math_builtins.c:733.
+[eva] Recording results for double_interval
+[eva] Done for function double_interval
+[eva:alarm] tests/float/math_builtins.c:735: Warning: 
+  accessing uninitialized left-value. assert \initialized(&a);
+[eva] tests/float/math_builtins.c:735: 
+  Call to builtin Frama_C_sqrt for function sqrt
+[eva] tests/float/math_builtins.c:735: 
+  function sqrt: precondition 'finite_arg' got status valid.
+[eva] tests/float/math_builtins.c:735: 
+  function sqrt: precondition 'arg_positive' got status valid.
+[eva:alarm] tests/float/math_builtins.c:736: Warning: 
+  accessing uninitialized left-value. assert \initialized(&b);
+[eva] tests/float/math_builtins.c:736: 
+  Call to builtin Frama_C_pow for function pow
+[eva] tests/float/math_builtins.c:736: 
+  function pow: precondition 'finite_logic_res' got status valid.
+[eva] Recording results for test_uninit
+[eva] Done for function test_uninit
 [eva] Recording results for main
 [eva] done for function main
+[eva] tests/float/math_builtins.c:728: 
+  assertion 'Eva,initialization' got final status invalid.
 [eva] ====== VALUES COMPUTED ======
 [eva:final-states] Values at end of function double_interval:
   __retres ∈ [-1.2237906221789607*2^1023 .. 1.2237906221789607*2^1023]
@@ -2490,6 +2516,11 @@
   f32__b ∈ {1.414213*2^-2}
   f32__c ∈ {0}
   f32__d ∈ {-0.000000}
+[eva:final-states] Values at end of function test_uninit:
+  __fc_errno ∈ [--..--]
+  a ∈ {1.0000000000000000*2^-1}
+  b ∈ [1.0000000000000000*2^-2 .. 8.5000000000000000]
+  r ∈ [1.0000000000000000*2^-1 .. 2.9154759474226503]
 [eva:final-states] Values at end of function test_trunc:
   x ∈ [-2.5000000000000000 .. -1.0000000000000000*2^-1]
   a ∈ [-0.0000000000000000 .. 1.0000000000000000]
@@ -2647,6 +2678,8 @@
 [from] Done for function test_sqrtf
 [from] Computing for function test_sqrtf_det
 [from] Done for function test_sqrtf_det
+[from] Computing for function test_uninit
+[from] Done for function test_uninit
 [from] Computing for function test_trunc
 [from] Computing for function trunc <-test_trunc
 [from] Done for function trunc
@@ -2797,6 +2830,8 @@
   NO EFFECTS
 [from] Function test_sqrtf_det:
   NO EFFECTS
+[from] Function test_uninit:
+  __fc_errno FROM nondet
 [from] Function trunc:
   \result FROM x
 [from] Function test_trunc:
@@ -2810,7 +2845,7 @@
 [from] Function test_truncf_det:
   NO EFFECTS
 [from] Function main:
-  __fc_errno FROM \nothing
+  __fc_errno FROM nondet
   \result FROM \nothing
 [from] ====== END OF DEPENDENCIES ======
 [inout] Out (internal) for function double_interval:
@@ -2979,6 +3014,10 @@
     f32__a; f32__b; f32__c; f32__d
 [inout] Inputs for function test_sqrtf_det:
     nondet
+[inout] Out (internal) for function test_uninit:
+    __fc_errno; a; b; r
+[inout] Inputs for function test_uninit:
+    nondet
 [inout] Out (internal) for function test_trunc:
     x; a; b; c
 [inout] Inputs for function test_trunc:
@@ -3937,6 +3976,27 @@ void test_roundf(void)
   return;
 }
 
+void test_uninit(void)
+{
+  double a;
+  double b;
+  double r;
+  if (nondet) {
+    /*@ assert Eva: initialization: \initialized(&a); */
+    r = sqrt(a);
+    Frama_C_show_each_unreachable(r);
+  }
+  if (nondet) {
+    a = 0.5;
+    b = double_interval(0.25,8.5);
+  }
+  /*@ assert Eva: initialization: \initialized(&a); */
+  r = sqrt(a);
+  /*@ assert Eva: initialization: \initialized(&b); */
+  r = pow(b,a);
+  return;
+}
+
 int main(void)
 {
   int __retres;
@@ -3982,6 +4042,7 @@ int main(void)
   test_ceilf();
   test_truncf();
   test_roundf();
+  test_uninit();
   __retres = 0;
   return __retres;
 }