Bill Allombert on Mon, 04 Dec 2023 11:15:25 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: libpari precision handling changes |
On Mon, Dec 04, 2023 at 12:10:41AM +0000, James Rickards wrote: > Dear Bill, > > In one of my programs I set a tolerance to be half of the precision (i.e. precision=2^-n, tolerance=2^(-n/2)) with: > static GEN > deftol(long prec) > { > return real2n((BITS_IN_LONG >> 1)*(2 - prec), prec); > } > > You say that this change should not break most C programs, but I am correct in saying that this function is broken now? Yes sorry. You can do that instead return real2n( -nbits2prec(prec2nbits(prec)>>1), prec); This should work with both definition of prec. Generally, if you need to do arithmetic operation on the precision, do nbits2prec ( ... prec2nbits(prec) ... ) This way this does not depend on the internal representation. Cheers, Bill.