Diff for /imach/src/imach.c between versions 1.250 and 1.258

version 1.250, 2016/09/08 16:07:27 version 1.258, 2017/04/03 10:17:47
Line 1 Line 1
 /* $Id$  /* $Id$
   $State$    $State$
   $Log$    $Log$
     Revision 1.258  2017/04/03 10:17:47  brouard
     Summary: Version 0.99r12
   
     Some cleanings, conformed with updated documentation.
   
     Revision 1.257  2017/03/29 16:53:30  brouard
     Summary: Temp
   
     Revision 1.256  2017/03/27 05:50:23  brouard
     Summary: Temporary
   
     Revision 1.255  2017/03/08 16:02:28  brouard
     Summary: IMaCh version 0.99r10 bugs in gnuplot fixed
   
     Revision 1.254  2017/03/08 07:13:00  brouard
     Summary: Fixing data parameter line
   
     Revision 1.253  2016/12/15 11:59:41  brouard
     Summary: 0.99 in progress
   
     Revision 1.252  2016/09/15 21:15:37  brouard
     *** empty log message ***
   
     Revision 1.251  2016/09/15 15:01:13  brouard
     Summary: not working
   
   Revision 1.250  2016/09/08 16:07:27  brouard    Revision 1.250  2016/09/08 16:07:27  brouard
   Summary: continue    Summary: continue
   
Line 125 Line 151
   Author: Nicolas Brouard    Author: Nicolas Brouard
   
   Revision 1.210  2015/11/18 17:41:20  brouard    Revision 1.210  2015/11/18 17:41:20  brouard
   Summary: Start working on projected prevalences    Summary: Start working on projected prevalences  Revision 1.209  2015/11/17 22:12:03  brouard
   
   Revision 1.209  2015/11/17 22:12:03  brouard  
   Summary: Adding ftolpl parameter    Summary: Adding ftolpl parameter
   Author: N Brouard    Author: N Brouard
   
Line 915  typedef struct { Line 939  typedef struct {
 /* #include <libintl.h> */  /* #include <libintl.h> */
 /* #define _(String) gettext (String) */  /* #define _(String) gettext (String) */
   
 #define MAXLINE 1024 /* Was 256. Overflow with 312 with 2 states and 4 covariates. Should be ok */  #define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */
   
 #define GNUPLOTPROGRAM "gnuplot"  #define GNUPLOTPROGRAM "gnuplot"
 /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/  /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/
Line 1158  int *TvarsQind; Line 1182  int *TvarsQind;
   
 #define MAXRESULTLINES 10  #define MAXRESULTLINES 10
 int nresult=0;  int nresult=0;
   int parameterline=0; /* # of the parameter (type) line */
 int TKresult[MAXRESULTLINES];  int TKresult[MAXRESULTLINES];
 int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */  int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */
 int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */  int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */
Line 2390  void powell(double p[], double **xi, int Line 2415  void powell(double p[], double **xi, int
             flatd++;              flatd++;
         }          }
         if(flatd >0){          if(flatd >0){
           printf("%d flat directions\n",flatd);            printf("%d flat directions: ",flatd);
           fprintf(ficlog,"%d flat directions\n",flatd);            fprintf(ficlog,"%d flat directions :",flatd);
           for (j=1;j<=n;j++) {             for (j=1;j<=n;j++) { 
             if(flatdir[j]>0){              if(flatdir[j]>0){
               printf("%d ",j);                printf("%d ",j);
Line 4119  void ludcmp(double **a, int n, int *indx Line 4144  void ludcmp(double **a, int n, int *indx
     big=0.0;       big=0.0; 
     for (j=1;j<=n;j++)       for (j=1;j<=n;j++) 
       if ((temp=fabs(a[i][j])) > big) big=temp;         if ((temp=fabs(a[i][j])) > big) big=temp; 
     if (big == 0.0) nrerror("Singular matrix in routine ludcmp");       if (big == 0.0){
         printf(" Singular Hessian matrix at row %d:\n",i);
         for (j=1;j<=n;j++) {
           printf(" a[%d][%d]=%f,",i,j,a[i][j]);
           fprintf(ficlog," a[%d][%d]=%f,",i,j,a[i][j]);
         }
         fflush(ficlog);
         fclose(ficlog);
         nrerror("Singular matrix in routine ludcmp"); 
       }
     vv[i]=1.0/big;       vv[i]=1.0/big; 
   }     } 
   for (j=1;j<=n;j++) {     for (j=1;j<=n;j++) { 
Line 4185  void pstamp(FILE *fichier) Line 4219  void pstamp(FILE *fichier)
   fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart);    fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart);
 }  }
   
   int linreg(int ifi, int ila, int *no, const double x[], const double y[], double* a, double* b, double* r, double* sa, double * sb) {
   
     /* y=a+bx regression */
     double   sumx = 0.0;                        /* sum of x                      */
     double   sumx2 = 0.0;                       /* sum of x**2                   */
     double   sumxy = 0.0;                       /* sum of x * y                  */
     double   sumy = 0.0;                        /* sum of y                      */
     double   sumy2 = 0.0;                       /* sum of y**2                   */
     double   sume2; /* sum of square or residuals */
     double yhat;
     
     double denom=0;
     int i;
     int ne=*no;
     
     for ( i=ifi, ne=0;i<=ila;i++) {
       if(!isfinite(x[i]) || !isfinite(y[i])){
         /* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */
         continue;
       }
       ne=ne+1;
       sumx  += x[i];       
       sumx2 += x[i]*x[i];  
       sumxy += x[i] * y[i];
       sumy  += y[i];      
       sumy2 += y[i]*y[i]; 
       denom = (ne * sumx2 - sumx*sumx);
       /* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */
     } 
     
     denom = (ne * sumx2 - sumx*sumx);
     if (denom == 0) {
       // vertical, slope m is infinity
       *b = INFINITY;
       *a = 0;
       if (r) *r = 0;
       return 1;
     }
     
     *b = (ne * sumxy  -  sumx * sumy) / denom;
     *a = (sumy * sumx2  -  sumx * sumxy) / denom;
     if (r!=NULL) {
       *r = (sumxy - sumx * sumy / ne) /          /* compute correlation coeff     */
         sqrt((sumx2 - sumx*sumx/ne) *
              (sumy2 - sumy*sumy/ne));
     }
     *no=ne;
     for ( i=ifi, ne=0;i<=ila;i++) {
       if(!isfinite(x[i]) || !isfinite(y[i])){
         /* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */
         continue;
       }
       ne=ne+1;
       yhat = y[i] - *a -*b* x[i];
       sume2  += yhat * yhat ;       
       
       denom = (ne * sumx2 - sumx*sumx);
       /* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */
     } 
     *sb = sqrt(sume2/(ne-2)/(sumx2 - sumx * sumx /ne));
     *sa= *sb * sqrt(sumx2/ne);
     
     return 0; 
   }
   
 /************ Frequencies ********************/  /************ Frequencies ********************/
 void  freqsummary(char fileres[], double p[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \  void  freqsummary(char fileres[], double p[], double pstart[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \
                   int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \                    int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \
                   int firstpass,  int lastpass, int stepm, int weightopt, char model[])                    int firstpass,  int lastpass, int stepm, int weightopt, char model[])
 {  /* Some frequencies as well as proposing some starting values */  {  /* Some frequencies as well as proposing some starting values */
       
   int i, m, jk, j1, bool, z1,j, k, iv, jj=0;    int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0;
   int iind=0, iage=0;    int iind=0, iage=0;
   int mi; /* Effective wave */    int mi; /* Effective wave */
   int first;    int first;
   double ***freq; /* Frequencies */    double ***freq; /* Frequencies */
     double *x, *y, a,b,r, sa, sb; /* for regression, y=b+m*x and r is the correlation coefficient */
     int no;
   double *meanq;    double *meanq;
   double **meanqt;    double **meanqt;
   double *pp, **prop, *posprop, *pospropt;    double *pp, **prop, *posprop, *pospropt;
Line 4204  void  freqsummary(char fileres[], double Line 4305  void  freqsummary(char fileres[], double
   double agebegin, ageend;    double agebegin, ageend;
           
   pp=vector(1,nlstate);    pp=vector(1,nlstate);
   prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE);     prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); 
   posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */     posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ 
   pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */     pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ 
   /* prop=matrix(1,nlstate,iagemin,iagemax+3); */    /* prop=matrix(1,nlstate,iagemin,iagemax+3); */
Line 4248  Title=%s <br>Datafile=%s Firstpass=%d La Line 4349  Title=%s <br>Datafile=%s Firstpass=%d La
   }    }
   fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr);    fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr);
       
   freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+3+AGEMARGE);    y= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE);
     x= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE);
     freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+4+AGEMARGE);
   j1=0;    j1=0;
       
   /* j=ncoveff;  /\* Only fixed dummy covariates *\/ */    /* j=ncoveff;  /\* Only fixed dummy covariates *\/ */
