]> henry.ined.fr Git - .git/commitdiff
Summary: 0.98p
authorN. Brouard <brouard@ined.fr>
Mon, 22 Dec 2014 23:08:31 +0000 (23:08 +0000)
committerN. Brouard <brouard@ined.fr>
Mon, 22 Dec 2014 23:08:31 +0000 (23:08 +0000)
Outputs some informations on compiler used, OS etc. Testing on different platforms.

src/imach.c

index 03a06c764e1deaa490e26b861f75ba9c2f828ce5..9e20b8f40b06a48ee81ad417b456997d5f39d57a 100644 (file)
@@ -1,6 +1,9 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.168  2014/12/22 15:17:42  brouard
+  Summary: udate
+
   Revision 1.167  2014/12/22 13:50:56  brouard
   Summary: Testing uname and compiler version and if compiled 32 or 64
 
@@ -590,7 +593,7 @@ typedef struct {
 /* $Id$ */
 /* $State$ */
 
-char version[]="Imach version 0.98nY, December 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015";
+char version[]="Imach version 0.98p, December 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015";
 char fullversion[]="$Revision$ $Date$"; 
 char strstart[80];
 char optionfilext[10], optionfilefiname[FILENAMELENGTH];
@@ -1502,7 +1505,7 @@ void powell(double p[], double **xi, int n, double ftol, int *iter, double *fret
          xi[j][n]=xit[j];      /* and nth direction by the extrapolated */
        }
        printf("Gaining to use average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig);
-       fprintf(ficlog,"Gaining to use average direction of P0 P%d instead of biggest increase direction :\n",n,ibig);
+       fprintf(ficlog,"Gaining to use average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig);
 
 #ifdef DEBUG
        printf("Direction changed  last moved %d in place of ibig=%d, new last is the average:\n",n,ibig);
@@ -1525,22 +1528,22 @@ double **prevalim(double **prlim, int nlstate, double x[], double age, double **
 {
   /* Computes the prevalence limit in each live state at age x by left multiplying the unit
      matrix by transitions matrix until convergence is reached */
-
+  
   int i, ii,j,k;
   double min, max, maxmin, maxmax,sumnew=0.;
   /* double **matprod2(); */ /* test */
   double **out, cov[NCOVMAX+1], **pmij();
   double **newm;
   double agefin, delaymax=50 ; /* Max number of years to converge */
-
+  
   for (ii=1;ii<=nlstate+ndeath;ii++)
     for (j=1;j<=nlstate+ndeath;j++){
       oldm[ii][j]=(ii==j ? 1.0 : 0.0);
     }
-
-   cov[1]=1.;
- /* Even if hstepm = 1, at least one multiplication by the unit matrix */
+  
+  cov[1]=1.;
+  
 /* Even if hstepm = 1, at least one multiplication by the unit matrix */
   for(agefin=age-stepm/YEARM; agefin>=age-delaymax; agefin=agefin-stepm/YEARM){
     newm=savm;
     /* Covariates have to be included here again */
@@ -1577,11 +1580,12 @@ double **prevalim(double **prlim, int nlstate, double x[], double age, double **
       }
       maxmin=max-min;
       maxmax=FMAX(maxmax,maxmin);
-    }
+    } /* j loop */
     if(maxmax < ftolpl){
       return prlim;
     }
-  }
+  } /* age loop */
+  return prlim; /* should not reach here */
 }
 
 /*************** transition probabilities ***************/ 
@@ -2530,10 +2534,9 @@ void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag
 
   first=1;
 
-  /* for(k1=1; k1<=j ; k1++){   /* Loop on covariates */
-  /*  for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */
-  /*    j1++;
-*/
+  /* for(k1=1; k1<=j ; k1++){ */  /* Loop on covariates */
+  /*  for(i1=1; i1<=ncodemax[k1];i1++){ */ /* Now it is 2 */
+  /*    j1++; */
   for (j1 = 1; j1 <= (int) pow(2,cptcoveff); j1++){
       /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);
        scanf("%d", i);*/
@@ -2910,9 +2913,9 @@ void tricode(int *Tvar, int **nbcode, int imx, int *Ndum)
 {
   /**< Uses cptcovn+2*cptcovprod as the number of covariates */
   /*     Tvar[i]=atoi(stre);  find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 
-  /* Boring subroutine which should only output nbcode[Tvar[j]][k]
+   * Boring subroutine which should only output nbcode[Tvar[j]][k]
    * Tvar[5] in V2+V1+V3*age+V2*V4 is 2 (V2)
-  /* nbcode[Tvar[j]][1]= 
+   * nbcode[Tvar[j]][1]= 
   */
 
   int ij=1, k=0, j=0, i=0, maxncov=NCOVMAX;
@@ -3340,6 +3343,9 @@ void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double
   /* Variance of health expectancies */
   /*  double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/
   /* double **newm;*/
+  /* int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav)*/
+  
+  int movingaverage();
   double **dnewm,**doldm;
   double **dnewmp,**doldmp;
   int i, j, nhstepm, hstepm, h, nstepm ;
@@ -4038,7 +4044,7 @@ To be simple, these graphs help to understand the significativity of each parame
          } /* k12 */
        } /*l1 */
       }/* k1 */
