§
    ]²ÅjFh  ã                  ó¦  — U d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZ d d	l
mZ d d
lmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl m(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl m.Z.m/Z/m0Z0m1Z1m2Z2 d dl m3Z3m4Z4m5Z5m6Z6 d dl m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZE d dlFmGZG d dlHmIZImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^ d d l_m`Z` d d!lambZb d d"lcmdZd d#„ Zei Zfd$egd%<   d&„ Zh	 	 	 d0d*„Zi G d+„ d,¦  «        Zjd(ak G d-„ d.¦  «        Zl	 	 	 d0d/„Zmd(S )1é    )Úannotations)Údefaultdict)Úreduce©Úpermutations)ÚAdd)ÚBasic)ÚMul)ÚWildÚDummyÚSymbol)Úsympify)ÚRationalÚpiÚI)ÚEqÚNe)ÚS)Úordered)Úiterfreeargs)ÚexpÚsinÚcosÚtanÚcotÚasinÚatan)ÚlogÚsinhÚcoshÚtanhÚcothÚasinh)ÚsqrtÚerfÚerfiÚliÚEi)ÚbesseljÚbesselyÚbesseliÚbesselk)Úhankel1Úhankel2ÚjnÚyn)ÚAbsÚreÚimÚsignÚarg)ÚLambertW)ÚfloorÚceiling)Ú	Piecewise)Ú	HeavisideÚ
DiracDelta)Úcollect)ÚAndÚOr)Úuniq)ÚquoÚgcdÚlcmÚfactor_listÚcancelÚPolynomialError)Úitermonomials)Úroot_factors)ÚPolyRing)Úsolve_lin_sys)Úconstruct_domain)Ú	integratec                óf  — t          ¦   «         }|                      |¦  «        �r| j        r| j        r|                     | ¦  «         nè| j        s| j        r3| j        D ]}|t          ||¦  «        z  }Œ|                     | ¦  «         n§| j	        rƒ|t          | j
        |¦  «        z  }| j        j        s^| j        j        r6|                     | j
        t          d| j        j        ¦  «        z  ¦  «         n:|t          | j        |¦  «        | hz  z  }n| j        D ]}|t          ||¦  «        z  }Œ|S )aò  
    Returns a set of all functional components of the given expression
    which includes symbols, function applications and compositions and
    non-integer powers. Fractional powers are collected with
    minimal, positive exponents.

    Examples
    ========

    >>> from sympy import cos, sin
    >>> from sympy.abc import x
    >>> from sympy.integrals.heurisch import components

    >>> components(sin(x)*cos(x)**2, x)
    {x, sin(x), cos(x)}

    See Also
    ========

    heurisch
    é   )ÚsetÚhas_freeÚ	is_symbolÚis_commutativeÚaddÚis_FunctionÚis_DerivativeÚargsÚ
componentsÚis_PowÚbaser   Ú
is_IntegerÚis_Rationalr   Úq)ÚfÚxÚresultÚgs       úIC:\Projects\Historical\venv\Lib\site-packages\sympy/integrals/heurisch.pyrV   rV   -   s=  € õ, ‰UŒU€Fà‡z‚z�!�}„}ñ +ØŒ;ð 	+˜1Ô+ð 	+Ø�JŠJ�q‰MŒMˆMˆMØŒ]ð 	+˜aœoð 	+Ø”Vð +ð +�Ø�* Q¨Ñ*Ô*Ñ*��à�JŠJ�q‰MŒMˆMˆMØŒXð 
	+Ø•j ¤¨Ñ+Ô+Ñ+ˆFà”5Ô#ð 9Ø”5Ô$ð 9Ø—J’J˜qœv¥x°°1´5´7Ñ';Ô';Ñ;Ñ<Ô<Ð<Ð<à�j¨¬°Ñ2Ô2°a°SÑ8Ñ8�Føà”Vð +ð +�Ø�* Q¨Ñ*Ô*Ñ*��à€Mó    zdict[str, list[Dummy]]Ú_symbols_cachec           	     ó   — 	 t           |          }n# t          $ r g }|t           | <   Y nw xY wt          |¦  «        |k     rG|                     t	          d| t          |¦  «        fz  ¦  «        ¦  «         t          |¦  «        |k     °G|d|…         S )z*get vector of symbols local to this modulez%s%iN)rb   ÚKeyErrorÚlenÚappendr   )ÚnameÚnÚlsymss      r`   Ú_symbolsrj   `   sŸ   € ð%Ý˜tÔ$ˆˆøÝð %ð %ð %ØˆØ$��tÑÐÐð%øøøõ ˆe‰*Œ*�qŠ.ˆ.Ø�Š•e˜F d­C°©J¬JÐ%7Ñ7Ñ8Ô8Ñ:Ô:Ð:õ ˆe‰*Œ*�qŠ.ˆ.ð ��!�Œ9Ðs   ‚ �)¨)FNé   c	                ó  ‡— ddl m}	m}
 t          | ¦  «        } |                      |¦  «        s| |z  S t          | ||||||||¦	  «	        }t          |t          ¦  «        s|S g }t           |
