Changeset 7507:de39c2037850
- Timestamp:
- 12/02/07 02:20:33 (5 years ago)
- Branch:
- default
- File:
-
- 1 edited
-
sage/rings/polynomial/polynomial_element.pyx (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/rings/polynomial/polynomial_element.pyx
r7506 r7507 1483 1483 sage: expand(F) 1484 1484 T^6 + 10/7*T^5 + (-867/49)*T^4 + (-76/245)*T^3 + 3148/35*T^2 + (-25944/245)*T + 48771/1225 1485 1486 sage: f = x^2 - 1/3 ; K.<a> = NumberField(f) ; A.<T> = K[] ; g = A(x^2-1) 1487 sage: g.factor() 1488 (T - 1) * (T + 1) 1489 1490 sage: h = A(3*x^2-1) ; h.factor() 1491 (3) * (T - a) * (T + a) 1492 1493 sage: h = A(x^2-1/3) ; h.factor() 1494 (T - a) * (T + a) 1485 1495 1486 1496 Over the real double field: … … 1553 1563 G = None 1554 1564 1555 from sage.rings.number_field.all import is_NumberField, is_RelativeNumberField 1565 from sage.rings.number_field.all import is_NumberField, \ 1566 is_RelativeNumberField, NumberField 1556 1567 from sage.rings.finite_field import is_FiniteField 1557 1568 … … 1582 1593 1583 1594 1584 elif is_NumberField(R) or is_FiniteField(R): 1585 v = [x._pari_("a") for x in self.list()] 1586 f = pari(v).Polrev() 1587 G = list(R.pari_polynomial("a").nfinit().nffactor(f)) 1595 elif is_NumberField(R): 1596 if (R.defining_polynomial().denominator() == 1) and \ 1597 (self.denominator() == 1): 1598 v = [ x._pari_("a") for x in self.list() ] 1599 f = pari(v).Polrev() 1600 Rpari = R.pari_nf() 1601 if (Rpari.variable() != "a"): 1602 Rpari = Rpari.copy() 1603 Rpari[0] = Rpari[0]("a") 1604 Rpari[6] = [ x("a") for x in Rpari[6] ] 1605 G = list(Rpari.nffactor(f)) 1606 1607 else: 1608 1609 Rdenom = R.defining_polynomial().denominator() 1610 1611 new_Rpoly = (R.defining_polynomial() * Rdenom).change_variable_name("a") 1612 1613 Rpari, Rdiff = new_Rpoly._pari_().nfinit(3) 1614 1615 AZ = polynomial_ring.PolynomialRing(QQ,'z') 1616 Raux = NumberField(AZ(Rpari[0]),'alpha') 1617 1618 S, gSRaux, fRauxS = Raux.change_generator(Raux(Rdiff)) 1619 1620 phi_RS = R.Hom(S)([S.gen(0)]) 1621 phi_SR = S.Hom(R)([R.gen(0)]) 1622 1623 unit = self.leading_coefficient() 1624 temp_f = self * 1/unit 1625 1626 v = [ gSRaux(phi_RS(x))._pari_("a") for x in temp_f.list() ] 1627 f = pari(v).Polrev() 1628 1629 pari_factors = Rpari.nffactor(f) 1630 1631 factors = [ ( self.parent([ phi_SR(fRauxS(Raux(pari_factors[0][i][j]))) 1632 for j in range(len(pari_factors[0][i])) ]) , 1633 int(pari_factors[1][i]) ) 1634 for i in range(pari_factors.nrows()) ] 1635 1636 return Factorization(factors, unit) 1637 1588 1638 1589 1639 elif is_RealField(R):
Note: See TracChangeset
for help on using the changeset viewer.
