2 from sympy
.utilities
.pytest
import XFAIL
8 assert log(0.5).is_negative
== True
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():
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
)
37 assert isinstance(e
, Basic
.log
)
38 assert not isinstance(x
, Basic
.log
)
39 assert hash(log(log(x
))) != hash(x
)
43 assert sign(log(2)) == 1
47 assert exp(1*log(x
)) == x
49 def test_exp_expand():
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
)
70 assert e
.subs(log(w
),-x
) == sqrt(x
)
73 assert e
.subs(log(w
),-x
) == sqrt(5*x
)
76 def test_invtrig(): # XXX No inverse trig yet
79 assert atan(x
).diff(x
) == 1/(1+x
**2)
81 def test_general_function():
82 nu
= Function('nu', nofargs
=1)
89 edxdx
= e
.diff(x
).diff(x
)
90 edxdy
= e
.diff(x
).diff(y
)
93 assert edx
== Derivative(nu(x
), x
)
95 assert edxdx
== Derivative(Derivative(nu(x
), x
), x
)
99 def test_derivative_subs_bug():
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():
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
)
122 # XXX combine no longer exists
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
)