Line 4265  Title=%s <br>Datafile=%s Firstpass=%d La Line 4368  Title=%s <br>Datafile=%s Firstpass=%d La
   dateintsum=0;    dateintsum=0;
   k2cpt=0;    k2cpt=0;
   
   for (j = 0; j <= cptcoveff; j+=cptcoveff){       if(cptcoveff == 0 )
   first=1;      nl=1;  /* Constant model only */
   for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */    else
     posproptt=0.;      nl=2;
     /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);    for (nj = 1; nj <= nl; nj++){   /* nj= 1 constant model, nl number of loops. */
       scanf("%d", i);*/      if(nj==1)
     for (i=-5; i<=nlstate+ndeath; i++)          j=0;  /* First pass for the constant */
       for (jk=-5; jk<=nlstate+ndeath; jk++)        else
         j=cptcoveff; /* Other passes for the covariate values */
       first=1;
       for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */
         posproptt=0.;
         /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);
           scanf("%d", i);*/
         for (i=-5; i<=nlstate+ndeath; i++)  
           for (jk=-5; jk<=nlstate+ndeath; jk++)  
             for(m=iagemin; m <= iagemax+3; m++)
               freq[i][jk][m]=0;
         
         for (i=1; i<=nlstate; i++)  {
         for(m=iagemin; m <= iagemax+3; m++)          for(m=iagemin; m <= iagemax+3; m++)
           freq[i][jk][m]=0;            prop[i][m]=0;
               posprop[i]=0;
     for (i=1; i<=nlstate; i++)  {          pospropt[i]=0;
       for(m=iagemin; m <= iagemax+3; m++)        }
         prop[i][m]=0;        /* for (z1=1; z1<= nqfveff; z1++) {   */
       posprop[i]=0;        /*   meanq[z1]+=0.; */
       pospropt[i]=0;        /*   for(m=1;m<=lastpass;m++){ */
     }        /*        meanqt[m][z1]=0.; */
     /* for (z1=1; z1<= nqfveff; z1++) {   */        /*   } */
     /*   meanq[z1]+=0.; */        /* } */
     /*   for(m=1;m<=lastpass;m++){ */        
     /*  meanqt[m][z1]=0.; */        /* dateintsum=0; */
     /*   } */        /* k2cpt=0; */
     /* } */        
             /* For that combination of covariate j1, we count and print the frequencies in one pass */
     /* dateintsum=0; */        for (iind=1; iind<=imx; iind++) { /* For each individual iind */
     /* k2cpt=0; */          bool=1;
           if(j !=0){
     /* For that combination of covariate j1, we count and print the frequencies in one pass */            if(anyvaryingduminmodel==0){ /* If All fixed covariates */
     for (iind=1; iind<=imx; iind++) { /* For each individual iind */              if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */
       bool=1;                /* for (z1=1; z1<= nqfveff; z1++) {   */
       if(j !=0){                /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */
       if(anyvaryingduminmodel==0){ /* If All fixed covariates */                /* } */
         if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */                for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */
           /* for (z1=1; z1<= nqfveff; z1++) {   */                  /* if(Tvaraff[z1] ==-20){ */
           /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */                  /*       /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */
           /* } */                  /* }else  if(Tvaraff[z1] ==-10){ */
           for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */                  /*       /\* sumnew+=coqvar[z1][iind]; *\/ */
             /* if(Tvaraff[z1] ==-20){ */                  /* }else  */
             /*   /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */                  if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */
             /* }else  if(Tvaraff[z1] ==-10){ */                    /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */
             /*   /\* sumnew+=coqvar[z1][iind]; *\/ */                    bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */
             /* }else  */                    /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", 
             if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */                       bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),
               /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */                       j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/
               bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */                    /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/
               /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n",                   } /* Onlyf fixed */
                  bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),                } /* end z1 */
                  j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/              } /* cptcovn > 0 */
               /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/            } /* end any */
             } /* Onlyf fixed */          }/* end j==0 */
           } /* end z1 */          if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */
         } /* cptcovn > 0 */            /* for(m=firstpass; m<=lastpass; m++){ */
       } /* end any */            for(mi=1; mi<wav[iind];mi++){ /* For that wave */
       }/* end j==0 */              m=mw[mi][iind];
       if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */              if(j!=0){
         /* for(m=firstpass; m<=lastpass; m++){ */                if(anyvaryingduminmodel==1){ /* Some are varying covariates */
         for(mi=1; mi<wav[iind];mi++){ /* For that wave */                  for (z1=1; z1<=cptcoveff; z1++) {
           m=mw[mi][iind];                    if( Fixed[Tmodelind[z1]]==1){
           if(j!=0){                      iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;
           if(anyvaryingduminmodel==1){ /* Some are varying covariates */                      if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's 
             for (z1=1; z1<=cptcoveff; z1++) {                                                                                        value is -1, we don't select. It differs from the 
               if( Fixed[Tmodelind[z1]]==1){                                                                                        constant and age model which counts them. */
                 iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;                        bool=0; /* not selected */
                 if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's                     }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */
                                                                                   value is -1, we don't select. It differs from the                       if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {
                                                                                   constant and age model which counts them. */                        bool=0;
                   bool=0; /* not selected */                      }
               }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */                    }
                 if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {  
                   bool=0;  
                 }                  }
                 }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop  */
               } /* end j==0 */
               /* bool =0 we keep that guy which corresponds to the combination of dummy values */
               if(bool==1){
                 /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind]
                    and mw[mi+1][iind]. dh depends on stepm. */
                 agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/
                 ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */
                 if(m >=firstpass && m <=lastpass){
                   k2=anint[m][iind]+(mint[m][iind]/12.);
                   /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/
                   if(agev[m][iind]==0) agev[m][iind]=iagemax+1;  /* All ages equal to 0 are in iagemax+1 */
                   if(agev[m][iind]==1) agev[m][iind]=iagemax+2;  /* All ages equal to 1 are in iagemax+2 */
                   if (s[m][iind]>0 && s[m][iind]<=nlstate)  /* If status at wave m is known and a live state */
                     prop[s[m][iind]][(int)agev[m][iind]] += weight[iind];  /* At age of beginning of transition, where status is known */
                   if (m<lastpass) {
                     /* if(s[m][iind]==4 && s[m+1][iind]==4) */
                     /*   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */
                     if(s[m][iind]==-1)
                       printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.));
                     freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */
                     /* if((int)agev[m][iind] == 55) */
                     /*   printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */
                     /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */
                     freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */
                   }
                 } /* end if between passes */  
                 if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) {
                   dateintsum=dateintsum+k2; /* on all covariates ?*/
                   k2cpt++;
                   /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */
               }                }
             }              }else{
           }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop  */                bool=1;
           } /* end j==0 */              }/* end bool 2 */
           /* bool =0 we keep that guy which corresponds to the combination of dummy values */            } /* end m */
           if(bool==1){          } /* end bool */
             /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind]        } /* end iind = 1 to imx */
                and mw[mi+1][iind]. dh depends on stepm. */        /* prop[s][age] is feeded for any initial and valid live state as well as
             agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/           freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */
             ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */        
             if(m >=firstpass && m <=lastpass){        
               k2=anint[m][iind]+(mint[m][iind]/12.);        /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/
               /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/        pstamp(ficresp);
               if(agev[m][iind]==0) agev[m][iind]=iagemax+1;  /* All ages equal to 0 are in iagemax+1 */        if  (cptcoveff>0 && j!=0){
               if(agev[m][iind]==1) agev[m][iind]=iagemax+2;  /* All ages equal to 1 are in iagemax+2 */          printf( "\n#********** Variable "); 
               if (s[m][iind]>0 && s[m][iind]<=nlstate)  /* If status at wave m is known and a live state */          fprintf(ficresp, "\n#********** Variable "); 
                 prop[s[m][iind]][(int)agev[m][iind]] += weight[iind];  /* At age of beginning of transition, where status is known */          fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); 
               if (m<lastpass) {          fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); 
                 /* if(s[m][iind]==4 && s[m+1][iind]==4) */          fprintf(ficlog, "\n#********** Variable "); 
                 /*   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */          for (z1=1; z1<=cptcoveff; z1++){
                 if(s[m][iind]==-1)            if(!FixedV[Tvaraff[z1]]){
                   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.));              printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */              fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /* if((int)agev[m][iind] == 55) */              fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /*   printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */              fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */              fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */  
               }  
             } /* end if between passes */    
             if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) {  
               dateintsum=dateintsum+k2; /* on all covariates ?*/  
               k2cpt++;  
               /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */  
             }  
           }else{            }else{
             bool=1;              printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
           }/* end bool 2 */              fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
         } /* end m */              fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
       } /* end bool */              fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
     } /* end iind = 1 to imx */              fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
     /* prop[s][age] is feeded for any initial and valid live state as well as            }
        freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */          }
               printf( "**********\n#");
               fprintf(ficresp, "**********\n#");
     /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/          fprintf(ficresphtm, "**********</h3>\n");
     pstamp(ficresp);          fprintf(ficresphtmfr, "**********</h3>\n");
     if  (cptcoveff>0 && j!=0){          fprintf(ficlog, "**********\n");
       fprintf(ficresp, "\n#********** Variable ");         }
       fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable ");         fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">");
       fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable ");         for(i=1; i<=nlstate;i++) {
       fprintf(ficlog, "\n#********** Variable ");           fprintf(ficresp, " Age Prev(%d)  N(%d)  N  ",i,i);
       for (z1=1; z1<=cptcoveff; z1++){          fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i);
         if(DummyV[z1]){        }
           fprintf(ficresp, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        fprintf(ficresp, "\n");
           fprintf(ficresphtm, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        fprintf(ficresphtm, "\n");
           fprintf(ficresphtmfr, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        
           fprintf(ficlog, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        /* Header of frequency table by age */
         }else{        fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">");
           fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        fprintf(ficresphtmfr,"<th>Age</th> ");
           fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);        for(jk=-1; jk <=nlstate+ndeath; jk++){
           fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);          for(m=-1; m <=nlstate+ndeath; m++){
           fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);            if(jk!=0 && m!=0)
         }              fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m);
       }  
       fprintf(ficresp, "**********\n#");  
       fprintf(ficresphtm, "**********</h3>\n");  
       fprintf(ficresphtmfr, "**********</h3>\n");  
       fprintf(ficlog, "**********\n");  
     }  
     fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">");  
     for(i=1; i<=nlstate;i++) {  
       fprintf(ficresp, " Age Prev(%d)  N(%d)  N  ",i,i);  
       fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i);  
     }  
     fprintf(ficresp, "\n");  
     fprintf(ficresphtm, "\n");  
       
     /* Header of frequency table by age */  
     fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">");  
     fprintf(ficresphtmfr,"<th>Age</th> ");  
     for(jk=-1; jk <=nlstate+ndeath; jk++){  
       for(m=-1; m <=nlstate+ndeath; m++){  
         if(jk!=0 && m!=0)  
           fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m);  
       }  
     }  
     fprintf(ficresphtmfr, "\n");  
       
     /* For each age */  
     for(iage=iagemin; iage <= iagemax+3; iage++){  
       fprintf(ficresphtm,"<tr>");  
       if(iage==iagemax+1){  
         fprintf(ficlog,"1");  
         fprintf(ficresphtmfr,"<tr><th>0</th> ");  
       }else if(iage==iagemax+2){  
         fprintf(ficlog,"0");  
         fprintf(ficresphtmfr,"<tr><th>Unknown</th> ");  
       }else if(iage==iagemax+3){  
         fprintf(ficlog,"Total");  
         fprintf(ficresphtmfr,"<tr><th>Total</th> ");  
       }else{  
         if(first==1){  
           first=0;  
           printf("See log file for details...\n");  
         }          }
         fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage);  
         fprintf(ficlog,"Age %d", iage);  
       }  
       for(jk=1; jk <=nlstate ; jk++){  
         for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++)  
           pp[jk] += freq[jk][m][iage];   
       }        }
       for(jk=1; jk <=nlstate ; jk++){        fprintf(ficresphtmfr, "\n");
         for(m=-1, pos=0; m <=0 ; m++)      
           pos += freq[jk][m][iage];        /* For each age */
         if(pp[jk]>=1.e-10){        for(iage=iagemin; iage <= iagemax+3; iage++){
           fprintf(ficresphtm,"<tr>");
           if(iage==iagemax+1){
             fprintf(ficlog,"1");
             fprintf(ficresphtmfr,"<tr><th>0</th> ");
           }else if(iage==iagemax+2){
             fprintf(ficlog,"0");
             fprintf(ficresphtmfr,"<tr><th>Unknown</th> ");
           }else if(iage==iagemax+3){
             fprintf(ficlog,"Total");
             fprintf(ficresphtmfr,"<tr><th>Total</th> ");
           }else{
           if(first==1){            if(first==1){
             printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);              first=0;
               printf("See log file for details...\n");
             }
             fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage);
             fprintf(ficlog,"Age %d", iage);
           }
           for(jk=1; jk <=nlstate ; jk++){
             for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++)
               pp[jk] += freq[jk][m][iage]; 
           }
           for(jk=1; jk <=nlstate ; jk++){
             for(m=-1, pos=0; m <=0 ; m++)
               pos += freq[jk][m][iage];
             if(pp[jk]>=1.e-10){
               if(first==1){
                 printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);
               }
               fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);
             }else{
               if(first==1)
                 printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);
               fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);
           }            }
           fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);  
         }else{  
           if(first==1)  
             printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);  
           fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);  
         }          }
       }  
         
       for(jk=1; jk <=nlstate ; jk++){   
         /* posprop[jk]=0; */  
         for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */  
           pp[jk] += freq[jk][m][iage];  
       } /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */  
               
       for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){          for(jk=1; jk <=nlstate ; jk++){ 
         pos += pp[jk]; /* pos is the total number of transitions until this age */            /* posprop[jk]=0; */
         posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state            for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */
               pp[jk] += freq[jk][m][iage];
           }       /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */
         
           for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){
             pos += pp[jk]; /* pos is the total number of transitions until this age */
             posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state
                                               from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */
             pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state
                                           from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */                                            from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */
         pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state  
                                         from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */  
       }  
       for(jk=1; jk <=nlstate ; jk++){  
         if(pos>=1.e-5){  
           if(first==1)  
             printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);  
           fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);  
         }else{  
           if(first==1)  
             printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);  
           fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);  
         }          }
         if( iage <= iagemax){          for(jk=1; jk <=nlstate ; jk++){
           if(pos>=1.e-5){            if(pos>=1.e-5){
             fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);              if(first==1)
             fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);                printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);
             /*probs[iage][jk][j1]= pp[jk]/pos;*/              fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);
             /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/            }else{
           }              if(first==1)
           else{                printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);
             fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta);              fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);
             fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta);            }
             if( iage <= iagemax){
               if(pos>=1.e-5){
                 fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);
                 fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);
                 /*probs[iage][jk][j1]= pp[jk]/pos;*/
                 /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/
               }
               else{
                 fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta);
                 fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta);
               }
           }            }
         }            pospropt[jk] +=posprop[jk];
         pospropt[jk] +=posprop[jk];          } /* end loop jk */
       } /* end loop jk */          /* pospropt=0.; */
       /* pospropt=0.; */          for(jk=-1; jk <=nlstate+ndeath; jk++){
       for(jk=-1; jk <=nlstate+ndeath; jk++){            for(m=-1; m <=nlstate+ndeath; m++){
         for(m=-1; m <=nlstate+ndeath; m++){              if(freq[jk][m][iage] !=0 ) { /* minimizing output */
           if(freq[jk][m][iage] !=0 ) { /* minimizing output */                if(first==1){
             if(first==1){                  printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);
               printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);                }
                 /* printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); */
                 fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]);
             }              }
             fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]);              if(jk!=0 && m!=0)
                 fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]);
           }            }
           if(jk!=0 && m!=0)          } /* end loop jk */
             fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]);          posproptt=0.; 
           for(jk=1; jk <=nlstate; jk++){
             posproptt += pospropt[jk];
           }
           fprintf(ficresphtmfr,"</tr>\n ");
           if(iage <= iagemax){
             fprintf(ficresp,"\n");
             fprintf(ficresphtm,"</tr>\n");
           }
           if(first==1)
             printf("Others in log...\n");
           fprintf(ficlog,"\n");
         } /* end loop age iage */
         fprintf(ficresphtm,"<tr><th>Tot</th>");
         for(jk=1; jk <=nlstate ; jk++){
           if(posproptt < 1.e-5){
             fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt); 
           }else{
             fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt);  
         }          }
       } /* end loop jk */  
       posproptt=0.;   
       for(jk=1; jk <=nlstate; jk++){  
         posproptt += pospropt[jk];  
       }  
       fprintf(ficresphtmfr,"</tr>\n ");  
       if(iage <= iagemax){  
         fprintf(ficresp,"\n");  
         fprintf(ficresphtm,"</tr>\n");  
       }        }
       if(first==1)        fprintf(ficresphtm,"</tr>\n");
         printf("Others in log...\n");        fprintf(ficresphtm,"</table>\n");
       fprintf(ficlog,"\n");        fprintf(ficresphtmfr,"</table>\n");
     } /* end loop age iage */  
     fprintf(ficresphtm,"<tr><th>Tot</th>");  
     for(jk=1; jk <=nlstate ; jk++){  
       if(posproptt < 1.e-5){        if(posproptt < 1.e-5){
         fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt);             fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);
           fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);
           fprintf(ficres,"\n  This combination (%d) is not valid and no result will be produced\n\n",j1);
           invalidvarcomb[j1]=1;
       }else{        }else{
         fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt);              fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1);
           invalidvarcomb[j1]=0;
       }        }
     }        fprintf(ficresphtmfr,"</table>\n");
     fprintf(ficresphtm,"</tr>\n");        fprintf(ficlog,"\n");
     fprintf(ficresphtm,"</table>\n");        if(j!=0){
     fprintf(ficresphtmfr,"</table>\n");          printf("#Freqsummary: Starting values for combination j1=%d:\n", j1);
     if(posproptt < 1.e-5){          for(i=1,jk=1; i <=nlstate; i++){
       fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);            for(k=1; k <=(nlstate+ndeath); k++){
       fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);              if (k != i) {
       fprintf(ficres,"\n  This combination (%d) is not valid and no result will be produced\n\n",j1);                for(jj=1; jj <=ncovmodel; jj++){ /* For counting jk */
       invalidvarcomb[j1]=1;                  if(jj==1){  /* Constant case (in fact cste + age) */
     }else{                    if(j1==1){ /* All dummy covariates to zero */
       fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1);                      freq[i][k][iagemax+4]=freq[i][k][iagemax+3]; /* Stores case 0 0 0 */
       invalidvarcomb[j1]=0;                      freq[i][i][iagemax+4]=freq[i][i][iagemax+3]; /* Stores case 0 0 0 */
     }                      printf("%d%d ",i,k);
     fprintf(ficresphtmfr,"</table>\n");                      fprintf(ficlog,"%d%d ",i,k);
   } /* end selected combination of covariate j1 */                      printf("%12.7f ln(%.0f/%.0f)= %f, OR=%f sd=%f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]),freq[i][k][iagemax+3]/freq[i][i][iagemax+3], sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]));
   if(j==0){ /* We can estimate starting values from the occurences in each case */                      fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
     printf("#Freqsummary\n");                      pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]);
     fprintf(ficlog,"\n");                    }
     for(i=1,jk=1; i <=nlstate; i++){                  }else if((j1==1) && (jj==2 || nagesqr==1)){ /* age or age*age parameter without covariate V4*age (to be done later) */
       for(k=1; k <=(nlstate+ndeath); k++){                    for(iage=iagemin; iage <= iagemax+3; iage++){
         if (k != i) {                      x[iage]= (double)iage;
           printf("%d%d ",i,k);                      y[iage]= log(freq[i][k][iage]/freq[i][i][iage]);
           fprintf(ficlog,"%d%d ",i,k);                      /* printf("i=%d, k=%d, jk=%d, j1=%d, jj=%d, y[%d]=%f\n",i,k,jk,j1,jj, iage, y[iage]); */
           for(jj=1; jj <=ncovmodel; jj++){                    }
             if(jj==1){                    linreg(iagemin,iagemax,&no,x,y,&a,&b,&r, &sa, &sb ); /* y= a+b*x with standard errors */
               printf("%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));                    pstart[jk]=b;
               fprintf(ficlog,"%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));                    pstart[jk-1]=a;
                   }else if( j1!=1 && (j1==2 || (log(j1-1.)/log(2.)-(int)(log(j1-1.)/log(2.))) <0.010) && ( TvarsDind[(int)(log(j1-1.)/log(2.))+1]+2+nagesqr == jj)  && Dummy[jj-2-nagesqr]==0){ /* We want only if the position, jj, in model corresponds to unique covariate equal to 1 in j1 combination */ 
                     printf("j1=%d, jj=%d, (int)(log(j1-1.)/log(2.))+1=%d, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(int)(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]);
                     printf("j1=%d, jj=%d, (log(j1-1.)/log(2.))+1=%f, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]);
                     pstart[jk]= log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]));
                     printf("%d%d ",i,k);
                     fprintf(ficlog,"%d%d ",i,k);
                     printf("jk=%d,i=%d,k=%d,p[%d]=%12.7f ln((%.0f/%.0f)/(%.0f/%.0f))= %f, OR=%f sd=%f \n",jk,i,k,jk,p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3],freq[i][k][iagemax+4],freq[i][i][iagemax+4], log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])),(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]), sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]+1/freq[i][k][iagemax+4]+1/freq[i][i][iagemax+4]));
                   }else{ /* Other cases, like quantitative fixed or varying covariates */
                     ;
                   }
                   /* printf("%12.7f )", param[i][jj][k]); */
                   /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */
                   jk++; 
                 } /* end jj */
               } /* end k!= i */
             } /* end k */
           } /* end i, jk */
         } /* end j !=0 */
       } /* end selected combination of covariate j1 */
       if(j==0){ /* We can estimate starting values from the occurences in each case */
         printf("#Freqsummary: Starting values for the constants:\n");
         fprintf(ficlog,"\n");
         for(i=1,jk=1; i <=nlstate; i++){
           for(k=1; k <=(nlstate+ndeath); k++){
             if (k != i) {
               printf("%d%d ",i,k);
               fprintf(ficlog,"%d%d ",i,k);
               for(jj=1; jj <=ncovmodel; jj++){
                 pstart[jk]=p[jk]; /* Setting pstart to p values by default */
                 if(jj==1){ /* Age has to be done */
                   pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]);
                   printf("%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
                   fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
                 }
                 /* printf("%12.7f )", param[i][jj][k]); */
                 /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */
                 jk++; 
             }              }
             /* printf("%12.7f )", param[i][jj][k]); */              printf("\n");
             /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */              fprintf(ficlog,"\n");
             jk++;   
           }            }
           printf("\n");  
           fprintf(ficlog,"\n");  
         }          }
       }        }
     }        printf("#Freqsummary\n");
     printf("#Freqsummary\n");        fprintf(ficlog,"\n");
     fprintf(ficlog,"\n");        for(jk=-1; jk <=nlstate+ndeath; jk++){
     for(jk=-1; jk <=nlstate+ndeath; jk++){          for(m=-1; m <=nlstate+ndeath; m++){
       for(m=-1; m <=nlstate+ndeath; m++){            /* param[i]|j][k]= freq[jk][m][iagemax+3] */
         /* param[i]|j][k]= freq[jk][m][iagemax+3] */  
           printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);            printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
           fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);            fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
         /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */            /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */
         /*   printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */            /*   printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
         /*   fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */            /*   fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
         /* } */            /* } */
       }          }
     } /* end loop jk */        } /* end loop jk */
     printf("\n");        
     fprintf(ficlog,"\n");        printf("\n");
   } /* if j=0 */        fprintf(ficlog,"\n");
       } /* end j=0 */
   } /* end j */    } /* end j */
   
     if(mle == -2){  /* We want to use these values as starting values */
       for(i=1, jk=1; i <=nlstate; i++){
         for(j=1; j <=nlstate+ndeath; j++){
           if(j!=i){
             /*ca[0]= k+'a'-1;ca[1]='\0';*/
             printf("%1d%1d",i,j);
             fprintf(ficparo,"%1d%1d",i,j);
             for(k=1; k<=ncovmodel;k++){
               /*    printf(" %lf",param[i][j][k]); */
               /*    fprintf(ficparo," %lf",param[i][j][k]); */
               p[jk]=pstart[jk];
               printf(" %f ",pstart[jk]);
               fprintf(ficparo," %f ",pstart[jk]);
               jk++;
             }
             printf("\n");
             fprintf(ficparo,"\n");
           }
         }
       }
     } /* end mle=-2 */
   dateintmean=dateintsum/k2cpt;     dateintmean=dateintsum/k2cpt; 
       
   fclose(ficresp);    fclose(ficresp);
