=================================================================== RCS file: /home/cvs/OpenXM_contrib/pari-2.2/src/modules/Attic/mpqs.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -p -r1.1.1.1 -r1.2 --- OpenXM_contrib/pari-2.2/src/modules/Attic/mpqs.c 2001/10/02 11:17:11 1.1.1.1 +++ OpenXM_contrib/pari-2.2/src/modules/Attic/mpqs.c 2002/09/11 07:27:05 1.2 @@ -1,4 +1,4 @@ -/* $Id: mpqs.c,v 1.1.1.1 2001/10/02 11:17:11 noro Exp $ +/* $Id: mpqs.c,v 1.2 2002/09/11 07:27:05 noro Exp $ Copyright (C) 2000 The PARI group. @@ -132,7 +132,8 @@ mpqs_sort_lp_file(char *filename) char *old_s, **sort_table = (char**)avma, *buf, *cur_line; static char **buflist_head = NULL; char **buflist, **next_buflist; - long i, j, bufspace, length, count, av=avma; + long i, j, bufspace, length, count; + gpmem_t av=avma; if (!buflist_head) { @@ -183,7 +184,7 @@ mpqs_sort_lp_file(char *filename) /* sort_table is allocated on the stack, 0x100 cells at a time. Hence the * stack must be left alone in the rest of the loop to keep the array * connected. In particular, buffers can't be new_chunk'ed --KB */ - if ((i & 0xff) == 0) new_chunk(0x100); + if ((i & 0xff) == 0) (void)new_chunk(0x100); *sort_table = cur_line; cur_line += length; @@ -652,11 +653,12 @@ static byteptr mpqs_iterate_primes(long *p, byteptr primes_ptr) { long prime = *p; - if (*primes_ptr) - prime += *primes_ptr++; + if (*primes_ptr) { + NEXT_PRIME_VIADIFF(prime,primes_ptr) + } else { - long av = avma; + gpmem_t av = avma; prime = itos(nextprime(stoi(prime + 1))); avma = av; } @@ -677,7 +679,7 @@ mpqs_find_k(GEN N, long tries) 55,57,59,61,65,67,69,71,73,79,83, 85,89,91,93,95,97,101,103,105,107, 109,113,127,131,137,139}; - long av = avma; + gpmem_t av = avma; long best_k = 1, k, p, N_mod_4 = smodis(N, 4), x; GEN kN; double best_value = 1, value, dp; @@ -745,12 +747,15 @@ mpqs_find_maxprime(long size) **/ static long -mpqs_count_primes() +mpqs_count_primes(void) { byteptr p = mpqs_diffptr; + long gaps = 0; - for ( ; *p; p++) /* empty */; - return (p - mpqs_diffptr); + for ( ; *p; p++) + if (*p == DIFFPTR_SKIP) + gaps++; + return (p - mpqs_diffptr - gaps); } /** @@ -1126,7 +1131,7 @@ mpqs_self_init(GEN A, GEN B, GEN N, GEN kN, long *FB, long start_index_FB_for_A, long *inv_A2, GEN inv_A4, ulong *bin_index, GEN *f) { - long av; + gpmem_t av; GEN p1, p2; ulong size_of_FB, nu_2; long i, j, p, M_mod_p, tmp, tmp1, tmp2; @@ -1593,7 +1598,8 @@ mpqs_eval_candidates(GEN A, GEN inv_A4, GEN B, GEN kN, { GEN Qx, A_2x_plus_B, Y, Qx_div_p; double a, b, inv_2_a; - long av, powers_of_2, p, tmp_p, remd_p, bi; + long powers_of_2, p, tmp_p, remd_p, bi; + gpmem_t av; long z1, z2, x, number_of_relations, x_minus_M; char *relations; ulong i, pi, ei, size_of_FB; @@ -1665,7 +1671,8 @@ mpqs_eval_candidates(GEN A, GEN inv_A4, GEN B, GEN kN, debugging... --GN */ #ifdef MPQS_DEBUG { - long av1 = avma, ks; + long ks; + gpmem_t av1 = avma; GEN g = mppgcd(Qx, kN); /* if ((ks = kronecker(divii(Qx, g), divii(kN, g))) != 1) */ if (is_pm1(g)) @@ -1794,7 +1801,8 @@ mpqs_eval_candidates(GEN A, GEN inv_A4, GEN B, GEN kN, GEN Qx_2, prod_pi_ei, pi_ei; long lr = strlen(relations); char *s, *t = gpmalloc(lr+1); - long pi, ei, av1 = avma; + long pi, ei; + gpmem_t av1 = avma; #ifdef MPQS_DEBUG_VERBOSE fprintferr("\b("); @@ -1856,7 +1864,8 @@ mpqs_eval_candidates(GEN A, GEN inv_A4, GEN B, GEN kN, GEN Qx_2, prod_pi_ei, pi_ei; long lr = strlen(relations); char *s, *t = gpmalloc(lr+1); - long pi, ei, av1 = avma; + long pi, ei; + gpmem_t av1 = avma; #ifdef MPQS_DEBUG_VERBOSE fprintferr("\b("); @@ -1983,7 +1992,7 @@ mpqs_combine_large_primes(FILE *COMB, FILE *FNEW, long long old_q; GEN inv_q, Y1, Y2, new_Y, new_Y1; long i, l, c = 0; - long av = avma, av2; + gpmem_t av = avma, av2; *f = NULL; if (fgets(buf, MPQS_STRING_LENGTH, COMB) == NULL) @@ -2101,7 +2110,8 @@ mpqs_combine_large_primes(FILE *COMB, FILE *FNEW, long char ejk [MPQS_STRING_LENGTH]; GEN Qx_2, prod_pi_ei, pi_ei; char *s; - long pi, exi, av1 = avma; + long pi, exi; + gpmem_t av1 = avma; Qx_2 = modii(sqri(new_Y), kN); strcpy(ejk, new_relation); @@ -2426,7 +2436,8 @@ mpqs_add_relation(GEN Y_prod, GEN N_or_kN, long *ei, c GEN Y, res; char relation [MPQS_STRING_LENGTH]; char *s; - long av = avma, e, p; + long e, p; + gpmem_t av = avma; strcpy(relation, r1); s = strchr(relation, ':') - 1; @@ -2461,8 +2472,8 @@ mpqs_get_relation(long pos, FILE *FREL) } /* the following two reside in src/basemath/ifactor1.c */ -long is_odd_power(GEN x, GEN *pt, long *mask); -int miller(GEN n, long k); +extern long is_odd_power(GEN x, GEN *pt, long *mask); +extern int miller(GEN n, long k); #define isprobableprime(n) (miller((n),17)) @@ -2472,7 +2483,7 @@ mpqs_solve_linear_system(GEN kN, GEN N, long rel, long pariFILE *pFREL; FILE *FREL; GEN X, Y_prod, N_or_kN, D1, base, res, new_res; - long av=avma, av2, av3, lim, lim3, tetpil; + gpmem_t av=avma, av2, av3, lim, lim3, tetpil; long *fpos, *ei; long i, j, H_cols, H_rows; long res_last, res_next, res_size, res_max; @@ -2954,7 +2965,7 @@ mpqs(GEN N) long vain_iterations = 0; long good_iterations = 0; long iterations = 0; - long av = avma; + gpmem_t av = avma; /* state flags for cleanup if we get interrupted --GN */ static char all_clean = 1; /* set to 0 while mpqs() is busy */ @@ -3093,7 +3104,7 @@ mpqs(GEN N) for (i = 2; (ulong)i < size_of_FB + 2; i++) { - long av1 = avma; + gpmem_t av1 = avma; p = FB[i]; /* compute the approximations of the logarithms of p_i */ @@ -3364,7 +3375,7 @@ mpqs(GEN N) } /* sort LPNEW and merge it into LPREL, diverting combinables into COMB */ pari_fclose(pLPNEW); - mpqs_sort_lp_file(LPNEW_str); + (void)mpqs_sort_lp_file(LPNEW_str); tp = mpqs_mergesort_lp_file(LPREL_str, LPNEW_str, 0); pLPNEW = pari_fopen(LPNEW_str, WRITE); /* NOT safefopen */ LPNEW = pLPNEW->file; @@ -3406,7 +3417,7 @@ mpqs(GEN N) /* sort FNEW and merge it into FREL */ pari_fclose(pFNEW); - mpqs_sort_lp_file(FNEW_str); + (void)mpqs_sort_lp_file(FNEW_str); total_full_relations = mpqs_mergesort_lp_file(FREL_str, FNEW_str, 1); /* this being the definitive count (combinables combined, and duplicates removed) */