+
    ‹°³j&Ê  ã                   óê  € R t ^ RIHtHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHtHtHtHtHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIH t H!t!H"t" ^ RI#H$t$H%t% ^ RI&H't'H(t(H)t)H*t* ^ RI+H,t, ^ RI-H.t.H/t/H0t0 ^ RI1H2t2 ^ RI3H4t4H5t5H6t6H7t7 ^ RI8H9t9 ^ RI:H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtAHBtB ^ RICHDtD ^ RIEHFtFHGtGHHtHHItIHJtJ ^ RIKHLtL ^ RIMHNtNHOtO ^ RIPHQtQ ^ RIRHStS ^ RITHUtU  ! R R ]V4      tW ! R! R"]4      tXR# tYR$ tZ]Z! R%4      t[R& t\][]\R'3R( l4       t] ! R) R*]X4      t^R+ t_R, t` ! R- R.]a4      tbR/ tc]Z! R'4      RVR0 l4       tdR1se ! R2 R3]X4      tfR4 tg]Z! R'4      RWR5 l4       th ! R6 R7]X4      ti ! R8 R9]i4      tjR: tk ! R; R<]i4      tlR= tm]Z! R'4      RWR> l4       tn ! R? R@]X4      to ! RA RB]o4      tpRC tq ! RD RE]o4      trRF ts ! RG RH]o4      ttRI tu ! RJ RK]o4      tvRL tw]Z! R'4      RWRM l4       tx ! RN RO]X4      ty ! RP RQ]y4      tzRR t{ ! RS RT]y4      t|RU t}^ R1I~Hu H€t� ]�EP                  t‚]�EP                  tƒ]�EP                  t„]�EP
                  t…]�EP                  t†]�EP                  t‡R1# )Xz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                   ó6   a a€ ] tR t^(t oRtV 3R ltRtVtV ;t# )ÚIntegralTransformErrorav  
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                óB   <€ \         SV `  V: R V: R24       W n        R# )z" Transform could not be computed: Ú.N)ÚsuperÚ__init__Úfunction)ÚselfÚ	transformr?   ÚmsgÚ	__class__s   &&&&€Ú[/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/integrals/transforms.pyr>   ÚIntegralTransformError.__init__6   s   ø€ Ü‰ÑÛ9BÃCÐHô	Jà Žó    )r?   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r>   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)rC   Ú__classdict__s   @@rD   r:   r:   (   s   ù‡ € ñ÷!õ !rF   r:   c                   ó˜   a € ] tR t^<t o Rt]R 4       t]R 4       t]R 4       t]R 4       t	R t
R tR tR	 tR
 t]R 4       tR tRtV tR# )ÚIntegralTransformaE  
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                ó(   € V P                   ^ ,          # )z The function to be transformed. ©Úargs©r@   s   &rD   r?   ÚIntegralTransform.functionS   ó   € ð �y‰y˜�|ÐrF   c                ó(   € V P                   ^,          # )z:The dependent variable of the function to be transformed. rS   rU   s   &rD   Úfunction_variableÚ#IntegralTransform.function_variableX   rW   rF   c                ó(   € V P                   ^,          # )z$The independent transform variable. rS   rU   s   &rD   Útransform_variableÚ$IntegralTransform.transform_variable]   rW   rF   c                ó†   € V P                   P                  P                  V P                  04      V P                  0,
          # )zR
This method returns the symbols that will exist when the transform
is evaluated.
)r?   Úfree_symbolsÚunionr\   rY   rU   s   &rD   r_   ÚIntegralTransform.free_symbolsb   s;   € ð �}‰}×)Ñ)×/Ñ/°×1HÑ1HÐ0IÓJØ×%Ñ%Ð&õ'ð 	'rF   c                ó   € \         h©N©ÚNotImplementedError©r@   ÚfÚxÚsÚhintss   &&&&,rD   Ú_compute_transformÚ$IntegralTransform._compute_transformk   ó   € Ü!Ð!rF   c                ó   € \         hrc   rd   ©r@   rg   rh   ri   s   &&&&rD   Ú_as_integralÚIntegralTransform._as_integraln   rm   rF   c                óh   € \        V!  pVR 8X  d"   \        V P                  P                  RR4      hV# )FNÚ )r2   r:   rC   Úname)r@   ÚextraÚconds   && rD   Ú_collapse_extraÚ!IntegralTransform._collapse_extraq   s0   € Ü�E‰{ˆØ�5Œ=Ü(¨¯©×)<Ñ)<¸dÀBÓGÐGØˆrF   c                ó  a € R p\         ;QJ d<    V 3R lS P                  P                  \        4       4       F  '       g   K   RM1	  RM-! V 3R lS P                  P                  \        4       4       4      '       * pV'       d5    S P                  ! S P                  S P
                  S P                  3/ VB pS P                  pVP                  '       g   \        V4      pWB3#   \         d    \        R4       R p LFi ; i)Nc              3   óZ   <"  € T F   pVP                  SP                  4      x € K"  	  R # 5irc   )ÚhasrY   )Ú.0Úfuncr@   s   & €rD   Ú	<genexpr>Ú2IntegralTransform._try_directly.<locals>.<genexpr>y   s+   øé € ð NÙ+L 4ð  $Ÿx™x¨×(>Ñ(>×?Ð?Û+Lùs   ƒ(+TFz6[IT _try ] Caught IntegralTransformError, returns None)Úanyr?   Úatomsr   rk   rY   r\   r:   r8   Úis_Addr   )r@   rj   ÚTÚtry_directlyÚfns   f,   rD   Ú_try_directlyÚIntegralTransform._try_directlyw   sÙ   ø€ Øˆß›3ô NØ+/¯=©=×+>Ñ+>¼|Ô+LóNŸ3Ÿ3š3ô NØ+/¯=©=×+>Ñ+>¼|Ô+LóNó Nô NˆçðØ×+Ò+¨D¯M©MØ×*Ñ*¨D×,CÑ,CñNØGLñN�ð �]‰]ˆØ�y�yˆyÜ˜B“ˆBØˆuˆøô *ô ÜÐNÔOØ’ðús   Â3C% Ã%D Ã?D c           
     óž  € VP                  RR4      pVP                  RR4      pW1R&   V P                  ! R/ VB w  rEVe   V# VP                  '       EdU   W!R&   VP                   Uu. uFE  pV P                  ! V.\        V P                  R,          4      ,           !  P                  ! R/ VB NKG  	  pp. p. p	V F€  p\        V\        4      '       g   V.pV	P                  V^ ,          4       \        V4      ^8X  d   VP                  V^,          4       K^  \        V4      ^8”  g   Kp  W†R,          .,          pK‚  	  VR8X  d   \        V	!  P                  4       pM	\        V	!  pV'       g   V#  V P                  V4      p\        V4      '       d   V3\        V4      ,           # Wx3# V'       d,   \        V P                  P                   V P"                  R4      hVP%                  V P&                  4      w  r«W P                  ! \)        V!  .\        V P                  R,          4      ,           !  ,          # u upi   \         d     L¡i ; i)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ÚsimplifyT:é   NN© )Úpopr†   r‚   rT   rC   ÚlistÚdoitÚ
isinstanceÚtupleÚappendÚlenr   rŠ   rw   r7   r:   Ú_namer?   Úas_coeff_mulrY   r   )r@   rj   r‰   rŠ   r…   rƒ   rh   Úresru   ÚressÚcoeffÚrests   &,          rD   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¸$¿)¹)ÀB½-Ó5HÕ&HÑJÕJÐJùòK%øô4 *ô Ùðús   Á(AH9Å24H> Æ'H> È>IÉIc                ód   € V P                  V P                  V P                  V P                  4      # rc   )rp   r?   rY   r\   rU   s   &rD   Úas_integralÚIntegralTransform.as_integralÏ   s,   € à× Ñ  §¡°×0FÑ0FØ!%×!8Ñ!8ó:ð 	:rF   c                ó   € V P                   # rc   )rœ   )r@   rT   Úkwargss   &*,rD   Ú_eval_rewrite_as_IntegralÚ+IntegralTransform._eval_rewrite_as_IntegralÔ   s   € Ø×ÑÐrF   rŒ   N)rG   rH   rI   rJ   rK   Úpropertyr?   rY   r\   r_   rk   rp   rw   r†   r�   rœ   r    rL   rM   ©rO   s   @rD   rQ   rQ   <   s”   ø‡ € ñð, ñó ðð ñó ðð ñó ðð ñ'ó ð'ò"ò"òòò"EKðN ñ:ó ð:÷ ð  rF   rQ   c                 ó`   € V'       d&   ^ RI Hp ^ RIHp V! V! \	        V 4      RR7      4      # V # )é    )rŠ   )Ú	powdenestT)Úpolar)Úsympy.simplifyrŠ   Úsympy.simplify.powsimpr¦   r"   )Úexprr�   rŠ   r¦   s   &&  rD   Ú	_simplifyr«   Ø   s'   € ßÝ+Ý4Ù™	¤.°Ó"6¸dÔCÓDÐDØ€KrF   c                ó   a € V 3R lpV# )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                 ó:   <a € \        S 4      R S/V 3R ll4       pV# )Únocondsc                 ó:   <€ S! V/ VB pV '       d
   V^ ,          # V# ©r¥   rŒ   )r®   rT   rŸ   r–   r}   s   $*, €rD   ÚwrapperÚ0_noconds_.<locals>.make_wrapper.<locals>.wrapperó   s#   ø€ á˜Ð' Ñ'ˆCßØ˜1•v�ØˆJrF   )r   )r}   r±   Údefaults   f €rD   Úmake_wrapperÚ_noconds_.<locals>.make_wrapperò   s'   ù€ Ü	ˆt‹ð	 7ö 	ó 