Line 4594  Title=%s <br>Datafile=%s Firstpass=%d La Line 4779  Title=%s <br>Datafile=%s Firstpass=%d La
   fclose(ficresphtmfr);    fclose(ficresphtmfr);
   free_vector(meanq,1,nqfveff);    free_vector(meanq,1,nqfveff);
   free_matrix(meanqt,1,lastpass,1,nqtveff);    free_matrix(meanqt,1,lastpass,1,nqtveff);
   free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+3+AGEMARGE);    free_vector(x, iagemin-AGEMARGE, iagemax+4+AGEMARGE);
     free_vector(y, iagemin-AGEMARGE, iagemax+4+AGEMARGE);
     free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+4+AGEMARGE);
   free_vector(pospropt,1,nlstate);    free_vector(pospropt,1,nlstate);
   free_vector(posprop,1,nlstate);    free_vector(posprop,1,nlstate);
   free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+3+AGEMARGE);    free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+4+AGEMARGE);
   free_vector(pp,1,nlstate);    free_vector(pp,1,nlstate);
   /* End of freqsummary */    /* End of freqsummary */
 }  }
Line 4624  void prevalence(double ***probs, double Line 4811  void prevalence(double ***probs, double
   iagemin= (int) agemin;    iagemin= (int) agemin;
   iagemax= (int) agemax;    iagemax= (int) agemax;
   /*pp=vector(1,nlstate);*/    /*pp=vector(1,nlstate);*/
   prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE);     prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); 
   /*  freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/    /*  freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/
   j1=0;    j1=0;
       
Line 4634  void prevalence(double ***probs, double Line 4821  void prevalence(double ***probs, double
   first=1;    first=1;
   for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */    for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */
     for (i=1; i<=nlstate; i++)        for (i=1; i<=nlstate; i++)  
       for(iage=iagemin-AGEMARGE; iage <= iagemax+3+AGEMARGE; iage++)        for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++)
         prop[i][iage]=0.0;          prop[i][iage]=0.0;
     printf("Prevalence combination of varying and fixed dummies %d\n",j1);      printf("Prevalence combination of varying and fixed dummies %d\n",j1);
     /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */      /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */
