from sympy import *
import time
import sys

# sys.stdout = open('sortie.txt', 'w')
a,a1,b,b1,n,t,x,z= symbols('a a1 b b1 n t x z ')
lst=[["(1+2*x)**(1/2)",x,1,"1/3*(1+2*x)**(3/2)"],
["x*(1+3*x)**(1/2)",x,2,"-2/27*(1+3*x)**(3/2)+2/45*(1+3*x)**(5/2)"],
["x**2*(1+x)**(1/2)",x,2,"2/3*(1+x)**(3/2)-4/5*(1+x)**(5/2)+2/7*(1+x)**(7/2)"],
["x/(2-3*x)**(1/2)",x,2,"2/27*(2-3*x)**(3/2)-4/9*(2-3*x)**(1/2)"],
["(1+x)/(x**2+2*x+2)**3",x,1,"-1/4/(x**2+2*x+2)**2"],
["sin(x)**3",x,2,"-cos(x)+1/3*cos(x)**3"],
["(-1+z)**(1/3)*z",z,2,"3/4*(-1+z)**(4/3)+3/7*(-1+z)**(7/3)"],
["cos(x)/sin(x)**3",x,2,"-1/2*csc(x)**2"],
["cos(2*x)*(4-sin(2*x))**(1/2)",x,2,"-1/3*(4-sin(2*x))**(3/2)"],
["sin(x)/(3+cos(x))**2",x,2,"1/(3+cos(x))"],
["sin(x)/(cos(x)**3)**(1/2)",x,3,"2*cos(x)/(cos(x)**3)**(1/2)"],
["sin((1+x)**(1/2))/(1+x)**(1/2)",x,3,"-2*cos((1+x)**(1/2))"],
["x**(-1+n)*sin(x**n)",x,2,"-cos(x**n)/n"],
["x**5/(-x**6+1)**(1/2)",x,1,"-1/3*(-x**6+1)**(1/2)"],
["t*(1+t)**(1/4)",t,2,"-4/5*(1+t)**(5/4)+4/9*(1+t)**(9/4)"],
["1/(x**2+1)**(3/2)",x,1,"x/(x**2+1)**(1/2)"],
["x**2*(8*x**3+27)**(2/3)",x,1,"1/40*(8*x**3+27)**(5/3)"],
["(cos(x)+sin(x))/(-cos(x)+sin(x))**(1/3)",x,1,"3/2*(-cos(x)+sin(x))**(2/3)"],
["x/(1+x**2+(x**2+1)**(3/2))**(1/2)",x,3,"2*((x**2+1)*(1+(x**2+1)**(1/2)))**(1/2)/(x**2+1)**(1/2)"],
["x/(x**2+1)**(1/2)/(1+(x**2+1)**(1/2))**(1/2)",x,1,"2*(1+(x**2+1)**(1/2))**(1/2)"],
["(x**2-2*x+1)**(1/5)/(1-x)",x,2,"-5/2*(x**2-2*x+1)**(1/5)"],
["x*sin(x)",x,2,"-x*cos(x)+sin(x)"],
["x**2*sin(x)",x,3,"2*cos(x)-x**2*cos(x)+2*x*sin(x)"],
["x**3*cos(x)",x,4,"-6*cos(x)+3*x**2*cos(x)-6*x*sin(x)+x**3*sin(x)"],
["x**3*sin(x)",x,4,"6*x*cos(x)-x**3*cos(x)-6*sin(x)+3*x**2*sin(x)"],
["cos(x)*sin(x)",x,2,"1/2*sin(x)**2"],
["x*cos(x)*sin(x)",x,3,"-1/4*x+1/4*cos(x)*sin(x)+1/2*x*sin(x)**2"],
["sin(x)**2",x,2,"1/2*x-1/2*cos(x)*sin(x)"],
["sin(x)**3",x,2,"-cos(x)+1/3*cos(x)**3"],
["sin(x)**4",x,3,"3/8*x-3/8*cos(x)*sin(x)-1/4*cos(x)*sin(x)**3"],
["sin(x)**5",x,2,"-cos(x)+2/3*cos(x)**3-1/5*cos(x)**5"],
["sin(x)**6",x,4,"5/16*x-5/16*cos(x)*sin(x)-5/24*cos(x)*sin(x)**3-1/6*cos(x)*sin(x)**5"],
["x*sin(x)**2",x,2,"1/4*x**2-1/2*x*cos(x)*sin(x)+1/4*sin(x)**2"],
["x*sin(x)**3",x,3,"-2/3*x*cos(x)+2/3*sin(x)-1/3*x*cos(x)*sin(x)**2+1/9*sin(x)**3"],
["x**2*sin(x)**2",x,4,"-1/4*x+1/6*x**3+1/4*cos(x)*sin(x)-1/2*x**2*cos(x)*sin(x)+1/2*x*sin(x)**2"],
["cos(x)**2",x,2,"1/2*x+1/2*cos(x)*sin(x)"],
["cos(x)**3",x,2,"sin(x)-1/3*sin(x)**3"],
["cos(x)**4",x,3,"3/8*x+3/8*cos(x)*sin(x)+1/4*cos(x)**3*sin(x)"],
["(a**2-x**2)**(5/2)",x,5,"5/24*a**2*x*(a**2-x**2)**(3/2)+1/6*x*(a**2-x**2)**(5/2)+5/16*a**6*atan(x/(a**2-x**2)**(1/2))+5/16*a**4*x*(a**2-x**2)**(1/2)"],
["x**5/(x**2+5)**(1/2)",x,3,"-10/3*(x**2+5)**(3/2)+1/5*(x**2+5)**(5/2)+25*(x**2+5)**(1/2)"],
["t**3/(t**3+4)**(1/2)",t,2,"2/5*t*(t**3+4)**(1/2)-8/15*2**(2/3)*(2**(2/3)+t)*elliptic_f((t+2**(2/3)*(1-3**(1/2)))/(t+2**(2/3)*(1+3**(1/2))),I*3**(1/2)+2*I)*(1/2*6**(1/2)+1/2*2**(1/2))*((2*2**(1/3)-2**(2/3)*t+t**2)/(t+2**(2/3)*(1+3**(1/2)))**2)**(1/2)*3**(3/4)/(t**3+4)**(1/2)/((2**(2/3)+t)/(t+2**(2/3)*(1+3**(1/2)))**2)**(1/2)"],
["tan(x)**2",x,2,"-x+tan(x)"],
["tan(x)**4",x,3,"x-tan(x)+1/3*tan(x)**3"],
["cot(x)**2",x,2,"-x-cot(x)"],
["cot(x)**4",x,3,"x+cot(x)-1/3*cot(x)**3"],
["(2+3*x)*sin(5*x)",x,2,"-1/5*(2+3*x)*cos(5*x)+3/25*sin(5*x)"],
["x*(x**2+1)**(1/2)",x,1,"1/3*(x**2+1)**(3/2)"],
["x*(x**2-1)**9",x,1,"1/20*(-x**2+1)**10"],
["(3+2*x)/(7+6*x)**3",x,1,"-1/8*(3+2*x)**2/(7+6*x)**2"],
["x**4*(x**5+1)**5",x,1,"1/30*(x**5+1)**6"],
["(1-x)**20*x**4",x,2,"-1/21*(1-x)**21+2/11*(1-x)**22-6/23*(1-x)**23+1/6*(1-x)**24-1/25*(1-x)**25"],
["sin(1/x)/x**2",x,2,"cos(1/x)"],
["sin((-1+x)**(1/4))",x,5,"24*(-1+x)**(1/4)*cos((-1+x)**(1/4))-4*(-1+x)**(3/4)*cos((-1+x)**(1/4))-24*sin((-1+x)**(1/4))+12*sin((-1+x)**(1/4))*(-1+x)**(1/2)"],
["x*cos(x**2)*sin(x**2)",x,1,"1/4*sin(x**2)**2"],
["sin(2*x)*(1+3*cos(x)**2)**(1/2)",x,3,"-2/9*(4-3*sin(x)**2)**(3/2)"],
["1/(2+3*x)",x,1,"1/3*ln(2+3*x)"],
["ln(x)**2",x,2,"2*x-2*x*ln(x)+x*ln(x)**2"],
["x*ln(x)",x,1,"-1/4*x**2+1/2*x**2*ln(x)"],
["x*ln(x)**2",x,2,"1/4*x**2-1/2*x**2*ln(x)+1/2*x**2*ln(x)**2"],
["1/(1+t)",t,1,"ln(1+t)"],
["cot(x)",x,1,"ln(sin(x))"],
["x**n*ln(a*x)",x,1,"-x**(1+n)/(1+n)**2+x**(1+n)*ln(a*x)/(1+n)"],
["x**2*ln(x)**2",x,2,"2/27*x**3-2/9*x**3*ln(x)+1/3*x**3*ln(x)**2"],
["1/x/ln(x)",x,2,"ln(ln(x))"],
["ln(1-t)/(1-t)",t,2,"-1/2*ln(1-t)**2"],
["ln(x)/x/(1+ln(x))**(1/2)",x,3,"2/3*(1+ln(x))**(3/2)-2*(1+ln(x))**(1/2)"],
["x**3*ln(x)**3",x,3,"-3/128*x**4+3/32*x**4*ln(x)-3/16*x**4*ln(x)**2+1/4*x**4*ln(x)**3"],
["exp(x**3)*x**2",x,1,"1/3*exp(x**3)"],
["2**(x**(1/2))/x**(1/2)",x,1,"2**(1+x**(1/2))/ln(2)"],
["exp(2*sin(x))*cos(x)",x,2,"1/2*exp(2*sin(x))"],
["exp(x)*sin(x)",x,1,"-1/2*exp(x)*cos(x)+1/2*exp(x)*sin(x)"],
["exp(x)*cos(x)",x,1,"1/2*exp(x)*cos(x)+1/2*exp(x)*sin(x)"],
["1/(1+exp(x))",x,4,"x-ln(1+exp(x))"],
["exp(x)*x",x,2,"-exp(x)+exp(x)*x"],
["x/exp(x)",x,2,"-1/exp(x)-x/exp(x)"],
["exp(x)*x**2",x,3,"2*exp(x)-2*exp(x)*x+exp(x)*x**2"],
["x**2/exp(2*x)",x,3,"-1/4/exp(2*x)-1/2*x/exp(2*x)-1/2*x**2/exp(2*x)"],
["exp(x**(1/2))",x,3,"-2*exp(x**(1/2))+2*exp(x**(1/2))*x**(1/2)"],
["x**3/exp(x**2)",x,2,"-1/2/exp(x**2)-1/2*x**2/exp(x**2)"],
["exp(a*x)*cos(b*x)",x,1,"a*exp(a*x)*cos(b*x)/(a**2+b**2)+b*exp(a*x)*sin(b*x)/(a**2+b**2)"],
["exp(a*x)*sin(b*x)",x,1,"-b*exp(a*x)*cos(b*x)/(a**2+b**2)+a*exp(a*x)*sin(b*x)/(a**2+b**2)"],
["acot(x)",x,2,"x*acot(x)+1/2*ln(x**2+1)"],
["asec(x)",x,4,"x*asec(x)-atanh((1-1/x**2)**(1/2))"],
["acsc(x)",x,4,"x*acsc(x)+atanh((1-1/x**2)**(1/2))"],
["asin(x)**2",x,3,"-2*x+x*asin(x)**2+2*asin(x)*(-x**2+1)**(1/2)"],
["asin(x)/x**2",x,4,"-asin(x)/x-atanh((-x**2+1)**(1/2))"],
["1/(a**2-x**2)**(1/2)",x,2,"atan(x/(a**2-x**2)**(1/2))"],
["1/(-x**2-2*x+1)**(1/2)",x,2,"asin(1/2*(1+x)*2**(1/2))"],
["1/(a**2+x**2)",x,1,"atan(x/a)/a"],
["1/(b*x**2+a)",x,1,"atan(x*b**(1/2)/a**(1/2))/a**(1/2)/b**(1/2)"],
["1/(x**2-x+2)",x,2,"-2/7*atan(1/7*(1-2*x)*7**(1/2))*7**(1/2)"],
["x*atan(x)",x,3,"-1/2*x+1/2*atan(x)+1/2*x**2*atan(x)"],
["x**2*acos(x)",x,4,"1/9*(-x**2+1)**(3/2)+1/3*x**3*acos(x)-1/3*(-x**2+1)**(1/2)"],
["x*atan(x)**2",x,5,"-x*atan(x)+1/2*atan(x)**2+1/2*x**2*atan(x)**2+1/2*ln(x**2+1)"],
["atan(x**(1/2))",x,4,"atan(x**(1/2))+x*atan(x**(1/2))-x**(1/2)"],
["atan(x**(1/2))/(1+x)/x**(1/2)",x,1,"atan(x**(1/2))**2"],
["(-x**2+1)**(1/2)",x,2,"1/2*asin(x)+1/2*x*(-x**2+1)**(1/2)"],
["exp(atan(x))*x/(x**2+1)**(3/2)",x,1,"-1/2*exp(atan(x))*(1-x)/(x**2+1)**(1/2)"],
["exp(atan(x))/(x**2+1)**(3/2)",x,1,"1/2*exp(atan(x))*(1+x)/(x**2+1)**(1/2)"],
["x**2/(x**2+1)**2",x,2,"-1/2*x/(x**2+1)+1/2*atan(x)"],
["exp(x)/(1+exp(2*x))",x,2,"atan(exp(x))"],
["acot(exp(x))/exp(x)",x,5,"-x-acot(exp(x))/exp(x)+1/2*ln(1+exp(2*x))"],
["((a+x)/(a-x))**(1/2)",x,3,"2*a*atan(((a+x)/(a-x))**(1/2))-(a-x)*((a+x)/(a-x))**(1/2)"],
["((b-x)*(-a+x))**(1/2)",x,4,"-1/8*(a-b)**2*atan(1/2*(a+b-2*x)/(-a*b+(a+b)*x-x**2)**(1/2))-1/4*(a+b-2*x)*(-a*b+(a+b)*x-x**2)**(1/2)"],
["1/((b-x)*(-a+x))**(1/2)",x,3,"-atan(1/2*(a+b-2*x)/(-a*b+(a+b)*x-x**2)**(1/2))"],
["(3+5*x)/(x**2+2*x-3)",x,3,"2*ln(1-x)+3*ln(3+x)"],
["(5+2*x)/(x**2+2*x-3)",x,3,"7/4*ln(1-x)+1/4*ln(3+x)"],
["(x**3+3*x)/(x**2-2*x-3)",x,6,"2*x+1/2*x**2+9*ln(3-x)+ln(1+x)"],
["(2*x**2+5*x-1)/(x**3+x**2-2*x)",x,3,"2*ln(1-x)+1/2*ln(x)-1/2*ln(2+x)"],
["(x**2+2*x+3)/(-1+x)/(1+x)**2",x,2,"1/(1+x)+3/2*ln(1-x)-1/2*ln(1+x)"],
["(3*x**2+2*x-2)/(x**3-1)",x,5,"ln(-x**3+1)+4/3*atan(1/3*(1+2*x)*3**(1/2))*3**(1/2)"],
["(x**4-x**3+2*x**2-x+2)/(-1+x)/(x**2+2)**2",x,6,"1/2/(x**2+2)+1/3*ln(1-x)+1/3*ln(x**2+2)-1/6*atan(1/2*x*2**(1/2))*2**(1/2)"],
["1/(cos(x)+sin(x))",x,2,"-1/2*atanh(1/2*(cos(x)-sin(x))*2**(1/2))*2**(1/2)"],
["x/(4-x**2+(-x**2+4)**(1/2))",x,3,"-ln(1+(-x**2+4)**(1/2))"],
["(3+2*x)/(-2+x)/(5+x)",x,2,"ln(2-x)+ln(5+x)"],
["x/(1+x)/(2+x)/(3+x)",x,2,"-1/2*ln(1+x)+2*ln(2+x)-3/2*ln(3+x)"],
["x/(x**3-3*x+2)",x,2,"1/3/(1-x)+2/9*ln(1-x)-2/9*ln(2+x)"],
["(x**4+2*x-6)/(x**3+x**2-2*x)",x,3,"-x+1/2*x**2-ln(1-x)+3*ln(x)+ln(2+x)"],
["(8*x**3+7)/(1+x)/(1+2*x)**3",x,2,"-3/(1+2*x)**2+3/(1+2*x)+ln(1+x)"],
["(4*x**2+x+1)/(x**3-1)",x,3,"2*ln(1-x)+ln(x**2+x+1)"],
["x**4/(x**4+5*x**2+4)",x,4,"x-8/3*atan(1/2*x)+1/3*atan(x)"],
["(2+x)/(x**2+x)",x,2,"2*ln(x)-ln(1+x)"],
["1/x/(x**2+1)**2",x,3,"1/2/(x**2+1)+ln(x)-1/2*ln(x**2+1)"],
["1/(1+x)/(2+x)**2/(3+x)**3",x,2,"1/(2+x)+1/4/(3+x)**2+5/4/(3+x)+1/8*ln(1+x)+2*ln(2+x)-17/8*ln(3+x)"],
["x/(1+x)**2",x,2,"1/(1+x)+ln(1+x)"],
["1/(x**3-x)",x,5,"-ln(x)+1/2*ln(-x**2+1)"],
["x**2/(x**2+x-6)",x,4,"x+4/5*ln(2-x)-9/5*ln(3+x)"],
["(2+x)/(x**2-4*x+4)",x,3,"4/(2-x)+ln(2-x)"],
["1/(x**2-4*x+4)/(x**2-4*x+5)",x,4,"1/(2-x)-atan(-2+x)"],
["(-3+x)/(x**3+3*x**2+2*x)",x,3,"-3/2*ln(x)+4*ln(1+x)-5/2*ln(2+x)"],
["1/(x**2-1)**2",x,2,"1/2*x/(-x**2+1)+1/2*atanh(x)"],
["(1+x)/(x**3-1)",x,3,"2/3*ln(1-x)-1/3*ln(x**2+x+1)"],
["(x**4+1)/x/(x**2+1)**2",x,3,"1/(x**2+1)+ln(x)"],
["1/(x**4-2*x**3)",x,3,"1/4/x**2+1/4/x+1/8*ln(2-x)-1/8*ln(x)"],
["(-x**3+1)/x/(x**2+1)",x,5,"-x+atan(x)+ln(x)-1/2*ln(x**2+1)"],
["1/(x**4-1)",x,3,"-1/2*atan(x)-1/2*atanh(x)"],
["1/(x**4+1)",x,9,"1/4*atan(-1+x*2**(1/2))*2**(1/2)+1/4*atan(1+x*2**(1/2))*2**(1/2)-1/8*ln(1+x**2-x*2**(1/2))*2**(1/2)+1/8*ln(1+x**2+x*2**(1/2))*2**(1/2)"],
["x**2/(x**2+2*x+2)**2",x,3,"-1/2*x*(2+x)/(x**2+2*x+2)+atan(1+x)"],
["(4*x**5-1)/(x**5+x+1)**2",x,1,"-x/(x**5+x+1)"],
["1/(5-cos(x)+2*sin(x))",x,3,"1/10*x*5**(1/2)+1/5*atan((2*cos(x)+sin(x))/(5-cos(x)+2*sin(x)+2*5**(1/2)))*5**(1/2)"],
["1/(1+a*cos(x))",x,2,"2*atan((1-a)**(1/2)*tan(1/2*x)/(1+a)**(1/2))/(-a**2+1)**(1/2)"],
["1/(1+2*cos(x))",x,2,"-1/3*ln(-sin(1/2*x)+cos(1/2*x)*3**(1/2))*3**(1/2)+1/3*ln(sin(1/2*x)+cos(1/2*x)*3**(1/2))*3**(1/2)"],
["1/(1+1/2*cos(x))",x,1,"2/3*x*3**(1/2)-4/3*atan(sin(x)/(2+cos(x)+3**(1/2)))*3**(1/2)"],
["sin(x)**2/(1+sin(x)**2)",x,3,"x-1/2*x*2**(1/2)-1/2*atan(cos(x)*sin(x)/(1+sin(x)**2+2**(1/2)))*2**(1/2)"],
["1/(b**2*cos(x)**2+a**2*sin(x)**2)",x,2,"atan(a*tan(x)/b)/a/b"],
["1/(b*cos(x)+a*sin(x))**2",x,1,"sin(x)/b/(b*cos(x)+a*sin(x))"],
["sin(x)/(1+cos(x)+sin(x))",x,3,"1/2*x-1/2*ln(1+cos(x)+sin(x))-1/2*ln(1+tan(1/2*x))"],
["(-x**2+3)**(1/2)",x,2,"3/2*asin(1/3*x*3**(1/2))+1/2*x*(-x**2+3)**(1/2)"],
["x/(-x**2+3)**(1/2)",x,1,"-(-x**2+3)**(1/2)"],
["(-x**2+3)**(1/2)/x",x,4,"-atanh(1/3*(-x**2+3)**(1/2)*3**(1/2))*3**(1/2)+(-x**2+3)**(1/2)"],
["(x**2+x)**(1/2)/x",x,3,"atanh(x/(x**2+x)**(1/2))+(x**2+x)**(1/2)"],
["(x**2+5)**(1/2)",x,2,"5/2*asinh(1/5*x*5**(1/2))+1/2*x*(x**2+5)**(1/2)"],
["x/(x**2+x+1)**(1/2)",x,3,"-1/2*asinh(1/3*(1+2*x)*3**(1/2))+(x**2+x+1)**(1/2)"],
["1/(x**2+x)**(1/2)",x,2,"2*atanh(x/(x**2+x)**(1/2))"],
["(-x**2-x+2)**(1/2)/x**2",x,6,"-asin(1/3+2/3*x)+1/4*atanh(1/4*(4-x)*2**(1/2)/(-x**2-x+2)**(1/2))*2**(1/2)-(-x**2-x+2)**(1/2)/x"],
["ln(t)/(1+t)",t,2,"ln(t)*ln(1+t)+polylog(2,-t)"],
["ln(exp(cos(x)))",x,3,"-x*cos(x)+x*ln(exp(cos(x)))+sin(x)"],
["exp(t)/t",t,1,"Ei(t)"],
["exp(a*t)/t",t,1,"Ei(a*t)"],
["exp(t)/t**2",t,2,"-exp(t)/t+Ei(t)"],
["exp(1/t)",t,2,"exp(1/t)*t-Ei(1/t)"],
["1/exp(t)/(-1-a+t)",t,1,"exp(-1-a)*Ei(1+a-t)"],
["exp(t**2)*t/(t**2+1)",t,2,"1/2*Ei(t**2+1)/exp(1)"],
["exp(t)/(1+t)**2",t,2,"-exp(t)/(1+t)+Ei(1+t)/exp(1)"],
["exp(t)*ln(1+t)",t,2,"-Ei(1+t)/exp(1)+exp(t)*ln(1+t)"],
["t/exp(t)",t,2,"-1/exp(t)-t/exp(t)"],
["t**2/exp(t)",t,3,"-2/exp(t)-2*t/exp(t)-t**2/exp(t)"],
["t**3/exp(t)",t,4,"-6/exp(t)-6*t/exp(t)-3*t**2/exp(t)-t**3/exp(t)"],
["(b1*cos(x)+a1*sin(x))/(b*cos(x)+a*sin(x))",x,1,"(a*a1+b*b1)*x/(a**2+b**2)-(-a*b1+a1*b)*ln(b*cos(x)+a*sin(x))/(a**2+b**2)"],
["1/ln(t)",t,1,"Li(t)"],
["1/ln(t)**2",t,2,"Li(t)-t/ln(t)"],
["ln(t)**(-1-n)",t,2,"-uppergamma(-n,-ln(t))*(-ln(t))**n/(ln(t)**n)"],
["exp(2*t)/(-1+t)",t,1,"exp(2)*Ei(-2+2*t)"],
["exp(2*x)/(x**2-3*x+2)",x,4,"exp(4)*Ei(-4+2*x)-exp(2)*Ei(-2+2*x)"],
["1/(t**3+1)**(1/2)",t,1,"2/3*(1+t)*elliptic_f((1+t-3**(1/2))/(1+t+3**(1/2)),I*3**(1/2)+2*I)*(1/2*6**(1/2)+1/2*2**(1/2))*((t**2-t+1)/(1+t+3**(1/2))**2)**(1/2)*3**(3/4)/(t**3+1)**(1/2)/((1+t)/(1+t+3**(1/2))**2)**(1/2)"]]
N=len(lst)
print(N)
ERR=0
T=[]
for j in range(N):
    try:
        start = time.time()
        F=integrate(lst[j][0],lst[j][1])
        end = time.time()
        T.append(end-start)
        print(j+1,"line",j+7,"time",end-start,F,", [",lst[j][0],"]")
    except:
        print(j+1,"line",j+7,"error",lst[j][0])
        ERR+=1
print('errors',ERR)
print('timings',T)