ð	ð
 ˆrF   rŒ   )r³   r´   s   f rD   Ú	_noconds_r¶   à   s   ø€ õ$ð ÐrF   Fc                 óV   € \        W\        P                  \        P                  34      # rc   )r+   r   ÚZeroÚInfinity)rg   rh   s   &&rD   Ú_default_integratorrº     s   € Ü�QœAŸF™F¤A§J¡JÐ/Ó0Ð0rF   Tc                ó$  a€ \        RRV 4      oV! VS^,
          ,          V ,          V4      pVP                  \        4      '       gL   \        VP	                  SV4      V4      \
        P                  \
        P                  3\
        P                  3# VP                  '       g   \        RV R4      hVP                  ^ ,          w  rVVP                  \        4      '       d   \        RV R4      hV3R lp\        V4       Uu. uF
  q‡! V4      NK  	  p	pV	 Uu. uF  q^,          R8w  g   K  VNK  	  p	pV	P                  R R	7       V	'       g   \        RV R
4      hV	^ ,          w  r«p\        VP	                  SV4      V4      W«3V3# u upi u upi )z/Backend function to compute Mellin transforms. ri   zmellin-transformÚMellinúcould not compute integralúintegral in unexpected formc                ó  <€ ^ RI Hp \        P                  p\        P                  p\        P
                  p\        \        V 4      4      p\        RRR7      pV EFž  p\        P                  p\        P                  p	. p