Line 4665  void prevalence(double ***probs, double Line 4852  void prevalence(double ***probs, double
             if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */              if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */
               if(agev[m][i]==0) agev[m][i]=iagemax+1;                if(agev[m][i]==0) agev[m][i]=iagemax+1;
               if(agev[m][i]==1) agev[m][i]=iagemax+2;                if(agev[m][i]==1) agev[m][i]=iagemax+2;
               if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+3+AGEMARGE){                if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+4+AGEMARGE){
                 printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d  m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m);                   printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d  m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); 
                 exit(1);                  exit(1);
               }                }
Line 4702  void prevalence(double ***probs, double Line 4889  void prevalence(double ***probs, double
       
   /*  free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/    /*  free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/
   /*free_vector(pp,1,nlstate);*/    /*free_vector(pp,1,nlstate);*/
   free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+3+AGEMARGE);    free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+4+AGEMARGE);
 }  /* End of prevalence */  }  /* End of prevalence */
   
 /************* Waves Concatenation ***************/  /************* Waves Concatenation ***************/
Line 4781  void  concatwav(int wav[], int **dh, int Line 4968  void  concatwav(int wav[], int **dh, int
       /* if(mi==0)  never been interviewed correctly before death */        /* if(mi==0)  never been interviewed correctly before death */
       /* Only death is a correct wave */        /* Only death is a correct wave */
       mw[mi][i]=m;        mw[mi][i]=m;
     }      } /* else not in a death state */
 #ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE  #ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE
     else if ((int) andc[i] != 9999) { /* Status is negative. A death occured after lastpass, we can't take it into account because of potential bias */      else if ((int) andc[i] != 9999) {  /* Date of death is known */
       /* m++; */  
       /* mi++; */  
       /* s[m][i]=nlstate+1;  /\* We are setting the status to the last of non live state *\/ */  
       /* mw[mi][i]=m; */  
       if ((int)anint[m][i]!= 9999) { /* date of last interview is known */        if ((int)anint[m][i]!= 9999) { /* date of last interview is known */
         if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */          if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */
           nbwarn++;            nbwarn++;
Line 4800  void  concatwav(int wav[], int **dh, int Line 4983  void  concatwav(int wav[], int **dh, int
         }else{ /* Death occured afer last wave potential bias */          }else{ /* Death occured afer last wave potential bias */
           nberr++;            nberr++;
           if(firstwo==0){            if(firstwo==0){
             printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );              printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );
             firstwo=1;              firstwo=1;
           }            }
           fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );            fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\n\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );
         }          }
       }else{ /* end date of interview is known */        }else{ /* if date of interview is unknown */
         /* death is known but not confirmed by death status at any wave */          /* death is known but not confirmed by death status at any wave */
         if(firstfour==0){          if(firstfour==0){
           printf("Error! Death for individual %ld line=%d  occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );            printf("Error! Death for individual %ld line=%d  occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m );
Line 6198  To be simple, these graphs help to under Line 6381  To be simple, these graphs help to under
 void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \  void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \
                   int lastpass, int stepm, int weightopt, char model[],\                    int lastpass, int stepm, int weightopt, char model[],\
                   int imx,int jmin, int jmax, double jmeanint,char rfileres[],\                    int imx,int jmin, int jmax, double jmeanint,char rfileres[],\
                   int popforecast, int prevfcast, int backcast, int estepm , \                    int popforecast, int mobilav, int prevfcast, int mobilavproj, int backcast, int estepm , \
                   double jprev1, double mprev1,double anprev1, double dateprev1, \                    double jprev1, double mprev1,double anprev1, double dateprev1, \
                   double jprev2, double mprev2,double anprev2, double dateprev2){                    double jprev2, double mprev2,double anprev2, double dateprev2){
   int jj1, k1, i1, cpt, k4, nres;    int jj1, k1, i1, cpt, k4, nres;
Line 6245  void printinghtml(char fileresu[], char Line 6428  void printinghtml(char fileresu[], char
   
    for(nres=1; nres <= nresult; nres++) /* For each resultline */     for(nres=1; nres <= nresult; nres++) /* For each resultline */
    for(k1=1; k1<=m;k1++){ /* For each combination of covariate */     for(k1=1; k1<=m;k1++){ /* For each combination of covariate */
      if(TKresult[nres]!= k1)       if(m != 1 && TKresult[nres]!= k1)
        continue;         continue;
   
      /* for(i1=1; i1<=ncodemax[k1];i1++){ */       /* for(i1=1; i1<=ncodemax[k1];i1++){ */
Line 6296  divided by h: <sub>h</sub>P<sub>ij</sub> Line 6479  divided by h: <sub>h</sub>P<sub>ij</sub>
      }       }
      /* Period (stable) prevalence in each health state */       /* Period (stable) prevalence in each health state */
      for(cpt=1; cpt<=nlstate;cpt++){       for(cpt=1; cpt<=nlstate;cpt++){
        fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \         fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d some years earlier, knowing that we will be in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \
 <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres);  <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres);
      }       }
      if(backcast==1){       if(backcast==1){
        /* Period (stable) back prevalence in each health state */         /* Period (stable) back prevalence in each health state */
        for(cpt=1; cpt<=nlstate;cpt++){         for(cpt=1; cpt<=nlstate;cpt++){
          fprintf(fichtm,"<br>\n- Convergence to period (stable) back prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \           fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability to be in state %d at a younger age, knowing that we will be in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \
 <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres);  <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres);
        }         }
      }       }
      if(prevfcast==1){       if(prevfcast==1){
        /* Projection of prevalence up to period (stable) prevalence in each health state */         /* Projection of prevalence up to period (stable) prevalence in each health state */
        for(cpt=1; cpt<=nlstate;cpt++){         for(cpt=1; cpt<=nlstate;cpt++){
          fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f) up to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \           fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d) up to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \
 <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres);  <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres);
        }         }
      }       }
                     
