/* $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
/* $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];
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);
{
/* 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 */
}
maxmin=max-min;
maxmax=FMAX(maxmax,maxmin);
- }
+ } /* j loop */
if(maxmax < ftolpl){
return prlim;
}
- }
+ } /* age loop */
+ return prlim; /* should not reach here */
}
/*************** transition probabilities ***************/
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);*/
{
/**< 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;
/* 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 ;
} /* 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);
/************** 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
}
/************** 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;
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{
} /* 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{
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{
do
while (*p2 == ' ')
p2++;
- while (*p1++ = *p2++);
+ while (*p1++ == *p2++);
}
int decodemodel ( char model[], int lastobs) /**< This routine decode the model and returns:
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);
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;
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 */
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);
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 */
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;
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)
/* _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()); */
}
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); */