\        V4       EF  pVP                  \        R 4      P                  \        S4      V4      pVP                  '       d@   VP                  R9   g/   VP                  S4      '       g   VP                  V4      '       g   W«.,          p
K�  V! WÆ4      pVP                  '       d   VP                  R9   d   W«.,          p
KÆ  VP                   V8X  d   \#        VP$                  V	4      p	Kï  \'        VP                   V4      pEK  	  V\        P                  Jd   Wƒ8w  d   \#        W‚4      pEKc  V	\        P                  Jd   W’8w  d   \'        W“4      pEK‹  \)        V\+        V
!  4      pEK¡  	  W#V3# )z>
Turn ``cond`` into a strip (a, b), and auxiliary conditions.
)Ú_solve_inequalityÚtT)Úrealc                 ó0   € V P                  4       ^ ,          # r°   )Úas_real_imag©rh   s   &rD   Ú<lambda>Ú:_mellin_transform.<locals>.process_conds.<locals>.<lambda>)  s   €  !§.¡.Ó"2°1Ö"5rF   )z==z!=)Úsympy.solvers.inequalitiesrÀ   r   ÚNegativeInfinityr¹   Útruer/   r.   r   r0   Úreplacer   ÚsubsÚis_RelationalÚrel_opr{   Últsr   Úgtsr    r2   r1   )rv   rÀ   ÚaÚbÚauxÚcondsrÁ   ÚcÚa_Úb_Úaux_ÚdÚd_Úsolnri   s   &             €rD   Úprocess_condsÚ(_mellin_transform.<locals>.process_conds  s|  ø€ õ 	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ÐrF   Fc                 óT   € V ^ ,          V ^,          ,
          \        V ^,          4      3# r°   )r	   rÅ   s   &rD   rÆ   Ú#_mellin_transform.<locals>.<lambda>B  s   € ˜a �d Q q¥T�k¬9°Q°qµT«?Ñ;rF   ©Úkeyzno convergence found)r-   r{   r,   r«   rÌ   r   rÉ   r¹   rÊ   Úis_Piecewiser:   rT   r0   Úsort)rg   rh   Ús_Ú
integratorrŠ   ÚFrv   rÜ   rÕ   rÔ   rÑ   rÒ   rÓ   ri   s   &&&&&        @rD   Ú_mellin_transformrç     sQ  ø€ ô
 	ˆ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ˆQ™€EÐ/Ø	‡J�JÑ;€JÔ<çÜ$ X¨qÐ2HÓIÐIà�a•�I€Aˆ#Ü�Q—V‘V˜A˜r“] HÓ-°¨v°sÐ:Ð:ùò 8ùÚ/s   ÄFÄFÄ,Fc                   ó:   a € ] tR tRt o RtRtR tR tR tRt	V t
R# )	Ú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                ó   € \        WV3/ VB # rc   )rç   rf   s   &&&&,rD   rk   Ú"MellinTransform._compute_transformW  s   € Ü   qÑ2¨EÑ2Ð2rF   c                ó€   € \        WV^,
          ,          ,          V\        P                  \        P                  34      # ©r‹   )r,   r   r¸   r¹   ro   s   &&&&rD   rp   ÚMellinTransform._as_integralZ  s(   € Ü˜˜a !�e�*� q¬!¯&©&´!·*±*Ð&=Ó>Ð>rF   c                ó  € . p. p. pV F#  w  w  rVpW%.,          pW6.,          pWG.,          pK%  	  \        V!  \        V!  3\        V!  3pV^ ,          ^ ,          V^ ,          ^,          8¬  R8X  g   V^,          R8X  d   \        RRR4      hV# )r¥   TFr¼   Nzno combined convergence.)r   r    r2   r:   )	r@   ru   rÑ   rÒ   rv   ÚsaÚsbrÕ   r–   s	   &&       rD   rw   Ú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¸¬Ü(Ø˜$Ð :ó<ð <àˆ
rF   rŒ   N)rG   rH   rI   rJ   rK   r”   rk   rp   rw   rL   rM   r£   s   @rD   ré   ré   K  s%   ø‡ € ñð €Eò3ò?÷ð rF   ré   c                ó:   € \        WV4      P                  ! R/ VB # )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�   )rg   rh   ri   rj   s   &&&,rD   Úmellin_transformrô   l  s    € ôR ˜1 Ó#×(Ò(Ñ1¨5Ñ1Ð1rF   c                óp  € V w  rE\        V\        ,          4      p\        V\        ,          4      p\        V) V,          VP                  4       ^ ,          ,
          4      p\	        WA,          V,           V,           4      \	        ^V,
          V,
          WA,          ,
          4      RV,          \        ,          3# )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   r   r   rÄ   r)   )Úm_nri   rÑ   rÒ   ÚmÚnÚrs   &&&&   rD   Ú_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ÐArF   c                   ó   € ] tR tRtRtRtR# )ÚMellinTransformStripErroriÅ  z>
Exception raised by _rewrite_gamma. Mainly for internal use.
rŒ   N)rG   rH   rI   rJ   rK   rL   rŒ   rF   rD   rý   rý   Å  s   † ñó 	rF   rý   c           
     ó¨  a aa/a0a1a2€ \        W#.4      w  o/o0V/V03R lp. pS P                  \        4       Fw  pVP                  S4      '       g   K  VP                  ^ ,          pVP
                  '       d   VP                  ! S4      ^,          pVP                  ! S4      w  r‰WX.,          pKy  	  S P                  \        \        \        \        4       F‚  pVP                  S4      '       g   K  VP                  ^ ,          pVP
                  '       d   VP                  ! S4      ^,          pVP                  ! S4      w  r‰WX\        ,          .,          pK„  	  V U
