Ë
    7^(hRh  ã                  ó˜  — 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	 	 	 d.d(„Zi G d)„ d*«      Zjd'ak G d+„ d,«      Zl	 	 	 d.d-„Zmy')/é    )Ú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                óÆ  — t        «       }| j                  |«      �rD| j                  r| j                  r|j	                  | «       |S | j
                  s| j                  r3| j                  D ]  }|t        ||«      z  }Œ |j	                  | «       |S | j                  r¢|t        | j                  |«      z  }| j                  j                  sq| j                  j                  r>|j	                  | j                  t        d| j                  j                  «      z  «       |S |t        | j                  |«      | hz  z  }|S | 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       úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/integrals/heurisch.pyrU   rU   -   s3  € ô, ‹U€Fà‡z�z�!…}Ø�;Š;˜1×+Ò+Ø�J‰J�qŒMð$ €Mð# �]Š]˜aŸošoØ—V‘Vò +�Øœ* Q¨Ó*Ñ*‘ð+ð �J‰J�qŒMð €Mð �XŠXØ”j §¡¨Ó+Ñ+ˆFà—5‘5×#Ò#Ø—5‘5×$Ò$Ø—J‘J˜qŸv™v¤x°°1·5±5·7±7Ó';Ñ;Ô<ð €Mð œj¨¯©°Ó2°a°SÑ8Ñ8�Fð
 €Mð —V‘Vò +�Øœ* Q¨Ó*Ñ*‘ð+ð €Mó    zdict[str, list[Dummy]]Ú_symbols_cachec           	     óÞ   — 	 t         |    }t        |«      |k  r7|j                  t	        d| t        |«      fz  «      «       t        |«      |k  rŒ7|d| S # t        $ r g }|t         | <   Y Œ`w xY w)z*get vector of symbols local to this modulez%s%iN)ra   ÚKeyErrorÚlenÚappendr   )ÚnameÚnÚlsymss      r_   Ú_symbolsri   `   sx   € ð%Ü˜tÑ$ˆô
 ˆe‹*�qŠ.Ø�‰”e˜F d¬C°«JÐ%7Ñ7Ó8Ô:ô ˆe‹*�q‹.ð ��!ˆ9Ðøô ò %ØˆØ$Œ�tÓð%ús   ‚	A ÁA,Á+A,Nc	                ó  — ddl m}	m}
 t        | «      } | j	                  |«      s| |z  S t        | ||||||||«	      }t        |t        «      s|S g }t         |
|«      «      D ]  }	 | |	|gd|f¬«      z  }Œ |s|S t        t        |«      «      }g } |
| «      D ]  }	 | |	|gd|f¬«      z  }Œ |D �cg c]	  }||vsŒ|‘Œ }}|s|S t        |«      dkD  rTg }|D ]>  }|j                  |j                  «       D ��cg c]  \  }}t        ||«      ‘Œ c}}«       Œ@  |	|d|f¬«      |z   }g }|D ]º  }t        | j!                  |«      ||||||||«	      }t#        |j                  «       D ��cg c]  \  }}t        ||«      ‘Œ c}}Ž }t%        |j                  «       D ��cg c]  \  }}t'        ||«      ‘Œ c}}Ž }|€t)        | j!                  |«      |«      }|j+                  ||f«       Œ¼ t        |«      dk(  r't        | ||||||||«	      f|d   d   dfg}t-        |Ž S |j+                  t        | ||||||||«	      df«       t-        |Ž S # t        $ r Y �Œöw xY w# t        $ r Y �ŒÎw xY wc c}w c c}}w c c}}w c c}}w )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ÚexcluderL   )Úsympy.solvers.solversrk   rl   r   rN   ÚheurischÚ
isinstancer   r   ÚNotImplementedErrorÚlistr>   rd   ÚextendÚitemsr   Úsubsr<   r=   r   rJ   re   r8   )r[   r\   ÚrewriteÚhintsÚmappingsÚretriesÚdegree_offsetÚunnecessary_permutationsÚ_try_heurischrk   rl   ÚresÚslnsÚdÚslns0ÚsÚeqsÚsub_dictÚkeyÚvalueÚpairsÚexprÚcondÚgenerics                           r_   Úheurisch_wrapperr‹   n   sà  € ÷: 4Ü�‹
€AØ�:‰:�aŒ=Ø�‰sˆ
ä
�1�a˜ %¨°7¸MØ+¨]ó<€Cä�cœ5Ô!Øˆ
ð €DÜ‘V˜C“[Ó!ò ˆð	Ø‘E˜1˜# D°1°$Ô7Ñ7‰Dðñ
 Øˆ
Ü”�T“
Ó€Dà€EÙ�A‹Yò ˆð	Ø‘U˜A˜3 T°A°4Ô8Ñ8‰Eðð
 Ö.�!˜q¨š~ŠAÐ.€DÐ.ÙØˆ
Ü
ˆ4ƒy�1‚}ØˆØò 	LˆHØ�J‰J¸¿¹Ó9I×J©:¨3°œ˜3 �ÓJÕKð	Lá�S˜t¨a¨TÔ2°TÑ9ˆà€EØò #ˆÜ˜Ÿ™˜xÓ(¨!¨W°e¸XÀwØ%Ð'?Ø%ó'ˆô °h·n±nÓ6F×G©
¨¨U”R˜˜U•^ÓGÐHˆÜ¸¿¹Ó8H×I©*¨#¨u”r˜#˜u•~ÓIÐJˆØˆ<Ü˜QŸV™V HÓ-¨aÓ0ˆDØ�‰�d˜D�\Õ"ð#ô ˆ5ƒz�Q‚Ü˜1˜a ¨%°¸7Ø+Ð-EØ+ó-ð &ð'ð ˜‘(˜1‘+˜tÐ$ð	&ˆô �eÐÐð	 	�‰”h˜q ! W¨e°X¸wØ+Ð-EØ+ó-ð #ð$ô 	%ô �eÐÐøôY #ò 	Úð	ûô #ò 	Úð	üâ.ùó Kùó HùÛIsB   Á&IÂIÂ4	I,Â>I,Ã;I1Å+I7ÆI=É	IÉIÉ	I)É(I)c                  ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚBesselTablez~
    Derivatives of Bessel functions of orders n and n-1
    in terms of each other.

    See the docstring of DiffCache.
    c                ór   — i | _         t        d«      | _        t        d«      | _        | j	                  «        y )Nrg   Úz)Útabler   rg   r�   Ú_create_table)Úselfs    r_   Ú__init__zBesselTable.__init__Ö   s+   € ØˆŒ
