fix series of floor and ceiling
[sympy.git] / sympy / series / tests / test_limits.py
blob1de9b9f8a6db1a9b9f412e9345768d11af3f5685
1 from sympy import limit, exp, oo, log, sqrt, Limit, sin, floor, cos, ceiling, \
2 atan, Symbol
3 from sympy.abc import x, y, z
4 from sympy.utilities.pytest import XFAIL
6 def test_basic1():
7 assert limit(x, x, oo) == oo
8 assert limit(x, x, -oo) == -oo
9 assert limit(-x, x, oo) == -oo
10 assert limit(x**2, x, -oo) == oo
11 assert limit(-x**2, x, oo) == -oo
12 assert limit(x*log(x), x, 0, dir="+") == 0
13 assert limit(1/x,x,oo) == 0
14 assert limit(exp(x),x,oo) == oo
15 assert limit(-exp(x),x,oo) == -oo
16 assert limit(exp(x)/x,x,oo) == oo
17 assert limit(1/x-exp(-x),x,oo) == 0
18 assert limit(x+1/x,x,oo) == oo
21 def test_basic2():
22 assert limit(x**x, x, 0, dir="+") == 1
23 assert limit((exp(x)-1)/x, x, 0) == 1
24 assert limit(1+1/x,x,oo) == 1
25 assert limit(-exp(1/x),x,oo) == -1
26 assert limit(x+exp(-x),x,oo) == oo
27 assert limit(x+exp(-x**2),x,oo) == oo
28 assert limit(x+exp(-exp(x)),x,oo) == oo
29 assert limit(13+1/x-exp(-x),x,oo) == 13
31 def test_basic3():
32 assert limit(1/x, x, 0, dir="+") == oo
33 assert limit(1/x, x, 0, dir="-") == -oo
35 def test_basic3():
36 assert limit(2*x + y*x, x, 0) == 0
37 assert limit(2*x + y*x, x, 1) == 2+y
38 assert limit(2*x**8 + y*x**(-3), x, -2) == 512-y/8
39 assert limit(sqrt(x+1)-sqrt(x),x,oo)==0
41 def test_issue786():
42 assert limit(x*y+x*z, z, 2) == x*y+2*x
44 def test_Limit():
45 assert Limit(sin(x)/x, x, 0) != 1
46 assert Limit(sin(x)/x, x, 0).doit() == 1
48 def test_floor():
49 assert limit(floor(x), x, -2, "+") == -2
50 assert limit(floor(x), x, -2, "-") == -3
51 assert limit(floor(x), x, -1, "+") == -1
52 assert limit(floor(x), x, -1, "-") == -2
53 assert limit(floor(x), x, 0, "+") == 0
54 assert limit(floor(x), x, 0, "-") == -1
55 assert limit(floor(x), x, 1, "+") == 1
56 assert limit(floor(x), x, 1, "-") == 0
57 assert limit(floor(x), x, 2, "+") == 2
58 assert limit(floor(x), x, 2, "-") == 1
59 assert limit(floor(x), x, 248, "+") == 248
60 assert limit(floor(x), x, 248, "-") == 247
62 # note: if any of the tests below fails, just comment it out. General fix
63 # needs better assumptions handling.
65 # this doesn't work, it requires robust assumptions:
66 assert limit(floor(sin(x)), x, 0, "+") == 0
67 assert limit(floor(sin(x)), x, 0, "-") == -1
68 assert limit(floor(cos(x)), x, 0, "+") == 0
69 assert limit(floor(cos(x)), x, 0, "-") == 0
71 # this doesn't work, it requires robust assumptions:
72 assert limit(floor(5+sin(x)), x, 0, "+") == 5
73 #assert limit(floor(5+sin(x)), x, 0, "-") == 4
74 #assert limit(floor(5+cos(x)), x, 0, "+") == 5
75 #assert limit(floor(5+cos(x)), x, 0, "-") == 5
77 def test_ceiling():
78 assert limit(ceiling(x), x, -2, "+") == -1
79 assert limit(ceiling(x), x, -2, "-") == -2
80 assert limit(ceiling(x), x, -1, "+") == 0
81 assert limit(ceiling(x), x, -1, "-") == -1
82 assert limit(ceiling(x), x, 0, "+") == 1
83 assert limit(ceiling(x), x, 0, "-") == 0
84 assert limit(ceiling(x), x, 1, "+") == 2
85 assert limit(ceiling(x), x, 1, "-") == 1
86 assert limit(ceiling(x), x, 2, "+") == 3
87 assert limit(ceiling(x), x, 2, "-") == 2
88 assert limit(ceiling(x), x, 248, "+") == 249
89 assert limit(ceiling(x), x, 248, "-") == 248
91 # note: if any of the tests below fails, just comment it out. General fix
92 # needs better assumptions handling.
94 # this doesn't work, it requires robust assumptions:
95 #assert limit(ceiling(sin(x)), x, 0, "+") == 1
96 assert limit(ceiling(sin(x)), x, 0, "-") == 0
97 assert limit(ceiling(cos(x)), x, 0, "+") == 1
98 assert limit(ceiling(cos(x)), x, 0, "-") == 1
100 # this doesn't work, it requires robust assumptions:
101 #assert limit(ceiling(5+sin(x)), x, 0, "+") == 6
102 assert limit(ceiling(5+sin(x)), x, 0, "-") == 5
103 assert limit(ceiling(5+cos(x)), x, 0, "+") == 6
104 assert limit(ceiling(5+cos(x)), x, 0, "-") == 6
106 def test_atan():
107 x = Symbol("x", real=True)
108 assert limit(atan(x)*sin(1/x), x, 0) == 0
110 def test_abs():
111 assert limit(abs(x), x, 0) == 0
112 assert limit(abs(sin(x)), x, 0) == 0
113 assert limit(abs(cos(x)), x, 0) == 1
115 def test_heuristic():
116 x = Symbol("x", real=True)
117 assert limit(log(2+sqrt(atan(x)*sin(1/x))), x, 0) == log(2)
119 def test_issue772():
120 f = -1/z*exp(-z*x)
121 assert limit(f, x, oo) == 0
122 assert f.limit(x, oo) == 0
124 def test_exponential():
125 n = Symbol('n')
126 assert limit((1+x/n)**n,n,oo) == exp(x)
127 assert limit((1+x/(2*n))**n,n,oo) == exp(x/2)
128 assert limit((1+x/(2*n+1))**n,n,oo) == exp(x/2)
129 assert limit(((x-1)/(x+1))**x,x,oo) == exp(-2)
131 @XFAIL
132 def test_exponential2():
133 n = Symbol('n')
134 assert limit((1+x/(n+sin(n)))**n,n,oo) == exp(x)