Factorization is available for polynomials over series rings defined over finite fields. We recommend constructing polynomials from sequences rather than by addition of terms, especially over fields, to avoid some precision loss. For example, x4 + t will not have full precision in the constant coefficient as there will be a O term in the constant coefficient of x4 which will reduce its precision as a field element. The equivalent polynomial Polynomial([t, 0, 0, 0, 1]) will have more precision than that constructed as x4 + t.
Given a polynomial f over a series ring over a finite field or an extension of a series ring and a factorization L of f to precision 1 return a factorization of f known to the full precision of the coefficient ring of f.
Certificates: BoolElt Default: false
Ideals: BoolElt Default: false
Extensions: BoolElt Default: false
The factorization of the polynomial f over a power series ring, laurent series field over a finite field or an extension of either into irreducibles.If Certificates is set to true, a two-element certificate for each factor, proving its irreducibility, is returned.
If Ideals is set to true, two generators of some ideal for each factor are returned within the certificates.
If Extensions is set to true, an extension for each factor is returned within the certificates.
> P<t> := PowerSeriesRing(GF(101)); > R<x> := PolynomialRing(P); > Factorization(x^5 + t*x^4 - t^2*x^3 + (1 + t^20)*x^2 + t*x + t^6); [ <(1 + O(t^20))*x + t^5 + O(t^8), 1>, <(1 + O(t^20))*x + t + 100*t^4 + 100*t^5 + t^7 + O(t^8), 1>, <(1 + O(t^20))*x + 1 + 34*t^2 + 34*t^3 + 34*t^4 + 90*t^5 + 29*t^6 + 16*t^8 + 32*t^9 + 6*t^10 + 66*t^11 + 41*t^12 + 93*t^13 + t^14 + 69*t^15 + 8*t^16 + 61*t^17 + 86*t^18 + 19*t^19 + O(t^20), 1>, <(1 + O(t^20))*x^2 + (100 + 67*t^2 + 67*t^3 + 68*t^4 + 11*t^5 + 72*t^6 + 100*t^7 + 85*t^8 + 69*t^9 + 94*t^10 + 31*t^11 + 59*t^12 + 16*t^13 + 14*t^14 + 35*t^15 + 77*t^16 + 28*t^17 + 33*t^18 + 72*t^19 + O(t^20))*x + 1 + 67*t^2 + 68*t^3 + 11*t^4 + 67*t^5 + 57*t^6 + 16*t^7 + 57*t^8 + 21*t^9 + 68*t^10 + 68*t^11 + 61*t^12 + 98*t^13 + 4*t^14 + 21*t^15 + 7*t^16 + 95*t^17 + 23*t^18 + 76*t^19 + O(t^20), 1> ] 1 + O(t^20) > P<t> := PowerSeriesRing(GF(101), 50); > R<x> := PolynomialRing(P); > Factorization(x^5 + t*x^4 - t^2*x^3 + (1 + t^20)*x^2 + t*x + t^6 : > Extensions); [ <x + t^5 + t^9 + 2*t^13 + t^16 + 5*t^17 + 6*t^20 + 14*t^21 + 26*t^24 + 42*t^25 + 3*t^27 + 4*t^28 + 32*t^29 + 35*t^31 + 10*t^32 + 29*t^33 + 46*t^35 + t^36 + 31*t^37 + O(t^38), 1>, <x + t + 100*t^4 + 100*t^5 + t^7 + 100*t^9 + t^10 + 4*t^11 + t^12 + 91*t^13 + 86*t^14 + 98*t^15 + 15*t^16 + 7*t^17 + 83*t^18 + 10*t^19 + 23*t^20 + 54*t^21 + 47*t^22 + 72*t^23 + 87*t^24 + 55*t^25 + 4*t^26 + 15*t^27 + 90*t^28 + 82*t^29 + 97*t^30 + 15*t^31 + 23*t^32 + 86*t^33 + 57*t^34 + 10*t^35 + 79*t^36 + 52*t^37 + O(t^38), 1>, <x + 1 + 34*t^2 + 34*t^3 + 34*t^4 + 90*t^5 + 29*t^6 + 16*t^8 + 32*t^9 + 6*t^10 + 66*t^11 + 41*t^12 + 93*t^13 + t^14 + 69*t^15 + 8*t^16 + 61*t^17 + 86*t^18 + 19*t^19 + 47*t^20 + 11*t^21 + 42*t^22 + 38*t^23 + 46*t^24 + 90*t^25 + 14*t^26 + 7*t^27 + 89*t^28 + 85*t^29 + 70*t^30 + 24*t^31 + 28*t^32 + 71*t^33 + 53*t^34 + 55*t^35 + 90*t^36 + 26*t^37 + 4*t^38 + 56*t^39 + 44*t^40 + 8*t^41 + 25*t^42 + 94*t^43 + 14*t^44 + 92*t^45 + 56*t^46 + 83*t^47 + 26*t^48 + 41*t^49 + O(t^50), 1>, <x^2 + (100 + 67*t^2 + 67*t^3 + 68*t^4 + 11*t^5 + 72*t^6 + 100*t^7 + 85*t^8 + 69*t^9 + 94*t^10 + 31*t^11 + 59*t^12 + 16*t^13 + 14*t^14 + 35*t^15 + 77*t^16 + 28*t^17 + 33*t^18 + 72*t^19 + 25*t^20 + 22*t^21 + 12*t^22 + 92*t^23 + 43*t^24 + 15*t^25 + 83*t^26 + 76*t^27 + 19*t^28 + 3*t^29 + 35*t^30 + 27*t^31 + 40*t^32 + 16*t^33 + 92*t^34 + 91*t^35 + 32*t^36 + 93*t^37 + 84*t^38 + 98*t^39 + 85*t^40 + 54*t^41 + 25*t^42 + 88*t^43 + 35*t^44 + 17*t^45 + t^46 + 39*t^47 + 89*t^48 + 67*t^49 + O(t^50))*x + 1 + 67*t^2 + 68*t^3 + 11*t^4 + 67*t^5 + 57*t^6 + 16*t^7 + 57*t^8 + 21*t^9 + 68*t^10 + 68*t^11 + 61*t^12 + 98*t^13 + 4*t^14 + 21*t^15 + 7*t^16 + 95*t^17 + 23*t^18 + 76*t^19 + 62*t^20 + 59*t^21 + 66*t^22 + 35*t^23 + 41*t^24 + 45*t^25 + 32*t^26 + 56*t^27 + 35*t^28 + 19*t^29 + 21*t^30 + 59*t^31 + 50*t^32 + 72*t^33 + 58*t^34 + 75*t^35 + 59*t^36 + 76*t^37 + 83*t^38 + 66*t^39 + 6*t^40 + 8*t^41 + 94*t^42 + 77*t^43 + 100*t^44 + 30*t^45 + 72*t^46 + 26*t^47 + 54*t^48 + 21*t^49 + O(t^50), 1> ] 1 + O(t^50) [ rec<recformat<F: RngIntElt, Rho: RngUPolElt, E: RngIntElt, Pi: RngUPolElt, IdealGen1, IdealGen2: RngUPolElt, Extension> | F := 1, Rho := 1 + O($.1^50), E := 1, Pi := $.1 + O($.1^50), Extension := Power series ring in t over GF(101) with fixed absolute precision 50>, rec<recformat<F: RngIntElt, Rho: RngUPolElt, E: RngIntElt, Pi: RngUPolElt, IdealGen1, IdealGen2: RngUPolElt, Extension> | F := 1, Rho := 1 + O($.1^50), E := 1, Pi := $.1 + O($.1^50), Extension := Power series ring in t over GF(101) with fixed absolute precision 50>, rec<recformat<F: RngIntElt, Rho: RngUPolElt, E: RngIntElt, Pi: RngUPolElt, IdealGen1, IdealGen2: RngUPolElt, Extension> | F := 1, Rho := 1 + O($.1^50), E := 1, Pi := $.1 + O($.1^50), Extension := Power series ring in t over GF(101) with fixed absolute precision 50>, rec<recformat<F: RngIntElt, Rho: RngUPolElt, E: RngIntElt, Pi: RngUPolElt, IdealGen1, IdealGen2: RngUPolElt, Extension> | F := 2, Rho := (1 + O($.1^50))*$.1 + O($.1^50), E := 1, Pi := $.1 + O($.1^50), Extension := Extension of Power series ring in t over GF(101) with fixed absolute precision 50 by x^2 + (100 + O(t^50))*x + 1 + O(t^50)> ]