/* two versions of guessgf, the latter much better */ guessgf(v,B=10)=local(l,m,p,q);l=length(v);m=matrix(l,B,x,y,if(x0,k=0;while(fibonacci(k)<=n,k=k+1);v[m-k+2]=1;n=n-fibonacci(k-1));v lucas(n)=if(n<1,2*(n>=0),fibonacci(n-1)+fibonacci(n+1)) FF(k,n)=if(k<0||k0,2*pell(n-1)+pell(n-2)) /* cyclic resultant */ CRes(pol,n)=polresultant(pol,x^n-1,x) /* find numbers n such that n^2,(n+1)^2,...,(n+k-1)^2 is square */ A000792(n) = floor(3^(n-4-(n-4)\3*2)*2^(-n%3)) A001317(n) = local(k,s);s=0;for(k=0,n,s=2*s+(binomial(n,k)%2));s A002516(n) = local(t);if(n<1,0,if(n%2==0,2*A002516(n/2),t=(n-1)/2;3*t+1/2-(t-5/2)*(-1)^t)) A003239(n)=if(n<1,n>=0,sumdiv(n,k,eulerphi(n/k)*binomial(2*k,k))/(2*n)) A003458(n) = local(m,i);m=0;i=n+1;while(m<=n,i=i+1;m=factor(binomial(i,n))[1,1]);i A004718(n) = if(n<1,0, if(n%2==0, -A004718(n/2), A004718((n-1)/2)+1)) A007601(n) = local(m,t);m=n;for(p=0,2,t=2*p+3*ceil(log3(n/2^p));if(t0,s=s*ceil(s);c++);c) A083368(n)=local(l1,l2,z1,z2);if(n==1,return(1));z1=Zec(n-1);z2=Zec(n);l1=length(z1);l2=length(z2);if(l2>l1,return(l1));for(k=1,l1,if(z1[k]<>z2[k],return(l1-k)));-1 xD(n, pol) = for(k=1,n,pol=x*deriv(pol,x));pol ntothe(e) = xD(e,1/(1-x)) PisotE(a,b,n)=if(n<2,if(n<1,if(n<0,0,a),b),floor(PisotE(a,b,n-1)^2/PisotE(a,b,n-2)+1/2)) PisotL(a,b,n)=if(n<2,if(n<1,if(n<0,0,a),b),ceil(PisotL(a,b,n-1)^2/PisotL(a,b,n-2))) PisotP(a,b,n)=if(n<2,if(n<1,if(n<0,0,a),b),ceil(PisotP(a,b,n-1)^2/PisotP(a,b,n-2)-1/2)) PisotT(a,b,n)=if(n<2,if(n<1,if(n<0,0,a),b),floor(PisotT(a,b,n-1)^2/PisotT(a,b,n-2))) /* no 3-term arithmetic progression, two methods */ NAPold(sv,N)=local(v,f,m,n,k,l,sl);sl=length(sv);v=vector(N);for(k=1,sl,v[k]=sv[k]);for(n=sl+1,N,f=2;m=v[n-1]+1;while(1,forstep(k=n-1,1,-1,if(v[k]<(m+1)/2,f=1;break);for(l=1,k-1,if(m-v[k]==v[k]-v[l],f=0;break));if(f<2,break));if(!f,m=m+1;f=2);if(f==1,break));v[n]=m);v NAP(sv,N)=local(v,vv,m,k,l,sl,vvl);sl=length(sv);vvl=min(N*N,10^5);v=vector(N);vv=vector(vvl);for(k=1,sl,v[k]=sv[k];for(l=1,k-1,vv[2*v[k]-v[l]]=1));m=v[sl]+1;for(k=sl+1,N,while(m<=vvl&&vv[m],m=m+1);if(m>vvl,return(v));for(l=1,k-1,sl=2*m-v[l];if(sl<=vvl,vv[sl]=1));vv[m]=1;v[k]=m);v /* triple sum free sequence starting with sv, and max value m */ trisumfree(sv,m)=local(nv,v,vl,nvl,c,t);vl=length(sv);nv=vector(max(m,3*sv[vl]));v=listcreate(m+5);for(k=1,vl,listput(v,sv[k]));for(i=1,vl,for(j=1,vl,for(k=1,vl,t=sv[i]+sv[j]+sv[k];if(t,nv[t]=1))));nvl=3*sv[vl];c=sv[vl]+1;while(1,while(c<=m&&nv[c],c++);if(c>m,break);vv=Vec(v);listput(v,c);for(k=1,vl,for(l=1,vl,t=c+vv[k]+vv[l];if(t<=m,nv[t]=1)));for(k=1,vl,t=c+c+vv[k];if(t<=m,nv[t]=1));if(3*c<=m,nv[3*c]=1);nvl=3*c;c=c+1);Vec(v) /* number of unique elements in n X n multiplication table */ multab(N)=local(v,cv,s,t);v=vector(N);cv=vector(N*N);v[1]=1;cv[1]=1;for(k=2,N,s=0;for(l=1,k,t=k*l;if(cv[t]==0,s++);cv[t]++);v[k]=v[k-1]+s);v S1(n,k)=if(n<1,0,n!*polcoeff(binomial(x,n),k)) S2(n,k)=(1/k!)*sum(i=0,k,(-1)^(k-i)*binomial(k,i)*i^n) Bell(n)=sum(k=1,n,S2(n,k)) polyB(k,n)=if(n>=0,(-1)^n*sum(m=0,n,(-1)^m*m!*S2(n,m)/(m+1)^k),0) BernB(n,x)=sum(i=0,n,binomial(n,i)*bernfrac(i)*x^(n-i)) Balg(v)=sum(m=0,length(v)-1,(-1)^m*m!*S2(n,m)*v[m+1]) Eu(n)=sum(m=0,n,(-1)^m*m!*S2(n+1,m+1)*(-1)^floor(m/4)*2^-floor(m/2)*((m+1)%4!=0)) EulerE(n,v='x)=2/(n+1)*(BernB(n+1,x)-2^(n+1)*BernB(n+1,x/2)) Eulerian(n,k)=sum(j=0,k,(-1)^j*(k-j)^n*binomial(n+1,j)) trinomial(n,k)=polcoeff((1+x+x^2)^n,k) Zsig(AA,B,n)=local(d,f,D);d=divisors(AA^n-B^n);forstep(D=length(d),1,-1,f=0;for(m=1,n-1,if(gcd(d[D],AA^m-B^m)>1,f=1;break));if(!f,return(d[D])));1 bdA(n)=1/n!*sum(k=1,n,(-1)^(n-k)*S1(n,k)*A(k)) buA(n)=sum(k=1,n,(-1)^(n-k)*S2(n,k)*k!*A(k)) listdcgfA(al,pol,m)=local(l);for(n=0,m,l=if(!n,0,ceil(log2(n)));print1(polcoeff(sum(k=0,l,al^k*subst(pol,x,x^2^k))+O(x^(2^l+1)),n)",")) listdcgfB(spol,al,pol,m)=local(l);for(n=0,m,l=if(!n,0,ceil(log2(n)));print1(polcoeff(1/(1-x)*(spol+sum(k=0,l,al^k*subst(pol,x,x^2^k))),n)",")) listdcgfC(spol,al,pol,m)=local(l);for(n=0,m,l=if(!n,0,ceil(log2(n)));print1(polcoeff(1/(1-x)^2*(spol+sum(k=0,l,al^k*subst(pol,x,x^2^k))),n)",")) filldcgfA(al,pol,m)=local(l,v);v=vector(m+1);for(n=0,m,l=if(!n,0,ceil(log2(n)));v[n+1]=polcoeff(sum(k=0,l,al^k*subst(pol,x,x^2^k)),n));v filldcgfB(spol,al,pol,m)=local(l,v);v=vector(m+1);for(n=0,m,l=if(!n,0,ceil(log2(n)));v[n+1]=polcoeff(1/(1-x)*(spol+sum(k=0,l,al^k*subst(pol,x,x^2^k))),n));v filldcgfC(spol,al,pol,m)=local(l,v);v=vector(m+1);for(n=0,m,l=if(!n,0,ceil(log2(n)));v[n+1]=polcoeff(1/(1-x)^2*(spol+sum(k=0,l,al^k*subst(pol,x,x^2^k))),n));v listdcgfA4(al,pol,m)=local(l);for(n=0,m,l=if(!n,0,ceil(log4(n)));print1(polcoeff(sum(k=0,l,al^k*subst(pol,x,x^4^k)),n)",")) listdcgfG(c,d,pol,m)=local(g,l);l=if(m<=0,0,ceil(log2(m)));g=pol+sum(k=0,l,subst(pol,x,x^(2^(k+1)))*prod(kk=0,k,c+d*x^(2^kk)));for(n=0,m,print1(polcoeff(g,n)",")) listdcgfQ(c,d,pol,m)=local(g,l);l=if(m<=0,0,ceil(log2(m)));g=sum(k=0,l,subst(pol,x,x^(2^(k)))*prod(kk=0,k,c+d*x^(2^kk)));for(n=0,m,print1(polcoeff(g,n)",")) /* ternary morphism */ termorph(n, m) = local(s1, s2); s1=[0];for(n=1,10,s2=vector(2*#s1);for(k=1,#s1,s2[2*k-1]=m[s1[k]+1,1];s2[2*k]=m[s1[k]+1,2]);s1=s2);s2[n+1] fillA035928(m)=local(l,b,c);c=1;A035928=vector(m);for(n=1,8*4^floor(log2(m)),if(c<=m,b=binary(n);l=length(b);if(sum(i=1,l,abs(component(b,i)-component(b,l+1-i)))==l,A035928[c]=n;c=c+1;print(c)),break)) \\ partly borrowed from Michael Somos' tricks.gp derivn(F,n,v='x)=while(n>0,F=deriv(F,v);n-=n);F /* Chebyshev polynomial function ( T_n(x) ) of first kind */ ChebT(n,v='x)=subst(poltchebi(n),'x,v) /* Chebyshev polynomial function ( U_n(x) ) of second kind */ ChebU(n,v='x)=if(n==-1,0,subst(poltchebi(n+1)'/(n+1),'x,v)) ChebS(n,v='x)=if(n==-1,0,subst(poltchebi(n+1)'/(n+1),'x,v/2)) /* Laguerre polynomial function ( L_n(x) ) */ LagL(n,v='x)=sum(k=0,n,(-1)^k*n!/(k!^2*(n-k)!)*v^k) LagL3(n,al,v='x)=Pol(1/n!*exp(v)*v^-al*derivn(exp(-v)*v^(n+al),n,v)) LagG(n,al,v='x)=sum(k=0,n,binomial(n+al,n-k)*(-v)^k/k!) /* Hermite polynomial function ( H_n(x) ) */ HermH(n,v='x)=sum(k=0,n\2,(-1)^k*n!/(k!*(n-2*k)!)*(v*2)^(n-2*k)) Hermh(n,v='x)=round((-I/sqrt(2))^n*HermH(n,I*x/sqrt(2))) HermHH(n,mu,v='x)=(-1)^(n\2)*2^n*(n\2)!*LagG(n\2,if(n%2==0,mu-1/2,mu+1/2),v*v) GegC(n,lam,x)=sum(k=0,n\2,(-1)^k*lam^(n-k)*(2*x)^(n-2*k)/k!/(n-2*k)!) tprs(x)=local(t);t=type(x);(t=="t_POL"|t=="t_RFRAC"|t=="t_SER") Bessel_J(n,x='x)=if(!tprs(x),besselj(n,x),if(n>=0,(x/2)^n/n!*besselj(n,x),(-1)^n*Bessel_J(-n,x))) trunc(x)=if(x>=0,floor(x),ceil(x)) log2(x)=log(x)/log(2) log3(x)=log(x)/log(3) log4(x)=log(x)/log(4) flog2(x)=local(c);c=0;while(2^(c+1)=m,break))) weight(q)=local(l);l=length(q~);sum(k=1,l,if(q[k,][1],q[k,][1]^2,-1000)) mw=10^11;v=vector(20,n,Lucas(n-1)^3);oo=0 /*for(k=-5,5,for(l=-10,10,if(k!=l,m=matrix(length(v)-oo,5,x,y,if(y==1,(-1)^x,if(y==2,1,if(y==3,if(2*x+k<0,0,fibonacci(2*x+k)),if(y==4,fibonacci(if(2*x+l<0,0,2*x+l)),v[x])))));q=qflll(m,4)[1];if(length(q)&&weight(q)<=mw,mw=weight(q);print(k","l"; "q))))) for(k=-4,3,print(k);for(l=-10,10,if(k!=l,for(kk=-10,10,for(ll=-10,10,if(kk!=ll,m=matrix(length(v)-oo,6,x,y,if(y==1,if(1*x+kk<0,0,(-1)^x*fibonacci(1*x+kk)),if(y==2,if(1*x+ll<0,0,(-1)^(x)*fibonacci(1*x+ll)),if(y==3,if(3*x+k<0,0,fibonacci(3*x+k)),if(y==4,fibonacci(if(3*x+l<0,0,3*x+l)),if(y==5,1,v[x]))))));q=qflll(m,4)[1];if(length(q)&&weight(q)<=mw,mw=weight(q);print(kk","ll","k","l"; "q)))))))) */