? test(2,20)
[a^2 + a + 1, a^19 + a^18 + a^17 + a^15 + a^14 + a^13 + a^12 + a^8 + a^7 + a
^6 + a^4 + a^2 + 1, 0, a + 1, 0, 0, 0, 0, a^19 + a^16 + a^15 + a^11 + a^8 + 
a^5 + a^4 + a^3 + a^2 + a, a, a^2, a^12 + a^9 + a^6 + a^4 + a^3 + a^2 + a, a
^18 + a^17 + a^16 + a^14 + a^13 + a^12 + a^11 + a^10 + a^9 + a^8 + a^7 + a^4
 + a^3 + a^2 + 1, a^18 + a^17 + a^16 + a^14 + a^13 + a^12 + a^11 + a^10 + a^
9 + a^8 + a^7 + a^4 + a^3 + a^2 + 1, a^16 + a^12 + a^9 + a^6 + a^4 + a^3 + a
^2 + a + 1, 0, Mod(1, 2), Mod(0, 2), Mod(1, 2)*x^20 + Mod(1, 2)*x^17 + Mod(1
, 2)*x^16 + Mod(1, 2)*x^12 + Mod(1, 2)*x^9 + Mod(1, 2)*x^6 + Mod(1, 2)*x^5 +
 Mod(1, 2)*x^4 + Mod(1, 2)*x^3 + Mod(1, 2)*x^2 + Mod(1, 2), Mod(1, 2)*x^20 +
 Mod(1, 2)*x^17 + Mod(1, 2)*x^16 + Mod(1, 2)*x^12 + Mod(1, 2)*x^9 + Mod(1, 2
)*x^6 + Mod(1, 2)*x^5 + Mod(1, 2)*x^4 + Mod(1, 2)*x^3 + Mod(1, 2)*x^2 + Mod(
1, 2), [a, a^2, a^4, a^8, a^16, a^16 + a^12 + a^9 + a^6 + a^4 + a^3 + a^2, a
^16 + a^12 + a^9 + a^6 + a^4 + a^3 + a + 1, a^16 + a^12 + a^9 + a^6 + a^3 + 
a^2 + a, a^16 + a^12 + a^9 + a^8 + a^6 + a^4 + a^3 + a^2 + a + 1, a^12 + a^9
 + a^6 + a^4 + a^3 + a^2 + a, a + 1, a^2 + 1, a^4 + 1, a^8 + 1, a^16 + 1, a^
16 + a^12 + a^9 + a^6 + a^4 + a^3 + a^2 + 1, a^16 + a^12 + a^9 + a^6 + a^4 +
 a^3 + a, a^16 + a^12 + a^9 + a^6 + a^3 + a^2 + a + 1, a^16 + a^12 + a^9 + a
^8 + a^6 + a^4 + a^3 + a^2 + a]~, [x^3 + (a^17 + a^16 + a^10 + a^7 + a^3), 1
; x^3 + (a^17 + a^16 + a^10 + a^7 + a^3 + a), 1], [], a/x, 1, a^18 + a^16 + 
a^14 + a^13 + a^12 + a^11 + a^9 + a^8 + a^7 + a^3 + a^2 + a + 1, 1048575, a,
 [x + (a^18 + a^16 + a^13 + a^9 + a^8 + a^7 + a^6 + a^4 + a^2 + a), 1; x + (
a^18 + a^16 + a^13 + a^9 + a^8 + a^7 + a^6 + a^4 + a^2 + a + 1), 1], [a^18 +
 a^16 + a^13 + a^9 + a^8 + a^7 + a^6 + a^4 + a^2 + a, a^18 + a^16 + a^13 + a
^9 + a^8 + a^7 + a^6 + a^4 + a^2 + a + 1]~]
? test(7,7)
[a^2 + 3*a + 1, a^6 + 2*a^4 + 5*a^3 + 2*a^2 + 5*a + 1, 3*a + 3, a + 3, 5*a^6
 + 3*a^4 + 4*a^3 + 3*a^2 + 4*a, 2*a + 2, 2*a + 2, 4*a + 4, 6*a^6 + 6*a^5 + 5
*a^4 + 2, 6*a, a^2, 3*a^6 + 5*a^5 + 3*a^3 + a^2 + 2*a + 6, 4*a^2 + 4*a + 4, 
4*a^2 + 4*a + 4, 4, 3*a^6 + 3*a^5 + 5*a^4 + 2*a^3 + 3*a^2 + a + 4, Mod(1, 7)
, Mod(6, 7), Mod(1, 7)*x^7 + Mod(1, 7)*x^6 + Mod(2, 7)*x^5 + Mod(5, 7)*x + M
od(1, 7), Mod(1, 7)*x^7 + Mod(1, 7)*x^6 + Mod(2, 7)*x^5 + Mod(5, 7)*x + Mod(
1, 7), [a, 6*a^6 + 5*a^5 + 2*a + 6, 5*a^6 + 6*a^5 + 2*a^3 + 4*a^2 + 3*a + 5,
 3*a^6 + 5*a^2 + 5, 6*a^6 + 2*a^5 + 5*a^4 + 5*a^3 + 5*a^2 + a + 5, 2*a^6 + 5
*a^2 + 6, 6*a^6 + a^5 + 2*a^4 + 2*a^2]~, [x^2 + (a^6 + 6*a^5 + 4*a^4 + 5*a^3
 + 4)*x + 4, 1; x^2 + (2*a^6 + 5*a^5 + a^4 + 3*a^3 + 1)*x + 2, 1; x^2 + (4*a
^6 + 3*a^5 + 2*a^4 + 6*a^3 + 2)*x + 1, 1], [0, 0, 0, a, 1, 0, 2*a, 4, 6*a^2,
 a, 4, 6*a^3 + 2, a^6 + 4*a^5 + 4*a^4 + 6*a^2 + a + 4, Vecsmall([4]), [a, [V
ecsmall([140737488355328, 0, 1]), Vecsmall([140737488355328, 1]), [Vecsmall(
[140737488355328, 6]), Vecsmall([140737488355328]), Vecsmall([14073748835532
8]), Vecsmall([140737488355328])]]], [0, 0, 0, 0]], a/x, (x + a)/(x + 6*a), 
4*a^6 + 4*a^5 + 2*a^4 + 3*a^3 + a^2 + a + 6, 274514, a, [x + (2*a^6 + 6*a^5 
+ 5*a^2 + 2*a + 1), 1; x + (5*a^6 + a^5 + 2*a^2 + 5*a), 1], [2*a^6 + 6*a^5 +
 5*a^2 + 2*a, 5*a^6 + a^5 + 2*a^2 + 5*a + 6]~]
