ó
    ‰*£h&Ê  ã                   óè  • S r SSKJrJr  SSKJr  SSKJrJr  SSK	J
r
  SSKJrJrJrJrJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJrJr  SSKJ r J!r!J"r"  SSK#J$r$J%r%  SSK&J'r'J(r(J)r)J*r*  SSK+J,r,  SSK-J.r.J/r/J0r0  SSK1J2r2  SSK3J4r4J5r5J6r6J7r7  SSK8J9r9  SSK:J;r;  SSK<J=r=  SSK>J?r?  SSK@JArAJBrB  SSKCJDrD  SSKEJFrFJGrGJHrHJIrIJJrJ  SSKKJLrL  SSKMJNrNJOrO  SSKPJQrQ  SSKRJSrS  SSKTJUrU   " S  S!\V5      rW " S" S#\5      rXS$ rYS% rZ\Z" S&5      r[S' r\\[\\S(4S) j5       r] " S* S+\X5      r^S, r_S- r` " S. S/\a5      rbS0 rc\Z" S(5      SWS1 j5       rdS2qe " S3 S4\X5      rfS5 rg\Z" S(5      SXS6 j5       rh " S7 S8\X5      ri " S9 S:\i5      rjS; rk " S< S=\i5      rlS> rm\Z" S(5      SXS? j5       rn " S@ SA\X5      ro " SB SC\o5      rpSD rq " SE SF\o5      rrSG rs " SH SI\o5      rtSJ ru " SK SL\o5      rvSM rw\Z" S(5      SXSN j5       rx " SO SP\X5      ry " SQ SR\y5      rzSS r{ " ST SU\y5      r|SV r}SS2K~Js  J€r�  \�GR                  r‚\�GR                  rƒ\�GR                  r„\�GR
                  r…\�GR                  r†\�GR                  r‡g2)YzIntegral Transforms é    )ÚreduceÚwraps)Úrepeat)ÚSÚpi)ÚAdd)ÚAppliedUndefÚ	count_opsÚexpandÚ
expand_mulÚFunction)ÚMul)ÚigcdÚilcm)Údefault_sort_key)ÚDummy)Úpostorder_traversal)Ú	factorialÚrf)ÚreÚargÚAbs)ÚexpÚ	exp_polar)ÚcoshÚcothÚsinhÚtanh)Úceiling)ÚMaxÚMinÚsqrt)Úpiecewise_fold)ÚcosÚcotÚsinÚtan)Úbesselj)Ú	Heaviside)Úgamma)Úmeijerg)Ú	integrateÚIntegral)Ú_dummy)Úto_cnfÚ	conjunctsÚ	disjunctsÚOrÚAnd)Úroots)ÚfactorÚPoly)ÚCRootOf)Úiterable)Údebugc                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )ÚIntegralTransformErroré(   av  
Exception raised in relation to problems computing transforms.

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

This class is mostly used internally; if integrals cannot be computed
objects representing unevaluated transforms are usually returned.

The hint ``needeval=True`` can be used to disable returning transform
objects, and instead raise this exception if an integral cannot be
computed.
c                 ó@   >• [         TU ]  U< SU< S35        X l        g )Nz" Transform could not be computed: Ú.)ÚsuperÚ__init__Úfunction)ÚselfÚ	transformrA   ÚmsgÚ	__class__s       €ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/integrals/transforms.pyr@   ÚIntegralTransformError.__init__6   s   ø€ Ü‰ÑÛ9BÃCÐHô	Jà �ó    )rA   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r@   Ú__static_attributes__Ú__classcell__)rE   s   @rF   r;   r;   (   s   ø† ñ÷!ó !rH   r;   c                   óŒ   • \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	S r
S rS	 rS
 rS r\S 5       rS rSrg)ÚIntegralTransformé<   aE  
Base class for integral transforms.

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

This class represents unevaluated transforms.

To implement a concrete transform, derive from this class and implement
the ``_compute_transform(f, x, s, **hints)`` and ``_as_integral(f, x, s)``
functions. If the transform cannot be computed, raise :obj:`IntegralTransformError`.

Also set ``cls._name``. For instance,

>>> from sympy import LaplaceTransform
>>> LaplaceTransform._name
'Laplace'

Implement ``self._collapse_extra`` if your function returns more than just a
number and possibly a convergence condition.
c                 ó    • U R                   S   $ )z The function to be transformed. r   ©Úargs©rB   s    rF   rA   ÚIntegralTransform.functionS   ó   € ð �y‰y˜‰|ÐrH   c                 ó    • U R                   S   $ )z:The dependent variable of the function to be transformed. é   rT   rV   s    rF   Úfunction_variableÚ#IntegralTransform.function_variableX   rX   rH   c                 ó    • U R                   S   $ )z$The independent transform variable. é   rT   rV   s    rF   Útransform_variableÚ$IntegralTransform.transform_variable]   rX   rH   c                 ó~   • U R                   R                  R                  U R                  15      U R                  1-
  $ )zR
