+
    ‹°³j	·  ã                   ó4  € ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	H
t
HtHt ^ RIHt ^ RIHtHtHtHtHtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ R	IHtH t H!t! ^ R
I"H#t# ^ RI$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t- ^ RI$H.t. ^ RI/H0t0 ^ RI1H2t2 ^ RI3H4t4H5t5H6t6H7t7 ^ RI8H9t9 ^ RI:H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtA ^ RIBHCtC ^ RIDHEtE ^ RIFHGtG . RRR3R ltH]2]03tIR tJR0R ltKR tLRR/R  ltMR! tNR"sOR# tPR$ tQR% tRR& tSR' tTR( tUR0R) ltV]R0R* l4       tWR+R/R, ltXR- tYR. tZR1R/ lt[R"# )2é    )Údefaultdict)Úreduce)ÚsympifyÚBasicÚSÚExprÚfactor_termsÚMulÚAddÚ	bottom_up)Úcacheit)Ú	count_opsÚ_mexpandÚFunctionClassÚexpandÚ
expand_mulÚ_coeff_isnegÚ
Derivative)ÚIÚInteger)Úigcd)Ú_nodes)ÚDummyÚsymbolsÚWild)Ú
SYMPY_INTS)	ÚsinÚcosÚexpÚcoshÚtanhÚsinhÚtanÚcotÚcoth)Úatan2)ÚHyperbolicFunction)ÚTrigonometricFunction)ÚPolyÚfactorÚcancelÚparallel_poly_from_expr)ÚZZ)ÚPolificationFailed)Úgroebner)Úcse)Úidentity)Úgreedy)Úiterable)ÚdebugFÚgrlexc                óh  aaa€ R oR oVVV3R lp\        R4      oV P                  \        P                  S4      p S\        P                  3.p\	        V 4      P                  4       w  rx \        Wx.4      w  w  ršp\        RTP                  4       T! TP                  T4      w  rÍp\        RT4       \        RTR\        T4      4       \        R	TR\        T4      4       T'       g   T # \        YÃT\        R
7      p\        R\        T4      R\        T4      4       ^ RIHp T'       Ed3   T
P                   ! \#        T4      P%                  T
P                  4      !  '       Edú   \'        Y~T,           R7      P(                  ! T!  p. pTP+                  4        EF¸  w  pp\#        \        TT.4      ^,          P                  4      pRpT'       d¡   RpT F–  p\'        T4      pTP-                  TP                  4      '       d   K1  TP                   ! \#        TP                  4      P/                  T4      !  '       d   Kk  RpTP1                  TP3                  4       P                  4       K˜  	  K¨  T Uu. uF  pTT9   g   K  TNK  	  ppTP4                   Uu. uFD  pTP                   ! TP%                  TP                  4      !  '       g   K4  TP7                  4       NKF  	  ppTP9                  \;        \=        TT4       UUu. uF  w  ppTT,          NK  	  upp!  T! TT,          TTTT\        TR7      P                  T4      ,          4       EK»  	  \?        T!  # T! T \        T4      Y=T,           T\        TR7      P                  T4      #   \         d    T u # i ; iu upi u upi u uppi )að  
Simplify trigonometric expressions using a groebner basis algorithm.

Explanation
===========

This routine takes a fraction involving trigonometric or hyperbolic
expressions, and tries to simplify it. The primary metric is the
total degree. Some attempts are made to choose the simplest possible
expression of the minimal degree, but this is non-rigorous, and also
very slow (see the ``quick=True`` option).

If ``polynomial`` is set to True, instead of simplifying numerator and
denominator together, this function just brings numerator and denominator
into a canonical form. This is much faster, but has potentially worse
results. However, if the input is a polynomial, then the result is
guaranteed to be an equivalent polynomial of minimal degree.

The most important option is hints. Its entries can be any of the
following:

- a natural number
- a function
- an iterable of the form (func, var1, var2, ...)
- anything else, interpreted as a generator

A number is used to indicate that the search space should be increased.
A function is used to indicate that said function is likely to occur in a
simplified expression.
An iterable is used indicate that func(var1 + var2 + ...) is likely to
occur in a simplified .
An additional generator also indicates that it is likely to occur.
(See examples below).

This routine carries out various computationally intensive algorithms.
The option ``quick=True`` can be used to suppress one particularly slow
step (at the expense of potentially more complicated results, but never at
the expense of increased total degree).

Examples
========

>>> from sympy.abc import x, y
>>> from sympy import sin, tan, cos, sinh, cosh, tanh
>>> from sympy.simplify.trigsimp import trigsimp_groebner

Suppose you want to simplify ``sin(x)*cos(x)``. Naively, nothing happens:

>>> ex = sin(x)*cos(x)
>>> trigsimp_groebner(ex)
sin(x)*cos(x)

This is because ``trigsimp_groebner`` only looks for a simplification
involving just ``sin(x)`` and ``cos(x)``. You can tell it to also try
``2*x`` by passing ``hints=[2]``:

>>> trigsimp_groebner(ex, hints=[2])
sin(2*x)/2
>>> trigsimp_groebner(sin(x)**2 - cos(x)**2, hints=[2])
-cos(2*x)

Increasing the search space this way can quickly become expensive. A much
faster way is to give a specific expression that is likely to occur:

>>> trigsimp_groebner(ex, hints=[sin(2*x)])
sin(2*x)/2

Hyperbolic expressions are similarly supported:

>>> trigsimp_groebner(sinh(2*x)/sinh(x))
2*cosh(x)

Note how no hints had to be passed, since the expression already involved
``2*x``.

The tangent function is also supported. You can either pass ``tan`` in the
hints, to indicate that tan should be tried whenever cosine or sine are,
or you can pass a specific generator:

>>> trigsimp_groebner(sin(x)/cos(x), hints=[tan])
tan(x)
>>> trigsimp_groebner(sinh(x)/cosh(x), hints=[tanh(x)])
tanh(x)

Finally, you can use the iterable form to suggest that angle sum formulae
should be tried:

>>> ex = (tan(x) + tan(y))/(1 - tan(x)*tan(y))
>>> trigsimp_groebner(ex, hints=[(tan, x, y)])
tan(x + y)
c                ó6  € ^p. . . rCpV  EF  p\        V\        \        34      '       d   TpK$  \        V\        4      '       d   VP	                  V4       KM  \        V4      '       d•   VP	                  V^ ,          VR,          34       TP                  \        VR,           Uu. uF  qe^ ,          ! V4      NK  	  upV^ ,          ! \        VR,          !  4      .,           4      ^,          P                  4       Kò  VP	                  V4       EK  	  WW43# u upi )z-Split hints into (n, funcs, iterables, gens).:é   NN)
Ú
isinstancer   r   r   Úappendr3   Úextendr,   r   Úgens)ÚhintsÚnÚfuncsÚ	iterablesr<   ÚeÚxs   &      ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/simplify/trigsimp.pyÚparse_hintsÚ&trigsimp_groebner.<locals>.parse_hintsÏ   sè   € àˆØ!# R¨˜$ˆÜˆAÜ˜!œj¬'Ð2×3Ò3Ø’Ü˜Aœ}×-Ò-Ø—‘˜Q–Ü˜!—’Ø× Ñ  ! A¥$¨¨"­ Ô/ð —‘Ô3Ø&'¨¦eÓ,¡e �q–T˜!–W¡eÑ,°°!¶´S¸!¸B½%±[Ó0AÐ/BÕBóDØDEõGßGKÁtöMð —‘˜A—ñ ð ˜Ð(Ð(ùò -s   Â$Dc           	     ó  € . p\        R4      pV EF[  w  rE\        \        \        \        V 4      ^,          \        V 4      ^,          ,           ^,
          .\        \
        \        \	        V 4      ^,          \        V 4      ^,          ,
          ^,
          .3 FÑ  w  rgr‰V^8X  d   WFV39   d   VP                  ! V	4       K)  WH8X  dG   VP                  ! V! WP,          4      V! WP,          4      ,          V! WP,          4      ,
          4       Ku  WFV39   g   K  V! WS,          4      P                  RR7      P                  W04      p
VP                  ! V! WP,          4      V
,
          4       KÓ  	  EK^  	  \        \        V4      4      # )aF  
Build generators for our ideal. ``Terms`` is an iterable with elements of
the form (fn, coeff), indicating that we have a generator fn(coeff*x).

