1 from sympy
import limit
, exp
, oo
, log
, sqrt
, Limit
, sin
, floor
, cos
, ceiling
, \
3 from sympy
.abc
import x
, y
, z
4 from sympy
.utilities
.pytest
import XFAIL
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
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
32 assert limit(1/x
, x
, 0, dir="+") == oo
33 assert limit(1/x
, x
, 0, dir="-") == -oo
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
42 assert limit(x
*y
+x
*z
, z
, 2) == x
*y
+2*x
45 assert Limit(sin(x
)/x
, x
, 0) != 1
46 assert Limit(sin(x
)/x
, x
, 0).doit() == 1
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
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
107 x
= Symbol("x", real
=True)
108 assert limit(atan(x
)*sin(1/x
), x
, 0) == 0
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)
121 assert limit(f
, x
, oo
) == 0
122 assert f
.limit(x
, oo
) == 0
124 def test_exponential():
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)
132 def test_exponential2():
134 assert limit((1+x
/(n
+sin(n
)))**n
,n
,oo
) == exp(x
)