Ü�s“ˆŒÜ�s“ˆŒØ×ÑÕr`   c                ó´  — | j                   | j                  | j                  }}}t        t        t
        t        fD ]@  } ||dz
  |«      | |||«      z  |z  z
  |dz
   ||dz
  |«      z  |z   |||«      z
  f||<   ŒB t        } ||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 ]C  } ||dz
  |«      |dz    |||«      z  |z  z
  |dz
   ||dz
  |«      z  |z   |||«      z
  f||<   ŒE y )NrL   )r�   rg   r�   r(   r)   r,   r-   r*   r+   r.   r/   )Útr�   rg   r�   r[   s        r_   r‘   zBesselTable._create_tableÜ   sš  € Ø—g‘g˜qŸs™s A§C¡C�!ˆqˆÜœ7¤G¬WÐ5ò 	5ˆAÙ˜!˜A™#˜q›	 A¡a¨¨1£g¡I¨a¡KÑ/Ø˜1™™a  !¡ Q›i™¨Ñ)©A¨a°«GÑ3ð5ˆE�!ŠHð	5ô ˆÙ�a˜‘c˜1“I ¡! A q£'¡	¨!¡Ñ+Ø�q‘S™!˜A˜a™C ›)‘O AÑ%©¨!¨Q«Ñ/ð1ˆˆa‰äˆÙ�q˜‘s˜A“Y�J ¡1 Q¨£7¡¨1¡Ñ,Ø�q‘S™!˜A˜a™C ›)‘O AÑ%©¨!¨Q«Ñ/ð1ˆˆa‰ô ”b�ò 	5ˆAÙ˜!˜A™#˜q›	 Q q¡S©!¨A¨q«'¡M°!¡OÑ3Ø˜1™™a  !¡ Q›i™¨Ñ)©A¨a°«GÑ3ð5ˆE�!ŠHñ	5r`   c                óÀ   — || j                   v rP| j                   |   \  }}| j                  |f| j                  |fg}|j                  |«      |j                  |«      fS y ©N)r�   rg   r�   rv   )r•   r[   rg   r�   Údiff0Údiff1Úrepls          r_   ÚdiffszBesselTable.diffsí   sZ   € Ø�—‘‰<ØŸ7™7 1™:‰LˆE�5Ø—S‘S˜!�H˜qŸs™s A˜hÐ'ˆDØ—J‘J˜tÓ$ e§j¡j°Ó&6Ð7Ð7ð r`   c                ó   — || j                   v S r—   )r�   )r•   r[   s     r_   ÚhaszBesselTable.hasó   s   € Ø�A—G‘Gˆ|Ðr`   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r“   r‘   r›   r�   © r`   r_   r�   r�   Î   s   „ ñòò5ò"8ór`   r�   c                  ó   — e Zd ZdZd„ Zd„ Zy)Ú	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                óB   — i | _         || _        t        st        «       ay y r—   )Úcacher\   Ú_bessel_tabler�   )r’   r\   s     r_   r“   zDiffCache.__init__  s!   € ØˆŒ
ØˆŒõ Ü'›M‰Mð r`   c                ó´  — | j                   }||v r	 ||   S t        |d«      rt        j                  |j                  «      s,t        |j                  | j                  «      «      ||<   ||   S |j                  \  }}t        j                  |j                  ||«      \  }}| j                  |«      }||z  ||<   ||z  ||j	                  |dz
  |«      <   ||   S )NÚfuncrL   )r¦   Úhasattrr§   r�   r©   rC   Údiffr\   rT   r›   Úget_diff)r’   r[   r¦   rg   r�   Úd0Úd1Údzs           r_   r¬   zDiffCache.get_diff  sÎ   € Ø—
‘
ˆà�‰:Øð �Q‰xˆô ˜!˜VÔ$Ü×!Ñ! !§&¡&Ô)Ü˜aŸf™f T§V¡V›nÓ-ˆE�!‰Hð �Q‰xˆð —6‘6‰DˆAˆqÜ"×(Ñ(¨¯©°°AÓ6‰FˆB�Ø—‘˜qÓ!ˆBØ˜"‘uˆE�!‰HØ$& r¡EˆE�!—&‘&˜˜1™˜a“.Ñ!à�Q‰xˆr`   N)rž   rŸ   r    r¡   r“   r¬   r¢   r`   r_   r¤   r¤   ø   s   „ ñò,*ór`   r¤   c	                óN  ‡7‡8‡9‡:‡;‡<‡=‡>‡?‡@‡A‡B‡C— t        | «      } |dur>| j                  t        t        t        t
        t        t        t        t        t        «	      ry| j                  |«      s| |z  S | j                  s| j                  |«      \  }	} nt        j                  }	t         t"        t$        ft&        t(        t*        t,        ft.        i}
|r+|
j1                  «       D ]  \  }}| j3                  ||«      } Œ n(|
j5                  «       D ]  } | j                  |Ž sŒ n d}t7        | |«      }t9        |«      }|��|�sôt;        d|g¬«      }t;        d|g¬«      }t;        d|g¬«      }t=        |«      D �]º  }|j>                  �rotA        |tB        «      r™|jD                  d   jG                  |||z  z  «      }|€ŒH|jI                  |tC        ||   |||   z  z  «      ||   |||   z  z  d||   z  z  tK        ||   d	z   tM        ||   |||   z  z  «      z  ||   z  «      z  z
  z  «       ŒºtA        |tN        «      sŒË|jD                  d   jG                  ||d
z  z  «      }|�c||   jP                  r*|jI                  tS        tU        ||   «      |z  «      «       n*|jI                  tW        tU        ||    «      |z  «      «       |jD                  d   jG                  ||d
z  z  ||z  z   |z   «      }|��||   jP                  r}|jI                  tU        tX        dz  ||    z  «      tO        ||   ||   d
z  d||   z  z  z
  «      z  tS        tU        ||   «      |z  ||   d
tU        ||   «      z  z  z   «      z  «       n�||   jZ                  r~|jI                  tU        tX        dz  ||    z  «      tO        ||   ||   d
z  d||   z  z  z
  «      z  tW        tU        ||    «      |z  ||   d
tU        ||    «      z  z  z
  «      z  «       |jD                  d   jG                  |tM        |«      d
z  z  «      }|€�ŒÎ||   jP                  rG|jI                  tS        tU        ||   «      tM        |«      z  d	d
tU        ||   «      z  z  z   «      «       ||   jZ                  s�Œ5|jI                  tW        tU        ||    «      tM        |«      z  d	d
tU        ||    «      z  z  z
  «      «       �Œ€|j\                  s�ŒŽ|jN                  j^                  s�Œ¦|jN                  j`                  d