If any of the terms is trigonometric, sin(x) and cos(x) are guaranteed
to appear in terms. Similarly for hyperbolic functions. For tan(n*x),
sin(n*x) and cos(n*x) are guaranteed.
ÚyT©Útrig)r   r   r   r#   r    r"   r!   r:   r   ÚsubsÚlistÚset)rB   Útermsr   rG   ÚfnÚcoeffÚcÚsÚtÚrelÚcns   &&         rC   Úbuild_idealÚ&trigsimp_groebner.<locals>.build_idealã   s  € ð ˆÜ�#‹JˆÜ‰IˆBäœ#œs¤C¨£F¨A¥I´°A³¸µ	Õ$9¸AÕ$=Ð>Üœ4¤¤t¨A£w°¥z´D¸³G¸QµJÕ'>ÀÕ'BÐCó!E‘��að ˜A”: "¨A¨¤,Ø—H’H˜S–MØ”WØ—H’H™Q˜u�w›Z©¨%­'«
Õ2±Q°uµw³ZÕ?Ö@Ø˜q˜6–\Ù˜E�G›×+Ñ+°Ð+Ó6×;Ñ;¸AÓA�BØ—H’H™R ¥›[¨2Õ-Ö.ô!Eñ ô ”C˜“F‹|Ðó    c                ó 
  <aa€ S"! V4      w  r#rE\        RW4V34       \        V 4      p V P                  V4       \        \        V4      4      p\        \        V4      4      p\        \        V 4      4      p \        \
        \        \        \        \        0pV  Uu. uFC  pVP                  V9   g   K  VP                  ^ ,          P                  4       VP                  3NKE  	  ppV  Uu. uF  qwP                  V9  g   K  VNK  	  p	p. p
/ pV F+  w  w  rÍoVP                  V. 4      P                  VS34       K-  	  . pVP                  4        EF¦  w  ppV Uu. uF  pV^,          NK  	  ppV Uu. uF  pV^ ,          NK  	  pp\!        \"        V4      p\%        VV4       UUu. uF  w  ppVVV,          3NK  	  ppp\        VV,           4      o\
        \        \        .\        \        \        .3 Fq  w  ppp\&        ;QJ d"    V3R lVVV3 4       F  '       g   K   RM	  RM! V3R lVVV3 4       4      '       g   KO  SP)                  V4       SP)                  V4       Ks  	  S F/  oVP                  V3R l\+        ^V^,           4       4       4       K1  	  . pV Fâ  w  opS\        8X  d/   VP                  \        V34       VP                  \
        V34       S\        \
        39   d#   \        S9   d   VP                  \        V34       S\        8X  d/   VP                  \        V34       VP                  \        V34       S\        \        39   g   K¾  \        S9   g   KË  VP                  \        V34       Kä  	  VP                  V4       V\-        V!  ,          pS ! VV4      pVP                  V4       T
P                  V UUu0 uF  w  ppV! VV,          4      kK  	  upp4       EK©  	  V Få  w  opS\        8X  d"   VP                  \        V3\
        V3.4       K2  S\        8X  d"   VP                  \        V3\        V3.4       K^  \/        R\1        V4      ,          \2        R7      pS! \5        V!  4      P7                  RR7      P9                  \        \%        VV4      4      4      pVP                  S! \5        V!  4      V,
          4       Kç  	  S!V 9   dB   VP                  S!^,          ^,           4       V	P;                  S!4       V
P                  S!4       WéV
3# u upi u upi u upi u upi u uppi u uppi )	zÄ
Analyse the generators ``gens``, using the hints ``hints``.

The meaning of ``hints`` is described in the main docstring.
Return a new list of generators, and also the ideal we should
work with.
z1n=%s   funcs: %s   iterables: %s    extragens: %sc              3   ó,   <"  € T F	  qS9   x € K  	  R # 5i©N© )Ú.0rB   Úfss   & €rC   Ú	<genexpr>Ú:trigsimp_groebner.<locals>.analyse_gens.<locals>.<genexpr>6  s   øé € Ð2©	 1˜B–w«	ùó   ƒTFc              3   ó,   <"  € T F	  pSV3x € K  	  R # 5irZ   r[   )r\   ÚkrN   s   & €rC   r^   r_   :  s   øé € Ð>©o¨˜b !�W«oùr`   zd:%i©ÚclsrH   )r4   rK   r;   rL   r   r   r#   r"   r    r!   ÚfuncÚargsÚas_coeff_mulÚ
setdefaultr:   Úitemsr   r   ÚzipÚanyÚaddÚranger
   r   Úlenr   r   r   rJ   Úremove)#r<   r=   r>   r?   r@   Ú	extragensÚallfuncsÚgÚ	trigtermsÚfreegensÚnewgensÚtrigdictrO   ÚvarÚresÚkeyÚvalrB   ÚfnsÚgcdrN   ÚvrM   rP   rQ   rR   ÚextraÚrrf   ÚdummysÚexprr]   rU   ÚmyIrD   s#   &&                  `          @€€€rC   Úanalyse_gensÚ'trigsimp_groebner.<locals>.analyse_gensû   sJ  ú€ ñ *5°UÓ);Ñ&ˆ�)ÜÐAØ Ð+ô	-ô �D‹zˆØ�‰�IÔô ”S˜“ZÓ ˆÜœ˜Y›Ó(ˆ	Ü”C˜“I‹ˆô œœc¤4¬¬tÐ4ˆáAEó ,Á¸AØŸ™ (Ñ*ô 8�a—f‘f˜Q•i×,Ñ,Ó.°·±Ó7Áˆ	ð ,ñ  $Ó>™t˜!§v¡v°XÑ'=—A�A™tˆÐ>ØˆØˆÛ )Ñ‰LˆU˜"Ø×Ñ  RÓ(×/Ñ/°¸°Ö<ñ !*àˆà Ÿ™×(‰HˆC�ñ" "%Ó%¡˜A�1�Q—4�4¡ˆCÐ%Ù!$Ó%¡˜A�1�Q—4�4¡ˆCÐ%Üœ˜sÓ#ˆCÜ03°C¸´Ô>±¡W b¨!�b˜!˜C�%“[±ˆEÑ>Ü�U˜S•[Ó!ˆBÜ ¤#¤s˜O¬d´D¼$Ð-?Ó@‘��1�aß“3Ô2¨¨A¨q©	Ó2—3—3’3Ô2¨¨A¨q©	Ó2×2Ô2Ø—F‘F˜1”IØ—F‘F˜1–Iñ Aó �Ø—‘Ô>¬e°A°q¸1µu¬oÓ>Ö>ñ àˆEÛ‘��AØœ”9Ø—L‘L¤# q Ô*Ø—L‘L¤# q Ô*Øœ#œs˜Ô#¬¨r¬	Ø—L‘L¤# q Ô*Øœ”:Ø—L‘L¤$¨ Ô+Ø—L‘L¤$¨ Ô+Øœ$¤˜Ö%¬$°"®*Ø—L‘L¤$¨ Ö+ñ ð �L‰L˜ÔØ”C˜‘I•ˆAÙ˜A˜uÓ%ˆAØ�J‰J�qŒMØ�N‰N±Ô7±©¨¨A™B˜q �sžG±Ò7×8ñY )ó^ "‰HˆB�Ø”SŒyà× Ñ ¤3¨ +´°T¨{Ð!;Ö<Ø”t”à× Ñ ¤4¨ ,´°t°Ð!=Ö>ä  ¬#¨d«)Õ!3¼Ô?�Ùœ3 ™<Ó(×/Ñ/°TÐ/Ó:×?Ñ?ÄÄSÈÐQUÓEVÓ@WÓX�Ø—
‘
™2œc 4™j›>¨DÕ0Ö1ñ "ð �$Œ;Ø�J‰J�s˜A•v •zÔ"Ø�O‰O˜CÔ Ø�N‰N˜3Ôà˜gÐ%Ð%ùòW,ùò ?ùò0 &ùÚ%ùã>ùó0 8s0   ÂT0Â11T0Ã(T5Ã?T5ÅT:Å1T?Æ$UÏU
r   zinitial gens:zideal:z	new gens:z -- lenz
free gens:)Úorderr<   Údomainzgroebner basis:)Úratsimpmodprime)r<   TF)r…   r<   Úquickr†   Ú
polynomial) r   rJ   r   ÚImaginaryUnitr+   Úas_numer_denomr,   r.   r4   r<   rn   r/   r-   rK   Úsympy.simplify.ratsimpr‡   Úhas_only_gensrL   Úintersectionr)   ÚejectrM   Ú
issupersetÚ
differenceÚupdateÚexcludeÚpolysÚas_exprr:   r
   rj   r   ) r�   r=   rˆ   r…   r‰   rƒ   rJ   ÚnumÚdenomÚpnumÚpdenomÚoptÚidealrt   r<   ÚGr‡   rx   ÚmonomrO   ÚourgensÚchangedÚprB   Úrealgensrr   ÚourGÚaÚbrU   r‚   rD   s    &&&&&                        @@@rC   Útrigsimp_groebnerr¥      s  ú€ òf)ò(÷0d&ôL �‹*€CØ�9‰9”Q—_‘_ cÓ*€DØ”!—/‘/Ð"Ð#€Dä˜“×,Ñ,Ó.�J€CðÜ5°s°lÓCÑ‰ˆ˜ô 
ˆ/˜3Ÿ8™8Ô$Ù(¨¯©°5Ó9Ñ€E�TÜ	ˆ(�EÔÜ	ˆ+�t˜Y¬¨D«	Ô2Ü	ˆ,˜ )¬S°«YÔ7÷ ØˆÜ�¨$´rÔ:€AÜ	Ð
œT !›W i´°Q³Ô8õ
 7ç€x�F×(Ò(¬#¨d«)×*@Ñ*@ÀÇÁÓ*M×NÑNÜ�3 (�]Ô+×1Ò1°4Ñ8ˆØˆØŸI™IŸK‰LˆE�5ÜÔ1°5¸%°.ÓAÀ!ÕD×IÑIÓJˆGð ˆGßØ�Û�AÜ˜Q›�AØ"×-Ñ-¨a¯f©f×5Ô5ØŸ?š?¬C°·±«K×,BÑ,BÀ7Ó,K×LÒLØ"&˜ØŸ™ q§y¡y£{×'7Ñ'7Ö8ó ñ $(Ó8¡4˜a¨1°©<Ÿ˜¡4ˆHÐ8ð *+¯ªó D© AØ—O’O W×%9Ñ%9¸!¿&¹&Ó%AÕBô  �A—I‘I–K©ˆDð Dà�J‰J”s¬c°(¸EÔ.BÔCÑ.B¡d a¨˜Q ŸT˜TÑ.BÒCÑDÙ& u¨U¥{°DÀØ,4¸EÌ"Ø2<ô>ç>B¹dÀ4»jõI÷ Jñ5 (ô< �C‰yÐñ Ø”$�q“' °d­]Ø¤¨zô;ç;?¹4À»:ð	Føô{ ô ØŠðüòH 9ùòDùãCs0   Á,N É6	N$ÊN$Ê1N)ËN)ÌN.ÎN!Î N!c                 ó2   aa€ R  oVV3R lo\        V S4      # )c                 óv   €  V P                   ^ ,          VP                   ^ ,          8H  #   \         d     R# i ; i)r   F)rf   Ú
IndexError)rB   rG   s   &&rC   Ú
check_argsÚ%_trigsimp_inverse.<locals>.check_args¯  s4   € ð	Ø—6‘6˜!•9 §¡ q¥	Ñ)Ð)øÜô 	Úð	ús   ‚&) ©8·8c                 óX  <€ \        V R R4      pVen   \        V P                  ^ ,          V! 4       4      '       dF   \        V! 4       ! ^4      \        4      '       d%   V P                  ^ ,          P                  ^ ,          # \        V \        4      '       Ed   V P                  w  r#\        V4      '       d   S! \	        V) V4      4      ) # \        V4      '       d(   \        P                  S! \	        W#) 4      4      ,
          # S! W24      '       d›   \        V\        4      '       d*   \        V\        4      '       d   VP                  ^ ,          # \        V\        4      '       dF   \        V\        4      '       d0   \        P                  ^,          VP                  ^ ,          ,
          # V # )ÚinverseN)
