Пример #1
0
/*-------------------------------------------------------------------------*/
s32
poly_stage2_run(poly_stage2_t *data)
{
    stage2_stat_t stats;
    curr_poly_t curr_poly;
    root_sieve_t root_sieve;
    assess_t assess;

    stage2_stat_init(&stats);
    curr_poly_init(&curr_poly);
    root_sieve_init(&root_sieve);
    assess_init(&assess, data->bound0, data->bound1,
                data->area, data->p_bound);

    optimize(&curr_poly, data, &root_sieve, &assess, &stats);

#ifdef DO_PROFILE
    profile_done(&stats.profile);
    printf("\nTiming:");
    printf("\nTotal            ");
    profile_print(&stats.profile, PROF_ALL);
    printf("\n  1. Optimization  ");
    profile_print(&stats.profile, PROF_INITIAL_OPTIMIZE);
    printf("\n  Sieve all        ");
    profile_print(&stats.profile, PROF_SIEVE_ALL);
    printf("\n    Init sieve       ");
    profile_print(&stats.profile, PROF_INIT_SIEVE);
    printf("\n    Sieve            ");
    profile_print(&stats.profile, PROF_SIEVE);
    printf("\n    eval             ");
    profile_print(&stats.profile, PROF_EVAL);
    printf("\n      gmp/alpha1        ");
    profile_print(&stats.profile, PROF_ALPHA1);
    printf("\n      polroots         ");
    profile_print(&stats.profile, PROF_MURPHY_ROOTS);
    printf("\n      2. Optimization  ");
    profile_print(&stats.profile, PROF_OPTIMIZE2);
    printf("\n      3. Optimization  ");
    profile_print(&stats.profile, PROF_OPTIMIZE3);
    printf("\n        murphy-e sum     ");
    profile_print(&stats.profile, PROF_MURPHY_E);
    printf("\n");
#endif

    stage2_stat_free(&stats);
    curr_poly_free(&curr_poly);
    root_sieve_free(&root_sieve);
    assess_free(&assess);
    return 1;
}
Пример #2
0
/*-------------------------------------------------------------------------*/
void
poly_rootopt_init(poly_rootopt_t *data, 
		 msieve_obj *obj,
		 rootopt_callback_t callback,
		 void *callback_data)
{
	stage2_curr_data_t *s;

	memset(data, 0, sizeof(poly_rootopt_t));

	mpz_init(data->gmp_N);
	data->obj = obj;
	data->murphy_p_bound = PRIME_BOUND;
	data->callback = callback;
	data->callback_data = callback_data;

	s = (stage2_curr_data_t *)xmalloc(sizeof(stage2_curr_data_t));
	curr_poly_init(&s->curr_poly);
	root_sieve_init(&s->root_sieve);
	assess_init(&s->assess);
	data->internal = (void *)s;
}