Looks like a known problem:

http://trac.sagemath.org/sage_trac/ticket/13054

The routine in question tries to find a better defining polynomial for
a given field. With

R.<y>=QQ['y']
poly=y^4 - 4294967296*y^2 + 54265257667816538374400

it executes:

    degree = poly.degree()
    pari_poly = pari(poly)

    red_table = pari_poly.polred(3)

    best = None
    best_discr = None

    for i in range(red_table.nrows()):
        red_poly = red_table[i,1]
        if red_poly.poldegree() < degree:
            continue
        red_discr = red_poly.poldisc().abs()
        if best_discr is None or red_discr < best_discr:
            best = red_poly
            best_discr = red_discr
            best_elt = red_table[i,0]
    assert(best is not None)

After which (this happened for i==3) we have best_discr == 0, so the
found element generates only a subfield and polred, quite
misleadingly, only reports the characteristic polynomial rather than
the minimal polynomial. We could avoid this problem by
testing "red_descr > 0 and ( best_discr is None or red_discr <
best_discr)". The pari documentation of polred suggests there is
always at least one element that passes that test, so the assertion
should still hold.

According to the documentation, this is an error in pari, since it
should be returning the minimal poly.

GP session illustrating the error: (GP/PARI 2.5.3 (development
git-6fd07f9))

? poly=x^4 - 4294967296*x^2 + 54265257667816538374400
%1 = x^4 - 4294967296*x^2 + 54265257667816538374400
? L=polred(poly,3)
%2 =
[1 x - 1]

[1/145522114880*x^3 - 67108864/2273783045*x x^4 - 11005853696*x^2 +
356327727107810941435025]

[1/4*x x^4 - 268435456*x^2 + 211973662764908353025]

[1/16*x^2 - 134217728 x^4 + 423911296732797742082*x^2 +
44925196874420524410175311836119348423681]

? elt=Mod(L[4,1],poly)
%3 = Mod(1/16*x^2 - 134217728, x^4 - 4294967296*x^2 +
54265257667816538374400)
? minpoly(elt)
%4 = x^2 + 211955648366398871041
? factor(L[4,2])
%5 =
[x^2 + 211955648366398871041 2]

As you can see L[4,2] is the square of the minimal polynomial.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to