Úgetattrr9   rf   r(   r&   r   r   ÚPir   r   )Úrvrr   rG   rB   r©   Úfs   &   €€rC   r°   Ú_trigsimp_inverse.<locals>.fµ  s  ø€ ä�B˜	 4Ó(ˆØŠMœj¨¯©°­±Q³S×9Ò9Ü™1œ3˜q›6Ô#8×9Ò9Ø—7‘7˜1•:—?‘? 1Õ%Ð%ô �bœ%× Ó Ø—7‘7‰DˆAÜ˜A�ŠÙœ%   A›,›Ð'Ð'Ü˜a—’Ü—t‘t™a¤ a¨£›oÕ-Ð-á˜!×ÒÜ˜a¤×%Ò%¬*°Q¼×*<Ò*<ØŸ6™6 !�9Ð$Ü˜a¤×%Ò%¬*°Q¼×*<Ò*<ÜŸ4™4 !�8 a§f¡f¨Q¥iÕ/Ð/àˆ	rW   )r   )r¯   r©   r°   s   &@@rC   Ú_trigsimp_inverser²   ­  s   ù€ òöô. �R˜ÓÐrW   c                óŽ  aaa	€ ^ RI Ho \        V 4      p \        V RR4      pVe	   V! R/ SB # SP	                  RR4      pV'       g8   SP	                  RR4       SP	                  RR4       SP	                  RR	4      pMRpR
 o	RVV3R lR	R RV	V3R lRV	3R lRV3R l/V,          pV! V 4      pV'       d   \        V4      pV# )av  Returns a reduced expression by using known trig identities.

Parameters
==========

inverse : bool, optional
    If ``inverse=True``, it will be assumed that a composition of inverse
    functions, such as sin and asin, can be cancelled in any order.
    For example, ``asin(sin(x))`` will yield ``x`` without checking whether
    x belongs to the set where this relation is true. The default is False.
    Default : True

method : string, optional
    Specifies the method to use. Valid choices are:

    - ``'matching'``, default
    - ``'groebner'``
    - ``'combined'``
    - ``'fu'``
    - ``'old'``

    If ``'matching'``, simplify the expression recursively by targeting
    common patterns. If ``'groebner'``, apply an experimental groebner
    basis algorithm. In this case further options are forwarded to
    ``trigsimp_groebner``, please refer to
    its docstring. If ``'combined'``, it first runs the groebner basis
    algorithm with small default parameters, then runs the ``'matching'``
    algorithm. If ``'fu'``, run the collection of trigonometric
    transformations described by Fu, et al. (see the
    :py:func:`~sympy.simplify.fu.fu` docstring). If ``'old'``, the original
    SymPy trig simplification function is run.
opts :
    Optional keyword arguments passed to the method. See each method's
    function docstring for details.

Examples
========

>>> from sympy import trigsimp, sin, cos, log
>>> from sympy.abc import x
>>> e = 2*sin(x)**2 + 2*cos(x)**2
>>> trigsimp(e)
2

Simplification occurs wherever trigonometric functions are located.

>>> trigsimp(log(e))
log(2)

Using ``method='groebner'`` (or ``method='combined'``) might lead to
greater simplification.

The old trigsimp routine can be accessed as with method ``method='old'``.

>>> from sympy import coth, tanh
>>> t = 3*tanh(x)**7 - 2/coth(x)**7
>>> trigsimp(t, method='old') == t
True
>>> trigsimp(t)
tanh(x)**7

)ÚfuÚ_eval_trigsimpNÚoldFÚdeepÚ	recursiveÚmethodÚmatchingc                 ól   aa€ VV3R  loS! V 4      p\        V\        4      '       g   V# \        V3/ SB # )c                 ó   <€ V P                   '       d   V # V P                   Uu. uF  pS! V4      NK  	  ppV P                  '       g   V P                  '       d   V Uu. uF  p\	        V3/ SB NK  	  ppV P
                  ! V!  # u upi u upi rZ   ©Úis_Atomrf   Úis_FunctionÚis_Powr¥   re   ©rA   rB   rf   ÚoptsÚtraverses   &  €€rC   rÃ   Ú0trigsimp.<locals>.groebnersimp.<locals>.traverse  ós   ø€ Ø�y�yˆyØ�Ø)*¯ªÓ0© A‘H˜Q–K©ˆDÐ0Ø�}�}ˆ} §§ Ù>BÓC¹d¸Ô)¨!Ñ4¨tÔ4¹d�ÐCØ—6’6˜4‘=Ð ùò 1ùâCó   ¤BÁB)r9   r   r¥   )ÚexrÂ   ÚnewrÃ   s   &l @rC   ÚgroebnersimpÚtrigsimp.<locals>.groebnersimp  s5   ù€ ö	!ñ �r‹lˆÜ˜#œt×$Ò$ØˆJÜ  Ñ-¨Ñ-Ð-rW   r´   c                 ó   <€ S! V 3/ SB # rZ   r[   )rB   r´   rÂ   s   &€€rC   Ú<lambda>Útrigsimp.<locals>.<lambda>,  s   ø€ ™˜A™ šrW   c                 ó   € \        V 4      # rZ   )Úfutrig©rB   s   &rC   rÌ   rÍ   -  s   € œv aœyrW   r/   c                 ó   <€ S! V 3/ SB # rZ   r[   )rB   rÉ   rÂ   s   &€€rC   rÌ   rÍ   .  s   ø€ ™|¨AÑ6°Ò6rW   Úcombinedc                 ó8   <€ \        S! V R ^\        .R7      4      # ©T)r‰   r=   )rÏ   r#   )rB   rÉ   s   &€rC   rÌ   rÍ   /  s   ø€ œv¡l°1Ø*.°q¼#°hô'@ô  ArW   c                 ó   <€ \        V 3/ SB # rZ   )Útrigsimp_old)rB   rÂ   s   &€rC   rÌ   rÍ   1  s   ø€ œ aÑ0¨4Ò0rW   r[   )Úsympy.simplify.fur´   r   r­   Úpopr²   )
r�   r¬   rÂ   rµ   r¶   r¹   ÚtrigsimpfuncÚexpr_simplifiedr´   rÉ   s
   &&l     @@rC   ÚtrigsimprÛ   Ï  sÑ   ú€ õ~ %ä�4‹=€Dä˜TÐ#3°TÓ:€NØÒ!ÙÑ% Ñ%Ð%à