|¦  «        ¦  «        D ]&}	 | |	|gd|f¬¦  «        z  }Œ# t          $ r Y Œ#w xY w|s|S t          t          |¦  «        ¦  «        }g Š |
| ¦  «        D ]&}	 ‰ |	|gd|f¬¦  «        z  ŠŒ# t          $ r Y Œ#w xY wˆfd„|D ¦   «         }|s|S t          |¦  «        dk    rJg }|D ]3}|                     d„ |                     ¦   «         D ¦   «         ¦  «         Œ4 |	|d|f¬¦  «        |z   }g }|D ]²}t          |                      |¦  «        ||||||||¦	  «	        }t!          d„ |                     ¦   «         D ¦   «         Ž }t#          d	„ |                     ¦   «         D ¦   «         Ž }|€#t%          |                      |¦  «        |¦  «        }|                     ||f¦  «         Œ³t          |¦  «        dk    r*t          | ||||||||¦	  «	        |f|d         d         dfg}n,|                     t          | ||||||||¦	  «	        df¦  «         t)          |Ž S )
a�  
    A wrapper around the heurisch integration algorithm.

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

    This method takes the result from heurisch and checks for poles in the
    denominator. For each of these poles, the integral is reevaluated, and
    the final integration result is given in terms of a Piecewise.

    Examples
    ========

    >>> from sympy import cos, symbols
    >>> from sympy.integrals.heurisch import heurisch, heurisch_wrapper
    >>> n, x = symbols('n x')
    >>> heurisch(cos(n*x), x)
    sin(n*x)/n
    >>> heurisch_wrapper(cos(n*x), x)
    Piecewise((sin(n*x)/n, Ne(n, 0)), (x, True))

    See Also
    ========

    heurisch
    r   )ÚsolveÚdenomsT)ÚdictÚexcludec                ó   •— g | ]}|‰v¯|‘Œ	S © rr   )Ú.0ÚsÚslns0s     €r`   ú
<listcomp>z$heurisch_wrapper.<locals>.<listcomp>¬   s   ø€ Ð.Ð.Ð.�!˜q¨˜~˜~ˆA˜~˜~˜~ra   rM   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS rr   ©r   ©rs   ÚkeyÚvalues      r`   rv   z$heurisch_wrapper.<locals>.<listcomp>²   s$   € ÐJÐJÐJ©:¨3°�˜3 ™œÐJÐJÐJra   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS rr   rx   ry   s      r`   rv   z$heurisch_wrapper.<locals>.<listcomp>º   s$   € ÐGÐGÐG©
¨¨U•R˜˜U‘^”^ÐGÐGÐGra   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS rr   )r   ry   s      r`   rv   z$heurisch_wrapper.<locals>.<listcomp>»   s$   € ÐIÐIÐI©*¨#¨u•r˜#˜u‘~”~ÐIÐIÐIra   )Úsympy.solvers.solversrm   rn   r   rO   ÚheurischÚ
isinstancer	   r   ÚNotImplementedErrorÚlistr?   re   ÚextendÚitemsÚsubsr=   r>   rK   rf   r9   )r\   r]   ÚrewriteÚhintsÚmappingsÚretriesÚdegree_offsetÚunnecessary_permutationsÚ_try_heurischrm   rn   ÚresÚslnsÚdÚeqsÚsub_dictÚpairsÚexprÚcondÚgenericru   s                       @r`   Úheurisch_wrapperr–   n   sm  ø€ ð: 4Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ý�‰
Œ
€AØ�:Š:�a‰=Œ=ð Ø�‰sˆ
å
�1�a˜ %¨°7¸MØ+¨]ñ<ô <€Cå�c�5Ñ!Ô!ð Øˆ
ð €DÝ�V�V˜C‘[”[Ñ!Ô!ð ð ˆð	Ø�E�E˜1˜# D°1°$Ð7Ñ7Ô7Ñ7ˆDˆDøÝ"ð 	ð 	ð 	ØˆDð	øøøàð Øˆ
Ý•�T‘
”
ÑÔ€Dà€EØˆV�A‰YŒYð ð ˆð	Ø�U�U˜A˜3 T°A°4Ð8Ñ8Ô8Ñ8ˆEˆEøÝ"ð 	ð 	ð 	ØˆDð	øøøà.Ð.Ð.Ð.�tÐ.Ñ.Ô.€DØð Øˆ
Ý
ˆ4�y„y�1‚}€}ØˆØð 	Lð 	LˆHØ�JŠJÐJÐJ¸¿ºÑ9IÔ9IÐJÑJÔJÑKÔKÐKÐKØˆu�S˜t¨a¨TÐ2Ñ2Ô2°TÑ9ˆà€EØð #ð #ˆÝ˜Ÿš˜xÑ(Ô(¨!¨W°e¸XÀwØ%Ð'?Ø%ñ'ô 'ˆõ ÐGÐG°h·n²nÑ6FÔ6FÐGÑGÔGÐHˆÝÐIÐI¸¿ºÑ8HÔ8HÐIÑIÔIÐJˆØˆ<Ý˜QŸVšV HÑ-Ô-¨aÑ0Ô0ˆDØ�Š�d˜D�\Ñ"Ô"Ð"Ð"õ ˆ5�z„z�Q‚€Ý˜1˜a ¨%°¸7Ø+Ð-EØ+ñ-ô -ð &ð'ð ˜”(˜1”+˜tÐ$ð	&ˆˆð 	�Š•h˜q ! W¨e°X¸wØ+Ð-EØ+ñ-ô -ð #ð$ñ 	%ô 	%ð 	%õ �eÐÐs$   Á>BÂ
BÂBÃC&Ã&
C3Ã2C3c                  ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚBesselTablez~
    Derivatives of Bessel functions of orders n and n-1
    in terms of each other.

    See the docstring of DiffCache.
    c                óŒ   — i | _         t          d¦  «        | _        t          d¦  «        | _        |                      ¦   «          d S )Nrh   Úz)Útabler   rh   rš   Ú_create_table)Úselfs    r`   Ú__init__zBesselTable.__init__Ö   s;   € ØˆŒ
Ý�s‘”ˆŒÝ�s‘”ˆŒØ×ÒÑÔÐÐÐra   c                ó   — | j         | j        | j        }}}t          t          t
          t          fD ]L} ||dz
  |¦  «        | |||¦  «        z  |z  z
  |dz
   ||dz
  |¦  «        z  |z   |||¦  «        z
  f||<   ŒMt          } ||dz
  |¦  «        | |||¦  «        z  |z  z
  |dz
   ||dz
  |¦  «        z  |z   |||¦  «        z   f||<   t          } ||dz
  |¦  «         | |||¦  «        z  |z  z
  |dz
   ||dz
  |¦  «        z  |z   |||¦  «        z
  f||<   t          t          fD ]O} ||dz
  |¦  «        |dz    |||¦  «        z  |z  z
  |dz
   ||dz
  |¦  «        z  |z   |||¦  «        z
  f||<   ŒPd S )NrM   )r›   rh   rš   r)   r*   r-   r.   r+   r,   r/   r0   )Útr›   rh   rš   r\   s        r`   rœ   zBesselTable._create_tableÜ   sâ  € Ø”g˜qœs A¤C�!ˆqˆÝ�7¥G­WÐ5ð 	5ð 	5ˆAØ˜˜!˜A™#˜q™	œ	 A a a¨¨1¡g¤g¡I¨a¡KÑ/Ø˜1™˜a˜a  !¡ Q™iœi™¨Ñ)¨A¨A¨a°©G¬GÑ3ð5ˆE�!‰HˆHõ ˆØ�A�a˜‘c˜1‘I”I  ! ! A q¡'¤'¡	¨!¡Ñ+Ø�q‘S˜!˜!˜A˜a™C ™)œ)‘O AÑ%¨¨¨!¨Q©¬Ñ/ð1ˆˆa‰åˆØ�Q�q˜‘s˜A‘Y”Y�J  1 1 Q¨¡7¤7¡¨1¡Ñ,Ø�q‘S˜!˜!˜A˜a™C ™)œ)‘O AÑ%¨¨¨!¨Q©¬Ñ/ð1ˆˆa‰õ •b�ð 	5ð 	5ˆAØ˜˜!˜A™#˜q™	œ	 Q q¡S¨!¨!¨A¨q©'¬'¡M°!¡OÑ3Ø˜1™˜a˜a  !¡ Q™iœi™¨Ñ)¨A¨A¨a°©G¬GÑ3ð5ˆE�!‰HˆHð	5ð 	5ra   c                ó°   — || j         v rL| j         |         \  }}| j        |f| j        |fg}|                     |¦  «        |                     |¦  «        fS d S ©N)r›   rh   rš   r…   )r    r\   rh   rš   Údiff0Údiff1Úrepls          r`   ÚdiffszBesselTable.diffsí   s\   € Ø�”ˆ<ˆ<Øœ7 1œ:‰LˆE�5Ø”S˜!�H˜qœs A˜hÐ'ˆDØ—J’J˜tÑ$Ô$ e§j¢j°Ñ&6Ô&6Ð7Ð7ð ˆ<ra   c                ó   — || j         v S r¢   )r›   )r    r\   s     r`   ÚhaszBesselTable.hasó   s   € Ø�A”Gˆ|Ðra   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rž   rœ   r¦   r¨   rr   ra   r`   r˜   r˜   Î   sZ   € € € € € ðð ðð ð ð5ð 5ð 5ð"8ð 8ð 8ðð ð ð ð ra   r˜   c                  ó   — e Zd ZdZd„ Zd„ ZdS )Ú	DiffCacheau  
    Store for derivatives of expressions.

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

    The standard form of the derivative of a Bessel function of order n
    contains two Bessel functions of orders n-1 and n+1, respectively.
    Such forms cannot be used in parallel Risch algorithm, because
    there is a linear recurrence relation between the three functions
    while the algorithm expects that functions and derivatives are
    represented in terms of algebraically independent transcendentals.

    The solution is to take two of the functions, e.g., those of orders
    n and n-1, and to express the derivatives in terms of the pair.
    To guarantee that the proper form is used the two derivatives are
    cached as soon as one is encountered.

    Derivatives of other functions are also cached at no extra cost.
    All derivatives are with respect to the same variable `x`.
    c                óP   — i | _         || _        t          st          ¦   «         ad S d S r¢   )Úcacher]   Ú_bessel_tabler˜   )r�   r]   s     r`   rž   zDiffCache.__init__  s1   € ØˆŒ
ØˆŒõ ð 	*Ý'™MœMˆMˆMˆMð	*ð 	*ra   c                ó²  — | j         }||v rnÄt          |d¦  «        rt                               |j        ¦  «        s+t          |                     | j        ¦  «        ¦  «        ||<   nj|j        \  }}t           	                    |j        ||¦  «        \  }}|  
                    |¦  «        }||z  ||<   ||z  ||                     |dz
  |¦  «        <   ||         S )NÚfuncrM   )r°   Úhasattrr±   r¨   r³   rD   Údiffr]   rU   r¦   Úget_diff)r�   r\   r°   rh   rš   Úd0Úd1Údzs           r`   r¶   zDiffCache.get_diff  sË   € Ø”
