@@ -55,7 +55,12 @@ static long long int index_linearinterp(mpz_t *vala, mpz_t *valb, mpz_t *q,
5555 }
5656 return -1 ;
5757 }
58+ #if ULONG_MAX == ULLONG_MAX
5859 long long int index = mpz_get_ui (* q );
60+ #else
61+ long long int index = 0 ;
62+ mpz_export (& index , NULL , 1 , sizeof (index ), 0 , 0 , * q );
63+ #endif
5964 return index ;
6065}
6166
@@ -305,8 +310,17 @@ static void refine_root_by_N_positive_k(mpz_t *upol, unsigned long int *deg_ptr,
305310 mpz_mul_2exp (rt -> numer , rt -> numer , Nlog );
306311
307312 if (index >= 0 ){
313+ #if ULONG_MAX == ULLONG_MAX
308314 getx_and_eval_2exp (upol , * deg_ptr , & (rt -> numer ),x , vala , q ,
309315 newk , index );
316+ #else
317+ mpz_t index_tmp ;
318+ mpz_init (index_tmp );
319+ mpz_import (index_tmp , 1 , 1 , sizeof (index ), 0 , 0 , & index );
320+ getx_and_eval_2exp_mpzidx (upol , * deg_ptr , & (rt -> numer ), x , vala , q ,
321+ newk , & index_tmp );
322+ mpz_clear (index_tmp );
323+ #endif
310324 }
311325 else {
312326 getx_and_eval_2exp_mpzidx (upol , * deg_ptr , & (rt -> numer ), x , vala , q ,
@@ -446,8 +460,17 @@ static void refine_root_by_N_negative_k(mpz_t *upol, unsigned long int *deg_ptr,
446460 }
447461
448462 if (index >= 0 ){
463+ #if ULONG_MAX == ULLONG_MAX
449464 getx_and_eval (upol , * deg_ptr , & (rt -> numer ), x , vala , q ,
450465 Nlog , k , index );
466+ #else
467+ mpz_t index_tmp ;
468+ mpz_init (index_tmp );
469+ mpz_import (index_tmp , 1 , 1 , sizeof (index ), 0 , 0 , & index );
470+ getx_and_eval_mpzidx (upol , * deg_ptr , & (rt -> numer ),x , vala , q ,
471+ Nlog , k , & index_tmp );
472+ mpz_clear (index_tmp );
473+ #endif
451474 }
452475 else {
453476 getx_and_eval_mpzidx (upol , * deg_ptr , & (rt -> numer ),x , vala , q ,
0 commit comments