�(‰(�5˜%Ó
 €CßØ�‰�˜ÔØ�‰�˜dÔ#Ø—‘˜( JÓ/‰àˆò.ð 	Õ&ØÑ(ØÕ6Øô AàÔ0ðð õ€Lñ # 4Ó(€OßÜ+¨OÓ<ˆàÐrW   c                óv  a€ ^ RI HpHp R p\        W4      pV3R lo\        VS4      pVP	                  \
        4      '       d   V! V4      w  poS! V! V4      4      pVP	                  \        4      '       d	   V! V4      pVP	                  \        4      '       d   V P	                  \        4      '       d   Tp V # )zû
Simplifies exponential / trigonometric / hyperbolic functions.

Examples
========

>>> from sympy import exptrigsimp, exp, cosh, sinh
>>> from sympy.abc import z

>>> exptrigsimp(exp(z) + exp(-z))
2*cosh(z)
>>> exptrigsimp(cosh(z) - sinh(z))
exp(-z)
)Úhyper_as_trigÚTR2ic                 óè   € V .pV P                   ! \         '       d%   VP                  V P                  \        4      4       VP                  V P                  \
        4      4       \        VR \        / # ©ry   )ÚhasÚ_trigsr:   Úrewriter   r   Úminr   )rA   Úchoicess   & rC   Úexp_trigÚexptrigsimp.<locals>.exp_trigL  sN   € ð �#ˆØ�5Š5”&�>Ø�N‰N˜1Ÿ9™9¤S›>Ô*Ø�‰�q—y‘y¤“~Ô&Ü�GÐ+¤Ñ+Ð+rW   c                 ó4  <a€ V P                   '       g   V # V P                  4       w  r\        V4      ^8”  d   S! \        V!  4      \        V!  ,          # V P	                  4       pVP                  4       p\        P                  3V3R lloV\        P                  ,          pV EFE  pVP                  '       g   K  \        VP                  4      ^8X  g   K4  VP                  ^ ,          pS! VP                  ^,          V,          4      w  r‰V	'       g   Ks  W6,          p
WF;;,          V
,          uu&   WY) V
,          ^,          8X  d™   V\        P                  ;;,          V,          uu&   ^ pV^8X  d7   V^V,          \        V	^,          4      ,          ;;,          V
,          uu&   EK  VRV,          \        V	^,          4      ,          ;;,          V
,          uu&   EK<  V^V\        P                  V	,          ,          ,
          ,          V
) 8X  dŒ   V^V\        P                  V	,          ,          ,
           V^8X  d0   WG) \        V	^,          4      ,          ;;,          V
,          uu&   EKÊ  WG) \        V	^,          4      ,          ;;,          V
,          uu&   EKù  V^V\        P                  V	,          ,          ,           ;;,          V
,          uu&   WG;;,          V
,          uu&   EKH  	  \        V Uu. uF  qfWF,          ,          NK  	  up!  # u upi )r8   c                 óX  <€ V \         P                  J d   V\         P                  3# \        V \        4      '       g2   V P
                  '       d-   V P                  \         P                  8X  d   WP                  3# V\         P                  J d   S! V ) \         P                  ) R 7      # R# ))Úsign)NN)r   ÚExp1ÚOner9   r   rÀ   Úbase)r�   rê   Úsignlogs   &&€rC   rî   Ú'exptrigsimp.<locals>.f.<locals>.signlogb  sr   ø€ Ø”q—v‘v‹~ØœQŸU™U�{Ð"Ü˜D¤#×&Ò&¨4¯;¯;¨;¸4¿9¹9ÌÏÉÔ;NØŸX™X�~Ð%ØœŸ™“Ù ˜u¬A¯E©E¨6Ô2Ð2à!Ð!rW   éþÿÿÿ)Úis_MulÚargs_cncrn   r
   Úas_powers_dictÚcopyr   rì   rë   Úis_Addrf   r    r"   r!   )r¯   Úcommutative_partÚnoncommutative_partÚrvdÚnewdÚeerb   rP   rê   rB   Úmrî   r°   s   &          @€rC   r°   Úexptrigsimp.<locals>.fV  s  ù€ Ø�y�yˆyØˆIØ02·±³Ñ-Ðô Ð#Ó$ qÔ(Ù”SÐ*Ñ+Ó,¬SÐ2EÑ-FÕFÐFØ×ÑÓ!ˆØ�x‰x‹zˆä Ÿu™u÷ 	"ð ”—‘�[ˆÜˆAØ�x�xŠxœC §¡›K¨1Ö,à—F‘F˜1•I�Ù! !§&¡&¨¥)¨A¥+Ó.‘�ßÙØ•F�Ø—˜1•“Ø˜˜A�˜a�”<àœŸ™—L BÕ&“LØ�BØ˜q”yØ˜Q˜q�S¤ a¨¥c£�]×+¨qÕ0Ö+à˜R �T¤$ q¨¥s£)�^×,°Õ1Ö,Ø˜!˜d¤1§6¡6¨1¥9�nÕ,Õ-°!°Ô3à˜Q ¤a§f¡f¨a¥i¥Õ/Ð0Ø˜q”yØ˜R¤ Q q¥S£	�\×*¨aÕ/Ö*à˜R¤ Q q¥S£	�\×*¨aÕ/Ö*à˜˜T¤!§&¡&¨!¥)�^Õ+×,°Õ1Ó,Ø—G˜q•L–Gñ5 ô8 ©Ó.© A˜�—Z�Z©Ñ.Ñ/Ð/ùÒ.s   Ë9L)r×   rÝ   rÞ   r   rá   r'   r(   r   )r�   rÝ   rÞ   ræ   ÚnewexprrA   r°   s   &     @rC   Úexptrigsimprþ   ;  s˜   ø€ ÷ 6ò,ô ˜Ó'€Gõ30ôh ˜ Ó#€Gð ‡{�{Ô%×&Ò&Ù˜WÓ%‰ˆˆ1Ù‘D˜“G“*ˆØ‡{�{Ô(×)Ò)Ù�w“-ˆð �K‰Kœ�NŠN 4§8¡8¬A§;¢;ØˆØ€KrW   ÚfirstTc               óà  aa€ T pV'       Edh   V P                   ! \         '       g   V # \        4       P                  ! V P                  ! \          Uu. uF  qDP
                  NK  	  up!  p\        V4      ^8”  dû   ^ RIHp V! V 4      pVP                  '       d   V! VRR7      ;'       g    Tp\        V\        4      '       dK   ^p VP                  4        F1  pTp	\        V4      pRSR&   \        V3/ SB p
W¨8X  d   T	p
W
,          p K3  	  T pMfVP                  '       dU   V FL  pV P!                  V4      w  rÍV'       g   K   RSR&   V\        V3/ SB ,           p V P                  '       d   KL   M	  T pSP#                  RR4      pSP#                  RR4      pSP#                  RR	4      pR
 oR	R RVV3R lRV3R l/V,          pV'       d]   \%        V 4      w  ppV! V^ ,          V4      p\'        V4       F,  pVP)                  V^ ,          V^,          4      pV! VV4      pK.  	  TpMV! W4      pSP+                  RR4      '       d   \-        V4      pVV8w  d   \/        RV4       V# u upi )a�  
Reduces expression by using known trig identities.

Notes
=====

deep:
- Apply trigsimp inside all objects with arguments

recursive:
- Use common subexpression elimination (cse()) and apply
trigsimp recursively (this is quite expensive if the
expression is large)

method:
- Determine the method to use. Valid choices are 'matching' (default),
'groebner', 'combined', 'fu' and 'futrig'. If 'matching', simplify the
expression recursively by pattern matching. If 'groebner', apply an
experimental groebner basis algorithm. In this case further options
are forwarded to ``trigsimp_groebner``, please refer to its docstring.
If 'combined', first run the groebner basis algorithm with small
default parameters, then run the 'matching' algorithm. 'fu' runs the
collection of trigonometric transformations described by Fu, et al.
(see the `fu` docstring) while `futrig` runs a subset of Fu-transforms
that mimic the behavior of `trigsimp`.

compare:
- show input and output from `trigsimp` and `futrig` when different,
but returns the `trigsimp` value.

Examples
========

>>> from sympy import trigsimp, sin, cos, log, cot
>>> from sympy.abc import x
>>> e = 2*sin(x)**2 + 2*cos(x)**2
>>> trigsimp(e, old=True)
2
>>> trigsimp(log(e), old=True)
log(2*sin(x)**2 + 2*cos(x)**2)
>>> trigsimp(log(e), deep=True, old=True)
log(2)

Using `method="groebner"` (or `"combined"`) can sometimes lead to a lot
more simplification:

>>> e = (-sin(x) + 1)/cos(x) + cos(x)/(-sin(x) + 1)
>>> trigsimp(e, old=True)
(1 - sin(x))/cos(x) + cos(x)/(1 - sin(x))
>>> trigsimp(e, method="groebner", old=True)
2/cos(x)

>>> trigsimp(1/cot(x)**2, compare=True, old=True)
      futrig: tan(x)**2