u. uF!  qªP                  '       d   \        V
4      MT
NK#  	  pp
\         P                  pV F  p
V
P                   '       d   K  T
p M	  V U
u. uF  qªV,          NK  	  pp
\"        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   VP                  '       g   \%        RRR4      hT\'        \(        V U
u. uF  p
\        V
P*                  4      NK  	  up
\         P                  4      ,          pWË8X  dN   \-        V4      ^ 8X  d   TpM:T\'        \.        V U
u. uF  p
\        V
P0                  4      NK  	  up
4      ,          pS P3                  SSV,          4      o \         P                  V,          p\         P                  V,          pS/e
   S/V,          o/S0e
   S0V,          o0S P5                  4       w  pp\6        P8                  ! V4      p\6        P8                  ! V4      p\;        \=        V\?        R4      4      4      \;        \=        V\?        R4      4      4      ,           p. p. p. p. p. pV 3R lo1V'       Ed=   VPA                  4       w  o2pV'       d   TTppTpMTTppTpV1V2V3R	 lpS2P                  S4      '       g   VS2.,          pK\  S2PB                  '       g   \E        S2\F        4      '       dã   S2PB                  '       d   S2PH                  pS2PF                  pM\K        ^4      pS2PF                  pVPL                  '       d0   TpV^ 8  d   V'       * pVVV3.\        V4      ,          ,          pEK  VP                  S4      '       gA   V! V4      w  r#V'       g
   ^V,          pVVV,          .,          pVVV,          .,          pEK^  S1! S24      hS2PO                  S4      '       Edf   \Q        S2S4      pVPS                  4       ^8w  d‡   VPU                  4       ^,          p\W        VS4      p \-        V 4      VPS                  4       8w  d   \X        PZ                  ! V4      p VV.,          pTV  U!u. uF  p!SV!,
          V3NK  	  up!,          pEK%  VP]                  4       w  pp!VV.,          pV!V) ,          p!V! V!V4      '       dA   V\         P                  V!) ^,           3.,          pV\         P                  V!) 3.,          pEK›  VR.,          pV\         P^                  V!^,           3.,          pV\         P^                  V!3.,          pEKã  \E        S2\        4      '       dw   V! S2P                  ^ ,          4      w  r#V'       dF   V^ 8”  d   V! V) V,          V4      R8X  g   V^ 8  d"   V! V) V,          V4      R8X  d   \a        R
4      hVW#3.,          pEKo  \E        S2\        4      '       d”   S2P                  ^ ,          pV'       d;   \        V\        ,          4      \        ^V\        ,          ,
          4      \        p$p#p"M\c        V! V4      SS/S04      w  p"p#p$VV"V'       * 3V#V'       * 3.,          pVV$.,          pEK  \E        S2\        4      '       dS   S2P                  ^ ,          pV\        VRR7      V3\        \        ^,          V,
          RR7      V'       * 3.,          pEK€  \E        S2\        4      '       d@   S2P                  ^ ,          pV\        \        ^,          V,
          RR7      V3.,          pEKÕ  \E        S2\        4      '       dS   S2P                  ^ ,          pV\        \        ^,          V,
          RR7      V3\        VRR7      V'       * 3.,          pEK=  S1! S24      hV\7        V!  \7        V!  ,          ,          p. . . . 3w  p%p&p'p(VV%V'R3VV(V&R33 EFŸ  w  p)p*p+pV)'       g   K  V)PA                  4       w  pp!VR8w  Ed?   V^8w  Ed7   \        \        V4      4      pVV,          p,V!V,          p-VPL                  '       g   \e        R4      h\g        V4       F  p.V)V,V-V.V,          ,           3.,          p)K  	  V'       d_   V^\        ,          ^V,
          ^,          ,          VV!\         Ph                  ,
          ,          ,          ,          pVVV,          .,          pM^V^\        ,          ^V,
          ^,          ,          VV!\         Ph                  ,
          ,          ,          ,          pVVV) ,          .,          pEKc  V^8X  d   V*Pk                  ^V!,
          4       EK…  V+Pk                  V!4       EK™  	  \7        V!  pV%Pm                  \n        R7       V&Pm                  \n        R7       V'Pm                  \n        R7       V(Pm                  \n        R7       V%V&3V'V(3W~V3# u up
i u up
i u up
i u up
i u up!i )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                óN  <€ \        \        V 4      4      p Sf   S\        P                  J d   R# Sf   V S8  # Sf   V S8*  # V S8¬  R8X  d   R# V S8*  R8X  d   R# V'       d   R# SP                  '       g%   SP                  '       g   V P                  '       d   R# \        R4      h)zE
Decide whether pole at c lies to the left of the fundamental strip.
NTFzPole inside critical strip?)r
   r   r   r¹   r_   rý   )rÕ   Úis_numerrÖ   r×   s   &&€€rD   ÚleftÚ_rewrite_gamma.<locals>.left  s�   ø€ ô
 ”2�a“5‹MˆØŠ:˜"¤§
