[BACK]Return to mh.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / hgm / mh / src

Diff for /OpenXM/src/hgm/mh/src/mh.c between version 1.13 and 1.15

version 1.13, 2014/03/16 03:11:07 version 1.15, 2015/04/02 01:11:13
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/hgm/mh/src/mh.c,v 1.12 2013/03/08 04:54:01 takayama Exp $ */  /* $OpenXM: OpenXM/src/hgm/mh/src/mh.c,v 1.14 2015/03/24 05:59:43 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
   #include <string.h>
 #include "sfile.h"  #include "sfile.h"
 #include "mh.h"  #include "mh.h"
 #define WSIZE 1024  #define WSIZE 1024
Line 59  struct cWishart *mh_cwishart_gen(int m,int n,double be
Line 60  struct cWishart *mh_cwishart_gen(int m,int n,double be
   mh_fputs("%%Iv\n",fp); /* initial values, dummy */    mh_fputs("%%Iv\n",fp); /* initial values, dummy */
   for (i=0; i<rank; i++) mh_fputs("0.0\n",fp);    for (i=0; i<rank; i++) mh_fputs("0.0\n",fp);
   mh_fputs("%%Ef=\n1.0\n",fp); /* Below are dummy values */    mh_fputs("%%Ef=\n1.0\n",fp); /* Below are dummy values */
   if (h <= 0.0) {fprintf(stderr,"h<=0.0, set to 0.1\n"); h=0.1;}    if (h <= 0.0) {oxprintfe("h<=0.0, set to 0.1\n"); h=0.1;}
   mh_fputs("%%Hg=\n",fp);    mh_fputs("%%Hg=\n",fp);
   sprintf(swork,"%lf\n",h); mh_fputs(swork,fp);    sprintf(swork,"%lf\n",h); mh_fputs(swork,fp);
   if (dp < 1) {fprintf(stderr,"dp<1, set to 1\n"); dp=1;}    if (dp < 1) {oxprintfe("dp<1, set to 1\n"); dp=1;}
   mh_fputs("%%Dp=\n",fp);    mh_fputs("%%Dp=\n",fp);
   sprintf(swork,"%d\n",dp); mh_fputs(swork,fp);    sprintf(swork,"%d\n",dp); mh_fputs(swork,fp);
   if (x <= x0) {fprintf(stderr,"x <= x0, set to x=x0+10\n"); x=x0+10;}    if (x <= x0) {oxprintfe("x <= x0, set to x=x0+10\n"); x=x0+10;}
   mh_fputs("%%Xng=\n",fp);    mh_fputs("%%Xng=\n",fp);
   sprintf(swork,"%lf\n",x); mh_fputs(swork,fp);    sprintf(swork,"%lf\n",x); mh_fputs(swork,fp);
   
