Karim Belabas on Thu, 20 Nov 1997 21:00:06 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
patch6 |
Yet another patch. Again a bug report by Gerhard (msg 13): > (20:27) gp > idealnorm(nf,x) > %34 = 133 > (20:28) gp > idealnorm(nf,Mod(x,nf.pol)) > *** incorrect type in gabs. That turns out to be an inocuous bug in nfbasistoalg(). When fed a t_POLMOD, it would convert it to a higher (meaningless) polmod instead of just copying it back. I added an extra consistency check as well. Karim. ============================ patch 6 (2.0.alpha) =========================== *** src/basemath/base3.c.orig Fri Nov 14 04:53:17 1997 --- src/basemath/base3.c Thu Nov 20 20:42:59 1997 *************** *** 446,451 **** --- 446,463 ---- avma=av; return v; } + /* polegal without comparing variables */ + long + polegal_spec(GEN x, GEN y) + { + long i = lgef(x); + + if (i != lgef(y)) return 0; + for (i--; i > 1; i--) + if (!gegal((GEN)x[i],(GEN)y[i])) return 0; + return 1; + } + GEN basistoalg(GEN nf, GEN x) { *************** *** 472,477 **** --- 484,493 ---- for (i=1; i<lx; i++) z[i]=(long)basistoalg(nf,(GEN)x[i]); return z; + case t_POLMOD: + if (!polegal_spec((GEN)nf[1],(GEN)x[1])) + err(talker,"not the same number field in basistoalg"); + return gcopy(x); default: z=cgetg(3,t_POLMOD); z[1]=lcopy((GEN)nf[1]); z[2]=lmul(x,polun[varn(nf[1])]); return z; } *************** *** 499,516 **** return z; } - /* polegal without comparing variables */ - long - polegal_spec(GEN x, GEN y) - { - long i = lgef(x); - - if (i != lgef(y)) return 0; - for (i--; i > 1; i--) - if (!gegal((GEN)x[i],(GEN)y[i])) return 0; - return 1; - } - GEN algtobasis(GEN nf, GEN x) { --- 515,520 ---- -- Karim Belabas e-mail: Max-Planck-Institut fuer Mathematik karim@mpim-bonn.mpg.de Gottfried-Claren-Str. 26 tel: 53225 Bonn (Germany) (00 49 228) 402-245