John Cremona on Mon, 09 Nov 2015 14:56:04 +0100

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

Re: real polynomials

In case you are all wondering why I have not yet reported back with
success, there are two reasons: first, the program works but it is
much too slow; and second, I have been travelling without proper
internet access.

I may have some more questions as I try to speed things up.  At the
moment my program uses plain C (doubles) throughout except where it
has to (rather frequently) find out about whether a polynomial has
real roots, at which point I do this conversion to GEN types.  I will
try to convert the whole thing into proper pari, though multiprecision
is not needed.  For the degree 4 case where I know how to test for the
number of real roots algebraically, my old program in pure C is about
100 times faster than the new one.  And I need to run it in hiogher
degrees where the condiition is a lot more complicated (and also not
known to me!).


On 8 November 2015 at 12:09, Karim Belabas
<> wrote:
> * John Cremona [2015-11-06 17:51]:
>> For some reason I thought that calling gdiv on two t_INTs would give a
>> truncated answer.
> - gdiv() implements the '/' GP operator [ which doesn't truncate ]
> - divii() returns the Euclidean quotient of two integers (hence truncates)
>> In fact I wanted to make a t_INT out of the
>> mantissa and then right-shift it by e places, but the function which
>> does that does (I think?) truncate.
> Shifting functions come in two variants:
> - gshift() [ truncates, implements the << and >> operators ]
> - gmul2n() [ multiplies by 2^n; never truncates, so safe for use when n < 0 ]
> Cheers,
>     K.B.
> --
> 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
> F-33405 Talence (France)  [PARI/GP]
> `