Bill Allombert on Tue, 07 Jun 2016 15:24:13 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Regarding digits(999999999999999,4294967295) result.


On Tue, Jun 07, 2016 at 02:11:38PM +0530, chandra sekaran wrote:
> gp > digits(999999999999999,4294967295)
> 
> [232830, -1530262147]
> 
> Is it correct?

No.

> I think answer should be [232830, 2764705149]. Am i correct

Yes, you are correct. Internally digits are computed as unsigned
C integer, but unfortunately they are converted to signed pari integers.

The patch below fix that.

Thanks for reporting this bug!
Cheers,
Bill.

index 4157b12..b647e1e 100644
--- a/src/basemath/arith2.c
+++ b/src/basemath/arith2.c
@@ -1482,7 +1482,7 @@ digits(GEN x, GEN B)
     (void)new_chunk(3*lz); /* HACK */
     z = zero_zv(lz);
     digits_dacsmall(x,vB,lz,(ulong*)(z+1));
-    avma = av; return vecsmall_to_vec(z);
+    avma = av; return Flv_to_ZV(z);
   }
 }