<s> from itertools import product as cartes <EOL> from sympy import ( <EOL> limit , exp , oo , log , sqrt , Limit , sin , floor , cos , ceiling , <EOL> atan , gamma , Symbol , S , pi , Integral , Rational , I , EulerGamma , <EOL> tan , cot , integrate , Sum , sign , Function , subfactorial , symbols , <EOL> binomial , simplify , frac ) <EOL> from sympy . calculus . util import AccumBounds <EOL> from sympy . core . add import Add <EOL> from sympy . core . mul import Mul <EOL> from sympy . series . limits import heuristics <EOL> from sympy . series . order import Order <EOL> from sympy . utilities . pytest import XFAIL , raises <EOL> from sympy . abc import x , y , z , k <EOL> n = Symbol ( '<STR_LIT:n>' , integer = True , positive = True ) <EOL> def test_basic1 ( ) : <EOL> assert limit ( x , x , oo ) == oo <EOL> assert limit ( x , x , - oo ) == - oo <EOL> assert limit ( - x , x , oo ) == - oo <EOL> assert limit ( x ** <NUM_LIT:2> , x , - oo ) == oo <EOL> assert limit ( - x ** <NUM_LIT:2> , x , oo ) == - oo <EOL> assert limit ( x * log ( x ) , x , <NUM_LIT:0> , dir = "<STR_LIT:+>" ) == <NUM_LIT:0> <EOL> assert limit ( <NUM_LIT:1> / x , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( exp ( x ) , x , oo ) == oo <EOL> assert limit ( - exp ( x ) , x , oo ) == - oo <EOL> assert limit ( exp ( x ) / x , x , oo ) == oo <EOL> assert limit ( <NUM_LIT:1> / x - exp ( - x ) , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( x + <NUM_LIT:1> / x , x , oo ) == oo <EOL> assert limit ( x - x ** <NUM_LIT:2> , x , oo ) == - oo <EOL> assert limit ( ( <NUM_LIT:1> + x ) ** ( <NUM_LIT:1> + sqrt ( <NUM_LIT:2> ) ) , x , <NUM_LIT:0> ) == <NUM_LIT:1> <EOL> assert limit ( ( <NUM_LIT:1> + x ) ** oo , x , <NUM_LIT:0> ) == oo <EOL> assert limit ( ( <NUM_LIT:1> + x ) ** oo , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == <NUM_LIT:0> <EOL> assert limit ( ( <NUM_LIT:1> + x + y ) ** oo , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == ( <NUM_LIT:1> + y ) ** ( oo ) <EOL> assert limit ( y / x / log ( x ) , x , <NUM_LIT:0> ) == - oo * sign ( y ) <EOL> assert limit ( cos ( x + y ) / x , x , <NUM_LIT:0> ) == sign ( cos ( y ) ) * oo <EOL> assert limit ( gamma ( <NUM_LIT:1> / x + <NUM_LIT:3> ) , x , oo ) == <NUM_LIT:2> <EOL> assert limit ( S . NaN , x , - oo ) == S . NaN <EOL> assert limit ( Order ( <NUM_LIT:2> ) * x , x , S . NaN ) == S . NaN <EOL> assert limit ( <NUM_LIT:1> / ( x - <NUM_LIT:1> ) , x , <NUM_LIT:1> , dir = "<STR_LIT:+>" ) == oo <EOL> assert limit ( <NUM_LIT:1> / ( x - <NUM_LIT:1> ) , x , <NUM_LIT:1> , dir = "<STR_LIT:->" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / ( <NUM_LIT:5> - x ) ** <NUM_LIT:3> , x , <NUM_LIT:5> , dir = "<STR_LIT:+>" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / ( <NUM_LIT:5> - x ) ** <NUM_LIT:3> , x , <NUM_LIT:5> , dir = "<STR_LIT:->" ) == oo <EOL> assert limit ( <NUM_LIT:1> / sin ( x ) , x , pi , dir = "<STR_LIT:+>" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / sin ( x ) , x , pi , dir = "<STR_LIT:->" ) == oo <EOL> assert limit ( <NUM_LIT:1> / cos ( x ) , x , pi / <NUM_LIT:2> , dir = "<STR_LIT:+>" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / cos ( x ) , x , pi / <NUM_LIT:2> , dir = "<STR_LIT:->" ) == oo <EOL> assert limit ( <NUM_LIT:1> / tan ( x ** <NUM_LIT:3> ) , x , ( <NUM_LIT:2> * pi ) ** ( S ( <NUM_LIT:1> ) / <NUM_LIT:3> ) , dir = "<STR_LIT:+>" ) == oo <EOL> assert limit ( <NUM_LIT:1> / tan ( x ** <NUM_LIT:3> ) , x , ( <NUM_LIT:2> * pi ) ** ( S ( <NUM_LIT:1> ) / <NUM_LIT:3> ) , dir = "<STR_LIT:->" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / cot ( x ) ** <NUM_LIT:3> , x , ( <NUM_LIT:3> * pi / <NUM_LIT:2> ) , dir = "<STR_LIT:+>" ) == - oo <EOL> assert limit ( <NUM_LIT:1> / cot ( x ) ** <NUM_LIT:3> , x , ( <NUM_LIT:3> * pi / <NUM_LIT:2> ) , dir = "<STR_LIT:->" ) == oo <EOL> assert limit ( <NUM_LIT:1> + <NUM_LIT:1> / x , x , <NUM_LIT:0> ) == oo <EOL> assert limit ( <NUM_LIT:1> + <NUM_LIT:1> / x , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == - oo <EOL> assert limit ( x ** ( - <NUM_LIT:2> ) , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == oo <EOL> assert limit ( x ** ( - <NUM_LIT:3> ) , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == - oo <EOL> assert limit ( <NUM_LIT:1> / sqrt ( x ) , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == ( - oo ) * I <EOL> assert limit ( x ** <NUM_LIT:2> , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == <NUM_LIT:0> <EOL> assert limit ( sqrt ( x ) , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == <NUM_LIT:0> <EOL> assert limit ( x ** - pi , x , <NUM_LIT:0> , dir = '<STR_LIT:->' ) == oo * sign ( ( - <NUM_LIT:1> ) ** ( - pi ) ) <EOL> assert limit ( ( <NUM_LIT:1> + cos ( x ) ) ** oo , x , <NUM_LIT:0> ) == oo <EOL> def test_basic2 ( ) : <EOL> assert limit ( x ** x , x , <NUM_LIT:0> , dir = "<STR_LIT:+>" ) == <NUM_LIT:1> <EOL> assert limit ( ( exp ( x ) - <NUM_LIT:1> ) / x , x , <NUM_LIT:0> ) == <NUM_LIT:1> <EOL> assert limit ( <NUM_LIT:1> + <NUM_LIT:1> / x , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( - exp ( <NUM_LIT:1> / x ) , x , oo ) == - <NUM_LIT:1> <EOL> assert limit ( x + exp ( - x ) , x , oo ) == oo <EOL> assert limit ( x + exp ( - x ** <NUM_LIT:2> ) , x , oo ) == oo <EOL> assert limit ( x + exp ( - exp ( x ) ) , x , oo ) == oo <EOL> assert limit ( <NUM_LIT> + <NUM_LIT:1> / x - exp ( - x ) , x , oo ) == <NUM_LIT> <EOL> def test_basic3 ( ) : <EOL> assert limit ( <NUM_LIT:1> / x , x , <NUM_LIT:0> , dir = "<STR_LIT:+>" ) == oo <EOL> assert limit ( <NUM_LIT:1> / x , x , <NUM_LIT:0> , dir = "<STR_LIT:->" ) == - oo <EOL> def test_basic4 ( ) : <EOL> assert limit ( <NUM_LIT:2> * x + y * x , x , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> assert limit ( <NUM_LIT:2> * x + y * x , x , <NUM_LIT:1> ) == <NUM_LIT:2> + y <EOL> assert limit ( <NUM_LIT:2> * x ** <NUM_LIT:8> + y * x ** ( - <NUM_LIT:3> ) , x , - <NUM_LIT:2> ) == <NUM_LIT> - y / <NUM_LIT:8> <EOL> assert limit ( sqrt ( x + <NUM_LIT:1> ) - sqrt ( x ) , x , oo ) == <NUM_LIT:0> <EOL> assert integrate ( <NUM_LIT:1> / ( x ** <NUM_LIT:3> + <NUM_LIT:1> ) , ( x , <NUM_LIT:0> , oo ) ) == <NUM_LIT:2> * pi * sqrt ( <NUM_LIT:3> ) / <NUM_LIT:9> <EOL> def test_basic5 ( ) : <EOL> class my ( Function ) : <EOL> @ classmethod <EOL> def eval ( cls , arg ) : <EOL> if arg is S . Infinity : <EOL> return S . NaN <EOL> assert limit ( my ( x ) , x , oo ) == Limit ( my ( x ) , x , oo ) <EOL> def test_issue_3885 ( ) : <EOL> assert limit ( x * y + x * z , z , <NUM_LIT:2> ) == x * y + <NUM_LIT:2> * x <EOL> def test_Limit ( ) : <EOL> assert Limit ( sin ( x ) / x , x , <NUM_LIT:0> ) != <NUM_LIT:1> <EOL> assert Limit ( sin ( x ) / x , x , <NUM_LIT:0> ) . doit ( ) == <NUM_LIT:1> <EOL> def test_floor ( ) : <EOL> assert limit ( floor ( x ) , x , - <NUM_LIT:2> , "<STR_LIT:+>" ) == - <NUM_LIT:2> <EOL> assert limit ( floor ( x ) , x , - <NUM_LIT:2> , "<STR_LIT:->" ) == - <NUM_LIT:3> <EOL> assert limit ( floor ( x ) , x , - <NUM_LIT:1> , "<STR_LIT:+>" ) == - <NUM_LIT:1> <EOL> assert limit ( floor ( x ) , x , - <NUM_LIT:1> , "<STR_LIT:->" ) == - <NUM_LIT:2> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:0> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == - <NUM_LIT:1> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:1> , "<STR_LIT:+>" ) == <NUM_LIT:1> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:1> , "<STR_LIT:->" ) == <NUM_LIT:0> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:2> , "<STR_LIT:+>" ) == <NUM_LIT:2> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT:2> , "<STR_LIT:->" ) == <NUM_LIT:1> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT> , "<STR_LIT:+>" ) == <NUM_LIT> <EOL> assert limit ( floor ( x ) , x , <NUM_LIT> , "<STR_LIT:->" ) == <NUM_LIT> <EOL> def test_floor_requires_robust_assumptions ( ) : <EOL> assert limit ( floor ( sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:0> <EOL> assert limit ( floor ( sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == - <NUM_LIT:1> <EOL> assert limit ( floor ( cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:0> <EOL> assert limit ( floor ( cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:0> <EOL> assert limit ( floor ( <NUM_LIT:5> + sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:5> <EOL> assert limit ( floor ( <NUM_LIT:5> + sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:4> <EOL> assert limit ( floor ( <NUM_LIT:5> + cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:5> <EOL> assert limit ( floor ( <NUM_LIT:5> + cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:5> <EOL> def test_ceiling ( ) : <EOL> assert limit ( ceiling ( x ) , x , - <NUM_LIT:2> , "<STR_LIT:+>" ) == - <NUM_LIT:1> <EOL> assert limit ( ceiling ( x ) , x , - <NUM_LIT:2> , "<STR_LIT:->" ) == - <NUM_LIT:2> <EOL> assert limit ( ceiling ( x ) , x , - <NUM_LIT:1> , "<STR_LIT:+>" ) == <NUM_LIT:0> <EOL> assert limit ( ceiling ( x ) , x , - <NUM_LIT:1> , "<STR_LIT:->" ) == - <NUM_LIT:1> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:1> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:0> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:1> , "<STR_LIT:+>" ) == <NUM_LIT:2> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:1> , "<STR_LIT:->" ) == <NUM_LIT:1> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:2> , "<STR_LIT:+>" ) == <NUM_LIT:3> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT:2> , "<STR_LIT:->" ) == <NUM_LIT:2> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT> , "<STR_LIT:+>" ) == <NUM_LIT> <EOL> assert limit ( ceiling ( x ) , x , <NUM_LIT> , "<STR_LIT:->" ) == <NUM_LIT> <EOL> def test_ceiling_requires_robust_assumptions ( ) : <EOL> assert limit ( ceiling ( sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:1> <EOL> assert limit ( ceiling ( sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:0> <EOL> assert limit ( ceiling ( cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:1> <EOL> assert limit ( ceiling ( cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:1> <EOL> assert limit ( ceiling ( <NUM_LIT:5> + sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:6> <EOL> assert limit ( ceiling ( <NUM_LIT:5> + sin ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:5> <EOL> assert limit ( ceiling ( <NUM_LIT:5> + cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:+>" ) == <NUM_LIT:6> <EOL> assert limit ( ceiling ( <NUM_LIT:5> + cos ( x ) ) , x , <NUM_LIT:0> , "<STR_LIT:->" ) == <NUM_LIT:6> <EOL> def test_atan ( ) : <EOL> x = Symbol ( "<STR_LIT:x>" , real = True ) <EOL> assert limit ( atan ( x ) * sin ( <NUM_LIT:1> / x ) , x , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> assert limit ( atan ( x ) + sqrt ( x + <NUM_LIT:1> ) - sqrt ( x ) , x , oo ) == pi / <NUM_LIT:2> <EOL> def test_abs ( ) : <EOL> assert limit ( abs ( x ) , x , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> assert limit ( abs ( sin ( x ) ) , x , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> assert limit ( abs ( cos ( x ) ) , x , <NUM_LIT:0> ) == <NUM_LIT:1> <EOL> assert limit ( abs ( sin ( x + <NUM_LIT:1> ) ) , x , <NUM_LIT:0> ) == sin ( <NUM_LIT:1> ) <EOL> def test_heuristic ( ) : <EOL> x = Symbol ( "<STR_LIT:x>" , real = True ) <EOL> assert heuristics ( sin ( <NUM_LIT:1> / x ) + atan ( x ) , x , <NUM_LIT:0> , '<STR_LIT:+>' ) == AccumBounds ( - <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> assert limit ( log ( <NUM_LIT:2> + sqrt ( atan ( x ) ) * sqrt ( sin ( <NUM_LIT:1> / x ) ) ) , x , <NUM_LIT:0> ) == log ( <NUM_LIT:2> ) <EOL> def test_issue_3871 ( ) : <EOL> z = Symbol ( "<STR_LIT:z>" , positive = True ) <EOL> f = - <NUM_LIT:1> / z * exp ( - z * x ) <EOL> assert limit ( f , x , oo ) == <NUM_LIT:0> <EOL> assert f . limit ( x , oo ) == <NUM_LIT:0> <EOL> def test_exponential ( ) : <EOL> n = Symbol ( '<STR_LIT:n>' ) <EOL> x = Symbol ( '<STR_LIT:x>' , real = True ) <EOL> assert limit ( ( <NUM_LIT:1> + x / n ) ** n , n , oo ) == exp ( x ) <EOL> assert limit ( ( <NUM_LIT:1> + x / ( <NUM_LIT:2> * n ) ) ** n , n , oo ) == exp ( x / <NUM_LIT:2> ) <EOL> assert limit ( ( <NUM_LIT:1> + x / ( <NUM_LIT:2> * n + <NUM_LIT:1> ) ) ** n , n , oo ) == exp ( x / <NUM_LIT:2> ) <EOL> assert limit ( ( ( x - <NUM_LIT:1> ) / ( x + <NUM_LIT:1> ) ) ** x , x , oo ) == exp ( - <NUM_LIT:2> ) <EOL> assert limit ( <NUM_LIT:1> + ( <NUM_LIT:1> + <NUM_LIT:1> / x ) ** x , x , oo ) == <NUM_LIT:1> + S . Exp1 <EOL> @ XFAIL <EOL> def test_exponential2 ( ) : <EOL> n = Symbol ( '<STR_LIT:n>' ) <EOL> assert limit ( ( <NUM_LIT:1> + x / ( n + sin ( n ) ) ) ** n , n , oo ) == exp ( x ) <EOL> def test_doit ( ) : <EOL> f = Integral ( <NUM_LIT:2> * x , x ) <EOL> l = Limit ( f , x , oo ) <EOL> assert l . doit ( ) == oo <EOL> def test_AccumBounds ( ) : <EOL> assert limit ( sin ( k ) - sin ( k + <NUM_LIT:1> ) , k , oo ) == AccumBounds ( - <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> assert limit ( cos ( k ) - cos ( k + <NUM_LIT:1> ) + <NUM_LIT:1> , k , oo ) == AccumBounds ( - <NUM_LIT:1> , <NUM_LIT:3> ) <EOL> assert limit ( sin ( k ) - sin ( k ) * cos ( k ) , k , oo ) == AccumBounds ( - <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> t1 = Mul ( S ( <NUM_LIT:1> ) / <NUM_LIT:2> , <NUM_LIT:1> / ( - <NUM_LIT:1> + cos ( <NUM_LIT:1> ) ) , Add ( AccumBounds ( - <NUM_LIT:3> , <NUM_LIT:1> ) , cos ( <NUM_LIT:1> ) ) ) <EOL> assert limit ( simplify ( Sum ( cos ( n ) . rewrite ( exp ) , ( n , <NUM_LIT:0> , k ) ) . doit ( ) . rewrite ( sin ) ) , k , oo ) == t1 <EOL> t2 = Mul ( Add ( AccumBounds ( - <NUM_LIT:2> , <NUM_LIT:2> ) , sin ( <NUM_LIT:1> ) ) , <NUM_LIT:1> / ( - <NUM_LIT:2> * cos ( <NUM_LIT:1> ) + <NUM_LIT:2> ) ) <EOL> assert limit ( simplify ( Sum ( sin ( n ) . rewrite ( exp ) , ( n , <NUM_LIT:0> , k ) ) . doit ( ) . rewrite ( sin ) ) , k , oo ) == t2 <EOL> assert limit ( frac ( x ) ** x , x , oo ) == AccumBounds ( <NUM_LIT:0> , oo ) <EOL> assert limit ( ( ( sin ( x ) + <NUM_LIT:1> ) / <NUM_LIT:2> ) ** x , x , oo ) == AccumBounds ( <NUM_LIT:0> , oo ) <EOL> @ XFAIL <EOL> def test_doit2 ( ) : <EOL> f = Integral ( <NUM_LIT:2> * x , x ) <EOL> l = Limit ( f , x , oo ) <EOL> assert l . doit ( deep = False ) == l <EOL> def test_issue_3792 ( ) : <EOL> assert limit ( ( <NUM_LIT:1> - cos ( x ) ) / x ** <NUM_LIT:2> , x , S ( <NUM_LIT:1> ) / <NUM_LIT:2> ) == <NUM_LIT:4> - <NUM_LIT:4> * cos ( S ( <NUM_LIT:1> ) / <NUM_LIT:2> ) <EOL> assert limit ( sin ( sin ( x + <NUM_LIT:1> ) + <NUM_LIT:1> ) , x , <NUM_LIT:0> ) == sin ( <NUM_LIT:1> + sin ( <NUM_LIT:1> ) ) <EOL> assert limit ( abs ( sin ( x + <NUM_LIT:1> ) + <NUM_LIT:1> ) , x , <NUM_LIT:0> ) == <NUM_LIT:1> + sin ( <NUM_LIT:1> ) <EOL> def test_issue_4090 ( ) : <EOL> assert limit ( <NUM_LIT:1> / ( x + <NUM_LIT:3> ) , x , <NUM_LIT:2> ) == S ( <NUM_LIT:1> ) / <NUM_LIT:5> <EOL> assert limit ( <NUM_LIT:1> / ( x + pi ) , x , <NUM_LIT:2> ) == S ( <NUM_LIT:1> ) / ( <NUM_LIT:2> + pi ) <EOL> assert limit ( log ( x ) / ( x ** <NUM_LIT:2> + <NUM_LIT:3> ) , x , <NUM_LIT:2> ) == log ( <NUM_LIT:2> ) / <NUM_LIT:7> <EOL> assert limit ( log ( x ) / ( x ** <NUM_LIT:2> + pi ) , x , <NUM_LIT:2> ) == log ( <NUM_LIT:2> ) / ( <NUM_LIT:4> + pi ) <EOL> def test_issue_4547 ( ) : <EOL> assert limit ( cot ( x ) , x , <NUM_LIT:0> , dir = '<STR_LIT:+>' ) == oo <EOL> assert limit ( cot ( x ) , x , pi / <NUM_LIT:2> , dir = '<STR_LIT:+>' ) == <NUM_LIT:0> <EOL> def test_issue_5164 ( ) : <EOL> assert limit ( x ** <NUM_LIT:0.5> , x , oo ) == oo ** <NUM_LIT:0.5> == oo <EOL> assert limit ( x ** <NUM_LIT:0.5> , x , <NUM_LIT:16> ) == S ( <NUM_LIT:16> ) ** <NUM_LIT:0.5> <EOL> assert limit ( x ** <NUM_LIT:0.5> , x , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> assert limit ( x ** ( - <NUM_LIT:0.5> ) , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( x ** ( - <NUM_LIT:0.5> ) , x , <NUM_LIT:4> ) == S ( <NUM_LIT:4> ) ** ( - <NUM_LIT:0.5> ) <EOL> def test_issue_5183 ( ) : <EOL> tests = list ( cartes ( [ x , - x ] , <EOL> [ - <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:3> , Rational ( <NUM_LIT:1> , <NUM_LIT:2> ) , Rational ( <NUM_LIT:2> , <NUM_LIT:3> ) ] , <EOL> [ '<STR_LIT:->' , '<STR_LIT:+>' ] ) ) <EOL> results = ( oo , oo , - oo , oo , - oo * I , oo , - oo * ( - <NUM_LIT:1> ) ** Rational ( <NUM_LIT:1> , <NUM_LIT:3> ) , oo , <EOL> <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <EOL> oo , oo , oo , - oo , oo , - oo * I , oo , - oo * ( - <NUM_LIT:1> ) ** Rational ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> assert len ( tests ) == len ( results ) <EOL> for i , ( args , res ) in enumerate ( zip ( tests , results ) ) : <EOL> y , s , e , d = args <EOL> eq = y ** ( s * e ) <EOL> try : <EOL> assert limit ( eq , x , <NUM_LIT:0> , dir = d ) == res <EOL> except AssertionError : <EOL> if <NUM_LIT:0> : <EOL> print ( ) <EOL> print ( i , res , eq , d , limit ( eq , x , <NUM_LIT:0> , dir = d ) ) <EOL> else : <EOL> assert None <EOL> def test_issue_5184 ( ) : <EOL> assert limit ( sin ( x ) / x , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( atan ( x ) , x , oo ) == pi / <NUM_LIT:2> <EOL> assert limit ( gamma ( x ) , x , oo ) == oo <EOL> assert limit ( cos ( x ) / x , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( gamma ( x ) , x , Rational ( <NUM_LIT:1> , <NUM_LIT:2> ) ) == sqrt ( pi ) <EOL> r = Symbol ( '<STR_LIT:r>' , real = True , finite = True ) <EOL> assert limit ( r * sin ( <NUM_LIT:1> / r ) , r , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> def test_issue_5229 ( ) : <EOL> assert limit ( ( <NUM_LIT:1> + y ) ** ( <NUM_LIT:1> / y ) - S . Exp1 , y , <NUM_LIT:0> ) == <NUM_LIT:0> <EOL> def test_issue_4546 ( ) : <EOL> tests = list ( cartes ( [ cot , tan ] , <EOL> [ - pi / <NUM_LIT:2> , <NUM_LIT:0> , pi / <NUM_LIT:2> , pi , <NUM_LIT:3> * pi / <NUM_LIT:2> ] , <EOL> [ '<STR_LIT:->' , '<STR_LIT:+>' ] ) ) <EOL> results = ( <NUM_LIT:0> , <NUM_LIT:0> , - oo , oo , <NUM_LIT:0> , <NUM_LIT:0> , - oo , oo , <NUM_LIT:0> , <NUM_LIT:0> , <EOL> oo , - oo , <NUM_LIT:0> , <NUM_LIT:0> , oo , - oo , <NUM_LIT:0> , <NUM_LIT:0> , oo , - oo ) <EOL> assert len ( tests ) == len ( results ) <EOL> for i , ( args , res ) in enumerate ( zip ( tests , results ) ) : <EOL> f , l , d = args <EOL> eq = f ( x ) <EOL> try : <EOL> assert limit ( eq , x , l , dir = d ) == res <EOL> except AssertionError : <EOL> if <NUM_LIT:0> : <EOL> print ( ) <EOL> print ( i , res , eq , l , d , limit ( eq , x , l , dir = d ) ) <EOL> else : <EOL> assert None <EOL> def test_issue_3934 ( ) : <EOL> assert limit ( ( <NUM_LIT:1> + x ** log ( <NUM_LIT:3> ) ) ** ( <NUM_LIT:1> / x ) , x , <NUM_LIT:0> ) == <NUM_LIT:1> <EOL> assert limit ( ( <NUM_LIT:5> ** ( <NUM_LIT:1> / x ) + <NUM_LIT:3> ** ( <NUM_LIT:1> / x ) ) ** x , x , <NUM_LIT:0> ) == <NUM_LIT:5> <EOL> def test_calculate_series ( ) : <EOL> assert limit ( x ** ( S ( <NUM_LIT> ) / <NUM_LIT:3> ) / ( <NUM_LIT:1> + x ** ( S ( <NUM_LIT> ) / <NUM_LIT:3> ) ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( x ** <NUM_LIT> / ( <NUM_LIT:1> + x ** <NUM_LIT> ) , x , oo ) == <NUM_LIT:1> <EOL> def test_issue_5955 ( ) : <EOL> assert limit ( ( x ** <NUM_LIT:16> ) / ( <NUM_LIT:1> + x ** <NUM_LIT:16> ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( ( x ** <NUM_LIT:100> ) / ( <NUM_LIT:1> + x ** <NUM_LIT:100> ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( ( x ** <NUM_LIT> ) / ( <NUM_LIT:1> + x ** <NUM_LIT> ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( ( x ** <NUM_LIT:1000> / ( ( x + <NUM_LIT:1> ) ** <NUM_LIT:1000> + exp ( - x ) ) ) , x , oo ) == <NUM_LIT:1> <EOL> def test_newissue ( ) : <EOL> assert limit ( exp ( <NUM_LIT:1> / sin ( x ) ) / exp ( cot ( x ) ) , x , <NUM_LIT:0> ) == <NUM_LIT:1> <EOL> def test_extended_real_line ( ) : <EOL> assert limit ( x - oo , x , oo ) == - oo <EOL> assert limit ( oo - x , x , - oo ) == oo <EOL> assert limit ( x ** <NUM_LIT:2> / ( x - <NUM_LIT:5> ) - oo , x , oo ) == - oo <EOL> assert limit ( <NUM_LIT:1> / ( x + sin ( x ) ) - oo , x , <NUM_LIT:0> ) == - oo <EOL> assert limit ( oo / x , x , oo ) == oo <EOL> assert limit ( x - oo + <NUM_LIT:1> / x , x , oo ) == - oo <EOL> assert limit ( x - oo + <NUM_LIT:1> / x , x , <NUM_LIT:0> ) == - oo <EOL> @ XFAIL <EOL> def test_order_oo ( ) : <EOL> x = Symbol ( '<STR_LIT:x>' , positive = True , finite = True ) <EOL> assert Order ( x ) * oo != Order ( <NUM_LIT:1> , x ) <EOL> assert limit ( oo / ( x ** <NUM_LIT:2> - <NUM_LIT:4> ) , x , oo ) == oo <EOL> def test_issue_5436 ( ) : <EOL> raises ( NotImplementedError , lambda : limit ( exp ( x * y ) , x , oo ) ) <EOL> raises ( NotImplementedError , lambda : limit ( exp ( - x * y ) , x , oo ) ) <EOL> def test_Limit_dir ( ) : <EOL> raises ( TypeError , lambda : Limit ( x , x , <NUM_LIT:0> , dir = <NUM_LIT:0> ) ) <EOL> raises ( ValueError , lambda : Limit ( x , x , <NUM_LIT:0> , dir = '<STR_LIT:0>' ) ) <EOL> def test_polynomial ( ) : <EOL> assert limit ( ( x + <NUM_LIT:1> ) ** <NUM_LIT:1000> / ( ( x + <NUM_LIT:1> ) ** <NUM_LIT:1000> + <NUM_LIT:1> ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( ( x + <NUM_LIT:1> ) ** <NUM_LIT:1000> / ( ( x + <NUM_LIT:1> ) ** <NUM_LIT:1000> + <NUM_LIT:1> ) , x , - oo ) == <NUM_LIT:1> <EOL> def test_rational ( ) : <EOL> assert limit ( <NUM_LIT:1> / y - ( <NUM_LIT:1> / ( y + x ) + x / ( y + x ) / y ) / z , x , oo ) == ( z - <NUM_LIT:1> ) / ( y * z ) <EOL> assert limit ( <NUM_LIT:1> / y - ( <NUM_LIT:1> / ( y + x ) + x / ( y + x ) / y ) / z , x , - oo ) == ( z - <NUM_LIT:1> ) / ( y * z ) <EOL> def test_issue_5740 ( ) : <EOL> assert limit ( log ( x ) * z - log ( <NUM_LIT:2> * x ) * y , x , <NUM_LIT:0> ) == oo * sign ( y - z ) <EOL> def test_issue_6366 ( ) : <EOL> n = Symbol ( '<STR_LIT:n>' , integer = True , positive = True ) <EOL> r = ( n + <NUM_LIT:1> ) * x ** ( n + <NUM_LIT:1> ) / ( x ** ( n + <NUM_LIT:1> ) - <NUM_LIT:1> ) - x / ( x - <NUM_LIT:1> ) <EOL> assert limit ( r , x , <NUM_LIT:1> ) . simplify ( ) == n / <NUM_LIT:2> <EOL> def test_factorial ( ) : <EOL> from sympy import factorial , E <EOL> f = factorial ( x ) <EOL> assert limit ( f , x , oo ) == oo <EOL> assert limit ( x / f , x , oo ) == <NUM_LIT:0> <EOL> assert limit ( f / ( sqrt ( <NUM_LIT:2> * pi * x ) * ( x / E ) ** x ) , x , oo ) == <NUM_LIT:1> <EOL> assert limit ( f , x , - oo ) == factorial ( - oo ) <EOL> assert limit ( f , x , x ** <NUM_LIT:2> ) == factorial ( x ** <NUM_LIT:2> ) <EOL> assert limit ( f , x , - x ** <NUM_LIT:2> ) == factorial ( - x ** <NUM_LIT:2> ) <EOL> def test_issue_6560 ( ) : <EOL> e = ( <NUM_LIT:5> * x ** <NUM_LIT:3> / <NUM_LIT:4> - <NUM_LIT:3> * x / <NUM_LIT:4> + ( y * ( <NUM_LIT:3> * x ** <NUM_LIT:2> / <NUM_LIT:2> - S ( <NUM_LIT:1> ) / <NUM_LIT:2> ) + <EOL> <NUM_LIT> * x ** <NUM_LIT:4> / <NUM_LIT:8> - <NUM_LIT:15> * x ** <NUM_LIT:2> / <NUM_LIT:4> + S ( <NUM_LIT:3> ) / <NUM_LIT:8> ) / ( <NUM_LIT:2> * ( y + <NUM_LIT:1> ) ) ) <EOL> assert limit ( e , y , oo ) == ( <NUM_LIT:5> * x ** <NUM_LIT:3> + <NUM_LIT:3> * x ** <NUM_LIT:2> - <NUM_LIT:3> * x - <NUM_LIT:1> ) / <NUM_LIT:4> <EOL> def test_issue_5172 ( ) : <EOL> n = Symbol ( '<STR_LIT:n>' ) <EOL> r = Symbol ( '<STR_LIT:r>' , positive = True ) <EOL> c = Symbol ( '<STR_LIT:c>' ) <EOL> p = Symbol ( '<STR_LIT:p>' , positive = True ) <EOL> m = Symbol ( '<STR_LIT:m>' , negative = True ) <EOL> expr = ( ( <NUM_LIT:2> * n * ( n - r + <NUM_LIT:1> ) / ( n + r * ( n - r + <NUM_LIT:1> ) ) ) ** c + <EOL> ( r - <NUM_LIT:1> ) * ( n * ( n - r + <NUM_LIT:2> ) / ( n + r * ( n - r + <NUM_LIT:1> ) ) ) ** c - n ) / ( n ** c - n ) <EOL> expr = expr . subs ( c , c + <NUM_LIT:1> ) <EOL> raises ( NotImplementedError , lambda : limit ( expr , n , oo ) ) <EOL> assert limit ( expr . subs ( c , m ) , n , oo ) == <NUM_LIT:1> <EOL> assert limit ( expr . subs ( c , p ) , n , oo ) . simplify ( ) == ( <NUM_LIT:2> ** ( p + <NUM_LIT:1> ) + r - <NUM_LIT:1> ) / ( r + <NUM_LIT:1> ) ** ( p + <NUM_LIT:1> ) <EOL> def test_issue_7088 ( ) : <EOL> a = Symbol ( '<STR_LIT:a>' ) <EOL> assert limit ( sqrt ( x / ( x + a ) ) , x , oo ) == <NUM_LIT:1> <EOL> def test_issue_6364 ( ) : <EOL> a = Symbol ( '<STR_LIT:a>' ) <EOL> e = z / ( <NUM_LIT:1> - sqrt ( <NUM_LIT:1> + z ) * sin ( a ) ** <NUM_LIT:2> - sqrt ( <NUM_LIT:1> - z ) * cos ( a ) ** <NUM_LIT:2> ) <EOL> assert limit ( e , z , <NUM_LIT:0> ) . simplify ( ) == <NUM_LIT:2> / cos ( <NUM_LIT:2> * a ) <EOL> def test_issue_4099 ( ) : <EOL> a = Symbol ( '<STR_LIT:a>' ) <EOL> assert limit ( a / x , x , <NUM_LIT:0> ) == oo * sign ( a ) <EOL> assert limit ( - a / x , x , <NUM_LIT:0> ) == - oo * sign ( a ) <EOL> assert limit ( - a * x , x , oo ) == - oo * sign ( a ) <EOL> assert limit ( a * x , x , oo ) == oo * sign ( a ) <EOL> def test_issue_4503 ( ) : <EOL> dx = Symbol ( '<STR_LIT>' ) <EOL> assert limit ( ( sqrt ( <NUM_LIT:1> + exp ( x + dx ) ) - sqrt ( <NUM_LIT:1> + exp ( x ) ) ) / dx , dx , <NUM_LIT:0> ) == exp ( x ) / ( <NUM_LIT:2> * sqrt ( exp ( x ) + <NUM_LIT:1> ) ) <EOL> def test_issue_8730 ( ) : <EOL> assert limit ( subfactorial ( x ) , x , oo ) == oo <EOL> def test_issue_10801 ( ) : <EOL> assert limit ( <NUM_LIT:16> ** k / ( k * binomial ( <NUM_LIT:2> * k , k ) ** <NUM_LIT:2> ) , k , oo ) == pi <EOL> def test_issue_9205 ( ) : <EOL> x , y , a = symbols ( '<STR_LIT>' ) <EOL> assert Limit ( x , x , a ) . free_symbols == { a } <EOL> assert Limit ( x , x , a , '<STR_LIT:->' ) . free_symbols == { a } <EOL> assert Limit ( x + y , x + y , a ) . free_symbols == { a } <EOL> assert Limit ( - x ** <NUM_LIT:2> + y , x ** <NUM_LIT:2> , a ) . free_symbols == { y , a } <EOL> def test_limit_seq ( ) : <EOL> assert limit ( Sum ( <NUM_LIT:1> / x , ( x , <NUM_LIT:1> , y ) ) - log ( y ) , y , oo ) == EulerGamma <EOL> assert limit ( Sum ( <NUM_LIT:1> / x , ( x , <NUM_LIT:1> , y ) ) - <NUM_LIT:1> / y , y , oo ) == S . Infinity <EOL> assert ( limit ( binomial ( <NUM_LIT:2> * x , x ) / Sum ( binomial ( <NUM_LIT:2> * y , y ) , ( y , <NUM_LIT:1> , x ) ) , x , oo ) == <EOL> S ( <NUM_LIT:3> ) / <NUM_LIT:4> ) <EOL> assert ( limit ( Sum ( y ** <NUM_LIT:2> * Sum ( <NUM_LIT:2> ** z / z , ( z , <NUM_LIT:1> , y ) ) , ( y , <NUM_LIT:1> , x ) ) / <EOL> ( <NUM_LIT:2> ** x * x ) , x , oo ) == <NUM_LIT:4> ) </s>