Line 6377  See page 'Matrix of variance-covariance Line 6560  See page 'Matrix of variance-covariance
   
    for(nres=1; nres <= nresult; nres++){ /* For each resultline */     for(nres=1; nres <= nresult; nres++){ /* For each resultline */
    for(k1=1; k1<=m;k1++){     for(k1=1; k1<=m;k1++){
      if(TKresult[nres]!= k1)       if(m != 1 && TKresult[nres]!= k1)
        continue;         continue;
      /* for(i1=1; i1<=ncodemax[k1];i1++){ */       /* for(i1=1; i1<=ncodemax[k1];i1++){ */
      jj1++;       jj1++;
Line 6398  See page 'Matrix of variance-covariance Line 6581  See page 'Matrix of variance-covariance
        }         }
      }       }
      for(cpt=1; cpt<=nlstate;cpt++) {       for(cpt=1; cpt<=nlstate;cpt++) {
        fprintf(fichtm,"\n<br>- Observed (cross-sectional) and period (incidence based) \         fprintf(fichtm,"\n<br>- Observed (cross-sectional with mov_average=%d) and period (incidence based) \
 prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>\n <br>\  prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>\n <br>\
 <img src=\"%s_%d-%d-%d.svg\">",cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres);    <img src=\"%s_%d-%d-%d.svg\">",mobilav,cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres);  
      }       }
      fprintf(fichtm,"\n<br>- Total life expectancy by age and \       fprintf(fichtm,"\n<br>- Total life expectancy by age and \
 health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \  health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \
Line 6473  void printinggnuplot(char fileresu[], ch Line 6656  void printinggnuplot(char fileresu[], ch
     for (k1=1; k1<= m ; k1 ++){ /* For each valid combination of covariate */      for (k1=1; k1<= m ; k1 ++){ /* For each valid combination of covariate */
       for(nres=1; nres <= nresult; nres++){ /* For each resultline */        for(nres=1; nres <= nresult; nres++){ /* For each resultline */
         /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */          /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */
         if(TKresult[nres]!= k1)          if(m != 1 && TKresult[nres]!= k1)
           continue;            continue;
         /* We are interested in selected combination by the resultline */          /* We are interested in selected combination by the resultline */
         /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */          /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */
Line 6555  void printinggnuplot(char fileresu[], ch Line 6738  void printinggnuplot(char fileresu[], ch
   /*2 eme*/    /*2 eme*/
   for (k1=1; k1<= m ; k1 ++){      for (k1=1; k1<= m ; k1 ++){  
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
       fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files ");        fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files ");
       for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */        for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */
Line 6615  void printinggnuplot(char fileresu[], ch Line 6798  void printinggnuplot(char fileresu[], ch
   /*3eme*/    /*3eme*/
   for (k1=1; k1<= m ; k1 ++){    for (k1=1; k1<= m ; k1 ++){
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
   
       for (cpt=1; cpt<= nlstate ; cpt ++) {        for (cpt=1; cpt<= nlstate ; cpt ++) {
Line 6664  plot [%.f:%.f] \"%s\" every :::%d::%d u Line 6847  plot [%.f:%.f] \"%s\" every :::%d::%d u
   /* Survival functions (period) from state i in state j by initial state i */    /* Survival functions (period) from state i in state j by initial state i */
   for (k1=1; k1<=m; k1++){    /* For each covariate and each value */    for (k1=1; k1<=m; k1++){    /* For each covariate and each value */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
       for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/        for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/
         fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt);          fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt);
Line 6710  set ter svg size 640, 480\nunset log y\n Line 6893  set ter svg size 640, 480\nunset log y\n
   /* Survival functions (period) from state i in state j by final state j */    /* Survival functions (period) from state i in state j by final state j */
   for (k1=1; k1<= m ; k1++){ /* For each covariate combination if any */    for (k1=1; k1<= m ; k1++){ /* For each covariate combination if any */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
       for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state  */        for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state  */
         fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt);          fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt);
Line 6764  set ter svg size 640, 480\nunset log y\n Line 6947  set ter svg size 640, 480\nunset log y\n
   /* CV preval stable (period) for each covariate */    /* CV preval stable (period) for each covariate */
   for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */    for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */
   for(nres=1; nres <= nresult; nres++){ /* For each resultline */    for(nres=1; nres <= nresult; nres++){ /* For each resultline */
     if(TKresult[nres]!= k1)      if(m != 1 && TKresult[nres]!= k1)
       continue;        continue;
     for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */      for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state of arrival */
               
       fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt);        fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt);
       for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */        for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */
Line 6790  set ter svg size 640, 480\nunset log y\n Line 6973  set ter svg size 640, 480\nunset log y\n
       fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\        fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\
 set ter svg size 640, 480\nunset log y\nplot [%.f:%.f]  ", ageminpar, agemaxpar);  set ter svg size 640, 480\nunset log y\nplot [%.f:%.f]  ", ageminpar, agemaxpar);
       k=3; /* Offset */        k=3; /* Offset */
       for (i=1; i<= nlstate ; i ++){        for (i=1; i<= nlstate ; i ++){ /* State of origin */
         if(i==1)          if(i==1)
           fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_"));            fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_"));
         else          else
           fprintf(ficgp,", '' ");            fprintf(ficgp,", '' ");
         l=(nlstate+ndeath)*(i-1)+1;          l=(nlstate+ndeath)*(i-1)+1; /* 1, 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */
         fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l);          fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l);
         for (j=2; j<= nlstate ; j ++)          for (j=2; j<= nlstate ; j ++)
           fprintf(ficgp,"+$%d",k+l+j-1);            fprintf(ficgp,"+$%d",k+l+j-1);
Line 6811  set ter svg size 640, 480\nunset log y\n Line 6994  set ter svg size 640, 480\nunset log y\n
     /* CV back preval stable (period) for each covariate */      /* CV back preval stable (period) for each covariate */
     for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */      for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
       for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */        for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life ending state */
         fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt);          fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pijb' files, covariatecombination#=%d state=%d",k1, cpt);
         for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */          for (k=1; k<=cptcoveff; k++){    /* For each covariate and each value */
           lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */            lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */
           /* decodtabm(1,1,4) = 1 because h=1  k= (1) 1  1  1 */            /* decodtabm(1,1,4) = 1 because h=1  k= (1) 1  1  1 */
Line 6836  set ter svg size 640, 480\nunset log y\n Line 7019  set ter svg size 640, 480\nunset log y\n
         fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\          fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\
 set ter svg size 640, 480\nunset log y\nplot [%.f:%.f]  ", ageminpar, agemaxpar);  set ter svg size 640, 480\nunset log y\nplot [%.f:%.f]  ", ageminpar, agemaxpar);
         k=3; /* Offset */          k=3; /* Offset */
         for (i=1; i<= nlstate ; i ++){          for (i=1; i<= nlstate ; i ++){ /* State of origin */
           if(i==1)            if(i==1)
             fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_"));              fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_"));
           else            else
             fprintf(ficgp,", '' ");              fprintf(ficgp,", '' ");
           /* l=(nlstate+ndeath)*(i-1)+1; */            /* l=(nlstate+ndeath)*(i-1)+1; */
           l=(nlstate+ndeath)*(cpt-1)+1;            l=(nlstate+ndeath)*(cpt-1)+1; /* fixed for i; cpt=1 1, cpt=2 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */
           /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */            /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */
           /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */            /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */
           fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+(cpt-1)+i-1); /* a vérifier */            fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+i-1); /* To be verified */
           /* for (j=2; j<= nlstate ; j ++) */            /* for (j=2; j<= nlstate ; j ++) */
           /*    fprintf(ficgp,"+$%d",k+l+j-1); */            /*    fprintf(ficgp,"+$%d",k+l+j-1); */
           /*    /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */            /*    /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */
Line 6862  set ter svg size 640, 480\nunset log y\n Line 7045  set ter svg size 640, 480\nunset log y\n
           
     for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */      for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k1)        if(m != 1 && TKresult[nres]!= k1)
         continue;          continue;
       for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */        for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */
         fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt);          fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt);
Line 6993  set ter svg size 640, 480\nunset log y\n Line 7176  set ter svg size 640, 480\nunset log y\n
     fprintf(ficgp,"#   jk=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */      fprintf(ficgp,"#   jk=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */
     for(jk=1; jk <=m; jk++)  /* For each combination of covariate */      for(jk=1; jk <=m; jk++)  /* For each combination of covariate */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= jk)        if(m != 1 && TKresult[nres]!= jk)
         continue;          continue;
       fprintf(ficgp,"# Combination of dummy  jk=%d and ",jk);        fprintf(ficgp,"# Combination of dummy  jk=%d and ",jk);
       for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */        for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */
Line 7355  set ter svg size 640, 480\nunset log y\n Line 7538  set ter svg size 640, 480\nunset log y\n
 /*            if (h==(int)(YEARM*yearp)){ */  /*            if (h==(int)(YEARM*yearp)){ */
   for(nres=1; nres <= nresult; nres++) /* For each resultline */    for(nres=1; nres <= nresult; nres++) /* For each resultline */
   for(k=1; k<=i1;k++){    for(k=1; k<=i1;k++){
     if(TKresult[nres]!= k)      if(i1 != 1 && TKresult[nres]!= k)
       continue;        continue;
     if(invalidvarcomb[k]){      if(invalidvarcomb[k]){
       printf("\nCombination (%d) projection ignored because no cases \n",k);         printf("\nCombination (%d) projection ignored because no cases \n",k); 
Line 8306  int decoderesult ( char resultline[], in Line 8489  int decoderesult ( char resultline[], in
   if (strlen(resultsav) >1){    if (strlen(resultsav) >1){
     j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */      j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */
   }    }
     if(j == 0){ /* Resultline but no = */
       TKresult[nres]=0; /* Combination for the nresult and the model */
       return (0);
     }
       
   if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */    if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */
     printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);      printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);
     fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);      fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);
Line 9242  int prevalence_limit(double *p, double * Line 9430  int prevalence_limit(double *p, double *
   
   for(k=1; k<=i1;k++){ /* For each combination k of dummy covariates in the model */    for(k=1; k<=i1;k++){ /* For each combination k of dummy covariates in the model */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
   
       /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */        /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */
Line 9339  int back_prevalence_limit(double *p, dou Line 9527  int back_prevalence_limit(double *p, dou
       
   for(nres=1; nres <= nresult; nres++){ /* For each resultline */    for(nres=1; nres <= nresult; nres++){ /* For each resultline */
     for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */      for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */
       if(TKresult[nres]!= k)       if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));        //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));
       fprintf(ficresplb,"#******");        fprintf(ficresplb,"#******");
Line 9398  int back_prevalence_limit(double *p, dou Line 9586  int back_prevalence_limit(double *p, dou
         fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp);          fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp);
       } /* Age */        } /* Age */
       /* was end of cptcod */        /* was end of cptcod */
         /*fprintf(ficresplb,"\n");*/ /* Seems to be necessary for gnuplot only if two result lines and no covariate. */
     } /* end of any combination */      } /* end of any combination */
   } /* end of nres */      } /* end of nres */  
   /* hBijx(p, bage, fage); */    /* hBijx(p, bage, fage); */
Line 9442  int hPijx(double *p, int bage, int fage) Line 9631  int hPijx(double *p, int bage, int fage)
                 /*      k=k+1;  */                  /*      k=k+1;  */
     for(nres=1; nres <= nresult; nres++) /* For each resultline */      for(nres=1; nres <= nresult; nres++) /* For each resultline */
     for(k=1; k<=i1;k++){      for(k=1; k<=i1;k++){
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       fprintf(ficrespij,"\n#****** ");        fprintf(ficrespij,"\n#****** ");
       for(j=1;j<=cptcoveff;j++)         for(j=1;j<=cptcoveff;j++) 
Line 9514  int hPijx(double *p, int bage, int fage) Line 9703  int hPijx(double *p, int bage, int fage)
       
   /* hstepm=1;   aff par mois*/    /* hstepm=1;   aff par mois*/
   pstamp(ficrespijb);    pstamp(ficrespijb);
   fprintf(ficrespijb,"#****** h Pij x Back Probability to be in state i at age x-h being in j at x ");    fprintf(ficrespijb,"#****** h Bij x Back probability to be in state i at age x-h being in j at x: B1j+B2j+...=1 ");
   i1= pow(2,cptcoveff);    i1= pow(2,cptcoveff);
   /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */    /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */
   /*    /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */    /*    /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */
   /*    k=k+1;  */    /*    k=k+1;  */
   for(nres=1; nres <= nresult; nres++){ /* For each resultline */    for(nres=1; nres <= nresult; nres++){ /* For each resultline */
     for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */      for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       fprintf(ficrespijb,"\n#****** ");        fprintf(ficrespijb,"\n#****** ");
       for(j=1;j<=cptcoveff;j++)        for(j=1;j<=cptcoveff;j++)
Line 9548  int hPijx(double *p, int bage, int fage) Line 9737  int hPijx(double *p, int bage, int fage)
         /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k);   */          /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k);   */
         hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k);          hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k);
         /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */          /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */
         fprintf(ficrespijb,"# Cov Agex agex-h hpijx with i,j=");          fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j=");
         for(i=1; i<=nlstate;i++)          for(i=1; i<=nlstate;i++)
           for(j=1; j<=nlstate+ndeath;j++)            for(j=1; j<=nlstate+ndeath;j++)
             fprintf(ficrespijb," %1d-%1d",i,j);              fprintf(ficrespijb," %1d-%1d",i,j);
Line 9594  int main(int argc, char *argv[]) Line 9783  int main(int argc, char *argv[])
   int NDIM=2;    int NDIM=2;
   int vpopbased=0;    int vpopbased=0;
   int nres=0;    int nres=0;
     int endishere=0;
   
   char ca[32], cb[32];    char ca[32], cb[32];
   /*  FILE *fichtm; *//* Html File */    /*  FILE *fichtm; *//* Html File */
Line 9638  int main(int argc, char *argv[]) Line 9828  int main(int argc, char *argv[])
   double **prlim;    double **prlim;
   double **bprlim;    double **bprlim;
   double ***param; /* Matrix of parameters */    double ***param; /* Matrix of parameters */
   double  *p;    double ***paramstart; /* Matrix of starting parameter values */
     double  *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */
   double **matcov; /* Matrix of covariance */    double **matcov; /* Matrix of covariance */
   double **hess; /* Hessian matrix */    double **hess; /* Hessian matrix */
   double ***delti3; /* Scale */    double ***delti3; /* Scale */
Line 9963  int main(int argc, char *argv[]) Line 10154  int main(int argc, char *argv[])
     fclose (ficlog);      fclose (ficlog);
     goto end;      goto end;
     exit(0);      exit(0);
   } else if(mle==-2) { /* Guessing from means */  
     prwizard(ncovmodel, nlstate, ndeath, model, ficparo);  
     printf(" You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso);  
     fprintf(ficlog," You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso);  
      
   }  else if(mle==-5) { /* Main Wizard */    }  else if(mle==-5) { /* Main Wizard */
     prwizard(ncovmodel, nlstate, ndeath, model, ficparo);      prwizard(ncovmodel, nlstate, ndeath, model, ficparo);
     printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso);      printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso);
Line 9989  int main(int argc, char *argv[]) Line 10175  int main(int argc, char *argv[])
     ungetc(c,ficpar);      ungetc(c,ficpar);
           
     param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);      param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);
       paramstart= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);
     for(i=1; i <=nlstate; i++){      for(i=1; i <=nlstate; i++){
       j=0;        j=0;
       for(jj=1; jj <=nlstate+ndeath; jj++){        for(jj=1; jj <=nlstate+ndeath; jj++){
Line 10025  run imach with mle=-1 to get a correct t Line 10212  run imach with mle=-1 to get a correct t
     }        }  
     fflush(ficlog);      fflush(ficlog);
           
     /* Reads scales values */      /* Reads parameters values */
     p=param[1][1];      p=param[1][1];
       pstart=paramstart[1][1];
           
     /* Reads comments: lines beginning with '#' */      /* Reads comments: lines beginning with '#' */
     while((c=getc(ficpar))=='#' && c!= EOF){      while((c=getc(ficpar))=='#' && c!= EOF){
Line 10472  Title=%s <br>Datafile=%s Firstpass=%d La Line 10660  Title=%s <br>Datafile=%s Firstpass=%d La
   /* Calculates basic frequencies. Computes observed prevalence at single age     /* Calculates basic frequencies. Computes observed prevalence at single age 
                  and for any valid combination of covariates                   and for any valid combination of covariates
      and prints on file fileres'p'. */       and prints on file fileres'p'. */
   freqsummary(fileres, p, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \    freqsummary(fileres, p, pstart, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \
               firstpass, lastpass,  stepm,  weightopt, model);                firstpass, lastpass,  stepm,  weightopt, model);
   
   fprintf(fichtm,"\n");    fprintf(fichtm,"\n");
Line 10951  Please run with mle=-1 to get a correct Line 11139  Please run with mle=-1 to get a correct
     fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl);      fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl);
                                   
     /* Other stuffs, more or less useful */          /* Other stuffs, more or less useful */    
     while((c=getc(ficpar))=='#' && c!= EOF){      while(fgets(line, MAXLINE, ficpar)) {
       ungetc(c,ficpar);        /* If line starts with a # it is a comment */
       fgets(line, MAXLINE, ficpar);        if (line[0] == '#') {
       fputs(line,stdout);          numlinepar++;
       fputs(line,ficparo);          fputs(line,stdout);
     }          fputs(line,ficparo);
     ungetc(c,ficpar);          fputs(line,ficlog);
               continue;
     fscanf(ficpar,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav);        }else
     fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);          break;
     fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);  
     printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);  
     fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);  
       
     while((c=getc(ficpar))=='#' && c!= EOF){  
       ungetc(c,ficpar);  
       fgets(line, MAXLINE, ficpar);  
       fputs(line,stdout);  
       fputs(line,ficparo);  
     }  
     ungetc(c,ficpar);  
       
       
     dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.;  
     dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.;  
       
     fscanf(ficpar,"pop_based=%d\n",&popbased);  
     fprintf(ficlog,"pop_based=%d\n",popbased);  
     fprintf(ficparo,"pop_based=%d\n",popbased);     
     fprintf(ficres,"pop_based=%d\n",popbased);     
       
     while((c=getc(ficpar))=='#' && c!= EOF){  
       ungetc(c,ficpar);  
       fgets(line, MAXLINE, ficpar);  
       fputs(line,stdout);  
       fputs(line,ficres);  
       fputs(line,ficparo);  
     }      }
     ungetc(c,ficpar);  
           if((num_filled=sscanf(line,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav)) !=EOF){
     fscanf(ficpar,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj);        
     fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);        if (num_filled != 7) {
     printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);          printf("Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004  mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
     fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);          fprintf(ficlog,"Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004  mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
     fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);          goto end;
     /* day and month of proj2 are not used but only year anproj2.*/        }
             printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
     while((c=getc(ficpar))=='#' && c!= EOF){        fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
       ungetc(c,ficpar);        fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
       fgets(line, MAXLINE, ficpar);        fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
       fputs(line,stdout);  
       fputs(line,ficparo);  
       fputs(line,ficres);  
     }      }
     ungetc(c,ficpar);  
       
     fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);  
     fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);  
     fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);  
     fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);  
     /* day and month of proj2 are not used but only year anproj2.*/  
       
     /* Results */  
     nresult=0;  
     while(fgets(line, MAXLINE, ficpar)) {      while(fgets(line, MAXLINE, ficpar)) {
       /* If line starts with a # it is a comment */        /* If line starts with a # it is a comment */
       if (line[0] == '#') {        if (line[0] == '#') {
Line 11022  Please run with mle=-1 to get a correct Line 11171  Please run with mle=-1 to get a correct
         fputs(line,stdout);          fputs(line,stdout);
         fputs(line,ficparo);          fputs(line,ficparo);
         fputs(line,ficlog);          fputs(line,ficlog);
         fputs(line,ficres);  
         continue;          continue;
       }else        }else
         break;          break;
     }      }
     if (!feof(ficpar))      
     while((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){      
       if (num_filled == 0){      dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.;
         resultline[0]='\0';      dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.;
       break;      
       } else if (num_filled != 1){      if((num_filled=sscanf(line,"pop_based=%d\n",&popbased)) !=EOF){
         printf("ERROR %d: result line should be at minimum 'result=' %s\n",num_filled, line);        if (num_filled != 1) {
       }          printf("Error: Not 1 (data)parameters in line but %d, for example:pop_based=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
       nresult++; /* Sum of resultlines */          fprintf(ficlog,"Error: Not 1 (data)parameters in line but %d, for example: pop_based=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
       printf("Result %d: result=%s\n",nresult, resultline);  
       if(nresult > MAXRESULTLINES){  
         printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);  
         fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);  
         goto end;          goto end;
       }        }
       decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */        printf("pop_based=%d\n",popbased);
       fprintf(ficparo,"result: %s\n",resultline);        fprintf(ficlog,"pop_based=%d\n",popbased);
       fprintf(ficres,"result: %s\n",resultline);        fprintf(ficparo,"pop_based=%d\n",popbased);   
       fprintf(ficlog,"result: %s\n",resultline);        fprintf(ficres,"pop_based=%d\n",popbased);   
       while(fgets(line, MAXLINE, ficpar)) {      }
        
       /* Results */
       nresult=0;
       do{
         if(!fgets(line, MAXLINE, ficpar)){
           endishere=1;
           parameterline=14;
         }else if (line[0] == '#') {
         /* If line starts with a # it is a comment */          /* If line starts with a # it is a comment */
         if (line[0] == '#') {          numlinepar++;
           numlinepar++;          fputs(line,stdout);
           fputs(line,stdout);          fputs(line,ficparo);
           fputs(line,ficparo);          fputs(line,ficlog);
           fputs(line,ficres);          continue;
           fputs(line,ficlog);        }else if(sscanf(line,"prevforecast=%[^\n]\n",modeltemp))
           continue;          parameterline=11;
         }else        else if(sscanf(line,"backcast=%[^\n]\n",modeltemp))
           break;          parameterline=12;
         else if(sscanf(line,"result:%[^\n]\n",modeltemp))
           parameterline=13;
         else{
           parameterline=14;
       }        }
       if (feof(ficpar))        switch (parameterline){ 
         case 11:
           if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF){
             if (num_filled != 8) {
               printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
               fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
               goto end;
             }
             fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
             printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
             fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
             fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
             /* day and month of proj2 are not used but only year anproj2.*/
           }
         break;          break;
       else{ /* Processess output results for this combination of covariate values */        case 12:
       }                                      /*fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);*/
     } /* end while */          if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){
             if (num_filled != 8) {
               printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
               fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
               goto end;
             }
             printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
             fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
             fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
             fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
             /* day and month of proj2 are not used but only year anproj2.*/
           }
           break;
         case 13:
           if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){
             if (num_filled == 0){
               resultline[0]='\0';
               printf("Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line);
               fprintf(ficlog,"Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line);
               break;
             } else if (num_filled != 1){
               printf("ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line);
               fprintf(ficlog,"ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line);
             }
             nresult++; /* Sum of resultlines */
             printf("Result %d: result=%s\n",nresult, resultline);
             if(nresult > MAXRESULTLINES){
               printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);
               fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);
               goto end;
             }
             decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */
             fprintf(ficparo,"result: %s\n",resultline);
             fprintf(ficres,"result: %s\n",resultline);
             fprintf(ficlog,"result: %s\n",resultline);
             break;
           case 14: 
             if(ncovmodel >2){
               printf("ERROR: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line);
               goto end;
             }
           default:
             nresult=1;
             decoderesult(".",nresult ); /* No covariate */
           }
         } /* End switch parameterline */
       }while(endishere==0); /* End do */
           
     /* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); */      /* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); */
     /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */      /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */
Line 11081  Please run with mle=-1 to get a correct Line 11294  Please run with mle=-1 to get a correct
       printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p);        printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p);
     }      }
     printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \      printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \
                  model,imx,jmin,jmax,jmean,rfileres,popforecast,prevfcast,backcast, estepm, \                   model,imx,jmin,jmax,jmean,rfileres,popforecast,mobilav,prevfcast,mobilavproj,backcast, estepm, \
                  jprev1,mprev1,anprev1,dateprev1,jprev2,mprev2,anprev2,dateprev2);                   jprev1,mprev1,anprev1,dateprev1,jprev2,mprev2,anprev2,dateprev2);
                                   
     /*------------ free_vector  -------------*/      /*------------ free_vector  -------------*/