ˆà�ˆ:ˆ:ØÝ˜!˜VÑ$Ô$ð 	*Ý×!Ò! !¤&Ñ)Ô)ð	*å˜aŸfšf T¤V™nœnÑ-Ô-ˆE�!‰HˆHà”6‰DˆAˆqÝ"×(Ò(¨¬°°AÑ6Ô6‰FˆB�Ø—’˜qÑ!Ô!ˆBØ˜"‘uˆE�!‰HØ$& r¡EˆE�!—&’&˜˜1™˜a‘.”.Ñ!à�QŒxˆra   N)r©   rª   r«   r¬   rž   r¶   rr   ra   r`   r®   r®   ø   s<   € € € € € ðð ð,*ð *ð *ðð ð ð ð ra   r®   c	                óh  ‡‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7‡8‡9‡:‡;‡<‡=— t          | ¦  «        } |durL|                      t          t          t          t
          t          t          t          t          t          ¦	  «	        rdS |                      ‰¦  «        s| ‰z  S | j        s|                      ‰¦  «        \  }	} nt          j        }	t           t"          t$          ft&          t(          t*          t,          ft.          i}
|r1|
                     ¦   «         D ]\  }}|                      ||¦  «        } Œn%|
                     ¦   «         D ]} | j        |Ž r nŒd}t7          | ‰¦  «        }t9          ‰¦  «        Š5|��4|�st;          d‰g¬¦  «        }t;          d‰g¬¦  «        }t;          d‰g¬¦  «        }t=          |¦  «        D �]×}|j        �rOtA          |tB          ¦  «        rÅ|j"        d          #                    |‰|z  z  ¦  «        }|�œ| $                    ‰tC          ||         ‰||         z  z  ¦  «        ||         ‰||         z  z  d||         z  z  tK          ||         d	z   tM          ||         ‰||         z  z  ¦  «        z  ||         z  ¦  «        z  z
  z  ¦  «         ŒåtA          |tN          ¦  «        �r]|j"        d          #                    |‰d
z  z  ¦  «        }|�||         j(        r9| $                    tS          tU          ||         ¦  «        ‰z  ¦  «        ¦  «         n9| $                    tW          tU          ||          ¦  «        ‰z  ¦  «        ¦  «         |j"        d          #                    |‰d
z  z  |‰z  z   |z   ¦  «        }|��q||         j(        r«| $                    tU          tX          dz  ||          z  ¦  «        tO          ||         ||         d
z  d||         z  z  z
  ¦  «        z  tS          tU          ||         ¦  «        ‰z  ||         d
tU          ||         ¦  «        z  z  z   ¦  «        z  ¦  «         n¹||         j-        r¬| $                    tU          tX          dz  ||          z  ¦  «        tO          ||         ||         d
z  d||         z  z  z
  ¦  «        z  tW          tU          ||          ¦  «        ‰z  ||         d
tU          ||          ¦  «        z  z  z
  ¦  «        z  ¦  «         |j"        d          #                    |tM          ‰¦  «        d
z  z  ¦  «        }|�Þ||         j(        ra| $                    tS          tU          ||         ¦  «        tM          ‰¦  «        z  d	d
tU          ||         ¦  «        z  z  z   ¦  «        ¦  «         ||         j-        rc| $                    tW          tU          ||          ¦  «        tM          ‰¦  «        z  d	d
tU          ||          ¦  «        z  z  z
  ¦  «        ¦  «         �ŒZ|j.        �ru|j'        j/        �rh|j'        j0        d
k    �rW|j1         #                    |‰d
z  z  |z   ¦  «        }|�«||         j(        rž||         j(        rB| $                    te          tU          ||         ||         z  ¦  «        ‰z  ¦  «        ¦  «         nO||         j-        rB| $                    tg          tU          ||          ||         z  ¦  «        ‰z  ¦  «        ¦  «         |j1         #                    |‰d
z  z  |z
  ¦  «        }|��a||         j(        �rS||         j(        r·d	tU          ||         ‰d
z  z  ||         z
  ¦  «        z  }tM          d
tU          ||         ¦  «        z  tU          ||         ‰d
z  z  ||         z
  ¦  «        z  d
||         z  ‰z  z   ¦  «        tU          ||         ¦  «        z  Š.|‰5j4        ‰.<   | $                    ‰.¦  «         �ŒH||         j-        r‚| $                    ||          d
z  tU          ||          ¦  «        z  tk          tU          ||          ¦  «        ‰z  tU          ||         ‰d
z  z  ||         z
  ¦  «        z  ¦  «        z  ¦  «         �ŒÙn|t=          |¦  «        z  }t=          |¦  «        D ](}|t7          ‰5 6                    |¦  «        ‰¦  «        z  }Œ)to          dtq          |¦  «        ¦  «        Š/ts          tu          ts          tw          ty          ˆfd„tw          |‰/¦  «        D ¦   «         ¦  «        Ž ¦  «        d	         ¦  «        ¦  «        Š7d„ ‰7D ¦   «         }|€‰‰7d         d         ‰k    sJ ‚‰7 =                    d¦  «        g}t}          tr          ¦  «        Š=‰7D ]*}‰=t          |¦  «                  @                    |¦  «         Œ+ˆ=fd„‰=D ¦   «         Š7ˆ7fd„} |¦   «         }n|pg }ˆ7fd„Š4|D ]tŠ7ts          ‰7¦  «        Š7‰7|z   Š7ˆ4ˆ5fd„|D ¦   «         }d„ |D ¦   «         }tƒ          ˆ/fd„|D ¦   «         ¦  «        r(  ‰4| ¦  «        jB        ‰/Ž rt‡          ˆ/fd„|¦  «        Š6 n Œu|st‰          | ‰d||¬¦  «        }|�|	|z  S dS ˆ6fd„|D ¦   «         Š8ˆ/ˆ8fd„Š1ˆ/ˆ0ˆ1fd„Š0ˆ/ˆ1ˆ3fd„Š3i }|D ]Ž}|j        r…tA          |t&          ¦  «        rd|d	 ‰4|¦  «        d
z  z   <   Œ3tA          |t.          ¦  «        r#d|d	 ‰4|¦  «        z   <   d|d	 ‰4|¦  «        z
  <   ŒktA          |tŠ          ¦  «        rd| ‰4|¦  «        <   Œ� ‰4| ¦  «        Š.‰. F                    ¦   «         \  }} ‰3‰6¦  «        } ‰3|¦  «        }t=          ts          |¦  «        |d         gz   ts          |                     ¦   «         ¦  «        z   ¦  «        } |d         t�          d„ |                     ¦   «         D ¦   «         Ž z  }!ˆ/fd„|!||fD ¦   «         }"d|"v rdS d„ |"D ¦   «         \  }}}|!|d         z   ‰0|d	         ¦  «        z   H                    ¦   «         Š:ˆ2fd„Š2 ‰2| ¦  «        |t“          ||¦  «        z   }$}#|#d	k    r:|$d	k    r4t•          ty          t—          ‰/|#|$z   d	z
  |z   ¦  «        ¦  «        ¦  «        }%n0t•          ty          t—          ‰/|#|$z   |z   ¦  «        ¦  «        ¦  «        }%to          d tq          |%¦  «        ¦  «        Š9t™          ˆ9fd!„t›          |%¦  «        D ¦   «         Ž Š;t=          ¦   «         Š<ty          | ¦  «        D ]F}&t�          |&g‰/¢R Ž \  }'}(‰< $                    |'¦  «         ‰< O                    d"„ |(D ¦   «         ¦  «         ŒGd(ˆ.ˆ/ˆ1ˆ6ˆ9ˆ:ˆ;ˆ<fd#„	})tƒ          d$„ ‰/D ¦   «         ¦  «        r‰.jP        t=          ‰/¦  «        z
  }*n[‰. Q                    ¦   «         }+|+ R                    t§          tw          ‰/d%„ ‰/D ¦   «         ¦  «        ¦  «        ¦  «        jP        |+jP        z  }*|*s |)d&¦  «        },|,€
 |)¦   «         },n
 |)¦   «         },|,�]|, T                    |¦  «        }-t«          |-¦  «         V                    ¦   «         }-|-j        r|-                     ‰¦  «        d	         }-|	|-z  S |dk    r t‰          | ‰||||d	z
  |¬'¦  «        }|�|	|z  S dS ))a-
  
    Compute indefinite integral using heuristic Risch algorithm.

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

    This is a heuristic approach to indefinite integration in finite
    terms using the extended heuristic (parallel) Risch algorithm, based
    on Manuel Bronstein's "Poor Man's Integrator".

    The algorithm supports various classes of functions including
    transcendental elementary or special functions like Airy,
    Bessel, Whittaker and Lambert.

    Note that this algorithm is not a decision procedure. If it isn't
    able to compute the antiderivative for a given function, then this is
    not a proof that such a functions does not exist.  One should use
    recursive Risch algorithm in such case.  It's an open question if
    this algorithm can be made a full decision procedure.

    This is an internal integrator procedure. You should use top level
    'integrate' function in most cases, as this procedure needs some
    preprocessing steps and otherwise may fail.

    Specification
    =============

     heurisch(f, x, rewrite=False, hints=None)

       where
         f : expression
         x : symbol

         rewrite -> force rewrite 'f' in terms of 'tan' and 'tanh'
         hints   -> a list of functions that may appear in anti-derivate

          - hints = None          --> no suggestions at all
          - hints = [ ]           --> try to figure out
          - hints = [f1, ..., fn] --> we know better

    Examples
    ========

    >>> from sympy import tan
    >>> from sympy.integrals.heurisch import heurisch
    >>> from sympy.abc import x, y

    >>> heurisch(y*tan(x), x)
    y*log(tan(x)**2 + 1)/2

    See Manuel Bronstein's "Poor Man's Integrator":

    References
    ==========

    .. [1] https://www-sop.inria.fr/cafe/Manuel.Bronstein/pmint/index.html

    For more information on the implemented algorithm refer to:

    .. [2] K. Geddes, L. Stefanus, On the Risch-Norman Integration
       Method and its Implementation in Maple, Proceedings of
       ISSAC'89, ACM Press, 212-217.

    .. [3] J. H. Davenport, On the Parallel Risch Algorithm (I),
       Proceedings of EUROCAM'82, LNCS 144, Springer, 144-157.

    .. [4] J. H. Davenport, On the Parallel Risch Algorithm (III):
       Use of Tangents, SIGSAM Bulletin 16 (1982), 3-6.

    .. [5] J. H. Davenport, B. M. Trager, On the Parallel Risch
       Algorithm (II), ACM Transactions on Mathematical
       Software 11 (1985), 356-362.

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    sympy.integrals.heurisch.components
    TNÚa)rp   ÚbÚcr   éÿÿÿÿrM   é   é   r]   c                óV   •— g | ]%}|d                                ‰¦  «        d         |f‘Œ&S )r   rM   )Úas_independent)rs   r»   r]   s     €r`   rv   zheurisch.<locals>.<listcomp>õ  s5   ø€ Ð?Ð?Ð?¨Aˆ!ˆAŒ$×