k(  s�ŒÁ|jb                  jG                  ||d
z  z  |z   «      }|��||   jP                  r~||   jP                  r0|jI                  te        tU        ||   ||   z  «      |z  «      «       n?||   jZ                  r0|jI                  tg        tU        ||    ||   z  «      |z  «      «       |jb                  jG                  ||d
z  z  |z
  «      }|€�Œœ||   jP                  s�Œ­||   jP                  r�d	tU        ||   |d
z  z  ||   z
  «      z  }tM        d
tU        ||   «      z  tU        ||   |d
z  z  ||   z
  «      z  d
||   z  |z  z   «      tU        ||   «      z  Š7||jh                  ‰7<   |jI                  ‰7«       �ŒK||   jZ                  s�Œ\|jI                  ||    d
z  tU        ||    «      z  tk        tU        ||    «      |z  tU        ||   |d
z  z  ||   z
  «      z  «      z  «       �Œ½ n|t=        |«      z  }t=        |«      D ]   }|t7        |jm                  |«      |«      z  }Œ" to        dtq        |«      «      Š8ts        tu        ts        tw        ty        tw        |‰8«      D �cg c]  }|d   j                  |«      d	   |f‘Œ c}«      Ž «      d	   «      «      Š>‰>D ��ci c]  \  }}||“Œ
 }}}|€w‰>d   d   |k(  sJ ‚‰>j{                  d«      g}t}        tr        «      }‰>D ]$  }|\  }}|t        |«         j�                  |«       Œ& |D �cg c]  }||   ‘Œ	 c}Š>ˆ>fd„} |«       }n|xs g }ˆ>fd„}|D ]‘  Š>ts        ‰>«      Š>‰>|z   Š>|D �cg c]  } ||jm                  |«      «      ‘Œ }}|D �cg c]  }|jƒ                  «       d	   ‘Œ }}t…        ˆ8fd„|D «       «      sŒl  || «      j†                  ‰8Ž sŒ‚t‰        ˆ8fd„|«      Š= n |st‹        | |d||¬«      } | �|	| z  S y|D �cg c]  }t�        ‰=|z  «      ‘Œ c}Š?ˆ8ˆ?fd„Š:ˆ8ˆ9ˆ:fd„Š9ˆ8ˆ:ˆ<fd„Š<i }!|D ]z  }"|"j>                  sŒtA        |"t&        «      rd|!d	 ||"«      d
