#7736: factor returns a reducible factor,
-----------------------------+----------------------------------------------
Reporter: syazdani | Owner: cremona
Type: defect | Status: new
Priority: critical | Milestone: sage-4.3.3
Component: factorization | Keywords:
Author: | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
-----------------------------+----------------------------------------------
Changes (by cremona):
* owner: tbd => cremona
Old description:
> Here is a result that confuses me (appologies for not having a simpler
> example for this):
> {{{
> sage: E = EllipticCurve('1728z');
> sage: Et = E.mod5family();
> sage: f=Et.discriminant().numerator().factor()[0][0];
> sage: K.<alpha> = NumberField(f);
> sage: f.change_ring(K).factor()[1][0].is_irreducible()
> False
> }}}
> Here f turns out to be a degree 12 polynomial, and when you factor it
> over K, you get a linear factor and a degree 11 factor. However, degree
> 11 factor in this case is not irreducible. In fact, if you continue with
> {{{
> sage: g = f.change_ring(K).factor()[1][0];
> sage: g.factor()
> }}}
> you get a linear factor and a degree 10 factor, where both are
> irreducible.
New description:
Here is a result that confuses me (appologies for not having a simpler
example for this):
{{{
sage: E = EllipticCurve('1728z');
sage: Et = E.mod5family();
sage: f=Et.discriminant().numerator().factor()[0][0];
sage: K.<alpha> = NumberField(f);
sage: f.change_ring(K).factor()[1][0].is_irreducible()
False
}}}
Here f turns out to be a degree 12 polynomial, and when you factor it over
K, you get a linear factor and a degree 11 factor. However, degree 11
factor in this case is not irreducible. In fact, if you continue with
{{{
sage: g = f.change_ring(K).factor()[1][0];
sage: g.factor()
}}}
you get a linear factor and a degree 10 factor, where both are
irreducible.
I fear it is no good asking for an upstream fix, since they (pari) have
already fixed it but we are not using the fixed version. See #7097 for
more details.
--
Comment:
It may well be that the short-term fix I put in at #7097 is not yet good
enough. [It is short-term since the latest version of pari have fixed
some bugs which arose for non-monic polynomials, which is why the patch I
put in at #7097 made sure that pari was only called to factor monic ones.]
I just had a possibly worse example, and found this ticket while looking
to see if I should open a new one:
{{{
sage: E = EllipticCurve('4900a2')
sage: f = E.division_polynomial(9)
sage: K3.<z> = CyclotomicField(3)
sage: ff = f.change_ring(K3)
sage: ff.degree()
40
sage: [g.degree() for g,e in ff.factor()]
[1, 3, 9, 40]
}}}
I factor a degree 40 polynomial and the returned factors have degrees
1,3,9,40!
Even if I make the polynomial monic (above it has leading coefficient 9)
it is no better:
{{{
sage: x = f.parent().gen()
sage: g = 9^39 * f(x/9)
sage: all([c.is_integral() for c in g.coefficients()])
True
sage: [h.degree() for h,e in g.change_ring(K3).factor()]
[1, 3, 9, 40]
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7736#comment:4>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.