Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
charpoly([x,x+1;1,2],y,0) charpoly([x,x+1;1,2],y,1) charpoly([x,x+1;1,2],y,2) charpoly([x,x+1;1,2],y,3) charpoly([0,0,2,2;0,0,2,2;2,2,0,0;2,2,0,0]) charpoly([0,0,2,2;0,0,2,2;2,2,0,0;2,2,0,0],,4) minpoly(matrix(4,4,i,j,i/j)) default(realprecision,38); A=[5/3,7/45;0,21/10]; mateigen(A) mateigen(A*1.) mateigen(A,1) merror=[224,221,13,2;201,199,12,2;100,99,6,1;85,84,5,1]; [D,M]=mateigen(merror,1); D exponent(merror*M - M*matdiagonal(D)) M=[x,x+y;x+1,1];charpoly(M,w) v=[1,1.,Mod(1,3),1/2,1+O(3),I,quadgen(5),matid(2)*Mod(1,3),matid(2)*Mod(1,2^64+13)]; for(i=1,#v,print(charpoly(v[i]))) { \\ #2010 g(s2,s3)=s6=s2*s3;[2,0,0,-s6+3,2*s3-3*s2,3*s3-3*s2; 0,-2,0,s3-s2,-s6+2,-s6+3; 0,0,-1,s3-2*s2,-s6+1,-s6+3; 0,0,s3,2*s6-6,-5*s3+6*s2,-6*s3+7*s2; -2*s3,2,-s6+5,-7*s3+10*s2,8*s6-21,9*s6-27; 2*s3,-2,s6-5,8*s3-11*s2,-9*s6+23,-10*s6+30]/2; } exponent(charpoly(g(sqrt(2),sqrt(3))) - (x^6-x^5-3*x^4-3*x^3-3*x^2-x+1)) < -120 centerlift(charpoly(g(sqrt(2+O(23^10)), sqrt(3+O(23^10))))) charpoly(matid(4),,0) charpoly(matid(4),,3) charpoly(matid(4)*(2^64+13)) m=[1,2,3,4;5,6,7,8;9,10,11,12;1,5,7,11]; charpoly(m*Mod(1,3)) charpoly(m*Mod(1,2^64+13)) matadjoint(matid(2),1) matadjoint([;]) matadjoint(Mat(1)) matadjoint([x,0,0;0,0,0;0,0,0]) matadjoint([Mod(1,2)*x,0,0;0,0,0;0,0,0]) charpoly(x*matid(3)) minpoly(Mod(x+1,x^4+1)) minpoly(Mod(x,x^2)) minpoly(Mod(1,x^2+x+1)) minpoly(Mod(1,x^24+1)) minpoly(Mod(1,x^2)) test(p)= { my(P,Q); P=random(x^10*'b^10*Mod(1,p))*Mod(1,ffinit(p,10,'b)); Q=random(x^10*'b^10*Mod(1,p))*Mod(1,ffinit(p,10,'b)); my(z=Mod(P,Q)); if(subst(minpoly(z),x,z)!=0,error(z)); if(subst(charpoly(z),x,z)!=0,error(z)); } test(5); test(nextprime(2^40)); test(nextprime(2^100)); a=[1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;-1,-1,-1,4,0,0,0,0,-1,0,0,0,0,0,0,0,0;0,0,0,0,1,0,0,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,1,0,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,-1,-1,-1,4,-1,0,0,0,0,0,0,0,0;0,0,0,-1,0,0,0,-1,4,-1,-1,0,0,0,0,0,0;0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,-1,0,4,-1,-1,-1,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,0,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,0,0,3,-1,0,-1;0,0,0,0,0,0,0,0,0,0,0,0,0,-1,3,-2,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,2,0;0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1]; mateigen(a); mateigen([;]) mateigen([;],1) mateigen(Mat(1)) mateigen(Mat(1),1) t=sqrt(5); M=[1,-1,0,0,0,0,0;-1,1,0,0,0,0,0;0,0,1,(t-1)/4,(-t-1)/4,(-t-1)/4,(t-1)/4;0,0,(t-1)/4,1,(t-1)/4,(-t-1)/4,(-t-1)/4;0,0,(-t-1)/4,(t-1)/4,1,(t-1)/4,(-t-1)/4;0,0,(-t-1)/4,(-t-1)/4,(t-1)/4,1,(t-1)/4;0,0,(t-1)/4,(-t-1)/4,(-t-1)/4,(t-1)/4,1]; mateigen(M) mateigen(M,1) M= [1/2,0.43301270189221932338186158537646809174,0,0,0,0,0,0;0.43301270189221932338186158537646809174,0.59375000000000000000000000000000000000,0.16010860571811872473782872938314143736,0,0,0,0,0;0,0.16010860571811872473782872938314143736,0.17773437500000000000000000000000000000,0.043156991785125689527076292745166173981,0,0,0,0;0,0,0.043156991785125689527076292745166173981,0.046264648437500000000000000000000000000,0.010983784699077503627379527042372838459,0,0,0;0,0,0,0.010983784699077503627379527042372838459,0.011680603027343750000000000000000000000,0.0027580894367975917547150661058975793532,0,0;0,0,0,0,0.0027580894367975917547150661058975793532,0.0029273033142089843750000000000000000000,0.00069028107976465866361951420577874482654,0;0,0,0,0,0,0.00069028107976465866361951420577874482655,0.00073227286338806152343750000000000000000,0.00017261768635203427455190103576949842909;0,0,0,0,0,0,0.00017261768635203427455190103576949842909,0.00018309801816940307617187500000000000000]; mateigen(M) \\ Errors, keep at end of file charpoly(Mod('b, 'b^2 + Mod('a,'a^2+1)), 'newvar) minpoly(Mod(y,x), 'y) localbitprec(32);mateigen(merror*bitprecision(1.,64))