Karim.Belabas on Tue, 29 May 2001 14:56:06 +0200 (MET DST)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Patch: memory bug in `factor' interface to polroots


I have received the following bug report [from XIAO Gang], affecting (at
least) stable versions 2.1.0 and 2.1.1.

> Problem: factorization of polynomials with complex coefficients can no
> longuer be done.
> 
> ? factor(x^4-2.0*I)
>   ***   significant pointers are lost in gerepile !!! (please report)
> ? factor(x^2+1.0*I)
>   ***   lbot>ltop in gerepile.

Here is the corresponding patch:

*** src/basemath/polarit2.c	2001/03/26 11:56:37	1.42.2.2
--- src/basemath/polarit2.c	2001/05/29 12:47:28
***************
*** 1656,1662 ****
  	case t_INTMOD: return factmod(x,p);
  
  	case t_COMPLEX: y=cgetg(3,t_MAT); lx=lgef(x)-2; v=varn(x);
! 	  p1=roots(x,pa); tetpil=avma;
            p2=cgetg(lx,t_COL);
  	  for (i=1; i<lx; i++)
              p2[i] = (long)poldeg1(v, gneg((GEN)p1[i]), gun);
--- 1656,1662 ----
  	case t_INTMOD: return factmod(x,p);
  
  	case t_COMPLEX: y=cgetg(3,t_MAT); lx=lgef(x)-2; v=varn(x);
! 	  av = avma; p1=roots(x,pa); tetpil=avma;
            p2=cgetg(lx,t_COL);
  	  for (i=1; i<lx; i++)
              p2[i] = (long)poldeg1(v, gneg((GEN)p1[i]), gun);

    Karim.

-- 
Karim Belabas                    email: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud             Tel: (00 33) 1 69 15 57 48
F-91405 Orsay (France)           Fax: (00 33) 1 69 15 60 19
--
PARI/GP Home Page: http://www.parigp-home.de/