1from sympy import (Symbol, exp, log, sqrt, O, oo, sin, cos, PoleError) 2from sympy.abc import x 3 4from sympy.testing.pytest import raises 5 6def test_simple(): 7 # Gruntz' theses pp. 91 to 96 8 # 6.6 9 e = sin(1/x + exp(-x)) - sin(1/x) 10 assert e.aseries(x) == (1/(24*x**4) - 1/(2*x**2) + 1 + O(x**(-6), (x, oo)))*exp(-x) 11 12 e = exp(x) * (exp(1/x + exp(-x)) - exp(1/x)) 13 assert e.aseries(x, n=4) == 1/(6*x**3) + 1/(2*x**2) + 1/x + 1 + O(x**(-4), (x, oo)) 14 15 e = exp(exp(x) / (1 - 1/x)) 16 assert e.aseries(x) == exp(exp(x) / (1 - 1/x)) 17 18 # The implementation of bound in aseries is incorrect currently. This test 19 # should be commented out when that is fixed. 20 # assert e.aseries(x, bound=3) == exp(exp(x) / x**2)*exp(exp(x) / x)*exp(-exp(x) + exp(x)/(1 - 1/x) - \ 21 # exp(x) / x - exp(x) / x**2) * exp(exp(x)) 22 23 e = exp(sin(1/x + exp(-exp(x)))) - exp(sin(1/x)) 24 assert e.aseries(x, n=4) == (-1/(2*x**3) + 1/x + 1 + O(x**(-4), (x, oo)))*exp(-exp(x)) 25 26 e = exp(exp(x)) * (exp(sin(1/x + 1/exp(exp(x)))) - exp(sin(1/x))) 27 assert e.aseries(x, n=4) == -1/(2*x**3) + 1/x + 1 + O(x**(-4), (x, oo)) 28 29 n = Symbol('n', integer=True) 30 e = (sqrt(n)*log(n)**2*exp(sqrt(log(n))*log(log(n))**2*exp(sqrt(log(log(n)))*log(log(log(n)))**3)))/n 31 assert e.aseries(n) == \ 32 exp(exp(sqrt(log(log(n)))*log(log(log(n)))**3)*sqrt(log(n))*log(log(n))**2)*log(n)**2/sqrt(n) 33 34 35def test_hierarchical(): 36 e = sin(1/x + exp(-x)) 37 assert e.aseries(x, n=3, hir=True) == -exp(-2*x)*sin(1/x)/2 + \ 38 exp(-x)*cos(1/x) + sin(1/x) + O(exp(-3*x), (x, oo)) 39 40 e = sin(x) * cos(exp(-x)) 41 assert e.aseries(x, hir=True) == exp(-4*x)*sin(x)/24 - \ 42 exp(-2*x)*sin(x)/2 + sin(x) + O(exp(-6*x), (x, oo)) 43 raises(PoleError, lambda: e.aseries(x)) 44