Peter-Lawrence . Montgomery on Mon, 9 Nov 1998 09:36:33 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
idealred returns ideal with different norm |
/* idealred is returning an ideal with different norm than its input. Is this the way it is supposed to behave? I am using PARI/GP version 2.0.11.beta on a SGI Onyx under IRIX 6.5 (both with BITS_IN_LONG = 32 and BITS_IN_LONG = 64), I have experienced many MIPS compiler bugs as I upgrade from PARI/GP 1.39, but suspect this problem is in the PARI library itself. If you have GP/PARI 2.0.11.beta on a non-MIPS system, let's hear how this behaves on your system. Peter L. Montgomery pmontgom@cwi.nl November 9, 1998 */ default(echo, 1) c5 = 200 fX = c5*X^5 + 102*X^4 + 315*X^3 - 11*X^2 - 262*X + 5 fXM = subst(fX*c5^4, X, XM/c5) /* fXM is monic in XM */ nf = nfinit(fXM); ideal2fac = idealfactor(nf, idealprincipal(nf, 2)) /* Factor ideal (2) */ fac2a = ideal2fac[1,1] fac2b = ideal2fac[2,1] fac8 = ideal2fac[3,1] /* fac2a and fac2b have norm 2. fac8 has norm 8. All have exponent 1. */ idealnorm(nf, fac2a) idealnorm(nf, fac2b) idealnorm(nf, fac8) for(k=1,20,print(k, " ", factor(idealnorm(nf, idealpow(nf,fac2a,k,1))/2^k))) for(k=1,20,print(k, " ", factor(idealnorm(nf, idealpow(nf,fac2b,k,1))/2^k))) for(k=1,20,print(k, " ", factor(idealnorm(nf, idealpow(nf,fac8, k,1))/8^k))) /* For 1 <= k <= 6, the fac2a and fac2b quotients give 1, as expected. The empty factorization primts a cryptic matrix(0,2,j,k,0). For larger k, the idealnorm factorizations are divisible by other primes, usually to the fourth power. For fac8, the mis-behavior occurs for k >= 14. */ a7unr = idealpow(nf, fac2a, 7, 0) /* Exponentiation without reduction */ factor(idealnorm(nf, a7unr)) /* Norm 2^7, as expected */ a7red = idealpow(nf, fac2a, 7, 1) /* Exponentiation with reduction */ factor(idealnorm(nf, a7red)) /* Wrong norm */ idealred(nf, a7unr) /* Same as a7red output */ default(debug,6) idealred(nf, a7unr) /* Get debug printout from idealred */ quit; /* ************* Output follows ************ GP/PARI CALCULATOR Version 2.0.11 (beta) unknown 32-bit version (readline disabled, extended help not available) Copyright (C) 1989-1998 by C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier. Send bug reports, suggestions and patches to pari@math.u-bordeaux.fr Type ? for help. realprecision = 38 significant digits seriesprecision = 16 significant terms format = g0.38 parisize = 10000000, primelimit = 500000, buffersize = 30000 echo = 1 (on) ? ? c5=200 %1 = 200 ? fX=c5*X^5+102*X^4+315*X^3-11*X^2-262*X+5 %2 = 200*X^5 + 102*X^4 + 315*X^3 - 11*X^2 - 262*X + 5 ? fXM=subst(fX*c5^4,X,XM/c5) %3 = XM^5 + 102*XM^4 + 63000*XM^3 - 440000*XM^2 - 2096000000*XM + 8000000000 ? ? nf=nfinit(fXM); ? ? ideal2fac=idealfactor(nf,idealprincipal(nf,2)) %5 = [[2, [1, 0, 1, 0, 0]~, 1, 1, [2, 2, 1, 0, 0]~] 1] [[2, [3, 1, 0, 0, 0]~, 1, 1, [2, 1, 0, 0, 0]~] 1] [[2, [0, 1, 1, 0, 0]~, 1, 3, [1, 1, 1, 0, 0]~] 1] ? ? fac2a=ideal2fac[1,1] %6 = [2, [1, 0, 1, 0, 0]~, 1, 1, [2, 2, 1, 0, 0]~] ? fac2b=ideal2fac[2,1] %7 = [2, [3, 1, 0, 0, 0]~, 1, 1, [2, 1, 0, 0, 0]~] ? fac8=ideal2fac[3,1] %8 = [2, [0, 1, 1, 0, 0]~, 1, 3, [1, 1, 1, 0, 0]~] ? ? idealnorm(nf,fac2a) %9 = 2 ? idealnorm(nf,fac2b) %10 = 2 ? idealnorm(nf,fac8) %11 = 8 ? ? for(k=1,20,print(k," ",factor(idealnorm(nf,idealpow(nf,fac2a,k,1))/2^k))) 1 matrix(0,2,j,k,0) 2 matrix(0,2,j,k,0) 3 matrix(0,2,j,k,0) 4 matrix(0,2,j,k,0) 5 matrix(0,2,j,k,0) 6 matrix(0,2,j,k,0) 7 [2, -4; 5, 4; 20543, 4] 8 [2, -4; 5, 4; 20543, 4] 9 [2, -8; 7, 4; 68447, 4] 10 [2, -8; 7, 4; 68447, 4] 11 [2, -7; 5, 4; 4224317, 4] 12 [2, -12; 5, 4; 4224317, 4] 13 [2, 11; 149, 4; 2707, 4] 14 [2, -10; 5, 4; 37, 4; 98689, 4] 15 [2, -15; 5, 4; 37, 4; 98689, 4] 16 [2, -12; 22373671, 4] 17 [2, -17; 5, 4; 2309, 4; 6037, 4] 18 [2, -18; 5, 4; 9151, 4; 9923, 4] 19 [2, -19; 59, 4; 1733, 4; 2011, 4] 20 [2, 2; 239, 4; 1901, 4] ? for(k=1,20,print(k," ",factor(idealnorm(nf,idealpow(nf,fac2b,k,1))/2^k))) 1 matrix(0,2,j,k,0) 2 matrix(0,2,j,k,0) 3 matrix(0,2,j,k,0) 4 matrix(0,2,j,k,0) 5 matrix(0,2,j,k,0) 6 matrix(0,2,j,k,0) 7 [2, -7; 1759, 4; 16141, 4] 8 [2, -5; 31843967, 4] 9 [2, -5; 31843967, 4] 10 [2, -10; 7, 4; 14772917, 4] 11 [2, -11; 227, 4; 24551, 4] 12 [2, -11; 47, 4; 377287, 4] 13 [2, -11; 47, 4; 377287, 4] 14 [2, -10; 5, 4; 47, 4; 103, 4; 673, 4] 15 [2, -7; 73, 4; 139, 4; 317, 4] 16 [2, -12; 5, 4; 23, 4; 191929, 4] 17 [2, -17; 5, 4; 23, 4; 191929, 4] 18 [2, -10; 51814799, 4] 19 [2, -15; 51814799, 4] 20 [2, -20; 51814799, 4] ? for(k=1,20,print(k," ",factor(idealnorm(nf,idealpow(nf,fac8,k,1))/8^k))) 1 matrix(0,2,j,k,0) 2 matrix(0,2,j,k,0) 3 matrix(0,2,j,k,0) 4 matrix(0,2,j,k,0) 5 matrix(0,2,j,k,0) 6 matrix(0,2,j,k,0) 7 matrix(0,2,j,k,0) 8 matrix(0,2,j,k,0) 9 matrix(0,2,j,k,0) 10 matrix(0,2,j,k,0) 11 matrix(0,2,j,k,0) 12 matrix(0,2,j,k,0) 13 matrix(0,2,j,k,0) 14 [2, -34; 13375249, 4] 15 [2, -45; 5187449, 4] 16 [2, -45; 5187449, 4] 17 [2, -51; 1949, 4; 19259, 4] 18 [2, -50; 199, 4; 14327, 4] 19 [2, -37; 1560523, 4] 20 [2, -56; 41075149, 4] ? ? ? ? ? ? ? ? ? ? ? a7unr=idealpow(nf,fac2a,7,0) %12 = [128 82 95 0 82] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0] [0 0 0 0 1] ? factor(idealnorm(nf,a7unr)) %13 = [2 7] ? a7red=idealpow(nf,fac2a,7,1) %14 = [205430 0 0 0 205386] [0 102715 0 0 102485] [0 0 102715 0 429] [0 0 0 205430 84042] [0 0 0 0 2] ? factor(idealnorm(nf,a7red)) %15 = [2 3] [5 4] [20543 4] ? ? idealred(nf,a7unr) %16 = [205430 0 0 0 205386] [0 102715 0 0 102485] [0 0 102715 0 429] [0 0 0 205430 84042] [0 0 0 0 2] ? default(debug,6) debug = 6 ? idealred(nf,a7unr) Time entering idealllred: 850 Time initialisations: 0 k = 2 K2 (0) 2 3 K3 4 K4 (0) 3 4 5 K5 (3) 4 3 2 2 3 4 5 6Time lllgram: 10 Time alpha/beta: 0 Time new ideal: 0 Time final hnf: 0 prec = [4, 16] %17 = [205430 0 0 0 205386] [0 102715 0 0 102485] [0 0 102715 0 429] [0 0 0 205430 84042] [0 0 0 0 2] ? quit; Good bye! */