Ò
˜aÑ
 Ô
  Ô
# QÐ	'Ð?Ð?Ð?ra   c                ó   — i | ]\  }}||“Œ	S rr   rr   ©rs   ÚkÚvs      r`   ú
<dictcomp>zheurisch.<locals>.<dictcomp>ö  s   € Ð,Ð,Ð,™D˜A˜q�1�aÐ,Ð,Ð,ra   c                ó    •— g | ]
}‰|         ‘ŒS rr   rr   )rs   ÚiÚtypess     €r`   rv   zheurisch.<locals>.<listcomp>   s   ø€ Ð+Ð+Ð+ �5˜”8Ð+Ð+Ð+ra   c               3  óL   •K  — t          ‰¦  «        D ]} d„ | D ¦   «         V — Œd S )Nc                ó   — g | ]	}|D ]}|‘ŒŒ
S rr   rr   )rs   rÉ   Újs      r`   rv   z4heurisch.<locals>._iter_mappings.<locals>.<listcomp>  s%   € Ð/Ð/Ð/˜Q¨QÐ/Ð/¨�qÐ/Ð/Ð/Ð/ra   r   )rÉ   Úmappings    €r`   Ú_iter_mappingsz heurisch.<locals>._iter_mappings  sE   øè è € Ý! 'Ñ*Ô*ð 0ð 0�Ø/Ð/ !Ð/Ñ/Ô/Ð/Ð/Ð/Ð/ð0ð 0ra   c                ó.   •— |                       ‰¦  «        S r¢   )r…   )r“   rÎ   s    €r`   Ú_substitutezheurisch.<locals>._substitute  s   ø€ Ø�yŠy˜Ñ!Ô!Ð!ra   c                óL   •— g | ] } ‰‰                      |¦  «        ¦  «        ‘Œ!S rr   )r¶   )rs   r_   rÑ   Údcaches     €€r`   rv   zheurisch.<locals>.<listcomp>  s/   ø€ ÐBÐBÐB°a�+�+˜fŸošo¨aÑ0Ô0Ñ1Ô1ÐBÐBÐBra   c                óB   — g | ]}|                      ¦   «         d          ‘ŒS )rM   )Úas_numer_denom)rs   r_   s     r`   rv   zheurisch.<locals>.<listcomp>  s)   € Ð9Ð9Ð9¨Q�1×#Ò#Ñ%Ô% aÔ(Ð9Ð9Ð9ra   c              3  ó,   •K  — | ]} |j         ‰Ž V — Œd S r¢   )Úis_polynomial)rs   ÚhÚVs     €r`   ú	<genexpr>zheurisch.<locals>.<genexpr>  s,   øè è € Ð3Ð3 qˆˆqŒ Ð"Ð3Ð3Ð3Ð3Ð3Ð3ra   c                ó    •— t          | |g‰¢R Ž S r¢   )rB   )Úpr[   rÙ   s     €r`   ú<lambda>zheurisch.<locals>.<lambda>  s   ø€ ­¨A¨q¨°1¨¨¨€ ra   )r†   r‡   r‹   c                ó4   •— g | ]}t          ‰|z  ¦  «        ‘ŒS rr   )rD   )rs   r_   Údenoms     €r`   rv   zheurisch.<locals>.<listcomp>  s#   ø€ Ð/Ð/Ð/ 1�v�e˜A‘g‰ŒÐ/Ð/Ð/ra   c                óL   •‡ — t          ˆ fd„t          ‰‰¦  «        D ¦   «         Ž S )Nc                óF   •— g | ]\  }}|‰                      |¦  «        z  ‘ŒS rr   )rµ   )rs   r�   rÆ   rØ   s      €r`   rv   z1heurisch.<locals>._derivation.<locals>.<listcomp>  s+   ø€ Ð@Ð@Ð@©¨¨1�a˜!Ÿ&š& ™)œ)‘mÐ@Ð@Ð@ra   )r   Úzip)rØ   rÙ   Únumerss   `€€r`   Ú_derivationzheurisch.<locals>._derivation  s,   øø€ ÝÐ@Ð@Ð@Ð@µ°F¸A±´Ð@Ñ@Ô@ÐAÐAra   c                óF  •— ‰D ]œ}|                       |¦  «        sŒ ‰| ¦  «        t          j        urm|                      |¦  «                             ¦   «         \  }} ‰|¦  «        t          ||                     |¦  «        ¦  «                             ¦   «         z  c S Œ�| S r¢   )r¨   r   ÚZeroÚas_polyÚ	primitiverA   rµ   Úas_expr)rÜ   Úyr½   r[   rÙ   Ú
_deflationrä   s       €€€r`   rë   zheurisch.<locals>._deflation   s¢   ø€ Øð 	Að 	AˆAØ—5’5˜‘8”8ð Øàˆ{˜1‰~Œ~¥Q¤VÐ+Ð+Ø—y’y ‘|”|×-Ò-Ñ/Ô/‘��1Ø!�z !‘}”}¥S¨¨A¯FªF°1©I¬IÑ%6Ô%6×%>Ò%>Ñ%@Ô%@Ñ@Ð@Ð@Ð@ð ,ð ˆra   c           
     óº  •— ‰D �]I}|                       |¦  «        sŒ ‰	|¦  «        t          j        u�r|                      |¦  «                             ¦   «         \  }}|                     ¦   «         }t          | ‰	|¦  «        |¦  «        }t          |t          ||                     |¦  «        |¦  «        |¦  «        } ‰
|¦  «        }|                     |¦  «         	                    ¦   «         dk    r|d         ||d         z  fc S  ‰
t          ||z  ¦  «        ¦  «        }|d         |d         z  |z  |d         |d         z  fc S �ŒKt          j        | fS )Nr   rM   )r¨   r   ræ   rç   rè   ré   rA   r@   rµ   ÚdegreerD   ÚOne)rÜ   rê   r½   r[   rØ   rt   Úc_splitÚq_splitrÙ   rä   Ú	_splitters           €€€r`   rñ   zheurisch.<locals>._splitter+  sQ  ø€ Øð 	Hñ 	HˆAØ—5’5˜‘8”8ð Øàˆ{˜1‰~Œ~¥Q¤VÐ+Ñ+Ø—y’y ‘|”|×-Ò-Ñ/Ô/‘��1à—I’I‘K”K�å˜˜;˜; q™>œ>¨1Ñ-Ô-�Ý˜�3˜q !§&¢&¨¡)¤)¨QÑ/Ô/°Ñ3Ô3�à#˜) A™,œ,�à—9’9˜Q‘<”<×&Ò&Ñ(Ô(¨AÒ-Ð-Ø# AœJ¨¨G°A¬J©Ð7Ð7Ð7Ð7à#˜)¥F¨1¨q©5¡M¤MÑ2Ô2�à œ
 7¨1¤:Ñ-¨aÑ/°¸´¸GÀA¼JÑ1FÐGÐGÐGÐGñ ,õ" ”�qˆzÐra   Fc                ó   — g | ]	\  }}|¯|‘Œ
