int named_input_files ( void ) { int n, fail, len; char inputfile[80]; int mode = 7; /* reading target system : 0 for standard, 1 for double double, 2 for quad double, 3 for multiprecision reading start system : 4 for standard, 5 for double double, 6 for quad double, 7 for multiprecision */ if(mode < 4) printf("\nReading the target system from file ...\n"); if(mode > 3) printf("\nReading the start system from file ...\n"); printf("Give the file name : "); scanf("%s", inputfile); n = (int) strlen(inputfile); if(mode == 0) { printf("\n... test reading in standard doubles ...\n"); fail = read_standard_target_system_from_file(n, inputfile); fail = copy_container_to_target_system(); printf("\nThe system read :\n"); fail = write_standard_target_system(); } else if(mode == 1) { printf("\n... test reading in double doubles ...\n"); fail = read_dobldobl_target_system_from_file(n, inputfile); fail = copy_dobldobl_container_to_target_system(); printf("\nThe system read :\n"); fail = write_dobldobl_target_system(); } else if(mode == 2) { printf("\n... test reading in quad doubles ...\n"); fail = read_quaddobl_target_system_from_file(n, inputfile); fail = copy_quaddobl_container_to_target_system(); printf("\nThe system read :\n"); fail = write_quaddobl_target_system(); } else if(mode == 3) { printf("\n... test reading in multiprecision ...\n"); fail = read_multprec_target_system_from_file(80, n, inputfile); fail = copy_multprec_container_to_target_system(); printf("\nThe system read :\n"); fail = write_multprec_target_system(); } else if(mode == 4) { printf("\n... test reading in standard doubles ...\n"); fail = read_standard_start_system_from_file(n, inputfile); fail = copy_container_to_start_system(); printf("\nThe system read :\n"); fail = write_standard_start_system(); fail = solcon_number_of_solutions(&len); printf("\nNumber of start solutions in container : %d\n", len); } else if(mode == 5) { printf("\n... test reading in double doubles ...\n"); fail = read_dobldobl_start_system_from_file(n, inputfile); fail = copy_dobldobl_container_to_start_system(); printf("\nThe system read :\n"); fail = write_dobldobl_start_system(); fail = solcon_number_of_dobldobl_solutions(&len); printf("\nNumber of start solutions in container : %d\n", len); } else if(mode == 6) { printf("\n... test reading in quad doubles ...\n"); fail = read_quaddobl_start_system_from_file(n, inputfile); fail = copy_quaddobl_container_to_start_system(); printf("\nThe system read :\n"); fail = write_quaddobl_start_system(); fail = solcon_number_of_quaddobl_solutions(&len); printf("\nNumber of start solutions in container : %d\n", len); } else { printf("\n... test reading in multiprecision ...\n"); fail = read_multprec_start_system_from_file(80, n, inputfile); fail = copy_multprec_container_to_start_system(); printf("\nThe system read :\n"); fail = write_multprec_start_system(); fail = solcon_number_of_multprec_solutions(&len); printf("\nNumber of start solutions in container : %d\n", len); } return 0; }
int dobldobl_run ( int myid, int nbrp, int nbc, char* outfile, int verbose ) { int fail,dim,nbsols,mysolnum,len,*nbpaths; double startwtime,endwtime,wtime,*time; startwtime = MPI_Wtime(); if(myid == 0) { time = (double*)calloc(nbrp,sizeof(double)); nbpaths = (int*)calloc(nbrp,sizeof(int)); fail = read_dobldobl_target_system_without_solutions(); fail = copy_dobldobl_target_system_to_container(); fail = syscon_number_of_dobldobl_polynomials(&dim); fail = write_dobldobl_target_system(); } dobldobl_dimensions_broadcast(myid,&dim,&dim); if(verbose > 0) printf("Process %d has dimension %d.\n",myid,dim); dobldobl_monomials_broadcast(myid,dim); if(myid != 0) fail = copy_dobldobl_container_to_target_system(); if(verbose > 0) if(myid == 1) fail = write_dobldobl_target_system(); if(myid == 0) { fail = read_dobldobl_start_system(); fail = copy_dobldobl_start_system_to_container(); fail = write_dobldobl_start_system(); // writes to file fail = write_dobldobl_start_solutions(); // writes solutions to file fail = copy_dobldobl_start_solutions_to_container(); fail = solcon_number_of_dobldobl_solutions(&nbsols); if(verbose>0) printf("Read %d start solutions.\n",nbsols); } else fail = syscon_initialize_number_of_dobldobl_polynomials(dim); dobldobl_monomials_broadcast(myid,dim); // broadcast start system if(myid != 0) fail = copy_dobldobl_container_to_start_system(); if(verbose > 0) if(myid == 1) fail = write_dobldobl_start_system(); parameters_broadcast(myid,nbrp,verbose); MPI_Bcast(&nbsols,1,MPI_INT,0,MPI_COMM_WORLD); dobldobl_solutions_distribute(myid,nbsols,dim,nbrp,&mysolnum,verbose); fail = solcon_number_of_dobldobl_solutions(&len); if(verbose > 0) printf("Node %d has %d solutions.\n",myid,len); if(myid > 0) { fail = copy_dobldobl_container_to_start_solutions(); fail = dobldobl_track_paths(myid,nbrp,nbc,outfile,verbose); } MPI_Barrier(MPI_COMM_WORLD); dobldobl_solutions_collect(myid,nbsols,dim,nbrp,mysolnum); if(myid == 0) { fail = copy_dobldobl_container_to_target_solutions(); fail = write_dobldobl_target_solutions(); } endwtime = MPI_Wtime(); wtime = endwtime-startwtime; MPI_Gather(&wtime,1,MPI_DOUBLE,time,1,MPI_DOUBLE,0,MPI_COMM_WORLD); MPI_Gather(&mysolnum,1,MPI_INT,nbpaths,1,MPI_INT,0,MPI_COMM_WORLD); if(myid == 0) { nbpaths[0] = nbsols; write_time_and_paths_to_defined_output_file(nbrp,time,nbpaths); free(time); free(nbpaths); } return 0; }