Bill Allombert on Mon, 26 Jul 2010 15:12:46 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Real zero in libpari |
On Mon, Jul 26, 2010 at 02:35:04PM +0200, Jeroen Demeyer wrote: > Hello pari-users, > > I have a technical question about the t_REAL type. The documentation > says that real zero is characterized by having the sign equal to zero. > My question is: does a real zero NEED to have lg == 2 in order to be a > valid GEN? Currently, yes. This is necessary because z[2] must be normalized, and so cannot be 0. Thus the only possibility is that z[2] does not exist i.e. lg=2. > I am asking because the following program gives an error: > #include <pari/pari.h> > int main() > { > pari_init(1000000, 500000); > > GEN x = cgetr(3); /* Normally, lg would be 2 */ > setsigne(x, 0); > setexpo(x, -63); > dbgGEN(x, -1); > > /* The following line gives: > *** overflow in expo(). > *** Error in the PARI system. End of program. */ > gexp(x, 100); > } It seems that mpexp explicitly make the assumption that lg(x)=2 iff signe(x)=0. This assumption is correct at this point. Another frequent similar assumption is done for polynomials with t_INT coefficients: lg(x)=2 iff signe(x)=0. Note that this is not true for general polynomials (with inexact 0 as coefficients). Cheers, Bill.