I am writing a program to study the puiseux expansion of a curve singularity, focusing on the real branches. Doing so, i have encountered an error, that strangely appears only at some particular case. The error is triggered by something as simple as making a substitution on a polynomial. I have tried to make the same by direct evaluation and by means of a ring morphism, with the same result.
To reproduce it: R.<x,y>=QQ[] f=x^5+8*x^4-2*x^2*y^2-y^3+2*y^4 X=f.discriminant(y).univariate_polynomial().roots(AA)[1][0] Y=f(X,y).univariate_polynomial().roots(AA)[0][0] g=f(x+X,y+Y) S.<a,t>=QQbar[] p=g(t^2,a*t) res=[i[0] for i in p.polynomial(t).coefficients()[0].roots()] dic={x.change_ring(AA):x^2,y.change_ring(AA):res[0]*x+x*y} g.subs(dic) --------------------------------------------------------------------------- PariError Traceback (most recent call last) /home/mmarco/<ipython console> in <module>() /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/ polynomial/multi_polynomial_element.pyc in subs(self, fixed, **kw) 975 elif fixed and fixed.has_key(variables[i]): 976 variables[i] = fixed[variables[i]] --> 977 return self(tuple(variables)) 978 979 def monomials(self): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/ polynomial/multi_polynomial_element.pyc in __call__(self, *x, **kwds) 154 y = K(0) 155 for (m,c) in self.element().dict().iteritems(): --> 156 y += c*misc.mul([ x[i]**m[i] for i in range(n) if m[i] != 0]) 157 return y 158 /usr/local/sage/local/lib/python2.6/site-packages/sage/structure/ element.so in sage.structure.element.ModuleElement.__iadd__ (sage/ structure/element.c:8285)() /usr/local/sage/local/lib/python2.6/site-packages/sage/structure/ coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:6630)() /usr/local/sage/local/lib/python2.6/site-packages/sage/structure/ element.so in sage.structure.element.ModuleElement.__iadd__ (sage/ structure/element.c:8264)() /usr/local/sage/local/lib/python2.6/site-packages/sage/structure/ element.so in sage.structure.element.ModuleElement._add_ (sage/ structure/element.c:8117)() /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/ polynomial/multi_polynomial_element.pyc in _add_(self, right) 212 def _add_(self, right): 213 #return self.parent()(self.__element + right.__element) --> 214 return self.__class__(self.parent(),self.__element + right.__element) 215 216 def _sub_(self, right): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/ polynomial/polydict.so in sage.rings.polynomial.polydict.PolyDict.__add__ (sage/rings/polynomial/ polydict.c:7503)() /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/ polynomial/polydict.so in sage.rings.polynomial.polydict.PolyDict.__init__ (sage/rings/ polynomial/polydict.c:1781)() /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in __eq__(self, other) 3049 if self is other: return True 3050 if other._descr.is_rational() and other._descr.rational_value() == 0: -> 3051 return not self.__nonzero__() 3052 if self._descr.is_rational() and self._descr.rational_value() == 0: 3053 return not other.__nonzero__() /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in __nonzero__(self) 3081 if self._value.prec() < 128: 3082 self._more_precision() -> 3083 return self.__nonzero__() 3084 3085 # Sigh... /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in __nonzero__(self) 3084 3085 # Sigh... -> 3086 self.exactify() 3087 return self.__nonzero__() 3088 /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 2739 od = self._descr 2740 if od.is_exact(): return -> 2741 self._set_descr(self._descr.exactify()) 2742 2743 def _set_descr(self, new_descr): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 5891 left = self._left 5892 right = self._right -> 5893 left.exactify() 5894 right.exactify() 5895 gen = left._exact_field().union(right._exact_field()) /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 2739 od = self._descr 2740 if od.is_exact(): return -> 2741 self._set_descr(self._descr.exactify()) 2742 2743 def _set_descr(self, new_descr): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 5891 left = self._left 5892 right = self._right -> 5893 left.exactify() 5894 right.exactify() 5895 gen = left._exact_field().union(right._exact_field()) /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 2739 od = self._descr 2740 if od.is_exact(): return -> 2741 self._set_descr(self._descr.exactify()) 2742 2743 def _set_descr(self, new_descr): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 5891 left = self._left 5892 right = self._right -> 5893 left.exactify() 5894 right.exactify() 5895 gen = left._exact_field().union(right._exact_field()) /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 2739 od = self._descr 2740 if od.is_exact(): return -> 2741 self._set_descr(self._descr.exactify()) 2742 2743 def _set_descr(self, new_descr): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 5892 right = self._right 5893 left.exactify() -> 5894 right.exactify() 5895 gen = left._exact_field().union(right._exact_field()) 5896 left_value = gen(left._exact_value()) /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 2739 od = self._descr 2740 if od.is_exact(): return -> 2741 self._set_descr(self._descr.exactify()) 2742 2743 def _set_descr(self, new_descr): /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in exactify(self) 5166 newpol_sage_y = QQy(newpol_sage) 5167 -> 5168 red_elt, red_back, red_pol = do_polred(newpol_sage_y) 5169 5170 new_nf = NumberField(red_pol, name='a', check=False) /usr/local/sage/local/lib/python2.6/site-packages/sage/rings/qqbar.pyc in do_polred(poly) 1206 assert(best is not None) 1207 parent = poly.parent() -> 1208 rev = parent(best_elt.Mod(pari_poly).modreverse().lift()) 1209 return parent(best_elt), rev, parent(best) 1210 /usr/local/sage/local/lib/python2.6/site-packages/sage/libs/pari/ gen.so in sage.libs.pari.gen._pari_trap (sage/libs/pari/gen.c:49380)() PariError: (5) I guess it is a bug (in Pari, or in our interface?) but i know basically nothing about pari, so i wanted to ask first. Any clue? -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To post to this group, send email to sage-devel@googlegroups.com. To unsubscribe from this group, send email to sage-devel+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel?hl=en.