=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/lib/sp,v retrieving revision 1.13 retrieving revision 1.15 diff -u -p -r1.13 -r1.15 --- OpenXM_contrib2/asir2000/lib/sp 2004/04/13 07:43:20 1.13 +++ OpenXM_contrib2/asir2000/lib/sp 2006/06/23 08:57:47 1.15 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/lib/sp,v 1.12 2004/01/07 08:23:11 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/lib/sp,v 1.14 2005/08/18 23:35:20 noro Exp $ */ /* sp : functions related to algebraic number fields @@ -659,6 +659,15 @@ def ufctrhint2(P,HINT,PP,AL) return [[P,1]]; if ( AL == [] ) return ufctrhint(P,HINT); + + /* if P != norm(PP) then call the generic ufctrhint() */ + for ( T = AL, E = 1; T != []; T = cdr(T) ) { + D = defpoly(car(T)); E *= deg(D,var(D)); + } + if ( E*deg(PP,var(PP)) != deg(P,var(P)) ) + return ufctrhint(P,HINT); + + /* P = norm(PP) */ L = resfctr(algptorat(PP),map(defpoly,AL),map(algtorat,AL),P); for ( T = reverse(L[1]), DL = []; T != []; T = cdr(T) ) DL = cons(deg(car(car(T)),a_),DL); @@ -1375,7 +1384,7 @@ def resfctr_mod(F,L,M) C = res(var(MP),B,MP) % M; R = cons(flatten(cdr(modfctr(C,M))),R); } - return R; + return reverse(R); } def flatten(L)