z  z   <   Œ2tA        |"t.        «      rd|!d	 ||"«      z   <   d|!d	 ||"«      z
  <   Œ_tA        |"tŽ        «      sŒpd|! ||"«      <   Œ|  || «      Š7‰7jƒ                  «       \  }#}$ ‰<‰=«      }% ‰<|$«      }&t=        ts        |&«      |%d   gz   ts        |!j5                  «       «      z   «      }'|%d   t‘        |!j1                  «       D ��cg c]
  \  }}|sŒ	|‘Œ c}}Ž z  }(|(|#|$fD �)cg c]  }) |)j’                  ‰8Ž ‘Œ }*})d|*v ry|*D �)cg c]  })|)j•                  «       ‘Œ c})\  }}}|(|&d   z   ‰9|&d	   «      z  j—                  «       ŠAˆ;fd„Š; ‰;| «      |t™        ||«      z   },}+|+d	kD  r-|,d	kD  r(t›        ty        t�        ‰8|+|,z   d	z
  |z   «      «      «      }-n$t›        ty        t�        ‰8|+|,z   |z   «      «      «      }-to        dtq        |-«      «      Š@tŸ        t¡        |-«      D ��.cg c]  \  }}.‰@|   |.z  ‘Œ c}.}Ž ŠBt=        «       ŠCty        |'«      D ]:  }/t£        |/g‰8¢­Ž \  }0}1‰CjI                  |0«       ‰Cj¥                  d„ |1D «       «       Œ< dˆ7ˆ8ˆ:ˆ=ˆ@ˆAˆBˆCfd„	}2t…        d„ ‰8D «       «      r‰7j¦                  t=        ‰8«      z
  }3nR‰7j©                  «       }4|4j«                  t­        tw        ‰8d„ ‰8D «       «      «      «      j¦                  |4j¦                  z  }3|3s |2d«      }5|5€ |2«       }5n |2«       }5|5�O|5j¯                  |«      }6t�        |6«      j±                  «       }6|6j                  r|6j                  |«      d	   }6|	|6z  S |dk\  rt‹        | |||||d	z
  |¬«      } | �|	| z  S yc c}w c c}}w c c}w c c}w c c}w c c}w c c}}w c c})w c c})w c c}.}w )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)rn   ÚbÚcr   éÿÿÿÿrL   é   é   r\   c               3  ó‚   •K  — t        ‰«      D ]&  } | D � �cg c]  } t        | «      D ]  }|‘Œ Œ c}} –— Œ( y c c}} w ­wr—   )r   r   )ÚiÚjÚmappings     €r_   Ú_iter_mappingsz heurisch.<locals>._iter_mappings  s?   øè ø€ Ü! 'Ó*ò 9�à"#×8˜Q¬W°Q«ZÒ8¨’qÐ8�qÓ8Ó8ñ9ùã8ùs   ƒ?—9°?c                ó&   •— | j                  ‰«      S r—   )rv   )rˆ   rº   s    €r_   Ú_substitutezheurisch.<locals>._substitute	  s   ø€ Ø�y‰y˜Ó!Ð!r`   c              3  ó<   •K  — | ]  } |j                   ‰Ž –— Œ y ­wr—   )Úis_polynomial)Ú.0ÚhÚVs     €r_   ú	<genexpr>zheurisch.<locals>.<genexpr>  s   øè ø€ Ò3 qˆˆq�‰ Ô"Ñ3ùs   ƒc                ó   •— t        | |g‰¢­Ž S r—   )rA   )ÚprZ   rÂ   s     €r_   ú<lambda>zheurisch.<locals>.<lambda>  s   ø€ ¬¨A¨q¨°1ª€ r`   )rw   rx   r|   c           
     ó~   •— t        t        ‰‰«      D ��cg c]  \  }}|| j                  |«      z  ‘Œ c}}Ž S c c}}w r—   )r   Úzipr«   )rÁ   r€   ÚvrÂ   Únumerss      €€r_   Ú_derivationzheurisch.<locals>._derivation  s2   ø€ Ü´°F¸A³×@©¨¨1�a˜!Ÿ&™& ›)“mÓ@ÐAÐAùÓ@s   –9
