From 54837cd8aa8702b313fcf2c49041980ed532b209 Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Fri, 13 Mar 2026 21:24:23 +0100 Subject: [PATCH 1/4] suppress warnings --- src/usolve/Makefile.am | 2 +- src/usolve/descartes.c | 20 +++++++-------- src/usolve/evaluate.c | 7 ++--- src/usolve/refine.c | 37 +++++++++++++-------------- src/usolve/taylor_shift.c | 18 ++++++------- src/usolve/usolve.c | 54 +++++++++++++++++---------------------- src/usolve/utils.c | 13 +++++----- 7 files changed, 72 insertions(+), 79 deletions(-) diff --git a/src/usolve/Makefile.am b/src/usolve/Makefile.am index b4b12aa1..43216bdc 100644 --- a/src/usolve/Makefile.am +++ b/src/usolve/Makefile.am @@ -2,7 +2,7 @@ noinst_LTLIBRARIES = libusolve.la libusolve_la_SOURCES = usolve.c libusolve_ladir = $(includedir)/msolve/usolve libusolve_la_HEADERS = libusolve.h -libusolve_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) +libusolve_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) -Wall -Wextra EXTRA_DIST = libusolve.h \ bisection.h \ diff --git a/src/usolve/descartes.c b/src/usolve/descartes.c index a84bddde..3a9fb6e4 100644 --- a/src/usolve/descartes.c +++ b/src/usolve/descartes.c @@ -30,7 +30,7 @@ static unsigned long descartes_classical(const mpz_t *, mpz_t *, static long descartes_truncate(mpz_t *, const unsigned long, const unsigned long, - long, long *, usolve_flags *); + usolve_flags *); /* one assumes upol[0] != 0 */ /* stopped as soon as more than 3 sgn variations are found */ @@ -58,7 +58,7 @@ static long mpz_poly_sgn_variations_coeffs(mpz_t* upol, unsigned long deg){ static unsigned long int descartes(mpz_t *upol1, mpz_t *upol2, const unsigned long deg, - long sigh, long *flag, usolve_flags *flags){ + usolve_flags *flags){ unsigned long int i; #pragma omp parallel for num_threads(flags->nthreads) for(i = 0; i <= deg; i++){ @@ -67,7 +67,7 @@ static unsigned long int descartes(mpz_t *upol1, mpz_t *upol2, /* Max bit size of coefficients in upol1 */ const unsigned long nbits = mpz_poly_max_bsize_coeffs(upol1, deg); - long nb = descartes_truncate(upol2, deg, nbits, sigh, flag, flags); + long nb = descartes_truncate(upol2, deg, nbits, flags); if(nb >= 0){ return nb; @@ -88,8 +88,8 @@ static unsigned long int descartes(mpz_t *upol1, mpz_t *upol2, /* assumes upol1 and upol2 are the same polynomials */ static long descartes_truncate(mpz_t *upol2, const unsigned long deg, - const unsigned long nbits, long sigh, - long *flag, usolve_flags *flags){ + const unsigned long nbits, + usolve_flags *flags){ int i; /* /\* Max bit size of coefficients in upol1 *\/ */ /* const unsigned long int nbits = mpz_poly_max_bsize_coeffs(upol1, deg); */ @@ -142,11 +142,11 @@ static unsigned long descartes_classical(const mpz_t *upol, mpz_t *tpol, return nb; } - for (long i = 0; i <= deg; i++) { + for (unsigned long i = 0; i <= deg; i++) { mpz_set(tpol[i], upol[i]); } - for (long i = 0; i <= deg - 1; i++){ + for (unsigned long i = 0; i < deg; i++){ mpz_add(tpol[i+1], tpol[i+1], tpol[i]); } @@ -154,7 +154,7 @@ static unsigned long descartes_classical(const mpz_t *upol, mpz_t *tpol, *bsgn = s && (s == mpz_sgn(upol[0])) && (s == -hsgn); - for (long i = 1; i <= deg - 1; i++){ + for (unsigned long i = 1; i < deg; i++){ j = deg - i; t = s; while (t == 0){ @@ -166,8 +166,8 @@ static unsigned long descartes_classical(const mpz_t *upol, mpz_t *tpol, if (j < 0){ return nb; } - for (j = 0; j <= deg - i - 1; j++){ - mpz_add(tpol[j+1], tpol[j+1], tpol[j]); + for (unsigned long jj = 0; jj < deg - i; jj++){ + mpz_add(tpol[jj+1], tpol[jj+1], tpol[jj]); } if (s == 0){ s = mpz_sgn(tpol[deg-i]); diff --git a/src/usolve/evaluate.c b/src/usolve/evaluate.c index f12acfa8..0094516a 100644 --- a/src/usolve/evaluate.c +++ b/src/usolve/evaluate.c @@ -83,7 +83,7 @@ static inline void basic_mpz_poly_eval_at_point(mpz_t *up, unsigned long int deg } -static inline int sgn_mpz_poly_eval_at_point_naive(mpz_t *upoly, unsigned long int deg, mpz_t *c, int classical_algo){ +static inline int sgn_mpz_poly_eval_at_point_naive(mpz_t *upoly, unsigned long int deg, mpz_t *c){ mpz_t val; mpz_init(val); basic_mpz_poly_eval_at_point(upoly, deg, c, &val); @@ -257,7 +257,7 @@ int mpz_poly_eval_interval(mpz_t *up, const long int deg, const long k, returns (mpz_sgn(val_do) != mpz_sgn(val_up)) */ -int mpz_scalar_product_interval(mpz_t *up, const long int deg, const long k, +int mpz_scalar_product_interval(mpz_t *up, const long int deg, mpz_t *xdo, mpz_t *xup, mpz_t tmp, mpz_t val_do, mpz_t val_up, @@ -314,7 +314,8 @@ int lazy_mpz_poly_eval_interval(mpz_t *up, const unsigned long int deg, mpz_t tmp, mpz_t val_do, mpz_t val_up){ - if(deg==-1){ + /* comparison to be checked; this was deg == -1 but deg is unsigned */ + if(deg==(unsigned long int)(-1)){ mpz_set_ui(val_up, 0); mpz_set_ui(val_do, 0); return 0; diff --git a/src/usolve/refine.c b/src/usolve/refine.c index 2d3c7612..c6c48921 100644 --- a/src/usolve/refine.c +++ b/src/usolve/refine.c @@ -46,7 +46,7 @@ static long long int index_linearinterp(mpz_t *vala, mpz_t *valb, mpz_t *q, mpz_tdiv_q(*q, *vala, *valb); long int sizeq = ilog2_mpz(*q); - if(sizeq >= 8 * sizeof(long long int)){ + if((long unsigned int)sizeq >= 8 * sizeof(long long int)){ if(sizeq > logN){ fprintf(stderr,"Valeur de q = "); mpz_out_str(stderr, 10, *q);puts(""); fprintf(stderr, "Valeur de Nlog = %lld\n", logN); @@ -134,7 +134,7 @@ static void getx_and_eval_mpzidx(mpz_t *upol, unsigned long int deg, static int right_interval_2exp(mpz_t *upol, unsigned long int *deg_ptr, interval *rt, mpz_t *x, mpz_t *b, mpz_t *vala, mpz_t *valb, mpz_t *q, - int k, int newk){ + int newk){ mpz_swap(*x, *b); mpz_swap(*vala, *valb); @@ -159,8 +159,7 @@ static int right_interval_2exp(mpz_t *upol, unsigned long int *deg_ptr, static int left_interval_2exp(mpz_t *upol, unsigned long int *deg_ptr, interval *rt, mpz_t *x, mpz_t *b, mpz_t *vala, mpz_t *valb, mpz_t *q, - int k, int newk){ - + int newk) { getx_and_eval_2expleft(upol, *deg_ptr, x, b, valb, q, newk, 1); mpz_swap(*x, *b); @@ -363,7 +362,7 @@ static void refine_root_by_N_positive_k(mpz_t *upol, unsigned long int *deg_ptr, return; } while(right_interval_2exp(upol, deg_ptr, rt, x, b, - vala, valb, q, k, newk)==0 && index <= maxindex){ + vala, valb, q, newk)==0 && index <= maxindex){ if(verbose>0){ fprintf(stdout, "->"); } @@ -405,7 +404,7 @@ static void refine_root_by_N_positive_k(mpz_t *upol, unsigned long int *deg_ptr, return; } while(left_interval_2exp(upol, deg_ptr, rt, - x, b, vala, valb, q, k, newk) == 0){ + x, b, vala, valb, q, newk) == 0){ if(verbose>0){ fprintf(stdout, "<-"); } @@ -688,7 +687,7 @@ void get_values_at_bounds(mpz_t *upol, unsigned long int deg, } static void refine_root_naive(mpz_t *upol, unsigned long int deg, - interval *rt, mpz_t *middle, int calgo){ + interval *rt, mpz_t *middle){ if(rt->isexact == 1){ return; } @@ -709,7 +708,7 @@ static void refine_root_naive(mpz_t *upol, unsigned long int deg, mpz_add(*middle, *middle, rt->numer); newk = ( (rt->k) + 1 ); - sgn_middle = sgn_mpz_poly_eval_at_point_naive(upol, deg, middle, calgo); + sgn_middle = sgn_mpz_poly_eval_at_point_naive(upol, deg, middle); } int sign_left = rt->sign_left; @@ -728,7 +727,7 @@ static void refine_root_naive(mpz_t *upol, unsigned long int deg, static void remove_exact_roots_by_division(mpz_t *upol, unsigned long int *deg, interval *roots, - unsigned long int nbroots, int nthreads){ + unsigned long int nbroots) { for(unsigned long int i = 0; i < nbroots; i++){ interval *rt = roots + i; if(rt->isexact==1){ @@ -749,7 +748,7 @@ static void remove_exact_roots_by_division(mpz_t *upol, unsigned long int *deg, /* divisions when there are exact roots */ void refine_QIR_roots(mpz_t *upol, unsigned long int *deg, interval *roots, int nbneg, int nbpos, - int prec, int verbose, double step, int nthreads){ + int prec, int verbose, double step){ unsigned long int i; /* table for intermediate values */ mpz_t *tab = (mpz_t *)(malloc(sizeof(mpz_t) * 8)); @@ -760,7 +759,7 @@ void refine_QIR_roots(mpz_t *upol, unsigned long int *deg, interval *roots, double e_time = 0, refine_time = realtime(); int nb = nbneg + nbpos; - remove_exact_roots_by_division(upol, deg, roots, nb, nthreads); + remove_exact_roots_by_division(upol, deg, roots, nb); interval *pos_rt = (interval *)(malloc(sizeof(interval))); @@ -774,7 +773,7 @@ void refine_QIR_roots(mpz_t *upol, unsigned long int *deg, interval *roots, } } - for(i = 0; i < nbneg; i++){ + for(i = 0; i < (long unsigned int)nbneg; i++){ interval *rt = roots + i; @@ -857,7 +856,7 @@ void refine_QIR_roots(mpz_t *upol, unsigned long int *deg, interval *roots, } } - for(i=nbneg; i < nb; i++){ + for(i=nbneg; i < (long unsigned int)nb; i++){ interval *rt = roots + i; if(rt->isexact==0){ @@ -904,7 +903,7 @@ void refine_QIR_roots(mpz_t *upol, unsigned long int *deg, interval *roots, /* the precision of the refinement depends on the value of the root to be defined */ void refine_QIR_roots_adaptative(mpz_t *upol, unsigned long int *deg, interval *roots, int nbneg, int nbpos, - int prec, int verbose, double step, int nthreads){ + int prec, int verbose, double step){ unsigned long int i; /* table for intermediate values */ @@ -916,7 +915,7 @@ void refine_QIR_roots_adaptative(mpz_t *upol, unsigned long int *deg, interval * double e_time = 0, refine_time = realtime(); int nb = nbneg + nbpos; - remove_exact_roots_by_division(upol, deg, roots, nb, nthreads); + remove_exact_roots_by_division(upol, deg, roots, nb); interval *pos_rt = (interval *)(malloc(sizeof(interval))); @@ -930,7 +929,7 @@ void refine_QIR_roots_adaptative(mpz_t *upol, unsigned long int *deg, interval * } } - for(i = 0; i < nbneg; i++){ + for (i = 0; i < (long unsigned int)nbneg; i++){ interval *rt = roots + i; @@ -1018,7 +1017,7 @@ void refine_QIR_roots_adaptative(mpz_t *upol, unsigned long int *deg, interval * } } - for(i=nbneg; i < nb; i++){ + for(i=nbneg; i < (long unsigned int)nb; i++){ interval *rt = roots + i; if(rt->isexact==0){ @@ -1065,13 +1064,13 @@ void refine_QIR_roots_adaptative(mpz_t *upol, unsigned long int *deg, interval * void refine_all_roots_naive(mpz_t *upol, unsigned long int deg, interval *roots, unsigned long int nb, - unsigned int prec, int calgo, int debug){ + unsigned int prec){ mpz_t *middle=malloc(sizeof(mpz_t)); mpz_init(middle[0]); for(unsigned long int j = 0; j < nb; j++){ while((roots+j)->k < prec && (roots+j)->isexact == 0){ - refine_root_naive(upol, deg, roots+j, middle, calgo); + refine_root_naive(upol, deg, roots+j, middle); } } mpz_clear(middle[0]); diff --git a/src/usolve/taylor_shift.c b/src/usolve/taylor_shift.c index f5d38cf3..8c8250e9 100644 --- a/src/usolve/taylor_shift.c +++ b/src/usolve/taylor_shift.c @@ -44,7 +44,7 @@ static void mpz_poly_add(mpz_t *res, /*naive taylor shift by 1 (in place)*/ static void taylorshift1_naive(mpz_t *upol, const unsigned long int deg){ long int i,j; - for (i = 0; i <= deg-1; i++){ + for (i = 0; (unsigned long int)i < deg; i++){ for (j = deg-1 ; j >= i; j--){ mpz_add(upol[j], upol[j], upol[j+1]); } @@ -191,9 +191,9 @@ static void taylorshift1_dac(mpz_t *upol, } nblocks = nblocks / 2; - for(int count = 1; count <= nblocks ; count++){ + for (unsigned int count = 1; count <= nblocks ; count++){ unsigned long int newdeg; - if(count == nblocks){ + if (count == nblocks){ newdeg = fdeg; } else{ @@ -281,10 +281,10 @@ static long mpz_poly_sgn_variations_coeffs_bsize_with_index(mpz_t* upol, int c = mpz_cmp_ui(upol[i],0); long int l = ilog2_mpz(upol[i]); N = min((bsize - i +1)*L + 1, min(deg, (i+1)*L + 1)); - if(l <= N || c==0){ + if(l <= (long int)N || c==0){ boo = 0; } - if( mpz_sgn(upol[i]) * s < 0 && l > N && c!=0){ + if( mpz_sgn(upol[i]) * s < 0 && l > (long int)N && c!=0){ nb = nb + 1; s = mpz_sgn(upol[i]); if(nb >= 3){ @@ -297,10 +297,10 @@ static long mpz_poly_sgn_variations_coeffs_bsize_with_index(mpz_t* upol, N = L + 1; int c = mpz_cmp_ui(upol[0],0); long int l = ilog2_mpz(upol[0]); - if(l <= N || c==0){ + if(l <= (long int)N || c==0){ boo = 0; } - if(s*mpz_sgn(upol[0]) < 0 && l> N && c!=0){ + if(s*mpz_sgn(upol[0]) < 0 && l> (long int)N && c!=0){ nb = nb + 1; } if(nb>=3 || boo == 1){ @@ -359,7 +359,7 @@ static long taylorshift1_dac_wsgnvar(mpz_t *pol, unsigned long int npwr = LOG2(nblocks); mpz_t *current_shifted_powerX = NULL; - for(i=0;i1){ @@ -375,7 +375,7 @@ static long taylorshift1_dac_wsgnvar(mpz_t *pol, unsigned long int ndeg; - if(count==nblocks){ + if(count == (long int)nblocks){ ndeg = fdeg; } else{ diff --git a/src/usolve/usolve.c b/src/usolve/usolve.c index 8aeb6d5c..6e2676e1 100644 --- a/src/usolve/usolve.c +++ b/src/usolve/usolve.c @@ -113,7 +113,6 @@ static long bound_roots(mpz_t *upol, const unsigned long deg){ } static inline void compute_shift_pwx(mpz_t **shifted, - const unsigned long int deg, const unsigned long int npwr, unsigned long int pwx, const unsigned int nthreads){ @@ -217,9 +216,9 @@ static inline void allocate_shift_pwx(mpz_t **shifted, unsigned long int newpwx=pwx; mp_bitcnt_t nbits=LOG2(newpwx); - for(int i = 0; i < npwr; i++){ + for(long unsigned int i = 0; i < npwr; i++){ shifted[i] = (mpz_t *)malloc(sizeof(mpz_t)*(newpwx+1)); - for(int j = 0; j <= newpwx; j++){ + for(long unsigned int j = 0; j <= newpwx; j++){ mpz_init2(shifted[i][j], nbits); } newpwx = 2 * newpwx; @@ -233,13 +232,13 @@ static inline void allocate_shift_pwx(mpz_t **shifted, static inline void unallocate_shift_pwx(mpz_t **shifted, const unsigned long int npwr, unsigned long int pwx){ - for(int i = 0; i < npwr; i++){ - for(int j = 0;j <= pwx; j++){ + for(long unsigned int i = 0; i < npwr; i++){ + for(long unsigned int j = 0; j <= pwx; j++){ mpz_clear(shifted[i][j]); } pwx=2*pwx; } - for(int i = 0; i < npwr; i++){ + for(long unsigned int i = 0; i < npwr; i++){ free(shifted[i]); } } @@ -333,7 +332,6 @@ static void is_zero_root(mpz_t *upol, mpz_t c, long k, flags->npwr, flags->pwx); compute_shift_pwx(flags->shift_pwx, - flags->cur_deg, flags->npwr, flags->pwx, flags->nthreads); @@ -372,13 +370,13 @@ static void numer_quotient_uint(mpz_t *upol, unsigned long int *deg, mpz_t tmp; mpz_init(tmp); - for(long int i = *deg - 1; i >=1; i--){ + for(long int i = *deg - 1; i >= 1; i--){ mpz_div_2exp(tmp, upol[i+1], k); mpz_mul_ui(tmp, tmp, c); mpz_add(upol[i], upol[i], tmp); } - for(long int i = 0 ; i <= *deg - 1; i++){ + for(unsigned long int i = 0 ; i < *deg; i++){ mpz_set(upol[i], upol[i+1]); } @@ -389,10 +387,9 @@ static void numer_quotient_uint(mpz_t *upol, unsigned long int *deg, static long int manage_root_at_one_half(mpz_t *upol, - mpz_t c, long k, + mpz_t c, unsigned long *deg, mpz_t tmp, - unsigned long int *nbr, usolve_flags *flags){ long int sh = sgn_mpz_upoly_eval_onehalf(upol, *deg, flags); @@ -436,7 +433,6 @@ static long int manage_root_at_one_half(mpz_t *upol, flags->pwx); compute_shift_pwx(flags->shift_pwx, - flags->cur_deg, flags->npwr, flags->pwx, flags->nthreads); @@ -812,10 +808,8 @@ static long bisection_rec(mpz_t *upol, unsigned long *deg, /* if 1 / 2 is a root, upol is divided by (x-1/2) */ /* shalf takes the sign of the new obtained poly at 1/2 */ - shalf = manage_root_at_one_half(upol, c, k, deg, - tmp_half, - nbr, - flags); + shalf = manage_root_at_one_half(upol, c, deg, + tmp_half, flags); if(flags->hasrealroots == 1 && (*nbr)>0){ mpz_clear(tmp); return -1; @@ -869,7 +863,7 @@ static long bisection_rec(mpz_t *upol, unsigned long *deg, nb = descartes_classical(upol, flags->tmpol_desc, *deg, shalf, &bsgn); } else{ - nb = descartes(upol, flags->tmpol_desc, *deg, shalf, &bsgn, flags); + nb = descartes(upol, flags->tmpol_desc, *deg, flags); } flags->time_desc += (realtime()-e_time); @@ -913,6 +907,7 @@ static long bisection_rec(mpz_t *upol, unsigned long *deg, bot, top, shalf); } + /* falls through */ default: /* recursive call on each half of the interval */ return nb_default_case_in_bisection_rec(upol, deg, c, k, tmp, roots, nbr, @@ -985,7 +980,6 @@ static void initialize_heap_flags(usolve_flags *flags, flags->pwx); compute_shift_pwx(flags->shift_pwx, - flags->cur_deg, flags->npwr, flags->pwx, flags->nthreads); @@ -994,11 +988,11 @@ static void initialize_heap_flags(usolve_flags *flags, flags->shift_pwx = NULL; } flags->tmpol = (mpz_t *)(malloc(sizeof(mpz_t)*(deg+1))); - for(int i=0; i<=deg; i++){ + for(long unsigned int i=0; i<=deg; i++){ mpz_init(flags->tmpol[i]); } flags->tmpol_desc = (mpz_t *)(malloc(sizeof(mpz_t)*(deg+1))); - for(int i=0; i<=deg; i++){ + for(long unsigned int i=0; i<=deg; i++){ mpz_init(flags->tmpol_desc[i]); } @@ -1009,7 +1003,7 @@ static void initialize_heap_flags(usolve_flags *flags, mpz_t ** tmp = flags->tmp_threads; mpz_t ** pols = flags->pols_threads; - for(int i = 0; i <= flags->nthreads; i++){ + for(long unsigned int i = 0; i <= flags->nthreads; i++){ tmp[i] = (mpz_t *)malloc((deg + 1) * sizeof(mpz_t)); for(unsigned long int j = 0; j <= deg; j++){ @@ -1018,7 +1012,7 @@ static void initialize_heap_flags(usolve_flags *flags, } - for(int i = 0; i < flags->nthreads; i++){ + for(long unsigned int i = 0; i < flags->nthreads; i++){ pols[i] = (mpz_t *)malloc((deg + 1) * sizeof(mpz_t)); for(unsigned long int j = 0; j <= deg; j++){ @@ -1053,7 +1047,7 @@ static inline void free_heap_flags(usolve_flags *flags, free(flags->Values); if(flags->nthreads>=1 &&0==1){ - for(int i = 0; i < flags->nthreads; i++){ + for(long unsigned int i = 0; i < flags->nthreads; i++){ for(unsigned long int j = 0; j <= deg; j++){ mpz_clear(flags->tmp_threads[i][j]); @@ -1136,12 +1130,12 @@ interval *bisection_Uspensky(mpz_t *upol0, unsigned long deg, mpz_t *upol = (mpz_t *) malloc ((deg + 1) * sizeof(mpz_t)); if(zero_root == 0){ - for (long i = 0; i <= deg; i++){ + for (long unsigned i = 0; i <= deg; i++){ mpz_init_set(upol[i], upol0[i]); } } else{ - for (long i = 0; i <= deg; i++){ + for (long unsigned i = 0; i <= deg; i++){ mpz_init_set(upol[i], upol0[1 + i]); } } @@ -1180,7 +1174,7 @@ interval *bisection_Uspensky(mpz_t *upol0, unsigned long deg, deg = (deg0 - 1); } if(zero_root==0){ - for(long i = 0; i <= deg; i++){ + for(long unsigned i = 0; i <= deg; i++){ if (i % 2 == 1){ mpz_neg(upol[i], upol0[i]); } @@ -1190,7 +1184,7 @@ interval *bisection_Uspensky(mpz_t *upol0, unsigned long deg, } } else{ - for(long i = 0; i <= deg; i++) + for(long unsigned i = 0; i <= deg; i++) { if (i % 2 == 1){ mpz_neg(upol[i], upol0[i + 1]); @@ -1251,7 +1245,7 @@ interval *bisection_Uspensky(mpz_t *upol0, unsigned long deg, else{ deg = (deg0 - 1); } - for(long i = 0; i <= deg; i++){ + for(long unsigned i = 0; i <= deg; i++){ mpz_clear(upol[i]); } @@ -1327,11 +1321,11 @@ interval *real_roots(mpz_t *upoly, unsigned long deg, if(nbroots > 0 && flags->prec_isole >= 0){ if(flags->classical_algo > 0){ refine_all_roots_naive(upoly,deg, roots, nbroots, - flags->prec_isole, flags->classical_algo, flags->debug); + flags->prec_isole); } else{ refine_QIR_roots_adaptative(upoly, °, roots, *nb_neg_roots, *nb_pos_roots, - flags->prec_isole, flags->verbose, step, flags->nthreads); + flags->prec_isole, flags->verbose, step); } } refine_time = realtime() - refine_time; diff --git a/src/usolve/utils.c b/src/usolve/utils.c index c9a24b77..d06b288d 100644 --- a/src/usolve/utils.c +++ b/src/usolve/utils.c @@ -119,7 +119,7 @@ static void USOLVEnumer_quotient(mpz_t *upol, unsigned long int *deg, mpz_t c, u mpz_add(upol[i], upol[i], tmp); } - for(long int i = 0 ; i <= *deg - 1; i++){ + for(unsigned long int i = 0 ; i <= *deg - 1; i++){ mpz_set(upol[i], upol[i+1]); } mpz_poly_remove_binary_content(upol, *deg - 1); @@ -129,8 +129,7 @@ static void USOLVEnumer_quotient(mpz_t *upol, unsigned long int *deg, mpz_t c, u /* prints coefficients of pol in increasing degree order */ static inline void USOLVEmpz_poly_print(mpz_t *upol, unsigned long int deg){ - int i; - for(i=0;i<=deg;i++){ + for(unsigned long int i=0; i<=deg; i++) { gmp_printf("%Zd", upol[i]); fprintf(stdout," "); } @@ -250,10 +249,10 @@ static long USOLVEmpz_poly_sgn_variations_coeffs_bsize(mpz_t* upol, int c = mpz_cmp_ui(upol[i],0); long int l = ilog2_mpz(upol[i]); N = min((bsize - i + 1) * L + 1, min(deg, (i + 1)*L + 1)); - if(l <= N || c==0){ + if(l <= (long int)N || c==0){ boo = 0; } - if( mpz_sgn(upol[i]) * s < 0 && l > N && c!=0){ + if( mpz_sgn(upol[i]) * s < 0 && l > (long int)N && c!=0){ nb = nb + 1; s = mpz_sgn(upol[i]); if(nb >= 3){ @@ -264,10 +263,10 @@ static long USOLVEmpz_poly_sgn_variations_coeffs_bsize(mpz_t* upol, N = L + 1; int c = mpz_cmp_ui(upol[0],0); long int l = ilog2_mpz(upol[0]); - if(l <= N || c==0){ + if(l <= (long int)N || c==0){ boo = 0; } - if(s*mpz_sgn(upol[0]) < 0 && l> N && c!=0){ + if(s*mpz_sgn(upol[0]) < 0 && l > (long int)N && c!=0){ nb = nb + 1; } if(nb>=3 || boo == 1){ From 8f0c89080e2fb3d8c2d3509f2157b5c76beb00d6 Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Fri, 13 Mar 2026 21:38:17 +0100 Subject: [PATCH 2/4] suppress warnings --- src/usolve/libusolve.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/usolve/libusolve.h b/src/usolve/libusolve.h index 02c503d2..77fc374e 100644 --- a/src/usolve/libusolve.h +++ b/src/usolve/libusolve.h @@ -49,7 +49,7 @@ void get_values_at_bounds(mpz_t *, unsigned long int, interval *, mpz_t *); void refine_QIR_positive_root(mpz_t *, long int *, interval *, mpz_t *, int, int); -int mpz_scalar_product_interval(mpz_t *, unsigned long int, long, +int mpz_scalar_product_interval(mpz_t *, unsigned long int, mpz_t *, mpz_t *, mpz_t, mpz_t, mpz_t, long); int mpz_poly_eval_interval(mpz_t *, unsigned long int, long, From eef6f3303778b2c00b5517845eb30b681d365d0a Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Fri, 13 Mar 2026 22:19:01 +0100 Subject: [PATCH 3/4] propagate change to msolve.c --- src/msolve/msolve.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/msolve/msolve.c b/src/msolve/msolve.c index a9e24bd6..af660348 100644 --- a/src/msolve/msolve.c +++ b/src/msolve/msolve.c @@ -3208,7 +3208,7 @@ int newvalue_denom(mpz_t *denom, long deg, mpz_t r, long k, mpz_t *xdo, mpz_t *xup, mpz_t tmp, mpz_t den_do, mpz_t den_up, long corr, mpz_t c) { - mpz_scalar_product_interval(denom, deg, k, xdo, xup, tmp, den_do, den_up, corr); + mpz_scalar_product_interval(denom, deg, xdo, xup, tmp, den_do, den_up, corr); return (mpz_sgn(den_do) != mpz_sgn(den_up) || mpz_sgn(den_do) == 0 || mpz_sgn(den_up) == 0); } @@ -3432,7 +3432,7 @@ void lazy_single_real_root_param(mpz_param_t param, mpz_t *polelim, int refine = 1; while(refine){ mpz_scalar_product_interval(param->coords[nv]->coeffs, - param->coords[nv]->length - 1, rt->k, xdo, xup, + param->coords[nv]->length - 1, xdo, xup, tmp, val_do, val_up, corr); int boo = 0; while(to_split == 0 && mpz_sgn(val_do)*mpz_sgn(val_up) < 0){ @@ -3440,7 +3440,7 @@ void lazy_single_real_root_param(mpz_param_t param, mpz_t *polelim, tab, xdo, xup, den_up, den_do, c, &corr, &b, info_level); mpz_scalar_product_interval(param->coords[nv]->coeffs, - param->coords[nv]->length - 1, rt->k, xdo, xup, + param->coords[nv]->length - 1, xdo, xup, tmp, val_do, val_up, corr); boo = 1; @@ -3462,7 +3462,7 @@ void lazy_single_real_root_param(mpz_param_t param, mpz_t *polelim, tab, xdo, xup, den_up, den_do, c, &corr, &b, info_level); mpz_scalar_product_interval(param->coords[nv]->coeffs, - param->coords[nv]->length - 1, rt->k, xdo, xup, + param->coords[nv]->length - 1, xdo, xup, tmp, val_do, val_up, corr); newvalue_denom(param->denom->coeffs, param->denom->length - 1, rt->numer, rt->k, xdo, xup, tmp, den_do, den_up, corr, From 19396045c1ab16ff7406f85950d2d97c70417b49 Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Fri, 13 Mar 2026 22:23:08 +0100 Subject: [PATCH 4/4] make type consistent with header --- src/usolve/evaluate.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/usolve/evaluate.c b/src/usolve/evaluate.c index 0094516a..2cfe5ebd 100644 --- a/src/usolve/evaluate.c +++ b/src/usolve/evaluate.c @@ -306,7 +306,7 @@ int mpz_scalar_product_interval(mpz_t *up, const long int deg, /* up( [ xdo[1], xup[1] ] ) */ /* xup[i] and xdo[i] are given mod 2^corr when i%b == 0 */ -int lazy_mpz_poly_eval_interval(mpz_t *up, const unsigned long int deg, +int lazy_mpz_poly_eval_interval(mpz_t *up, const long int deg, const long k, mpz_t *xdo, mpz_t *xup, const long prec, const long corr, @@ -314,8 +314,7 @@ int lazy_mpz_poly_eval_interval(mpz_t *up, const unsigned long int deg, mpz_t tmp, mpz_t val_do, mpz_t val_up){ - /* comparison to be checked; this was deg == -1 but deg is unsigned */ - if(deg==(unsigned long int)(-1)){ + if(deg==-1){ mpz_set_ui(val_up, 0); mpz_set_ui(val_do, 0); return 0; @@ -328,8 +327,8 @@ int lazy_mpz_poly_eval_interval(mpz_t *up, const unsigned long int deg, mpz_set_ui(val_up, 0); mpz_set_ui(val_do, 0); - const long t = (deg) / b; - long rd = (deg) % b; + const long t = deg / b; + long rd = deg % b; mpz_t fdo, fup; mpz_init(fdo); mpz_init(fup);