Karim Belabas on Tue, 20 Jan 2004 02:50:43 +0100


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

Re: polredabs() arch-dependent behavior


* Igor Schein <igor@txc.com> [2004-01-13 19:46]:
> the following command works instantaneously on 64bit architecture:
> 
> ? {#polredabs(
> x^32 - 272*x^30 + 26520*x^28 - 1271600*x^26 + 35003680*x^24 - 603552224*x^22
>  + 6870103376*x^20 - 53322479072*x^18 + 287642983160*x^16 - 1088541888192*x^
> 14 + 2892828010656*x^12 - 5358926519104*x^10 + 6800229039232*x^8 - 572504516
> 5696*x^6 + 3020092633280*x^4 - 892896952448*x^2 + 111612119056
> ,4)}
> 14
> 
> but runs forever on 32bit.

10 minutes (PIII 1GHz, slow) is not forever.

Besides, I do not thing there is a bug here. Given the high degree and
(annoying) Galois structure, I would not expect fast termination.

In both cases, one only gets sensible running times because (roughly) the
first half of the basis vectors for the maximal order are found to generate a
subfield.

Here, a floating point LLL has a slightly different behaviour on 32bit and
64bit machines (not all accuracies are available on 64bit machines, and there
are subtly different rounding patterns). This gives two different acceptable
bases i.e both are correct LLL-reduced outputs to the routine. 

On 32bit machines, only the first 15 vectors generate a subfield; add the
16th and you get the whole field. On 64bit, the first 16 vectors still
generate a subfield. ( Essentially, vectors 16 and 17 are permuted, both
having almost the same length. )

Hence the difference.

    Karim.
-- 
Karim Belabas                     Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425   Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud              http://www.math.u-psud.fr/~belabas/ 
F-91405 Orsay (France)            http://pari.math.u-bordeaux.fr/  [PARI/GP]