c                ó  •— ‰D ]‚  }| j                  |«      sŒ ‰| «      t        j                  usŒ.| j                  |«      j	                  «       \  }} ‰|«      t        ||j                  |«      «      j                  «       z  c S  | S r—   )r�   r   ÚZeroÚas_polyÚ	primitiver@   r«   Úas_expr)rÅ   Úyr³   rZ   rÂ   Ú
_deflationrË   s       €€€r_   rÒ   zheurisch.<locals>._deflation!  sz   ø€ Øò 	AˆAØ—5‘5˜”8Øá˜1‹~¤Q§V¡VÒ+Ø—y‘y “|×-Ñ-Ó/‘��1Ù! !“}¤S¨¨A¯F©F°1«IÓ%6×%>Ñ%>Ó%@Ñ@Ò@ð	Að ˆr`   c           
     ó4  •— ‰D �]   }| j                  |«      sŒ ‰	|«      t        j                  usŒ/| j                  |«      j	                  «       \  }}|j                  «       }t        | ‰	|«      |«      }t        |t        ||j                  |«      |«      |«      } ‰
|«      }|j                  |«      j                  «       dk(  r|d   ||d   z  fc S  ‰
t        ||z  «      «      }|d   |d   z  |z  |d   |d   z  fc S  t        j                  | fS )Nr   rL   )r�   r   rÍ   rÎ   rÏ   rÐ   r@   r?   r«   ÚdegreerC   ÚOne)rÅ   rÑ   r³   rZ   rÁ   r‚   Úc_splitÚq_splitrÂ   rË   Ú	_splitters           €€€r_   rØ   zheurisch.<locals>._splitter,  s  ø€ Øó 	HˆAØ—5‘5˜”8Øá˜1‹~¤Q§V¡VÒ+Ø—y‘y “|×-Ñ-Ó/‘��1à—I‘I“K�ä˜™; q›>¨1Ó-�Ü˜œ3˜q !§&¡&¨£)¨QÓ/°Ó3�á# A›,�à—9‘9˜Q“<×&Ñ&Ó(¨AÒ-Ø# A™J¨¨G°A©J©Ð7Ò7á#¤F¨1¨q©5£MÓ2�à ™
 7¨1¡:Ñ-¨aÑ/°¸±¸GÀA¹JÑ1FÐGÒGð'	Hô* —‘�qˆzÐr`   Fc                óè  •— | j                   r¯| j                  j                  r˜| j                  j                  dk7  r| j                  j                  dkD  r0| j                  j                  | j                  j                  z   dz
  S t        | j                  j                  | j                  j                  z   «      S y| j                  s*| j                  rt        ˆfd„| j                  D «       «      S y)NrL   r   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr—   r¢   )rÀ   rÁ   Ú	_exponents     €r_   rÃ   z.heurisch.<locals>._exponent.<locals>.<genexpr>n  s   øè ø€ Ò4¨‘y —|Ñ4ùs   ƒ)	rV   r   rY   rZ   rÅ   ÚabsÚis_AtomrT   Úmax)r^   rÛ   s    €r_   rÛ   zheurisch.<locals>._exponentd  sœ   ø€ Ø�8Š8Ø�u‰u× Ò  Q§U¡U§W¡W°¢\Ø—5‘5—7‘7˜Q’;ØŸ5™5Ÿ7™7 Q§U¡U§W¡WÑ,¨qÑ0Ð0ä˜qŸu™uŸw™w¨¯©¯©Ñ0Ó1Ð1àØ—’˜qŸvšvÜÓ4¨Q¯V©VÔ4Ó4Ð4àr`   ÚAc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr—   r¢   )rÀ   ÚfactÚmuls      r_   rÃ   zheurisch.<locals>.<genexpr>ƒ  s   è ø€ Ò8¡9 4¨œ$Ñ8ùs   ‚c                óF  •‡‡‡— t        «       }t        «       }| dk(  rt        ‰%«      }nit        ‰«      }t        «       }t        ‰%«      D ]F  }|t        t        |«      «      z  }t        |«      D ]  }t        t        ||| ¬«      «      }||z  } ŒF ŒH g g }
}	t        |«      D ]¸  }t	        |t
        d¬«      }|j                  t
        t        j                  «      }|sŒ<|j                  t        j                  t        j                  «      }|j                  t
        «      s|j                  t
        «      rŒ•|j                  ||f«       |j                  |«       Œº |r—|j                  «       \  }}|| f|v r_|j                  || f«       |j                  «       r| }|j                  ||z  ||z  z   «       |j                  t        ||z  «      «       n|j                  |t
        |z  z   «       |rŒ—t!        dt#        |«      «      }t!        dt#        |«      «      }t%        t'        t)        t        |«      |«      «      «      D ]C  \  }} |j                  ‰Ž sŒ‰"j+                  |«       |	j+                  |t-        |«      z  «       ŒE t%        t'        t)        t        |«      |«      «      «      D ]:  \  }} |j                  ‰Ž sŒ‰"j+                  |«       |
j+                  ||z  «       Œ< ‰$‰#z  t/        |	Ž z   t/        |
Ž z   }‰ ‰ |«      ‰!z  z
  }|j1                  «       d   }t        ‰"«      t        ‰«      z  Št        «       Šˆˆˆfd„Š	  ‰|«       t3        ‰d	¬
«      \  }}t7        ‰"|«      }t7        ‰|«      }	 |j9                  |«      }t=        |j?                  «       |d¬«      }|€y |jA                  |«      jA                  tC        t)        ‰"t        j                  gt#        ‰"«      z  «      «      «      S # t4        $ r Y y w xY w# t:        $ r t4        ‚w xY w)NÚQ)ÚfilterF)ÚevaluateÚBÚCr   c                ó  •— | j                   s| j                  ry | ‰v ry  | j                  ‰Ž s‰j                  | «       y | j                  s| j
                  s| j                  r t        t        ‰| j                  «      «       y t        ‚r—   )rX   rY   rN   rQ   Úis_AddÚis_MulrV   rs   ÚmaprT   rD   )rˆ   Úfind_non_symsÚnon_symsÚsymss    €€€r_   rí   z3heurisch.<locals>._integrate.<locals>.find_non_symsÌ  sg   ø€ Ø�Š $×"2Ò"2ØØ˜‘ØØ"�T—]‘] DÑ)Ø—‘˜TÕ"Ø—’ §¢¨t¯{ª{Ü”S˜¨¯	©	Ó2Õ3ô &Ð%r`   T)Úfield)Ú_raw)"rM   r   r   rF   r;   r   Úgetr   rÍ   rÕ   r�   rQ   ÚremoveÚpopÚcould_extract_minus_signr   ri   rd   Úreversedrs   rÈ   re   r   r   Úas_numer_denomrI   rD   rG   Ú	from_exprÚ