S rr   rr   rÄ   s      r`   rv   zheurisch.<locals>.<listcomp>X  s!   € Ð@Ð@Ð@¡$ ! Q¸QÐ@˜AÐ@Ð@Ð@ra   c                ó$   •— g | ]} |j         ‰Ž ‘ŒS rr   )rç   )rs   rÜ   rÙ   s     €r`   rv   zheurisch.<locals>.<listcomp>Y  s!   ø€ Ð3Ð3Ð3 1��”˜A�Ð3Ð3Ð3ra   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rr   )Útotal_degree)rs   rÜ   s     r`   rv   zheurisch.<locals>.<listcomp>_  s"   € Ð4Ð4Ð4 Q�—’Ñ Ô Ð4Ð4Ð4ra   c                óR  •— | j         rp| j        j        rb| j        j        dk    rR| j        j        dk    r| j        j        | j        j        z   dz
  S t          | j        j        | j        j        z   ¦  «        S dS | j        s'| j        r t          ˆfd„| j        D ¦   «         ¦  «        S dS )NrM   r   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r¢   rr   )rs   rØ   Ú	_exponents     €r`   rÚ   z.heurisch.<locals>._exponent.<locals>.<genexpr>m  s+   øè è € Ð4Ð4¨�y�y ‘|”|Ð4Ð4Ð4Ð4Ð4Ð4ra   )	rW   r   rZ   r[   rÜ   ÚabsÚis_AtomrU   Úmax)r_   rø   s    €r`   rø   zheurisch.<locals>._exponentc  s¨   ø€ ØŒ8ð 	ØŒuÔ ð  Q¤U¤W°¢\ \Ø”5”7˜Q’;�;Øœ5œ7 Q¤U¤WÑ,¨qÑ0Ð0å˜qœuœw¨¬¬Ñ0Ñ1Ô1Ð1à�qØ”ð 	˜qœvð 	ÝÐ4Ð4Ð4Ð4¨Q¬VÐ4Ñ4Ô4Ñ4Ô4Ð4à�1ra   ÚAc                ó,   •— g | ]\  }}‰|         |z  ‘ŒS rr   rr   )rs   rÉ   ÚmonomialÚpoly_coeffss      €r`   rv   zheurisch.<locals>.<listcomp>z  s6   ø€ ð /ð /ð /ÙˆAˆxð # 1”~ hÑ.ð /ð /ð /ra   c              3  ó    K  — | ]	\  }}|V — Œ
