--- msolve-0.5.0/src/fglm/fglm_core.c.orig 2023-07-28 14:08:11.775979716 -0600 +++ msolve-0.5.0/src/fglm/fglm_core.c 2023-07-28 14:09:34.446855573 -0600 @@ -47,6 +47,7 @@ extern _Bool have_avx2; #include "linalg-fglm.c" #include "matrix-mult.c" #include "berlekamp_massey.c" +#include "libfglm.h" void display_nmod_poly(FILE *file, nmod_poly_t pol){ --- msolve-0.5.0/src/fglm/libfglm.h.orig 2023-07-04 01:31:27.000000000 -0600 +++ msolve-0.5.0/src/fglm/libfglm.h 2023-07-28 14:09:34.446855573 -0600 @@ -19,12 +19,13 @@ * Mohab Safey El Din */ param_t *nmod_fglm_compute(sp_matfglm_t *, mod_t, long, - long, uint64_t *, uint32_t *, uint64_t*, int); + long, uint64_t *, uint32_t *, uint64_t*, int, stat_t *); param_t *nmod_fglm_guess_colon(sp_matfglmcol_t *, mod_t, CF_t *, CF_t **, long, - long, uint64_t *, uint32_t *, uint64_t *, int); + long, uint64_t *, uint32_t *, uint64_t *, int, + stat_t *); param_t *nmod_fglm_compute_trace_data(sp_matfglm_t *, mod_t, long, - long, + szmat_t, long, uint64_t *, uint32_t *, @@ -47,7 +48,7 @@ int nmod_fglm_compute_apply_trace_data(s fglm_bms_data_t *, const long, const int, - const stat_t *); + stat_t *); void display_fglm_param(FILE *, param_t *); void display_fglm_param_maple(FILE *, param_t *); --- msolve-0.5.0/src/msolve/msolve.c.orig 2023-07-04 01:31:27.000000000 -0600 +++ msolve-0.5.0/src/msolve/msolve.c 2023-07-28 14:09:34.447855560 -0600 @@ -1121,9 +1121,11 @@ int msolve_ff(param_t **bparam, uint64_t *squvars = calloc(gens->nvars-1, sizeof(uint64_t)); check_and_set_vars_squared_in_monomial_basis(squvars, lmb, dquot, gens->nvars); + stat_t st; + memset(&st, 0, sizeof(st)); *bparam = nmod_fglm_compute(matrix, gens->field_char, gens->nvars, nlins, linvars, lineqs_ptr[0], - squvars, info_level); + squvars, info_level, &st); #if DEBUGGB>0 if(files->out_file != NULL){ @@ -1411,7 +1413,7 @@ int msolve_ff_alloc(param_t **bparam, dquot, gens->nvars); *bparam = nmod_fglm_compute(matrix, gens->field_char, gens->nvars, nlins, linvars, lineqs_ptr[0], - squvars, info_level); + squvars, info_level, st); #if DEBUGGB>0 if(files->out_file != NULL){ FILE *ofile = fopen(files->out_file, "w"); @@ -4946,7 +4948,7 @@ restart: param_t * param = nmod_fglm_guess_colon(matrix, gens->field_char, leftvector, leftvectorsparam, gens->nvars, - 0, linvars, lineqs, squvars, 1); + 0, linvars, lineqs, squvars, 1, st); ct4 = cputime(); rt4 = realtime(); if (info_level) { --- msolve-0.5.0/src/usolve/evaluate.h.orig 2023-07-04 01:31:27.000000000 -0600 +++ msolve-0.5.0/src/usolve/evaluate.h 2023-07-28 14:09:34.447855560 -0600 @@ -46,8 +46,8 @@ int sgn_mpz_poly_eval_at_point_2exp_ui(m int sgn_mpz_poly_eval_at_point_naive(mpz_t *, unsigned long int, mpz_t *, int); -void mpz_poly_eval_2exp_naive(mpz_t *, unsigned long int, - mpz_t *, int, mpz_t *, mpz_t *); +void mpz_poly_eval_2exp_naive(mpz_t *, long int, + mpz_t *, const long int, mpz_t *, mpz_t *); int sgn_mpz_poly_eval_at_point_2exp_naive(mpz_t *, unsigned long int, mpz_t*, int); int sgn_mpz_poly_eval_at_point_2exp_naive2(mpz_t *, unsigned long int, mpz_t, int); --- msolve-0.5.0/src/usolve/libusolve.h.orig 2023-07-04 01:31:27.000000000 -0600 +++ msolve-0.5.0/src/usolve/libusolve.h 2023-07-28 14:09:34.447855560 -0600 @@ -32,8 +32,8 @@ unsigned long int mpz_poly_max_bsize_coe unsigned long int mpz_poly_min_bsize_coeffs(mpz_t *, unsigned long int); void mpz_poly_eval_2exp_naive(mpz_t *, - unsigned long int, - mpz_t *, const int, + long int, + mpz_t *, const long int, mpz_t *, mpz_t *); void mpz_poly_eval_2exp_naive2(mpz_t *,