Exemplo n.º 1
0
Arquivo: main.c Projeto: Mkchouk/MiRCA
ligne* eliminer_chevauchement(ligne table[],int n){
int i;
//if(n>1){
for (i = 1; i < n; i++) {
    if (table[i-1].posend >= table[i].posin)
       {table[i-1].posend = table[i].posin - 1;}
                        }
 table=inverse_table(table,n);
    // }
table=eliminer_sequence(table,n);
//int t=0; for (t = 0; t < n; t++){print_ligne(table[t],t);}
return table;
}
Exemplo n.º 2
0
Arquivo: pp.c Projeto: hvds/seq
void new_pp(pp_pp* pp, int prime, int power) {
	int i, set;
	mpz_t reduced_denom;
	mpx_support* xsup;

	if (prime > MAX_P) {
		fprintf(stderr, "prime %d exceeds max %d\n", prime, MAX_P);
		exit(1);
	}
	pp->p = prime;
	pp->pp = power;
	if (pp->p == pp->pp)
		inverse_table(pp->p);
	pp_pushlist(pp);
	ZINIT(&pp->total, "pp_%d.total", pp->pp);
	ZINIT(&pp->denominator, "pp_%d.denominator", pp->pp);
	ZINIT(&pp->min_discard, "pp_%d.min_discard", pp->pp);
	QINIT(&pp->spare, "pp_%d.spare", pp->pp);

	/* required denominator is the lcm of (power, S) where S contains those
	 * pp such that pp * power <= k.
	 */
	ZINIT(&reduced_denom, "new_pp reduced_denom");
	set = 0;
	/* start from pplist[1], because we've already been inserted at [0] */
	for (i = 1; i < pplistsize; ++i) {
		if (pplist[i]->pp * power <= k0) {
			mpz_mul_ui(pp->denominator, pplist[i]->denominator,
					power / mpz_gcd_ui(NULL, pplist[i]->denominator, power));
			set = 1;
			break;
		}
	}
	if (!set) {
		/* power == 1 */
		if (power != 1) {
			fprintf(stderr, "new_pp: did not find denominator for %d\n", power);
			exit(1);
		}
		mpz_set_ui(pp->denominator, 1);
	}
	mpz_divexact_ui(reduced_denom, pp->denominator, power);
	pp->invdenom = invfast(mod_ui(reduced_denom, pp->p), pp->p);
	ZCLEAR(&reduced_denom, "new_pp reduced_denom");

	xsup = mpx_support_z(pp->denominator);
	pp->valnumsize = xsup->size;
	pp->adder = xsup->adder;
	pp->cmper = xsup->cmper;
	pp_grow(pp, MINPPSET);
}
Exemplo n.º 3
0
Arquivo: inverse.c Projeto: hvds/seq
void test_cache(uint p) {
	uint i, j, k;

	inverse_table(p);
	for (i = 1; i < p; ++i) {
		j = invfast(i, p);
		k = (j * i) % p;
		if (k != 1) {
			printf("Error: invfast(%u, %u) = %u\n", i, p, j);
			++g_fail;
		}
		++g_test;
	}
}