This method returns the symbols that will exist when the transform
is evaluated.
)rA   Úfree_symbolsÚunionr_   r[   rV   s    rF   rb   ÚIntegralTransform.free_symbolsb   s;   € ð �}‰}×)Ñ)×/Ñ/°×1HÑ1HÐ0IÓJØ×%Ñ%Ð&ñ'ð 	'rH   c                 ó   • [         e©N©ÚNotImplementedError©rB   ÚfÚxÚsÚhintss        rF   Ú_compute_transformÚ$IntegralTransform._compute_transformk   ó   € Ü!Ð!rH   c                 ó   • [         erf   rg   ©rB   rj   rk   rl   s       rF   Ú_as_integralÚIntegralTransform._as_integraln   rp   rH   c                 ód   • [        U6 nUS:X  a!  [        U R                  R                  S S5      eU$ )NFÚ )r3   r;   rE   Úname)rB   ÚextraÚconds      rF   Ú_collapse_extraÚ!IntegralTransform._collapse_extraq   s0   € Ü�Eˆ{ˆØ�5‹=Ü(¨¯©×)<Ñ)<¸dÀBÓGÐGØˆrH   c                 ó|  ^ • S n[        U 4S jT R                  R                  [        5       5       5      (       + nU(       a4   T R                  " T R                  T R
                  T R                  40 UD6nT R                  nUR                  (       d  [        U5      nXB4$ ! [         a    [        S5        S n NDf = f)Nc              3   óZ   >#   • U  H   nUR                  TR                  5      v •  M"     g 7frf   )Úhasr[   )Ú.0ÚfuncrB   s     €rF   Ú	<genexpr>Ú2IntegralTransform._try_directly.<locals>.<genexpr>y   s+   øé € ð NÚ+L 4ð  $Ÿx™x¨×(>Ñ(>×?Ð?Ú+Lùs   ƒ(+z6[IT _try ] Caught IntegralTransformError, returns None)ÚanyrA   Úatomsr	   rn   r[   r_   r;   r9   Úis_Addr   )rB   rm   ÚTÚtry_directlyÚfns   `    rF   Ú_try_directlyÚIntegralTransform._try_directlyw   s±   ø€ ØˆÜô NØ+/¯=©=×+>Ñ+>¼|Ô+LóNó Nô NˆæðØ×+Ò+¨D¯M©MØ×*Ñ*¨D×,CÑ,CñNØGLñN�ð �]‰]ˆØ�y�yÜ˜B“ˆBØˆuˆøô *ó ÜÐNÔOØ’ðús   Á3B! Â!B;Â:B;c                 ó2  • UR                  SS5      nUR                  SS5      nX1S'   U R                  " S	0 UD6u  pEUb  U$ UR                  (       Ga0  X!S'   UR                   Vs/ s H<  nU R                  " U/[        U R                  SS 5      -   6 R                  " S	0 UD6PM>     nn/ n/ n	U Hm  n[        U[        5      (       d  U/nU	R                  US   5        [        U5      S:X  a  UR                  US   5        MT  [        U5      S:”  d  Me  X†SS /-  nMo     US:X  a  [        U	6 R                  5       nO[        U	6 nU(       d  U$  U R                  U5      n[        U5      (       a  U4[        U5      -   $ Xx4$ U(       a+  [        U R                  R                   U R"                  S5      eUR%                  U R&                  5      u  p«X R                  " [)        U6 /[        U R                  SS 5      -   6 -  $ s  snf ! [         a     N‘f = f)
a]  
Try to evaluate the transform in closed form.

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

This general function handles linearity, but apart from that leaves
pretty much everything to _compute_transform.

Standard hints are the following:

- ``simplify``: whether or not to simplify the result
- ``noconds``: if True, do not return convergence conditions
- ``needeval``: if True, raise IntegralTransformError instead of
                returning IntegralTransform objects

The default values of these hints depend on the concrete transform,
usually the default is
``(simplify, noconds, needeval) = (True, False, False)``.
ÚneedevalFÚsimplifyTNrZ   r   r^   © )Úpopr‰   r…   rU   rE   ÚlistÚdoitÚ
isinstanceÚtupleÚappendÚlenr   r�   rz   r8   r;   Ú_namerA   Úas_coeff_mulr[   r   )rB   rm   rŒ   r�   rˆ   r†   rk   Úresrx   ÚressÚcoeffÚrests               rF   r‘   ÚIntegralTransform.doitˆ   s  € ð* —9‘9˜Z¨Ó/ˆØ—9‘9˜Z¨Ó.ˆØ$ˆjÑà×"Ò"Ñ+ UÑ+‰ˆà‰=ØˆHà�9�9ˆ9Ø (�*ÑàŸGšGó%Ú#�qð —>’> Q C¬$¨t¯y©y¸¸¨}Ó*=Ñ$=Ð?×DÒDÑMÀuÔMÙ#ð ð %àˆEØˆDÛ�Ü! !¤U×+Ñ+Ø˜�AØ—‘˜A˜a™DÔ!Ü�q“6˜Q“;à—L‘L  1¡Ö&Ü˜“V˜a•Zà  ˜e˜WÑ$’Eñ ð ˜‹~Ü˜4�j×)Ñ)Ó+‘ä˜4�j�ÞØ�
ðØ×,Ñ,¨UÓ3�Ü˜E—?‘?Ø˜6¤E¨%£LÑ0Ð0à˜<Ð'ö Ü(Ø—‘×$Ñ$ d§m¡m°ZóAð Að —o‘o d×&<Ñ&<Ó=‰ˆØ—^’^¤s¨D z l´T¸$¿)¹)ÀAÀB¸-Ó5HÑ&HÐJÑJÐJùòK%øô4 *ó Ùðús   Á&AHÅ/H	 ÆH	 È	
HÈHc                 ód   • U R                  U R                  U R                  U R                  5      $ rf   )rs   rA   r[   r_   rV   s    rF   Úas_integralÚIntegralTransform.as_integralÏ   s,   € à× Ñ  §¡°×0FÑ0FØ!%×!8Ñ!8ó:ð 	:rH   c                 ó   • U R                   $ rf   )rž   )rB   rU   Úkwargss      rF   Ú_eval_rewrite_as_IntegralÚ+IntegralTransform._eval_rewrite_as_IntegralÔ   s   € Ø×ÑÐrH   rŽ   N)rI   rJ   rK   rL   rM   ÚpropertyrA   r[   r_   rb   rn   rs   rz   r‰   r‘   rž   r¢   rN   rŽ   rH   rF   rQ   rQ   <   sŒ   † ñð, ñó ðð ñó ðð ñó ðð ñ'ó ð'ò"ò"òòò"EKðN ñ:ó ð:õ rH   rQ   c                 óX   • U(       a"  SSK Jn  SSKJn  U" U" [	        U 5      SS95      $ U $ )Nr   )r�   )Ú	powdenestT)Úpolar)Úsympy.simplifyr�   Úsympy.simplify.powsimpr¦   r#   )Úexprr‘   r�   r¦   s       rF   Ú	_simplifyr«   Ø   s'   € ÞÝ+Ý4Ù™	¤.°Ó"6¸dÑCÓDÐDØ€KrH   c                 ó   ^ • U 4S jnU$ )a&  
This is a decorator generator for dropping convergence conditions.

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

Suppose you define a function ``transform(*args)`` which returns a tuple of
the form ``(result, cond1, cond2, ...)``.

Decorating it ``@_noconds_(default)`` will add a new keyword argument
``noconds`` to it. If ``noconds=True``, the return value will be altered to
be only ``result``, whereas if ``noconds=False`` the return value will not
be altered.

The default value of the ``noconds`` keyword will be ``default`` (i.e. the
argument of this function).
c                 ó:   >^ • [        T 5      TS.U 4S jj5       nU$ )N©Únocondsc                 ó0   >• T" U0 UD6nU (       a  US   $ U$ ©Nr   rŽ   )r¯   rU   r¡   r˜   r€   s       €rF   ÚwrapperÚ0_noconds_.<locals>.make_wrapper.<locals>.wrapperó   s#   ø€ á˜Ð' Ñ'ˆCÞØ˜1‘v�ØˆJrH   )r   )r€   r²   Údefaults   ` €rF   Úmake_wrapperÚ_noconds_.<locals>.make_wrapperò   s#   ù€ Ü	ˆt‹Ø#*÷ 	ó 
ð	ð
 ˆrH   rŽ   )r´   rµ   s   ` rF   Ú	_noconds_r·   à   s   ø€ õ$ð ÐrH   Fc                 óV   • [        X[        R                  [        R                  45      $ rf   )r,   r   ÚZeroÚInfinity)rj   rk   s     rF   Ú_default_integratorr»     s   € Ü�QœAŸF™F¤A§J¡JÐ/Ó0Ð0rH   Tc                 óè  ^• [        SSU 5      mU" UTS-
  -  U -  U5      nUR                  [        5      (       dK  [        UR	                  TU5      U5      [
        R                  [
        R                  4[
        R                  4$ UR                  (       d  [        SU S5      eUR                  S   u  pVUR                  [        5      (       a  [        SU S5      eU4S jn[        U5       Vs/ s H
  o‡" U5      PM     n	nU	 Vs/ s H  oS	   S
:w  d  M  UPM     n	nU	R                  S S9  U	(       d  [        SU S5      eU	S   u  p«n[        UR	                  TU5      U5      X«4U4$ s  snf s  snf )z/Backend function to compute Mellin transforms. rl   zmellin-transformrZ   ÚMellinúcould not compute integralr   úintegral in unexpected formc                 óÒ  >• SSK Jn  [        R                  n[        R                  n[        R
                  n[        [        U 5      5      n[        SSS9nU GHˆ  n[        R                  n[        R                  n	/ n
[        U5       Hõ  nUR                  [        S 5      R                  [        T5      U5      nUR                  (       a<  UR                  S;   d,  UR                  T5      (       d  UR                  U5      (       d  X«/-  n
M‡  U" XÆ5      nUR                  (       a  UR                  S;   a  X«/-  n
M·  UR                   U:X  a  [#        UR$                  U	5      n	Mß  ['        UR                   U5      nM÷     U[        R                  La  Xƒ:w  a  [#        X‚5      nGMP  U	[        R                  La  X’:w  a  ['        X“5      nGMv  [)        U[+        U
6 5      nGM‹     X#U4$ )z>
Turn ``cond`` into a strip (a, b), and auxiliary conditions.
r   )Ú_solve_inequalityÚtT)Úrealc                 ó(   • U R                  5       S   $ r±   )Úas_real_imag©rk   s    rF   Ú<lambda>Ú:_mellin_transform.<locals>.process_conds.<locals>.<lambda>)  s   €  !§.¡.Ó"2°1Ò"5rH   )z==z!=)Úsympy.solvers.inequalitiesrÁ   r   ÚNegativeInfinityrº   Útruer0   r/   r   r1   Úreplacer   ÚsubsÚis_RelationalÚrel_opr~   Últsr    Úgtsr!   r3   r2   )ry   rÁ   ÚaÚbÚauxÚcondsrÂ   ÚcÚa_Úb_Úaux_ÚdÚd_Úsolnrl   s                 €rF   Úprocess_condsÚ(_mellin_transform.<locals>.process_conds  sw  ø€ õ 	AÜ×ÑˆÜ�J‰JˆÜ�f‰fˆÜœ& ›,Ó'ˆÜ�#˜DÑ!ˆÜˆAÜ—‘ˆBÜ×#Ñ#ˆBØˆDÜ˜q–\�Ø—Y‘YÜÑ5ó7ß7;±t¼B¸q»EÀ1³~ð à——Ø—H‘H Ó,ØŸ6™6 !Ÿ9™9¨B¯F©F°1¯I©IØ˜C‘K�DÙÙ(¨Ó/�Ø×)×)ØŸ™ |Ó3Ø˜C‘K�DÙØ—8‘8˜q“=Ü˜TŸX™X rÓ*’Bä˜TŸX™X rÓ*’Bñ! "ð" œŸ™Ò#¨«Ü˜“J“Øœ1×-Ñ-Ò-°"³'Ü˜“J“ä˜#œr 4˜yÓ)“ñ5 ð6 �SˆyÐrH   r^   Fc                 ó4   • U S   U S   -
  [        U S   5      4$ )Nr   rZ   r^   )r
   rÆ   s    rF   rÇ   Ú#_mellin_transform.<locals>.<lambda>B  s   € ˜a ™d Q q¡T™k¬9°Q°q±T«?Ñ;rH   ©Úkeyzno convergence found)r.   r~   r-   r«   rÍ   r   rÊ   rº   rË   Úis_Piecewiser;   rU   r1   Úsort)rj   rk   Ús_Ú
integratorr�   ÚFry   rÝ   rÖ   rÕ   rÒ   rÓ   rÔ   rl   s                @rF   Ú_mellin_transformrè     sM  ø€ ô
 	ˆsÐ&¨Ó*€AÙ�1�q˜1‘u‘: ‘> 1Ó%€Aà�5‰5”�?‰?Ü˜Ÿ™  2›¨Ó1´A×4FÑ4FÌÏ
É
Ð3SÔUV×U[ÑU[Ð[Ð[à�>�>Ü$ X¨qÐ2NÓOÐOà�f‰f�Q‰i�G€AØ‡u�uŒX‡�Ü$Ø�aÐ6ó8ð 	8õ%ôN (1°¤Ó7¢ !ˆ]˜1Ö¡€EÐ7ÙÓ/š�1 1¡¨¡�Q™€EÐ/Ø	‡J�JÑ;€JÑ<æÜ$ X¨qÐ2HÓIÐIà�a‘�I€Aˆ#Ü�Q—V‘V˜A˜r“] HÓ-°¨v°sÐ:Ð:ùò 8ùÚ/s   Ã/E*ÄE/ÄE/c                   ó.   • \ rS rSrSrSrS rS rS rSr	g)	ÚMellinTransformiK  zÎ
Class representing unevaluated Mellin transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute Mellin transforms, see the :func:`mellin_transform`
docstring.
r½   c                 ó   • [        XU40 UD6$ rf   )rè   ri   s        rF   rn   Ú"MellinTransform._compute_transformW  s   € Ü   qÑ2¨EÑ2Ð2rH   c                 óh   • [        XUS-
  -  -  U[        R                  [        R                  45      $ ©NrZ   )r-   r   r¹   rº   rr   s       rF   rs   ÚMellinTransform._as_integralZ  s(   € Ü˜˜a !™e™*™ q¬!¯&©&´!·*±*Ð&=Ó>Ð>rH   c                 óÒ   • / n/ n/ nU H  u  u  pVnX%/-  nX6/-  nXG/-  nM     [        U6 [        U6 4[        U6 4nUS   S   US   S   :¬  S:X  d	  US   S:X  a  [        SS S5      eU$ )Nr   rZ   TFr½   zno combined convergence.)r    r!   r3   r;   )	rB   rx   rÒ   rÓ   ry   ÚsaÚsbrÖ   r˜   s	            rF   rz   ÚMellinTransform._collapse_extra]  sš   € ØˆØˆØˆÛ ‰K‰HˆR�aØ�‰IˆAØ�‰IˆAØ�C‰KŠDñ !ô �Aˆwœ˜Q˜Ð ¤# t *Ð,ˆØ�‰F�1‰I˜˜Q™ ™Ñ" tÓ+¨s°1©v¸«Ü(Ø˜$Ð :ó<ð <àˆ
rH   rŽ   N)
rI   rJ   rK   rL   rM   r–   rn   rs   rz   rN   rŽ   rH   rF   rê   rê   K  s   † ñð €Eò3ò?õrH   rê   c                 ó:   • [        XU5      R                  " S0 UD6$ )a§  
Compute the Mellin transform `F(s)` of `f(x)`,

.. math :: F(s) = \int_0^\infty x^{s-1} f(x) \mathrm{d}x.

For all "sensible" functions, this converges absolutely in a strip
  `a < \operatorname{Re}(s) < b`.

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

The Mellin transform is related via change of variables to the Fourier
transform, and also to the (bilateral) Laplace transform.

This function returns ``(F, (a, b), cond)``
where ``F`` is the Mellin transform of ``f``, ``(a, b)`` is the fundamental strip
(as above), and ``cond`` are auxiliary convergence conditions.

If the integral cannot be computed in closed form, this function returns
an unevaluated :class:`MellinTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`. If ``noconds=False``,
then only `F` will be returned (i.e. not ``cond``, and also not the strip
``(a, b)``).

Examples
========

>>> from sympy import mellin_transform, exp
>>> from sympy.abc import x, s
>>> mellin_transform(exp(-x), x, s)
(gamma(s), (0, oo), True)

See Also
========

inverse_mellin_transform, laplace_transform, fourier_transform
hankel_transform, inverse_hankel_transform
rŽ   )rê   r‘   )rj   rk   rl   rm   s       rF   Úmellin_transformrõ   l  s    € ôR ˜1 Ó#×(Ò(Ñ1¨5Ñ1Ð1rH   c                 ó   • U u  pE[        U[        -  5      n[        U[        -  5      n[        U* U-  UR                  5       S   -
  5      n[	        XA-  U-   U-   5      [	        SU-
  U-
  XA-  -
  5      SU-  [        -  4$ )a,  
Re-write the sine function ``sin(m*s + n)`` as gamma functions, compatible
with the strip (a, b).

Return ``(gamma1, gamma2, fac)`` so that ``f == fac/(gamma1 * gamma2)``.

Examples
========

>>> from sympy.integrals.transforms import _rewrite_sin
>>> from sympy import pi, S
>>> from sympy.abc import s
>>> _rewrite_sin((pi, 0), s, 0, 1)
(gamma(s), gamma(1 - s), pi)
>>> _rewrite_sin((pi, 0), s, 1, 0)
(gamma(s - 1), gamma(2 - s), -pi)
>>> _rewrite_sin((pi, 0), s, -1, 0)
(gamma(s + 1), gamma(-s), -pi)
>>> _rewrite_sin((pi, pi/2), s, S(1)/2, S(3)/2)
(gamma(s - 1/2), gamma(3/2 - s), -pi)
>>> _rewrite_sin((pi, pi), s, 0, 1)
(gamma(s), gamma(1 - s), -pi)
>>> _rewrite_sin((2*pi, 0), s, 0, S(1)/2)
(gamma(2*s), gamma(1 - 2*s), pi)
>>> _rewrite_sin((2*pi, 0), s, S(1)/2, 1)
(gamma(2*s - 1), gamma(2 - 2*s), -pi)
r   rZ   éÿÿÿÿ)r   r   r   rÅ   r*   )Úm_nrl   rÒ   rÓ   ÚmÚnÚrs          rF   Ú_rewrite_sinrü   ˜  s€   € ðJ �D€Aä�1”R‘4Ó€AÜ�1”R‘4Ó€AÜ���1‘�q—~‘~Ó'¨Ñ*Ñ*Ó+€AÜ�‘�q‘˜1‘Óœu Q¨¡U¨Q¡Y°±¡_Ó5¸¸Q±w¼r±zÐAÐArH   c                   ó   • \ rS rSrSrSrg)ÚMellinTransformStripErroriÅ  z>
Exception raised by _rewrite_gamma. Mainly for internal use.
rŽ   N)rI   rJ   rK   rL   rM   rN   rŽ   rH   rF   rþ   rþ   Å  s   † ñò 	rH   rþ   c           
      ó(  ^ ^^/^0^1^2• [        X#/5      u  m/m0U/U04S jn/ nT R                  [        5       Hi  nUR                  T5      (       d  M  UR                  S   nUR
                  (       a  UR                  " T5      S   nUR                  " T5      u  p‰XX/-  nMk     T R                  [        [        [        [        5       Hp  nUR                  T5      (       d  M  UR                  S   nUR
                  (       a  UR                  " T5      S   nUR                  " T5      u  p‰XX[        -  /-  nMr     U V
s/ s H   oªR                  (       a  [        U
5      OU
PM"     nn
[         R                  nU H  n
U
R                   (       a  M  U
n  O   U V
s/ s H  oªU-  PM	     nn
[#        S U 5       5      (       a  UR                  (       d  [%        SSS5      eU['        [(        U V
s/ s H  n
[        U
R*                  5      PM     sn
[         R                  5      -  nXË:X  aI  [-        U5      S:X  a  UnO7U['        [.        U V
s/ s H  n
[        U
R0                  5      PM     sn
5      -  nT R3                  TTU-  5      m [         R                  U-  n[         R                  U-  nT/b  T/U-  m/T0b  T0U-  m0T R5                  5       u  nn[6        R8                  " U5      n[6        R8                  " U5      n[;        [=        U[?        S5      5      5      [;        [=        U[?        S	5      5      5      -   n/ n/ n/ n/ n/ nU 4S
 jm1U(       Gag  URA                  5       u  m2nU(       a  UUnnUnOUUnnUnU1U2U4S jnT2R                  T5      (       d  UT2/-  nGOT2RB                  (       d  [E        T2[F        5      (       a¿  T2RB                  (       a  T2RH                  nT2RF                  nO[K        S5      nT2RF                  nURL                  (       a%  UnUS:  a  U(       + nUUU4/[        U5      -  -  nMò  UR                  T5      (       d*  U" U5      u  p#U(       d  SU-  nUUU-  /-  nUUU-  /-  nGO3T1" T25      eT2RO                  T5      (       Ga-  [Q        T2T5      nURS                  5       S:w  av  URU                  5       S   n[W        UT5      n [-        U 5      URS                  5       :w  a  [X        RZ                  " U5      n UU/-  nUU  V!s/ s H
  n!TU!-
  U4PM     sn!-  nGMç  UR]                  5       u  nn!UU/-  nU!U* -  n!U" U!U5      (       a3  U[         R                  U!* S-   4/-  nU[         R                  U!* 4/-  nGOUS/-  nU[         R^                  U!S-   4/-  nU[         R^                  U!4/-  nGOç[E        T2[        5      (       a`  U" T2R                  S   5      u  p#U(       a9  US:”  a  U" U* U-  U5      S	:X  d  US:  a  U" U* U-  U5      S:X  a  [a        S5      eUX#4/-  nGOr[E        T2[        5      (       ax  T2R                  S   nU(       a.  [        U[        -  5      [        SU[        -  -
  5      [        n$n#n"O[c        U" U5      TT/T05      u  n"n#n$UU"U(       + 4U#U(       + 4/-  nUU$/-  nOå[E        T2[        5      (       a:  T2R                  S   nU[        US	S9U4[        [        S-  U-
  S	S9U(       + 4/-  nO–[E        T2[        5      (       a*  T2R                  S   nU[        [        S-  U-
  S	S9U4/-  nOW[E        T2[        5      (       a:  T2R                  S   nU[        [        S-  U-
  S	S9U4[        US	S9U(       + 4/-  nOT1" T25      eU(       a  GMg  U[7        U6 [7        U6 -  -  n/ / / / 4u  n%n&n'n(UU%U'S4UU(U&S	44 GH6  u  n)n*n+nU)(       d  M  U)RA                  5       u  nn!US:w  aÕ  US:w  aÏ  [        [        U5      5      nUU-  n,U!U-  n-URL                  (       d  [e        S5      e[g        U5       H  n.U)U,U-U.U-  -   4/-  n)M     U(       a6  US[        -  SU-
  S-  -  UU![         Rh                  -
  -  -  -  nUUU-  /-  nO6US[        -  SU-
  S-  -  UU![         Rh                  -
  -  -  -  nUUU* -  /-  nM÷  US:X  a  U*Rk                  SU!-
  5        OU+Rk                  U!5        U)(       a  GM$  GM9     [7        U6 nU%Rm                  [n        S9  U&Rm                  [n        S9  U'Rm                  [n        S9  U(Rm                  [n        S9  U%U&4U'U(4X~U4$ s  sn
f s  sn
f s  sn
f s  sn
f s  sn!f )a8  
Try to rewrite the product f(s) as a product of gamma functions,
so that the inverse Mellin transform of f can be expressed as a meijer
G function.

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

Return (an, ap), (bm, bq), arg, exp, fac such that
G((an, ap), (bm, bq), arg/z**exp)*fac is the inverse Mellin transform of f(s).

Raises IntegralTransformError or MellinTransformStripError on failure.

It is asserted that f has no poles in the fundamental strip designated by
(a, b). One of a and b is allowed to be None. The fundamental strip is
important, because it determines the inversion contour.

This function can handle exponentials, linear factors, trigonometric
functions.

This is a helper function for inverse_mellin_transform that will not
attempt any transformations on f.

Examples
========

>>> from sympy.integrals.transforms import _rewrite_gamma
>>> from sympy.abc import s
>>> from sympy import oo
>>> _rewrite_gamma(s*(s+3)*(s-1), s, -oo, oo)
(([], [-3, 0, 1]), ([-2, 1, 2], []), 1, 1, -1)
>>> _rewrite_gamma((s-1)**2, s, -oo, oo)
(([], [1, 1]), ([2, 2], []), 1, 1, 1)

Importance of the fundamental strip:

>>> _rewrite_gamma(1/s, s, 0, oo)
(([1], []), ([], [0]), 1, 1, 1)
>>> _rewrite_gamma(1/s, s, None, oo)
(([1], []), ([], [0]), 1, 1, 1)
>>> _rewrite_gamma(1/s, s, 0, None)
(([1], []), ([], [0]), 1, 1, 1)
>>> _rewrite_gamma(1/s, s, -oo, 0)
(([], [1]), ([0], []), 1, 1, -1)
>>> _rewrite_gamma(1/s, s, None, 0)
(([], [1]), ([0], []), 1, 1, -1)
>>> _rewrite_gamma(1/s, s, -oo, None)
(([], [1]), ([0], []), 1, 1, -1)

>>> _rewrite_gamma(2**(-s+3), s, -oo, oo)
(([], []), ([], []), 1/2, 1, 8)
c                 ó0  >• [        [        U 5      5      n Tc  T[        R                  L a  gTc  U T:  $ Tc  U T:*  $ U T:¬  S:X  a  gU T:*  S:X  a  gU(       a  gTR                  (       d"  TR                  (       d  U R                  (       a  g[        S5      e)zE
Decide whether pole at c lies to the left of the fundamental strip.
NTFzPole inside critical strip?)r   r   r   rº   rb   rþ   )rÖ   Úis_numerr×   rØ   s     €€rF   ÚleftÚ_rewrite_gamma.<locals>.left  s‰   ø€ ô
 ”2�a“5‹MˆØ‰:˜"¤§
¡
Ò*ØØ‰:Ø�r‘6ˆMØ‰:Ø˜‘7ˆNØ�‰G˜ÓØØ�‰G˜ÓØÞØØ�?�?˜bŸoŸo°··Øô (Ð(EÓFÐFrH   r   rZ   c              3   ó8   #   • U  H  oR                   v •  M     g 7frf   )Úis_Rational)r   rk   s     rF   r�   Ú!_rewrite_gamma.<locals>.<genexpr>?  s   é € Ð5¢} !—–¢}ùs   ‚ÚGammaNzNonrational multiplierTFc                 ó$   >• [        STSU -  5      $ )NúInverse MellinzUnrecognised form '%s'.)r;   )Úfactrj   s    €rF   Ú	exceptionÚ!_rewrite_gamma.<locals>.exceptiona  s   ø€ Ü%Ð&6¸Ð;TÐW[Ñ;[Ó\Ð\rH   c                 ó²   >• U R                   " T5      (       d  T" T5      e[        U T5      nUR                  5       S:w  a  T" T5      eUR                  5       $ )z6Test if arg is of form a*s+b, raise exception if not. rZ   )Úis_polynomialr6   ÚdegreeÚ
all_coeffs)r   Úpr  r
  rl   s     €€€rF   Ú
linear_argÚ"_rewrite_gamma.<locals>.linear_argl  sL   ø€ à×$Ò$ Q×'Ñ'Ù “oÐ%Ü�S˜!“ˆAØ�x‰x‹z˜Q‹Ù “oÐ%Ø—<‘<“>Ð!rH   r÷   z Gammas partially over the strip.)Úevaluater^   za is not an integerrá   )8r   r„   r*   r~   rU   r…   Úas_independentr—   r&   r$   r'   r%   r   Úis_extended_realr   ÚOner  Úallr;   r   r   Úqr•   r   r  rÍ   Úas_numer_denomr   Ú	make_argsr�   Úzipr   r�   Úis_Powr’   r   Úbaser   Ú
is_Integerr  r6   r  ÚLTr4   r7   Ú	all_rootsr  ÚNegativeOnerh   rü   Ú	TypeErrorÚrangeÚHalfr”   rä   r   )3rj   rl   rÒ   rÓ   r  Ús_multipliersÚgr   rš   Ú_rk   Úcommon_coefficientÚs_multiplierÚfacÚexponentÚnumerÚdenomrU   ÚfacsÚdfacsÚnumer_gammasÚdenom_gammasÚexponentialsr  ÚugammasÚlgammasÚufacsr  r  Úexp_ry   r  ÚrsrÖ   Úgamma1Úgamma2Úfac_ÚanÚapÚbmÚbqÚgammasÚplusÚminusÚnewaÚnewcÚkr×   rØ   r  r
  s3   ``                                             @@@@rF   Ú_rewrite_gammarF  Ì  s	  ý€ ô~ �ˆv‹Y�F€BˆöGð4 €MØ�W‰W”UŽ^ˆØ�u‰u�Q�x‰xÙØ�f‰f�Q‰iˆØ�:�:Ø×$Ò$ QÓ'¨Ñ*ˆCØ×#Ò# AÓ&‰ˆØ˜Ñ Šñ ð �W‰W”Sœ#œs¤CÖ(ˆØ�u‰u�Q�x‰xÙØ�f‰f�Q‰iˆØ�:�:Ø×$Ò$ QÓ'¨Ñ*ˆCØ×#Ò# AÓ&‰ˆØ¤™(˜Ñ#Šñ )ñ CPÓPÂ-¸Q×1×1”S˜”V°qÒ8Á-€MÐPÜŸ™ÐÛˆØ�}�}‰}Ø!"ÐÙñ ñ 4AÓA²=¨aÐ)Ô)±=€MÐAÜÑ5¡}Ó5×5Ñ5Ø×/×/Ü$ W¨dÐ4LÓMÐMØ%¤f¬TÙ6Có4EÚ6C°ô 56°a·c±c¶FÙ6Cñ4EÜFGÇeÁeó'Mñ M€LàÓ)Üˆ}Ó Ó"Ø-‰Là-Üœ©}Ó=ª}¨!œq §¡žv©}Ñ=Ó>ñ?ˆLð 	
�‰ˆq�!�L‘.Ó!€AÜ
�%‰%�Ñ
€CÜ�u‰u�\Ñ!€HØ	�~Ø
ˆlÑˆØ	�~Ø
ˆlÑˆð ×#Ñ#Ó%�L€Eˆ5Ü�MŠM˜%Ó €EÜ�MŠM˜%Ó €EÜ”�Eœ6 $›<Ó(Ó)¬D´°U¼FÀ5»MÓ1JÓ,KÑK€Dà€DØ€Eà€LØ€Là€Lõ]ç
ØŸ™›‰ˆˆhÞØ+¨\�WˆGØ‰Eà+¨\�WˆGØˆE÷	"ð �x‰x˜�{‰{Ø�d�V‰OŠEà�[�[œJ t¬S×1Ñ1Ø�{�{Ø—y‘y�Ø—x‘x‘ä  “|�Ø—x‘x�Ø��Ø�Ø˜!“8Ø#œ8�DØ˜$ ˜˜¤s¨4£yÑ0Ñ0�ÙØ—X‘X˜a—[‘[Ù! $Ó'‘�ÞØ˜T™6�DØ  q¡ 	Ñ)�Ø˜˜q™˜	Ñ!’á “oÐ%à×Ñ ×"Ò"Ü�T˜1“ˆAØ�x‰x‹z˜Q‹ð Ÿ™›˜q™	�Ü˜1˜a“[�Ü�r“7˜aŸh™h›jÓ(Ü ×*Ò*¨1Ó-�BØ˜%˜Ñ �Ø±BÓ7²B¨q˜!˜a™% Ó*±BÑ7Ñ7�ÚØ—<‘<“>‰DˆAˆqØ�a�S‰LˆEØ�!�‰GˆAá�A�x× Ñ ØœQŸU™U Q B¨¡F˜OÐ,Ñ,�ØœQŸU™U Q B˜K˜=Ñ(’à˜"˜‘�ØœQŸ]™]¨A°©EÐ2Ð3Ñ3�ØœQŸ]™]¨AÐ.Ð/Ñ/’Ü˜œe×$Ñ$Ù˜dŸi™i¨™lÓ+‰DˆAÞØ˜“E™t Q B q¡D¨(Ó3°uÓ<Ø˜“E™t Q B q¡D¨(Ó3°tÓ;Ü-Ø:ó<ð <à˜˜�xÑŠGÜ˜œc×"Ñ"ð —	‘	˜!‘ˆAÞä',¨Q¬r©T£{´E¸!¸aÄ¹d¹(³OÄR ˜� ä'3±J¸q³MÀ1ÀbÈ"Ó'MÑ$�˜ Ø�f (œlÐ+¨f¸(´lÐ-CÐDÑDˆDØ�d�V‰O‰EÜ˜œc×"Ñ"Ø—	‘	˜!‘ˆAØ”c˜! eÑ,¨hÐ7Üœ"˜Q™$ ™(¨UÑ3¸´\ÐBðDñ D‰Dä˜œc×"Ñ"Ø—	‘	˜!‘ˆAØ”cœ"˜Q™$ ™(¨UÑ3°XÐ>Ð?Ñ?‰DÜ˜œc×"Ñ"Ø—	‘	˜!‘ˆAØ”cœ"˜Q™$ ™(¨UÑ3°XÐ>Ü˜! eÑ,°(¬lÐ;ð=ñ =‰Dñ ˜D“/Ð!÷M ‰$ðP Œ3�ˆ:”c˜5�kÑ!Ñ!€Cð ˜˜R �^�N€BˆˆB�Ø+7¸¸RÀÐ*FØ+7¸¸RÀÐ*Gô*IÑ%ˆ��e˜XçˆfØ—:‘:“<‰DˆAˆqØ�B‹w˜1 ›7äœ˜!›“I�Ø˜‘s�Ø˜‘s�Ø—|—|Ü#Ð$9Ó:Ð:Ü˜qž�AØ  d¨Q¨q©S¡jÐ1Ð2Ñ2’Fñ "æØ˜Aœb™D Q¨¡U¨A¡IÑ.°°Q¼¿¹±Z±Ñ@Ñ@�CØ  Q¨¡T FÑ*‘Là˜Aœb™D Q¨¡U¨A¡IÑ.°°Q¼¿¹±Z±Ñ@Ñ@�CØ  Q¨!¨¡W IÑ-�LÙØ�B‹wØ—‘˜A ™EÕ"à—‘˜Q”÷+ Œfñ*Iô: ˆ|Ð
€Cð ‡G�GÔ €GÑ!Ø‡G�GÔ €GÑ!Ø‡G�GÔ €GÑ!Ø‡G�GÔ €GÑ!à�ˆ8�b˜"�X˜s¨cÐ1Ð1ùòy Qùò Bùò4Eùò >ùòb 8s   Ä='e;Æf Ç,fÉ	f
Ôfc                 ó   • [        SSU SS9nU R                  [        5      n [        U 5      [	        U 5      [        U 5      4 GHn  nUR                  (       a”  UR                   Vs/ s H  n[        XqXSUSS9PM     nnU V	s/ s H  o™S   PM	     n
n	U V	s/ s H  o™S   PM	     nn	[        U6 nU(       d  [        X»R                  [        5      S	9nUR                  XR5      [        U
6 4s  $  [        XaUS   US   5      u  pÍpïn [!        XÍXåU-  -  5      nU(       a  UnO¢ SS
KJn  U" U5      nUR*                  (       a‚  [-        UR                  5      S:X  ai  [        U[/        U5      -
  5      UR                  S   R                  S   -  [        [/        U5      U-
  5      UR                  S   R                  S   -  -   n[/        [1        UR2                  5      5      UR4                  [6        -  :  /nU[        [9        [-        UR:                  5      [-        UR<                  5      :g  S[?        UR@                  5      S-   :¬  5      [/        [1        UR2                  5      5      UR4                  [6        -  :H  5      /-  n[9        U6 nUS:X  a  [        SU S5      eUU-  R                  XR5      U4s  $    [        SU S5      es  snf s  sn	f s  sn	f ! [         a     GM�  f = f! ["         a     GM¯  f = f! [(         a    [        SU S5      ef = f)zjA helper for the real inverse_mellin_transform function, this one here
assumes x to be real and positive. rÂ   zinverse-mellin-transformT)ÚpositiveFr®   rZ   r   )Úgens)Úhyperexpandr	  zCould not calculate integralé   zdoes not convergerv   )!r.   Úrewriter*   r5   r   r   r…   rU   Ú_inverse_mellin_transformr   r„   r)   rÍ   r3   rF  r;   r+   Ú
ValueErrorr¨   rJ  rh   rã   r•   r   r   ÚargumentÚdeltar   r2   r=  r?  r   Únu)rç   rl   Úx_ÚstripÚ
as_meijergrk   r'  ÚGr™   r  rÕ   r˜   rÒ   rÓ   ÚCÚer+  ÚhrJ  ry   s                       rF   rM  rM  ÷  s×  € ô 	ˆsÐ.°¸DÑA€Að 	
�	‰	”%Ó€AÜ�Q‹iœ A›¬¨q«	Ô2ˆØ�8�8ð ŸVšVó%â#˜ô .¨a°A¸jØ6;ô=á#ð ð %ñ $(Ó(¢4˜a�q”T¡4ˆEÐ(Ù"&Ó'¢$˜Q�a”D¡$ˆDÐ'Ü�t�*ˆCÞÜ˜S§y¡y´Ó';Ñ<�Ø—8‘8˜A“?¤C¨ KÐ/Ò/ð	Ü,¨Q°5¸±8¸UÀ1¹XÓF‰OˆA�!˜ð	Ü˜˜a 1¡™fÓ%ˆAö Ø‰AðIÝ6Ù “N�ð
 �~�~¤# a§f¡f£+°Ó"2ä˜a¤# a£&™jÓ)¨!¯&©&°©)¯.©.¸Ñ*;Ñ;Ü¤ A£¨¡
Ó+¨A¯F©F°1©I¯N©N¸1Ñ,=Ñ=ñ>�ô
 ”C˜Ÿ
™
“OÓ$ q§w¡w¬r¡zÑ1Ð2ˆð 	””Rœ˜AŸD™D›	¤S¨¯©£YÑ.°´R¸¿¹³XÀ±\Ñ0AÓBÜœ˜QŸZ™Z›Ó)¨Q¯W©W´R©ZÑ7ó9ð :ñ 	:ˆä�4ˆyˆØ�5‹=Ü(Ø  !Ð%8ó:ð :à�#‘�|‰|˜AÓ" DÐ(Ò(ñ_ 3ôb !Ð!1°1°bÓ
9Ð9ùò]%ùò )ùÚ'øô &ó 	Ûð	ûô ó 	Ûð	ûô 'ó IÜ,Ø$ aÐ)GóIð IðIúsB   Á%KÂKÂKÃ,KÄK#Ä K5Ë
K ËK Ë#
K2Ë1K2Ë5LNc                   ó^   • \ rS rSrSrSr\" S5      r\" S5      rS r	\
S 5       rS rS	 rS
rg)ÚInverseMellinTransformi5  zæ
Class representing unevaluated inverse Mellin transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse Mellin transforms, see the
:func:`inverse_mellin_transform` docstring.
r	  ÚNonerÖ   c                 ó€   • Uc  [         R                  nUc  [         R                  n[        R                  " XX#XE40 UD6$ rf   )rZ  Ú_none_sentinelrQ   Ú__new__)Úclsrç   rl   rk   rÒ   rÓ   Úoptss          rF   r^  ÚInverseMellinTransform.__new__C  s<   € Ø‰9Ü&×5Ñ5ˆAØ‰9Ü&×5Ñ5ˆAÜ ×(Ò(¨°°qÑD¸tÑDÐDrH   c                 ó–   • U R                   S   U R                   S   p!U[        R                  L a  S nU[        R                  L a  S nX4$ )NrK  é   )rU   rZ  r]  )rB   rÒ   rÓ   s      rF   Úfundamental_stripÚ(InverseMellinTransform.fundamental_stripJ  sH   € à�y‰y˜‰|˜TŸY™Y q™\ˆ1ØÔ&×5Ñ5Ò5ØˆAØÔ&×5Ñ5Ò5ØˆAØˆtˆrH   c                 ó¤  • UR                  SS5        [        c>  [        [        [        [
        [        [        [        [        [        [        [        [        1q[        U5       HR  nUR                  (       d  M  UR!                  U5      (       d  M.  UR"                  [        ;  d  MD  [%        SUSU-  5      e   U R&                  n[)        XX640 UD6$ )Nr�   Tr	  zComponent %s not recognised.)r�   Ú_allowedr   r*   r&   r$   r'   r%   r   r   r   r   r   r   r   Úis_Functionr~   r€   r;   rd  rM  )rB   rç   rl   rk   rm   rj   rS  s          rF   rn   Ú)InverseMellinTransform._compute_transformS  s¥   € ð 	�	‰	�*˜dÔ#äÑä”UœC¤¤c¬3´´d¼DÄ$Üœ2ðˆHô % QÖ'ˆAØ�}�}‰} §¡ q§£¨a¯f©f¼HÕ.DÜ,Ð-=¸qØ%CÀaÑ%GóIð Iñ (ð ×&Ñ&ˆÜ(¨¨qÑA¸5ÑAÐArH   c                 ó(  • U R                   R                  n[        XU* -  -  X$[        R                  [        R
                  -  -
  U[        R                  [        R
                  -  -   45      S[        R                  -  [        R                  -  -  $ ©Nr^   )rE   Ú_cr-   r   ÚImaginaryUnitrº   ÚPi)rB   rç   rl   rk   rÖ   s        rF   rs   Ú#InverseMellinTransform._as_integralc  sv   € Ø�N‰N×ÑˆÜ˜˜q˜b™'™	 A¬1¯?©?¼1¿:¹:Ñ+EÑ'EÀqÜ$%§O¡O´A·J±JÑ$>ñH?ð $@ó AØBCÄAÇDÁDÁ&ÌÏÉÑBXñZð 	ZrH   rŽ   N)rI   rJ   rK   rL   rM   r–   r   r]  rl  r^  r¤   rd  rn   rs   rN   rŽ   rH   rF   rZ  rZ  5  sF   † ñð €EÙ˜6“]€NÙ	ˆs‹€BòEð ñó ðòBõ ZrH   rZ  c                 óH   • [        XX#S   US   5      R                  " S0 UD6$ )aŽ  
Compute the inverse Mellin transform of `F(s)` over the fundamental
strip given by ``strip=(a, b)``.

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

This can be defined as

.. math:: f(x) = \frac{1}{2\pi i} \int_{c - i\infty}^{c + i\infty} x^{-s} F(s) \mathrm{d}s,

for any `c` in the fundamental strip. Under certain regularity
conditions on `F` and/or `f`,
this recovers `f` from its Mellin transform `F`
(and vice versa), for positive real `x`.

One of `a` or `b` may be passed as ``None``; a suitable `c` will be
inferred.

If the integral cannot be computed in closed form, this function returns
an unevaluated :class:`InverseMellinTransform` object.

Note that this function will assume x to be positive and real, regardless
of the SymPy assumptions!

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.

Examples
========

>>> from sympy import inverse_mellin_transform, oo, gamma
>>> from sympy.abc import x, s
>>> inverse_mellin_transform(gamma(s), s, x, (0, oo))
exp(-x)

The fundamental strip matters:

>>> f = 1/(s**2 - 1)
>>> inverse_mellin_transform(f, s, x, (-oo, -1))
x*(1 - 1/x**2)*Heaviside(x - 1)/2
>>> inverse_mellin_transform(f, s, x, (-1, 1))
-x*Heaviside(1 - x)/2 - Heaviside(x - 1)/(2*x)
>>> inverse_mellin_transform(f, s, x, (1, oo))
(1/2 - x**2/2)*Heaviside(1 - x)/x

See Also
========

mellin_transform
hankel_transform, inverse_hankel_transform
r   rZ   rŽ   )rZ  r‘   )rç   rl   rk   rS  rm   s        rF   Úinverse_mellin_transformrq  i  s*   € ôj " !¨°©8°U¸1±XÓ>×CÒCÑLÀeÑLÐLrH   c                 óÔ  • [        X0-  [        U[        R                  -  U-  U-  5      -  U[        R                  [        R
                  45      nUR                  [        5      (       d  [        Xv5      [        R                  4$ [        X[        R                  [        R
                  45      nU[        R                  [        R
                  [        R                  4;   d  UR                  [        5      (       a  [        XPS5      eUR                  (       d  [        XPS5      eUR                  S   u  pyUR                  [        5      (       a  [        XPS5      e[        Xv5      U	4$ )zÙ
Compute a general Fourier-type transform

.. math::

    F(k) = a \int_{-\infty}^{\infty} e^{bixk} f(x)\, dx.

For suitable choice of *a* and *b*, this reduces to the standard Fourier
and inverse Fourier transforms.
z$function not integrable on real axisr¾   r   r¿   )r,   r   r   rm  rÊ   rº   r~   r-   r«   rË   ÚNaNr;   rã   rU   )
rj   rk   rE  rÒ   rÓ   rw   r�   rç   Ú
integral_fry   s
             rF   Ú_fourier_transformru  ¥  s  € ô 	�!‘#”c˜!œAŸO™OÑ+¨AÑ-¨aÑ/Ó0Ñ0°1´a×6HÑ6HÌ!Ï*É*Ð2UÓV€Aà�5‰5”�?‰?Ü˜Ó%¤q§v¡vÐ-Ð-ä˜1¤!×"4Ñ"4´a·j±jÐAÓB€JØ”a×(Ñ(¬!¯*©*´a·e±eÐ<Ó<À
ÇÁÌx×@XÑ@XÜ$ TÐ.TÓUÐUà�>�>Ü$ TÐ.JÓKÐKà�f‰f�Q‰i�G€AØ‡u�uŒX‡�Ü$ TÐ.KÓLÐLä�QÓ! 4Ð'Ð'rH   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚFourierTypeTransformiÄ  z"Base class for Fourier transforms.c                 ó2   • [        SU R                  -  5      e©Nz,Class %s must implement a(self) but does not©rh   rE   rV   s    rF   rÒ   ÚFourierTypeTransform.aÇ  ó   € Ü!Ø:¸T¿^¹^ÑKóMð 	MrH   c                 ó2   • [        SU R                  -  5      e©Nz,Class %s must implement b(self) but does notrz  rV   s    rF   rÓ   ÚFourierTypeTransform.bË  r|  rH   c                 ó‚   • [        XUU R                  5       U R                  5       U R                  R                  40 UD6$ rf   )ru  rÒ   rÓ   rE   r–   ©rB   rj   rk   rE  rm   s        rF   rn   Ú'FourierTypeTransform._compute_transformÏ  s<   € Ü! !¨Ø"&§&¡&£(¨D¯F©F«HØ"&§.¡.×"6Ñ"6ñAà:?ñAð 	ArH   c                 óâ   • U R                  5       nU R                  5       n[        XA-  [        U[        R
                  -  U-  U-  5      -  U[        R                  [        R                  45      $ rf   )rÒ   rÓ   r-   r   r   rm  rÊ   rº   )rB   rj   rk   rE  rÒ   rÓ   s         rF   rs   Ú!FourierTypeTransform._as_integralÔ  sX   € Ø�F‰F‹HˆØ�F‰F‹HˆÜ˜™œC ¤!§/¡/Ñ 1°!Ñ 3°AÑ 5Ó6Ñ6¸¼A×<NÑ<NÔPQ×PZÑPZÐ8[Ó\Ð\rH   rŽ   N©
rI   rJ   rK   rL   rM   rÒ   rÓ   rn   rs   rN   rŽ   rH   rF   rw  rw  Ä  s   † Ù-òMòMòAõ
]rH   rw  c                   ó(   • \ rS rSrSrSrS rS rSrg)ÚFourierTransformiÚ  zÑ
Class representing unevaluated Fourier transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute Fourier transforms, see the :func:`fourier_transform`
docstring.
ÚFourierc                 ó   • grî   rŽ   rV   s    rF   rÒ   ÚFourierTransform.aæ  ó   € ØrH   c                 ó(   • S[         R                  -  $ )Néþÿÿÿ©r   rn  rV   s    rF   rÓ   ÚFourierTransform.bé  s   € Ø”!—$‘$‰wˆrH   rŽ   N©	rI   rJ   rK   rL   rM   r–   rÒ   rÓ   rN   rŽ   rH   rF   r‡  r‡  Ú  s   † ñð €EòõrH   r‡  c                 ó:   • [        XU5      R                  " S0 UD6$ )a"  
Compute the unitary, ordinary-frequency Fourier transform of ``f``, defined
as

.. math:: F(k) = \int_{-\infty}^\infty f(x) e^{-2\pi i x k} \mathrm{d} x.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`FourierTransform` object.

For other Fourier transform conventions, see the function
:func:`sympy.integrals.transforms._fourier_transform`.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import fourier_transform, exp
>>> from sympy.abc import x, k
>>> fourier_transform(exp(-x**2), x, k)
sqrt(pi)*exp(-pi**2*k**2)
>>> fourier_transform(exp(-x**2), x, k, noconds=False)
(sqrt(pi)*exp(-pi**2*k**2), True)

See Also
========

inverse_fourier_transform
sine_transform, inverse_sine_transform
cosine_transform, inverse_cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )r‡  r‘   ©rj   rk   rE  rm   s       rF   Úfourier_transformr“  í  s    € ôN ˜A !Ó$×)Ò)Ñ2¨EÑ2Ð2rH   c                   ó(   • \ rS rSrSrSrS rS rSrg)ÚInverseFourierTransformi  zé
Class representing unevaluated inverse Fourier transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse Fourier transforms, see the
:func:`inverse_fourier_transform` docstring.
zInverse Fourierc                 ó   • grî   rŽ   rV   s    rF   rÒ   ÚInverseFourierTransform.a#  r‹  rH   c                 ó(   • S[         R                  -  $ rk  rŽ  rV   s    rF   rÓ   ÚInverseFourierTransform.b&  s   € Ø”—‘‰vˆrH   rŽ   Nr�  rŽ   rH   rF   r•  r•    s   † ñð €EòõrH   r•  c                 ó:   • [        XU5      R                  " S0 UD6$ )aF  
Compute the unitary, ordinary-frequency inverse Fourier transform of `F`,
defined as

.. math:: f(x) = \int_{-\infty}^\infty F(k) e^{2\pi i x k} \mathrm{d} k.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`InverseFourierTransform` object.

For other Fourier transform conventions, see the function
:func:`sympy.integrals.transforms._fourier_transform`.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import inverse_fourier_transform, exp, sqrt, pi
>>> from sympy.abc import x, k
>>> inverse_fourier_transform(sqrt(pi)*exp(-(pi*k)**2), k, x)
exp(-x**2)
>>> inverse_fourier_transform(sqrt(pi)*exp(-(pi*k)**2), k, x, noconds=False)
(exp(-x**2), True)

See Also
========

fourier_transform
sine_transform, inverse_sine_transform
cosine_transform, inverse_cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )r•  r‘   ©rç   rE  rk   rm   s       rF   Úinverse_fourier_transformrœ  *  s    € ôN # 1¨Ó+×0Ò0Ñ9°5Ñ9Ð9rH   c                 ó¤  • [        X0-  U" XA-  U-  5      -  U[        R                  [        R                  45      nUR	                  [
        5      (       d  [        X‡5      [        R                  4$ UR                  (       d  [        X`S5      eUR                  S   u  p‰UR	                  [
        5      (       a  [        X`S5      e[        X‡5      U	4$ )zó
Compute a general sine or cosine-type transform
    F(k) = a int_0^oo b*sin(x*k) f(x) dx.
    F(k) = a int_0^oo b*cos(x*k) f(x) dx.

For suitable choice of a and b, this reduces to the standard sine/cosine
and inverse sine/cosine transforms.
r¾   r   r¿   )r,   r   r¹   rº   r~   r-   r«   rË   rã   r;   rU   )
rj   rk   rE  rÒ   rÓ   ÚKrw   r�   rç   ry   s
             rF   Ú_sine_cosine_transformrŸ  X  sŸ   € ô 	�!‘#‘a˜™˜A™“h‘, ¤A§F¡F¬A¯J©JÐ 7Ó8€Aà�5‰5”�?‰?Ü˜Ó%¤q§v¡vÐ-Ð-à�>�>Ü$ TÐ.JÓKÐKà�f‰f�Q‰i�G€AØ‡u�uŒX‡�Ü$ TÐ.KÓLÐLä�QÓ! 4Ð'Ð'rH   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚSineCosineTypeTransformiq  z?
Base class for sine and cosine transforms.
Specify cls._kern.
c                 ó2   • [        SU R                  -  5      ery  rz  rV   s    rF   rÒ   ÚSineCosineTypeTransform.aw  r|  rH   c                 ó2   • [        SU R                  -  5      er~  rz  rV   s    rF   rÓ   ÚSineCosineTypeTransform.b{  r|  rH   c           	      ó¬   • [        XUU R                  5       U R                  5       U R                  R                  U R                  R
                  40 UD6$ rf   )rŸ  rÒ   rÓ   rE   Ú_kernr–   r�  s        rF   rn   Ú*SineCosineTypeTransform._compute_transform€  sL   € Ü% a¨AØ&*§f¡f£h°·±³Ø&*§n¡n×&:Ñ&:Ø&*§n¡n×&:Ñ&:ñEð ?DñEð 	ErH   c                 óä   • U R                  5       nU R                  5       nU R                  R                  n[	        XA-  U" XR-  U-  5      -  U[
        R                  [
        R                  45      $ rf   )rÒ   rÓ   rE   r§  r-   r   r¹   rº   )rB   rj   rk   rE  rÒ   rÓ   rž  s          rF   rs   Ú$SineCosineTypeTransform._as_integral†  sS   € Ø�F‰F‹HˆØ�F‰F‹HˆØ�N‰N× Ñ ˆÜ˜™™A˜a™c !™e›H™ q¬!¯&©&´!·*±*Ð&=Ó>Ð>rH   rŽ   Nr…  rŽ   rH   rF   r¡  r¡  q  s   † ñò
MòMò
Eõ?rH   r¡  c                   ó,   • \ rS rSrSrSr\rS rS r	Sr
g)ÚSineTransformi�  zÈ
Class representing unevaluated sine transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute sine transforms, see the :func:`sine_transform`
docstring.
ÚSinec                 ó8   • [        S5      [        [        5      -  $ rk  ©r"   r   rV   s    rF   rÒ   ÚSineTransform.aš  ó   € Ü�A‹w”tœB“xÑÐrH   c                 ó"   • [         R                  $ rf   ©r   r  rV   s    rF   rÓ   ÚSineTransform.b�  ó   € Ü�u‰uˆrH   rŽ   N©rI   rJ   rK   rL   rM   r–   r&   r§  rÒ   rÓ   rN   rŽ   rH   rF   r¬  r¬  �  s   † ñð €EØ€Eò õrH   r¬  c                 ó:   • [        XU5      R                  " S0 UD6$ )aÉ  
Compute the unitary, ordinary-frequency sine transform of `f`, defined
as

.. math:: F(k) = \sqrt{\frac{2}{\pi}} \int_{0}^\infty f(x) \sin(2\pi x k) \mathrm{d} x.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`SineTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import sine_transform, exp
>>> from sympy.abc import x, k, a
>>> sine_transform(x*exp(-a*x**2), x, k)
sqrt(2)*k*exp(-k**2/(4*a))/(4*a**(3/2))
>>> sine_transform(x**(-a), x, k)
2**(1/2 - a)*k**(a - 1)*gamma(1 - a/2)/gamma(a/2 + 1/2)

See Also
========

fourier_transform, inverse_fourier_transform
inverse_sine_transform
cosine_transform, inverse_cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )r¬  r‘   r’  s       rF   Úsine_transformr¸  ¡  s    € ôH ˜˜qÓ!×&Ò&Ñ/¨Ñ/Ð/rH   c                   ó,   • \ rS rSrSrSr\rS rS r	Sr
g)ÚInverseSineTransformiÈ  zà
Class representing unevaluated inverse sine transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse sine transforms, see the
:func:`inverse_sine_transform` docstring.
zInverse Sinec                 ó8   • [        S5      [        [        5      -  $ rk  r¯  rV   s    rF   rÒ   ÚInverseSineTransform.aÕ  r±  rH   c                 ó"   • [         R                  $ rf   r³  rV   s    rF   rÓ   ÚInverseSineTransform.bØ  rµ  rH   rŽ   Nr¶  rŽ   rH   rF   rº  rº  È  s   † ñð €EØ€Eò õrH   rº  c                 ó:   • [        XU5      R                  " S0 UD6$ )a  
Compute the unitary, ordinary-frequency inverse sine transform of `F`,
defined as

.. math:: f(x) = \sqrt{\frac{2}{\pi}} \int_{0}^\infty F(k) \sin(2\pi x k) \mathrm{d} k.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`InverseSineTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import inverse_sine_transform, exp, sqrt, gamma
>>> from sympy.abc import x, k, a
>>> inverse_sine_transform(2**((1-2*a)/2)*k**(a - 1)*
...     gamma(-a/2 + 1)/gamma((a+1)/2), k, x)
x**(-a)
>>> inverse_sine_transform(sqrt(2)*k*exp(-k**2/(4*a))/(4*sqrt(a)**3), k, x)
x*exp(-a*x**2)

See Also
========

fourier_transform, inverse_fourier_transform
sine_transform
cosine_transform, inverse_cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )rº  r‘   r›  s       rF   Úinverse_sine_transformrÀ  Ü  s    € ôJ    aÓ(×-Ò-Ñ6°Ñ6Ð6rH   c                   ó,   • \ rS rSrSrSr\rS rS r	Sr
g)ÚCosineTransformi  zÎ
Class representing unevaluated cosine transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute cosine transforms, see the :func:`cosine_transform`
docstring.
ÚCosinec                 ó8   • [        S5      [        [        5      -  $ rk  r¯  rV   s    rF   rÒ   ÚCosineTransform.a  r±  rH   c                 ó"   • [         R                  $ rf   r³  rV   s    rF   rÓ   ÚCosineTransform.b  rµ  rH   rŽ   N©rI   rJ   rK   rL   rM   r–   r$   r§  rÒ   rÓ   rN   rŽ   rH   rF   rÂ  rÂ    s   † ñð €EØ€Eò õrH   rÂ  c                 ó:   • [        XU5      R                  " S0 UD6$ )aÒ  
Compute the unitary, ordinary-frequency cosine transform of `f`, defined
as

.. math:: F(k) = \sqrt{\frac{2}{\pi}} \int_{0}^\infty f(x) \cos(2\pi x k) \mathrm{d} x.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`CosineTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import cosine_transform, exp, sqrt, cos
>>> from sympy.abc import x, k, a
>>> cosine_transform(exp(-a*x), x, k)
sqrt(2)*a/(sqrt(pi)*(a**2 + k**2))
>>> cosine_transform(exp(-a*sqrt(x))*cos(a*sqrt(x)), x, k)
a*exp(-a**2/(2*k))/(2*k**(3/2))

See Also
========

fourier_transform, inverse_fourier_transform,
sine_transform, inverse_sine_transform
inverse_cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )rÂ  r‘   r’  s       rF   Úcosine_transformrÊ    s    € ôH ˜1 Ó#×(Ò(Ñ1¨5Ñ1Ð1rH   c                   ó,   • \ rS rSrSrSr\rS rS r	Sr
g)ÚInverseCosineTransformi?  zæ
Class representing unevaluated inverse cosine transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse cosine transforms, see the
:func:`inverse_cosine_transform` docstring.
zInverse Cosinec                 ó8   • [        S5      [        [        5      -  $ rk  r¯  rV   s    rF   rÒ   ÚInverseCosineTransform.aL  r±  rH   c                 ó"   • [         R                  $ rf   r³  rV   s    rF   rÓ   ÚInverseCosineTransform.bO  rµ  rH   rŽ   NrÈ  rŽ   rH   rF   rÌ  rÌ  ?  s   † ñð €EØ€Eò õrH   rÌ  c                 ó:   • [        XU5      R                  " S0 UD6$ )aÀ  
Compute the unitary, ordinary-frequency inverse cosine transform of `F`,
defined as

.. math:: f(x) = \sqrt{\frac{2}{\pi}} \int_{0}^\infty F(k) \cos(2\pi x k) \mathrm{d} k.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`InverseCosineTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import inverse_cosine_transform, sqrt, pi
>>> from sympy.abc import x, k, a
>>> inverse_cosine_transform(sqrt(2)*a/(sqrt(pi)*(a**2 + k**2)), k, x)
exp(-a*x)
>>> inverse_cosine_transform(1/sqrt(k), k, x)
1/sqrt(x)

See Also
========

fourier_transform, inverse_fourier_transform,
sine_transform, inverse_sine_transform
cosine_transform
hankel_transform, inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )rÌ  r‘   r›  s       rF   Úinverse_cosine_transformrÒ  S  s    € ôH " !¨Ó*×/Ò/Ñ8°%Ñ8Ð8rH   c                 ó¨  • [        U [        X2U-  5      -  U-  U[        R                  [        R                  45      nUR                  [        5      (       d  [        Xe5      [        R                  4$ UR                  (       d  [        X@S5      eUR                  S   u  pgUR                  [        5      (       a  [        X@S5      e[        Xe5      U4$ )zj
Compute a general Hankel transform

.. math:: F_\nu(k) = \int_{0}^\infty f(r) J_\nu(k r) r \mathrm{d} r.
r¾   r   r¿   )r,   r(   r   r¹   rº   r~   r-   r«   rË   rã   r;   rU   )rj   rû   rE  rQ  rw   r�   rç   ry   s           rF   Ú_hankel_transformrÔ  ~  s¢   € ô 	�!”G˜B !¡Ó$Ñ$ QÑ&¨¬A¯F©F´A·J±JÐ(?Ó@€Aà�5‰5”�?‰?Ü˜Ó%¤q§v¡vÐ-Ð-à�>�>Ü$ TÐ.JÓKÐKà�f‰f�Q‰i�G€AØ‡u�uŒX‡�Ü$ TÐ.KÓLÐLä�QÓ! 4Ð'Ð'rH   c                   ó:   • \ rS rSrSrS rS rS r\S 5       r	Sr
g)	ÚHankelTypeTransformi”  z#
Base class for Hankel transforms.
c                 ó„   • U R                   " U R                  U R                  U R                  U R                  S   40 UD6$ ©NrK  )rn   rA   r[   r_   rU   )rB   rm   s     rF   r‘   ÚHankelTypeTransform.doit™  sB   € Ø×&Ò& t§}¡}Ø'+×'=Ñ'=Ø'+×'>Ñ'>Ø'+§y¡y°¡|ñ0ð */ñ	0ð 	0rH   c                 ó2   • [        XX4U R                  40 UD6$ rf   )rÔ  r–   )rB   rj   rû   rE  rQ  rm   s         rF   rn   Ú&HankelTypeTransform._compute_transform   s   € Ü   q¨d¯j©jÑB¸EÑBÐBrH   c                 ó|   • [        U[        XCU-  5      -  U-  U[        R                  [        R                  45      $ rf   )r-   r(   r   r¹   rº   )rB   rj   rû   rE  rQ  s        rF   rs   Ú HankelTypeTransform._as_integral£  s1   € Ü˜œ' "¨¡cÓ*Ñ*¨1Ñ,¨q´!·&±&¼!¿*¹*Ð.EÓFÐFrH   c                 ó€   • U R                  U R                  U R                  U R                  U R                  S   5      $ rØ  )rs   rA   r[   r_   rU   rV   s    rF   rž   ÚHankelTypeTransform.as_integral¦  s8   € à× Ñ  §¡Ø!%×!7Ñ!7Ø!%×!8Ñ!8Ø!%§¡¨1¡ó/ð 	/rH   rŽ   N)rI   rJ   rK   rL   rM   r‘   rn   rs   r¤   rž   rN   rŽ   rH   rF   rÖ  rÖ  ”  s,   † ñò0òCòGð ñ/ó ó/rH   rÖ  c                   ó   • \ rS rSrSrSrSrg)ÚHankelTransformi®  zÎ
Class representing unevaluated Hankel transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute Hankel transforms, see the :func:`hankel_transform`
docstring.
ÚHankelrŽ   N©rI   rJ   rK   rL   rM   r–   rN   rŽ   rH   rF   rá  rá  ®  s   † ñð ƒErH   rá  c                 ó:   • [        XX#5      R                  " S0 UD6$ )aY  
Compute the Hankel transform of `f`, defined as

.. math:: F_\nu(k) = \int_{0}^\infty f(r) J_\nu(k r) r \mathrm{d} r.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`HankelTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import hankel_transform, inverse_hankel_transform
>>> from sympy import exp
>>> from sympy.abc import r, k, m, nu, a

>>> ht = hankel_transform(1/r**m, r, k, nu)
>>> ht
2*k**(m - 2)*gamma(-m/2 + nu/2 + 1)/(2**m*gamma(m/2 + nu/2))

>>> inverse_hankel_transform(ht, k, r, nu)
r**(-m)

>>> ht = hankel_transform(exp(-a*r), r, k, 0)
>>> ht
a/(k**3*(a**2/k**2 + 1)**(3/2))

>>> inverse_hankel_transform(ht, k, r, 0)
exp(-a*r)

See Also
========

fourier_transform, inverse_fourier_transform
sine_transform, inverse_sine_transform
cosine_transform, inverse_cosine_transform
inverse_hankel_transform
mellin_transform, laplace_transform
rŽ   )rá  r‘   )rj   rû   rE  rQ  rm   s        rF   Úhankel_transformrå  »  s    € ô\ ˜1 Ó'×,Ò,Ñ5¨uÑ5Ð5rH   c                   ó   • \ rS rSrSrSrSrg)ÚInverseHankelTransformiì  zæ
Class representing unevaluated inverse Hankel transforms.

For usage of this class, see the :class:`IntegralTransform` docstring.

For how to compute inverse Hankel transforms, see the
:func:`inverse_hankel_transform` docstring.
zInverse HankelrŽ   Nrã  rŽ   rH   rF   rç  rç  ì  s   † ñð ƒErH   rç  c                 ó:   • [        XX#5      R                  " S0 UD6$ )a_  
Compute the inverse Hankel transform of `F` defined as

.. math:: f(r) = \int_{0}^\infty F_\nu(k) J_\nu(k r) k \mathrm{d} k.

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

If the transform cannot be computed in closed form, this
function returns an unevaluated :class:`InverseHankelTransform` object.

For a description of possible hints, refer to the docstring of
:func:`sympy.integrals.transforms.IntegralTransform.doit`.
Note that for this transform, by default ``noconds=True``.

Examples
========

>>> from sympy import hankel_transform, inverse_hankel_transform
>>> from sympy import exp
>>> from sympy.abc import r, k, m, nu, a

>>> ht = hankel_transform(1/r**m, r, k, nu)
>>> ht
2*k**(m - 2)*gamma(-m/2 + nu/2 + 1)/(2**m*gamma(m/2 + nu/2))

>>> inverse_hankel_transform(ht, k, r, nu)
r**(-m)

>>> ht = hankel_transform(exp(-a*r), r, k, 0)
>>> ht
a/(k**3*(a**2/k**2 + 1)**(3/2))

>>> inverse_hankel_transform(ht, k, r, 0)
exp(-a*r)

See Also
========

fourier_transform, inverse_fourier_transform
sine_transform, inverse_sine_transform
cosine_transform, inverse_cosine_transform
hankel_transform
mellin_transform, laplace_transform
rŽ   )rç  r‘   )rç   rE  rû   rQ  rm   s        rF   Úinverse_hankel_transformré  ù  s    € ô\ " !¨Ó.×3Ò3Ñ<°eÑ<Ð<rH   )F)T)ˆrM   Ú	functoolsr   r   Ú	itertoolsr   Ú
sympy.corer   r   Úsympy.core.addr   Úsympy.core.functionr	   r
   r   r   r   Úsympy.core.mulr   Úsympy.core.intfuncr   r   Úsympy.core.sortingr   Úsympy.core.symbolr   Úsympy.core.traversalr   Ú(sympy.functions.combinatorial.factorialsr   r   Ú$sympy.functions.elementary.complexesr   r   r   Ú&sympy.functions.elementary.exponentialr   r   Ú%sympy.functions.elementary.hyperbolicr   r   r   r   Ú#sympy.functions.elementary.integersr   Ú(sympy.functions.elementary.miscellaneousr    r!   r"   Ú$sympy.functions.elementary.piecewiser#   Ú(sympy.functions.elementary.trigonometricr$   r%   r&   r'   Úsympy.functions.special.besselr(   Ú'sympy.functions.special.delta_functionsr)   Ú'sympy.functions.special.gamma_functionsr*   Úsympy.functions.special.hyperr+   Úsympy.integralsr,   r-   Úsympy.integrals.meijerintr.   Úsympy.logic.boolalgr/   r0   r1   r2   r3   Úsympy.polys.polyrootsr4   Úsympy.polys.polytoolsr5   r6   Úsympy.polys.rootoftoolsr7   Úsympy.utilities.iterablesr8   Úsympy.utilities.miscr9   rh   r;   rQ   r«   r·   Ú_nocondsr»   rè   rê   rõ   rü   rN  rþ   rF  rM  rg  rZ  rq  ru  rw  r‡  r“  r•  rœ  rŸ  r¡  r¬  r¸  rº  rÀ  rÂ  rÊ  rÌ  rÒ  rÔ  rÖ  rá  rå  rç  ré  Úsympy.integrals.laplaceÚ	integralsÚlaplaceÚ_laplaceÚLaplaceTransformÚlaplace_transformÚlaplace_correspondenceÚlaplace_initial_condsÚInverseLaplaceTransformÚinverse_laplace_transformrŽ   rH   rF   Ú<module>r     s‰  ðÙ ß #Ý ß Ý ÷;õ ;å ß )Ý /Ý #Ý 4ß Bß =Ñ =ß Aß HÓ HÝ 7ß CÑ CÝ ?ß GÓ GÝ 2Ý =Ý 9Ý 1ß /Ý ,ß EÕ EÝ 'ß .Ý +Ý .Ý &ô!Ð0ô !ô(Y ˜ô Y òxòñ6 �UÓ€ò1ð 
Ø+>Èó A;ó 
ðA;ôHÐ'ô òB)2òX*BôZ	 
ô 	òh2ñV	 ˆ4ƒó8:ó ð8:ðt €ô1ZÐ.ô 1Zòh5Mñx ˆ4ƒó(ó ð(ô<]Ð,ô ]ô,Ð+ô ò&'3ôTÐ2ô ò&':ñ\ ˆ4ƒó(ó ð(ô0?Ð/ô ?ô8Ð+ô ò($0ôNÐ2ô ò(%7ôPÐ-ô ò($2ôNÐ4ô ò($9ñV ˆ4ƒó(ó ð(ô*/Ð+ô /ô4
Ð)ô 
ò.6ôb
Ð0ô 
ò.=÷l +Ð *à×,Ò,Ð Ø×.Ò.Ð Ø!×8Ò8Ð Ø ×6Ò6Ð Ø"×:Ò:Ð Ø$×>Ò>Ñ rH   