¡
Ó*ÙØŠ:Ø�r‘6ˆMØŠ:Ø˜‘7ˆNØ�‰G˜ÔÙØ�‰G˜ÔÙßÙØ�?�?ˆ?˜bŸoŸo˜o°··°Ùô (Ð(EÓFÐFrF   c              3   ó8   "  € T F  qP                   x € K  	  R # 5irc   )Úis_Rational)r|   rh   s   & rD   r~   Ú!_rewrite_gamma.<locals>.<genexpr>?  s   é € Ð5¡} !—–£}ùs   ‚FTÚGammaNzNonrational multiplierc                 ó,   <€ \        R SRV ,          4      # )úInverse MellinzUnrecognised form '%s'.)r:   )Úfactrg   s   &€rD   Ú	exceptionÚ!_rewrite_gamma.<locals>.exceptiona  s   ø€ Ü%Ð&6¸Ð;TÐW[Õ;[Ó\Ð\rF   c                ó¶   <€ V P                   ! S4      '       g	   S! S4      h\        V S4      pVP                  4       ^8w  d	   S! S4      hVP                  4       # )z6Test if arg is of form a*s+b, raise exception if not. )Úis_polynomialr5   ÚdegreeÚ
all_coeffs)r   Úpr
  r	  ri   s   & €€€rD   Ú
linear_argÚ"_rewrite_gamma.<locals>.linear_argl  sL   ø€ à×$Ò$ Q×'Ò'Ù “oÐ%Ü�S˜!“ˆAØ�x‰x‹z˜QŒÙ “oÐ%Ø—<‘<“>Ð!rF   z Gammas partially over the strip.)Úevaluateza is not an integerrà   rö   )8r   r�   r)   r{   rT   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  r5   r  ÚLTr3   r6   Ú	all_rootsr  ÚNegativeOnere   rû   Ú	TypeErrorÚrangeÚHalfr’   rã   r   )3rg   ri   rÑ   rÒ   r  Ús_multipliersÚgr   r˜   Ú_rh   Úcommon_coefficientÚs_multiplierÚfacÚexponentÚnumerÚdenomrT   ÚfacsÚdfacsÚnumer_gammasÚdenom_gammasÚexponentialsr   ÚugammasÚlgammasÚufacsr  r  Úexp_rv   r  ÚrsrÕ   Úgamma1Úgamma2Úfac_ÚanÚapÚbmÚbqÚgammasÚplusÚminusÚnewaÚnewcÚkrÖ   r×   r
  r	  s3   ff&&                                           @@@@rD   Ú_rewrite_gammarE  Ì  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Ð1”S˜”V°qÒ8Á-€MÐPÜŸ™ÐÛˆØ�}�}Š}Ø!"ÐÙñ ñ 4AÓA±=¨aÐ)×)Ð)±=€MÐAß‹CÑ5¡}Ó5�C�CŠCÑ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“/Ð!àŒ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—ñ/*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   Å'l;Æ9m È4mÊm
Ö7mc                óä  € \        RRV RR7      pV P                  \        4      p \        V 4      \	        V 4      \        V 4      3 EFÊ  pVP                  '       d£   VP                   Uu. uF  p\        WqWSVRR7      NK  	  ppV U	u. uF  q™^,          NK  	  p
p	V U	u. uF  q™^ ,          NK  	  pp	\        V!  pV'       g    \        W»P                  \        4      R7      pVP                  WR4      \        V
!  3u #  \        WaV^ ,          V^,          4      w  rÍrïp \!        YÍYåT,          ,          4      pT'       d   TpMÈ ^ RIHp T! T4      pTP*                  '       d¨   \-        TP                  4      ^8X  dŽ   \        T\/        T4      ,
          4      TP                  ^ ,          P                  ^ ,          ,          \        \/        T4      T,
          4      TP                  ^,          P                  ^ ,          ,          ,           p\/        \1        TP2                  4      4      TP4                  \6        ,          8  .pT\        \9        \-        TP:                  4      \-        TP<                  4      8g  ^ \?        TP@                  4      ^,           8¬  4      \/        \1        TP2                  4      4      TP4                  \6        ,          8H  4      .,          p\9        T!  pTR8X  d   \        R	T R4      hTT,          P                  YR4      T3u # 	  \        R	V R4      hu upi u up	i u up	i   \         d     EKú  i ; i  \"         d     EK  i ; i  \(         d    \        R	T R
