
    \h;                   *   % S r SSKJr  SSK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  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  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/  SSK0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  SSK<J=r=J>r>J?r?  SSK@JArA  SSKBJCrCJDrDJErEJFrF  SSKGJHrH  SSKIJJrJJKrK  SSKLJMrMJNrNJOrOJPrP  SSKQJRrRJSrSJTrTJUrU  SSKVJWrWJXrX  SSKYJZrZJ[r[  SSK\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJereJfrfJgrg  SSKhJiri  SS KjJkrkJlrl  SS!KmJnrn  S"S#KoJprp  SS$KqJrrrJsrsJtrtJuruJvrv  SS%KwJxrxJyry  SS&KzJ{r{  SS'K|J}r~  SS(K|Jr  \(" S)5      rS* rS+ rSS,KJr  \" S-5      rSXS. jr " S/ S0\5      rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 rS: r0 rS;\S<'   S= rS> rS? rSYS@ jrSA rSZSB jrSC rSZSD jrSE rSZSF jrSG rSH rSI rSJ rSK rSq\\SYSL j5       5       rSYSM jrSN rSO rSP r\SQ 5       rSR rSS rST rSU r\SZSV j5       rSW rg)[a  
Integrate functions by rewriting them as Meijer G-functions.

There are three user-visible functions that can be used by other parts of the
sympy library to solve various integration problems:

- meijerint_indefinite
- meijerint_definite
- meijerint_inversion

They can be used to compute, respectively, indefinite integrals, definite
integrals over intervals of the real line, and inverse laplace-type integrals
(from c-I*oo to c+I*oo). See the respective docstrings for details.

The main references for this are:

[L] Luke, Y. L. (1969), The Special Functions and Their Approximations,
    Volume 1

[R] Kelly B. Roach.  Meijer G Function Representations.
    In: Proceedings of the 1997 International Symposium on Symbolic and
    Algebraic Computation, pages 205-211, New York, 1997. ACM.

[P] A. P. Prudnikov, Yu. A. Brychkov and O. I. Marichev (1990).
    Integrals and Series: More Special Functions, Vol. 3,.
    Gordon and Breach Science Publisher
    )annotationsN)SYMPY_DEBUG)SExpr)Add)Basic)cacheit)Tuple)factor_terms)expand