cot(x)**(-2)

)ÚseparatevarsT)ÚdictFrÿ   r¸   r·   r¹   rº   c                 óL   aa€ VV3R  loV'       d	   S! V 4      p \        V 3/ SB # )c                 ó   <€ V P                   '       d   V # V P                   Uu. uF  pS! V4      NK  	  ppV P                  '       g   V P                  '       d   V Uu. uF  p\	        V3/ SB NK  	  ppV P
                  ! V!  # u upi u upi rZ   r½   rÁ   s   &  €€rC   rÃ   Ú4trigsimp_old.<locals>.groebnersimp.<locals>.traverseü  rÅ   rÆ   )r¥   )rÇ   r·   rÂ   rÃ   s   &&l@rC   rÉ   Ú"trigsimp_old.<locals>.groebnersimpû  s&   ù€ ö	!÷ Ù˜"“ˆBÜ  Ñ, tÑ,Ð,rW   c                 ó   € \        W4      # rZ   )Ú	_trigsimp)rB   Úds   &&rC   rÌ   Útrigsimp_old.<locals>.<lambda>  s   € ¤)¨A¤/rW   r/   c                 ó   <€ S! W3/ SB # rZ   r[   )rB   r	  rÉ   rÂ   s   &&€€rC   rÌ   r
  	  s   ø€ ¡,¨qÑ"<°tÒ"<rW   rÒ   c           	      ó<   <€ \        S! V VR ^\        .R7      V4      # rÔ   )r  r#   )rB   r	  rÉ   s   &&€rC   rÌ   r
  
  s"   ø€ ¤)©L¸Ø'(°TÀ!ÄSÀô-Kà#$ô#&rW   Úcomparez	futrig:)rá   râ   rL   ÚunionÚatomsÚfree_symbolsrn   Úsympy.simplify.simplifyr  rñ   r9   r  Úvaluesr   rÛ   rõ   Úas_independentrØ   r0   ÚreversedrJ   ÚgetrÏ   Úprint)r�   rÿ   rÂ   r¶   rR   Útrigsymsr  r	  r}   ÚwasÚvnewrQ   r   rA   r¸   r·   r¹   rÙ   Úwrr   ÚsubÚresultr°   rÉ   s   &$l                    @rC   rÖ   rÖ   š  s5  ù€ ðt €Cß€uØ�xŠxœ× ØˆKä“5—;’;¸¿ºÄVÑ9LÓ MÑ9L°A§¤Ñ9LÑ MÑNˆÜˆx‹=˜1ÔÝ<á˜TÓ"ˆAØ�x�xˆxÙ  ¨Ô.×3Ð3°!�Ü˜!œT×"Ò"Ø�ØŸ™ž�Aà�CÜ" 1›�AØ$)�D˜‘MÜ# AÑ.¨Ñ.�DØ”yØ"˜Ø•L’Dñ $ð ‘à—8—8�8Û%˜Ø#×2Ñ2°1Ó5™˜ß™1Ø,1˜D ™MØ#$¤x°Ñ':°TÑ':Õ#:˜DØ#'§;§;¢;Ù %ñ &ð �Cà—‘˜ eÓ,€IØ�8‰8�F˜EÓ"€DØ�X‰X�h 