Line 11134  Please run with mle=-1 to get a correct Line 11347  Please run with mle=-1 to get a correct
       mobaverage=mobaverages;        mobaverage=mobaverages;
       if (mobilav!=0) {        if (mobilav!=0) {
         printf("Movingaveraging observed prevalence\n");          printf("Movingaveraging observed prevalence\n");
           fprintf(ficlog,"Movingaveraging observed prevalence\n");
         if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){          if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){
           fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav);            fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav);
           printf(" Error in movingaverage mobilav=%d\n",mobilav);            printf(" Error in movingaverage mobilav=%d\n",mobilav);
Line 11143  Please run with mle=-1 to get a correct Line 11357  Please run with mle=-1 to get a correct
       /* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */        /* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */
       else if (mobilavproj !=0) {        else if (mobilavproj !=0) {
         printf("Movingaveraging projected observed prevalence\n");          printf("Movingaveraging projected observed prevalence\n");
           fprintf(ficlog,"Movingaveraging projected observed prevalence\n");
         if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){          if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){
           fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj);            fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj);
           printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj);            printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj);
Line 11205  Please run with mle=-1 to get a correct Line 11420  Please run with mle=-1 to get a correct
           
     for(nres=1; nres <= nresult; nres++) /* For each resultline */      for(nres=1; nres <= nresult; nres++) /* For each resultline */
     for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */      for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       fprintf(ficreseij,"\n#****** ");        fprintf(ficreseij,"\n#****** ");
       printf("\n#****** ");        printf("\n#****** ");
Line 11278  Please run with mle=-1 to get a correct Line 11493  Please run with mle=-1 to get a correct
           
     for(nres=1; nres <= nresult; nres++) /* For each resultline */      for(nres=1; nres <= nresult; nres++) /* For each resultline */
     for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */      for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       printf("\n#****** Result for:");        printf("\n#****** Result for:");
       fprintf(ficrest,"\n#****** Result for:");        fprintf(ficrest,"\n#****** Result for:");
Line 11419  Please run with mle=-1 to get a correct Line 11634  Please run with mle=-1 to get a correct
   
     for(nres=1; nres <= nresult; nres++) /* For each resultline */      for(nres=1; nres <= nresult; nres++) /* For each resultline */
     for(k=1; k<=i1;k++){      for(k=1; k<=i1;k++){
       if(TKresult[nres]!= k)        if(i1 != 1 && TKresult[nres]!= k)
         continue;          continue;
       fprintf(ficresvpl,"\n#****** ");        fprintf(ficresvpl,"\n#****** ");
       printf("\n#****** ");        printf("\n#****** ");

Removed from v.1.250  
changed lines
  Added in v.1.258


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>