Function2 renamed to Function
[sympy.git] / sympy / core / tests / test_functions.py
blobcfd30b2311d7b342d84e88b3c51c2ba8ca88cddc
1 from sympy import *
2 from sympy.utilities.pytest import XFAIL
5 def test_log():
6 assert log(2) > 0
7 assert log(1).is_zero
8 assert log(0.5).is_negative == True
10 def test_exp_log():
11 x = Symbol("x", real=True)
12 assert log(exp(x)) == x
13 assert exp(log(x)) == x
15 def test_log_expansion():
16 x = Symbol("x", real=True)
17 y = Symbol("y", real=True)
18 ##assert log(x*y) != log(x)+log(y)
19 #assert log(x**2) != 2*log(x)
20 assert log(x*y).expand() == log(x)+log(y)
21 assert log(x**2).expand() == 2*log(x)
22 assert (log(x**-5)**-1).expand() == -1/log(x)/5
24 def test_log_hashing_bug():
25 x = Symbol("y")
26 assert x != log(log(x))
27 assert hash(x) != hash(log(log(x)))
28 assert log(x) != log(log(log(x)))
30 e = 1/log(log(x)+log(log(x)))
31 assert isinstance(e.base, Basic.log)
32 e = 1/log(log(x)+log(log(log(x))))
33 assert isinstance(e.base, Basic.log)
35 x = Symbol("x")
36 e = log(log(x))
37 assert isinstance(e, Basic.log)
38 assert not isinstance(x, Basic.log)
39 assert hash(log(log(x))) != hash(x)
40 assert e != x
42 def test_sign():
43 assert sign(log(2)) == 1
45 def test_exp_bug():
46 x = Symbol("x")
47 assert exp(1*log(x)) == x
49 def test_exp_expand():
50 x = Symbol("x")
51 y = Symbol("y")
53 e = exp(log(Rational(2))*(1+x)-log(Rational(2))*x)
54 assert e.expand() == 2
55 # XXX The RHS is automatically combined so that it equals the LHS
56 #assert exp(x+y) != exp(x)*exp(y)
57 assert exp(x+y).expand() == exp(x)*exp(y)
59 def test_pi():
60 assert cos(pi)==-1
61 assert cos(2*pi)==1
62 assert sin(pi)==0
63 assert sin(2*pi)==0
65 def test_bug1():
66 x = Symbol("x")
67 w = Symbol("w")
69 e = sqrt(-log(w))
70 assert e.subs(log(w),-x) == sqrt(x)
72 e = sqrt(-5*log(w))
73 assert e.subs(log(w),-x) == sqrt(5*x)
75 @XFAIL
76 def test_invtrig(): # XXX No inverse trig yet
77 x = Symbol("x")
78 assert atan(0) == 0
79 assert atan(x).diff(x) == 1/(1+x**2)
81 def test_general_function():
82 nu = Function('nu', nofargs=1)
83 x = Symbol("x")
84 y = Symbol("y")
86 e = nu(x)
87 edx = e.diff(x)
88 edy = e.diff(y)
89 edxdx = e.diff(x).diff(x)
90 edxdy = e.diff(x).diff(y)
91 assert e == nu(x)
92 assert edx != nu(x)
93 assert edx == Derivative(nu(x), x)
94 assert edy == 0
95 assert edxdx == Derivative(Derivative(nu(x), x), x)
96 assert edxdy == 0
98 @XFAIL
99 def test_derivative_subs_bug():
100 x = Symbol("x")
101 l = Function('l', nofargs=1)
102 n = Function('n', nofargs=1)
104 e = Derivative(n(x), x)
105 assert e.subs(n, l) != e
106 assert e.subs(n, l) == Derivative(l(x), x)
107 assert e.subs(n, -l) == Derivative(-l(x), x)
109 def test_derivative_linearity():
110 x = Symbol("x")
111 y = Symbol("y")
112 n = Function('n', nofargs=1)
114 assert Derivative(-n(x), x) == -Derivative(n(x), x)
115 assert Derivative(8*n(x), x) == 8*Derivative(n(x), x)
116 assert Derivative(8*n(x), x) != 7*Derivative(n(x), x)
117 assert Derivative(8*n(x)*x, x) == 8*n(x) + 8*x*Derivative(n(x), x)
118 assert Derivative(8*n(x)*y*x, x) == 8*y*n(x) + 8*y*x*Derivative(n(x), x)
120 @XFAIL
121 def test_combine():
122 # XXX combine no longer exists
123 x = Symbol("x")
124 y = Symbol("y")
125 assert exp(x)*exp(-x) != 1
126 assert (exp(x)*exp(-x)).combine() == 1
128 assert exp(x)**2 != exp(2*x)
129 assert (exp(x)**2).combine() == exp(2*x)
131 assert exp(x)*exp(-x/2)*exp(-x/2) != 1
132 assert (exp(x)*exp(-x/2)*exp(-x/2)).combine() == 1
134 assert (2*log(x)).combine() == log(x**2)
135 assert exp(2*log(x)) != x**2
136 assert exp(2*log(x)).combine() == x**2
138 assert exp(x)*exp(-x)-1 !=0
139 assert (exp(x)*exp(-x)-1).combine() == 0
141 assert (2*exp(x)*exp(-x)).combine() == 2
142 assert (x/exp(x)*exp(-x)).combine() == x*exp(-2*x)