ValueErrorrH   ÚcoeffsÚxreplacerm   )&rð   Úatansr‡   ÚirreduciblesÚsetVÚpolyÚzVr�   r‚   Úlog_partÚ	atan_partÚmrÑ   r\   rç   rè   r²   r³   Ú	candidaterÁ   Ú	raw_numerÚgroundÚ_Ú
coeff_ringÚringÚnumerÚsolutionrí   rî   rï   ÚFrÂ   rË   ÚdenomÚpoly_coeffsÚ
poly_denomÚ	poly_partÚ
reducibless&                              @@@€€€€€€€€r_   Ú
_integratezheurisch.<locals>._integrate…  sº  û€ Ü“ˆÜ“ˆà�CŠ<Ü˜z›?‰Lä�q“6ˆDÜ›5ˆLÜ 
Ó+ò �ØœC¤¨TÓ 2Ó3Ñ3�Ü  ›ò �AÜœL¨¨q¸Ô?Ó@�AØ  AÑ%�LÙñðð ! "�)ˆä˜LÓ)ò 	*ˆDÜ˜œa¨%Ô0ˆAØ—‘”aœŸ™Ó ˆAÚØ—E‘Eœ!Ÿ%™%¤§¡Ó(�Ø—5‘5œ”8˜qŸu™u¤Qœ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Ó CÓDò 	/‰GˆD�!Øˆt�x‰x˜Š|Ø×"Ñ" 1Ô%Ø—‘ ¤C¨£I¡Õ.ð	/ô
  ¤¤S¬°«¸Ó%;Ó <Ó=ò 	+‰GˆD�!Øˆt�x‰x˜Š|Ø×"Ñ" 1Ô%Ø× Ñ   T¡Õ*ð	+ð ˜jÑ(¬3°¨>Ñ9¼CÀ¸OÑKˆ	Ø‘˜IÓ&¨Ñ.Ñ.ˆØ×$Ñ$Ó& qÑ)ˆ	ô �;Ó¤# a£&Ñ(ˆÜ“5ˆö	&ð	?Ù˜)Ô$ô )¨¸Ô>‰IˆF�Aä˜k¨6Ó2ˆ
Ü˜˜:Ó&ˆð	"Ø—N‘N 9Ó-ˆEô ! §¡£°À%ÔHˆàÐØà×%Ñ% hÓ/×8Ñ8Ü”S˜¤q§v¡v h¬s°;Ó/?Ñ&?Ó@ÓAóCð Cøô! ò 	Ùð	ûô ò 	"Ü!Ð!ð	"ús   ÍP ÎP Ð	PÐPÐP c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr—   )rq   r   ©rÀ   r  s     r_   rÃ   zheurisch.<locals>.<genexpr>ï  s   è ø€ Ò
, QŒ:�aœ× Ñ
,ùs   ‚c              3  ó0   K  — | ]  }t        «       –— Œ y ­wr—   )r   r  s     r_   rÃ   zheurisch.<locals>.<genexpr>ó  s   è ø€ Ò,@¸¬U¯WÑ,@ùs   ‚rä   )ry   rw   rx   rz   r|   r—   )Yr   r�   r0   r1   r2   r3   r9   r:   r6   r7   r4   rN   rê   Úas_independentr   rÕ   r   r   r   r   r   r   r!   r    ru   rw   ÚkeysrU   r¤   r
   rM   rR   rq   r&   rT   ÚmatchrQ   r'   r   r   Úis_positiver%   r#   r$   r   Úis_negativerV   rY   rZ   rW   r"   r   r¦   r   r¬   ri   rd   rs   rö   rÈ   r   rô   r   Útypere   r÷   ÚallÚis_rational_functionr   rp   rC   r5   r	   rÎ   Útotal_degreerÐ   rÞ   ÚtuplerE   r   Ú	enumeraterB   ÚupdateÚfree_symbolsÚas_dummyrû   rm   rv   Úexpand)Dr[   r\   rw   rx   ry   rz   r{   r|   r}   ÚindepÚrewritablesÚ
