]> henry.ined.fr Git - .git/commitdiff
Supress a bug in esij
authorN. Brouard <brouard@ined.fr>
Mon, 11 Mar 2002 14:17:15 +0000 (14:17 +0000)
committerN. Brouard <brouard@ined.fr>
Mon, 11 Mar 2002 14:17:15 +0000 (14:17 +0000)
src/imach.c

index 1e632616c2f251cebc6c993fc85f881fe16ec9da..363eb9610d3e29bbffb98618c81ab4d94ece6756 100644 (file)
@@ -1540,14 +1540,14 @@ void evsij(char fileres[], double ***eij, double x[], int nlstate, int stepm, in
 \r
   k=1;             /* For example stepm=6 months */\r
   hstepm=k*YEARM; /* (a) Every k years of age (in months), for example every k=2 years 24 m */\r
-  hstepm=1;   /* or (b) We decided to compute the life expectancy with the smallest unit */\r
+  hstepm=stepm;   /* or (b) We decided to compute the life expectancy with the smallest unit */\r
   /* hstepm beeing the number of stepms, if hstepm=1 the length of hstepm is stepm. \r
      nhstepm is the number of hstepm from age to agelim \r
      nstepm is the number of stepm from age to agelin. \r
      Look at hpijx to understand the reason of that which relies in memory size\r
      and note for a fixed period like k years */\r
   /* We decided (b) to get a life expectancy respecting the most precise curvature of the\r
-     survival function given par stepm (the optimization length). Unfortunately it\r
+     survival function given by stepm (the optimization length). Unfortunately it\r
      means that if the survival funtion is printed only each two years of age and if\r
      you sum them up and add 1 year (area under the trapezoids) you won't get the same \r
      results. So we changed our mind and took the option of the best precision.\r
@@ -1565,7 +1565,7 @@ void evsij(char fileres[], double ***eij, double x[], int nlstate, int stepm, in
     /* Computed by stepm unit matrices, product of hstepm matrices, stored\r
        in an array of nhstepm length: nhstepm=10, hstepm=4, stepm=6 months */\r
     hpxij(p3mat,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, ij);  \r
-    hf=hstepm/YEARM;  /* Duration of hstepm expressed in year unit. */\r
+    hf=hstepm*stepm/YEARM;  /* Duration of hstepm expressed in year unit. */\r
     for(i=1; i<=nlstate;i++)\r
       for(j=1; j<=nlstate;j++)\r
        for (h=0, eij[i][j][(int)age]=0; h<=nhstepm-1; h++){\r
@@ -1903,7 +1903,7 @@ void printinghtml(char fileres[], char title[], char datafile[], int firstpass,
     printf("Problem with %s \n",optionfilehtm), exit(0);\r
   }\r
 \r
- fprintf(fichtm,"<body><ul> <font size=\"6\">Imach, Version 0.71a </font> <hr size=\"2\" color=\"#EC5E5E\"> \r
+ fprintf(fichtm,"<body><ul> <font size=\"6\">Imach, Version 0.71c </font> <hr size=\"2\" color=\"#EC5E5E\"> \r
 Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br>\r
 \r
 Total number of observations=%d <br>\r
@@ -2466,7 +2466,7 @@ int main(int argc, char *argv[])
   double dateprev1, dateprev2,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2;\r
   \r
 \r
-  char version[80]="Imach version 0.71a, March 2002, INED-EUROREVES ";\r
+  char version[80]="Imach version 0.71c, March 2002, INED-EUROREVES ";\r
   char *alph[]={"a","a","b","c","d","e"}, str[4];\r
 \r
 \r
@@ -3175,15 +3175,15 @@ while((c=getc(ficpar))=='#' && c!= EOF){
 \r
 \r
   /*---------- Forecasting ------------------*/\r
-  if((stepm == 1) && (model==".")){\r
+  if((stepm == 1) && (strcmp(model,".")==0)){\r
     prevforecast(fileres, anproj1,mproj1,jproj1, agemin,agemax, dateprev1, dateprev2,mobilav, agedeb, fage, popforecast, popfile, anproj2,p, i1);\r
-if (popforecast==1) populforecast(fileres, anpyram,mpyram,jpyram, agemin,agemax, dateprev1, dateprev2,mobilav, agedeb, fage, popforecast, popfile, anpyram1,p, i1);\r
+    if (popforecast==1) populforecast(fileres, anpyram,mpyram,jpyram, agemin,agemax, dateprev1, dateprev2,mobilav, agedeb, fage, popforecast, popfile, anpyram1,p, i1);\r
     free_matrix(mint,1,maxwav,1,n);\r
     free_matrix(anint,1,maxwav,1,n); free_imatrix(s,1,maxwav+1,1,n);\r
     free_vector(weight,1,n);}\r
   else{\r
     erreur=108;\r
-    printf("Error %d!! You can only forecast the prevalences if the optimization\n  has been performed with stepm = 1 (month) instead of %d\n", erreur, stepm);\r
+    printf("Warning %d!! You can only forecast the prevalences if the optimization\n  has been performed with stepm = 1 (month) instead of %d or model=. instead of '%s'\n", erreur, stepm, model);\r
   }\r
   \r
 \r