d S r¢   rr   )rs   ÚfactÚmuls      r`   rÚ   zheurisch.<locals>.<genexpr>‚  s&   è è € Ð8Ð8¡9 4¨˜$Ð8Ð8Ð8Ð8Ð8Ð8ra   c                óô	  •‡‡‡— t          ¦   «         }t          ¦   «         }| dk    rt          ‰%¦  «        }n„t          ‰¦  «        }t          ¦   «         }t          ‰%¦  «        D ]W}|t          t          |¦  «        ¦  «        z  }t          |¦  «        D ]&}t          t          ||| ¬¦  «        ¦  «        }||z  } ŒXg g }
}	t          |¦  «        D ]Ë}t	          |t
          d¬¦  «        }|                     t
          t          j        ¦  «        }|r‹|                     t          j	        t          j        ¦  «        }| 
                    t
          ¦  «        s| 
                    t
          ¦  «        rŒŸ|                     ||f¦  «         |                     |¦  «         ŒÌ|r³|                     ¦   «         \  }}|| f|v rs|                     || f¦  «         |                     ¦   «         r| }|                     ||z  ||z  z   ¦  «         |                     t          ||z  ¦  «        ¦  «         n |                     |t
          |z  z   ¦  «         |°³t!          dt#          |¦  «        ¦  «        }t!          dt#          |¦  «        ¦  «        }t%          t'          t)          t          |¦  «        |¦  «        ¦  «        ¦  «        D ]I\  }} |j
        ‰Ž r:‰"                     |¦  «         |	                     |t-          |¦  «        z  ¦  «         ŒJt%          t'          t)          t          |¦  «        |¦  «        ¦  «        ¦  «        D ]<\  }} |j
        ‰Ž r-‰"                     |¦  «         |
                     ||z  ¦  «         Œ=‰$‰#z  t/          |	Ž z   t/          |
Ž z   }‰ ‰ |¦  «        ‰!z  z
  }|                     ¦   «         d         }t          ‰"¦  «        t          ‰¦  «        z  Št          ¦   «         Šˆˆˆfd„Š	  ‰|¦  «         t3          ‰d	¬
¦  «        \  }}n# t4          $ r Y d S w xY wt7          ‰"|¦  «        }t7          ‰|¦  «        }	 |                     |¦  «        }n# t:          $ r t4          ‚w xY wt=          |                     ¦   «         |d¬¦  «        }|€d S |                      |¦  «                              tC          t)          ‰"t          j        gt#          ‰"¦  «        z  ¦  «        ¦  «        ¦  «        S )NÚQ)ÚfilterF)ÚevaluateÚBÚCr   c                óò   •— | j         s| j        rd S | ‰v rd S  | j        ‰Ž s‰                     | ¦  «         d S | j        s| j        s| j        r$t          t          ‰| j	        ¦  «        ¦  «         d S t          ‚r¢   )rY   rZ   rO   rR   Úis_AddÚis_MulrW   r‚   ÚmaprU   rE   )r“   Úfind_non_symsÚnon_symsÚsymss    €€€r`   r  z3heurisch.<locals>._integrate.<locals>.find_non_symsË  s—   ø€ ØŒð & $Ô"2ð &Ø�Ø˜��Ø�Ø"�T”] DÐ)ð &Ø—’˜TÑ"Ô"Ð"Ð"Ð"Ø”ð & ¤ð &¨t¬{ð &Ý•S˜¨¬	Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3õ &Ð%ra   T)Úfield)Ú_raw)"rN   r   r   rG   r<   r   Úgetr   ræ   rî   r¨   rR   ÚremoveÚpopÚcould_extract_minus_signr   rj   re   Úreversedr‚   râ   rf   r   r   rÕ   rJ   rE   rH   Ú	from_exprÚ
ValueErrorrI   ÚcoeffsÚxreplacero   )&r  Úatansr’   ÚirreduciblesÚsetVÚpolyÚzVrš   rt   Úlog_partÚ	atan_partÚmrê   r]   r  r  r¼   r½   Ú	candidaterØ   Ú	raw_numerÚgroundÚ_Ú
coeff_ringÚringÚnumerÚsolutionr  r  r  ÚFrÙ   rä   rß   rÿ   Ú
poly_denomÚ	poly_partÚ
reducibless&                              @@@€€€€€€€€r`   Ú
_integratezheurisch.<locals>._integrate„  sø  øøøø€ Ý‘”ˆÝ‘”ˆà�CŠ<ˆ<Ý˜z™?œ?ˆLˆLå�q‘6”6ˆDÝ™5œ5ˆLÝ 
Ñ+Ô+ð ð �Ø�C¥¨TÑ 2Ô 2Ñ3Ô3Ñ3�Ý  ™œð ð �AÝ�L¨¨q¸Ð?Ñ?Ô?Ñ@Ô@�AØ  AÑ%�LØøà  "�)ˆå˜LÑ)Ô)ð 	*ð 	*ˆDÝ˜�a¨%Ð0Ñ0Ô0ˆAØ—’•a�œÑ Ô ˆAØð *Ø—E’E�!œ%¥¤Ñ(Ô(�Ø—5’5�‘8”8ð ˜qŸušu¥Q™xœxð ØØ—	’	˜1˜a˜&Ñ!Ô!Ð!Ø×#Ò# DÑ)Ô)Ð)øàð 
	*Ø—9’9‘;”;‰DˆAˆqØ�A�2ˆw˜%ÐÐØ—’˜a ! ˜WÑ%Ô%Ð%à×-Ò-Ñ/Ô/ð Ø˜�AØ× Ò   1¡ q¨¡s¡Ñ+Ô+Ð+Ø—	’	�$˜q ™s™)œ)Ñ$Ô$Ð$Ð$à× Ò  ¥Q q¡S¡Ñ)Ô)Ð)ð ð 
	*õ �S�#˜lÑ+Ô+Ñ,Ô,ˆÝ�S�#˜e™*œ*Ñ%Ô%ˆõ  ¥¥S­°Ñ)>Ô)>ÀÑ%BÔ%BÑ CÔ CÑDÔDð 	/ð 	/‰GˆD�!ØˆtŒx˜ˆ|ð /Ø×"Ò" 1Ñ%Ô%Ð%Ø—’ ¥C¨¡I¤I¡Ñ.Ô.Ð.øå¥¥S­°©¬¸Ñ%;Ô%;Ñ <Ô <Ñ=Ô=ð 	+ð 	+‰GˆD�!ØˆtŒx˜ˆ|ð +Ø×"Ò" 1Ñ%Ô%Ð%Ø× Ò   T¡Ñ*Ô*Ð*øð ˜jÑ(­3°¨>Ñ9½CÀ¸OÑKˆ	Ø��˜IÑ&Ô&¨Ñ.Ñ.ˆØ×$Ò$Ñ&Ô& qÔ)ˆ	õ �;ÑÔ¥# a¡&¤&Ñ(ˆÝ‘5”5ˆð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð	?ØˆM˜)Ñ$Ô$Ð$õ )¨¸Ð>Ñ>Ô>‰IˆF�A�Aøõ ð 	ð 	ð 	Ø�4�4ð	øøøõ
 ˜k¨6Ñ2Ô2ˆ
Ý˜˜:Ñ&Ô&ˆð	"Ø—N’N 9Ñ-Ô-ˆEˆEøÝð 	"ð 	"ð 	"Ý!Ð!ð	"øøøå  §¢¡¤°À%ÐHÑHÔHˆàÐØ�4à×%Ò% hÑ/Ô/×8Ò8Ý•S˜¥q¤v h­s°;Ñ/?Ô/?Ñ&?Ñ@Ô@ÑAÔAñCô Cð Cs   Ï7P Ð
P%Ð$P%Ñ	Q ÑQ1c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r¢   )r€   r   ©rs   r&  s     r`   rÚ   zheurisch.<locals>.<genexpr>î  s,   è è € Ð
,Ð
, Q�:�a�Ñ Ô Ð
,Ð
,Ð
,Ð
,Ð
,Ð
,ra   c              3  ó2   K  — | ]}t          ¦   «         V — Œd S r¢   )r   r1  s     r`   rÚ   zheurisch.<locals>.<genexpr>ò  s&   è è € Ð,@Ð,@¸­U©W¬WÐ,@Ð,@Ð,@Ð,@Ð,@Ð,@ra   r  )rˆ   r†   r‡   r‰   r‹   r¢   )Wr   r¨   r1   r2   r3   r4   r:   r;   r7   r8   r5   rO   r
  rÂ   r   rî   r   r   r   r   r   r    r"   r!   r„   r†   ÚkeysrV   r®   r   rN   rS   r€   r'   rU   ÚmatchrR   r(   r   r   Úis_positiver&   r$   r%   r   Úis_negativerW   rZ   r[   rX   r#   r   r°   r   r¶   rj   re   r‚   r  râ   r   r  r   Útyperf   ÚallÚis_rational_functionr   r   r6   rÕ   r
   ré   rû   ÚtuplerF   r   Ú	enumeraterC   ÚupdateÚfree_symbolsÚas_dummyr  ro   r…   rD   Úexpand)>r\   r]   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   ÚindepÚrewritablesÚ
candidatesÚruleÚtermsr»   r¼   r½   r_   ÚMÚdFÚrev_mappingrÉ   rÏ   r¦   rn   r^   ÚspecialÚtermÚPr  Úu_splitÚv_splitÚpolysrt   Úpolifiedrü   r  Úmonomsr  ÚcoeffÚfactorsr/  Ú	more_freeÚFdr*  Ú	antiderivr+  rÙ   rë   rä   rø   rñ   rÑ   rÓ   rß   rÎ   rã   rÿ   r,  r-  r.  rÊ   s>    `                                            @@@@@@@@@@@@@@@@r`   r   r   (  s(  øøøøøøøøøøøøøøøøø€ õf 	�‰
Œ
€Að
 ˜DÐ Ð Ø�5Š5••b�"�d¥I­z½5Å'Í3ÑOÔOð 	ØˆFà�:Š:�a‰=Œ=ð Ø�‰sˆ
àŒ8ð Ø×#Ò# AÑ&Ô&‰ˆˆqˆqå”ˆõ 
�c•3ˆ�Ý	�t•TÐ�Dð€Kð
 ð Ø +× 1Ò 1Ñ 3Ô 3ð 	,ð 	,ÑˆJ˜Ø—	’	˜* dÑ+Ô+ˆAˆAð	,ð &×*Ò*Ñ,Ô,ð 	ð 	ˆJØˆqŒu�jÐ!ð Ø�ðð ˆGå�q˜!ÑÔ€EÝ�q‰\Œ\€FàÑØñ B	 Ý�S 1 #Ð&Ñ&Ô&ˆAÝ�S 1 #Ð&Ñ&Ô&ˆAÝ�S 1 #Ð&Ñ&Ô&ˆAå˜‘Z”Zð :Wñ :W�Ø”=ñ 9WÝ! !¥RÑ(Ô(ð "WØœF 1œIŸOšO¨A¨a°©d©FÑ3Ô3˜à˜=Ø!ŸIšI q­"¨Q¨q¬T°!°Q°q´T±'©\Ñ*:Ô*:¸aÀ¼dÀ1ÀaÈÄdÁ7¹lÈbÐQRÐSTÔQUÉgÑ=VÕWYÐ[\Ð]^Ô[_Ð`aÑ[aÕcfÐghÐijÔgkÐlmÐopÐqrÔosÑlsÑgsÑctÔctÑZtÐuvÐwxÔuyÑZyÑWzÔWzÑ=zÑ*zÑ'{Ñ}Ô}Ð}øõ
 $ A¥sÑ+Ô+ñ WØœF 1œIŸOšO¨A¨a°©d©FÑ3Ô3˜à˜=Ø  œtÔ/ð >Ø %§	¢	­$­t°A°a´D©z¬z¸!©|Ñ*<Ô*<Ñ =Ô =Ð =Ð =à %§	¢	­#­d°A°a´D°5©k¬k¸!©mÑ*<Ô*<Ñ =Ô =Ð =àœF 1œIŸOšO¨A¨a°©d©F°Q°q±S©L¸1Ñ,<Ñ=Ô=˜à™=Ø  œtÔ/ð UØ %§	¢	­$­r°!©t°a¸´d°U©|Ñ*<Ô*<½SÀÀ1ÄÈÈ!ÌÈaÉÐQRÐSTÐUVÔSWÑQWÑHXÑAXÑ=YÔ=YÑ*YÝ*.­t°A°a´D©z¬z¸!©|¸aÀ¼dÀAÅdÈ1ÈQÌ4ÁjÄjÁLÑ>QÑ/QÑ*RÔ*Rñ+Sñ !Tô !Tð !Tð !Tà!" 1¤Ô!1ð UØ %§	¢	­$­r°!©t°a¸´d°U©|Ñ*<Ô*<½SÀÀ1ÄÈÈ!ÌÈaÉÐQRÐSTÐUVÔSWÑQWÑHXÑAXÑ=YÔ=YÑ*YÝ*-­d°A°a´D°5©k¬k¸!©m¸aÀ¼dÀAÅdÈAÈaÌDÈ5ÁkÄkÁMÑ>RÑ.RÑ*SÔ*Sñ+Tñ !Uô !Uð !Uð œF 1œIŸOšO¨A­c°!©f¬f°a©i©KÑ8Ô8˜à˜=Ø  œtÔ/ð VØ %§	¢	­$­t°A°a´D©z¬z½#¸a¹&¼&Ñ/@À1ÀaÍÈQÈqÌTÉ
Ì
ÁlÑCSÑ/SÑ*TÔ*TÑ UÔ UÐ UØ  œtÔ/ð WØ %§	¢	­#­d°A°a´D°5©k¬k½#¸a¹&¼&Ñ.@À1ÀaÍÈaÐPQÌdÈUÉÌÁmÑCTÑ.TÑ*UÔ*UÑ VÔ VÐ Vùà”Xñ WØ”uÔ(ñ W¨Q¬U¬W¸ª\©\ØœFŸLšL¨¨1¨a©4©°!©Ñ4Ô4˜à˜=¨Q¨q¬TÔ-=˜=Ø  œtÔ/ð DØ %§	¢	­%µ°Q°q´T¸!¸A¼$±Y±´ÀÑ0AÑ*BÔ*BÑ CÔ CÐ CÐ CØ!" 1¤Ô!1ð DØ %§	¢	­$­t°Q°q´T°E¸!¸A¼$±JÑ/?Ô/?ÀÑ/AÑ*BÔ*BÑ CÔ CÐ CàœFŸLšL¨¨1¨a©4©°!©Ñ4Ô4˜à™=¨Q¨q¬TÔ-=™=Ø  œtÔ/ð WØ%&¥t¨A¨a¬D°°A±©I¸¸!¼Ñ,<Ñ'=Ô'=Ñ%= Ý$'¨­$¨q°¬t©*¬*©µT¸!¸A¼$¸qÀ!¹t¹)ÀaÈÄdÑ:JÑ5KÔ5KÑ(KÈaÐPQÐRSÔPTÉfÐUVÉhÑ(VÑ$WÔ$WÕX\Ð]^Ð_`Ô]aÑXbÔXbÑ$b Ø24 ¤¨Q¡Ø %§	¢	¨!¡¤ ¡Ø!" 1¤Ô!1ð WØ %§	¢	¨1¨Q¬4¨%°©'µ$¸¸!¼°u±+´+Ñ*=Ý+/µ°a¸´d°U±´¸A±½dÀ1ÀQÄ4ÈÈ1ÉÁ9ÈqÐQRÌtÑCSÑ>TÔ>TÑ0TÑ+UÔ+Uñ+Vñ !Wô !Wð !Wùðs:Wðz •S˜‘Z”ZÑˆEå�‰ZŒZð 3ð 3ˆØ•˜FŸOšO¨AÑ.Ô.°Ñ2Ô2Ñ2ˆˆõ 	�•c˜%‘j”jÑ!Ô!€Aõ •8�D¥¥gØ?Ð?Ð?Ð?µ°U¸A±´Ð?Ñ?Ô?ñ'Aô 'Að "Bñ Cô CØCDôFñ Gô Gñ Hô H€Gà,Ð, GÐ,Ñ,Ô,€KØÐà�rŒ{˜1Œ~ Ò"Ð"Ð"Ð"Ø$+§K¢K°¡O¤OÐ#4Ð õ �DÑ!Ô!ˆØð 	%ð 	%ˆAØ•$�q‘'”'ŒN×!Ò! !Ñ$Ô$Ð$Ð$Ø+Ð+Ð+Ð+ UÐ+Ñ+Ô+ˆð	0ð 	0ð 	0ð 	0ð 	0ð "�>Ñ#Ô#ˆˆà#;Ð#A¸rÐ ð"ð "ð "ð "ð "ð ð ð ˆÝ�w‘-”-ˆØÐ4Ñ4ˆØBÐBÐBÐBÐB¸5ÐBÑBÔBˆØ9Ð9°%Ð9Ñ9Ô9ˆÝÐ3Ð3Ð3Ð3¨FÐ3Ñ3Ô3Ñ3Ô3ð 	Ð8[¸¸ÀA¹¼Ô8[Ð]^Ð8_ð 	ÝÐ5Ð5Ð5Ð5°vÑ>Ô>ˆEØˆEøàð 	$Ý˜a ¨D¸Ø)AðCñ Cô CˆFð Ð!Ø˜V‘|Ð#Øˆtà/Ð/Ð/Ð/¨Ð/Ñ/Ô/€FðBð Bð Bð Bð Bð Bð	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð0 €Gàð 2ð 2ˆØÔð 	2Ý˜$¥Ñ$Ô$ð 2Ø49�˜˜K˜K¨Ñ-Ô-¨qÑ0Ñ0Ñ1Ð1Ý˜D¥$Ñ'Ô'ð 2Ø16�˜˜K˜K¨Ñ-Ô-Ñ-Ñ.Ø16�˜˜K˜K¨Ñ-Ô-Ñ-Ñ.Ð.Ý˜D¥(Ñ+Ô+ð 2Ø-1�˜˜ DÑ)Ô)Ñ*øàˆ�A‰Œ€Aà×ÒÑÔ�D€A€qàˆi˜ÑÔ€GØˆi˜‰lŒl€Gå•�W‘” '¨!¤* Ñ.µ°g·l²l±n´nÑ1EÔ1EÑEÑFÔF€Eà�Œ
•SÐ@Ð@¨'¯-ª-©/¬/Ð@Ñ@Ô@ÐAÑA€AØ3Ð3Ð3Ð3¨¨A¨q¨	Ð3Ñ3Ô3€HàˆxÐÐØˆtð 5Ð4¨(Ð4Ñ4Ô4�G€A€qˆ!à�g˜a”j‘. : :¨g°a¬jÑ#9Ô#9Ñ9×BÒBÑDÔD€Jðð ð ð ð ð ˆ9�Q‰<Œ<˜�S  A™YœY™€q€Aàˆ1‚u€u��Q’�Ý•w�}¨Q°°A±¸±	¸MÑ0IÑJÔJÑKÔKÑLÔLˆˆå•w�}¨Q°°A±¸Ñ0EÑFÔFÑGÔGÑHÔHˆå˜3¥ F¡¤Ñ,Ô,€Kåð /ð /ð /ð /Ý$ VÑ,Ô,ð/ñ /ô /ð 0€Iõ ‘”€Jå˜‘”ð 9ð 9ˆÝ$ TÐ.¨AÐ.Ð.Ð.‰ˆˆwØ�Š�uÑÔÐØ×ÒÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8ðhCð hCð hCð hCð hCð hCð hCð hCð hCð hCð hCð hCð hCõT Ð
,Ð
,¨!Ð
,Ñ
,Ô
,Ñ,Ô,ð -Ø”N¥S¨¡V¤VÑ+ˆ	ˆ	à�ZŠZ‰\Œ\ˆØ—K’K¥¥S¨Ð,@Ð,@¸aÐ,@Ñ,@Ô,@Ñ%AÔ%AÑ BÔ Bñ ô Ü˜Rœ_ñ-ˆ	àð  à�:˜c‘?”?ˆàÐØ!�z‘|”|ˆHøà�:‘<”<ˆàÐØ—M’M +Ñ.Ô.ˆ	Ý˜9Ñ%Ô%×,Ò,Ñ.Ô.ˆ	àÔð 	7Ø!×0Ò0°Ñ3Ô3°AÔ6ˆIà�Y‰Ðà�aŠ<ˆ<Ý˜a ¨X¸wÈeÐ]dÐghÑ]hð  D\ð  ]ñ  ]ô  ]ˆFàÐ!Ø˜V‘|Ð#àˆtra   )FNNrk   r   NN)nÚ
__future__r   Úcollectionsr   Ú	functoolsr   Ú	itertoolsr   Úsympy.core.addr   Úsympy.core.basicr	   Úsympy.core.mulr
   Úsympy.core.symbolr   r   r   r   Úsympy.core.numbersr   r   r   Úsympy.core.relationalr   r   Úsympy.core.singletonr   Úsympy.core.sortingr   Úsympy.core.traversalr   Úsympy.functionsr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Ú$sympy.functions.elementary.complexesr1   r2   r3   r4   r5   Ú&sympy.functions.elementary.exponentialr6   Ú#sympy.functions.elementary.integersr7   r8   Ú$sympy.functions.elementary.piecewiser9   Ú'sympy.functions.special.delta_functionsr:   r;   Úsympy.simplify.radsimpr<   Úsympy.logic.boolalgr=   r>   Úsympy.utilities.iterablesr?   Úsympy.polysr@   rA   rB   rC   rD   rE   Úsympy.polys.monomialsrF   Úsympy.polys.polyrootsrG   Úsympy.polys.ringsrH   Úsympy.polys.solversrI   Úsympy.polys.constructorrJ   Úsympy.integrals.integralsrK   rV   rb   Ú__annotations__rj   r–   r˜   r±   r®   r   rr   ra   r`   ú<module>rs     s2  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø -Ð -Ð -Ð -Ð -Ð -à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø :Ð :Ð :Ð :Ð :Ð :Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià *Ð *Ð *Ð *Ð *Ð *à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *à KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ /Ð /Ð /Ð /Ð /Ð /Ø .Ð .Ð .Ð .Ð .Ð .à &Ð &Ð &Ð &Ð &Ð &Ø -Ð -Ð -Ð -Ð -Ð -Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à /Ð /Ð /Ð /Ð /Ð /ð,ð ,ð ,ð^ *,€Ð +Ð +Ð +Ñ +ðð ð ð NOØ?CØ#'ð^ð ^ð ^ð ^ð@&ð &ð &ð &ð &ñ &ô &ð &ðP €ð.ð .ð .ð .ð .ñ .ô .ð .ð` FGØ7;Øðdð dð dð dð dð dra   