? test(precprime(2^32),3)
[a^2 + 3*a + 1, 3435973833*a^2 + 3435973833, 2863311528*a + 2863311528, a + 
3435973833, 3579139409*a^2 + 2863311528, 3579139410*a + 3579139410, 1024*a +
 1024, 859832319*a + 859832319, 4294967290*a^2 + 4294967290*a + 4, 429496729
0*a, a^2, 3885163399*a^2 + 2553150559*a + 523234686, a^2 + a + 1, a^2 + a + 
1, 1, 4264202413*a^2 + 356078407*a + 3929909005, Mod(25, 4294967291), Mod(42
94967290, 4294967291), Mod(1, 4294967291)*x^3 + Mod(1, 4294967291)*x^2 + Mod
(4294967287, 4294967291)*x + Mod(1, 4294967291), Mod(1, 4294967291)*x^3 + Mo
d(1, 4294967291)*x^2 + Mod(4294967287, 4294967291)*x + Mod(1, 4294967291), [
a, a^2 + a + 4294967288, 4294967290*a^2 + 4294967289*a + 2]~, [x + (34444702
3*a^2 + 1616586690*a + 252460086), 1; x + (3340051543*a^2 + 1627577691*a + 2
021233148), 1; x^2 + (954915748*a^2 + 2667389600*a + 2273734143)*x + (816322
992*a^2 + 830924795*a + 1995175223), 1; x^2 + (3950520268*a^2 + 2678380601*a
 + 4042507205)*x + (1642837480*a^2 + 2548350348*a + 1670376662), 1], [0, 0, 
0, a, 1, 0, 2*a, 4, 4294967290*a^2, 4294967243*a, 4294966427, 64*a^2 + 42949
67035*a + 4294966923, 3618892287*a^2 + 1482857269*a + 1021597254, Vecsmall([
4]), [a, [Vecsmall([140737488355328, 0, 1296]), Vecsmall([140737488355328, 4
6656]), [Vecsmall([140737488355328, 6]), Vecsmall([140737488355328]), Vecsma
ll([140737488355328]), Vecsmall([140737488355328])]]], [0, 0, 0, 0]], a/x, (
x + a)/(x + 4294967290*a), 4020082597*a^2 + 70712658*a + 4018965070, 3689348
8070109691946, a, [x + (1365670490*a^2 + 3373566631*a + 4083593885), 1; x + 
(2929296801*a^2 + 921400660*a + 211373407), 1], [1365670490*a^2 + 3373566631
*a + 4083593884, 2929296801*a^2 + 921400660*a + 211373406]~]
? test(nextprime(2^32),3)
[a^2 + 3*a + 1, a^2 + 4294967310, 1431655771*a + 1431655771, a + 3435973849,
 3579139425*a^2 + 1431655772, 715827886*a + 715827886, 1024*a + 1024, 114504
4996*a + 1145044996, a^2 + a + 4294967309, 4294967310*a, a^2, 264190711*a^2 
+ 2629464558*a + 2494776416, 2086193154*a^2 + 2086193154*a + 2086193154, 220
8774156*a^2 + 2208774156*a + 2208774156, 2086193154, 996804783*a^2 + 2908221
018*a + 1206110100, Mod(13, 4294967311), Mod(4294967310, 4294967311), Mod(1,
 4294967311)*x^3 + Mod(1, 4294967311)*x^2 + Mod(4294967309, 4294967311)*x + 
Mod(4294967310, 4294967311), Mod(1, 4294967311)*x^3 + Mod(1, 4294967311)*x^2
 + Mod(4294967309, 4294967311)*x + Mod(4294967310, 4294967311), [a, a^2 + 42
94967309, 4294967310*a^2 + 4294967310*a + 1]~, [x^2 + (2086193155*a^2 + 1225
81001)*x + 2086193154, 1; x^2 + (2208774157*a^2 + 4172386308)*x + 2208774156
, 1; x^2 + (4294967310*a^2 + 2)*x + 1, 1], [0, 0, 0, a, 1, 0, 2*a, 4, 429496
7310*a^2, 4294967263*a, 4294966447, 64*a^2 + 4294967183*a + 4294966815, 1484
088443*a^2 + 1141114953*a + 4283364322, Vecsmall([4]), [a, [Vecsmall([140737
488355328, 0, 1296]), Vecsmall([140737488355328, 46656]), [Vecsmall([1407374
88355328, 6]), Vecsmall([140737488355328]), Vecsmall([140737488355328]), Vec
small([140737488355328])]]], [0, 0, 0, 0]], a/x, (x + a)/(x + 4294967310*a),
 4204026293*a^2 + 2068287144*a + 232863018, 6148914735617846011, a, [x + (26
8392743*a^2 + 2459390605*a + 1304316255), 1; x + (4026574568*a^2 + 183557670
6*a + 2990651057), 1], [268392743*a^2 + 2459390605*a + 1304316254, 402657456
8*a^2 + 1835576706*a + 2990651056]~]
? test2(p)=ffgen(x*Mod(1,p));g=ffprimroot(ffgen((x+1)*Mod(1,p)),&o);print([g,o]);fflog(g^17,g,o);
? test2(2)
[1, [1, matrix(0,2)]]
0
? test2(3)
[2, [2, Mat([2, 1])]]
1
? test2(46744073709551653)
[2, [46744073709551652, [2, 2; 3, 1; 7, 1; 37, 1; 1036513, 1; 14510113, 1]]]
[]
? test2(precprime(1<<32))
[2, [4294967290, [2, 1; 5, 1; 19, 1; 22605091, 1]]]
17
? for(i=1,10,print(ffnbirred(11,i)));
11
55
440
3630
32208
295020
2783880
26793030
261994040
2593726344
? for(i=1,10,print(ffnbirred(11,i,1)));
11
66
506
4136
36344
331364
3115244
29908274
291902314
2885628658
? do(f,p,T)=centerlift(lift(polrootsff(f,p,T)));
? do(x^3+x^2+x-1,3,t^3+t^2+t-1)
[t, t^2 + 1, -t^2 - t + 1]~
? t=ffgen(3^3,'t);do((x^3+x^2+x-1)*t^0,t.p,t.mod)
[t, t^2 + 1, -t^2 - t + 1]~
? polrootsff(x^4+1,2,y^2+y+1)
[Mod(Mod(1, 2), Mod(1, 2)*y^2 + Mod(1, 2)*y + Mod(1, 2))]~
? t=ffgen(7^4);fflog(t^6,t^2)
3
? t=ffgen(2^64)^((2^64-1)\5);1/t
x^58 + x^57 + x^56 + x^52 + x^51 + x^49 + x^46 + x^45 + x^42 + x^39 + x^36 +
 x^35 + x^32 + x^30 + x^29 + x^25 + x^23 + x^22 + x^21 + x^20 + x^19 + x^12 
+ x^8 + x^7 + x^6 + x^2
? t=ffgen(('t^2+'t+1)*Mod(1,2));
? factorff(x^12+t*x^10+x^6+(t+1)*x^2+1)

[x + 1 6]

[x + t 6]

? polrootsff(x^2-x-ffgen((v^2+1)*Mod(1,3)))
[]~
? polrootsff(2*x+1,2,y)
[]~
? sqrt(Mod(-1,4296540161))
Mod(1086811600, 4296540161)
? sqrt(Mod(-1,18446744073944432641))
Mod(6687681666819568403, 18446744073944432641)
? centerlift(factorcantor(prod(i=-10,10,(x^2-i)),2^64+13)[,1])
[x, x + 1, x + 2, x + 3, x + 248527397336721375, x + 2370518075556110396, x 
+ 2888582621843189425, x + 4741036151112220792, x + 5193293969518580612, x +
 6494187761904104278, x + 7111554226668331188, x + 7312212166335540022, x + 
7562574061564804959, x - 7562574061564804959, x - 7312212166335540022, x - 7
111554226668331188, x - 6494187761904104278, x - 5193293969518580612, x - 47
41036151112220792, x - 2888582621843189425, x - 2370518075556110396, x - 248
527397336721375, x - 3, x - 2, x - 1, x^2 + 2, x^2 + 3, x^2 + 8, x^2 + 10, x
^2 - 10, x^2 - 8, x^2 - 3, x^2 - 2]~
? #polrootsff(x^107+2*x^3+1,3,ffinit(3,107,'a))
107
? t=ffprimroot(ffgen(2^61));fflog(t^1234567891012345678,t)
1234567891012345678
? t=ffprimroot(ffgen(3^23));fflog(t^12345678910,t)
12345678910
? t=ffprimroot(ffgen(5^23));fflog(t^1234567891012345,t)
1234567891012345
? t=ffprimroot(ffgen(5^17));fflog(t^123456789101,t)
123456789101
? ffgen(x^2+x+Mod(1,3))
  ***   at top-level: ffgen(x^2+x+Mod(1,3)
  ***                 ^--------------------
  *** ffgen: not an irreducible polynomial in ffgen: x^2 + x + 1.
? conjvec(Mod(x,x^2+Mod(1,3)))
[Mod(Mod(1, 3)*x, Mod(1, 3)*x^2 + Mod(1, 3)), Mod(Mod(2, 3)*x, Mod(1, 3)*x^2
 + Mod(1, 3))]~
? t=ffgen(5^4,'t);
? factor((x^24-1)*t^0)

[                x + 1 1]

[                x + 2 1]

[                x + 3 1]

[                x + 4 1]

[      x + (t^3 + 4*t) 1]

[  x + (t^3 + 4*t + 1) 1]

[  x + (t^3 + 4*t + 2) 1]

[  x + (t^3 + 4*t + 3) 1]

[  x + (t^3 + 4*t + 4) 1]

[    x + (2*t^3 + 3*t) 1]

[x + (2*t^3 + 3*t + 1) 1]

[x + (2*t^3 + 3*t + 2) 1]

[x + (2*t^3 + 3*t + 3) 1]

[x + (2*t^3 + 3*t + 4) 1]

[    x + (3*t^3 + 2*t) 1]

[x + (3*t^3 + 2*t + 1) 1]

[x + (3*t^3 + 2*t + 2) 1]

[x + (3*t^3 + 2*t + 3) 1]

[x + (3*t^3 + 2*t + 4) 1]

[      x + (4*t^3 + t) 1]

[  x + (4*t^3 + t + 1) 1]

[  x + (4*t^3 + t + 2) 1]

[  x + (4*t^3 + t + 3) 1]

[  x + (4*t^3 + t + 4) 1]

? factorff(Pol(0),t.p,t.mod)

[0 1]

? factorff(Pol(1),t.p,t.mod)
[;]
? factorff(x^4-t,t.p,t.mod)

[Mod(Mod(1, 5), Mod(1, 5)*t^4 + Mod(1, 5)*t^3 + Mod(2, 5)*t^2 + Mod(1, 5)*t 
+ Mod(3, 5))*x^4 + Mod(Mod(0, 5), Mod(1, 5)*t^4 + Mod(1, 5)*t^3 + Mod(2, 5)*
t^2 + Mod(1, 5)*t + Mod(3, 5))*x^3 + Mod(Mod(0, 5), Mod(1, 5)*t^4 + Mod(1, 5
)*t^3 + Mod(2, 5)*t^2 + Mod(1, 5)*t + Mod(3, 5))*x^2 + Mod(Mod(0, 5), Mod(1,
 5)*t^4 + Mod(1, 5)*t^3 + Mod(2, 5)*t^2 + Mod(1, 5)*t + Mod(3, 5))*x + Mod(M
od(4, 5)*t, Mod(1, 5)*t^4 + Mod(1, 5)*t^3 + Mod(2, 5)*t^2 + Mod(1, 5)*t + Mo
d(3, 5)) 1]

? test(q)=my(t=ffgen(q,'t),m=[t,t^2,1+t^3;1+t,1+t^2,1+t^3]);print(matker(m));print(matimage(m));print(matrank(m));my(M=[t,2*t^0,3*t^0;t,t^2,1+t^3;1+t,1+t^2,1+t^3]);print(matdet(M));print(M^(-1)*M);my(v=[t^0,t^1,t^2]~);print(M*v);
? test(2^5)
[t^4 + t^3; t^4 + t^3; 1]
[t, t^2; t + 1, t^2 + 1]
2
t^4 + t^2
[1, 0, 0; 0, 1, 0; 0, 0, 1]
[t^2 + t, t^4 + t^3 + 1, t^4 + t^3 + t]~
? test(7^5)
[3*t^4 + 5*t^3 + 6*t^2 + 2*t; 4*t^4 + 2*t^3 + t^2 + 5*t; 1]
[t, t^2; t + 1, t^2 + 1]
2
6*t^4 + 2*t^3 + 4*t^2 + 2*t + 2
[1, 0, 0; 0, 1, 0; 0, 0, 1]
[3*t^2 + 3*t, 6*t^4 + 5*t^3 + 4*t^2 + 5*t + 6, 6*t^4 + 5*t^3 + 4*t^2 + 6*t]~
? test((2^64+13)^5)
[3*t^4 + 5*t^3 + 18446744073709551621*t^2 + 18446744073709551617*t; 18446744
073709551626*t^4 + 18446744073709551624*t^3 + 8*t^2 + 12*t; 1]
[t, t^2; t + 1, t^2 + 1]
2
18446744073709551628*t^4 + 2*t^3 + 18446744073709551626*t^2 + 2*t + 2
[1, 0, 0; 0, 1, 0; 0, 0, 1]
[3*t^2 + 3*t, 18446744073709551628*t^4 + 5*t^3 + 4*t^2 + 1844674407370955162
7*t + 18446744073709551628, 18446744073709551628*t^4 + 5*t^3 + 4*t^2 + 18446
744073709551628*t]~
? p=2^64+13;g=ffprimroot(ffgen(p^2),&o);a=2*g^0;
? v=[I,-1,Mat(1),matid(2)/2];
? for(i=1,#v,print(iferr(fflog(a,g,v[i]),E,E)));
error("incorrect type in generic discrete logarithm (order factorization) (t
_COMPLEX).")
error("incorrect type in generic discrete logarithm (order factorization) (t
_INT).")
error("incorrect type in factorback [not a factorization] (t_MAT).")
error("incorrect type in factorback [not an exponent vector] (t_COL).")
? g^fflog(a,g,o)==a
1
? print("Total time spent: ",gettime);
Total time spent: 1536