Ó+€Fò
-ð 	Ñ1ØÕ<Øô &ðð õ€L÷ Ü�4‹y‰ˆˆ1Ù˜˜1�˜tÓ$ˆä˜A–;ˆCØ—‘�s˜1•v˜s 1�vÓ&ˆAÙ˜Q Ó%ŠAñ ð ‰á˜dÓ)ˆà‡x�x�	˜5×!Ò!Ü�3‹KˆØ�Œ;Ü�+˜qÔ!à€MùòM !Ns   ÁI+c                ó  € V P                   VP                   8H  ;'       dm    V P                  \        4      ;'       d    VP                  \        4      ;'       g3    V P                  \        4      ;'       d    VP                  \        4      # )zªHelper to tell whether ``a`` and ``b`` have the same sorts
of symbols in them -- no need to test hyperbolic patterns against
expressions that have no hyperbolics in them.)re   rá   r(   r'   )r£   r¤   s   &&rC   Ú_dotrigr  "  sp   € ð �6‰6�Q—V‘VÑ÷ Að AØ	�‰Ô#Ó$×EÐE¨¯©Ô/DÓ)E÷ 	@ð 	@Ø	�‰Ô Ó!×?Ð? a§e¡eÔ,>Ó&?ðArW   Nc                  ó¼   € \        R \        R7      w  rp\        RRR7      pV \        V4      V,          ,          \        V4      V,          ,          V \	        V4      V,          ,          \        V4      \        V4      3V \	        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        V4      \        V4      3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        V4      \        V4      3V \	        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        V4      \        V4      3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        V4      \        V4      3V \        V4      V,          ,          \	        V4      V,          ,          V \        V4      \        V4      3V \        V4      ^,           V,          ,          \        V4      ^,
          V,          ,          V \        V4      ^,          ) V,          ,          \        V4      ^,           \        V4      ^,
          3V \        V4      ^,           V,          ,          \        V4      ^,
          V,          ,          V \        V4      ^,          ) V,          ,          \        V4      ^,           \        V4      ^,
          3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        P                  \        P                  3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        P                  \        P                  3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        P                  \        P                  3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        P                  \        P                  3V \        V4      V,          ,          \        V4      V,          ,          V \        V4      V,          ,          \        P                  \        P                  3V \        V4      V,          ,          \        V4      V,          ,          V \        P                  \        P                  3V\        V 4      \        V4      ,           ,          ^\        V 4      \        V4      ,          ,           ,          \        W,           4      V,          \        P                  \        P                  33pV\        V 4      ,          \        V4      ,          V\        V 4      ,          \        V4      ,          ,           V,           \        W,           4      V,          V,           3V\        V 4      ,          \        V4      ,          V\        V 4      ,          \        V4      ,          ,
          V,           \        W,           4      V,          V,           3V\        V 4      ,          \        V4      ,          V\        V 4      ,          \        V4      ,          ,
          V,           \        W,
          4      V,          V,           3V\        V 4      ,          \        V4      ,          V\        V 4      ,          \        V4      ,          ,           V,           \        W,
          4      V,          V,           3V\        V 4      ,          \        V4      ,          V\        V4      ,          \        V 4      ,          ,           V,           \        W,           4      V,          V,           3V\        V 4      ,          \        V4      ,          V\        V 4      ,          \        V4      ,          ,           V,           \        W,           4      V,          V,           33pV \        V4      ^,          ,          W \        V4      ^,          ,          ,
          3V \	        V4      ^,          ,          V ^\        V4      ,          ^,          ,          V ,
          3V \        V4      ^,          ,          V ^\        V4      ,          ^,          ,          V ,
          3V \        W,           4      ,          V \        V4      \        V4      ,          \        V4      \        V4      ,          ,           ,          3V \        W,           4      ,          V \        V4      \        V4      ,          \        V4      \        V4      ,          ,
          ,          3V \	        W,           4      ,          V \	        V4      \	        V4      ,           ^\	        V4      \	        V4      ,          ,
          ,          ,          3V \        V4      ^,          ,          V \        V4      ^,          ,          V ,
          3V \        V4      ^,          ,          W ^\        V4      ,          ^,          ,          ,
          3V \        V4      ^,          ,          W ^\        V4      ,          ^,          ,          ,           3V \        W,           4      ,          V \        V4      \        V4      ,          \        V4      \        V4      ,          ,           ,          3V \        W,           4      ,          V \        V4      \        V4      ,          \        V4      \        V4      ,          ,           ,          3V \        W,           4      ,          V \        V4      \        V4      ,           ^\        V4      \        V4      ,          ,           ,          ,          33pW \        V4      ^,          ,          ,
          V,           V \        V4      ^,          ,          V,           \        3W ^\        V4      ,          ^,          ,          ,
          V,           V ) \	        V4      ^,          ,          V,           \        3W ^\        V4      ,          ^,          ,          ,
          V,           V ) \        V4      ^,          ,          V,           \        3W \        V4      ^,          ,          ,
          V,           V ) \        V4      ^,          ,          V,           \        3W ^\        V4      ,          ^,          ,          ,
          V,           V \        V4      ^,          ,          V,           \        3W ^\        V4      ,          ^,          ,          ,           V,           V \        V4      ^,          ,          V,           \        3W,          W,          \        V4      ^,          ,          ,
          V,           W,          \        V4      ^,          ,          V,           \        3W,          W,          ^\        V4      ,          ^,          ,          ,
          V,           V ) V,          \	        V4      ^,          ,          V,           \        3W,          W,          ^\        V4      ,          ^,          ,          ,
          V,           V ) V,          \        V4      ^,          ,          V,           \        3W,          W,          \        V4      ^,          ,          ,
          V,           V ) V,          \        V4      ^,          ,          V,           \        3W,          W,          ^\        V4      ,          ^,          ,          ,
          V,           W,          \        V4      ^,          ,          V,           \        3W,          W,          ^\        V4      ,          ^,          ,          ,           V,           W,          \        V4      ^,          ,          V,           \        33pWW#WEWg3s\        # )za b crc   r	  F)Úcommutative)r   r   r   r   r#   r$   r"   r    r!   r   rì   r%   Ú_trigpat)r£   r¤   rP   r	  Úmatchers_divisionÚmatchers_addÚmatchers_identityÚ	artifactss           rC   Ú	_trigpatsr&  ,  s6
  € ä�g¤4Ô(�G€Aˆ!ÜˆS˜eÔ$€Að 
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤# a£&¨!¥)¥¬S°«V´S¸³VÐ<Ø	
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤# a£&¨!¥)¥¬S°«V´S¸³VÐ<Ø	
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤# a£&¨!¥)¥¬S°«V´S¸³VÐ<Ø	
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤# a£&¨!¥)¥¬S°«V´S¸³VÐ<Ø	
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤# a£&¨!¥)¥¬S°«V´S¸³VÐ<Ø	
Œ3ˆq‹6�1�9�”S˜“V˜Q•YÕ	 ¤3 q£6¬3¨q«6Ð2Ø	
ŒC�‹F�Q�J˜�?Õ	œC ›F Q�J¨�?Õ	*Ø”�A“˜•	ˆz˜A�oÕœs 1›v¨�z¬3¨q«6°A­:ð	7à	
ŒC�‹F�Q�J˜�?Õ	œC ›F Q�J¨�?Õ	*Ø”�A“˜•	ˆz˜A�oÕœs 1›v¨�z¬3¨q«6°A­:ð	7ð 
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤D¨£G¨Q¥J¥,´·±´q·u±uÐ=Ø	
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤D¨£G¨Q¥J¥,´·±´q·u±uÐ=Ø	
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤D¨£G¨Q¥J¥,´·±´q·u±uÐ=Ø	
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤D¨£G¨Q¥J¥,´·±´q·u±uÐ=Ø	
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤D¨£G¨Q¥J¥,´·±´q·u±uÐ=Ø	
Œ4�‹7�A�:�”d˜1“g˜q•jÕ	  !¤Q§U¡U¬A¯E©EÐ2à	
ŒD�‹G”d˜1“gÕÕ	 ¤D¨£G¬D°«G¥OÕ 3Õ	4Ü�•‹K˜�Mœ1Ÿ5™5¤!§%¡%ð	)ð'Ðð0 
Œ3ˆq‹6�”#�a“&�˜1œS ›V�8¤C¨£F�?Õ	*¨QÕ	.´°AµE³
¸1µ¸qÕ0@ÐAØ	
Œ3ˆq‹6�”#�a“&�˜1œS ›V�8¤C¨£F�?Õ	*¨QÕ	.´°AµE³
¸1µ¸qÕ0@ÐAØ	
Œ3ˆq‹6�”#�a“&�˜1œS ›V�8¤C¨£F�?Õ	*¨QÕ	.´°AµE³
¸1µ¸qÕ0@ÐAØ	
Œ3ˆq‹6�”#�a“&�˜1œS ›V�8¤C¨£F�?Õ	*¨QÕ	.´°AµE³
¸1µ¸qÕ0@ÐAØ	
Œ4�‹7�”4˜“7Õ	˜Qœt A›w�Y¤t¨A£wÕ.Õ	.°Õ	2´D¸½³KÀµMÀAÕ4EÐFØ	
Œ4�‹7�”4˜“7Õ	˜Qœt A›w�Y¤t¨A£wÕ.Õ	.°Õ	2´D¸½³KÀµMÀAÕ4EÐFð€Lð 
Œ3ˆq‹6�1�9��aœC ›F A�I�+•oÐ&Ø	
Œ3ˆq‹6�1�9��a˜œ3˜q›6� A�•o¨Õ)Ð*Ø	
Œ3ˆq‹6�1�9��a˜œ3˜q›6� A�•o¨Õ)Ð*Ø	
Œ3ˆq�u‹:��qœ#˜a›&¤ Q£�-¬#¨a«&´°Q³­-Õ7Õ8Ð9Ø	
Œ3ˆq�u‹:��qœ#˜a›&¤ Q£�-¬#¨a«&´°Q³­-Õ7Õ8Ð9Ø	
Œ3ˆq�u‹:��qœ3˜q›6¤C¨£F�?¨Q´°Q³¼¸A»µÕ->Õ?Õ@ÐAà	
Œ4�‹7�A�:��qœ˜a› !�•| aÕ'Ð(Ø	
Œ4�‹7�A�:��q˜a¤ Q£�i¨!�^Õ+Õ+Ð,Ø	
Œ4�‹7�A�:��q˜a¤ Q£�i¨!�^Õ+Õ+Ð,Ø	
Œ4�•‹;�˜œ4 ›7¤4¨£7�?¬T°!«W´T¸!³W­_Õ<Õ=Ð>Ø	
Œ4�•‹;�˜œ4 ›7¤4¨£7�?¬T°!«W´T¸!³W­_Õ<Õ=Ð>Ø	
Œ4�•‹;�˜œD ›G¤d¨1£gÕ-°´D¸³G¼DÀ»GµOÕ0CÕDÕEÐFðÐð( 
Œs�1‹v�q�y�[�˜1Õ	˜a¤ A£¨¥	�k¨A�o¬sÐ3Ø	
�”#�a“&•˜1�}�_Õ	˜qÕ	  1 "¤S¨£V¨Q¥Y¥,°Õ"2´CÐ8Ø	
�”#�a“&•˜1�}�_Õ	˜qÕ	  1 "¤S¨£V¨Q¥Y¥,°Õ"2´CÐ8à	
Œt�A‹w˜�z�\Õ	˜AÕ	 ˜r¤$ q£'¨1¥*�}¨qÕ0´$Ð7Ø	
�”$�q“'•	˜A�~ÕÕ	 Õ	! 1¤T¨!£W¨a¥Z¥<°!Õ#3´TÐ:Ø	
�”$�q“'•	˜A�~ÕÕ	 Õ	! 1¤T¨!£W¨a¥Z¥<°!Õ#3´TÐ:ð 
�ˆq�s”3�q“6˜1•9�}Õ	˜qÕ	  !¥#¤c¨!£f¨a¥i¥-°!Õ"3´SÐ9Ø	
�ˆq�s�A”c˜!“f•H˜q•=Õ Õ	  1Õ	$ q b¨¥d¬3¨q«6°1­9¥n°qÕ&8¼#Ð>Ø	
�ˆq�s�A”c˜!“f•H˜q•=Õ Õ	  1Õ	$ q b¨¥d¬3¨q«6°1­9¥n°qÕ&8¼#Ð>à	
�ˆq�s”4˜“7˜A•:�~Õ	 Õ	! A 2 a¥4¬¨Q«°­
¥?°QÕ#6¼Ð=Ø	
�ˆq�s�A”d˜1“g•I •>Õ!Õ	! AÕ	% q¥s¬4°«7°A­:¥~¸Õ'9¼4Ð@Ø	
�ˆq�s�A”d˜1“g•I •>Õ!Õ	! AÕ	% q¥s¬4°«7°A­:¥~¸Õ'9¼4Ð@ð!€Ið& �aÐ-Øð&€Hä€OrW   c                óV  € \        \        4      p\        \        4      p. pV P                   FÞ  p	V	P                  '       g   V	P                  W39   d§   V	P                  4       w  r«V
P                  '       g   VP                  '       dq   V
P                  V8X  d(   WjP                  ^ ,          ;;,          V,          uu&   K•  V
P                  V8X  d(   WzP                  ^ ,          ;;,          V,          uu&   KÍ  VP                  V	4       Kà  	  \        V4      \        V4      ,          pRpV'       dq   VP                  4       pVP                  V4      pVP                  V4      pWó! V4      8X  d)   VP                  V! V4      V! V4      ,          4       RpKn  WöV&   VW~&   Kx  V'       g   V # V'       d3   VP                  4       w  rëVP                  V! V4      V,          4       K:  V'       d3   VP                  4       w  rëVP                  V! V4      V,          4       K:  \        V!  # )z•Helper for _match_div_rewrite.

Replace f(b_)**c_*g(b_)**(rexp(c_)) with h(b)**rexph(c) if f(b_)
and g(b_) are both positive or if c_ is an integer.
FT)r   Úintrf   rÀ   re   Úas_base_expÚis_positiveÚ
is_integerr:   rL   rØ   Úpopitemr
   )r�   r°   rr   ÚrexpÚhÚrexphÚfargsÚgargsrf   rB   r¤   rA   ÚcommonÚhitry   ÚfeÚges   &&&&&&           rC   Ú_replace_mul_fpowxgpowr6  €  s„  € ô œÓ€EÜœÓ€EØ€DØ�YŒYˆØ�8�8ˆ8�q—v‘v ! Ô'Ø—=‘=“?‰DˆAØ�}�}ˆ} §§ Ø—6‘6˜Q”;ØŸ&™& �)×$¨Õ)Ó$ÙØ—V‘V˜q”[ØŸ&™& �)×$¨Õ)Ó$ÙØ�‰�AŽñ ô �‹Zœ#˜e›*Õ$€FØ
€Cß
Ø�j‰j‹lˆØ�Y‰Y�s‹^ˆØ�Y‰Y�s‹^ˆØ��b“Œ>Ø�K‰K™˜#›¡ b£	Õ)Ô*ØŠCà�#‰JØˆE‹JßØˆß
Ø—‘“‰ˆØ�‰‘A�c“F˜A•IÖß
Ø—‘“‰ˆØ�‰‘A�c“F˜A•IÖÜ�‰:ÐrW   c                 ó   € V # rZ   r[   rÐ   s   &rC   rÌ   rÌ   ¬  s   € ‘rW   c                 ó   € V ) # rZ   r[   rÐ   s   &rC   rÌ   rÌ   ­  s   € �1‘"rW   c                 ó"   € \         P                  # rZ   )r   rì   rÐ   s   &rC   rÌ   rÌ   ®  s   € ”—’rW   c                ó>  € V^ 8X  d'   \        V \        \        \        \        \
        4      p V # V^8X  d'   \        V \        \        \
        \        \
        4      p V # V^8X  d'   \        V \        \        \
        \        \
        4      p V # V^8X  d'   \        V \        \        \        \        \        4      p V # V^8X  d'   \        V \        \        \        \        \        4      p V # V^8X  d'   \        V \        \        \
        \        \
        4      p V # V^8X  d'   \        V \        \        \        \        \
        4      p V # V^	8X  d'   \        V \        \        \
        \        \
        4      p V # V^
8X  d'   \        V \        \        \
        \        \
        4      p V # V^8X  d'   \        V \        \        \        \        \        4      p V # V^8X  d'   \        V \        \        \        \        \        4      p V # V^8X  d'   \        V \        \        \
        \        \
        4      p V # R# )zhelper for __trigsimpN)r6  r   r   Ú_midnr#   Ú_idnr$   Ú_oner"   r    r!   r%   )r�   Úis   &&rC   Ú_match_div_rewriter?  °  sÞ  € àˆA„vÜ% d¬C´Ü”3œóˆðL €KðI 
ˆaŒÜ% d¬C´Ü”#”tóˆðF €KðC 
ˆaŒÜ% d¬C´Ü”#”tóˆð@ €Kð= 
ˆaŒÜ% d¬C´Ü”3œóˆð: €Kð7 
ˆaŒÜ% d¬C´Ü”3œóˆð4 €Kð1 
ˆaŒÜ% d¬C´Ü”$œóˆð. €Kð) 
ˆaŒÜ% d¬D´$Ü”4œóˆð& €Kð# 
ˆaŒÜ% d¬D´$Ü”$œóˆð  €Kð 
ˆbŒÜ% d¬D´$Ü”$œóˆð €Kð 
ˆbŒÜ% d¬D´$Ü”4œó ˆð €Kð 
ˆbŒÜ% d¬D´$Ü”4œó ˆð €Kð 
ˆbŒÜ% d¬D´$Ü”$œóˆð €Kñ rW   c                 óN   € V P                   ! \         '       d   \        W4      # V # rZ   )rá   râ   Ú
__trigsimp)r�   r·   s   &&rC   r  r  Ü  s    € ð ‡x‚x”×Ü˜$Ó%Ð%Ø€KrW   c           	     óP  aaa€ ^ RI Hp \        f   \        4        \        w  oor4rVrxV P                  '       Ed×   V P
                  '       gP   V P                  4       w  rš\        \        P                  ! V	4      V4      \        P                  ! V
