#13652: Error in pari when dealing with algebraic numbers
-----------------------------+----------------------------------------------
Reporter: mmarco | Owner: davidloeffler
Type: defect | Status: new
Priority: major | Milestone: sage-5.5
Component: number fields | Keywords: pari, QQbar, algebraic
numbers
Work issues: | Report Upstream: N/A
Reviewers: | Authors: mmarco
Merged in: | Dependencies:
Stopgaps: |
-----------------------------+----------------------------------------------
When doing some computations with algebraic numbers, a pari error appears.
Example:
{{{
sage: R.<x>=QQbar[]
sage: f=x^7-x^3+5*x^2+1
sage: rot=[a[0] for a in f.roots()]
sage: g=(rot[5]-1)*x^5+(rot[3]*rot[1]/rot[2]-7/19)*x^3+x^2-12
sage: g.roots()
[(-1.649909503989884? + 0.4886425174359812?*I, 1), (-1.199661475182448? -
1.295842128063049?*I, 1), (0.0801663732009155? + 1.775631861665457?*I, 1),
(1.088620639516355? - 1.373857910797616?*I, 1), (1.680783966455062? +
0.4054256597592278?*I, 1)]
sage: g.roots()[0][0].exactify()
---------------------------------------------------------------------------
PariError Traceback (most recent call
last)
/home/mmarco/<ipython console> in <module>()
/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)
6449 x^8 - 5/4*x^4 + 5/16
6450 """
-> 6451 gen = self._poly.generator()
6452
6453 if gen.is_trivial():
/usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in generator(self)
5864 Number Field in a with defining polynomial y^4 - 4*y^2
+ 1 with a in 1.931851652578137?
5865 """
-> 5866 self.exactify()
5867 return self._gen
5868
/usr/lib64/python2.7/site-packages/sage/rings/qqbar.pyc in exactify(self)
5822
5823 for c in self._poly.list():
-> 5824 c.exactify()
5825 gen = gen.union(c._exact_field())
5826
/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)
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)
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)
7324
7325 if op == '-':
-> 7326 arg.exactify()
7327 return arg._descr.neg(None)
7328
/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)
7324
7325 if op == '-':
-> 7326 arg.exactify()
7327 return arg._descr.neg(None)
7328
/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)
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)
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:54863)()
PariError: (5)
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13652>
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.