4      hi ; i)zjA helper for the real inverse_mellin_transform function, this one here
assumes x to be real and positive. rÁ   zinverse-mellin-transformT)ÚpositiveF)r®   )Úgens)Úhyperexpandr  zCould not calculate integralzdoes not convergers   )!r-   Úrewriter)   r4   r   r
   r‚   rT   Ú_inverse_mellin_transformr   r�   r(   rÌ   r2   rE  r:   r*   Ú
ValueErrorr¨   rI  re   râ   r“   r   r   ÚargumentÚdeltar   r1   r<  r>  r   Únu)ræ   ri   Úx_ÚstripÚ
as_meijergrh   r&  ÚGr—   r  rÔ   r–   rÑ   rÒ   ÚCÚer*  ÚhrI  rv   s   &&&&&               rD   rK  rK  ÷  sß  € ô 	ˆsÐ.°¸DÔA€Að 	
�	‰	”%Ó€AÜ�Q‹iœ A›¬¨q«	Ô2ˆØ�8�8ˆ8ð ŸVšVó%á#˜ô .¨a°A¸jØ6;÷=á#ð ð %ñ $(Ó(¡4˜a�q—T�T¡4ˆEÐ(Ù"&Ó'¡$˜Q�a—D�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   Á)L!ÂL&ÂL+Ã>L0ÄMÅMÌ0M Ì?M ÍMÍMÍM/Nc                   ój   a € ] tR tRt o RtRt]! R4      t]! R4      tR t	]
R 4       tR tR	 tR
tV tR# )Ú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                ó„   € Vf   \         P                  pVf   \         P                  p\        P                  ! WW#WE3/ VB # rc   )rX  Ú_none_sentinelrQ   Ú__new__)Úclsræ   ri   rh   rÑ   rÒ   Úoptss   &&&&&&,rD   r\  ÚInverseMellinTransform.__new__C  s<   € ØŠ9Ü&×5Ñ5ˆAØŠ9Ü&×5Ñ5ˆAÜ ×(Ò(¨°°qÑD¸tÑDÐDrF   c                óª   € V P                   ^,          V P                   ^,          r!V\        P                  J d   RpV\        P                  J d   RpW3# )é   N)rT   rX  r[  )r@   rÑ   rÒ   s   &  rD   Úfundamental_stripÚ(InverseMellinTransform.fundamental_stripJ  sH   € à�y‰y˜�|˜TŸY™Y q�\ˆ1ØÔ&×5Ñ5Ó5ØˆAØÔ&×5Ñ5Ó5ØˆAØˆtˆrF   c                ó´  € VP                  R R4       \        f?   \        \        \        \
        \        \        \        \        \        \        \        \        0s\        V4       FY  pVP                  '       g   K  VP!                  V4      '       g   K0  VP"                  \        9  g   KG  \%        RVRV,          4      h	  V P&                  p\)        WW63/ VB # )rŠ   Tr  zComponent %s not recognised.)r�   Ú_allowedr   r)   r%   r#   r&   r$   r   r   r   r   r   r   r   Úis_Functionr{   r}   r:   rb  rK  )r@   ræ   ri   rh   rj   rg   rQ  s   &&&&,  rD   rk   Ú)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ÐArF   c                óp  € V P                   P                  p\        WV) ,          ,          W$\        P                  \        P
                  ,          ,
          V\        P                  \        P
                  ,          ,           34      ^\        P                  ,          \        P                  ,          ,          # ©é   )rC   Ú_cr,   r   ÚImaginaryUnitr¹   ÚPi)r@   ræ   ri   rh   rÕ   s   &&&& rD   rp   Ú#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rF   rŒ   N)rG   rH   rI   rJ   rK   r”   r   r[  rk  r\  r¢   rb  rk   rp   rL   rM   r£   s   @rD   rX  rX  5  sO   ø‡ € ñð €EÙ˜6“]€NÙ	ˆs‹€BòEð ñó ðòB÷ Zð ZrF   rX  c                óX   € \        WW#^ ,          V^,          4      P                  ! R/ VB # )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Œ   )rX  r�   )ræ   ri   rh   rQ  rj   s   &&&&,rD   Úinverse_mellin_transformrp  i  s*   € ôj " !¨°­8°U¸1µXÓ>×CÒCÑLÀeÑLÐLrF   c                ó  € \        W0,          \        V\        P                  ,          V,          V,          4      ,          V\        P                  \        P
                  34      pVP                  \        4      '       g   \        Wv4      \        P                  3# \        W\        P                  \        P
                  34      pV\        P                  \        P
                  \        P                  39   g   VP                  \        4      '       d   \        WPR4      hVP                  '       g   \        WPR4      hVP                  ^ ,          w  ryVP                  \        4      '       d   \        WPR4      h\        Wv4      V	3# )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   rl  rÉ   r¹   r{   r,   r«   rÊ   ÚNaNr:   râ   rT   )
rg   rh   rD  rÑ   rÒ   rt   rŠ   ræ   Ú
integral_frv   s
   &&&&&&&   rD   Ú_fourier_transformrt  ¥  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Ð'Ð'rF   c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚFourierTypeTransformiÄ  z"Base class for Fourier transforms.c                ó:   € \        R V P                  ,          4      h©z,Class %s must implement a(self) but does not©re   rC   rU   s   &rD   rÑ   ÚFourierTypeTransform.aÇ  ó   € Ü!Ø:¸T¿^¹^ÕKóMð 	MrF   c                ó:   € \        R V P                  ,          4      h©z,Class %s must implement b(self) but does notry  rU   s   &rD   rÒ   ÚFourierTypeTransform.bË  r{  rF   c                ó‚   € \        WVV P                  4       V P                  4       V P                  P                  3/ VB # rc   )rt  rÑ   rÒ   rC   r”   ©r@   rg   rh   rD  rj   s   &&&&,rD   rk   Ú'FourierTypeTransform._compute_transformÏ  s<   € Ü! !¨Ø"&§&¡&£(¨D¯F©F«HØ"&§.¡.×"6Ñ"6ñAà:?ñAð 	ArF   c                ó
  € V P                  4       pV P                  4       p\        WA,          \        V\        P
                  ,          V,          V,          4      ,          V\        P                  \        P                  34      # rc   )rÑ   rÒ   r,   r   r   rl  rÉ   r¹   )r@   rg   rh   rD  rÑ   rÒ   s   &&&&  rD   rp   Ú!FourierTypeTransform._as_integralÔ  sX   € Ø�F‰F‹HˆØ�F‰F‹HˆÜ˜�œC ¤!§/¡/Õ 1°!Õ 3°AÕ 5Ó6Õ6¸¼A×<NÑ<NÔPQ×PZÑPZÐ8[Ó\Ð\rF   rŒ   N©rG   rH   rI   rJ   rK   rÑ   rÒ   rk   rp   rL   rM   r£   s   @rD   rv  rv  Ä  s&   ø‡ € Ù-òMòMòA÷
]ð ]rF   rv  c                   ó4   a € ] tR tRt o RtRtR tR tRtV t	R# )Ú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                ó   € ^# rí   rŒ   rU   s   &rD   rÑ   ÚFourierTransform.aæ  ó   € ÙrF   c                ó0   € R\         P                  ,          # )rj  éþÿÿÿ©r   rm  rU   s   &rD   rÒ   ÚFourierTransform.bé  s   € Ø”!—$‘$�wˆrF   rŒ   N©
rG   rH   rI   rJ   rK   r”   rÑ   rÒ   rL   rM   r£   s   @rD   r†  r†  Ú  s    ø‡ € ñð €Eò÷ð rF   r†  c                ó:   € \        WV4      P                  ! R/ VB # )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�   ©rg   rh   rD  rj   s   &&&,rD   Úfourier_transformr’  í  s    € ôN ˜A !Ó$×)Ò)Ñ2¨EÑ2Ð2rF   c                   ó4   a € ] tR tRt o RtRtR tR tRtV t	R# )Ú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                ó   € ^# rí   rŒ   rU   s   &rD   rÑ   ÚInverseFourierTransform.a#  rŠ  rF   c                ó0   € ^\         P                  ,          # ri  r�  rU   s   &rD   rÒ   ÚInverseFourierTransform.b&  s   € Ø”—‘�vˆrF   rŒ   Nr�  r£   s   @rD   r”  r”    s    ø‡ € ñð €Eò÷ð rF   r”  c                ó:   € \        WV4      P                  ! R/ VB # )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æ   rD  rh   rj   s   &&&,rD   Úinverse_fourier_transformr›  *  s    € ôN # 1¨Ó+×0Ò0Ñ9°5Ñ9Ð9rF   c                óÒ  € \        W0,          V! WA,          V,          4      ,          V\        P                  \        P                  34      pVP	                  \
        4      '       g   \        W‡4      \        P                  3# VP                  '       g   \        W`R4      hVP                  ^ ,          w  r‰VP	                  \
        4      '       d   \        W`R4      h\        W‡4      V	3# )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:   rT   )
