コード例 #1
0
ファイル: iolibrary.c プロジェクト: sfeek/rfassistant
/* Gracefully get a double or decimal value */
double getdouble (const char *display)
{
	char *buffer;
	double value;
	int rtn;

	while (1)
	{
		buffer = getstring (display);
		rtn = stringtodouble (buffer, &value);
		free (buffer);

		if (rtn == EXIT_SUCCESS)
			return value;
	}
}
コード例 #2
0
ファイル: argument_options.cpp プロジェクト: kujta1/rjmcmc-1
void ArgumentOptions::parse(int argc, char * argv[]){

   const char *sopts="hi:d:t:c:m:n:a:b:s:lg:evwz";

  //Parse arguments
  char opt;
  while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
    switch(opt){
    case 'i': 
      m_iterations = stringtolong(optarg,opt);
      break;
    case 'd':
      m_burnin = stringtolong(optarg,opt);
      break;
    case 't':
      m_thinning = stringtolong(optarg,opt);
      break;
    case 'm':
      m_move_width = stringtodouble(optarg,opt);
      break;
    case 'n':
      m_cp_prior = stringtodouble(optarg,opt);
      break;
    case 'a':
      m_gamma_prior_1 = stringtodouble(optarg,opt);
      break;
    case 'b':
      m_gamma_prior_2 = stringtodouble(optarg,opt);
      break;
    case 's':
      m_seed = stringtolong(optarg,opt);
      break;
    case 'l':
      m_calculate_posterior_mean = 1;
      break;
    case 'g':
      m_grid = stringtolong(optarg,opt);
      break;
    case 'e':
      m_disallow_empty_intervals_between_cps = 1;
      break;
    case 'v':
      m_write_cps_to_file = 1;
      break;
    case 'w':
      m_write_histograms_to_file = 1;
      break;
    case 'c':
      m_model = optarg;
      break;
    case 'z':
      m_importance_sampling = 1;
      break;
    case 'h':
      usage(0,argv[0]);
      break;
    default:
      usage(1,argv[0]);
   
    }
  }

  if(argc-optind != 3){
    usage(1,argv[0]);
  }
  m_datafile = argv[optind++]; 
  m_start = atof(argv[optind++]); 
  m_end = atof(argv[optind++]);

  if(m_grid == 0){
    m_grid = m_end;
  }

  if(m_move_width == 0){
    m_move_width = (double)(m_end-m_start)/20.00;
  }

}
コード例 #3
0
void ArgumentOptionsSMC::parse(int argc, char * argv[]){

   const char *sopts="hi:p:d:t:m:n:a:b:s:lg:evwc:f:z";

  //Parse arguments
  char opt;
  while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
    switch(opt){
    case 'i': 
      m_num_intervals = stringtolong(optarg,opt);
      break;
    case 'p':
      m_particles = stringtolong(optarg,opt);
      break;
    case 'd':
      m_burnin = stringtolong(optarg,opt);
      break;
    case 't':
      m_thinning = stringtolong(optarg,opt);
      break;
    case 'm':
      m_move_width = stringtodouble(optarg,opt);
      break;
    case 'n':
      m_cp_prior = stringtodouble(optarg,opt);
      break;
    case 'a':
      m_gamma_prior_1 = stringtodouble(optarg,opt);
      break;
    case 'b':
      m_gamma_prior_2 = stringtodouble(optarg,opt);
      break;
    case 's':
      m_seed = stringtolong(optarg,opt);
      break;
    case 'l':
      m_calculate_filtering_mean = 1;
      break;
    case 'g':
      m_grid = stringtolong(optarg,opt);
      break;
    case 'e':
      m_disallow_empty_intervals_between_cps = 1;
      break;
    case 'v':
      m_write_cps_to_file = 1;
      break;
    case 'w':
      m_print_ESS = 1;
      break;
    case 'c':
      m_model = optarg;
      break;
    case 'f':
      m_ESS_threshold = stringtodouble(optarg,opt);
      break;
    case 'z':
      m_importance_sampling = 1;
      break;
    case 'h':
      usage(0,argv[0]);
      break;
    default:
      usage(1,argv[0]);
   
    }
  }

  if(argc-optind != 3){
    usage(1,argv[0]);
  }

  m_datafile = argv[optind++]; 
  m_start = atof(argv[optind++]); 
  m_end = atof(argv[optind++]);

  if(m_grid == 0){
    m_grid = m_num_intervals;
  }else if(!(m_grid >= m_num_intervals and (m_grid % m_num_intervals) == 0)){
    cerr << "the grid has to be multiple of the number of intervals setting to equal the number of intervals" << endl;
    m_grid = m_num_intervals;
  }
  
  if(m_move_width == 0){
    double change_in_time = (m_end-m_start)/(double)m_num_intervals;
    m_move_width = change_in_time/3.0;
  }
}