-      /* } /* loop covariates */
+      /* } */ /* loop covariates */
   }
   free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage);
   free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage);
@@ -4426,7 +4432,7 @@ int movingaverage(double ***probs, double bage,double fage, double ***mobaverage
 
 
 /************** Forecasting ******************/
-prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){
+void prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){
   /* proj1, year, month, day of starting projection 
      agemin, agemax range of age
      dateprev1 dateprev2 range of dates during which prevalence is computed
@@ -4549,7 +4555,7 @@ prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, doubl
 }
 
 /************** Forecasting *****not tested NB*************/
-populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){
+void populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){
   
   int cpt, stepsize, hstepm, nhstepm, j,k,c, cptcod, i,h;
   int *popage;
@@ -5025,9 +5031,9 @@ int readdata(char datafile[], int firstobs, int lastobs, int *imax)
       
       strcpy(line,stra);
       cutv(stra, strb,line,' ');
-      if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){
+      if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){
       }
-      else  if(iout=sscanf(strb,"%s.",dummy) != 0){
+      else  if( (iout=sscanf(strb,"%s.",dummy)) != 0){
        month=99;
        year=9999;
       }else{
@@ -5041,9 +5047,9 @@ int readdata(char datafile[], int firstobs, int lastobs, int *imax)
     } /* ENd Waves */
     
     cutv(stra, strb,line,' '); 
-    if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){
+    if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){
     }
