John Cremona on Fri, 06 Nov 2015 16:38:52 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: real polynomials |
On 6 November 2015 at 15:34, Karim Belabas <Karim.Belabas@math.u-bordeaux.fr> wrote: > * John Cremona [2015-11-06 14:44]: >> Thanks for the helpful comments. I don't need multiplicities, and in >> fact all I need is to know whether there are any roots at all in >> (-oo,oo) or (-oo,0] or [0,oo). >> At present the coeffs are converted from C doubles. My pari >> programming skills are rather basic so almost all the program uses >> plain C types and I only convert to GEN for this one test. Perhaps I >> should be more brave... > > Maybe the following function will be of interest: Thanks Karim, I will use this. > > GEN > dbltorat(double x) > { > pari_sp av = avma; > GEN z; > > if (!x) return gen_0; > > z = utoi( dblmantissa(x) ); if (x < 0) setsigne(z, -1); > return gerepileupto(av, gmul2n(z, dblexpo(x) - 63)); > } > I will give you a laugh by showing you my own version: GEN dbltorat(double x) // assumes x=a/2^e { long e; GEN res = cgetg(3, t_FRAC); if (x==0) { gel(res,1) = cgeti(0); gel(res,2) = cgeti(1); } else { gel(res,1) = mantissa_real(dbltor(x), &e); gel(res,2) = cgeti(2<<e); } return res; } (tested! a little) In answer to Bill, it may be that the rational I create this way cause problems as coefficients of a polynomial. > (untested :-) > > Cheers, > > K.B. John > -- > Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 > Universite de Bordeaux Fax: (+33) (0)5 40 00 69 50 > 351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/ > F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP] > ` >