The speed of integration of polynomials improved (10x).
[sympy.git] / sympy / integrals / tests / test_integrals.py
blobe596dc05606fb9fe928ccfbf7ffd6bd347cc50e9
1 from sympy import symbols, integrate, exp, oo, Symbol, Rational, log
2 from sympy.utilities.pytest import XFAIL
3 import py
5 x,a,t = symbols('xat')
7 def test_improper_integral():
8 assert integrate(log(x), (x, 0, 1)) == -1
9 assert integrate(x**(-2), (x, 1, oo)) == 1
12 def diff(expr, sym):
13 from sympy.core import Derivative
14 if isinstance(sym, Symbol):
15 return Derivative(expr, sym)
16 else:
17 return Derivative(expr, sym[0]==[sym[1], sym[2]])
20 def test_basics():
21 e=(t+1)**2
22 assert integrate(e, (t,0,x), evaluate=False).diff(x)==((1+x)**2).expand()
23 assert integrate(e, (t,0,x), evaluate=False).diff(a)==0
25 assert integrate(e, (t,a,x), evaluate=False).diff(x)==((1+x)**2).expand()
26 assert integrate(e, (t,x,a), evaluate=False).diff(x)==(-(1+x)**2).expand()
28 assert integrate(t**2, (t,x,2*x), evaluate=False).diff(x)==7*x**2
30 @XFAIL
31 def test_unevaluated():
32 py.test.raises(IntegralError,"integrate(e, (t,0,x), evaluate=False).diff(t)")
33 py.test.raises(IntegralError,"integrate(e, t, evaluate=False).diff(x)")
37 def test_integration():
38 assert integrate(0, (t,0,x)) == 0
39 assert integrate(3, (t,0,x)) == 3*x
40 assert integrate(t, (t,0,x)) == x**2/2
41 assert integrate(3*t, (t,0,x))== 3*x**2/2
42 assert integrate(3*t**2, (t,0,x)) == x**3
43 assert integrate(1/t, (t,1,x)) == log(x)
44 assert integrate(-1/t**2, (t,1,x)) == 1/x-1
45 assert integrate(t**2+5*t-8, (t,0,x)) == x**3/3+5*x**2/2-8*x
46 assert integrate(x**2, x) == x**3/3
47 assert integrate((3*t*x)**5, x) == (3*t)**5 * x**6 / 6
49 b = Symbol("b")
50 c = Symbol("c")
51 assert integrate(a*t, (t,0,x))==a*x**2/2
52 assert integrate(a*t**4, (t,0,x))==a*x**5/5
53 assert integrate(a*t**2+b*t+c, (t,0,x))==a*x**3/3+b*x**2/2+c*x
55 def test_multiple_integration():
56 y = Symbol('y')
57 assert integrate((x**2)*(y**2), (x,0,1), (y,-1,2)) == Rational(1)
58 assert integrate((y**2)*(x**2), x, y) == Rational(1,9)*(x**3)*(y**3)
61 def test_issue433():
62 assert integrate(exp(-x), (x,0,oo)) == 1
64 def test_issue461():
65 assert integrate(x**Rational(3,2), x) == 2*x**Rational(5,2)/5
66 assert integrate(x**Rational(1,2), x) == 2*x**Rational(3,2)/3
67 assert integrate(x**Rational(-3,2), x) == -2*x**Rational(-1,2)