expand_mulexpand_power_baseexpand_trigFunction)Mul)ilcm)Rationalpi)EqNe_canonical_coeff)default_sort_keyordered)DummysymbolsWildSymbol)sympify)	factorial)reimargAbssign
unpolarifypolarify
polar_liftprincipal_branchunbranched_argumentperiodic_argument)exp	exp_polarlog)ceiling)coshsinh_rewrite_hyperbolics_as_expHyperbolicFunctionsqrt)	Piecewisepiecewise_fold)cossinsincTrigonometricFunction)besseljbesselybesselibesselk)
DiracDelta	Heaviside)
elliptic_k
elliptic_e)erferfcerfiEiexpintSiCiShiChifresnelsfresnelc)gamma)hypermeijerg)SingularityFunction   )Integral)AndOrBooleanAtomNotBooleanFunction)cancelfactor)multiset_partitions)debug)debugfzc                   ^ [        U 5      n [        U SS5      (       a  [        U4S jU R                   5       5      $ U R                  " T6 $ )Nis_PiecewiseFc              3  <   >#    U  H  n[        U/TQ76 v   M     g 7fN)_has).0ifs     Q/var/www/auris/envauris/lib/python3.13/site-packages/sympy/integrals/meijerint.py	<genexpr>_has.<locals>.<genexpr>T   s     114;A;s   )r6   getattrallargshas)resrf   s    `rg   rc   rc   O   sA     
CsNE**111177A;    c                  ^ ^^	^
^^^^^^^ S n[        [        US5      5      u  mmm	mn[        SS /S9mT[        T-  -  mT[        R
                  SS4U 4S jjm
SU 4S jjnS	 nT	U" T	5      SS4/T S
'    " S S[        5      nT
" [        TT-
  5      TT-
  T	S-
  -  -  T	// / S/TT-  [        T	5      TT	S-
  -  -  [        TS:  5      5        T
" [        TT-
  5      TT-
  T	S-
  -  -  / T	/S// TT-  [        T	5      TT	S-
  -  -  [        TS:  5      5        T
" [        [        TT-  ST-  -  -
  5      TT-
  T	S-
  -  -  T	// / S/TT-  [        T	5      TT	S-
  -  -  [        TS:  5      5        T
" [        TT-  ST-  -  [        -
  5      TT-
  T	S-
  -  -  / T	/S// TT-  [        T	5      TT	S-
  -  -  [        TS:  5      5        T
" TT-   T	* -  ST	-
  // S// TT-  TT	* -  [        T	5      -  [        U" T	5      5      S9  T
" [        TT-
  5      T	* -  ST	-
  /ST	-
  S-  /S/ST	-
  S-  /TT-  S[        [        T	-  S-  5      -  [        ST	-
  5      -  [        T5      T	* -  -  [        T	5      S:  5        T
" TT	-  TT	-  -
  TT-
  -  ST	// ST	// TT-  TT	S-
  -  [        T	[        -  5      -  [        -  5        S mUU	U
UU4S jnU" SS5        U" SS5        U" [        R                  S5        U" [        R                  S5        UU	U
UUU4S jnU" SS5        U" SS5        U" [        R                  S5        U" [        R                  S5        T
" [!        [#        S5      T-  5      / / S// 5        T
" [%        T5      / S/[        R                  /SS/TS-  S-  [        ['        SS5      -  5        T
" [)        T5      / [        R                  /S/[        R                  [        R                  /TS-  S-  [        ['        SS5      -  5        T
" [        T5      / / [        R                  /S/TS-  S-  [+        [        5      5        T
" [-        T5      / / S/[        R                  /TS-  S-  [+        [        5      5        T
" [/        T5      / / S/['        SS5      /TS-  S-  [+        [        5      S-  5        UU4S jmUU4S jmU" [1        T5      T-  [        ST-
  5      -  TS5        U" [1        T5      T-  [        TS-
  5      -  TS5        UU4S jnU" [1        T5      T-  US5        U" [1        TT	-   5      U" [1        T	5      5      [        R
                  [3        SS// S/S/TT	-  5      4/-   S5        U" [1        [        TT	-
  5      5      U" [1        [        T	5      5      5      [        [3        SS/[        R                  /S/S[        R                  /TT	-  5      4/-   S5        U" [5        T5      U" [        R6                  * [        -  5      [        R8                  [3        / S/SS// T[#        S5      -  5      4/-   S5        T
" [;        T5      S// [        R                  /SS/TS-  S-  [+        [        5      S-  5        T
" [=        T5      / S/SS/[        R                  /TS-  S-  [+        [        5      * S-  5        T
" [?        T5      [        R                  // S/['        SS5      ['        SS5      /[#        S5      TS-  -  S-  T[+        [        5      -  S-  5        T
" [A        T5      / [        R                  S/SS/[        R                  [        R                  /TS-  S-  [        [	        S5      -  * S-  5        T
" [C        T	T5      / T	/T	S-
  S// T5        T
" [E        T5      S// [        R                  /S/TS-  S[+        [        5      -  5        T
" [G        T5      / S/S[        R                  // TS-  S[+        [        5      -  5        T
" [I        T5      [        R                  // S/['        SS5      /TS-  * T[+        [        5      -  5        T
" [K        T5      S// ['        SS5      /S['        SS5      /[        S-  TS-  -  S-  [        R                  5        T
" [M        T5      S// ['        SS5      /S['        SS5      /[        S-  TS-  -  S-  [        R                  5        T
" [O        T	T5      / / T	S-  /T	* S-  /TS-  S-  5        T
" [Q        T	T5      / T	S-   * S-  /T	S-  T	* S-  /T	S-   * S-  /TS-  S-  5        T
" [S        T	T5      / ST	-   S-  /T	S-  /T	* S-  ST	-   S-  /TS-  S-  [        5        T
" [U        T	T5      / / T	S-  T	* S-  // TS-  S-  [        R                  5        T
" [W        T5      [        R                  [        R                  // S/S/T* [        R                  5        T
" [Y        T5      [        R                  S[        R                  -  // S/S/T* ['        SS5      S-  5        g)z7Add formulae for the function -> meijerg lookup table. c                     [        U [        /S9$ )Nexclude)r   r^   )ns    rg   wild"_create_lookup_table.<locals>.wildZ   s    As##ro   pqabcrt   c                2    U R                   =(       a    U S:  $ Nr   )
is_Integerxs    rg   <lambda>&_create_lookup_table.<locals>.<lambda>]   s    (>Q(>ro   )
propertiesTc	                   > T	R                  [        U [        5      / 5      R                  U U[	        XX4U5      4/Xx45        g rb   )
setdefault_mytyper^   appendrP   )
formulaanapbmbqr"   faccondhinttables
            rg   add!_create_lookup_table.<locals>.add`   sD    !,b188''*GBBC,H&I%JD:X 	Yro   c                h   > TR                  [        U [        5      / 5      R                  XX#45        g rb   )r   r   r^   r   )r   instr   r   r   s       rg   addi"_create_lookup_table.<locals>.addid   s,    GQ	%%+VWD,G%Hro   c           	     ^    U [        S// / S/[        5      4U [        / S/S// [        5      4/$ NrR   r   )rP   r^   )as    rg   constant&_create_lookup_table.<locals>.constanth   s>    GQCR!a01GBaS"a013 	3ro    c                  $    \ rS rSr\S 5       rSrg)2_create_lookup_table.<locals>.IsNonPositiveIntegern   c                B    [        U5      nUR                  SL a  US:*  $ g )NTr   )r%   rz   )clsr"   s     rg   eval7_create_lookup_table.<locals>.IsNonPositiveInteger.evalp   s%    S/C~~%ax &ro   r   N)__name__
__module____qualname____firstlineno__classmethodr   __static_attributes__r   ro   rg   IsNonPositiveIntegerr   n   s    		  
	 ro   r   rR   r   )r      c                N    [         [        SS5      -  U* U-  S-  SSU -  -
  -  -  $ )Nr   rR   )r   r   )rr$   nus      rg   A1 _create_lookup_table.<locals>.A1   s/    8B?"TE"HQJ!ac'#:::ro   c                   > T" [        TS-  T-   5      UT-  -   T-  TS-  T-   U -  -  ST-   S-  SSU -  -
  TS-  -   // TUT-  -
  S-  /TUT-  -   S-  /TTS-  -  TTSU -  -
  -  T" XT5      -  5        g )Nr   rR   r3   )r   sgnr   r   r   bts     rg   tmpadd$_create_lookup_table.<locals>.tmpadd   s    T!Q$(^c!e#a'AA5!eQYAaC!A#&#a%i]Oq3q5y!m_a1fAaCLAA&	(ro   r   c                F  > T" [        TT[        T-  -  -   5      U[        T5      -  [        TS-  -  -  -   T-  TT[        T-  -  -   U -  -  SU -
  UT-  S-  -   /SU -
  UT-  S-  -
  /S[        R                  // T[        T-  -  T-  TTS-  U -
  -  T" XT5      -  5        g )Nr   rR   r   )r4   r^   r   Half)r   r   r   r   r   r   pqs     rg   r   r      s    T!a1f*DGA!H 44q8!a1f*qHUSU1W_AAa01aff+radF1Ha!A#'l2aa=0	2ro         c                   > U T   n[         R                  U-  [        U5      -  [        / S/US-   -  S/US-   -  / T5      4/$ r   )r   NegativeOner   rP   subsNrt   r   s     rg   	make_log1'_create_lookup_table.<locals>.make_log1   sV    G!)A,.aS!a%[1#q1u+r1=? @ 	@ro   c           	     `   > U T   n[        U5      [        S/US-   -  / / S/US-   -  T5      4/$ r   )r   rP   r   s     rg   	make_log2'_create_lookup_table.<locals>.make_log2   sH    G1!a!eb"qc1q5k1=? @ 	@ro   c                &   > T" U 5      T" U 5      -   $ rb   r   )r   r   r   s    rg   	make_log3'_create_lookup_table.<locals>.make_log3   s    400ro   z3/2   NT)-listmapr   r^   r   Oner   r@   rN   rT   rW   r#   r8   r   r    r   r+   r'   r0   r   r/   r4   r7   r9   r-   rP   rF   ImaginaryUnitr   rH   rI   rJ   rK   rG   rC   rD   rE   rL   rM   r;   r<   r=   r>   rA   rB   )r   ru   cr   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   s   `       @@@@@@@@@@rg   _create_lookup_tabler   X   s	   $T7+,MAq!QS>?@A	!Q$A)*Dt YI3 Xa[$-.E"I x   	!a%!a%1q5))A3BQqSaQUSQZ)	!a%!a%1q5))2sQCQqSaQUSQZ)	!qsacl"#QUa!e$44qc2rA3!aQUSQZ)	1Q3!A#,"#QUa!e$44b1#sB!aQUSQZ)Q1"AwQCQqS!qb'%(2B%a()+AE
aR1q5'QUAI;q1uai[!A#	#bd1f+eAEl"3q6QB</A<A1q1u1vrAq62qs	AE
3qt9R!;( ( 1aL
1bM
1661
16622 2 1aL
1bM
1661
1662 JrN1r2sB/ QaS166(QFAqDFBA4FGQaffXsQVVQVV$4ad1fb(1a.>PQ AB1#q!tAvtBx8ABaffXq!tAvtBx8 QR!xA/Aab!D@
@ 	Q9QU#	#Y5Q9QU#	#Y51QIt$QU	#a&	aeeWaVR!qc1Q3%GHI	I	 	SQZ(3s1v;/w1vx!q!&&k1Q3?
@	AB	 	A	1??"2%	&1=='"qcAq6SUJrN";$ +% *& 
&	 1sB1a&!Q$q&$r(1*=1rA3A!Q$q&48)A+> A"qcHROXb!_#EzRT~VWYZVZGZ[\G\	$r(
1AQVVQK!Q!&&!&&)91a46
AeHDD  q!b1#Aqz2q1 AR!&&A31aRj9QaS1aff+r1a448< Q!&&2sXb!_$51uaRjI aS"x1~.HQN0CRU1a4ZPR]TUTZTZ[aS"x1~.HQN0CRU1a4ZPR]TUTZTZ[ 1r2!ur!tfad1f5 1ra!eHQJ<!A#r!tQxzlAqDFK6 1rQUAI;11q1uai/@!Q$q&"M 1r2!aRT{B1Q? 
1'aS1#r166B
1!&&)2sQC!Xb!_Q=NOro   )timethisrP   c                   ^ SS jnTU R                   ;  a  gU R                  (       a  [        U 5      4$ [        [	        U4S jU R
                   5       US95      $ )z3Create a hashable entity describing the type of f. c                "    U R                  5       $ rb   )	class_keyr{   s    rg   key_mytype.<locals>.key/  s    {{}ro   r   c              3  N   >#    U  H  n[        UT5        H  o"v   M     M     g 7frb   )r   )rd   r   r   r|   s      rg   rh   _mytype.<locals>.<genexpr>6  s     BFqGAqMqMFs   "%r   )r|   ztype[Basic]returnztuple[int, int, str])free_symbolsis_Functiontypetuplesortedrl   )rf   r|   r   s    ` rg   r   r   -  sG     		
AwxBAFFBLMMro   c                      \ rS rSrSrSrg)_CoeffExpValueErrori9  z<
Exception raised by _get_coeff_exp, for internal use only.
r   N)r   r   r   r   __doc__r   r   ro   rg   r   r   9  s     	ro   r   c                H   SSK Jn  [        U" U 5      5      R                  U5      u  p4U(       d  U[        R
                  4$ Uu  nUR                  (       a(  UR                  U:w  a  [        S5      eX4R                  4$ XA:X  a  U[        R                  4$ [        SU -  5      e)aP  
When expr is known to be of the form c*x**b, with c and/or b possibly 1,
return c, b.

Examples
========

>>> from sympy.abc import x, a, b
>>> from sympy.integrals.meijerint import _get_coeff_exp
>>> _get_coeff_exp(a*x**b, x)
(a, b)
>>> _get_coeff_exp(x, x)
(1, 1)
>>> _get_coeff_exp(2*x, x)
(2, 1)
>>> _get_coeff_exp(x**3, x)
(1, 3)
r   )powsimpzexpr not of form a*x**bzexpr not of form a*x**b: %s)sympy.simplifyr   r   as_coeff_mulr   Zerois_Powbaser   r+   r   )exprr|   r   r   ms        rg   _get_coeff_expr   @  s    & 'wt}-::1=FQ!&&y
CQxx66Q;%&?@@%%x	
!%%x!"?$"FGGro   c                :   ^ U4S jm[        5       nT" XU5        U$ )aS  
Find the exponents of ``x`` (not including zero) in ``expr``.

Examples
========

>>> from sympy.integrals.meijerint import _exponents
>>> from sympy.abc import x, y
>>> from sympy import sin
>>> _exponents(x, x)
{1}
>>> _exponents(x**2, x)
{2}
>>> _exponents(x**2 + x, x)
{1, 2}
>>> _exponents(x**3*sin(x + x**y) + 1/x, x)
{-1, 1, 3, y}
c                   > X:X  a  UR                  S/5        g U R                  (       a-  U R                  U:X  a  UR                  U R                  /5        g U R                   H  nT" X1U5        M     g NrR   )updater   r   r+   rl   )r   r|   rn   argument_exponents_s       rg   r   _exponents.<locals>._exponents_u  sV    9JJsO;;499>JJz"		HS) "ro   )set)r   r|   rn   r   s      @rg   
_exponentsr   b  s     &* %CJro   c                    U R                  [        5       Vs1 s H   o!UR                  ;   d  M  UR                  iM"     sn$ s  snf )zAFind the types of functions in expr, to estimate the complexity. )atomsr   r   func)r   r|   es      rg   
_functionsr     s4     JJx0H0q4GFAFF0HHHs
   AAc                   ^^^^ S Vs/ s H  n[        UT/S9PM     snu  mmUUUU4S jm[        5       nT" X5        U$ s  snf )a8  
Find numbers a such that a linear substitution x -> x + a would
(hopefully) simplify expr.

Examples
========

>>> from sympy.integrals.meijerint import _find_splitting_points as fsp
>>> from sympy import sin
>>> from sympy.abc import x
>>> fsp(x, x)
{0}
>>> fsp((x-1)**3, x)
{1}
>>> fsp(sin(x+3)*x, x)
{-3, 0}
pqrr   c                  > [        U [        5      (       d  g U R                  TT-  T-   5      nU(       a%  UT   S:w  a  UR                  UT   * UT   -  5        g U R                  (       a  g U R
                   H  nT" X15        M     g ry   )
isinstancer   matchr   is_Atomrl   )r   rn   r   r   compute_innermostr   r   r|   s       rg   r   1_find_splitting_points.<locals>.compute_innermost  ss    $%%JJqsQw1GGQqTE!A$J<<		Hh, "ro   )r   r   )r   r|   rt   	innermostr   r   r   s    `  @@@rg   _find_splitting_pointsr    sL    $ +//$QDQC $/DAq
- 
- Id& 0s   Ac           	     b   [         R                  n[         R                  n[         R                  n[        U 5      n [        R                  " U 5      nU H  nXa:X  a  X1-  nM  XR
                  ;  a  X&-  nM#  UR                  (       a  XR                  R
                  ;  a  UR                  R                  U5      u  pxX4:w  a&  [        UR                  5      R                  U5      u  pxX4:X  a5  X1UR                  -  -  nU[        [        XvR                  -  SS95      -  nM  XF-  nM     X#U4$ )aI  
Split expression ``f`` into fac, po, g, where fac is a constant factor,
po = x**s for some s independent of s, and g is "the rest".

Examples
========

>>> from sympy.integrals.meijerint import _split_mul
>>> from sympy import sin
>>> from sympy.abc import s, x
>>> _split_mul((3*x)**s*sin(x**2)*x, x)
(3**s, x*x**s, sin(x**2))
F)r   )r   r   r   r   	make_argsr   r   r+   r   r   r   r%   r&   )	rf   r|   r   pogrl   r   r   r   s	            rg   
_split_mulr    s     %%C	
B	A!A==D6GBnn$HCxxAUU%7%77vv**1-9%aff-::1=DA9QUU(NB:hq%%xe&DEECFA   A:ro   c                "   [         R                  " U 5      n/ nU Hp  nUR                  (       aK  UR                  R                  (       a0  UR                  nUR
                  nUS:  a  U* nSU-  nX%/U-  -  nM_  UR                  U5        Mr     U$ )z
Return a list ``L`` such that ``Mul(*L) == f``.

If ``f`` is not a ``Mul`` or ``Pow``, ``L=[f]``.
If ``f=g**n`` for an integer ``n``, ``L=[g]*n``.
If ``f`` is a ``Mul``, ``L`` comes from applying ``_mul_args`` to all factors of ``f``.
r   rR   )r   r  r   r+   rz   r   r   )rf   rl   gsr  rt   r   s         rg   	_mul_argsr
    s|     ==D	B88((A66D1uBv&(NBIIaL  Iro   c                    [        U 5      n[        U5      S:  a  g[        U5      S:X  a  [        U5      /$ [        US5       VVs/ s H  u  p#[	        U6 [	        U6 4PM     snn$ s  snnf )a_  
Find all the ways to split ``f`` into a product of two terms.
Return None on failure.

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

Although the order is canonical from multiset_partitions, this is
not necessarily the best order to process the terms. For example,
if the case of len(gs) == 2 is removed and multiset is allowed to
sort the terms, some tests fail.

Examples
========

>>> from sympy.integrals.meijerint import _mul_as_two_parts
>>> from sympy import sin, exp, ordered
>>> from sympy.abc import x
>>> list(ordered(_mul_as_two_parts(x*sin(x)*exp(x))))
[(x, exp(x)*sin(x)), (x*exp(x), sin(x)), (x*sin(x), exp(x))]
r   N)r
  lenr   r[   r   )rf   r	  r|   ys       rg   _mul_as_two_partsr    sb    . 
1B
2w{
2w!|b	{-@Q-GH-G6AS!Wc1g-GHHHs   A&c                   S n[        [        U R                  5      [        U R                  5      -
  5      nUSU R                  -   US-  -   -  nUS[
        -  US-
  U R                  -  -  -  nU[        U" U R                  U5      U" U R                  U5      U" U R                  U5      U" U R                  U5      U R                  U-  XU-  -  -  5      4$ )zFReturn C, h such that h is a G function of argument z**n and
g = C*h. c                    [         R                  " U [        U5      5       VVs/ s H  u  p#X#-   U-  PM     snn$ s  snnf )z4(a1, .., ak) -> (a1/n, (a1+1)/n, ..., (ak + n-1)/n) )	itertoolsproductrange)paramsrt   r   re   s       rg   inflate_inflate_g.<locals>.inflate  s5    &/&7&7a&IJ&Ida	&IJJJs   ;rR   r   )r   r  r   r   r   r   deltarP   r   aotherr   botherr   )r  rt   r  vCs        rg   
_inflate_gr  	  s    
K 	
#add)c!$$i
 A	AHqsNA!B$1q5!''/	""AggaddA&!(<addA&!(<jj!maA#h.0 0 0ro   c                    S n[        U" U R                  5      U" U R                  5      U" U R                  5      U" U R                  5      SU R
                  -  5      $ )zHTurn the G function into one of inverse argument
(i.e. G(1/x) -> G'(x)) c                8    U  Vs/ s H  nSU-
  PM
     sn$ s  snf r   r   )lr   s     rg   tr_flip_g.<locals>.tr  s     !q!Aq!!!   rR   )rP   r   r  r   r  r   )r  r   s     rg   _flip_gr#    sB    "2add8R\2add8R\1QZZ<PPro   c           	        US:  a  [        [        U 5      U* 5      $ [        UR                  5      n[        UR                  5      n[        X5      u  p@U R                  nUS[        -  SU-
  S-  -  U[        SS5      -  -  -  nXRU-  -  n[        U5       Vs/ s H
  ofS-   U-  PM     nnU[        U R                  U R                  U R                  [        U R                  5      U-   U5      4$ s  snf )a@  
Let d denote the integrand in the definition of the G function ``g``.
Consider the function H which is defined in the same way, but with
integrand d/Gamma(a*s) (contour conventions as usual).

If ``a`` is rational, the function H can be written as C*G, for a constant C
and a G-function G.

This function returns C, G.
r   r   rR   r   )_inflate_fox_hr#  r   r   r   r  r   r   r   r  rP   r   r  r   r   r  )r  r   r   r   Dr^   rt   bss           rg   r%  r%  "  s     	1ugaj1"--	!##A	!##A aDA	

A!B$1q5!)	QQ/	//AAIA"1X	&Xq5!)XB	&gaddAHHaddDNR,?CCC 
's   C1zdict[tuple[str, str], Dummy]_dummiesc                T    [        X40 UD6nXBR                  ;   a  [        U 40 UD6$ U$ )z
Return a dummy. This will return the same dummy if the same token+name is
requested more than once, and it is not already in expr.
This is for being cache-friendly.
)_dummy_r   r   )nametokenr   kwargsds        rg   _dummyr/  ?  s4     	&v&AT$V$$Hro   c                T    X4[         ;  a  [        U 40 UD6[         X4'   [         X4   $ )zT
Return a dummy associated to name and token. Same effect as declaring
it globally.
)r(  r   )r+  r,  r-  s      rg   r*  r*  K  s1    
 =H$"'"7"7$TM""ro   c                h   ^ [        U4S jU R                  [        [        5       5       5      (       + $ )zCheck if f(x), when expressed using G functions on the positive reals,
will in fact agree with the G functions almost everywhere c              3  B   >#    U  H  nTUR                   ;   v   M     g 7frb   )r   rd   r   r|   s     rg   rh   _is_analytic.<locals>.<genexpr>X  s     N6Md1)))6M   )anyr   r@   r#   )rf   r|   s    `rg   _is_analyticr7  U  s$     Naggi6MNNNNro   c                ^  ^^ U(       a  U R                  S [        5      n Sn[        U [        5      (       d  U $ [	        S[
        S9u  mmn[        TT:  [        TT5      5      TT:*  4[        [        [        T5      5      [        :*  [        [        T5      S[        -  -
  5      [        :*  5      [        [        T5      [        -
  S5      4[        [        S[        T5      -  [        -   5      [        :*  [        S[        T5      -  [        -
  5      [        :*  5      [        [        T5      S5      4[        [        S[        T5      -  [        -   5      [        :  [        S[        T5      -  [        -
  5      [        :*  5      [        R                  4[        [        [        T5      [        S-  -
  5      [        S-  :*  [        [        T5      [        S-  -   5      [        S-  :*  5      [        [        T5      S5      4[        [        [        T5      [        S-  -
  5      [        S-  :*  [        [        T5      [        S-  -   5      [        S-  :  5      [        R                  4[        [        [        TS-  S-  S-   5      5      [        :  [        [        [        TS-  S-  S-   5      5      [        5      5      [        R                  4[        [        [        TS-  S-  S-   5      5      [        :  [        STS-  S-  S-   -  S5      5      [        R                  4[        [        [!        T5      5      [        :*  [        [!        [#        S[        -  [        R$                  -  5      T-  5      5      [        :*  5      [        [!        [#        [        R$                  * [        -  5      T-  5      S5      4[        [        [!        T5      5      [        S-  :*  [        [!        [#        [        * [        R$                  -  5      T-  5      5      [        S-  :*  5      [        [!        [#        [        R$                  * [        -  S-  5      T-  5      S5      4[        TT:*  [        TT:  U5      5      TT:*  4[        TS-  S5      TS-  S:  -  TS-  S:  4[        ST-  S5      ['        [        [        T5      5      5      [        T5      -  S:  -  [        T5      S:  4[        TS5      ['        [        [        T5      5      5      [        T5      -  S:  -  [        T5      S:  4[        [        T5      5      [        S-  :  ['        [        [        T5      5      5      [)        [        TS-  5      5      -  S:  -  TS-  S:  4/nU R*                  " U R,                   Vs/ s H  n[/        XA5      PM     sn6 n S	nU(       Ga  Sn[1        U5       GH  u  nu  pxUR*                  U R*                  :w  a  M%  [1        U R,                  5       GHP  u  pX'R,                  S   R2                  ;   a!  U
R5                  UR,                  S   5      nSnO SnU
R5                  UR,                  S   5      nU(       d  Ml  UR,                  S
U UR,                  US-   S
 -    Vs/ s H  oR7                  U5      PM     nnU	/nU GH  n[1        U R,                  5       H  u  nnUU;   a  M  UU:X  a	  UU/-  n  M6  [        U[        5      (       aN  UR,                  S   U:X  a;  [        U[        5      (       a&  UR,                  S   UR,                  ;   a	  UU/-  n  M  [        U[        5      (       d  M  UR,                  S   U:X  d  M  [        U[        5      (       d  M  UR,                  S   UR,                  ;   d  M  UU/-  n  GM     GM
     [9        U5      [9        U5      S-   :w  a  GM  [1        U R,                  5       VVs/ s H  u  nnUU;  d  M  UPM     snnUR7                  U5      /-   n[:        (       a  US;  a  [=        SU5        U R*                  " U6 n S	n  GM     GM     U(       a  GM  UU4S jnU R                  S U5      n [:        (       a  [=        SU 5        U $ s  snf s  snf s  snnf )az  
Do naive simplifications on ``cond``.

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

Note that this routine is completely ad-hoc, simplification rules being
added as need arises rather than following any logical pattern.

Examples
========

>>> from sympy.integrals.meijerint import _condsimp as simp
>>> from sympy import Or, Eq
>>> from sympy.abc import x, y
>>> simp(Or(x < y, Eq(x, y)))
x <= y
c                    U R                   $ rb   is_Relational_s    rg   r}   _condsimp.<locals>.<lambda>o  s    aooro   Fzp q r)r   r   r   rR   TN)
r   r   r                        zused new rule:c                  > U R                   S:w  d  U R                  S:w  a  U $ U R                  nUR                  [	        T5      T-  5      nU(       d&  UR                  [        [        T5      T-  5      5      nU(       dg  [        U[        5      (       aP  UR                  S   R                  (       d2  UR                  S   [        R                  L a  UR                  S   S:  $ U $ UT   S:  $ )Nz==r   rR   )rel_oprhslhsr   r"   r)   r'   r   r*   rl   is_polarr   Infinity)relLHSr   r   r   s      rg   rel_touchup_condsimp.<locals>.rel_touchup  s    ::AJ ggIIc!fai 		-jmQ.>?@A#011#((1+:N:Nqzz1a(J!qro   c                    U R                   $ rb   r:  r<  s    rg   r}   r>    s    !//ro   z_condsimp: )replacer   r   rX   r   r   rU   r   rT   r#   r"   r   r   falser   truer)   r,   r   r7   r4   r   rl   	_condsimp	enumerater   r   r   r  r   print)r   firstr   rulesr=  changeirulefrotort   arg1r   numr|   	otherargs	otherlistarg2karg3arg_newargsrO  r   r   s                         @@rg   rU  rU  [  s   & ||57GHdO,,g4(GAq!
 
AE2a8	a1f% 
SQ[BCFQrTM 2b 8	9	CFRK			S3q6B2%s1SV8b='9R'?	@	CFA		S3q6B"$c!CF(R-&8B&>	?	
		SQ"Q$2a4'SVbd]);r!t)C	D	CFA		SQ"Q$2a4'SVbd]);bd)B	C	
		SQT!VaZ!B&3s1a46A:+?(D	E	
		CAqDFQJ 2%r!QT!VaZ.!'<	=	
		S$Q'(B."9RU1??-B#CA#EFG2M
O		1??*:2*= >q @A1	E	G 
S$Q'(BqD0"9bS-@#A!#CDEAM
O		1??*:2*=a*? @ BCQ	G	I 
AFCAqM	"AF+	AqD!1q	!1a4!8,	AaCs3s1v;'A.2	3SVaZ@	AqSSV%c!f,q0	13q6A:>
c!f+1
SQ[!1$s1a4y/!AA!E	F1qQ9E< 99DII>Iqy*I>?DF
 )% 0E9Cxx499$$TYY/000

388A;/ACC

388A;/A03##PQ'(AS0ST0S1VVAY0S	TC	%D#,TYY#74	>$4<%!,I!%dC00TYYq\Q5F *4 5 5$))A,$)):S%!,I!%dC00TYYq\Q5F *4 5 5$))A,$)):S%!,I! $8 & y>S^a%771:4991E 21EIQy0  1E 257WWQZLA;$FF.6yy'*G 0 !1 &V <<1;?D{mT"K ?  U&2s   bb$;b)
b)
c                b    [        U [        5      (       a  U $ [        U R                  5       5      $ )zRe-evaluate the conditions. )r   boolrU  doit)r   s    rg   
_eval_condrj    s%    $TYY[!!ro   c                X    [        X5      nU(       d  UR                  [         S 5      nU$ )zBring expr nearer to its principal branch by removing superfluous
factors.
This function does *not* guarantee to yield the principal branch,
to avoid introducing opaque principal_branch() objects,
unless full_pb=True. c                    U $ rb   r   )r|   r  s     rg   r}   &_my_principal_branch.<locals>.<lambda>  s    ro   )r(   rR  )r   periodfull_pbrn   s       rg   _my_principal_branchrp    s'     4
(Ckk*N;Jro   c           	     x  ^	^
 [        X5      u  nm
[        UR                  U5      u  nm	UR                  5       n[        XV5      nU [	        T	5      UT
S-   T	-  S-
  -  -  -  nU	U
4S jnU[        U" UR                  5      U" UR                  5      U" UR                  5      U" UR                  5      XS-  5      4$ )z
Rewrite the integral fac*po*g dx, from zero to infinity, as
integral fac*G, where G has argument a*x. Note po=x**s.
Return fac, G.
rR   c                J   > U  Vs/ s H  oST-   T-  -   S-
  PM     sn$ s  snf r   r   )r  r   r   ss     rg   r   _rewrite_saxena_1.<locals>.tr  s*    +,-1aQUAI!1---s    )
r   r   
get_periodrp  r#   rP   r   r  r   r  )r   r  r  r|   r=  r   rn  r  r   r   rs  s            @@rg   _rewrite_saxena_1rv    s     " DAq!**a(DAq\\^FQ'A 	SVAQ	A&&'A.gbh188bh188c  ro   c                
   U R                   n[        U R                  U5      u  pE[        [	        U R
                  5      [	        U R                  5      [	        U R                  5      [	        U R                  5      /5      u  pgpX:  a^  S n
[        [        U
" U R
                  5      U
" U R                  5      U
" U R                  5      U
" U R                  5      X-  5      U5      $ U R
                   Vs/ s H  n[        U5      * S:  PM     snU R                   Vs/ s H  nSS[        U5      -
  :  PM     sn-   n[        U6 nXR                   Vs/ s H  n[        U5      * S:  PM     sn-  nXR                   Vs/ s H  nSS[        U5      -
  :  PM     sn-  n[        U6 n[        U R                  5      * U	S-   U-
  S-  -   X-
  :  nS nS nU" S5        U" SX4XgX45        U" S[!        U R                  5      [!        U R                  5      45        U" S	[!        U R
                  5      [!        U R                  5      45        U" S
XU45        / n/ nSU:*  X:  SU:*  /nSU:*  SU:*  [#        XS-   5      [%        [        [#        US5      [#        XhS-   5      5      5      /nSU:*  [#        X5      /n['        [)        US-  5      S-   5       H2  nU[+        [-        [/        U5      5      USU-  -
  [0        -  5      /-  nM4     US:  [-        [/        U5      5      U[0        -  :  /n[+        US5      U/nU(       a  / nUUU4 H  nU[        UU-   U-   6 /-  nM     UU-  nU" SU5        U/nU(       a  / n[        [#        US5      US-   U:*  Xi:*  [-        [/        U5      5      U[0        -  :  /UQ76 /nUU-  nU" SU5        UU/nU(       a  / n[        X:  SU:*  US:  [#        [-        [/        U5      5      U[0        -  5      /UQ76 /nU[        XS-
  :*  [#        US5      [#        [-        [/        U5      5      S5      /UQ76 /-  nUU-  nU" SU5        / nU[#        X5      [#        US5      [#        [/        U5      S5      [+        US5      /-  nU(       d  UU/-  n/ n[3        U R                  U R                  5       H  u  pUX-
  /-  nM     U[        [5        U6 5      S:  /-  n[        U6 nUU/-  nU" SU/5        [        US:  [-        [/        U5      5      U[0        -  :  5      /nU(       d  UU/-  n[        U6 nUU/-  nU" SU/5        [7        U6 $ s  snf s  snf s  snf s  snf )a:  
Return a condition under which the mellin transform of g exists.
Any power of x has already been absorbed into the G function,
so this is just $\int_0^\infty g\, dx$.

See [L, section 5.6.1]. (Note that s=1.)

If ``helper`` is True, only check if the MT exists at infinity, i.e. if
$\int_1^\infty g\, dx$ exists.
c                8    U  Vs/ s H  nSU-
  PM
     sn$ s  snf r   r   r  r|   s     rg   r    _check_antecedents_1.<locals>.tr  s    #$%1aAE1%%%r"  rR   r   c                     [        U 6   g rb   )_debug)msgs    rg   r\   #_check_antecedents_1.<locals>.debug"  s	    ro   c                    [        X5        g rb   _debugf)stringr"   s     rg   r]   $_check_antecedents_1.<locals>.debugf%  s
    ro   z$Checking antecedents for 1 function:z*  delta=%s, eta=%s, m=%s, n=%s, p=%s, q=%sz  ap = %s, %sz  bq = %s, %sz"  cond_3=%s, cond_3*=%s, cond_4=%sr   z	  case 1:z	  case 2:z	  case 3:z  extra case:z  second extra case:)r  r   r   r   r  r   r   r   r   _check_antecedents_1rP   r  r  r    rT   r   r   r   rW   r  r.   r   r#   r)   r   zipr   rU   ) r  r|   helperr  etar=  r   rt   r   r   r   r   r   tmpcond_3cond_3_starcond_4r\   r]   condscase1tmp1tmp2tmp3rc  extrar   case2case3
case_extrars  case_extra_2s                                    rg   r  r    sG    GGEAJJ*FCCIs144y#add)SY?@JA!u	&#GBqttHbl,.qttHblAE%K$%' 	'  !tt
$t!BqE6A:t
$qtt'Dt!A1It'D
DC#YF)1RUFQJ))C88,8aABqE	M8,,Cs)K!$$xi1q519a-'!%/F 

01
7a#%
?T!$$Zahh89
?T!$$Zahh89
/&v1NOE EFAE16"DFAFBqa%L#c"Q(Bqa%L.I*JKDFBqHD757#a'(C+C01EAaCK3CDEE )19c-c23eBh>
?CQZ ED$#C%)**  	UNE	+u HEAq1q5A:qv(-.r9C<AC DE	UNE	+u VEQ	2c2Ec2J.KUSUX+V  E	c!1u*blBs3Fs3K/La,PYSXYZZE	UNE	+u J2a8Rq\2.A#.F+JBsTUJWWJvh

AADD!$$	aeW  2c1g;?##Jj!J	j\E	/J<(	3':3'?#@58#KLML %L	l^E	
 <.1
 u:m %'D *,s   4UU!U&?U+c                   SSK Jn  [        U R                  U5      u  p4SU-  nU R                   H  nU[        US-   5      -  nM     U R                   H  nU[        SU-
  S-
  5      -  nM     U R                   H  nU[        SU-
  S-
  5      -  nM     U R                   H  nU[        US-   5      -  nM     U" [        U5      5      $ )a[  
Evaluate $\int_0^\infty g\, dx$ using G functions,
assuming the necessary conditions are fulfilled.

Examples
========

>>> from sympy.abc import a, b, c, d, x, y
>>> from sympy import meijerg
>>> from sympy.integrals.meijerint import _int0oo_1
>>> _int0oo_1(meijerg([a], [b], [c], [d], x*y), x)
gamma(-a)*gamma(c + 1)/(y*gamma(-d)*gamma(b + 1))
r   )	gammasimprR   )
r   r  r   r   r   rN   r   r  r  r%   )r  r|   r  r  r=  rn   r   r   s           rg   	_int0oo_1r  r  s     )AJJ*FC
C%CTTuQU| TTuQUQY XXuQUQY XXuQU| Z_%%ro   c                  ^^^ UU4S jn[        UT5      u  px[        UR                  T5      u  py[        UR                  T5      u  pzU	S:  S:X  a  U	* n	[        U5      nU
S:  S:X  a  U
* n
[        U5      nU	R                  (       a  U
R                  (       d  gU	R                  U	R
                  pU
R                  U
R
                  p[        X-  X-  5      nXU-  -  nXU-  -  n[        UU5      u  nn[        UU5      u  nnU" U5      nU" U5      nU UU-  -  n [        UR                  T5      u  nn[        UR                  T5      u  nnUS-   U-  S-
  mU [        U5      UT-  -  -  n U4S jn[        U" UR                  5      U" UR                  5      U" UR                  5      U" UR                  5      UT-  5      n[        UR                  UR                  UR                  UR                  UT-  5      nSSKJn  U" U SS9X#4$ )	a  
Rewrite the integral ``fac*po*g1*g2`` from 0 to oo in terms of G
functions with argument ``c*x``.

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

Return C, f1, f2 such that integral C f1 f2 from 0 to infinity equals
integral fac ``po``, ``g1``, ``g2`` from 0 to infinity.

Examples
========

>>> from sympy.integrals.meijerint import _rewrite_saxena
>>> from sympy.abc import s, t, m
>>> from sympy import meijerg
>>> g1 = meijerg([], [], [0], [], s*t)
>>> g2 = meijerg([], [], [m/2], [-m/2], t**2/4)
>>> r = _rewrite_saxena(1, t**0, g1, g2, t)
>>> r[0]
s/(4*sqrt(pi))
>>> r[1]
meijerg(((), ()), ((-1/2, 0), ()), s**2*t/4)
>>> r[2]
meijerg(((), ()), ((m/2,), (-m/2,)), t/4)
c                   > [        U R                  T5      u  pU R                  5       n[        U R                  U R
                  U R                  U R                  [        XT5      TU-  -  5      $ rb   )	r   r   ru  rP   r   r  r   r  rp  )r  r   r   perro  r|   s       rg   pb_rewrite_saxena.<locals>.pb  sZ    ajj!,llnqttQXXqttQXX+AG<QTAC 	Cro   r   TNrR   c                8   > U  Vs/ s H  oT-   PM	     sn$ s  snf rb   r   )r  r   r+   s     rg   r   _rewrite_saxena.<locals>.tr  s    !"#AC###   	powdenestpolar)r   r   r#  is_Rationalr   r   r   r  r#   rP   r   r  r   r  r   r  )r   r  g1g2r|   ro  r  r=  rs  b1b2m1n1m2n2taur1r2C1C2a1r   a2r   r  r+   s       ``                   @rg   _rewrite_saxenar    s   6C "a DA2;;*EA2;;*EA
Q4SR[
Q4SR[>>TT244TT244
rube
C	"uB	"uBBFBBFB	BB	BB2b5LC2;;*EB2;;*EB q5!)a-C
s1vC
 C$	BEEBryyM2bee9bmRT	JB			255"))RT	:B(S%r--ro   c                .  ^ ^^.^/^0^1^2^3^4^5^6 [        T R                  U5      u  m3n[        TR                  U5      u  m/n[        [        T R                  5      [        T R
                  5      [        T R                  5      [        T R                  5      /5      u  pEm5m6[        [        TR                  5      [        TR
                  5      [        TR                  5      [        TR                  5      /5      u  pgm0m2XE-   T5T6-   S-  -
  nXg-   T0T2-   S-  -
  n	T R                  T5T6-
  S-  -   S-   n
TR                  T0T2-
  S-  -   S-   nT2T0-
  T6T5-
  -
  nST6T5-
  -
  U-
  U
-
  n[        T2U-
  U-
  -  [        [        T/5      5      -   T2T0-
  -  m1[        T6U-
  U-
  -  [        [        T35      5      -   T6T5-
  -  m4[        S5        [        ST3XET5T6X45        [        ST/XgT0T2X45        [        SXT1T445        U U4S jnU" 5       n[        T R                   VVs/ s H+  nTR                    H  n[        SU-   U-   5      S:  PM     M-     snn6 n[        T R
                   VVs/ s H+  nTR
                    H  n[        SU-   U-   5      S:  PM     M-     snn6 n[        T R
                   Vs/ s H3  nT0T2-
  [        SU-   S-
  5      -  [        U5      -
  [!        S	S5      :  PM5     sn6 n[        T R                   Vs/ s H0  nT0T2-
  [        SU-   5      -  [        U5      -
  [!        S	S5      :  PM2     sn6 n[        TR
                   Vs/ s H3  nT5T6-
  [        SU-   S-
  5      -  [        U
5      -
  [!        S	S5      :  PM5     sn6 n[        TR                   Vs/ s H0  nT5T6-
  [        SU-   5      -  [        U
5      -
  [!        S	S5      :  PM2     sn6 n[        U5      S[        U
S-
  T2T0-
  -  T6T5-
  T2T0-
  -  -   US-
  T6T5-
  -  -   5      -  -   S:  n[        U5      S[        U
S-
  T2T0-
  -  T6T5-
  T2T0-
  -  -   US-
  T6T5-
  -  -   5      -  -
  S:  n[        [        T35      5      U[        -  :  n[#        [        [        T35      5      U[        -  5      n[        [        T/5      5      U	[        -  :  n[#        [        [        T/5      5      U	[        -  5      n[%        X-   * [        -  [        R&                  -  5      n[)        UT/-  T3-  5      n[)        UT3-  T/-  5      n USU -  :X  aZ  [        [#        US5      X-   S:*  [+        [-        US5      [        X-   T6-   T5-
  5      S:  [        X-   T2-   T0-
  5      S:  5      5      n!OS
 n"[        [#        US5      US-
  U	-   S:*  [+        [        [-        US5      U"" U5      5      [        [        X-   T6-   T5-
  5      S:  [#        US5      5      5      5      n![        [#        US5      U	S-
  U-   S:*  [+        [        [-        U S5      U"" U 5      5      [        [        X-   T2-   T0-
  5      S:  [#        U S5      5      5      5      n#[+        U!U#5      n!  T2T0-
  [        T/5      ST2T0-
  -  -  -  [/        T15      -  T6T5-
  [        T35      ST6T5-
  -  -  -  [/        T45      -  -   n$[1        U$S:  5      S:w  a  U$S:  n%GOU/U0U1U2U3U4U5U64S jn&[3        U&" SS5      U&" SS5      -  [        [#        [        T35      S5      [#        [        T/5      S5      5      4U&" [5        [        T/5      5      S5      U&" [5        [        T/5      5      S5      -  [        [#        [        T35      S5      [-        [        T/5      S5      5      4U&" S[5        [        T35      5      5      U&" S[5        [        T35      5      5      -  [        [-        [        T35      S5      [#        [        T/5      S5      5      4U&" [5        [        T/5      5      [5        [        T35      5      5      S45      n'U$S:  [        [#        U$S5      [-        U'S5      [        U5      S:  5      [        [#        U$S5      [#        U'S5      [        U5      S:  5      /n([+        U(6 n% US4US4US4US4US4US4US4US4US4US4US4US4US4U!S4U%S44 H  u  n)n[        SUU)45        M     / m.U.4S jn*T.[        Xg-  U-  U-  S:g  UR8                  SL U	R8                  SL UUUUU5      /-  m.U*" S5        T.[        [#        T5T65      [#        US5      U	R8                  SL T3R8                  SL [        U
5      S:  UUUU5	      /-  m.U*" S5        T.[        [#        T0T25      [#        U	S5      UR8                  SL T/R8                  SL [        U5      S:  UUUU5	      /-  m.U*" S5        T.[        [#        T0T25      [#        T5T65      [#        US5      [#        U	S5      T3R8                  SL T/R8                  SL [        U5      S:  [        U
5      S:  [-        T3T/5      UUU5      /-  m.U*" S5        T.[        [#        T0T25      [#        T5T65      [#        US5      [#        U	S5      T3R8                  SL T/R8                  SL [        X-   5      S:  [-        T/T35      UUU5      /-  m.U*" S5        T.[        T0T2:  UR8                  SL UR8                  SL U	S:  UUUUUU5
      /-  m.U*" S5        T.[        T0T2:  UR8                  SL UR8                  SL U	S:  UUUUUU5
      /-  m.U*" S5        T.[        T5T6:  UR8                  SL U	R8                  SL US:  UUUUUU5
      /-  m.U*" S5        T.[        T5T6:  UR8                  SL U	R8                  SL US:  UUUUUU5
      /-  m.U*" S5        T.[        T0T2:  [#        T5T65      [#        US5      U	S:  T3R8                  SL [        U
5      S:  UUUUU5      /-  m.U*" S5        T.[        T0T2:  [#        T5T65      [#        US5      U	S:  T3R8                  SL [        U
5      S:  UUUUU5      /-  m.U*" S5        T.[        [#        T0T25      T5T6:  US:  [#        U	S5      T/R8                  SL [        U5      S:  UUUUU5      /-  m.U*" S5        T.[        [#        T0T25      T5T6:  US:  [#        U	S5      T/R8                  SL [        U5      S:  UUUUU5      /-  m.U*" S5        T.[        T0T2:  T5T6:  US:  U	S:  UUUUUUU5      /-  m.U*" S5        T.[        T0T2:  T5T6:  US:  U	S:  UUUUUUU5      /-  m.U*" S5        T.[        T0T2:  T5T6:  US:  U	S:  UUUUUUUUU!5      /-  m.U*" S5        T.[        T0T2:  T5T6:  US:  U	S:  UUUUUUUUU!5      /-  m.U*" S5        T.[        [#        US5      UR8                  SL UR8                  SL UR8                  SL UUU5      /-  m.U*" S 5        T.[        [#        US5      UR8                  SL UR8                  SL UR:                  SL UUU5      /-  m.U*" S!5        T.[        [#        US5      UR8                  SL U	R8                  SL UR:                  SL UUU5      /-  m.U*" S"5        T.[        [#        US5      UR8                  SL U	R8                  SL UR8                  SL UUU5      /-  m.U*" S#5        T.[        [#        XE-  S5      UR8                  SL U	R8                  SL UUUUU5      /-  m.U*" S$5        T.[        [#        Xg-  S5      UR8                  SL U	R8                  SL UUUUU5      /-  m.U*" S%5        [=        T USS&9n+[=        TUSS&9n,T.[        U,[#        US5      T5U:  UR8                  SL UUUU5      /-  m.U*" S'5        T.[        U,[#        US5      T6U:  UR8                  SL UUUU5      /-  m.U*" S(5        T.[        U+[#        US5      T0U:  U	R8                  SL UUUU5      /-  m.U*" S)5        T.[        U+[#        US5      T2U:  U	R8                  SL UUUU5      /-  m.U*" S*5        [+        T.6 n-[1        U-5      S:w  a  U-$ T.[        Xg-   T0:  [#        US5      [#        US5      UR8                  SL UR8                  SL U	R:                  SL [        [        T/5      5      Xg-   T0-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S+5        T.[        Xg-   T2:  [#        US5      [#        US5      UR8                  SL UR8                  SL U	R:                  SL [        [        T/5      5      Xg-   T2-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S,5        T.[        [#        T0T2S-
  5      [#        US5      [#        US5      UR8                  SL UR8                  SL U	S:  U	[        -  [        [        T/5      5      :  UUUU!U%5      /-  m.U*" S-5        T.[        [#        T0T2S-   5      [#        US5      [#        US5      UR8                  SL UR8                  SL U	S:  U	[        -  [        [        T/5      5      :  UUUU!U%5      /-  m.U*" S.5        T.[        T0T2S-
  :  [#        US5      [#        US5      UR8                  SL UR8                  SL U	S:  U	[        -  [        [        T/5      5      :  [        [        T/5      5      Xg-   T0-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S/5        T.[        T0T2S-   :  [#        US5      [#        US5      UR8                  SL UR8                  SL U	S:  U	[        -  [        [        T/5      5      :  [        [        T/5      5      Xg-   T2-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S05        T.[        [#        US5      [#        US5      XE-   S:  UR8                  SL U	R8                  SL UR:                  SL [        [        T35      5      XE-   T5-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S15        T.[        [#        US5      [#        US5      XE-   T6:  UR8                  SL U	R8                  SL UR:                  SL [        [        T35      5      XE-   T6-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S25        T.[        [#        US5      [#        US5      [#        T5T6S-
  5      UR8                  SL U	R8                  SL US:  U[        -  [        [        T35      5      :  [        [        T35      5      US-   [        -  :  UUUU!U%5      /-  m.U*" S35        T.[        [#        US5      [#        US5      [#        T5T6S-   5      UR8                  SL U	R8                  SL US:  U[        -  [        [        T35      5      :  [        [        T35      5      US-   [        -  :  UUUU!U%5      /-  m.U*" S45        T.[        [#        US5      [#        US5      T5T6S-
  :  UR8                  SL U	R8                  SL US:  U[        -  [        [        T35      5      :  [        [        T35      5      XE-   T5-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S55        T.[        [#        US5      [#        US5      T5T6S-   :  UR8                  SL U	R8                  SL US:  U[        -  [        [        T35      5      :  [        [        T35      5      XE-   T6-
  S-   [        -  :  UUUU!U%5      /-  m.U*" S65        [+        T.6 $ s  snnf s  snnf s  snf s  snf s  snf s  snf ! [6         a    Sn% GNf = f)7z=Return a condition under which the integral theorem applies. r   rR   zChecking antecedents:z1  sigma=%s, s=%s, t=%s, u=%s, v=%s, b*=%s, rho=%sz1  omega=%s, m=%s, n=%s, p=%s, q=%s, c*=%s, mu=%s,z"  phi=%s, eta=%s, psi=%s, theta=%sc                    > TT4 Hb  n [         R                  " U R                  U R                  5       H0  u  pX-
  nUR                  (       d  M  UR
                  (       d  M/      g   Md     g)NFT)r  r  r   r   
is_integeris_positive)r  re   jdiffr  r  s       rg   _c1_check_antecedents.<locals>._c1  sU    bA!))!$$5u???t'7'7'7  6 
 ro   r   c                V    U S:g  =(       a    [        [        SU -
  5      5      [        :  $ )aw  Returns True if abs(arg(1-z)) < pi, avoiding arg(0).

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

If ``z`` is 1 then arg is NaN. This raises a
TypeError on `NaN < pi`. Previously this gave `False` so
this behavior has been hardcoded here but someone should
check if this NaN is more serious! This NaN is triggered by
test_meijerint() in test_meijerint.py:
`meijerint_definite(exp(x), x, 0, I)`
rR   )r#   r"   r   )r^   s    rg   _cond!_check_antecedents.<locals>._cond$  s$     62c#a!e*o22ro   Fc                   > U TT-
  -  [        T5      STT-
  -  -  -  [        T5      -  UT	T-
  -  [        T5      ST	T-
  -  -  -  [        T5      -  -   $ r   )r#   r8   )
c1c2omegar   psir   sigmathetaur  s
     rg   	lambda_s0%_check_antecedents.<locals>.lambda_s0S  sc    1q5z#e*q!a%y"99#c(B!a%jUaQi!88UCD Dro   r   Tr   r   r@  rA  rB     	   
   rC  rD  rE  rF     z	  c%s: %sc                (   > [        SU TS   45        g )Nz  case %s: %sr   r  )countr  s    rg   pr_check_antecedents.<locals>.prl  s    %r!34ro   r                        )r  E1E2E3E4                            !   "   #   )r   r   r   r  r   r   r   r   r   r   r#   r)   r|  r  rT   r    r   r   r+   r   r%   rU   r   r7   rj  r5   r$   	TypeErrorr  is_negativer  )7r  r  r|   r=  rs  r   r   rt   bstarcstarrhomuphir  r  r  re   r  r  c3c4c5c6c7c8c9c10c11c12c13z0zoszsoc14r  c14_altlambda_cc15r  lambda_sr  r   r  
mt1_exists
mt2_existsr   r  r  r   r  r   r  r  r  r  s7   ``                                            @@@@@@@@@rg   _check_antecedentsr    sz    bkk1-HE1bkk1-HE1CJBEE
CJBEE
CDJA!QCJBEE
CJBEE
CDJA!QEQUAIEEQUAIE
%%1q5!)
a
C	!a%	Q	B
a%1q5/C
q1u+
S
 Cq1uqy>C 3E :;;a!e
DCQ^c"5e"<==AFE
"#?A!Q+-?A!Q*,03S%2HI 
B	"%%?%QAr!a%!)}q  %?	@B	beeCeRUUr!a%!)}u$U$eC	DB	OAAr!a%!)}$r"v-Q?O	PB	RUUKUAr!a%y 2b6)HRO;UK	LB	"%%P%QAr!a%!)}$r#w."a@%P	QB	beeLeAr!a%y 2c7*Xb!_<eL	MB
c(Qr37QU+q1uq1uo=
B!eA    B
c(Qr37QU+q1uq1uo=
B!eA    B"5)*U2X5C
S$U+,eBh
7C"5)*U2X5C
S$U+,eBh
7C 
u}b 0	1B
RXe^
$C
RXe^
$C
ae|"S!*emq0RQZBHqL1$4!5!91q()A-/0	3 "S!*eai%/14SCU3Z0BHqL1,-12c1:>@A baj%!)e"3q"8SCU3Z0BHqL1,-12c1:>@A gE3u:1q5	223s8;1uc%j1a!e9--c%j89 hl#u,a<CD D !B#Ib"$55R+E2A6;Nu;UWX8YZ\4 3E :;R@4PcdiPjKkmoAppR+E2A6;Nu;UWX8YZ\2t$7$>?@2tTghmTnOoAppR+E2A6;Nu;UWX8YZ\4 3E :;TBUV[B\=]^`degH a<r(A8QC2Fr(A8QC1EGC c(C Gb!Wr1gAwQ"aGb!Wr1gRy3)"IRy3)c2Y@a 	aY'@ E5	c!#a%'Q, 1 1T 95;L;LPT;TVXZ\^`be  EqE	c"Q(BuaL%*;*;t*CUEVEVZ^E^`bcf`gjk`kb"c# $ $EqE	c"Q(BuaL%*;*;t*CUEVEVZ^E^`bce`fij`jb"c# $ $EqE	c"Q(Bq!HblBuaL##t+U->->$-F2QR
TVWZT[^_T_UE"BB0 1 1E qE	c"Q(Bq!HblBuaL##t+U->->$-F28WXHXUE"BB0 1 1E qE	c!a%$.0A0AT0I5TU:b"b#s, - -EqE	c!a%$.0A0AT0I5TU:b"b#s, - -EqE	c!a%$.0A0AT0I5TU:b"b#s, - -EqE	c!a%$.0A0AT0I5TU:b"b#s, - -EqE	c!a%Aq2eQ<!U=N=NRV=VS'A+r2r2s4 5 5ErF	c!a%Aq2eQ<!U=N=NRV=VS'A+r2r2s4 5 5ErF	c"Q(AE5A:r%|U=N=NRV=VR&1*b"b"c3 4 4ErF	c"Q(AE5A:r%|U=N=NRV=VR&1*b"b"c3 4 4ErF	c!a%Q
EQJb"b"c30 1 1ErF	c!a%Q
EQJb"b"c30 1 1ErF	c!a%Q
EQJb"b"b#sC9 : :ErF	c!a%Q
EQJb"b"b#sC9 : :ErF	c"Q(AMMT153D3D3LcooaeNegikmorsttErF	c"Q(AMMT153D3D3LcooaeNegikmorsttErF	c"Q(AMMT153D3D3LcooaeNegikmorsttErF	c"Q(AMMT153D3D3LcooaeNegikmorsttErF	c"QS!*e//479J9Jd9Rb"c3( ) )ErF	c"QS!*e//479J9Jd9Rb"c3( ) )ErF &b!D9J%b!D9J	c*bAhAu/@/@D/H#rSUWYZ[[EtH	c*bAhAu/@/@D/H#rSUWYZ[[EtH	c*bAhAu/@/@D/H#rSUWYZ[[EtH	c*bAhAu/@/@D/H#rSUWYZ[[EtH 	E
A!}	c!%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c!%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c"QA,1a"S!*ammt6KUM^M^bfMf1*eBh-@-G)HHb#sC) * *E rF	c"QA,1a"S!*ammt6KUM^M^bfMf1*eBh-@-G)HHb#sC) * *E rF	c!a!e)R1Xr#qz1==D3H%J[J[_cJc1*eBh-@-G)HH)%01QUQY]B4FFb#sC) * *E rF	c	AE	2a8RQZ$)>@Q@QUY@Y[`de[e(S!4U!;<<)%01QUQY]B4FFb#sC	) * *E
 rF	c"Q(BsAJ	1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c"Q(BsAJ	1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c"Q(BsAJ1a!eammt6KUM^M^bfMf1*eBh-@-G)HH)%01UQYNBb#sC) * *E rF	c"Q(BsAJ1a!eammt6KUM^M^bfMf1*eBh-@-G)HH)%01UQYNBb#sC) * *E rF	c
1a"S!*a!a%i$)>@Q@QUY@Y[`de[eb3*5122&'1519q="*<<
BS#	    E
 rF	c
1a"S!*a!a%i$)>@Q@QUY@Y[`de[eb3*5122&'1519q="*<<
BS#	    E
 rFu:C @COKPLv  sJ   2A\
2A\!
&:A\'77A\,:A\17A\6'A$A\; F?A\; \;A]]
A]c                   [        U R                  U5      u  p4[        UR                  U5      u  pTS nU" U R                  5      [        UR                  5      -   n[        UR
                  5      U" U R                  5      -   nU" U R                  5      [        UR                  5      -   n	[        UR                  5      U" U R
                  5      -   n
[        XxXXS-  5      U-  $ )a  
Express integral from zero to infinity g1*g2 using a G function,
assuming the necessary conditions are fulfilled.

Examples
========

>>> from sympy.integrals.meijerint import _int0oo
>>> from sympy.abc import s, t, m
>>> from sympy import meijerg, S
>>> g1 = meijerg([], [], [-S(1)/2, 0], [], s**2*t/4)
>>> g2 = meijerg([], [], [m/2], [-m/2], t/4)
>>> _int0oo(g1, g2, t)
4*meijerg(((0, 1/2), ()), ((m/2,), (-m/2,)), s**(-2))/s**2
c                2    U  Vs/ s H  o* PM     sn$ s  snf rb   r   ry  s     rg   neg_int0oo.<locals>.neg  s    AqAs   )r   r   r   r   r   r  r  rP   )r  r  r|   r  r=  r  r
  r  r  r  r  s              rg   _int0oor  	  s    " BKK+FCbkk1-HE	RUUd255k	!B	bii3ryy>	)B	RUUd255k	!B	bii3ryy>	)B2259-c11ro   c           	     >  ^^	 [        X5      u  nm	[        UR                  U5      u  nmUU	4S jnSSKJn  U" XT	T-  -  -  SS9[	        U" UR
                  5      U" UR                  5      U" UR                  5      U" UR                  5      UR                  5      4$ )zAbsorb ``po`` == x**s into g. c                >   > U  Vs/ s H
  oTT-  -   PM     sn$ s  snf rb   r   )r  r   r   rs  s     rg   r   _rewrite_inversion.<locals>.tr+  s!    !"#AAaC###s   r   r  Tr  )	r   r   r   r  rP   r   r  r   r  )
r   r  r  r|   r=  r   r   r  r   rs  s
           @@rg   _rewrite_inversionr  &  s    " DAq!**a(DAq$(cac(l$/BqttHblBqttHblAJJOQ Qro   c                	  ^ ^^^^^ [        S5        T R                  n[        UT5      u  p4US:  a   [        S5        [        [	        T 5      T5      $ U4S jmU4S jm[        [        T R                  5      [        T R                  5      [        T R                  5      [        T R                  5      /5      u  pVpxXV-   U-
  n	X-
  U-
  n
X-
  S-  nX-
  mTS:X  a  [
        R                  nOTS:  a  SnO[
        R                  nST-
  S-  [        T R                  6 -   [        T R                  6 -
  T-  mT R                  n[        SXVXxXUT45        [        S	UTU45        T R                  US-  :  d  US:  a  Xx:  d  [        S
5        g[         R"                  " T R                  T R                  5       H,  u  pX-
  R$                  (       d  M  X:  d  M!  [        S5          g   Xx:  a:  [        S5        ['        T R                   Vs/ s H  nT" US-
  SSU5      PM     sn6 $ U U4S jnUUU4S jnUUU4S jnUUU4S jn/ nU['        SU:*  SU:*  U[(        -  U-
  [(        S-  :  US:  U" U[+        [
        R,                  [(        -  U
S-   -  5      -  5      5      /-  nU['        US-   U:*  US-   U:*  US:  U[(        S-  :  US:H  XW-
  S-   [(        -  U-
  [(        S-  :  U" U[+        [
        R,                  [(        -  X-
  -  5      -  5      U" U[+        [
        R,                  * [(        -  X-
  -  5      -  5      5      /-  nU['        XX:H  US:H  US:  TU-   [(        -  U-
  [(        S-  :  U" U5      5      /-  nU['        [/        ['        XxS-
  :*  SU	:*  U	TS-  :*  5      ['        US-   XV-   :*  XV-   Xx-   S-  :*  5      5      US:  U[(        S-  :  U	S-   [(        -  U-
  [(        S-  :  U" U[+        [
        R,                  [(        -  U
-  5      -  5      U" U[+        [
        R,                  * [(        -  U
-  5      -  5      5      /-  nU['        SU:*  US:  US:  X[(        -  -   [(        S-  :  X-   [(        -  U-
  [(        S-  :  U" U[+        [
        R,                  [(        -  U
-  5      -  5      U" U[+        [
        R,                  * [(        -  U
-  5      -  5      5      /-  nUUS:H  /-  n[/        U6 $ s  snf )z6Check antecedents for the laplace inversion integral. z#Checking antecedents for inversion:r   z  Flipping G.c           
       > [        UT5      u  pVX-  n XU-  -  nX&-  n/ nU[        [        R                  [	        U5      -  [
        -  S-  5      -  nU[        [        R                  * [	        U5      -  [
        -  S-  5      -  n	U(       a  Un
OU	n
U[        [        [        US5      [	        U5      S:*  5      [	        U 5      S:*  5      /-  nU[        [        US5      [        [        U5      S5      [	        U5      S:  [	        U
5      S:  5      /-  nU[        [        US5      [        [        U5      S5      [	        U5      S:  [	        U
5      S:*  [	        U 5      S:*  5      /-  n[        U6 $ )Nr   r   r   )r   r+   r   r   r    r   rT   rU   r   r   r!   )r   r   r   r^   pluscoeffexponentr  wpwmwr|   s              rg   statement_half4_check_antecedents_inversion.<locals>.statement_half<  sG   (A.		AX	s1??2a5(+A-..sAOO#BqE)",Q.//AA#bAq2a5A:.1<==#bAh2a5!beaiACDD#bAh2a5!beaiA!erk# $ 	$5zro   c           
     <   > [        T" XX#S5      T" XX#S5      5      $ )zIProvide a convergence statement for z**a * exp(b*z**c),
c/f sphinx docs. TF)rT   )r   r   r   r^   r  s       rg   	statement/_check_antecedents_inversion.<locals>.statementN  s)     >!d3!!e46 	6ro   r   rR   z9  m=%s, n=%s, p=%s, q=%s, tau=%s, nu=%s, rho=%s, sigma=%sz   epsilon=%s, theta=%s, delta=%sz-  Computation not valid for these parameters.Fz  Not a valid G function.z$  Using asymptotic Slater expansion.c                l   > [        TR                   Vs/ s H  nT" US-
  SSU 5      PM     sn6 $ s  snf r   )rT   r   )r^   r   r  r  s     rg   E'_check_antecedents_inversion.<locals>.E~  s3    =1Yq1uaA.=>>=s   1c                "   > T" TT* ST-  U 5      $ r   r   )r^   r  r  r  s    rg   H'_check_antecedents_inversion.<locals>.H  s    %33ro   c                $   > T" TT* ST-  U S5      $ )NrR   Tr   r^   r  r  r  s    rg   Hp(_check_antecedents_inversion.<locals>.Hp  s    eeVQuWa>>ro   c                $   > T" TT* ST-  U S5      $ )NrR   Fr   r%  s    rg   Hm(_check_antecedents_inversion.<locals>.Hm  s    eeVQuWa??ro   )r|  r   r   _check_antecedents_inversionr#  r   r  r   r   r   r   r   NaNr   r  r  r  r  r  rT   r   r+   r   rU   )r  r|   r^   r=  r   r   rt   r   r   r  r   r  epsilonr  r   r   r  r"  r&  r)  r  r  r  r  r  s   ``                   @@@@rg   r+  r+  2  s   
01	

A!QDA1u+GAJ::$6 CIs144y#add)SY?@JA!
%!)C	
B8Q,CEEz&&	%%%i]S!$$Z'#qtt*4e;EGGEG1#u-/.%0GH GGqsNqAv!&>?
 !!!$$-E!%./ . 	v56=1Yq1uaA.=>>?4?@ E	c!q&!q&#b&5.BqD"8%!)Ac!//",b1f56679 : :E 
c!a%1*a!eqj%!)URT\16519b.5(BqD0Qs1??2-qu5667QsAOO+B.6778: ; ;E
 
c!&!q&%!)7?B&."Q$6!> ? ?E 
c"S!eQ#XseAg~>Q!%15!));<>!)URT\C!GR<%+?2a4+GQs1??2-b0112QsAOO+B.r1223	5 6 6E 
c!q&#'519e"fnr!t.C="$u,14Qs1??2-b0112QsAOO+B.r12235 6 6E
 
a1fXE u:[ >s   
S9c                    [        U R                  U5      u  p4[        [        U R                  U R
                  U R                  U R                  X2U-  -  5      U* 5      u  pPXR-  U -  $ )zG
Compute the laplace inversion integral, assuming the formula applies.
)r   r   r%  rP   r   r  r   r  )r  r|   r   r   r   r  s         rg   _int_inversionr/    sT     !**a(DA'!$$!$$!qD&IA2NDA3q5Lro   c                
  ^ ^! SSK JnJm!JnJm   [
        (       d  0 q[        [
        5        [        U [        5      (       a  [        U R                  U5      R                  U5      u  pV[        U5      S:  a  gUS   nUR                  (       a-  UR                  U:w  d  UR                  R                   (       d  gOXa:w  a  gSS[        U R"                  U R$                  U R&                  U R(                  XV-  5      4/S4$ U nU R+                  U[,        5      n [/        U [,        5      nU[
        ;   Ga  [
        U   n	U	 GH
  u  ppU R1                  U
SS9nU(       d  M   0 nUR3                  5        H  u  nn[5        [7        USS9SS9UU'   M     Un[        U[8        5      (       d  UR+                  U5      nUS	:X  a  M  [        U[8        [:        45      (       d  [5        UR+                  U5      5      n[=        U5      S	:X  a  M  [        U[>        5      (       d  U" U5      n/ nU GH  u  nn[A        [5        UR+                  U5      R+                  [,        U5      SS9U5      n UR+                  U5      R+                  [,        U5      n[E        UU4-   6 RG                  [H        RJ                  [H        RL                  [H        RN                  5      (       a  M  [        UR"                  UR$                  UR&                  UR(                  [5        UR                  SS95      nURQ                  UU4-   5        GM     U(       d  GM  UU4s  $    U(       d  g[S        S
5        U U!4S jnUn [U        SSU 5      nS n U" XUUS	SS9u  nnnU" UUUU5      nUcj  [W        SS5      nUU RX                  ;  aN  [[        X5      (       a>   U" U R+                  UUU-  5      UUUSS	S9u  nnnU" UUUU5      R+                  US5      nUbB  URG                  [H        RJ                  [H        R\                  [H        RL                  5      (       a  [S        S5        g[^        R`                  " U5      n/ nU H  n U R                  U5      u  nn[        U5      S:  a  [c        S5      eUS   n[A        UR                  U5      u  nnUUS[        UR"                  UR$                  UR&                  UR(                  [5        [7        USS9SS9UU-  -  5      4/-  nM     [S        SU5        US4$ ! [B         a     GM
  f = f! U a    Sn GNf = f! U a    Sn GNNf = f)a,  
Try to rewrite f as a sum of single G functions of the form
C*x**s*G(a*x**b), where b is a rational number and C is independent of x.
We guarantee that result.argument.as_coeff_mul(x) returns (a, (x**b,))
or (a, ()).
Returns a list of tuples (C, s, G) and a condition cond.
Returns None on failure.
rR   )mellin_transforminverse_mellin_transformIntegralTransformErrorMellinTransformStripErrorNr   T)old)lift)exponents_onlyFz)Trying recursive Mellin transform method.c           
        >  T" XX#SSS9$ ! T a+    SSK Jn  T" U" [        [        U 5      5      5      XUSSS9s $ f = f)zCalling simplify() all the time is slow and not helpful, since
most of the time it only factors things in a way that has to be
un-done anyway. But sometimes it can remove apparent poles. T)
as_meijergneedevalr   )simplify)r   r;  rY   r   )Frs  r|   stripr;  r4  r2  s        rg   my_imt_rewrite_single.<locals>.my_imt
  sY    
	0+A!7;dL L( 	0/+q	*+Q5$0 0	0s    .==rs  zrewrite-singlec           	        [        XSS9nUbQ  SSKJn  Uu  pE[        U" USS95      n[	        XE4[        X[        R                  [        R                  45      S45      $ [        X[        R                  [        R                  45      $ )NT)only_doubler   hyperexpandnonrepsmall)rewrite)	_meijerint_definite_4r   rC  _my_unpolarifyr5   rS   r   r   rL  )rf   r|   r   rC  rn   r   s         rg   my_integrator&_rewrite_single.<locals>.my_integrator  sw    !!D9=2IC S-!HICc[&qaffajj*ABDIK Kqvvqzz233ro   )
integratorr;  r:  r   )rJ  r:  r;  z"Recursive Mellin transform failed.zUnexpected form...z"Recursive Mellin transform worked:)2
transformsr1  r2  r3  r4  _lookup_tabler   r   rP   rZ   r   r   r  r   r   r+   r  r   r  r   r  r   r^   r   r   itemsr%   r&   rh  rV   rj  r   r   
ValueErrorr
   rm   r   rL  ComplexInfinityNegativeInfinityr   r|  r/  r*  r   r7  r,  r   r  NotImplementedError)"rf   r|   	recursiver1  r3  r  r   f_r   r  r   termsr   r   r   subs_r\  r]  rn   r   r  r  r>  rs  rH  r<  r=  r=  r   rl   r   r   r4  r2  s"                                   @@rg   _rewrite_singlerV    s   ; ; =]+!W!**a(55a8q6A:aD88vv{!%%"3"3 #4VAwqttQXXqttQXXuwGHI4OO	
B	q!A1AM!*+&GD7777-Dt#zz|GC!+HRd,C;?"AE#J  , !$--99T?D5=!${(;<<%diio6Dd#u,!%..!$KE#FC'
388D>3F3Fq!3LBF)HIJLB!FF4L--a3 rQDy*..qzz1;L;LaN`N`aa ahhahh *1::d KMAJJrQDy) $ 39$G +,L 
670 	As$a(A4&qQ=05F5!1aE" 	y C)*ANN"|A'9'9.qvva1~q!:G8<uN5! 1aE*//15 	yAEE!**aeeQ->->??34==D
C~~a 1q6A:%&:;;aDajj!,1AwqttQXXqttQXX)(#$4+1AE G !1 %& ' ( 	(  /39_ & ! !` "  * s6   $%T!9T3 =U !
T0/T03T?>T?UUc                \    [        X5      u  p4n[        XQU5      nU(       a  X4US   US   4$ g)z
Try to rewrite ``f`` using a (sum of) single G functions with argument a*x**b.
Return fac, po, g such that f = fac*po*g, fac is independent of ``x``.
and po = x**s.
Here g is a result from _rewrite_single.
Return None on failure.
r   rR   N)r  rV  )rf   r|   rR  r   r  r  s         rg   	_rewrite1rX  J  s;     A!JCQi(A!ad"" 	ro   c           	       ^ [        U T5      u  p#n[        U4S j[        U5       5       5      (       a  g[        U5      nU(       d  g[	        [        UU4S jU4S jU4S j/5      5      n[        R                  " SU5       HZ  u  nu  px[        UTU5      n	[        UTU5      n
U	(       d  M+  U
(       d  M4  [        U	S   U
S   5      nUS:w  d  MN  X#U	S	   U
S	   U4s  $    g)
z
Try to rewrite ``f`` as a product of two G functions of arguments a*x**b.
Return fac, po, g1, g2 such that f = fac*po*g1*g2, where fac is
independent of x and po is x**s.
Here g1 and g2 are results of _rewrite_single.
Returns None on failure.
c              3  B   >#    U  H  n[        UTS 5      SL v   M     g7f)FN)rV  r3  s     rg   rh   _rewrite2.<locals>.<genexpr>a  s     
L|t?4E*d2|r5  Nc           	     t   > [        [        [        U S   T5      5      [        [        U S   T5      5      5      $ Nr   rR   )maxr  r   r   r|   s    rg   r}   _rewrite2.<locals>.<lambda>g  ,    #c*QqT1-.JqtQ4G0HIro   c           	     t   > [        [        [        U S   T5      5      [        [        U S   T5      5      5      $ r]  )r^  r  r   r_  s    rg   r}   r`  h  ra  ro   c           	     t   > [        [        [        U S   T5      5      [        [        U S   T5      5      5      $ r]  )r^  r  r  r_  s    rg   r}   r`  i  s1    #c01q9:01q9:<ro   FTrR   Fr   )
r  r6  r
  r  r   r   r  r  rV  rT   )rf   r|   r   r  r  r  rR  fac1fac2r  r  r   s    `          rg   	_rewrite2rg  X  s     Aq!JCQ

Ly|
LLL!AWQII	<= > 	?A $-#4#4]A#F	<DT1i0T1i02""r!ube$Du}1r!ud22 $Gro   c                   [        U 5      n / n[        [        X5      [        R                  1-  [
        S9 Hm  n[        U R                  XU-   5      U5      nU(       d  M*  UR                  XU-
  5      n[        U[        [        5      (       a  UR                  U5        Mk  Us  $    U R                  [        5      (       ax  [        S5        [        [!        U 5      U5      nU(       aQ  [#        U[$        5      (       d+  SSKJn  U" [+        U5      UR-                  [.        5      5      $ UR1                  U5        U(       a  [3        [5        U5      5      $ g)z
Compute an indefinite integral of ``f`` by rewriting it as a G function.

Examples
========

>>> from sympy.integrals.meijerint import meijerint_indefinite
>>> from sympy import sin
>>> from sympy.abc import x
>>> meijerint_indefinite(sin(x), x)
-cos(x)
r   *Try rewriting hyperbolics in terms of exp.r   collectN)r   r   r  r   r   r   _meijerint_indefinite_1r   rc   rO   rP   r   rm   r2   r|  meijerint_indefiniter1   r   r   sympy.simplify.radsimprk  r   r   r+   extendnextr   )rf   r|   resultsr   rn   rvrk  s          rg   rm  rm  u  s    	
AG*10AFF8;AQR%affQA&6:hhqa% UG$$NN3J S 	uu  ;<!'*A/b$'':|B/#??NN2GG$%% ro   c           	       ^^ [        SU ST5        SSKJnJn  [	        U T5      nUc  gUu  pVpx[        SU5        [
        R                  n	U GH  u  pn[        UR                  T5      u  p[        UT5      u  nnUU-  nXZ-  TSU-   -  -  U-  nUS-   U-  m[        SS	[
        R                  5      nU4S
 jn[        S U" UR                  5       5       5      (       ai  [        [        UR                  5      [        UR                   5      ST-
  /-   [        UR                  5      T* /-   [        UR"                  5      U5      * nOg[        [        UR                  5      ST-
  /-   [        UR                   5      [        UR                  5      [        UR"                  5      T* /-   U5      nUR$                  (       aF  U R'                  TS5      R)                  [
        R*                  [
        R,                  5      (       d  SnOSnU" UR'                  UUTU-  -  5      US9nX" UU-  SS9-  n	GM     U4S jn[/        U	SS9n	U	R0                  (       a=  / nU	R2                   H  u  nn[5        U" U5      5      nUUU4/-  nM!     [7        USS06n	O[5        U" U	5      5      n	[7        U	[5        U5      4[9        U T5      S45      $ )z/Helper that does not attempt any substitution. z,Trying to compute the indefinite integral ofwrtr   )rC  r  Nz could rewrite:rR   r   zmeijerint-indefinitec                8   > U  Vs/ s H  oT-   PM	     sn$ s  snf rb   r   )r   r   r  s     rg   r   #_meijerint_indefinite_1.<locals>.tr  s    %&'QGQ'''r  c              3  V   #    U  H  oR                   =(       a    US :*  S:H  v   M!     g7f)r   TN)r  )rd   r   s     rg   rh   *_meijerint_indefinite_1.<locals>.<genexpr>  s#     C(Q||0aD 00(s   '))placeTr  c                z   > [        [        U 5      SS9n [        R                  " U R	                  T5      S   5      $ )a9  This multiplies out superfluous powers of x we created, and chops off
constants:

    >> _clean(x*(exp(x)/x - 1/x) + 3)
    exp(x)

cancel is used before mul_expand since it is possible for an
expression to have an additive constant that does not become isolated
with simple expansion. Such a situation was identified in issue 6369:

Examples
========

>>> from sympy import sqrt, cancel
>>> from sympy.abc import x
>>> a = sqrt(2*x + 1)
>>> bad = (3*x*a**5 + 2*x - a**5 + 1)/a**2
>>> bad.expand().as_independent(x)[0]
0
>>> cancel(bad).expand().as_independent(x)[0]
1
F)deeprR   )r   rY   r   
_from_argsas_coeff_add)rn   r|   s    rg   _clean'_meijerint_indefinite_1.<locals>._clean  s4    . 51~~c..q1!455ro   )evaluater  F)r|  r   rC  r  rX  r   r   r   r   r/  r   r6  r   rP   r   r   r  r  is_extended_nonnegativer   rm   r,  rO  r6   r`   rl   rG  r5   rS   )rf   r|   rC  r  r	  r   r  glr   rn   r  rs  r  r   r   r=  r   fac_r   r   r   ry  r~  rf  r   r  s    `                       @rg   rl  rl    s   
91eQG5	1aB	zCR
b!
&&Caajj!,b!$1	Q wQU#a'1uai 3.6	(C"QTT(CCCQTT
DNaeW4d144jSD66I4PQPXPX>[\^ ^A QTT
aeW$d188nd144j$qxx.UXTXSYBY[\^A $$QVVAq\-=-=aeeQEVEV-W-WEEq!AqD&)7 	yat,,K N64 t
,C
HHDAqvay)AAxG  151VC[)c>$/08Aq>42HIIro   c                	   [        SXX#45        [        U 5      n U R                  [        5      (       a  [	        S5        gU R                  [
        5      (       a  [	        S5        gXX#4u  pEpg[        S5      nU R                  X5      n UnX#:X  a  [        R                  S4$ / n	U[        R                  L a2  U[        R                  La  [        U R                  X* 5      X* U* 5      $ U[        R                  L Ga	  [	        S5        [        X5      n
[	        SU
5        [        U
[        SS	9[        R                  /-    H  n[	        S
U5        UR                   (       d  [	        S5        M-  [#        U R                  XU-   5      U5      nUc  [	        S5        M[  [#        U R                  XU-
  5      U5      nUc  [	        S5        M  Uu  pUu  p[%        ['        X5      5      nUS:X  a  [	        S5        M  X-   nUU4s  $    GO/U[        R                  L a&  [        XU[        R                  5      nUS   * US   4$ X#4[        R                  [        R                  4:X  aA  [#        X5      nU(       a-  [)        US   [*        5      (       a  U	R-                  U5        GOU$ GOU[        R                  L a  [        X5       H  nUU-
  S:  S:X  d  M  [        SU5        [#        U R                  XU-   5      [/        UU-   U-
  5      -  U5      nU(       d  MV  [)        US   [*        5      (       a  U	R-                  U5        M  Us  $    U R                  XU-   5      n X2-
  nSnU[        R                  Lah  [1        [        R2                  [5        U5      -  5      n[7        U5      nU R                  UUU-  5      n U [/        X1-
  5      U-  -  n [        R                  n[	        SX#5        [	        SU 5        [#        X5      nU(       a,  [)        US   [*        5      (       a  U	R-                  U5        OU$ UR                  [8        5      (       a  [	        S5        [        [;        U5      XVU5      nU(       a`  [=        U[>        5      (       d:  SSK J!n  U" [E        US   5      US   RG                  [0        5      5      4USS -   nU$ U	RI                  U5        U	(       a  [K        [M        U	5      5      $ g)a  
Integrate ``f`` over the interval [``a``, ``b``], by rewriting it as a product
of two G functions, or as a single G function.

Return res, cond, where cond are convergence conditions.

Examples
========

>>> from sympy.integrals.meijerint import meijerint_definite
>>> from sympy import exp, oo
>>> from sympy.abc import x
>>> meijerint_definite(exp(-x**2), x, -oo, oo)
(sqrt(pi), True)

This function is implemented as a succession of functions
meijerint_definite, _meijerint_definite_2, _meijerint_definite_3,
_meijerint_definite_4. Each function in the list calls the next one
(presumably) several times. This means that calling meijerint_definite
can be very costly.
z$Integrating %s wrt %s from %s to %s.z+Integrand has DiracDelta terms - giving up.Nz5Integrand has Singularity Function terms - giving up.r|   Tz  Integrating -oo to +oo.z  Sensible splitting points:)r   reversez  Trying to split atz  Non-real splitting point.z'  But could not compute first integral.z(  But could not compute second integral.Fz)  But combined condition is always false.r   rR   zTrying x -> x + %szChanged limits tozChanged function tori  rj  )'r  r   rm   r?   r|  rQ   r   r   r   r   rP  rL  meijerint_definiter  r   r   is_extended_real_meijerint_definite_2rU  rT   rc   rP   r   r@   r+   r   r"   r#   r2   r1   r   r   rn  rk  r   r   ro  rp  r   )rf   r|   r   r   rS  x_a_b_r.  rq  r  r   res1res2cond1cond2r   rn   splitr  rr  rk  s                         rg   r  r    s:   < 2Q1LA
AuuZ<=uu !!FG1ZNBB 	c
A	qA	Av~GA1AJJ#6!!&&B-B;;	
a  	 *+*10	-y9	'7F!&&QA)1-%%45(q5)91=D|@A(q5)91=D|ABKDKDS./Du}BC+C9) R, 
ajj q!**5AwA
AFFAJJ'	'#A)CFG$$s#
	  

?/5INt+0%8/qe)0D1:1u9q=1I1JKLNCsA00#NN3/#&J 6 FF1!eEAJJaooc!f,-CAAq#a% A15!#%%A

A"A)$a(#A)CFG$$s#
	vv !!;<'+RR9b$'':l2a512a5;;s3CDFABO	NN2GG$%% ro   c                   U S4/nUS   S   nU1n[        U5      nXT;  a  X%S4/-  nUR                  U5        [        U5      nXT;  a  X%S4/-  nUR                  U5        UR                  [        [
        5      (       a1  [        [        U5      5      nXT;  a  X%S4/-  nUR                  U5        UR                  [        [        5      (       a+  SSK	J
n  U" U5      nXt;  a  X'S4/-  nUR                  U5        U$ )	z5Try to guess sensible rewritings for integrand f(x). zoriginal integrandr   r   r   r   zexpand_trig, expand_mul)sincos_to_sumztrig power reduction)r   r   r   rm   r:   r2   r   r7   r8   sympy.simplify.fur  )rf   r|   rn   origsawexpandedr  reduceds           rg   _guess_expansionr    s   #$
%Cr71:D&C$H<())d|H8$%%xx%'9::k$/089::CGGHxxS3%4566CGGGJro   c                    [        SSU SS9nU R                  X5      n UnU S:X  a  [        R                  S4$ [	        X5       H'  u  p4[        SU5        [        X15      nU(       d  M%  Us  $    g)a`  
Try to integrate f dx from zero to infinity.

The body of this function computes various 'simplifications'
f1, f2, ... of f (e.g. by calling expand_mul(), trigexpand()
- see _guess_expansion) and calls _meijerint_definite_3 with each of
these in succession.
If _meijerint_definite_3 succeeds with any of the simplified functions,
returns this result.
r|   zmeijerint-definite2T)positiver   TryingN)r/  r   r   r   r  r|  _meijerint_definite_3)rf   r|   dummyr  explanationrn   s         rg   r  r    sl      3-q4@E	qAAAvvvt|*10x%#A)3J	 1ro   c                j   [        X5      nU(       a  US   S:w  a  U$ U R                  (       a  [        S5        U R                   Vs/ s H  n[        X15      PM     nn[	        S U 5       5      (       a8  / n[
        R                  nU H  u  pgX&-  nXW/-  nM     [        U6 nUS:w  a  X'4$ gggs  snf )z
Try to integrate f dx from zero to infinity.

This function calls _meijerint_definite_4 to try to compute the
integral. If this fails, it tries using linearity.
rR   Fz#Expanding and evaluating all terms.c              3  (   #    U  H  oS Lv   M
     g 7frb   r   )rd   r   s     rg   rh   (_meijerint_definite_3.<locals>.<genexpr>  s     +d}ds   N)rF  is_Addr|  rl   rk   r   r   rT   )rf   r|   rn   r  ressr  r   r   s           rg   r  r    s      
%C
s1v
xx4556VV<V%a+V<+d+++E&&C  UAEzv  , <s   B0c                *    [        [        U 5      5      $ rb   )rj  r%   )rf   s    rg   rG  rG    s    jm$$ro   c                   SSK Jn  [        SU 5        U(       d  [        XSS9nUb  Uu  pVpx[        SXVU5        [        R
                  n	U HQ  u  pn U
S:X  a  M  [        XZ-  XaU-  -  X5      u  pX[        X5      -  -  n	[        U[        X5      5      nUS:X  d  MQ    O   [        U5      nUS:X  a  [        S5        O[        S	U	5        [        U" U	5      5      U4$ [        X5      nUGb  S
 GH   nUu  pVpn[        SXVX5        [        R
                  n	U H  u  nnnU Hz  u  nnn[        X_-  U-  XaUU-   -  -  UUX5      nUc  [        S5              gUu  n
nn[        SU
UU5        [        U[        UUU5      5      nUS:X  a    OX[        UUU5      -  -  n	M|     M    O   [        U5      nUS:X  a  [        SU5        M  [        SU	45        U(       a  X4s  $ [        U" U	5      5      U4s  $    gg)aa  
Try to integrate f dx from zero to infinity.

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

This function tries to apply the integration theorems found in literature,
i.e. it tries to rewrite f as either one or a product of two G-functions.

The parameter ``only_double`` is used internally in the recursive algorithm
to disable trying to rewrite f as a single G-function.
r   rB  IntegratingF)rR  N#Could rewrite as single G function:But cond is always False.z&Result before branch substitutions is:rd  z!Could rewrite as two G functions:zNon-rational exponents.zSaxena subst for yielded:z&But cond is always False (full_pb=%s).z)Result before branch substitutions is: %s)r   rC  r|  rX  r   r   rv  r  rT   r  rG  rg  r  r  r  r  )rf   r|   rA  rC  r	  r   r  r  r   rn   r  rs  ro  r  r  r  s1f1r  s2f2r   f1_f2_s                           rg   rF  rF    s    +
=!qu->!CQ8#1E&&Ca6(a4>1((4!5a!;<5=  "$'Du}23?E%k#&67== 
1B	~$G$&!CRT6H&&C 
B"$JBB'r	2"r'l?(*B<Ay89"#KAsC63Dt%7S!%DEDu}WS#q111C #%  !  "$'Du}@'JCcWM9$%k#&67==7 % ro   c           	     R   U nUn[        SSS9nU R                  XB5      n [        SU 5        [        X5      (       d  [        S5        g[        R
                  nU R                  (       a  [        U R                  5      nO[        U [        5      (       a  U /nOSnU(       Ga|  / n/ nU(       Ga`  UR                  5       n	[        U	[        5      (       ar  [        U	5      n
U
R                  (       a  XjR                  -  nMY   [        U	R                  S   U5      u  pUS:X  a  UR                  W5        OUR                  U	5        OU	R                   (       a  [        U	5      n
U
R                  (       a  XjR                  -  nM  XR"                  R$                  ;  aF   [        U	R                  U5      u  pUS:X  a'  UR                  W['        U	R"                  5      -  5        UR                  U	5        OUR                  U	5        U(       a  GM`  [)        U6 n[+        U6 n XR$                  ;  ak  [        S	X5        [-        [/        U5      S5      nUS
:X  a  [        S5        gU [1        X%-   5      -  n[        SX5        [3        UR                  X$5      U45      $ [5        X5      nUGb[  Uu  nnnn[        SUUU5        [        R
                  nU HO  u  nnn [7        UU-  UUU-  -  X5      u  nn UU[9        XU5      -  -  n[;        U[=        X5      5      nUS
:X  d  MO    O   [?        U5      nUS
:X  a  [        S5        g[        SU5        SSK J!n  [?        U" U5      5      nURE                  [F        5      (       d  U[G        U5      -  nUR                  X"U-   5      n[        U[H        5      (       d  UR                  X"U-   5      nSSK%J&n  [3        UR                  X$5      U4U" UR                  X$5      XS5      S45      $ g! [         a    Sn GNf = f! [         a    Sn GNqf = f)a  
Compute the inverse laplace transform
$\int_{c+i\infty}^{c-i\infty} f(x) e^{tx}\, dx$,
for real c larger than the real part of all singularities of ``f``.

Note that ``t`` is always assumed real and positive.

Return None if the integral does not exist or could not be evaluated.

Examples
========

>>> from sympy.abc import x, t
>>> from sympy.integrals.meijerint import meijerint_inversion
>>> meijerint_inversion(1/x, x, t)
Heaviside(t)
r   Tr  zLaplace-invertingzBut expression is not analytic.Nr   rR   z.Expression consists of constant and exp shift:Fz3but shift is nonreal, cannot be a Laplace transformz1Result is a delta function, possibly conditional:r  r  z"Result before branch substitution:rB  )InverseLaplaceTransform)'r   r   r|  r7  r   r   is_Mulr   rl   r   r+   popr   r   r   r   r   r   r   r-   r   r   r   r!   r?   r5   rX  r  r/  rT   r+  rG  r   rC  rm   r@   rh  rK  r  )rf   r|   r   rS  t_shiftrl   rf  exponentialsr"   rb  r   r   r   rn   r	  r   r  r  r  rs  rC  r  s                          rg   meijerint_inversionr  !  s   $ 
B	
BcA	rA
"01 FFExxAFF|	As		s((*C#s##c{;;II%D)#((1+q9DA 6 ''*NN3'c{;;II%DHH111-cggq9 Av$++Ac#((mO<s#s#; d< \"M?J"U)Q5=HI
19%%BCN#((1/4011	1B	~RD4c2qAffGAq!%c!eR1Wa;DAq1^A!,,,Ct9!?@Du}  d#5=./7=2 S!12C779%%y|#((1%i(CdD))yyI.;chhqot45bgganaTRTXY[ [/ I + A / s$    P P PPP&%P&)rf   r   r|   r   r   ztuple[type[Basic], ...]r   )F)r   
__future__r   r  sympyr   
sympy.corer   r   sympy.core.addr   sympy.core.basicr   sympy.core.cacher	   sympy.core.containersr
   sympy.core.exprtoolsr   sympy.core.functionr   r   r   r   r   sympy.core.mulr   sympy.core.intfuncr   sympy.core.numbersr   r   sympy.core.relationalr   r   r   sympy.core.sortingr   r   sympy.core.symbolr   r   r   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr   $sympy.functions.elementary.complexesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   &sympy.functions.elementary.exponentialr+   r,   r-   #sympy.functions.elementary.integersr.   %sympy.functions.elementary.hyperbolicr/   r0   r1   r2   (sympy.functions.elementary.miscellaneousr4   $sympy.functions.elementary.piecewiser5   r6   (sympy.functions.elementary.trigonometricr7   r8   r9   r:   sympy.functions.special.besselr;   r<   r=   r>   'sympy.functions.special.delta_functionsr?   r@   *sympy.functions.special.elliptic_integralsrA   rB   'sympy.functions.special.error_functionsrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   'sympy.functions.special.gamma_functionsrN   sympy.functions.special.hyperrO   rP   -sympy.functions.special.singularity_functionsrQ   	integralsrS   sympy.logic.boolalgrT   rU   rV   rW   rX   sympy.polysrY   rZ   sympy.utilities.iterablesr[   sympy.utilities.miscr\   r|  r]   r  r^   rc   r   sympy.utilities.timeutilsr   timeitr   rN  r   r   r   r   r  r  r
  r  r  r#  r%  r(  __annotations__r/  r*  r7  rU  rj  rp  rv  r  r  r  r  r  r  r+  r/  rL  rV  rX  rg  rm  rl  r  r  r  r  rG  rF  r  r   ro   rg   <module>r     s'  8 #     " $ ' -8 8  # + : : 8 : : & >    G F 79 9 9 J  M M I M6 6 6 6 9 8 M  J J & 9 0 2 
#JJPb /	)		N	* 	HDBI
!H$N.I>0 QD4 +-
& ,	#Oyv"	*m`&<F.Rj`	2:	Qwt  	I  	IX#3:"&JWJt G& G&T@<0% D> D>Nn[ro   