Never trust a CAS!

PolynomialQ

PolynomialQ[1/x,{x,y}]

PolynomialQ[1/x,{y}]

PolynomialQ[1/x,{}]

PolynomialQ[1/x]

PolynomialQ[Sin[x],{x,y}]

PolynomialQ[Sin[x],{y}]

PolynomialQ[Sin[x],{}]

PolynomialQ[Sin[x]]

PolynomialQ[Sqrt[x],{}]

PolynomialQ[Sqrt[x^2-1],{}]

Chebyshev polynomials

Table[ChebyshevU[n,-1],{n,-5,5}]

Table[(-1)^n*(n+1),{n,-5,5}]

Limit

Limit[x^k*Binomial[-2,k],k->Infinity,Assumptions->Abs[x]<1]

FullSimplify[Binomial[-2,k]]

Binomial sum

Sum[(-1)^(i+j)Binomial[i+j,i]Binomial[m,i]Binomial[n,j],{i,0,m},{j,0,n}]

Sum[(-1)^(i+j)Binomial[i+j,i]Binomial[n,i]Binomial[n,j],{i,0,n},{j,0,n}]

Limits of Zeta functions

ass=n>1&&Element[n,Integers]&&a>0&&b>0&&k<n

expr1=x^k*Zeta[n,a+b*x];
expr2=x^k*Zeta[n,1+a+b*x];

Timing[Limit[expr1,x->Infinity,Assumptions->ass]]

Timing[Limit[expr2,x->Infinity,Assumptions->ass]]

Timing[Limit[expr1-expr2,x->Infinity,Assumptions->ass]]

StruveL

N[StruveL[1+I,700*I],25]

N[StruveL[1+I,100*I],25]

Plot[Re[StruveL[1+I,x*I]],{x,0,1000}]

Plot[Re[StruveL[1+I,x*I]],{x,480,520}]

Keep control of your expressions!

PolynomialGCD

MyPolynomialGCD[p1_,p2_,x_]:=
Module[{e1,e2},
If[p1*p2===0,Return[p1+p2]];
While[p2=!=0,
While[(e1=Exponent[p1,x])≥(e2=Exponent[p2,x]),
p1=p1-(Coefficient[p1,x,e1]/Coefficient[p2,x,e2])*x^(e1-e2)*p2;
];
{p1,p2}={p2,p1};
];
Return[p1];
];

MyPolynomialGCD[x^2-1,x-1,x]

MyPolynomialGCD[pp1_,pp2_,x_]:=
Module[{p1=pp1,p2=pp2,e1,e2},
If[p1*p2===0,Return[p1+p2]];
While[p2=!=0,
While[(e1=Exponent[p1,x])≥(e2=Exponent[p2,x]),
p1=p1-(Coefficient[p1,x,e1]/Coefficient[p2,x,e2])*x^(e1-e2)*p2;
];
{p1,p2}={p2,p1};
];
Return[p1];
];

MyPolynomialGCD[x^2-1,x-1,x]

MyPolynomialGCD[pp1_,pp2_,x_]:=
Module[{p1=pp1,p2=pp2,e1,e2},
If[p1*p2===0,Return[p1+p2]];
While[p2=!=0,
While[(e1=Exponent[p1,x])≥(e2=Exponent[p2,x]),
p1=Expand[p1-(Coefficient[p1,x,e1]/Coefficient[p2,x,e2])*x^(e1-e2)*p2];
];
{p1,p2}={p2,p1};
];
Return[p1];
];

MyPolynomialGCD[x^2-1,x-1,x]

MyPolynomialGCD[x^2-1,(y-1)x-1,x]

MyPolynomialGCD[pp1_,pp2_,x_]:=
Module[{p1=pp1,p2=pp2,e1,e2},
If[p1*p2===0,Return[p1+p2]];
While[p2=!=0,
While[(e1=Exponent[p1,x])≥(e2=Exponent[p2,x]),
p1=Together[p1-(Coefficient[p1,x,e1]/Coefficient[p2,x,e2])*x^(e1-e2)*p2];
];
{p1,p2}={p2,p1};
];
Return[p1];
];

MyPolynomialGCD[x^2-1,(y-1)x-1,x]

NullSpace

mat=Table[x-RandomInteger[10],{9},{10}]

Timing[ns=NullSpace[mat];]

ByteCount[ns]

Vandermonde Determinant

mat=Table[1/(x+i)^j,{i,0,7},{j,0,7}];

Timing[det=Det[mat];]

ByteCount[det]

Timing[Together[det]]

ByteCount[det]

Know what's behind!

Exponent[x^2+x+1-x*(x-1),x]

Timing[Exponent[Product[x+y+z+i,{i,100}],x]]

Denominator[1/(x+1)-x/(x-1)]

Denominator[x^(-n)]

Internal representation

Max[Cases[x/20+y/21,_Integer,Infinity]]

A=Table[1/(i+j-1),{i,3},{j,3}]

MatchQ[A,{{(_Rational)..}..}]

ser=Series[Log[1-x],{x,0,10}]

ser-Last[ser]

Never use Simplify

Simplify

Simplify[x^4+4(x^3+x)+6x^2+1]

Simplify[(x^2+1)(x^2-1)]

A rational function

RandomPolynomial[x_,d_]:=Sum[RandomInteger[100]*x^i,{i,0,d}]

expr=Sum[RandomPolynomial[x,5]/RandomPolynomial[x,5],{50}];

Timing[Expand[expr];]

Timing[Together[expr];]

Timing[Simplify[expr];]

Timing[FullSimplify[expr];]

Trigonometric functions

Simplify[Sin[x]^2+Cos[x]^2]

Expand[Sin[x]^2+Cos[x]^2,Trig->True]

Factorials

Simplify[(n+1)!/n!]

FunctionExpand[(n+1)!/n!]

FullSimplify[(n+1)!/n!]

Logical expressions

Simplify[x&&(x||y)]

LogicalExpand[x&&(x||y)]