-    else  if(iout=sscanf(strb,"%s.",dummy) != 0){
+    else  if( (iout=sscanf(strb,"%s.",dummy)) != 0){
       month=99;
       year=9999;
     }else{
@@ -5056,9 +5062,9 @@ int readdata(char datafile[], int firstobs, int lastobs, int *imax)
     strcpy(line,stra);
     
     cutv(stra, strb,line,' '); 
-    if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){
+    if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){
     }
-    else  if(iout=sscanf(strb,"%s.", dummy) != 0){
+    else  if( (iout=sscanf(strb,"%s.", dummy)) != 0){
       month=99;
       year=9999;
     }else{
@@ -5156,7 +5162,7 @@ void removespace(char *str) {
   do
     while (*p2 == ' ')
       p2++;
-  while (*p1++ = *p2++);
+  while (*p1++ == *p2++);
 }
 
 int decodemodel ( char model[], int lastobs) /**< This routine decode the model and returns:
@@ -5186,7 +5192,7 @@ int decodemodel ( char model[], int lastobs) /**< This routine decode the model
     cptcovs=j+1-j1; /**<  Number of simple covariates V1+V2*age+V3 +V3*V4=> V1 + V3 =2  */
     cptcovt= j+1; /* Number of total covariates in the model V1 + V2*age+ V3 + V3*V4=> 4*/
                   /* including age products which are counted in cptcovage.
-                 /* but the covariates which are products must be treated separately: ncovn=4- 2=2 (V1+V3). */
+                 * but the covariates which are products must be treated separately: ncovn=4- 2=2 (V1+V3). */
     cptcovprod=j1; /**< Number of products  V1*V2 +v3*age = 2 */
     cptcovprodnoage=0; /**< Number of covariate products without age: V3*V4 =1  */
     strcpy(modelsav,model); 
@@ -5328,7 +5334,7 @@ int decodemodel ( char model[], int lastobs) /**< This routine decode the model
     return (1);
 }
 
-calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn )
+int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn )
 {
   int i, m;
 
@@ -5339,13 +5345,13 @@ calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr,
        s[m][i]=-1;
       }
       if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){
-       *nberr++;
-       printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i);
-       fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i);
+       *nberr = *nberr + 1;
+       printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased (%d)\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr);
+       fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased (%d)\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr);
        s[m][i]=-1;
       }
       if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){
-       *nberr++;
+       (*nberr)++;
        printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); 
        fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); 
        s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */
@@ -5358,11 +5364,11 @@ calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr,
     for(m=firstpass; (m<= lastpass); m++){
       if(s[m][i] >0 || s[m][i]==-2 || s[m][i]==-4 || s[m][i]==-5){
        if (s[m][i] >= nlstate+1) {
-         if(agedc[i]>0)
-           if((int)moisdc[i]!=99 && (int)andc[i]!=9999)
+         if(agedc[i]>0){
+           if((int)moisdc[i]!=99 && (int)andc[i]!=9999){
              agev[m][i]=agedc[i];
          /*if(moisdc[i]==99 && andc[i]==9999) s[m][i]=-1;*/
-           else {
+           }else {
              if ((int)andc[i]!=9999){
                nbwarn++;
                printf("Warning negative age at death: %ld line:%d\n",num[i],i);
@@ -5370,6 +5376,7 @@ calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr,
                agev[m][i]=-1;
              }
            }
+         } /* agedc > 0 */
        }
        else if(s[m][i] !=9){ /* Standard case, age in fractional
                                 years but with the precision of a month */
@@ -5400,7 +5407,7 @@ calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr,
   for (i=1; i<=imx; i++)  {
     for(m=firstpass; (m<=lastpass); m++){
       if (s[m][i] > (nlstate+ndeath)) {
-       *nberr++;
+       (*nberr)++;
        printf("Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath);     
        fprintf(ficlog,"Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath);     
        return 1;
@@ -5425,21 +5432,38 @@ calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr,
     return (1);
 }
 
-syscompilerinfo()
+void syscompilerinfo()
  {
    /* #include "syscompilerinfo.h"*/
-#include <gnu/libc-version.h>
-#if defined(__GNUC__)
-# if defined(__GNUC_PATCHLEVEL__)
-#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
-                            + __GNUC_MINOR__ * 100 \
-                            + __GNUC_PATCHLEVEL__)
-# else
-#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
-                            + __GNUC_MINOR__ * 100)
-# endif
-#endif
+   /* #include <gnu/libc-version.h> */ /* Only on gnu */
 
+   printf("Compiled with:");fprintf(ficlog,"Compiled with:");
+#if defined(__clang__)
+   printf(" Clang/LLVM");fprintf(ficlog," Clang/LLVM");        /* Clang/LLVM. ---------------------------------------------- */
+#endif
+#if defined(__ICC) || defined(__INTEL_COMPILER)
+   printf(" Intel ICC/ICPC");fprintf(ficlog," Intel ICC/ICPC");/* Intel ICC/ICPC. ------------------------------------------ */
+#endif
+#if defined(__GNUC__) || defined(__GNUG__)
+   printf(" GNU GCC/G++");fprintf(ficlog," GNU GCC/G++");/* GNU GCC/G++. --------------------------------------------- */
+#endif
+#if defined(__HP_cc) || defined(__HP_aCC)
+   printf(" Hewlett-Packard C/aC++");fprintf(fcilog," Hewlett-Packard C/aC++"); /* Hewlett-Packard C/aC++. ---------------------------------- */
+#endif
+#if defined(__IBMC__) || defined(__IBMCPP__)
+   printf(" IBM XL C/C++"); fprintf(ficlog," IBM XL C/C++");/* IBM XL C/C++. -------------------------------------------- */
+#endif
+#if defined(_MSC_VER)
+   printf(" Microsoft Visual Studio");fprintf(ficlog," Microsoft Visual Studio");/* Microsoft Visual Studio. --------------------------------- */
+#endif
+#if defined(__PGI)
+   printf(" Portland Group PGCC/PGCPP");fprintf(ficlog," Portland Group PGCC/PGCPP");/* Portland Group PGCC/PGCPP. ------------------------------- */
+#endif
+#if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+   printf(" Oracle Solaris Studio");fprintf(ficlog," Oracle Solaris Studio\n");/* Oracle Solaris Studio. ----------------------------------- */
+#endif
+   printf(". ");fprintf(ficlog,". ");
+   
 // http://stackoverflow.com/questions/4605842/how-to-identify-platform-compiler-from-preprocessor-macros
 #ifdef _WIN32 // note the underscore: without it, it's not msdn official!
     // Windows (x64 and x86)
@@ -5462,26 +5486,39 @@ syscompilerinfo()
 /* _DEBUG // Defined when you compile with /LDd, /MDd, and /MTd. */
 #include <stdint.h>
 #if UINTPTR_MAX == 0xffffffff
-   printf("32-bit \n"); /* 32-bit */
+   printf(" 32-bit."); /* 32-bit */
 #elif UINTPTR_MAX == 0xffffffffffffffff
-  printf("64-bit \n");/* 64-bit */
+  printf(" 64-bit.");/* 64-bit */
 #else
- printf("wtf-bit \n"); /* wtf */
+ printf(" wtf-bit."); /* wtf */
 #endif
 
 struct utsname sysInfo;
 
    if (uname(&sysInfo) != -1) {
-      puts(sysInfo.sysname);
-      puts(sysInfo.nodename);
-      puts(sysInfo.release);
-      puts(sysInfo.version);
-      puts(sysInfo.machine);
+     printf(" %s %s %s %s %s\n",sysInfo.sysname, sysInfo.nodename, sysInfo.release, sysInfo.version, sysInfo.machine);
+     fprintf(ficlog," %s %s %s %s %s\n ",sysInfo.sysname, sysInfo.nodename, sysInfo.release, sysInfo.version, sysInfo.machine);
    }
    else
       perror("uname() error");
-   printf("GNU C version %d\n", __GNUC_VERSION__);
-  printf("GNU libc version: %s\n", gnu_get_libc_version());
+#if defined(__GNUC__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
+                            + __GNUC_MINOR__ * 100 \
+                            + __GNUC_PATCHLEVEL__)
+# else
+#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
+                            + __GNUC_MINOR__ * 100)
+# endif
+   printf("GNU C version %d.\n", __GNUC_VERSION__);
+   fprintf(ficlog, "GNU C version %d.\n", __GNUC_VERSION__);
+#endif
+#if defined(_MSC_VER)
+   printf("Visual C++ compiler: %s \n;", _MSC_FULL_VER);
+   fprintf(ficlog, "Visual C++ compiler: %s \n;", _MSC_FULL_VER);
+#endif
+   
+  /* printf("GNU libc version: %s\n", gnu_get_libc_version()); */
 
  }
 
@@ -5634,7 +5671,7 @@ int main(int argc, char *argv[])
   strcpy(command,"mkdir ");
   strcat(command,optionfilefiname);
   if((outcmd=system(command)) != 0){
-    printf("Problem creating directory or it already exists %s%s, err=%d\n",path,optionfilefiname,outcmd);
+    printf("Directory already exists (or can't create it) %s%s, err=%d\n",path,optionfilefiname,outcmd);
     /* fprintf(ficlog,"Problem creating directory %s%s\n",path,optionfilefiname); */
     /* fclose(ficlog); */
 /*     exit(1); */