rg   rh   rD  rÑ   rÒ   ÚKrt   rŠ   ræ   rv   s
   &&&&&&&&  rD   Ú_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Ð'Ð'rF   c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚSineCosineTypeTransformiq  z?
Base class for sine and cosine transforms.
Specify cls._kern.
c                ó:   € \        R V P                  ,          4      hrx  ry  rU   s   &rD   rÑ   ÚSineCosineTypeTransform.aw  r{  rF   c                ó:   € \        R V P                  ,          4      hr}  ry  rU   s   &rD   rÒ   ÚSineCosineTypeTransform.b{  r{  rF   c           	     ó¬   € \        WVV P                  4       V P                  4       V P                  P                  V P                  P
                  3/ VB # rc   )rž  rÑ   rÒ   rC   Ú_kernr”   r€  s   &&&&,rD   rk   Ú*SineCosineTypeTransform._compute_transform€  sL   € Ü% a¨AØ&*§f¡f£h°·±³Ø&*§n¡n×&:Ñ&:Ø&*§n¡n×&:Ñ&:ñEð ?DñEð 	ErF   c                ó  € V P                  4       pV P                  4       pV P                  P                  p\	        WA,          V! WR,          V,          4      ,          V\
        P                  \
        P                  34      # rc   )rÑ   rÒ   rC   r¦  r,   r   r¸   r¹   )r@   rg   rh   rD  rÑ   rÒ   r�  s   &&&&   rD   rp   Ú$SineCosineTypeTransform._as_integral†  sS   € Ø�F‰F‹HˆØ�F‰F‹HˆØ�N‰N× Ñ ˆÜ˜�™A˜a�c !�e›H� q¬!¯&©&´!·*±*Ð&=Ó>Ð>rF   rŒ   Nr„  r£   s   @rD   r   r   q  s&   ø‡ € ñò
MòMò
E÷?ð ?rF   r   c                   ó8   a € ] tR tRt o RtRt]tR tR t	Rt
V tR# )Ú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                ó@   € \        ^4      \        \        4      ,          # ri  ©r!   r   rU   s   &rD   rÑ   ÚSineTransform.aš  ó   € Ü�A‹w”tœB“xÕÐrF   c                ó"   € \         P                  # rc   ©r   r  rU   s   &rD   rÒ   ÚSineTransform.b�  ó   € Ü�u‰uˆrF   rŒ   N©rG   rH   rI   rJ   rK   r”   r%   r¦  rÑ   rÒ   rL   rM   r£   s   @rD   r«  r«  �  s%   ø‡ € ñð €EØ€Eò ÷ð rF   r«  c                ó:   € \        WV4      P                  ! R/ VB # )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   &&&,rD   Úsine_transformr·  ¡  s    € ôH ˜˜qÓ!×&Ò&Ñ/¨Ñ/Ð/rF   c                   ó8   a € ] tR tRt o RtRt]tR tR t	Rt
V tR# )Ú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                ó@   € \        ^4      \        \        4      ,          # ri  r®  rU   s   &rD   rÑ   ÚInverseSineTransform.aÕ  r°  rF   c                ó"   € \         P                  # rc   r²  rU   s   &rD   rÒ   ÚInverseSineTransform.bØ  r´  rF   rŒ   Nrµ  r£   s   @rD   r¹  r¹  È  s%   ø‡ € ñð €EØ€Eò ÷ð rF   r¹  c                ó:   € \        WV4      P                  ! R/ VB # )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   &&&,rD   Úinverse_sine_transformr¿  Ü  s    € ôJ    aÓ(×-Ò-Ñ6°Ñ6Ð6rF   c                   ó8   a € ] tR tRt o RtRt]tR tR t	Rt
V tR# )Ú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                ó@   € \        ^4      \        \        4      ,          # ri  r®  rU   s   &rD   rÑ   ÚCosineTransform.a  r°  rF   c                ó"   € \         P                  # rc   r²  rU   s   &rD   rÒ   ÚCosineTransform.b  r´  rF   rŒ   N©rG   rH   rI   rJ   rK   r”   r#   r¦  rÑ   rÒ   rL   rM   r£   s   @rD   rÁ  rÁ    s%   ø‡ € ñð €EØ€Eò ÷ð rF   rÁ  c                ó:   € \        WV4      P                  ! R/ VB # )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   &&&,rD   Úcosine_transformrÉ    s    € ôH ˜1 Ó#×(Ò(Ñ1¨5Ñ1Ð1rF   c                   ó8   a € ] tR tRt o RtRt]tR tR t	Rt
V tR# )Ú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                ó@   € \        ^4      \        \        4      ,          # ri  r®  rU   s   &rD   rÑ   ÚInverseCosineTransform.aL  r°  rF   c                ó"   € \         P                  # rc   r²  rU   s   &rD   rÒ   ÚInverseCosineTransform.bO  r´  rF   rŒ   NrÇ  r£   s   @rD   rË  rË  ?  s%   ø‡ € ñð €EØ€Eò ÷ð rF   rË  c                ó:   € \        WV4      P                  ! R/ VB # )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   &&&,rD   Úinverse_cosine_transformrÑ  S  s    € ôH " !¨Ó*×/Ò/Ñ8°%Ñ8Ð8rF   c                óÎ  € \        V \        W2V,          4      ,          V,          V\        P                  \        P                  34      pVP                  \        4      '       g   \        We4      \        P                  3# VP                  '       g   \        W@R4      hVP                  ^ ,          w  rgVP                  \        4      '       d   \        W@R4      h\        We4      V3# )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:   rT   )rg   rú   rD  rO  rt   rŠ   ræ   rv   s   &&&&&&  rD   Ú_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Ð'Ð'rF   c                   óF   a € ] tR tRt o RtR tR tR t]R 4       t	Rt
V tR# )	ÚHankelTypeTransformi”  z#
Base class for Hankel transforms.
c                óŒ   € V P                   ! V P                  V P                  V P                  V P                  ^,          3/ VB # ©ra  )rk   r?   rY   r\   rT   )r@   rj   s   &,rD   r�   ÚHankelTypeTransform.doit™  sB   € Ø×&Ò& t§}¡}Ø'+×'=Ñ'=Ø'+×'>Ñ'>Ø'+§y¡y°¥|ñ0ð */ñ	0ð 	0rF   c                ó2   € \        WW4V P                  3/ VB # rc   )rÓ  r”   )r@   rg   rú   rD  rO  rj   s   &&&&&,rD   rk   Ú&HankelTypeTransform._compute_transform   s   € Ü   q¨d¯j©jÑB¸EÑBÐBrF   c                ó”   € \        V\        WCV,          4      ,          V,          V\        P                  \        P                  34      # rc   )r,   r'   r   r¸   r¹   )r@   rg   rú   rD  rO  s   &&&&&rD   rp   Ú HankelTypeTransform._as_integral£  s1   € Ü˜œ' "¨¥cÓ*Õ*¨1Õ,¨q´!·&±&¼!¿*¹*Ð.EÓFÐFrF   c                óˆ   € V P                  V P                  V P                  V P                  V P                  ^,          4      # r×  )rp   r?   rY   r\   rT   rU   s   &rD   rœ   ÚHankelTypeTransform.as_integral¦  s8   € à× Ñ  §¡Ø!%×!7Ñ!7Ø!%×!8Ñ!8Ø!%§¡¨1¥ó/ð 	/rF   rŒ   N)rG   rH   rI   rJ   rK   r�   rk   rp   r¢   rœ   rL   rM   r£   s   @rD   rÕ  rÕ  ”  s/   ø‡ € ñò0òCòGð ñ/ó ö/rF   rÕ  c                   ó   € ] tR tRtRtRtRtR# )Ú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©rG   rH   rI   rJ   rK   r”   rL   rŒ   rF   rD   rà  rà  ®  s   † ñð „ErF   rà  c                ó:   € \        WW#4      P                  ! R/ VB # )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�   )rg   rú   rD  rO  rj   s   &&&&,rD   Úhankel_transformrä  »  s    € ô\ ˜1 Ó'×,Ò,Ñ5¨uÑ5Ð5rF   c                   ó   € ] tR tRtRtRtRtR# )Ú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Œ   rF   rD   ræ  ræ  ì  s   † ñð „ErF   ræ  c                ó:   € \        WW#4      P                  ! R/ VB # )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æ   rD  rú   rO  rj   s   &&&&,rD   Úinverse_hankel_transformrè  ù  s    € ô\ " !¨Ó.×3Ò3Ñ<°eÑ<Ð<rF   )F)T)ˆrK   Ú	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.   r/   r0   r1   r2   Úsympy.polys.polyrootsr3   Úsympy.polys.polytoolsr4   r5   Úsympy.polys.rootoftoolsr6   Úsympy.utilities.iterablesr7   Úsympy.utilities.miscr8   re   r:   rQ   r«   r¶   Ú_nocondsrº   rç   ré   rô   rû   rL  rý   rE  rK  re  rX  rp  rt  rv  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Œ   rF   rD   Ú<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Ð Ø"×:Ò:Ð Ø$×>Ò>Ò rF   