[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.8 and 1.12

version 1.8, 2013/03/05 07:03:37 version 1.12, 2013/03/08 04:54:01
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/hgm/mh/src/mh.c,v 1.7 2013/03/05 06:35:54 takayama Exp $ */  /* $OpenXM: OpenXM/src/hgm/mh/src/mh.c,v 1.11 2013/03/07 07:02:18 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "sfile.h"  #include "sfile.h"
 #include "mh.h"  #include "mh.h"
 #define WSIZE 1024  #define WSIZE 1024
 extern int MH_DEBUG;  extern int MH_DEBUG;
 static imypower(int x,int n) {  static int imypower(int x,int n) {
   int a,i;    int a,i;
   a = 1;    a = 1;
   for (i=0; i<n; i++) a = a*x;    for (i=0; i<n; i++) a = a*x;
Line 22  struct cWishart *new_cWishart(int rank) {
Line 22  struct cWishart *new_cWishart(int rank) {
 }  }
   
 struct cWishart *mh_cwishart_gen(int m,int n,double beta[],double x0,  struct cWishart *mh_cwishart_gen(int m,int n,double beta[],double x0,
                               int approxDeg,double h, int dp, double x,int modep[]) {                                int approxDeg,double h, int dp, double x,int modep[]) {
   /*    /*
      modep[0]. Do Koev-Edelman (ignored for now).       modep[0]. Do Koev-Edelman (ignored for now).
      modep[1]. Do the HGM       modep[1]. Do the HGM
Line 125  struct cWishart *mh_cwishart_gen(int m,int n,double be
Line 125  struct cWishart *mh_cwishart_gen(int m,int n,double be
 /* Cumulative probability distribution function of the first eigenvalue of  /* Cumulative probability distribution function of the first eigenvalue of
    Wishart matrix by Series */     Wishart matrix by Series */
 struct cWishart *mh_cwishart_s(int m,int n,double beta[],double x0,  struct cWishart *mh_cwishart_s(int m,int n,double beta[],double x0,
                                int approxDeg,double h, int dp, double x) {                                 int approxDeg,double h, int dp, double x) {
   int modep[]={1,0,0};    int modep[]={1,0,0};
   return(mh_cwishart_gen(m,n,beta,x0,approxDeg,h,dp,x,modep));    return(mh_cwishart_gen(m,n,beta,x0,approxDeg,h,dp,x,modep));
 }  }
Line 133  struct cWishart *mh_cwishart_s(int m,int n,double beta
Line 133  struct cWishart *mh_cwishart_s(int m,int n,double beta
 /* Cumulative probability distribution function of the first eigenvalue of  /* Cumulative probability distribution function of the first eigenvalue of
    Wishart matrix by HGM */     Wishart matrix by HGM */
 struct cWishart *mh_cwishart_hgm(int m,int n,double beta[],double x0,  struct cWishart *mh_cwishart_hgm(int m,int n,double beta[],double x0,
                                  int approxDeg, double h, int dp , double x)                                   int approxDeg, double h, int dp , double x)
 {  {
   int modep[]={1,1,0};    int modep[]={1,1,0};
   return(mh_cwishart_gen(m,n,beta,x0,approxDeg,h,dp,x,modep));    return(mh_cwishart_gen(m,n,beta,x0,approxDeg,h,dp,x,modep));
 }  }
   
 #ifdef STANDALONE  #ifdef STANDALONE
 main() {  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;
   char *s;    char *s;
   char str[1024];    char str[1024];
   double x;    double x;
     int i,show;
     int strategy=0;
     double err[2]={-1.0,-1.0};
     show=1;
     for (i=1; i<argc; i++) {
           if (strcmp(argv[i],"--strategy")==0) {
             i++; sscanf(argv[i],"%d",&strategy);
           }else if (strcmp(argv[i],"--abserr")==0) {
             i++; sscanf(argv[i],"%lg",&(err[0]));
           }else if (strcmp(argv[i],"--relerr")==0) {
             i++; sscanf(argv[i],"%lg",&(err[1]));
           }else if (strcmp(argv[i],"--quiet")==0) {
             show=0;
           }else{
             fprintf(stderr,"Unknown option.\n");
           }
     }
     mh_set_strategy(strategy,err);
   cw=mh_cwishart_hgm(3,5,beta,0.3,7,  0.01,1,10);    cw=mh_cwishart_hgm(3,5,beta,0.3,7,  0.01,1,10);
   if (cw != NULL) {    if (cw != NULL) {
     printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);      printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);
     /* printf("%s",(char *)cw->aux); */      /* printf("%s",(char *)cw->aux); */
   }    }
   cw=mh_cwishart_hgm(4,5,beta,0.3,7,  0.01,1,10);    cw=mh_cwishart_hgm(4,5,beta,0.3,7,  0.01,1,10);
   if (cw != NULL) {    if (cw != NULL) {
     printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);      printf("x=%lf, y=%lf\n",cw->x,(cw->f)[0]);
     s = (char *)cw->aux;      s = (char *)cw->aux;
     /* printf("%s",(char *)cw->aux); */      /* printf("%s",(char *)cw->aux); */
     sfp = mh_fopen(s,"r",0);      if (show) {
     while (mh_fgets(str,1024,sfp)) {        sfp = mh_fopen(s,"r",0);
       sscanf(str,"%lg",&x); printf("%lg\n",x);        while (mh_fgets(str,1024,sfp)) {
           sscanf(str,"%lg",&x); printf("%lg\n",x);
         }
         mh_fclose(sfp);
     }      }
     mh_fclose(sfp);  
   }    }
 }  }
 main1() {  main1() {

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.12

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