Line 84  struct cWishart *mh_cwishart_gen(int m,int n,double be
Line 85  struct cWishart *mh_cwishart_gen(int m,int n,double be
   
   rp=jk_main(6,argv);    rp=jk_main(6,argv);
   if (rp == NULL) {    if (rp == NULL) {
     fprintf(stderr,"rp is NULL.\n"); return(NULL);      oxprintfe("rp is NULL.\n"); return(NULL);
   }    }
   cw = new_cWishart(rank);    cw = new_cWishart(rank);
   cw->x = rp->x;    cw->x = rp->x;
   cw->rank = rp->rank;    cw->rank = rp->rank;
   if (rank !=  cw->rank) {    if (rank !=  cw->rank) {
     fprintf(stderr,"Rank error.\n"); return(NULL);      oxprintfe("Rank error.\n"); return(NULL);
   }    }
   for (i=0; i<cw->rank; i++) (cw->f)[i] = (rp->y)[i];    for (i=0; i<cw->rank; i++) (cw->f)[i] = (rp->y)[i];
   sfp = (rp->sfpp)[0];    sfp = (rp->sfpp)[0];
Line 102  struct cWishart *mh_cwishart_gen(int m,int n,double be
Line 103  struct cWishart *mh_cwishart_gen(int m,int n,double be
   /* todo, mh_free_??(rp);  free Iv's */    /* todo, mh_free_??(rp);  free Iv's */
   if (!modep[1]) return(cw);    if (!modep[1]) return(cw);
   
   if (MH_DEBUG) printf("\n\n%s\n",(char *)cw->aux);    if (MH_DEBUG) oxprintf("\n\n%s\n",(char *)cw->aux);
   /* This output is strange. */    /* This output is strange. */
   /* Starting HGM */    /* Starting HGM */
   argv[3] = (char *)cw->aux;    argv[3] = (char *)cw->aux;
Line 114  struct cWishart *mh_cwishart_gen(int m,int n,double be
Line 115  struct cWishart *mh_cwishart_gen(int m,int n,double be
   }    }
   rp = mh_main(argc,argv);    rp = mh_main(argc,argv);
   if (rp == NULL) {    if (rp == NULL) {
     fprintf(stderr,"rp is NULL in the second step.\n"); return(NULL);      oxprintfe("rp is NULL in the second step.\n"); return(NULL);
   }    }
   cw = new_cWishart(rank);    cw = new_cWishart(rank);
   cw->x = rp->x;    cw->x = rp->x;
Line 158  struct cWishart *mh_cwishart_hgm(int m,int n,double be
Line 159  struct cWishart *mh_cwishart_hgm(int m,int n,double be
 }  }
   
 #ifdef STANDALONE  #ifdef STANDALONE
 main(int argc,char *argv[]) {  int main(int argc,char *argv[]) {
   double beta[5]={1.0,2.0,3.0,4.0,5.0};    double beta[5]={1.0,2.0,3.0,4.0,5.0};
   struct cWishart *cw;    struct cWishart *cw;
   struct SFILE *sfp;    struct SFILE *sfp;
Line 182  main(int argc,char *argv[]) {
Line 183  main(int argc,char *argv[]) {
         }else if (strcmp(argv[i],"--verbose")==0) {          }else if (strcmp(argv[i],"--verbose")==0) {
           verbose=1;            verbose=1;
         }else{          }else{
           fprintf(stderr,"Unknown option.\n");            oxprintfe("Unknown option.\n");
         }          }
   }    }
   mh_set_strategy(strategy,err);    mh_set_strategy(strategy,err);
   cw=mh_cwishart_hgm(3,5,beta,0.3,7,  0.01,1,10, 1,1e-7,verbose);    cw=mh_cwishart_hgm(3,5,beta,0.3,7,  0.01,1,10, 1,1e-7,verbose);
   if (cw != NULL) {    if (cw != NULL) {
     printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);      oxprintf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);
     /* printf("%s",(char *)cw->aux); */      /* oxprintf("%s",(char *)cw->aux); */
   }    }
   cw=mh_cwishart_hgm(4,5,beta,0.3,7,  0.01,1,10, 1,1e-7,verbose);    cw=mh_cwishart_hgm(4,5,beta,0.3,7,  0.01,1,10, 1,1e-7,verbose);
   if (cw != NULL) {    if (cw != NULL) {
     printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);      oxprintf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);
     s = (char *)cw->aux;      s = (char *)cw->aux;
     /* printf("%s",(char *)cw->aux); */      /* oxprintf("%s",(char *)cw->aux); */
     if (show) {      if (show) {
       sfp = mh_fopen(s,"r",0);        sfp = mh_fopen(s,"r",0);
       while (mh_fgets(str,1024,sfp)) {        while (mh_fgets(str,1024,sfp)) {
         sscanf(str,"%lg",&x); printf("%lg\n",x);          sscanf(str,"%lg",&x); oxprintf("%lg\n",x);
       }        }
       mh_fclose(sfp);        mh_fclose(sfp);
     }      }
   }    }
     return(0);
 }  }
 main1() {  int main1() {
   double beta[5]={1.0,2.0,3.0,4.0,5.0};    double beta[5]={1.0,2.0,3.0,4.0,5.0};
   struct cWishart *cw;    struct cWishart *cw;
   int verbose=1;    int verbose=1;
   cw=mh_cwishart_s(3,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);    cw=mh_cwishart_s(3,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);
   if (cw != NULL) {    if (cw != NULL) {
     printf("%s",(char *)cw->aux);      oxprintf("%s",(char *)cw->aux);
   }    }
   cw=mh_cwishart_s(4,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);    cw=mh_cwishart_s(4,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);
   if (cw != NULL) {    if (cw != NULL) {
     printf("%s",(char *)cw->aux);      oxprintf("%s",(char *)cw->aux);
   }    }
   cw=mh_cwishart_s(5,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);    cw=mh_cwishart_s(5,5,beta,0.3,7,  0,0,0, 1,1e-7,verbose);
   if (cw != NULL) {    if (cw != NULL) {
     printf("%s",(char *)cw->aux);      oxprintf("%s",(char *)cw->aux);
   }    }
     return(0);
 }  }
 #endif  #endif

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.15

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