From 462d3b4ed5ca7e7523a10a6ff5378dfa515d23d5 Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Sun, 8 Mar 2026 23:35:06 +0100 Subject: [PATCH] Fix definition of some constants when sizeof(mp_limb_t)==4 --- src/fglm/fglm_core.c | 10 +++++----- src/fglm/linalg-fglm.c | 2 +- src/msolve/msolve.c | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/fglm/fglm_core.c b/src/fglm/fglm_core.c index d09847ed..554501e5 100644 --- a/src/fglm/fglm_core.c +++ b/src/fglm/fglm_core.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include /* for timing functions */ @@ -504,7 +505,7 @@ static inline void sparse_mat_fglm_mult_vec(CF_t *res, sp_matfglm_t *mat, nmod_t mod; uint64_t pow2_precomp; nmod_init(&mod, (uint64_t)prime); - NMOD_RED(pow2_precomp, (UWORD(1) << __DOT_SPLIT_BITS), mod); + NMOD_RED(pow2_precomp, (UINT64_C(1) << __DOT_SPLIT_BITS), mod); _avx512_matrix_vector_product(vres, mat->dense_mat, vec, mat->dst, ncols, nrows, mod, pow2_precomp, st); @@ -512,7 +513,7 @@ static inline void sparse_mat_fglm_mult_vec(CF_t *res, sp_matfglm_t *mat, nmod_t mod; uint64_t pow2_precomp; nmod_init(&mod, (uint64_t)prime); - NMOD_RED(pow2_precomp, (UWORD(1) << __DOT_SPLIT_BITS), mod); + NMOD_RED(pow2_precomp, (UINT64_C(1) << __DOT_SPLIT_BITS), mod); _avx2_matrix_vector_product(vres, mat->dense_mat, vec, mat->dst, ncols, nrows, mod, pow2_precomp, st); @@ -565,7 +566,7 @@ static inline void sparse_mat_fglm_colon_mult_vec(CF_t *res, sp_matfglmcol_t *ma nmod_t mod; uint64_t pow2_precomp; nmod_init(&mod, (uint64_t)prime); - NMOD_RED(pow2_precomp, (UWORD(1) << __DOT_SPLIT_BITS), mod); + NMOD_RED(pow2_precomp, (UINT64_C(1) << __DOT_SPLIT_BITS), mod); _avx512_matrix_vector_product(vres, mat->dense_mat, vec, mat->dst, ncols, nrows, mod, pow2_precomp, st); @@ -573,7 +574,7 @@ static inline void sparse_mat_fglm_colon_mult_vec(CF_t *res, sp_matfglmcol_t *ma nmod_t mod; uint64_t pow2_precomp; nmod_init(&mod, (uint64_t)prime); - NMOD_RED(pow2_precomp, (UWORD(1) << __DOT_SPLIT_BITS), mod); + NMOD_RED(pow2_precomp, (UINT64_C(1) << __DOT_SPLIT_BITS), mod); _avx2_matrix_vector_product(vres, mat->dense_mat, vec, mat->dst, ncols, nrows, mod, pow2_precomp, st); @@ -2208,4 +2209,3 @@ param_t *nmod_fglm_guess_colon(sp_matfglmcol_t *matrix, return param; } - diff --git a/src/fglm/linalg-fglm.c b/src/fglm/linalg-fglm.c index 7ced7f02..0511cbe0 100644 --- a/src/fglm/linalg-fglm.c +++ b/src/fglm/linalg-fglm.c @@ -40,7 +40,7 @@ // parameters for splitting #define __DOT_SPLIT_BITS 56 -#define __DOT_SPLIT_MASK 72057594037927935UL // (1UL << __DOT_SPLIT_BITS) - 1 +#define __DOT_SPLIT_MASK UINT64_C(72057594037927935) // (UINT64_C(1) << __DOT_SPLIT_BITS) - 1 /*--------------------------------------*/ /* non-vectorized matrix vector product */ diff --git a/src/msolve/msolve.c b/src/msolve/msolve.c index 5074a1ee..cf1df4ac 100644 --- a/src/msolve/msolve.c +++ b/src/msolve/msolve.c @@ -912,12 +912,12 @@ static inline void normalize_nmod_param(param_t *nmod_param) { for (long i = 1; i < nmod_param->elim->length; i++) { nmod_param->denom->coeffs[i - 1] = - (i * nmod_param->elim->coeffs[i]) % prime; + (uint64_t)i * (uint64_t)nmod_param->elim->coeffs[i] % (uint64_t)prime; } for (long i = 0; i < nmod_param->elim->length - 1; i++) { nmod_param->denom->coeffs[i] = - (inv * nmod_param->denom->coeffs[i]) % prime; + (uint64_t)inv * (uint64_t)nmod_param->denom->coeffs[i] % (uint64_t)prime; } for (int j = 0; j < nmod_param->nvars - 1; j++) {