1from sympy import ( 2 symbols, sin, simplify, cos, trigsimp, tan, exptrigsimp,sinh, 3 cosh, diff, cot, Subs, exp, tanh, S, integrate, I,Matrix, 4 Symbol, coth, pi, log, count_ops, sqrt, E, expand, Piecewise , Rational 5 ) 6 7from sympy.testing.pytest import XFAIL 8 9from sympy.abc import x, y 10 11 12 13def test_trigsimp1(): 14 x, y = symbols('x,y') 15 16 assert trigsimp(1 - sin(x)**2) == cos(x)**2 17 assert trigsimp(1 - cos(x)**2) == sin(x)**2 18 assert trigsimp(sin(x)**2 + cos(x)**2) == 1 19 assert trigsimp(1 + tan(x)**2) == 1/cos(x)**2 20 assert trigsimp(1/cos(x)**2 - 1) == tan(x)**2 21 assert trigsimp(1/cos(x)**2 - tan(x)**2) == 1 22 assert trigsimp(1 + cot(x)**2) == 1/sin(x)**2 23 assert trigsimp(1/sin(x)**2 - 1) == 1/tan(x)**2 24 assert trigsimp(1/sin(x)**2 - cot(x)**2) == 1 25 26 assert trigsimp(5*cos(x)**2 + 5*sin(x)**2) == 5 27 assert trigsimp(5*cos(x/2)**2 + 2*sin(x/2)**2) == 3*cos(x)/2 + Rational(7, 2) 28 29 assert trigsimp(sin(x)/cos(x)) == tan(x) 30 assert trigsimp(2*tan(x)*cos(x)) == 2*sin(x) 31 assert trigsimp(cot(x)**3*sin(x)**3) == cos(x)**3 32 assert trigsimp(y*tan(x)**2/sin(x)**2) == y/cos(x)**2 33 assert trigsimp(cot(x)/cos(x)) == 1/sin(x) 34 35 assert trigsimp(sin(x + y) + sin(x - y)) == 2*sin(x)*cos(y) 36 assert trigsimp(sin(x + y) - sin(x - y)) == 2*sin(y)*cos(x) 37 assert trigsimp(cos(x + y) + cos(x - y)) == 2*cos(x)*cos(y) 38 assert trigsimp(cos(x + y) - cos(x - y)) == -2*sin(x)*sin(y) 39 assert trigsimp(tan(x + y) - tan(x)/(1 - tan(x)*tan(y))) == \ 40 sin(y)/(-sin(y)*tan(x) + cos(y)) # -tan(y)/(tan(x)*tan(y) - 1) 41 42 assert trigsimp(sinh(x + y) + sinh(x - y)) == 2*sinh(x)*cosh(y) 43 assert trigsimp(sinh(x + y) - sinh(x - y)) == 2*sinh(y)*cosh(x) 44 assert trigsimp(cosh(x + y) + cosh(x - y)) == 2*cosh(x)*cosh(y) 45 assert trigsimp(cosh(x + y) - cosh(x - y)) == 2*sinh(x)*sinh(y) 46 assert trigsimp(tanh(x + y) - tanh(x)/(1 + tanh(x)*tanh(y))) == \ 47 sinh(y)/(sinh(y)*tanh(x) + cosh(y)) 48 49 assert trigsimp(cos(0.12345)**2 + sin(0.12345)**2) == 1 50 e = 2*sin(x)**2 + 2*cos(x)**2 51 assert trigsimp(log(e)) == log(2) 52 53 54def test_trigsimp1a(): 55 assert trigsimp(sin(2)**2*cos(3)*exp(2)/cos(2)**2) == tan(2)**2*cos(3)*exp(2) 56 assert trigsimp(tan(2)**2*cos(3)*exp(2)*cos(2)**2) == sin(2)**2*cos(3)*exp(2) 57 assert trigsimp(cot(2)*cos(3)*exp(2)*sin(2)) == cos(3)*exp(2)*cos(2) 58 assert trigsimp(tan(2)*cos(3)*exp(2)/sin(2)) == cos(3)*exp(2)/cos(2) 59 assert trigsimp(cot(2)*cos(3)*exp(2)/cos(2)) == cos(3)*exp(2)/sin(2) 60 assert trigsimp(cot(2)*cos(3)*exp(2)*tan(2)) == cos(3)*exp(2) 61 assert trigsimp(sinh(2)*cos(3)*exp(2)/cosh(2)) == tanh(2)*cos(3)*exp(2) 62 assert trigsimp(tanh(2)*cos(3)*exp(2)*cosh(2)) == sinh(2)*cos(3)*exp(2) 63 assert trigsimp(coth(2)*cos(3)*exp(2)*sinh(2)) == cosh(2)*cos(3)*exp(2) 64 assert trigsimp(tanh(2)*cos(3)*exp(2)/sinh(2)) == cos(3)*exp(2)/cosh(2) 65 assert trigsimp(coth(2)*cos(3)*exp(2)/cosh(2)) == cos(3)*exp(2)/sinh(2) 66 assert trigsimp(coth(2)*cos(3)*exp(2)*tanh(2)) == cos(3)*exp(2) 67 68 69def test_trigsimp2(): 70 x, y = symbols('x,y') 71 assert trigsimp(cos(x)**2*sin(y)**2 + cos(x)**2*cos(y)**2 + sin(x)**2, 72 recursive=True) == 1 73 assert trigsimp(sin(x)**2*sin(y)**2 + sin(x)**2*cos(y)**2 + cos(x)**2, 74 recursive=True) == 1 75 assert trigsimp( 76 Subs(x, x, sin(y)**2 + cos(y)**2)) == Subs(x, x, 1) 77 78 79def test_issue_4373(): 80 x = Symbol("x") 81 assert abs(trigsimp(2.0*sin(x)**2 + 2.0*cos(x)**2) - 2.0) < 1e-10 82 83 84def test_trigsimp3(): 85 x, y = symbols('x,y') 86 assert trigsimp(sin(x)/cos(x)) == tan(x) 87 assert trigsimp(sin(x)**2/cos(x)**2) == tan(x)**2 88 assert trigsimp(sin(x)**3/cos(x)**3) == tan(x)**3 89 assert trigsimp(sin(x)**10/cos(x)**10) == tan(x)**10 90 91 assert trigsimp(cos(x)/sin(x)) == 1/tan(x) 92 assert trigsimp(cos(x)**2/sin(x)**2) == 1/tan(x)**2 93 assert trigsimp(cos(x)**10/sin(x)**10) == 1/tan(x)**10 94 95 assert trigsimp(tan(x)) == trigsimp(sin(x)/cos(x)) 96 97 98def test_issue_4661(): 99 a, x, y = symbols('a x y') 100 eq = -4*sin(x)**4 + 4*cos(x)**4 - 8*cos(x)**2 101 assert trigsimp(eq) == -4 102 n = sin(x)**6 + 4*sin(x)**4*cos(x)**2 + 5*sin(x)**2*cos(x)**4 + 2*cos(x)**6 103 d = -sin(x)**2 - 2*cos(x)**2 104 assert simplify(n/d) == -1 105 assert trigsimp(-2*cos(x)**2 + cos(x)**4 - sin(x)**4) == -1 106 eq = (- sin(x)**3/4)*cos(x) + (cos(x)**3/4)*sin(x) - sin(2*x)*cos(2*x)/8 107 assert trigsimp(eq) == 0 108 109 110def test_issue_4494(): 111 a, b = symbols('a b') 112 eq = sin(a)**2*sin(b)**2 + cos(a)**2*cos(b)**2*tan(a)**2 + cos(a)**2 113 assert trigsimp(eq) == 1 114 115 116def test_issue_5948(): 117 a, x, y = symbols('a x y') 118 assert trigsimp(diff(integrate(cos(x)/sin(x)**7, x), x)) == \ 119 cos(x)/sin(x)**7 120 121 122def test_issue_4775(): 123 a, x, y = symbols('a x y') 124 assert trigsimp(sin(x)*cos(y)+cos(x)*sin(y)) == sin(x + y) 125 assert trigsimp(sin(x)*cos(y)+cos(x)*sin(y)+3) == sin(x + y) + 3 126 127 128def test_issue_4280(): 129 a, x, y = symbols('a x y') 130 assert trigsimp(cos(x)**2 + cos(y)**2*sin(x)**2 + sin(y)**2*sin(x)**2) == 1 131 assert trigsimp(a**2*sin(x)**2 + a**2*cos(y)**2*cos(x)**2 + a**2*cos(x)**2*sin(y)**2) == a**2 132 assert trigsimp(a**2*cos(y)**2*sin(x)**2 + a**2*sin(y)**2*sin(x)**2) == a**2*sin(x)**2 133 134 135def test_issue_3210(): 136 eqs = (sin(2)*cos(3) + sin(3)*cos(2), 137 -sin(2)*sin(3) + cos(2)*cos(3), 138 sin(2)*cos(3) - sin(3)*cos(2), 139 sin(2)*sin(3) + cos(2)*cos(3), 140 sin(2)*sin(3) + cos(2)*cos(3) + cos(2), 141 sinh(2)*cosh(3) + sinh(3)*cosh(2), 142 sinh(2)*sinh(3) + cosh(2)*cosh(3), 143 ) 144 assert [trigsimp(e) for e in eqs] == [ 145 sin(5), 146 cos(5), 147 -sin(1), 148 cos(1), 149 cos(1) + cos(2), 150 sinh(5), 151 cosh(5), 152 ] 153 154 155def test_trigsimp_issues(): 156 a, x, y = symbols('a x y') 157 158 # issue 4625 - factor_terms works, too 159 assert trigsimp(sin(x)**3 + cos(x)**2*sin(x)) == sin(x) 160 161 # issue 5948 162 assert trigsimp(diff(integrate(cos(x)/sin(x)**3, x), x)) == \ 163 cos(x)/sin(x)**3 164 assert trigsimp(diff(integrate(sin(x)/cos(x)**3, x), x)) == \ 165 sin(x)/cos(x)**3 166 167 # check integer exponents 168 e = sin(x)**y/cos(x)**y 169 assert trigsimp(e) == e 170 assert trigsimp(e.subs(y, 2)) == tan(x)**2 171 assert trigsimp(e.subs(x, 1)) == tan(1)**y 172 173 # check for multiple patterns 174 assert (cos(x)**2/sin(x)**2*cos(y)**2/sin(y)**2).trigsimp() == \ 175 1/tan(x)**2/tan(y)**2 176 assert trigsimp(cos(x)/sin(x)*cos(x+y)/sin(x+y)) == \ 177 1/(tan(x)*tan(x + y)) 178 179 eq = cos(2)*(cos(3) + 1)**2/(cos(3) - 1)**2 180 assert trigsimp(eq) == eq.factor() # factor makes denom (-1 + cos(3))**2 181 assert trigsimp(cos(2)*(cos(3) + 1)**2*(cos(3) - 1)**2) == \ 182 cos(2)*sin(3)**4 183 184 # issue 6789; this generates an expression that formerly caused 185 # trigsimp to hang 186 assert cot(x).equals(tan(x)) is False 187 188 # nan or the unchanged expression is ok, but not sin(1) 189 z = cos(x)**2 + sin(x)**2 - 1 190 z1 = tan(x)**2 - 1/cot(x)**2 191 n = (1 + z1/z) 192 assert trigsimp(sin(n)) != sin(1) 193 eq = x*(n - 1) - x*n 194 assert trigsimp(eq) is S.NaN 195 assert trigsimp(eq, recursive=True) is S.NaN 196 assert trigsimp(1).is_Integer 197 198 assert trigsimp(-sin(x)**4 - 2*sin(x)**2*cos(x)**2 - cos(x)**4) == -1 199 200 201def test_trigsimp_issue_2515(): 202 x = Symbol('x') 203 assert trigsimp(x*cos(x)*tan(x)) == x*sin(x) 204 assert trigsimp(-sin(x) + cos(x)*tan(x)) == 0 205 206 207def test_trigsimp_issue_3826(): 208 assert trigsimp(tan(2*x).expand(trig=True)) == tan(2*x) 209 210 211def test_trigsimp_issue_4032(): 212 n = Symbol('n', integer=True, positive=True) 213 assert trigsimp(2**(n/2)*cos(pi*n/4)/2 + 2**(n - 1)/2) == \ 214 2**(n/2)*cos(pi*n/4)/2 + 2**n/4 215 216 217def test_trigsimp_issue_7761(): 218 assert trigsimp(cosh(pi/4)) == cosh(pi/4) 219 220 221def test_trigsimp_noncommutative(): 222 x, y = symbols('x,y') 223 A, B = symbols('A,B', commutative=False) 224 225 assert trigsimp(A - A*sin(x)**2) == A*cos(x)**2 226 assert trigsimp(A - A*cos(x)**2) == A*sin(x)**2 227 assert trigsimp(A*sin(x)**2 + A*cos(x)**2) == A 228 assert trigsimp(A + A*tan(x)**2) == A/cos(x)**2 229 assert trigsimp(A/cos(x)**2 - A) == A*tan(x)**2 230 assert trigsimp(A/cos(x)**2 - A*tan(x)**2) == A 231 assert trigsimp(A + A*cot(x)**2) == A/sin(x)**2 232 assert trigsimp(A/sin(x)**2 - A) == A/tan(x)**2 233 assert trigsimp(A/sin(x)**2 - A*cot(x)**2) == A 234 235 assert trigsimp(y*A*cos(x)**2 + y*A*sin(x)**2) == y*A 236 237 assert trigsimp(A*sin(x)/cos(x)) == A*tan(x) 238 assert trigsimp(A*tan(x)*cos(x)) == A*sin(x) 239 assert trigsimp(A*cot(x)**3*sin(x)**3) == A*cos(x)**3 240 assert trigsimp(y*A*tan(x)**2/sin(x)**2) == y*A/cos(x)**2 241 assert trigsimp(A*cot(x)/cos(x)) == A/sin(x) 242 243 assert trigsimp(A*sin(x + y) + A*sin(x - y)) == 2*A*sin(x)*cos(y) 244 assert trigsimp(A*sin(x + y) - A*sin(x - y)) == 2*A*sin(y)*cos(x) 245 assert trigsimp(A*cos(x + y) + A*cos(x - y)) == 2*A*cos(x)*cos(y) 246 assert trigsimp(A*cos(x + y) - A*cos(x - y)) == -2*A*sin(x)*sin(y) 247 248 assert trigsimp(A*sinh(x + y) + A*sinh(x - y)) == 2*A*sinh(x)*cosh(y) 249 assert trigsimp(A*sinh(x + y) - A*sinh(x - y)) == 2*A*sinh(y)*cosh(x) 250 assert trigsimp(A*cosh(x + y) + A*cosh(x - y)) == 2*A*cosh(x)*cosh(y) 251 assert trigsimp(A*cosh(x + y) - A*cosh(x - y)) == 2*A*sinh(x)*sinh(y) 252 253 assert trigsimp(A*cos(0.12345)**2 + A*sin(0.12345)**2) == 1.0*A 254 255 256def test_hyperbolic_simp(): 257 x, y = symbols('x,y') 258 259 assert trigsimp(sinh(x)**2 + 1) == cosh(x)**2 260 assert trigsimp(cosh(x)**2 - 1) == sinh(x)**2 261 assert trigsimp(cosh(x)**2 - sinh(x)**2) == 1 262 assert trigsimp(1 - tanh(x)**2) == 1/cosh(x)**2 263 assert trigsimp(1 - 1/cosh(x)**2) == tanh(x)**2 264 assert trigsimp(tanh(x)**2 + 1/cosh(x)**2) == 1 265 assert trigsimp(coth(x)**2 - 1) == 1/sinh(x)**2 266 assert trigsimp(1/sinh(x)**2 + 1) == 1/tanh(x)**2 267 assert trigsimp(coth(x)**2 - 1/sinh(x)**2) == 1 268 269 assert trigsimp(5*cosh(x)**2 - 5*sinh(x)**2) == 5 270 assert trigsimp(5*cosh(x/2)**2 - 2*sinh(x/2)**2) == 3*cosh(x)/2 + Rational(7, 2) 271 272 assert trigsimp(sinh(x)/cosh(x)) == tanh(x) 273 assert trigsimp(tanh(x)) == trigsimp(sinh(x)/cosh(x)) 274 assert trigsimp(cosh(x)/sinh(x)) == 1/tanh(x) 275 assert trigsimp(2*tanh(x)*cosh(x)) == 2*sinh(x) 276 assert trigsimp(coth(x)**3*sinh(x)**3) == cosh(x)**3 277 assert trigsimp(y*tanh(x)**2/sinh(x)**2) == y/cosh(x)**2 278 assert trigsimp(coth(x)/cosh(x)) == 1/sinh(x) 279 280 for a in (pi/6*I, pi/4*I, pi/3*I): 281 assert trigsimp(sinh(a)*cosh(x) + cosh(a)*sinh(x)) == sinh(x + a) 282 assert trigsimp(-sinh(a)*cosh(x) + cosh(a)*sinh(x)) == sinh(x - a) 283 284 e = 2*cosh(x)**2 - 2*sinh(x)**2 285 assert trigsimp(log(e)) == log(2) 286 287 # issue 19535: 288 assert trigsimp(sqrt(cosh(x)**2 - 1)) == sqrt(sinh(x)**2) 289 290 assert trigsimp(cosh(x)**2*cosh(y)**2 - cosh(x)**2*sinh(y)**2 - sinh(x)**2, 291 recursive=True) == 1 292 assert trigsimp(sinh(x)**2*sinh(y)**2 - sinh(x)**2*cosh(y)**2 + cosh(x)**2, 293 recursive=True) == 1 294 295 assert abs(trigsimp(2.0*cosh(x)**2 - 2.0*sinh(x)**2) - 2.0) < 1e-10 296 297 assert trigsimp(sinh(x)**2/cosh(x)**2) == tanh(x)**2 298 assert trigsimp(sinh(x)**3/cosh(x)**3) == tanh(x)**3 299 assert trigsimp(sinh(x)**10/cosh(x)**10) == tanh(x)**10 300 assert trigsimp(cosh(x)**3/sinh(x)**3) == 1/tanh(x)**3 301 302 assert trigsimp(cosh(x)/sinh(x)) == 1/tanh(x) 303 assert trigsimp(cosh(x)**2/sinh(x)**2) == 1/tanh(x)**2 304 assert trigsimp(cosh(x)**10/sinh(x)**10) == 1/tanh(x)**10 305 306 assert trigsimp(x*cosh(x)*tanh(x)) == x*sinh(x) 307 assert trigsimp(-sinh(x) + cosh(x)*tanh(x)) == 0 308 309 assert tan(x) != 1/cot(x) # cot doesn't auto-simplify 310 311 assert trigsimp(tan(x) - 1/cot(x)) == 0 312 assert trigsimp(3*tanh(x)**7 - 2/coth(x)**7) == tanh(x)**7 313 314 315def test_trigsimp_groebner(): 316 from sympy.simplify.trigsimp import trigsimp_groebner 317 318 c = cos(x) 319 s = sin(x) 320 ex = (4*s*c + 12*s + 5*c**3 + 21*c**2 + 23*c + 15)/( 321 -s*c**2 + 2*s*c + 15*s + 7*c**3 + 31*c**2 + 37*c + 21) 322 resnum = (5*s - 5*c + 1) 323 resdenom = (8*s - 6*c) 324 results = [resnum/resdenom, (-resnum)/(-resdenom)] 325 assert trigsimp_groebner(ex) in results 326 assert trigsimp_groebner(s/c, hints=[tan]) == tan(x) 327 assert trigsimp_groebner(c*s) == c*s 328 assert trigsimp((-s + 1)/c + c/(-s + 1), 329 method='groebner') == 2/c 330 assert trigsimp((-s + 1)/c + c/(-s + 1), 331 method='groebner', polynomial=True) == 2/c 332 333 # Test quick=False works 334 assert trigsimp_groebner(ex, hints=[2]) in results 335 assert trigsimp_groebner(ex, hints=[int(2)]) in results 336 337 # test "I" 338 assert trigsimp_groebner(sin(I*x)/cos(I*x), hints=[tanh]) == I*tanh(x) 339 340 # test hyperbolic / sums 341 assert trigsimp_groebner((tanh(x)+tanh(y))/(1+tanh(x)*tanh(y)), 342 hints=[(tanh, x, y)]) == tanh(x + y) 343 344 345def test_issue_2827_trigsimp_methods(): 346 measure1 = lambda expr: len(str(expr)) 347 measure2 = lambda expr: -count_ops(expr) 348 # Return the most complicated result 349 expr = (x + 1)/(x + sin(x)**2 + cos(x)**2) 350 ans = Matrix([1]) 351 M = Matrix([expr]) 352 assert trigsimp(M, method='fu', measure=measure1) == ans 353 assert trigsimp(M, method='fu', measure=measure2) != ans 354 # all methods should work with Basic expressions even if they 355 # aren't Expr 356 M = Matrix.eye(1) 357 assert all(trigsimp(M, method=m) == M for m in 358 'fu matching groebner old'.split()) 359 # watch for E in exptrigsimp, not only exp() 360 eq = 1/sqrt(E) + E 361 assert exptrigsimp(eq) == eq 362 363def test_issue_15129_trigsimp_methods(): 364 t1 = Matrix([sin(Rational(1, 50)), cos(Rational(1, 50)), 0]) 365 t2 = Matrix([sin(Rational(1, 25)), cos(Rational(1, 25)), 0]) 366 t3 = Matrix([cos(Rational(1, 25)), sin(Rational(1, 25)), 0]) 367 r1 = t1.dot(t2) 368 r2 = t1.dot(t3) 369 assert trigsimp(r1) == cos(Rational(1, 50)) 370 assert trigsimp(r2) == sin(Rational(3, 50)) 371 372def test_exptrigsimp(): 373 def valid(a, b): 374 from sympy.testing.randtest import verify_numerically as tn 375 if not (tn(a, b) and a == b): 376 return False 377 return True 378 379 assert exptrigsimp(exp(x) + exp(-x)) == 2*cosh(x) 380 assert exptrigsimp(exp(x) - exp(-x)) == 2*sinh(x) 381 assert exptrigsimp((2*exp(x)-2*exp(-x))/(exp(x)+exp(-x))) == 2*tanh(x) 382 assert exptrigsimp((2*exp(2*x)-2)/(exp(2*x)+1)) == 2*tanh(x) 383 e = [cos(x) + I*sin(x), cos(x) - I*sin(x), 384 cosh(x) - sinh(x), cosh(x) + sinh(x)] 385 ok = [exp(I*x), exp(-I*x), exp(-x), exp(x)] 386 assert all(valid(i, j) for i, j in zip( 387 [exptrigsimp(ei) for ei in e], ok)) 388 389 ue = [cos(x) + sin(x), cos(x) - sin(x), 390 cosh(x) + I*sinh(x), cosh(x) - I*sinh(x)] 391 assert [exptrigsimp(ei) == ei for ei in ue] 392 393 res = [] 394 ok = [y*tanh(1), 1/(y*tanh(1)), I*y*tan(1), -I/(y*tan(1)), 395 y*tanh(x), 1/(y*tanh(x)), I*y*tan(x), -I/(y*tan(x)), 396 y*tanh(1 + I), 1/(y*tanh(1 + I))] 397 for a in (1, I, x, I*x, 1 + I): 398 w = exp(a) 399 eq = y*(w - 1/w)/(w + 1/w) 400 res.append(simplify(eq)) 401 res.append(simplify(1/eq)) 402 assert all(valid(i, j) for i, j in zip(res, ok)) 403 404 for a in range(1, 3): 405 w = exp(a) 406 e = w + 1/w 407 s = simplify(e) 408 assert s == exptrigsimp(e) 409 assert valid(s, 2*cosh(a)) 410 e = w - 1/w 411 s = simplify(e) 412 assert s == exptrigsimp(e) 413 assert valid(s, 2*sinh(a)) 414 415def test_exptrigsimp_noncommutative(): 416 a,b = symbols('a b', commutative=False) 417 x = Symbol('x', commutative=True) 418 assert exp(a + x) == exptrigsimp(exp(a)*exp(x)) 419 p = exp(a)*exp(b) - exp(b)*exp(a) 420 assert p == exptrigsimp(p) != 0 421 422def test_powsimp_on_numbers(): 423 assert 2**(Rational(1, 3) - 2) == 2**Rational(1, 3)/4 424 425 426@XFAIL 427def test_issue_6811_fail(): 428 # from doc/src/modules/physics/mechanics/examples.rst, the current `eq` 429 # at Line 576 (in different variables) was formerly the equivalent and 430 # shorter expression given below...it would be nice to get the short one 431 # back again 432 xp, y, x, z = symbols('xp, y, x, z') 433 eq = 4*(-19*sin(x)*y + 5*sin(3*x)*y + 15*cos(2*x)*z - 21*z)*xp/(9*cos(x) - 5*cos(3*x)) 434 assert trigsimp(eq) == -2*(2*cos(x)*tan(x)*y + 3*z)*xp/cos(x) 435 436 437def test_Piecewise(): 438 e1 = x*(x + y) - y*(x + y) 439 e2 = sin(x)**2 + cos(x)**2 440 e3 = expand((x + y)*y/x) 441 # s1 = simplify(e1) 442 s2 = simplify(e2) 443 # s3 = simplify(e3) 444 445 # trigsimp tries not to touch non-trig containing args 446 assert trigsimp(Piecewise((e1, e3 < e2), (e3, True))) == \ 447 Piecewise((e1, e3 < s2), (e3, True)) 448 449 450def test_issue_21594(): 451 assert simplify(exp(Rational(1,2)) + exp(Rational(-1,2))) == cosh(S.Half)*2 452 453 454def test_trigsimp_old(): 455 x, y = symbols('x,y') 456 457 assert trigsimp(1 - sin(x)**2, old=True) == cos(x)**2 458 assert trigsimp(1 - cos(x)**2, old=True) == sin(x)**2 459 assert trigsimp(sin(x)**2 + cos(x)**2, old=True) == 1 460 assert trigsimp(1 + tan(x)**2, old=True) == 1/cos(x)**2 461 assert trigsimp(1/cos(x)**2 - 1, old=True) == tan(x)**2 462 assert trigsimp(1/cos(x)**2 - tan(x)**2, old=True) == 1 463 assert trigsimp(1 + cot(x)**2, old=True) == 1/sin(x)**2 464 assert trigsimp(1/sin(x)**2 - cot(x)**2, old=True) == 1 465 466 assert trigsimp(5*cos(x)**2 + 5*sin(x)**2, old=True) == 5 467 468 assert trigsimp(sin(x)/cos(x), old=True) == tan(x) 469 assert trigsimp(2*tan(x)*cos(x), old=True) == 2*sin(x) 470 assert trigsimp(cot(x)**3*sin(x)**3, old=True) == cos(x)**3 471 assert trigsimp(y*tan(x)**2/sin(x)**2, old=True) == y/cos(x)**2 472 assert trigsimp(cot(x)/cos(x), old=True) == 1/sin(x) 473 474 assert trigsimp(sin(x + y) + sin(x - y), old=True) == 2*sin(x)*cos(y) 475 assert trigsimp(sin(x + y) - sin(x - y), old=True) == 2*sin(y)*cos(x) 476 assert trigsimp(cos(x + y) + cos(x - y), old=True) == 2*cos(x)*cos(y) 477 assert trigsimp(cos(x + y) - cos(x - y), old=True) == -2*sin(x)*sin(y) 478 479 assert trigsimp(sinh(x + y) + sinh(x - y), old=True) == 2*sinh(x)*cosh(y) 480 assert trigsimp(sinh(x + y) - sinh(x - y), old=True) == 2*sinh(y)*cosh(x) 481 assert trigsimp(cosh(x + y) + cosh(x - y), old=True) == 2*cosh(x)*cosh(y) 482 assert trigsimp(cosh(x + y) - cosh(x - y), old=True) == 2*sinh(x)*sinh(y) 483 484 assert trigsimp(cos(0.12345)**2 + sin(0.12345)**2, old=True) == 1 485 486 assert trigsimp(sin(x)/cos(x), old=True, method='combined') == tan(x) 487 assert trigsimp(sin(x)/cos(x), old=True, method='groebner') == sin(x)/cos(x) 488 assert trigsimp(sin(x)/cos(x), old=True, method='groebner', hints=[tan]) == tan(x) 489 490 assert trigsimp(1-sin(sin(x)**2+cos(x)**2)**2, old=True, deep=True) == cos(1)**2 491