4      ,          p EMu\        V4       EFe  w  pw  rÍrï\        W4      '       g   K  \        W4      pVe   VV 8w  d   Tp  EM2K:  V P                  V4      oS'       g   KU  SP                  V^ 4      '       g   Ko  SV,          P                  '       gK   VP!                  S4      pVP"                  '       g   K­  VP!                  S4      pVP"                  '       g   KÒ  \$        ;QJ d?    VV3R lSS,          P'                  \(        \*        4       4       F  '       g   K   RM4	  RM0! VV3R lSS,          P'                  \(        \*        4       4       4      '       d   EKU  VP!                  S4      p  M	  V P,                  '       EdO   . pV P.                   F¼  pVP
                  '       g@   VP                  4       w  rš\        P                  ! V
4      p
\        P                  ! V	4      pM\0        P2                  p
\        VV4      pV F.  w  ppVP                  V4      oSf   K  VP!                  S4      p M	  VP5                  VV
,          4       K¾  	  VV P.                  8w  d%   \7        V!  p \9        V \;        V 4      \<        R7      p V P,                  '       dý   V Fö  w  pp\        W4      '       g   K  V! V 4      p V P?                  \*        4      '       g   K>  V P                  V4      oSe‘   SS9   dŠ   SS9   dƒ   \$        ;QJ d@    VVV3R lSV,          P'                  \(        \*        4       4       F  '       g   K   RM5	  RM1! VVV3R lSV,          P'                  \(        \*        4       4       4      '       d   Kå  VP!                  S4      p  M	  V EF5  w  ppp\        W4      '       g   K  \A        RV.R	7      pVP!                  SV4      pVP!                  SV4      pV P                  V4      pRpV'       g   Kj  VV 8w  g   Ks  T pVV,          ^ 8X  g=   VV,          ) VV,          P.                  9   g   VV,          VV,          ,           ^ 8X  d   KÁ  VV9   d-   VV,          VV,          ,          VV,          ,           ^ 8X  d   Kô  VP!                  V4      p V P                  V4      pVPC                  V\0        PD                  4       KØ  	  MrV P                  '       g-   V PF                  '       g   V'       dG   V P.                  '       d5   V PH                  ! V P.                   Uu. uF  p\        VV4      NK  	  up!  p  V P>                  ! \K         '       g   \L        hV P'                  \N        4      pV PQ                  \N        VR
7      pVV8X  d   \L        h\S        V4      pVV8w  d   \9        V\S        V4      .\<        R7      pVP'                  \N        4      V,
          '       g   Tp V # u upi   \L         d     T # i ; i)zrecursive helper for trigsimp)ÚTR10iNc              3   ó\   <"  € T F!  qP                   ^ ,          SS,          8H  x € K#  	  R# 5i©r   N©rf   )r\   r  r¤   rx   s   & €€rC   r^   Ú__trigsimp.<locals>.<genexpr>  s+   øé € ð Hñ 9G°1Ÿ6™6 !�9¨¨A­Ö.ó 9Gùs   ƒ),TFrà   c              3   ón   <"  € T F*  qP                   ^ ,          SS,          SS,          39   x € K,  	  R# 5irE  rF  )r\   r  r£   r¤   rx   s   & €€€rC   r^   rG  0  s7   øé € ð IHñ@G¸!Ÿ™˜q�	 c¨!¥f¨c°!­fÐ%5Ö5ó @Gùs   ƒ25r£   )r“   )r·   )*r×   rC  r!  r&  rñ   Úis_commutativerò   r  r
   Ú
_from_argsÚ	enumerater  r?  Úmatchr  r+  rJ   r*  rk   r  r(   r'   rõ   rf   r   rì   r:   r   rä   r   r   rá   r   rh   ÚZerorÀ   re   râ   Ú	TypeErrorr   rã   r*   )r�   r·   rC  rP   r	  r"  r#  r$  r%  ÚcomÚncr>  ÚpatternÚsimpÚok1Úok2rý   Úokrf   Útermr  rÇ   Úa_trû   r  r£   rA   rÈ   Úfnewr¤   rx   s   &&                       `   @@rC   rA  rA  ä  s!  ú€ õ (äÒÜŒä#+ñ!€A€qˆ!Ð!Øà‡{‡{�{à×"×"Ð"Ø—m‘m“o‰GˆCÜœSŸ^š^¨CÓ0°$Ó7¼¿ºÀrÓ8JÕJŠDä09Ð:K×0LÑ,�Ñ,�G 3Ü˜t×-Ò-Ùä,¨TÓ5�ØÒ&Ø $”Ø&˜Úá ð —j‘j Ó)�ß‘3˜3Ÿ7™7 1 aŸ=œ=Ø˜q�6×,×,Ð,Ø ŸX™X c›]˜Ø!Ÿ~Ÿ~˜~Ù$Ø ŸX™X c›]˜Ø!Ÿ~Ÿ~˜~Ù$÷ “sõ H¸¸A½¿¹Ü1Ô3Eô9Gó H—s—s’sõ H¸¸A½¿¹Ü1Ô3Eô9Gó H÷ Hò Hâ àŸ9™9 S›>�DÙñ; 1Mð> ‡{‡{�{ØˆØ—I”IˆDØ×&×&Ð&ØŸ-™-›/‘�Ü—^’^ BÓ'�Ü—~’~ cÓ*‘ä—U‘U�Ü˜T 4Ó(ˆDÛ#4‘�˜Ø—j‘j Ó)�Ø”?Ø!Ÿ;™; sÓ+�DÙñ	 $5ð
 �K‰K˜˜R�Ö ñ ð �4—9‘9ÔÜ˜‘:ˆDÜ�tœV D›\¬yÔ9ˆDØ�;�;ˆ;Û#/‘�˜Ü˜t×-Ò-ÙÙ˜T“{�Ø—8‘8Ô.×/Ô/ØŸ*™* WÓ-�Cð ’{¨1°¬8¸¸S¼ÇSÃSö IHØ?BÀ1½v¿|¹|Ü1Ô3Eô@GóIHÇSÇSÂSö IHØ?BÀ1½v¿|¹|Ü1Ô3Eô@GóIH÷ FHò FHñ !Ø!Ÿ;™; sÓ+�DÙñ $0ô$ $-ÑˆG�V˜RÜ˜4×)Ò)Ùô �s R DÔ)ˆCØ—l‘l 1 cÓ*ˆGØ—[‘[  CÓ(ˆFà—
‘
˜7Ó#ˆAØˆCß‘!˜˜tžØ�Ø�S•6˜Q”;Ø˜3�˜ 1 Q¥4§9¡9Ô,°°#µ¸¸1½µÀÔ0BÙØ˜”6˜a �f Q q¥T�k¨A¨a­DÕ0°AÔ5ÙØ—{‘{ 1“~�Ø—J‘J˜wÓ'�Ø—‘˜Q¤§¡Ö'ò+ $-ð. 
��ˆ˜ŸŸ˜§t°·	·	°	Ø�yŠy°t·y²yÓA±y°!œ9 Q¨Ö-±yÑAÑBˆðØ�xŠxœ× ÜˆOØ�J‰J”s‹OˆØ�l‰lœ3 TˆlÓ*ˆØ�!Œ8ÜˆOÜ�c‹{ˆØ�3Œ;Ü�sœF 3›KÐ(¬iÔ8ˆCà—	‘	œ#“ ×"Ô"ØˆDð €Kùò% Bøô ô Øà€Kðús   ×
Z×%B'Z ÚZ ÚZ%Ú$Z%Úhyperc               óÎ  € ^ RI Hp \        V 4      p \        V \        4      '       g   V # V P
                  '       g   V # T p\        V \        4      p V'       d<   V P                  \        4      '       d!   V! V 4      w  rV! \        V \        4      4      p W8w  dM   V P                  '       d;   V P
                  ^ ,          P                  '       d   \        V P                  4       !  p V # )aÐ  Return simplified ``e`` using Fu-like transformations.
This is not the "Fu" algorithm. This is called by default
from ``trigsimp``. By default, hyperbolics subexpressions
will be simplified, but this can be disabled by setting
``hyper=False``.

Examples
========

>>> from sympy import trigsimp, tan, sinh, tanh
>>> from sympy.simplify.trigsimp import futrig
>>> from sympy.abc import x
>>> trigsimp(1/tan(x)**2)
tan(x)**(-2)

>>> futrig(sinh(x)/tanh(x))
cosh(x)

)rÝ   )r×   rÝ   r   r9   r   rf   r   Ú_futrigrá   r'   rñ   Úis_Rationalr
   Úas_coeff_Mul)rA   rY  ÚkwargsrÝ   r¶   r°   s   &$,   rC   rÏ   rÏ   g  s¦   € õ( 0ä�‹
€Aä�aœ×ÒØˆà�6�6ˆ6Øˆà
€CÜ�!”WÓ€Aç�—‘Ô)×*Ò*Ù˜QÓ‰ˆÙŒi˜œ7Ó#Ó$ˆà„x�A—H—H�H §¡¨¥×!6×!6Ð!6ä�—‘Ó!Ñ"ˆØ€HrW   c           !     ób  aaaaaaaaaa€ ^ RI HpHoHpHoHpHoHpHpH	oH
oHoHpHoHpHpHp	Hp
HoHo V P)                  \*        4      '       g   V # V P,                  '       d   V P/                  \*        4      w  r°MRpV3R lpR o\0        VVSV3R lS\0        V3R l.SV3R lV
SVW‰SV3R lV
\0        V3R	 l.VV\0        V.\0        VV3R
 l.VV3R lVV3R l.VV3R lVV3R l.V\0        S.\0        VV3R l.VSS\0        VV3R l.3.p\3        WÜR7      ! V 4      p Ve	   W°,          p V # )zHelper for futrig.)ÚTR1ÚTR2ÚTR3rÞ   ÚTR10ÚLrC  ÚTR8ÚTR6ÚTR15ÚTR16ÚTR111ÚTR5ÚTRmorrieÚTR11Ú_TR11ÚTR14ÚTR22ÚTR12Nc                 ó†   <€ S! V 4      V P                  4       \        V 4      \        V P                  4      V P                  3# rZ   )r   r   rn   rf   rõ   )rB   rd  s   &€rC   rÌ   Ú_futrig.<locals>.<lambda>¡  s*   ø€ ‘a˜“d˜AŸK™K›M¬6°!«9´c¸!¿&¹&³kÀ1Ç8Á8ÑLrW   c                 ó,   € V P                  \        4      # rZ   )rá   r(   rÐ   s   &rC   rÌ   rr  ¢  s   € �a—e‘eÔ1Ô2rW   c                 ó&   <€ \        \        V S4      # rZ   ©Ú_eapplyr*   ©rB   Útrigss   &€rC   rÌ   rr  ©  ó   ø€ ”'œ& ! UÔ+rW   c                 ó&   <€ \        \        V S4      # rZ   ©rv  r   rw  s   &€rC   rÌ   rr  «  ó   ø€ œW¤X¨q°%Ô8rW   c                 ó    <€ \        R  V S4      # )c                 ó4   € \        V P                  4       4      # rZ   )r*   Únormal)r>  s   &rC   rÌ   Ú+_futrig.<locals>.<lambda>.<locals>.<lambda>­  s   € ¤F¨1¯8©8«:Ô$6rW   )rv  rw  s   &€rC   rÌ   rr  ­  s   ø€ ”'Ñ6¸¸5ÔArW   c                 ó&   <€ \        \        V S4      # rZ   ru  rw  s   &€rC   rÌ   rr  ²  ry  rW   c                 ó&   <€ \        \        V S4      # rZ   r{  rw  s   &€rC   rÌ   rr  ´  r|  rW   c                 ó    <€ S! S! V 4      4      # rZ   r[   )rB   ra  rÞ   s   &€€rC   rÌ   rr  ¸  s   ø€ ™T¡# a£&œ\rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   ©rv  r   )rB   rj  rx  s   &€€rC   rÌ   rr  º  s   ø€ ”gœj©#¨a«&°%Ô8rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   r…  )rB   rg  rx  s   &€€rC   rÌ   rr  »  s   ø€ ”gÜ™D ›G Uô,rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   r…  )rB   rf  rx  s   &€€rC   rÌ   rr  ¾  s   ø€ ”wœz©3¨q«6°5Ô9rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   r…  )rB   rh  rx  s   &€€rC   rÌ   rr  ¿  s   ø€ ”wÜ™D ›G Uô,rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   r…  )rB   ro  rx  s   &€€rC   rÌ   rr  Ã  s   ø€ œWÜ™˜Q› ô(rW   c                 ó2   <€ \        \        S! V 4      S4      # rZ   )rv  r	   )rB   rp  rx  s   &€€rC   rÌ   rr  Æ  s   ø€ œWÜ™$˜q›' 5ô*rW   )Ú	objective)r×   r`  ra  rb  rÞ   rc  rd  rC  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rá   r(   rñ   r  r1   r2   )rA   r`  rb  rc  rC  re  ri  rk  rl  rm  rn  rO   ÚLopsÚtreerd  rp  rg  rh  ra  ro  rÞ   rj  rf  rx  s   &             @@@@@@@@@@rC   r[  r[  ’  s5  ÿù€ ÷÷ ÷ ÷ ÷ ñ ð
 �5‰5Ô&×'Ò'Øˆà‡x‡x€xØ×#Ñ#Ô$9Ó:‰ˆˆqàˆäL€DÙ2€EäàØØÜ+ØÜ	Ô8Ð9ØÜAØØØØ�SÜ+ØÜ	Ô8Ð9ØØÜ	�3ˆÜ	Õ)Ð*å8õ,ð	-õ
 :õ,ð	-ð 	Ü	�4ÐÜ	õ (ð 	)àˆS�$Ü	õ *ð 	+ðC#	
ð$€DôJ 	ˆtÕ$ QÓ'€AàÒØ�Iˆà€HrW   c                ó  € \        V \        4      '       d   \        V P                  4      # \        V \        4      '       g   R# \
        ;QJ d&    R V P                   4       F  '       d   K   R# 	  R# ! R V P                   4       4      # )z@_eapply helper to tell whether ``e`` and all its args
are Exprs.Fc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irZ   )Ú_is_Expr)r\   r>  s   & rC   r^   Ú_is_Expr.<locals>.<genexpr>Ø  s   é € Ð+¡F˜qŒx˜�{ˆ{£Fùs   ‚T)r9   r   r�  r�   r   Úallrf   )rA   s   &rC   r�  r�  Ñ  sa   € ô �!”Z× Ò Ü˜Ÿ™ÓÐÜ�aœ×ÒÙß‹3Ñ+ A§F¢FÓ+�3Œ3Ð+Š3Ð+ˆ3Ñ+ A§F¢FÓ+Ó+Ð+rW   c           	     ó   € \        V\        4      '       g   V# \        V4      '       g   VP                  '       g	   V ! V4      # VP                  ! VP                   Uu. uF"  pVe   V! V4      '       d   \        W4      MTNK$  	  up!  # u upi )z`Apply ``func`` to ``e`` if all args are Exprs else only
apply it to those args that *are* Exprs.)r9   r   r�  rf   re   rv  )re   rA   ÚcondÚeis   &&& rC   rv  rv  Û  s{   € ô �aœ×ÒØˆÜ�‡{‚{˜!Ÿ&Ÿ&˜&Ù�A‹wˆØ�6Š6à—&’&óáˆBð #šl©d°2¯hªhŒ�Ô¸RÒ?Ùññ ð ùò s   ÁBÁ5B)FrZ   )\Úcollectionsr   Ú	functoolsr   Ú
sympy.corer   r   r   r   r	   r
   r   r   Úsympy.core.cacher   Úsympy.core.functionr   r   r   r   r   r   r   Úsympy.core.numbersr   r   Úsympy.core.intfuncr   Úsympy.core.sortingr   Úsympy.core.symbolr   r   r   Úsympy.external.gmpyr   Úsympy.functionsr   r   r   r    r!   r"   r#   r$   r%   r&   Ú%sympy.functions.elementary.hyperbolicr'   Ú(sympy.functions.elementary.trigonometricr(   Úsympy.polysr)   r*   r+   r,   Úsympy.polys.domainsr-   Úsympy.polys.polyerrorsr.   Úsympy.polys.polytoolsr/   Úsympy.simplify.cse_mainr0   Úsympy.strategies.corer1   Úsympy.strategies.treer2   Úsympy.utilities.iterablesr3   Úsympy.utilities.miscr4   r¥   râ   r²   rÛ   rþ   rÖ   r  r!  r&  r6  r<  r;  r=  r?  r  rA  rÏ   r[  r�  rv  r[   rW   rC   Ú<module>r¬     s  ðÝ #Ý ÷-÷ -ó -å $÷G÷ Gñ Gç )Ý #Ý %ß 2Ñ 2Ý *ß K× KÕ KÝ !Ý DÝ Jß EÓ EÝ "Ý 5Ý *Ý 'Ý *Ý (Ý .Ý &à"$¨E¸Ø!&ôKFð\  Ð!3Ð	4€òôDiòX[ð~E ô EòPAð €òQòh)ñX €Ù€Ù€ò)ôXð 	ó~ó 	ð~ðD(�tô (òV<ò~,ö	rW   