diff code_part1/OSTC_code_c_part2/p2_deco.c @ 514:3e9904d3c040

BUGFIX spurious CNS bound check.
author JeanDo
date Sun, 04 Dec 2011 17:46:13 +0100
parents c9f19a546e64
children 48bbb1a81027
line wrap: on
line diff
--- a/code_part1/OSTC_code_c_part2/p2_deco.c	Sun Dec 04 17:46:08 2011 +0100
+++ b/code_part1/OSTC_code_c_part2/p2_deco.c	Sun Dec 04 17:46:13 2011 +0100
@@ -2235,7 +2235,8 @@
         calc_tissue(2);  // period = 10min.
         CNS_fraction =  0.92587471 * CNS_fraction;  // Half-time = 90min: (1/2)^(1/9)
     }
-    char_O_CNS_fraction = (char)(CNS_fraction * 100.0 + 0.5);
+    assert( 0.0 <= CNS_fraction && CNS_fraction <= 2.56 );
+    char_O_CNS_fraction = (unsigned char)(CNS_fraction * 100.0 + 0.5);
     
     //---- Restore model -----------------------------------------------------
     char_I_deco_model = backup_model;
@@ -2403,9 +2404,9 @@
     else
         CNS_fraction += time_factor*0.0482; // value for 2.5
 
-    if (CNS_fraction > 2.5)
+    if( CNS_fraction > 2.5 )
         CNS_fraction = 2.55;
-    if (CNS_fraction < 0.0)
+    if( CNS_fraction < 0.0 )
         CNS_fraction = 0.0;
 
     char_O_CNS_fraction = (unsigned char)(100.0 * CNS_fraction + 0.5);
@@ -2530,10 +2531,10 @@
 void deco_calc_CNS_decrease_15min(void)
 {
     RESET_C_STACK
-    assert( 0.0 <= CNS_fraction && CNS_fraction <= 2.5 );
+    assert( 0.0 <= CNS_fraction && CNS_fraction <= 2.56 );
 
     CNS_fraction =  0.890899 * CNS_fraction;
-    char_O_CNS_fraction = (char)(CNS_fraction * 100.0 + 0.5);
+    char_O_CNS_fraction = (unsigned char)(CNS_fraction * 100.0 + 0.5);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -2700,7 +2701,7 @@
     
     // Restore both CNS variable, too.
     CNS_fraction = cns_vault;
-    char_O_CNS_fraction = (char)(CNS_fraction * 100.0 + 0.5);
+    char_O_CNS_fraction = (unsigned char)(CNS_fraction * 100.0 + 0.5);
 }
 
 //////////////////////////////////////////////////////////////////////////////