#14164: Error in NumberField.composite_fields()
---------------------------------+------------------------------------------
Reporter: mmarco | Owner: davidloeffler
Type: defect | Status: new
Priority: major | Milestone: sage-5.8
Component: number fields | Resolution:
Keywords: number field | Work issues:
Report Upstream: N/A | Reviewers:
Authors: | Merged in:
Dependencies: #13054 | Stopgaps:
---------------------------------+------------------------------------------
Changes (by jdemeyer):
* dependencies: => #13054
Old description:
> composite fields fails for certain values:
>
> {{{
> sage: R.<x>=QQ[]
> sage: f=6*x^5+x^4+x^2+5*x+7
> sage: r=f.roots(QQbar,multiplicities=False)
> sage: F1=NumberField(f.monic(),'a',embedding=r[0])
> sage: F2=NumberField(f.monic(),'a',embedding=r[1])
> sage: F1.composite_fields(F2,both_maps=True)
> ---------------------------------------------------------------------------
> PariError Traceback (most recent call
> last)
>
> /home/mmarco/sage-5.7/<ipython console> in <module>()
>
> /usr/lib64/python2.7/site-
> packages/sage/rings/number_field/number_field.pyc in
> composite_fields(self, other, names, both_maps, preserve_embedding)
> 3788 if subfields_have_embeddings:
> 3789 embedding = other.coerce_embedding()(b) +
> k*self.coerce_embedding()(a)
> -> 3790 F = NumberField(r, names[i], check=False,
> embedding=embedding)
> 3791 i += 1
> 3792 if both_maps:
>
> /usr/lib64/python2.7/site-
> packages/sage/rings/number_field/number_field.pyc in
> NumberField(polynomial, name, check, names, cache, embedding, latex_name,
> assume_disc_small, maximize_at_primes)
> 459 else:
> 460 K = NumberField_absolute(polynomial, name, latex_name,
> check, embedding,
> --> 461 assume_disc_small=assume_disc_small,
> maximize_at_primes=maximize_at_primes)
> 462
> 463 if cache:
>
> /usr/lib64/python2.7/site-
> packages/sage/rings/number_field/number_field.pyc in __init__(self,
> polynomial, name, latex_name, check, embedding, assume_disc_small,
> maximize_at_primes)
> 5449 """
> 5450 NumberField_generic.__init__(self, polynomial, name,
> latex_name, check, embedding,
> -> 5451
> assume_disc_small=assume_disc_small,
> maximize_at_primes=maximize_at_primes)
> 5452 self._element_class =
> number_field_element.NumberFieldElement_absolute
> 5453 self._zero_element = self(0)
>
> /usr/lib64/python2.7/site-
> packages/sage/rings/number_field/number_field.pyc in __init__(self,
> polynomial, name, latex_name, check, embedding, category,
> assume_disc_small, maximize_at_primes)
> 1022 self.__pari_bnf_certified = False
> 1023 self._integral_basis_dict = {}
> -> 1024 embedding =
> number_field_morphisms.create_embedding_from_approx(self, embedding)
> 1025 self._populate_coercion_lists_(embedding=embedding)
> 1026
>
> /usr/lib64/python2.7/site-
> packages/sage/rings/number_field/number_field_morphisms.so in
> sage.rings.number_field.number_field_morphisms.create_embedding_from_approx
> (sage/rings/number_field/number_field_morphisms.c:5021)()
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in __ne__(self,
> other)
> 3803 True
> 3804 """
> -> 3805 return not self.__eq__(other)
> 3806
> 3807 def __nonzero__(self):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in __eq__(self,
> other)
> 3778 try:
> 3779 self, other = canonical_coercion(self, other)
> -> 3780 return self == other
> 3781 except TypeError:
> 3782 return False
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in __eq__(self,
> other)
> 3783 if self is other: return True
> 3784 if other._descr.is_rational() and
> other._descr.rational_value() == 0:
> -> 3785 return not self.__nonzero__()
> 3786 if self._descr.is_rational() and
> self._descr.rational_value() == 0:
> 3787 return not other.__nonzero__()
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in
> __nonzero__(self)
> 3829 if self._value.prec() < 128:
> 3830 self._more_precision()
> -> 3831 return self.__nonzero__()
> 3832
> 3833 # Sigh...
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in
> __nonzero__(self)
> 3832
> 3833 # Sigh...
> -> 3834 self.exactify()
> 3835 return self.__nonzero__()
> 3836
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7589 left = self._left
> 7590 right = self._right
> -> 7591 left.exactify()
> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7590 right = self._right
> 7591 left.exactify()
> -> 7592 right.exactify()
> 7593 gen = left._exact_field().union(right._exact_field())
> 7594 left_value = gen(left._exact_value())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 3464 od = self._descr
> 3465 if od.is_exact(): return
> -> 3466 self._set_descr(self._descr.exactify())
> 3467
> 3468 def _set_descr(self, new_descr):
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
> 7591 left.exactify()
> 7592 right.exactify()
> -> 7593 gen = left._exact_field().union(right._exact_field())
> 7594 left_value = gen(left._exact_value())
> 7595 right_value = gen(right._exact_value())
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in union(self,
> other)
> 2280 newpol_sage_y = QQy(newpol_sage)
> 2281
> -> 2282 red_elt, red_back, red_pol = do_polred(newpol_sage_y)
> 2283
> 2284 red_back_x = QQx(red_back)
>
> /usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in
> do_polred(poly)
> 1561 assert(best is not None)
> 1562 parent = poly.parent()
> -> 1563 rev = parent(best_elt.Mod(pari_poly).modreverse().lift())
> 1564 return parent(best_elt), rev, parent(best)
> 1565
>
> /usr/lib64/python2.7/site-packages/sage/libs/pari/gen.so in
> sage.libs.pari.gen._pari_trap (sage/libs/pari/gen.c:55006)()
>
> PariError: (5)
> }}}
New description:
composite fields fails for certain values:
{{{
sage: R.<x>=QQ[]
sage: f=6*x^5+x^4+x^2+5*x+7
sage: r=f.roots(QQbar,multiplicities=False)
sage: F1=NumberField(f.monic(),'a',embedding=r[0])
sage: F2=NumberField(f.monic(),'a',embedding=r[1])
sage: F1.composite_fields(F2,both_maps=True)
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
<ipython-input-6-dacb8cbc99b0> in <module>()
----> 1 F1.composite_fields(F2,both_maps=True)
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/rings/number_field/number_field.pyc in
composite_fields(self, other, names, both_maps, preserve_embedding)
3805 i -= 1
3806 else:
-> 3807 self_to_F = self.hom([F(a_in_F)])
3808 other_to_F = other.hom([F(b_in_F)])
3809 else:
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__
(sage/structure/parent.c:7415)()
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/structure/coerce_maps.so in
sage.structure.coerce_maps.DefaultConvertMap_unique._call_
(sage/structure/coerce_maps.c:3583)()
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/structure/coerce_maps.so in
sage.structure.coerce_maps.DefaultConvertMap_unique._call_
(sage/structure/coerce_maps.c:3485)()
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/rings/number_field/number_field.pyc in
_element_constructor_(self, x)
1229 result += x[i]*self.gen(0)**i
1230 return result
-> 1231 return self._coerce_non_number_field_element_in(x)
1232
1233 def _coerce_from_str(self, x):
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/rings/number_field/number_field.pyc in
_coerce_non_number_field_element_in(self, x)
5732 integer.Integer, pari_gen,
5733 list)):
-> 5734 return self._element_class(self, x)
5735
5736 if isinstance(x,
sage.rings.polynomial.polynomial_quotient_ring_element.PolynomialQuotientRingElement)\
/usr/local/src/sage-5.7.beta1/local/lib/python2.7/site-
packages/sage/rings/number_field/number_field_element.so in
sage.rings.number_field.number_field_element.NumberFieldElement.__init__
(sage/rings/number_field/number_field_element.cpp:6018)()
TypeError: Coercion of PARI polmod with modulus 10077696*x^20 -
6718464*x^19 - 559872*x^18 - 56173824*x^17 + 728401248*x^16 -
2136243456*x^15 + 1038731904*x^14 - 3715874496*x^13 + 21591002400*x^12 -
63829125504*x^11 + 414323181024*x^10 - 242460667872*x^9 + 573731183904*x^8
- 1417417413120*x^7 - 5375183629440*x^6 + 23136669276768*x^5 +
9900813726912*x^4 - 70740914752800*x^3 + 237933452109888*x^2 -
479963026372896*x + 500774065215360 into number field with defining
polynomial 104976*x^20 - 69984*x^19 - 5832*x^18 - 585144*x^17 +
7587513*x^16 - 22252536*x^15 + 10820124*x^14 - 38707026*x^13 +
224906275*x^12 - 664886724*x^11 + 4315866469*x^10 - 2525631957*x^9 +
5976366499*x^8 - 14764764720*x^7 - 55991496140*x^6 + 241006971633*x^5 +
103133476322*x^4 - 736884528675*x^3 + 2478473459478*x^2 - 4999614858051*x
+ 5216396512660 failed
}}}
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14164#comment:2>
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 unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.