예제 #1
0
파일: vecarg.c 프로젝트: kazu1977/prml
int main(int argc, char **argv)
{
	int i, j;
	int flag = 0;
	int num_1, num_2;
	int dim_1, dim_2;
	double *vec_1, *vec_2;
	FILE *fp_1, *fp_2;

	if(argc < 3){
		fprintf(stderr, "\n[エラー] : 引数が足りません\n");
		fprintf(stderr, "[使用法] : vecarg <file1> <file2> (-rad)\n");
		exit(1);
	}

	/* ファイルから次元数とサンプル数を調べる。二つのファイルで一致しなけ
		 れば計算を行わない */
	get_size(argv[1], &dim_1, &num_1);
	get_size(argv[2], &dim_2, &num_2);

	if(is_opt(argc, argv, "-rad"))
		flag = 1;

	if((dim_1 != dim_2) || (num_1 != num_2)){
		fprintf(stderr, "\n[エラー] : 次元数、またはサンプル数が一致しません\n");
		exit(1);
	}

	/* ファイルからデータを一つ読み角度を計算する */
	if((fp_1 = fopen(argv[1], "r")) == NULL){
		fprintf(stderr, "\n[エラー] : ファイル %s が開けません\n", argv[1]);
		exit(1);
	}
	if((fp_2 = fopen(argv[2], "r")) == NULL){
		fprintf(stderr, "\n[エラー] : ファイル %s が開けません\n", argv[2]);
		exit(2);
	}

	vec_1 = new_double_vector(dim_1);
	vec_2 = new_double_vector(dim_2);

	for(i = 0; i < num_1; i++){

		for(j = 0; j < dim_1; j++)
			fscanf(fp_1, "%lf", &vec_1[j]);
		
		for(j = 0; j < dim_2; j++)
			fscanf(fp_2, "%lf", &vec_2[j]);

		/* 角度を計算して値を表示する */
		if(flag)
			fprintf(stdout, "%f\n", vec_arg(dim_1, vec_1, vec_2));
		else
			fprintf(stdout, "%f\n", vec_cos(dim_1, vec_1, vec_2));

	}

	free_double_vector(vec_1);
	free_double_vector(vec_2);
	
	fclose(fp_1);
	fclose(fp_2);

	exit(0);
}
예제 #2
0
int main(int argc, char ** argv)
{
    int start_time = time(0);

    int cpus;

#ifdef _OPENMP
    omp_set_num_threads(cpus);
#else
    cpus=1;
#endif
    
    /////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////
    ProgramVersion();

    
    /////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////
    // parameters
    Parameters par;
    std::vector<std::string> vec_arg(argc+2); // we add 2 nothing
    for(int i=0; i<argc; i++) vec_arg[i]=(std::string) argv[i];
    vec_arg[argc]="nothing"; // for checking
    vec_arg[argc+1]="nothing";

    if (!par.read(vec_arg))
    {
        std::cout << std::endl;
        std::cout << " For more information type [GeneEvolve --help]." << std::endl;
        std::cout << std::endl;
        return -1;
    }

    if (par._help)
    {
        helpFile();
        return -1;
    }
    
    if (!par.check())
    {
        std::cout << std::endl;
        std::cout << " For more information type [GeneEvolve --help]." << std::endl;
        std::cout << std::endl;
        return -1;
    }
    
    
    par.print();
    
    
    /////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////
    // main simulation
    Simulation simulation;
    simulation.par=par;

    if(!simulation.run())
    {
        std::cout << "Program exits with an error." << std::endl;
        return -1;
    }
    
    //if(log)
    //    fclose(LogFile);

    
    /////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////
    int time_tot = time(0) - start_time;
    std::cout << "\n Program Successfully finished.\n ";
    printf("\n Total Run completed in %d hours, %d mins, %d seconds.\n",
           time_tot / 3600, (time_tot % 3600) / 60, time_tot % 60);
    std::cout << "\n Thank You for using GeneEvolve !!! " << std::endl << std::endl;

	return 0;
}