candidatesÚruleÚtermsÚdcacher±   r²   r³   r^   ÚMÚdFÚkrÉ   Úrev_mappingÚtypesr¸   Úer  r»   r½   r›   rl   r]   ÚspecialÚtermÚPrä   Úu_splitÚv_splitÚpolysr‚   rÅ   Úpolifiedrß   rç   ÚmonomsÚmonomialrÿ   ÚcoeffÚfactorsr  Ú	more_freeÚFdr  Ú	antiderivr  rÂ   rÒ   rË   rÛ   rØ   r  rº   rÊ   r  r  r  r  sD                                                          @@@@@@@@@@@@@r_   rp   rp   (  sÃ  ÿü€ ôf 	�‹
€Að
 ˜DÑ Ø�5‰5””bœ"œd¤I¬z¼5Ä'Ì3ÔOØà�:‰:�aŒ=Ø�‰sˆ
à�8Š8Ø×#Ñ# AÓ&‰ˆ‰qä—‘ˆô 
Œc”3ˆœÜ	Œt”TÐœDð€Kñ
 Ø +× 1Ñ 1Ó 3ò 	,ÑˆJ˜Ø—	‘	˜* dÓ+‰Añ	,ð &×*Ñ*Ó,ò 	ˆJØˆq�u‰u�jÒ!Ùð	ð ˆGä�q˜!Ó€EÜ�q‹\€FàÑÚÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAä˜“Zó :W�Ø—=“=Ü! !¤RÔ(ØŸF™F 1™IŸO™O¨A¨a°©d©FÓ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ÑZtÐuvÐwxÑuyÑZyÓWzÑ=zÑ*zÑ'{Õ}ô
 $ A¤sÕ+ØŸF™F 1™IŸO™O¨A¨a°©d©FÓ3˜à˜=Ø  ™t×/Ò/Ø %§	¡	¬$¬t°A°a±D«z¸!©|Ó*<Õ =à %§	¡	¬#¬d°A°a±D°5«k¸!©mÓ*<Ô =àŸF™F 1™IŸO™O¨A¨a°©d©F°Q°q±S©L¸1Ñ,<Ó=˜à™=Ø  ™t×/Ò/Ø %§	¡	¬$¬r°!©t°a¸±d°U©|Ó*<¼SÀÀ1ÁÈÈ!ÉÈaÉÐQRÐSTÐUVÑSWÑQWÑHXÑAXÓ=YÑ*YÜ*.¬t°A°a±D«z¸!©|¸aÀ¹dÀAÄdÈ1ÈQÉ4ÃjÁLÑ>QÑ/QÓ*Rñ+Sõ !Tà!" 1¡×!1Ò!1Ø %§	¡	¬$¬r°!©t°a¸±d°U©|Ó*<¼SÀÀ1ÁÈÈ!ÉÈaÉÐQRÐSTÐUVÑSWÑQWÑHXÑAXÓ=YÑ*YÜ*-¬d°A°a±D°5«k¸!©m¸aÀ¹dÀAÄdÈAÈaÉDÈ5ÃkÁMÑ>RÑ.RÓ*Sñ+Tô !Uð ŸF™F 1™IŸO™O¨A¬c°!«f°a©i©KÓ8˜àš=Ø  ™t×/Ò/Ø %§	¡	¬$¬t°A°a±D«z¼#¸a»&Ñ/@À1ÀaÌÈQÈqÉTË
ÁlÑCSÑ/SÓ*TÔ UØ  ™t×/Ô/Ø %§	¡	¬#¬d°A°a±D°5«k¼#¸a»&Ñ.@À1ÀaÌÈaÐPQÉdÈUËÁmÑCTÑ.TÓ*UÖ Và—X”XØ—u‘u×(Ô(¨Q¯U©U¯W©W¸¬\ØŸF™FŸL™L¨¨1¨a©4©°!©Ó4˜à˜=¨Q¨q©T×-=Ò-=Ø  ™t×/Ò/Ø %§	¡	¬%´°Q°q±T¸!¸A¹$±Y³ÀÑ0AÓ*BÕ CØ!" 1¡×!1Ò!1Ø %§	¡	¬$¬t°Q°q±T°E¸!¸A¹$±JÓ/?ÀÑ/AÓ*BÔ CàŸF™FŸL™L¨¨1¨a©4©°!©Ó4˜àš=¨Q¨q©T×-=Ô-=Ø  ™t×/Ò/Ø%&¤t¨A¨a©D°°A±©I¸¸!¹Ñ,<Ó'=Ñ%= Ü$'¨¬$¨q°©t«*©´T¸!¸A¹$¸qÀ!¹t¹)ÀaÈÁdÑ:JÓ5KÑ(KÈaÐPQÐRSÑPTÉfÐUVÉhÑ(VÓ$WÔX\Ð]^Ð_`Ñ]aÓXbÑ$b Ø24 §¡¨Q¡Ø %§	¡	¨!¦Ø!" 1¡×!1Ô!1Ø %§	¡	¨1¨Q©4¨%°©'´$¸¸!¹°u³+Ñ*=Ü+/´°a¸±d°U³¸A±¼dÀ1ÀQÁ4ÈÈ1ÉÁ9ÈqÐQRÉtÑCSÓ>TÑ0TÓ+Uñ+Vö !Wñs:Wðz ”S˜“ZÑˆEä�‹Zò 3ˆØ”˜FŸO™O¨AÓ.°Ó2Ñ2‰ð3ô 	�”c˜%“jÓ!€Aô ”8œD¤¤gÜ14°U¸A³Ö?¨Aˆ!ˆA‰$×
Ñ
˜aÓ
  Ñ
# QÒ	'Ò?ó'Að "Bó CØCDñFó Gó H€Gà$+×,™D˜A˜q�1�a‘4Ð,€KÑ,ØÐà�r‰{˜1‰~ Ò"Ð"Ð"Ø$+§K¡K°£OÐ#4Ð äœDÓ!ˆØò 	%ˆAØ‰DˆAˆqØ”$�q“'‰N×!Ñ! !Õ$ð	%ð &+Ö+ �5˜“8Ò+ˆô	9ñ "Ó#‰à#;Ò#A¸rÐ ô"ð ò ˆÜ�w“-ˆØÐ4Ñ4ˆØ;@ÖB°a‘+˜fŸo™o¨aÓ0Õ1ÐBˆÐBØ27Ö9¨Q�1×#Ñ#Ó% aÓ(Ð9ˆÐ9ÜÓ3¨FÔ3Õ3Ð8[¹ÀA»×8[Ñ8[Ð]^Ò8_ÜÓ5°vÓ>ˆEÙðñ Ü˜a ¨D¸Ø)AôCˆFð Ð!Ø˜V‘|Ð#Øà(-Ö/ 1Œv�e˜A‘g�Ò/€FõBö	öð0 €Gàò 2ˆØ×ÓÜ˜$¤Ô$Ø49�˜™K¨Ó-¨qÑ0Ñ0Ò1Ü˜D¤$Ô'Ø16�˜™K¨Ó-Ñ-Ñ.Ø16�˜™K¨Ó-Ñ-Ò.Ü˜D¤(Õ+Ø-1�™ DÓ)Ò*ð2ñ 	�A‹€Aà×ÑÓ�D€A€qá˜Ó€GÙ˜‹l€Gä”�W“ '¨!¡* Ñ.´°g·l±l³nÓ1EÑEÓF€Eà�‰
”S¨'¯-©-«/×@¡$ ! QºQšAÓ@ÐAÑA€AØ)*¨A¨q¨	Ö3 1��—‘˜A’Ð3€HÐ3àˆxÑØð +3Ö4 Q�—‘Õ Ò4�G€A€qˆ!à�g˜a‘j‘.¡:¨g°a©jÓ#9Ñ9×BÑBÓD€Jôñ �Q‹<˜œS  A›Y™€q€Aàˆ1‚u��Q’Ü”wœ}¨Q°°A±¸±	¸MÑ0IÓJÓKÓL‰ä”wœ}¨Q°°A±¸Ñ0EÓFÓGÓHˆä˜3¤ F£Ó,€KäÜ$ VÓ,÷/ÙˆAˆxð # 1‘~ hÓ.ó /ð 0€Iô “€Jä˜“ò 9ˆÜ$ TÐ.¨AÒ.‰ˆˆwØ�‰�uÔØ×ÑÑ8°Ô8Õ8ð9÷
hCô hCôT Ñ
,¨!Ô
,Ô,Ø—N‘N¤S¨£VÑ+‰	à�Z‰Z‹\ˆØ—K‘K¤¤S¨Ñ,@¸aÔ,@Ó%AÓ Bó ß‰l˜RŸ_™_ñ-ˆ	áá˜c“?ˆàÐÙ!“|‰Há“<ˆàÐØ—M‘M +Ó.ˆ	Ü˜9Ó%×,Ñ,Ó.ˆ	à×ÒØ!×0Ñ0°Ó3°AÑ6ˆIà�Y‰Ðà�aŠ<Ü˜a ¨X¸wÈeÐ]dÐghÑ]hð  D\ô  ]ˆFàÐ!Ø˜V‘|Ð#àùòq 	@ùÛ,ùò ,ùò CùÚ9ùò 0ùóx AùÚ3ùò 5ùó6/sB   Þ, s2ß(s7ás=âtâ9tä0té
té$té6têtí1t!
)FNNé   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.   r/   Ú$sympy.functions.elementary.complexesr0   r1   r2   r3   r4   Ú&sympy.functions.elementary.exponentialr5   Ú#sympy.functions.elementary.integersr6   r7   Ú$sympy.functions.elementary.piecewiser8   Ú'sympy.functions.special.delta_functionsr9   r:   Úsympy.simplify.radsimpr;   Úsympy.logic.boolalgr<   r=   Úsympy.utilities.iterablesr>   Úsympy.polysr?   r@   rA   rB   rC   rD   Úsympy.polys.monomialsrE   Úsympy.polys.polyrootsrF   Úsympy.polys.ringsrG   Úsympy.polys.solversrH   Úsympy.polys.constructorrI   Úsympy.integrals.integralsrJ   rU   ra   Ú__annotations__ri   r‹   r�   r§   r¤   rp   r¢   r`   r_   ú<module>r^     så   ðÞ "å #Ý Ý "å Ý "Ý ß 1Ñ 1Ý $ß .Ñ .ß (Ý "Ý &Ý -ç ?× ?Ñ ?ß >× >ß 3Õ 3ß >Ó >ß 4Ó 4ß GÕ GÝ ;ß >Ý :ß Iå *ç 'Ý *ç K× KÝ /Ý .å &Ý -Ý 4å /ò,ð^ *,€Ð&Ó +òð NOØ?CØ#'ó^÷@&ñ &ðP €÷.ñ .ð` FGØ7;Øôer`   