
    wg;                      U d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZK ddlLmMZMmNZNmOZOmPZP ddlQmRZRmSZSmTZTmUZU ddlVmWZWmXZX ddlYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZg ddlhmiZi dd ljmkZkmlZl dd!lmmnZn d"d#lompZp dd$lqmrZrmsZsmtZtmuZumvZv dd%lwmxZxmyZy dd&lzm{Z{ dd'l|m}Z~ dd(l|mZ  e(d)      Zd* Zd+ Zdd,lmZ  ed-      ZdXd.Z G d/ d0e      Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zi ad;ed<<   d= Zd> Zd? ZdYd@ZdA ZdZdBZdC ZdZdDZdE ZdZdFZdG ZdH ZdI ZdJ ZdK ZdaeedYdL              ZdYdMZdN ZdO ZdP ZedQ        ZdR ZdS ZdT ZdU ZedZdV       ZdW Zy)[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                    t        |       } t        | dd      rt        fd| j                  D              S  | j                   S )Nis_PiecewiseFc              3  6   K   | ]  }t        |g   y wN)_has).0ifs     ^/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/integrals/meijerint.py	<genexpr>z_has.<locals>.<genexpr>T   s     114;A;1s   )r6   getattrallargshas)resrf   s    `rg   rc   rc   O   s@     
CsNE*1111377A;    c                   	
 d }t        t        |d            \  	}t        dd g      t        z  z  t        j
                  ddf fd	
d fd	}d	 }	 |	      ddfg d
<    G d dt              } 
t        z
        z
  	dz
  z  z  	gg g dgz  t        	      	dz
  z  z  t        dkD                
t        z
        z
  	dz
  z  z  g 	gdgg z  t        	      	dz
  z  z  t        dkD                
t        t        z  dz  z  z
        z
  	dz
  z  z  	gg g dgz  t        	      	dz
  z  z  t        dkD                
t        z  dz  z  t        z
        z
  	dz
  z  z  g 	gdgg z  t        	      	dz
  z  z  t        dkD                
z   	 z  d	z
  gg dgg z  	 z  t        	      z  t         |	                    
t        z
        	 z  d	z
  gd	z
  dz  gdgd	z
  dz  gz  dt        t        	z  dz        z  t        d	z
        z  t              	 z  z  t        	      dk          
	z  	z  z
  z
  z  d	gg d	gg z  	dz
  z  t        	t        z        z  t        z         d 	
fd} |dd        |dd        |t        j                  d        |t        j                  d       	
fd} |dd        |dd        |t        j                  d        |t        j                  d        
t!        t#        d      z        g g dgg         
t%              g dgt        j                  gddgdz  dz  t        t'        dd      z          
t)              g t        j                  gdgt        j                  t        j                  gdz  dz  t        t'        dd      z          
t              g g t        j                  gdgdz  dz  t+        t                      
t-              g g dgt        j                  gdz  dz  t+        t                      
t/              g g dgt'        dd      gdz  dz  t+        t              dz         fdfd |t1              z  t        dz
        z  d        |t1              z  t        dz
        z  d       fd} |t1              z  |d        |t1        	z          |t1        	            t        j
                  t3        ddgg dgdg	z        fgz   d        |t1        t        	z
               |t1        t        	                  t        t3        ddgt        j                  gdgdt        j                  g	z        fgz   d        |t5               |t        j6                   t        z        t        j8                  t3        g dgddgg t#        d      z        fgz   d        
t;              dgg t        j                  gddgdz  dz  t+        t              dz          
t=              g dgddgt        j                  gdz  dz  t+        t               dz          
t?              t        j                  gg dgt'        dd      t'        dd      gt#        d      dz  z  dz  t+        t              z  dz          
tA              g t        j                  dgddgt        j                  t        j                  gdz  dz  t        t	        d      z   dz          
tC        	      g 	g	dz
  dgg         
tE              dgg t        j                  gdgdz  dt+        t              z          
tG              g dgdt        j                  gg dz  dt+        t              z          
tI              t        j                  gg dgt'        dd      gdz   t+        t              z          
tK              dgg t'        dd      gdt'        dd      gt        dz  dz  z  dz  t        j                          
tM              dgg t'        dd      gdt'        dd      gt        dz  dz  z  dz  t        j                          
tO        	      g g 	dz  g	 dz  gdz  dz          
tQ        	      g 	dz    dz  g	dz  	 dz  g	dz    dz  gdz  dz          
tS        	      g d	z   dz  g	dz  g	 dz  d	z   dz  gdz  dz  t                
tU        	      g g 	dz  	 dz  gg dz  dz  t        j                          
tW              t        j                  t        j                  gg dgdg t        j                          
tY              t        j                  dt        j                  z  gg dgdg t'        dd      dz         y)z8 Add formulae for the function -> meijerg lookup table. c                &    t        | t        g      S )Nexclude)r   r^   )ns    rg   wildz"_create_lookup_table.<locals>.wildZ   s    As##rn   pqabcrs   c                (    | j                   xr | dkD  S Nr   )
is_Integerxs    rg   <lambda>z&_create_lookup_table.<locals>.<lambda>]   s    (>Q rn   )
propertiesTc	                    	j                  t        | t              g       j                  | |t	        |||||      fg||f       y rb   )
setdefault_mytyper^   appendrP   )
formulaanapbmbqr"   faccondhinttables
            rg   addz!_create_lookup_table.<locals>.add`   sK    !,b188''*GBBC,H&I%JDRV:X 	Yrn   c                l    j                  t        | t              g       j                  | |||f       y rb   )r~   r   r^   r   )r   instr   r   r   s       rg   addiz"_create_lookup_table.<locals>.addid   s0    GQ	%%+VWdD$,G%Hrn   c           	     ^    | t        dgg g dgt              f| t        g dgdgg t              fgS NrR   r   )rP   r^   )as    rg   constantz&_create_lookup_table.<locals>.constanth   s>    GQCR!a01GBaS"a013 	3rn    c                      e Zd Zed        Zy)2_create_lookup_table.<locals>.IsNonPositiveIntegerc                @    t        |      }|j                  du r|dk  S y )NTr   )r%   rx   )clsr"   s     rg   evalz7_create_lookup_table.<locals>.IsNonPositiveInteger.evalp   s%    S/C~~%ax &rn   N)__name__
__module____qualname__classmethodr   r   rn   rg   IsNonPositiveIntegerr   n   s    		  
	 rn   r   rR   r   )r      c                N    t         t        dd      z  | |z  dz  dd| z  z
  z  z  S )Nr   rR   )r   r   )rr$   nus      rg   A1z _create_lookup_table.<locals>.A1   s/    8B?"TE"HQJ!ac'#:::rn   c                     t        dz  z         |z  z   z  dz  z   | z  z  dz   dz  dd| z  z
  dz  z   gg |z  z
  dz  g|z  z   dz  gdz  z  d| z  z
  z   | |      z         y )Nr   rR   r3   )r   sgnr   r   r   bts     rg   tmpaddz$_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AsA&	(rn   r   c                H    t        t        z  z  z         |t              z  t        dz  z  z  z   z  t        z  z  z   | z  z  d| z
  |z  dz  z   gd| z
  |z  dz  z
  gdt        j                  gg t        z  z  z  dz  | z
  z   | |      z         y )Nr   rR   r   )r4   r^   r   Half)r   r   r   r   r   r   pqs     rg   r   z$_create_lookup_table.<locals>.tmpadd   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#'l2aa=0	2rn         c                    |    }t         j                  |z  t        |      z  t        g dg|dz   z  dg|dz   z  g       fgS r   )r   NegativeOner   rP   subsNrs   r   s     rg   	make_log1z'_create_lookup_table.<locals>.make_log1   sV    G!)A,.aS!a%[1#q1u+r1=? @ 	@rn   c           	     `    |    }t        |      t        dg|dz   z  g g dg|dz   z        fgS r   )r   rP   r   s     rg   	make_log2z'_create_lookup_table.<locals>.make_log2   sH    G1!a!eb"qc1q5k1=? @ 	@rn   c                &     |        |       z   S rb   r   )r   r   r   s    rg   	make_log3z'_create_lookup_table.<locals>.make_log3   s    400rn   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   rt   cr   r   r   r   r   r   r   r   r   r   r   rs   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Orn   )timethisrP   c                    dd}| j                   vry| j                  rt        |       fS t        t	        fd| j
                  D        |            S )z4 Create a hashable entity describing the type of f. c                "    | j                         S rb   )	class_keyry   s    rg   keyz_mytype.<locals>.key/  s    {{}rn   r   c              3  D   K   | ]  }t        |      D ]  }|   y wrb   )r   )rd   r   r   rz   s      rg   rh   z_mytype.<locals>.<genexpr>6  s#     BqGAqMBqBBs    r   )rz   ztype[Basic]returnztuple[int, int, str])free_symbolsis_Functiontypetuplesortedrk   )rf   rz   r   s    ` rg   r   r   -  sG     		
AwxBAFFBLMMrn   c                      e Zd ZdZy)_CoeffExpValueErrorzD
    Exception raised by _get_coeff_exp, for internal use only.
    N)r   r   r   __doc__r   rn   rg   r   r   9  s     	rn   r   c                6   ddl m} t         ||             j                  |      \  }}|s|t        j
                  fS |\  }|j                  r(|j                  |k7  rt        d      ||j                  fS ||k(  r|t        j                  fS t        d| z        )a  
    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   )exprrz   r   r   ms        rg   _get_coeff_expr   @  s    & 'wt}-::1=FQ!&&y
CQxx66Q;%&?@@!%%x	
a!%%x!"?$"FGGrn   c                :    fdt               } | ||       |S )a  
    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                    | |k(  r|j                  dg       y | j                  r,| j                  |k(  r|j                  | j                  g       y | j                  D ]  } |||        y NrR   )updater   r   r+   rk   )r   rz   rm   argument_exponents_s       rg   r   z_exponents.<locals>._exponents_u  s_    19JJsO;;499>JJz"		 	*H!S)	*rn   )set)r   rz   rm   r   s      @rg   
_exponentsr   b  s"    &* %CaJrn   c                    | j                  t              D ch c]  }||j                  v s|j                   c}S c c}w )zB Find the types of functions in expr, to estimate the complexity. )atomsr   r   func)r   rz   es      rg   
_functionsr     s.     JJx0HqA4GAFFHHHs   ==c                    dD cg c]  }t        |g       c}\  fdt               } | |       |S c c}w )ap  
    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}
    pqrq   c                    t        | t              sy | j                  z  z         }|r$|   dk7  r|j                  |    |   z         y | j                  ry | j
                  D ]  } ||        y rw   )
isinstancer   matchr   is_Atomrk   )r   rm   r   r   compute_innermostr   r   rz   s       rg   r   z1_find_splitting_points.<locals>.compute_innermost  sw    $%JJqsQw1GGQqTE!A$J<<		 	-Hh,	-rn   )r   r   )r   rz   rs   	innermostr   r   r   s    `  @@@rg   _find_splitting_pointsr     sE    $ +//QDQC /DAq
- IdI& 0s   Ac                ^   t         j                  }t         j                  }t         j                  }t        |       } t        j                  |       }|D ]  }||k(  r||z  }||j
                  vr||z  }"|j                  r||j                  j
                  vr|j                  j                  |      \  }}||fk7  r't        |j                        j                  |      \  }}||fk(  r9|||j                  z  z  }|t        t        ||j                  z  d            z  }||z  } |||fS )aq  
    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   rz   r   pogrk   r   r   r   s	            rg   
_split_mulr     s    %%C	
B	A!A==D 6!GBann$1HCxxAQUU%7%77vv**1-19%aff-::1=DAq9!QUU(NB:hq!%%xe&DEECFA  A:rn   c                   t        j                  |       }g }|D ]d  }|j                  rE|j                  j                  r/|j                  }|j
                  }|dk  r| }d|z  }||g|z  z  }T|j                  |       f |S )a   
    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+   rx   r   r   )rf   rk   gsr   rs   r   s         rg   	_mul_argsr     s     ==D	B 	88((A66D1uBv4&(NBIIaL	 Irn   c                    t        |       }t        |      dk  ryt        |      dk(  rt        |      gS t        |d      D cg c]  \  }}t	        | t	        | f c}}S c c}}w )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   rz   ys       rg   _mul_as_two_partsr     s^    . 
1B
2w{
2w!|b	{-@Q-GH6AqS!Wc1gHHHs   A"c                   d }t        t        | j                        t        | j                        z
        }|d| j                  z   |dz  z   z  }|dt
        z  |dz
  | j                  z  z  z  }|t         || j                  |       || j                  |       || j                  |       || j                  |      | j                  |z  |||z  z  z        fS )zO Return C, h such that h is a G function of argument z**n and
        g = C*h. c                ~    t        j                  | t        |            D cg c]  \  }}||z   |z   c}}S c c}}w )z5 (a1, .., ak) -> (a1/n, (a1+1)/n, ..., (ak + n-1)/n) )	itertoolsproductrange)paramsrs   r   re   s       rg   inflatez_inflate_g.<locals>.inflate  s3    &/&7&7a&IJdaQ	JJJs   9rR   r   )r   r   r   r   r   r   deltarP   r   aotherr   botherr   )r   rs   r  vCs        rg   
_inflate_gr  	  s    
K 	
#add)c!$$i
 A	AHqsNA!B$1q5!''/	""AggaddA&!(<addA&!(<jj!ma!A#h.0 0 0rn   c                    d }t         || j                         || j                         || j                         || j                        d| j
                  z        S )zQ Turn the G function into one of inverse argument
        (i.e. G(1/x) -> G'(x)) c                2    | D cg c]  }d|z
  	 c}S c c}w r   r   )lr   s     rg   trz_flip_g.<locals>.tr  s     !!A!!!   rR   )rP   r   r  r   r  r   )r   r  s     rg   _flip_gr    sB    "2add8R\2add8R\1QZZ<PPrn   c           	        |dk  rt        t        |       |       S t        |j                        }t        |j                        }t        | |      \  }} | j                  }|dt        z  d|z
  dz  z  |t        dd      z  z  z  }|||z  z  }t        |      D cg c]
  }|dz   |z   }}|t        | j                  | j                  | j                  t        | j                        |z   |      fS c c}w )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^   rs   bss           rg   r  r  "  s     	1ugaj1"--	!##A	!##A aDAq	

A!B$1q5!)	QQ/	//AAIA"1X	&1q5!)	&B	&gaddAHHaddDNR,?CCC 
's   C1zdict[tuple[str, str], Dummy]_dummiesc                T    t        | |fi |}||j                  v rt        | fi |S |S )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  >  s8     	e&v&ADT$V$$Hrn   c                V    | |ft         vrt        | fi |t         | |f<   t         | |f   S )z`
    Return a dummy associated to name and token. Same effect as declaring
    it globally.
    )r  r   )r  r  r  s      rg   r  r  J  s7     %=H$"'"7"7$T5M""rn   c                ^    t        fd| j                  t        t              D               S )z Check if f(x), when expressed using G functions on the positive reals,
        will in fact agree with the G functions almost everywhere c              3  :   K   | ]  }|j                   v   y wrb   )r   rd   r   rz   s     rg   rh   z_is_analytic.<locals>.<genexpr>X  s     Nd1)))Ns   )anyr   r@   r#   )rf   rz   s    `rg   _is_analyticr   U  s$     Naggi6MNNNNrn   c                   |r| j                  d t              } d}t        | t              s| S t	        dt
              \  }t        k  t                    k  ft        t        t                    t        k  t        t              dt        z  z
        t        k        t        t              t        z
  d      ft        t        dt              z  t        z         t        k  t        dt              z  t        z
        t        k        t        t              d      ft        t        dt              z  t        z         t        k  t        dt              z  t        z
        t        k        t        j                  ft        t        t              t        dz  z
        t        dz  k  t        t              t        dz  z         t        dz  k        t        t              d      ft        t        t              t        dz  z
        t        dz  k  t        t              t        dz  z         t        dz  k        t        j                  ft        t        t        dz  dz  dz               t        k  t        t        t        dz  dz  dz               t                    t        j                  ft        t        t        dz  dz  dz               t        k  t        ddz  dz  dz   z  d            t        j                  ft        t        t!                    t        k  t        t!        t#        dt        z  t        j$                  z        z              t        k        t        t!        t#        t        j$                   t        z        z        d      ft        t        t!                    t        dz  k  t        t!        t#        t         t        j$                  z        z              t        dz  k        t        t!        t#        t        j$                   t        z  dz        z        d      ft        k  t        k  |            k  ft        dz  d      dz  dkD  z  dz  dkD  ft        dz  d      t'        t        t                          t              z  dkD  z  t              dkD  ft        d      t'        t        t                          t              z  dkD  z  t              dkD  ft        t                    t        dz  k  t'        t        t                          t)        t        dz              z  dkD  z  dz  dkD  fg} | j*                  | j,                  D cg c]  }t/        ||       c} } d	}|r]d}t1        |      D ]H  \  }\  }}|j*                  | j*                  k7  r$t1        | j,                        D ]  \  }	}
||j,                  d   j2                  v r!|
j5                  |j,                  d         }d}n d}|
j5                  |j,                  d         }|sf|j,                  d
| |j,                  |dz   d
 z   D cg c]  }|j7                  |       }}|	g}|D ]  }t1        | j,                        D ]  \  }}||v r||k(  r||gz  } 0t        |t              rE|j,                  d   |k(  r3t        |t              r#|j,                  d   |j,                  v r||gz  } t        |t              s~|j,                  d   |k(  st        |t              s|j,                  d   |j,                  v s||gz  }   t9        |      t9        |      dz   k7  rt1        | j,                        D cg c]  \  }}||vr| c}}|j7                  |      gz   }t:        r|dvrt=        d|        | j*                  | } d	} H K |r]fd}| j                  d |      } t:        rt=        d|        | S c c}w c c}w c c}}w )a  
    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                    | j                   S rb   is_Relational_s    rg   r{   z_condsimp.<locals>.<lambda>o  s
    aoo rn   Fzp q r)r   r   r   rR   TN)
r   r   r                        zused new rule:c                   | j                   dk7  s| j                  dk7  r| S | j                  }|j                  t	              z        }|s&|j                  t        t              z              }|s\t        |t              rJ|j                  d   j                  s1|j                  d   t        j                  u r|j                  d   dkD  S | S |   dkD  S )Nz==r   rR   )rel_oprhslhsr   r"   r)   r'   r   r*   rk   is_polarr   Infinity)relLHSr   r   r   s      rg   rel_touchupz_condsimp.<locals>.rel_touchup  s    ::AJ ggIIc!fai 		-jmQ.>?@A#01#((1+:N:Nqzz1a(J!qrn   c                    | j                   S rb   r#  r%  s    rg   r{   z_condsimp.<locals>.<lambda>  s
    !// rn   z_condsimp: )replacer   r   rX   r   r   rU   r   rT   r#   r"   r   r   falser   truer)   r,   r   r7   r4   r   rk   	_condsimp	enumerater   r   r   r   r   print)r   firstr   rulesr&  changeirulefrotors   arg1r   numrz   	otherargs	otherlistarg2karg3arg_newargsr7  r   r   s                         @@rg   r<  r<  [  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< 499DII>qyE*>?DF
 )% 0 &	E9Cxx499$$TYY/ #4000

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

388A;/A03##PQ'(AS0ST1QVVAYT	TC	% "D#,TYY#7 "4	>$4<%!,I!%dC0TYYq\Q5F *4 5$))A,$)):S%!,I!%dC0TYYq\Q5F *4 5$))A,$)):S%!,I!"" y>S^a%771:4991E 2IQy0   257WWQZLA$FF.6 tyy'*G#&	 V <<1;?DmT"K ?  U&2s   `=a7a
c                X    t        | t              r| S t        | j                               S )z Re-evaluate the conditions. )r   boolr<  doit)r   s    rg   
_eval_condrQ    s"    $TYY[!!rn   c                P    t        | |      }|s|j                  t         d       }|S )z Bring 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                    | S rb   r   )rz   r   s     rg   r{   z&_my_principal_branch.<locals>.<lambda>  s     rn   )r(   r9  )r   periodfull_pbrm   s       rg   _my_principal_branchrV    s)     4
(Ckk*N;Jrn   c           	     |  	
 t        ||      \  }
t        |j                  |      \  }	|j                         }t        ||      }| t	        	      |
dz   	z  dz
  z  z  z  }	
fd}|t         ||j                         ||j                         ||j                         ||j                        ||z        fS )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                F    | D cg c]  }|dz   z  z   dz
   c}S c c}w r   r   )r  r   r   ss     rg   r  z_rewrite_saxena_1.<locals>.tr  s(    +,-aQUAI!---s   )
r   r   
get_periodrV  r#   rP   r   r  r   r  )r   r   r   rz   r&  r   rT  r  r  r   rY  s            @@rg   _rewrite_saxena_1r[    s     "a DAq!**a(DAq\\^FQ'A 	SVAQ	A&&'A.gbh188bh188c  rn   c                
   | j                   }t        | j                  |      \  }}t        t	        | j
                        t	        | j                        t	        | j                        t	        | j                        g      \  }}}}	||	kD  r_d }
t        t         |
| j
                         |
| j                         |
| j                         |
| j                        ||z        |      S | j
                  D cg c]  }t        |       dk   c}| j                  D cg c]  }ddt        |      z
  k   c}z   }t        | }|| j                  D cg c]  }t        |       dk   c}z  }|| j                  D cg c]  }ddt        |      z
  k   c}z  }t        | }t        | j                         |	dz   |z
  dz  z   |	|z
  kD  }d }d } |d        |d||||||	f        |dt!        | j                        t!        | j                        f        |d	t!        | j
                        t!        | j                        f        |d
|||f       g }g }d|k  ||	k  d|k  g}d|k  d|k  t#        |	|dz         t%        t        t#        |d      t#        ||dz                     g}d|k  t#        |	|      g}t'        t)        |dz        dz         D ]1  }|t+        t-        t/        |            |d|z  z
  t0        z        gz  }3 |dkD  t-        t/        |            |t0        z  k  g}t+        |d      |g}|rg }|||fD ]  }|t        ||z   |z    gz  } ||z  } |d|       |g}|rg }t        t#        |d      |dz   |k  ||	k  t-        t/        |            |t0        z  k  g| g}||z  } |d|       ||g}|rg }t        ||	k  d|k  |dkD  t#        t-        t/        |            |t0        z        g| g}|t        ||	dz
  k  t#        |d      t#        t-        t/        |            d      g| gz  }||z  } |d|       g }|t#        ||	      t#        |d      t#        t/        |      d      t+        |d      gz  }|s||gz  }g }t3        | j                  | j                        D ]  \  }}|||z
  gz  } |t        t5        |       dk  gz  }t        | }||gz  } |d|g       t        |dkD  t-        t/        |            |t0        z  k        g}|s||gz  }t        | }||gz  } |d|g       t7        | S c c}w c c}w c c}w c c}w )aV  
    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                2    | D cg c]  }d|z
  	 c}S c c}w r   r   r  rz   s     rg   r  z _check_antecedents_1.<locals>.tr  s    #$%aAE%%%r  rR   r   c                     t        |   y rb   )_debug)msgs    rg   r\   z#_check_antecedents_1.<locals>.debug"  s	    rn   c                    t        | |       y rb   _debugf)stringr"   s     rg   r]   z$_check_antecedents_1.<locals>.debugf%  s    rn   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   rz   helperr  etar&  r   rs   r   r   r  r   r   tmpcond_3cond_3_starcond_4r\   r]   condscase1tmp1tmp2tmp3rJ  extrar   case2case3
case_extrarY  case_extra_2s                                    rg   rf  rf    st    GGEAJJ*FCCIs144y#add)SY?@JAq!Q1u	&#GBqttHbl,.qttHblAcE%K$%' 	'  !tt
$!BqE6A:
$qtt'D!A1I'D
DC#YF)1RUFQJ))C188,aABqE	M,,Cs)K!$$xi1q519a-'!a%/F 

01
731a#%
?T!$$Zahh89
?T!$$Zahh89
/&+v1NOE EFAE16"DFAFBq!a%L#c"Q(Bq!a%L.I*JKDFBq!HD757#a'( FC+C01EAaCK3CDEEF19c-c23eBh>
?CQZ ED$ +#C%)**+	UNE	+u HEAq1q5A:qAv(-.r9C<AC DE	UNE	+u VEQQ	2c2Ec2J.KUSUX+V  E	c!q1u*blBs3Fs3K/La,PYSXYZZE	UNE	+u J2a8Rq\2.A#.F+JBsTUJWWJvh

AADD!$$ 1	a!eW2c1g;?##Jj!J	j\E	/J<(	3':3'?#@58#KLML %L	l^E	
 <.1
 u:m %'D *,s   8UUU<Uc                   ddl m} t        | j                  |      \  }}d|z  }| j                  D ]  }|t        |dz         z  } | j                  D ]  }|t        d|z
  dz
        z  } | j                  D ]  }|t        d|z
  dz
        z  } | j                  D ]  }|t        |dz         z  }  |t        |            S )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   ry  r   r   r   rN   r   r  r  r%   )r   rz   ry  ri  r&  rm   r   r   s           rg   	_int0oo_1rz  r  s     )AJJ*FC
C%CTT uQU|TT  uQUQY XX  uQUQY XX uQU|Z_%%rn   c                   fd}t        |      \  }}t        |j                        \  }}	t        |j                        \  }}
|	dk  dk(  r|	 }	t        |      }|
dk  dk(  r|
 }
t        |      }|	j                  r|
j                  sy|	j                  |	j
                  }}|
j                  |
j
                  }}t        ||z  ||z        }|||z  z  }|||z  z  }t        ||      \  }}t        ||      \  }} ||      } ||      }| ||z  z  } t        |j                        \  }}t        |j                        \  }}|dz   |z  dz
  | t        |      |z  z  z  } fd}t         ||j                         ||j                         ||j                         ||j                        |z        }t        |j                  |j                  |j                  |j                  |z        }ddlm}  || d      ||fS )	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                    t        | j                        \  }}| j                         }t        | j                  | j
                  | j                  | j                  t        ||      |z  z        S rb   )	r   r   rZ  rP   r   r  r   r  rV  )r   r   r   perrU  rz   s       rg   pbz_rewrite_saxena.<locals>.pb  s^    ajj!,1llnqttQXXqttQXX+AsG<QTAC 	Crn   r   TNrR   c                4    | D cg c]  }|z   	 c}S c c}w rb   r   )r  r   r+   s     rg   r  z_rewrite_saxena.<locals>.tr  s    !"#AC###   	powdenestpolar)r   r   r  is_Rationalr   r   r   r  r#   rP   r   r  r   r  r   r  )r   r   g1g2rz   rU  r~  r&  rY  b1b2m1n1m2n2taur1r2C1C2a1r   a2r  r  r+   s       ``                   @rg   _rewrite_saxenar    s   6C "a DAq2;;*EAr2;;*EAr
Q4SR[
Q4SR[>>TT244BTT244B
r"ube
C	r"uB	r"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%r2--rn   c                .   ./0123456 t         j                  |      \  3}t        j                  |      \  /}t        t         j                        t         j
                        t         j                        t         j                        g      \  }}56t        t        j                        t        j
                        t        j                        t        j                        g      \  }}02||z   56z   dz  z
  }||z   02z   dz  z
  }	 j                  56z
  dz  z   dz   }
j                  02z
  dz  z   dz   }20z
  65z
  z
  }d65z
  z
  |z
  |
z
  }t        2|z
  |z
  z  t        t        /            z   20z
  z  1t        6|z
  |z
  z  t        t        3            z   65z
  z  4t        d       t        d3||56||
f       t        d/||02|	|f       t        d||14f        fd} |       }t         j                  D cg c]'  }j                  D ]  }t        d|z   |z         dkD   ) c}} }t         j
                  D cg c]'  }j
                  D ]  }t        d|z   |z         dk   ) c}} }t         j
                  D cg c]2  }02z
  t        d|z   dz
        z  t        |      z
  t!        d	d      kD  4 c} }t         j                  D cg c]/  }02z
  t        d|z         z  t        |      z
  t!        d	d      kD  1 c} }t        j
                  D cg c]2  }56z
  t        d|z   dz
        z  t        |
      z
  t!        d	d      kD  4 c} }t        j                  D cg c]/  }56z
  t        d|z         z  t        |
      z
  t!        d	d      kD  1 c} }t        |      dt        |
dz
  20z
  z  65z
  20z
  z  z   |dz
  65z
  z  z         z  z   dkD  }t        |      dt        |
dz
  20z
  z  65z
  20z
  z  z   |dz
  65z
  z  z         z  z
  dkD  }t        t        3            |t        z  k  }t#        t        t        3            |t        z        }t        t        /            |	t        z  k  }t#        t        t        /            |	t        z        }t%        ||	z    t        z  t        j&                  z        }t)        |/z  3z        }t)        |3z  /z        } |d| z  k(  r]t        t#        |d      ||	z   dk  t+        t-        |d      t        ||
z   6z   5z
        dk  t        ||
z   2z   0z
        dk              }!nd
 }"t        t#        |d      |dz
  |	z   dk  t+        t        t-        |d       |"|            t        t        ||
z   6z   5z
        dk  t#        |d                        }!t        t#        |d      |	dz
  |z   dk  t+        t        t-        | d       |"|             t        t        ||
z   2z   0z
        dk  t#        | d                        }#t+        |!|#      }!	 	 20z
  t        /      d20z
  z  z  z  t/        1      z  65z
  t        3      d65z
  z  z  z  t/        4      z  z   }$t1        |$dkD        dk7  r|$dkD  }%n/0123456fd}&t3         |&dd       |&dd      z  t        t#        t        3      d      t#        t        /      d            f |&t5        t        /            d       |&t5        t        /            d      z  t        t#        t        3      d      t-        t        /      d            f |&dt5        t        3                   |&dt5        t        3                  z  t        t-        t        3      d      t#        t        /      d            f |&t5        t        /            t5        t        3                  df      }'|$dkD  t        t#        |$d      t-        |'d      t        |      dkD        t        t#        |$d      t#        |'d      t        |      dkD        g}(t+        |( }%|df|df|df|df|df|df|df|df|df|df|df|df|df|!df|%dffD ]  \  })}t        d||)f        g ..fd}*.t        ||z  |z  |z  dk7  |j8                  du |	j8                  du |||||      gz  . |*d       .t        t#        56      t#        |d      |	j8                  du 3j8                  du t        |
      dk  ||||	      gz  . |*d       .t        t#        02      t#        |	d      |j8                  du /j8                  du t        |      dk  ||||	      gz  . |*d       .t        t#        02      t#        56      t#        |d      t#        |	d      3j8                  du /j8                  du t        |      dk  t        |
      dk  t-        3/      |||      gz  . |*d       .t        t#        02      t#        56      t#        |d      t#        |	d      3j8                  du /j8                  du t        ||
z         dk  t-        /3      |||      gz  . |*d       .t        02kD  |j8                  du |j8                  du |	dk\  ||||||
      gz  . |*d       .t        02k  |j8                  du |j8                  du |	dk\  ||||||
      gz  . |*d       .t        56kD  |j8                  du |	j8                  du |dk\  ||||||
      gz  . |*d       .t        56k  |j8                  du |	j8                  du |dk\  ||||||
      gz  . |*d       .t        02kD  t#        56      t#        |d      |	dk\  3j8                  du t        |
      dk  |||||      gz  . |*d       .t        02k  t#        56      t#        |d      |	dk\  3j8                  du t        |
      dk  |||||      gz  . |*d       .t        t#        02      56kD  |dk\  t#        |	d      /j8                  du t        |      dk  |||||      gz  . |*d       .t        t#        02      56k  |dk\  t#        |	d      /j8                  du t        |      dk  |||||      gz  . |*d       .t        02k  56kD  |dk\  |	dk\  |||||||      gz  . |*d       .t        02kD  56k  |dk\  |	dk\  |||||||      gz  . |*d       .t        02kD  56kD  |dk\  |	dk\  |||||||||!      gz  . |*d       .t        02k  56k  |dk\  |	dk\  |||||||||!      gz  . |*d       .t        t#        |d      |j8                  du |j8                  du |j8                  du |||      gz  . |*d        .t        t#        |d      |j8                  du |j8                  du |j:                  du |||      gz  . |*d!       .t        t#        |d      |j8                  du |	j8                  du |j:                  du |||      gz  . |*d"       .t        t#        |d      |j8                  du |	j8                  du |j8                  du |||      gz  . |*d#       .t        t#        ||z  d      |j8                  du |	j8                  du |||||      gz  . |*d$       .t        t#        ||z  d      |j8                  du |	j8                  du |||||      gz  . |*d%       t=         |d&      }+t=        |d&      },.t        |,t#        |d      5|k  |j8                  du ||||      gz  . |*d'       .t        |,t#        |d      6|k  |j8                  du ||||      gz  . |*d(       .t        |+t#        |d      0|k  |	j8                  du ||||      gz  . |*d)       .t        |+t#        |d      2|k  |	j8                  du ||||      gz  . |*d*       t+        . }-t1        |-      dk7  r|-S .t        ||z   0kD  t#        |d      t#        |d      |j8                  du |j8                  du |	j:                  du t        t        /            ||z   0z
  dz   t        z  k  ||||!|%      gz  . |*d+       .t        ||z   2kD  t#        |d      t#        |d      |j8                  du |j8                  du |	j:                  du t        t        /            ||z   2z
  dz   t        z  k  ||||!|%      gz  . |*d,       .t        t#        02dz
        t#        |d      t#        |d      |j8                  du |j8                  du |	dk\  |	t        z  t        t        /            k  ||||!|%      gz  . |*d-       .t        t#        02dz         t#        |d      t#        |d      |j8                  du |j8                  du |	dk\  |	t        z  t        t        /            k  ||||!|%      gz  . |*d.       .t        02dz
  k  t#        |d      t#        |d      |j8                  du |j8                  du |	dk\  |	t        z  t        t        /            k  t        t        /            ||z   0z
  dz   t        z  k  ||||!|%      gz  . |*d/       .t        02dz   kD  t#        |d      t#        |d      |j8                  du |j8                  du |	dk\  |	t        z  t        t        /            k  t        t        /            ||z   2z
  dz   t        z  k  ||||!|%      gz  . |*d0       .t        t#        |d      t#        |d      ||z   dkD  |j8                  du |	j8                  du |j:                  du t        t        3            ||z   5z
  dz   t        z  k  ||||!|%      gz  . |*d1       .t        t#        |d      t#        |d      ||z   6kD  |j8                  du |	j8                  du |j:                  du t        t        3            ||z   6z
  dz   t        z  k  ||||!|%      gz  . |*d2       .t        t#        |d      t#        |d      t#        56dz
        |j8                  du |	j8                  du |dk\  |t        z  t        t        3            k  t        t        3            |dz   t        z  k  ||||!|%      gz  . |*d3       .t        t#        |d      t#        |d      t#        56dz         |j8                  du |	j8                  du |dk\  |t        z  t        t        3            k  t        t        3            |dz   t        z  k  ||||!|%      gz  . |*d4       .t        t#        |d      t#        |d      56dz
  k  |j8                  du |	j8                  du |dk\  |t        z  t        t        3            k  t        t        3            ||z   5z
  dz   t        z  k  ||||!|%      gz  . |*d5       .t        t#        |d      t#        |d      56dz   kD  |j8                  du |	j8                  du |dk\  |t        z  t        t        3            k  t        t        3            ||z   6z
  dz   t        z  k  ||||!|%      gz  . |*d6       t+        . S c c}}w c c}}w c c}w c c}w c c}w c c}w # t6        $ r d}%Y w xY w)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                     fD ]U  } t        j                  | j                  | j                        D ]&  \  }}||z
  }|j                  s|j
                  s%  y W y)NFT)r   r   r   r   
is_integeris_positive)r   re   jdiffr  r  s       rg   _c1z_check_antecedents.<locals>._c1  s^    b 	!A!))!$$5 !11u??t'7'7 !	!
 rn   r   c                L    | dk7  xr t        t        d| z
              t        k  S )a  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   _condz!_check_antecedents.<locals>._cond$  s$     62c#a!e*o22rn   Fc                    | z
  z  t              dz
  z  z  z  t              z  |	z
  z  t              d	z
  z  z  z  t              z  z   S r   )r#   r8   )
c1c2omegar   psir   sigmathetaur  s
     rg   	lambda_s0z%_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rn   r   Tr   r   r(  r)  r*     	   
   r+  r,  r-  r.     z	  c%s: %sc                (    t        d| d   f       y )Nz  case %s: %sr   rc  )countrn  s    rg   prz_check_antecedents.<locals>.prl  s    %r!34rn   r                        )rh  E1E2E3E4                            !   "   #   )r   r   r   r   r   r   r   r   r   r   r#   r)   r`  rd  rT   r    r   r   r+   r   r%   rU   r   r7   rQ  r5   r$   	TypeErrorr  is_negativerf  )7r  r  rz   r&  rY  r   r   rs   bstarcstarrhomuphiri  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_srj  r   r  
mt1_exists
mt2_existsr   rn  r  r   r  r   r  r  r  r  s7   ``                                            @@@@@@@@@rg   _check_antecedentsr    s    bkk1-HE1bkk1-HE1CJBEE
CJBEE
CDJAq!QCJBEE
CJBEE
CDJAq!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
"#?Aq!Qs+-?Aq!Qr*,03S%2HI 
B	"%%?Q?Ar!a%!)}q ? ?	@B	beeCRUUCr!a%!)}u$C$C	DB	OAAr!a%!)}$r"v-Q?O	PB	RUUKAr!a%y 2b6)HRO;K	LB	"%%PQAr!a%!)}$r#w."a@P	QB	beeLAr!a%y 2c7*Xb!_<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 
uu}b 0	1B
RXe^
$C
RXe^
$C
ae|"S!*eemq0RQZBHqL1$4!5!9S1q()A-/0	3 "S!*eai%/14SCU3Z0BHqL1,-12c1:>@A baj%!)e"3q"8SCU3Z0BHqL1,-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#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2PS8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"QqS!*e//479J9Jd9Rb"c3( ) )ErF	c"QqS!*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!a%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c!a%!)R1Xr#qz1==D3H%J[J[_cJcejevevz~e~)%01QUQY]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1QUQY]B4FFb#sC) * *E rF	c	AE	2a8RQZ$)>@Q@QUY@Y[`de[e(S!4U!;<<)%01QUQY]B4FFb#sC	) * *E
 rF	c"Q(BsAJA	1==D3H%J[J[_cJcejevevz~e~)%01QUQY]B4FFb#sC) * *E rF	c"Q(BsAJA	1==D3H%J[J[_cJcejevevz~e~)%01QUQY]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&'1q519q="*<<
BS#	    E
 rF	c
1a"S!*a!a%i$)>@Q@QUY@Y[`de[eb3*5122&'1q519q="*<<
BS#	    E
 rFu:C @COKPLv  sB   ,A\
,A\%
"7A\+04A\0;7A\5	4A\:H#A\? \?A]]A]c                   t        | j                  |      \  }}t        |j                  |      \  }}d } || j                        t        |j                        z   }t        |j
                         || j                        z   } || j                        t        |j                        z   }	t        |j                         || j
                        z   }
t        |||	|
||z        |z  S )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                .    | D cg c]  }|  c}S c c}w rb   r   r^  s     rg   negz_int0oo.<locals>.neg  s    qs   
)r   r   r   r   r   r  r  rP   )r  r  rz   ri  r&  r  r  r  r  r  r  s              rg   _int0oor  	  s    " BKK+FCbkk1-HE1	RUUd255k	!B	bii3ryy>	)B	RUUd255k	!B	bii3ryy>	)B2r2r59-c11rn   c           	     F  	 t        ||      \  }	t        |j                  |      \  }	fd}ddlm}  || |	z  z  z  d      t	         ||j
                         ||j                         ||j                         ||j                        |j                        fS )z Absorb ``po`` == x**s into g. c                :    | D cg c]
  }|z  z    c}S c c}w rb   r   )r  r   r   rY  s     rg   r  z_rewrite_inversion.<locals>.tr+  s    !"#AAaC###s   r   r  Tr  )	r   r   r   r  rP   r   r  r   r  )
r   r   r   rz   r&  r   r  r  r   rY  s
           @@rg   _rewrite_inversionr  &  s    "a DAq!**a(DAq$(c!ac(l$/BqttHblBqttHblAJJOQ Qrn   c                	    t        d        j                  }t        |      \  }}|dk  r t        d       t        t	                     S fdfdt        t         j                        t         j                        t         j                        t         j                        g      \  }}}}||z   |z
  }	||z
  |z
  }
|	|
z
  dz  }||z
  dk(  rt
        j                  }ndkD  rd}nt
        j                  }dz
  dz  t         j                   z   t         j                   z
  z   j                  }t        d|||||	|
|f       t        d	||f        j                  |dz  k\  s|dk\  r||k\  st        d
       yt!        j"                   j                   j                        D ]'  \  }}||z
  j$                  s||kD  st        d        y ||k\  r7t        d       t'         j                  D cg c]  } |dz
  dd|       c} S  fd}fd}fd}fd}g }|t'        d|k  d|k  |t(        z  |z
  t(        dz  k\  |dkD   ||t+        t
        j,                  t(        z  |
dz   z        z              gz  }|t'        |dz   |k  |dz   |k  |dkD  |t(        dz  k  |dk(  ||z
  dz   t(        z  |z
  t(        dz  k\   ||t+        t
        j,                  t(        z  ||z
  z        z         ||t+        t
        j,                   t(        z  ||z
  z        z              gz  }|t'        ||k(  |dk(  |dkD  |z   t(        z  |z
  t(        dz  k\   ||            gz  }|t'        t/        t'        ||dz
  k  d|	k  |	dz  k        t'        |dz   ||z   k  ||z   ||z   dz  k              |dkD  |t(        dz  k  |	dz   t(        z  |z
  t(        dz  k\   ||t+        t
        j,                  t(        z  |
z        z         ||t+        t
        j,                   t(        z  |
z        z              gz  }|t'        d|k  |dkD  |dkD  ||t(        z  z   t(        dz  k  |	|z   t(        z  |z
  t(        dz  k\   ||t+        t
        j,                  t(        z  |
z        z         ||t+        t
        j,                   t(        z  |
z        z              gz  }||dk(  gz  }t/        | S c c}w )z7 Check antecedents for the laplace inversion integral. z#Checking antecedents for inversion:r   z  Flipping G.c           
        t        |      \  }}| |z  } |||z  z  }||z  }g }|t        t        j                  t	        |      z  t
        z  dz        z  }|t        t        j                   t	        |      z  t
        z  dz        z  }	|r|}
n|	}
|t        t        t        |d      t	        |      dk        t	        |       dk        gz  }|t        t        |d      t        t        |      d      t	        |      dkD  t	        |
      dk        gz  }|t        t        |d      t        t        |      d      t	        |      dkD  t	        |
      dk  t	        |       dk        gz  }t        | S )Nr   r   r   )r   r+   r   r   r    r   rT   rU   r   r   r!   )r   r   r   r^   pluscoeffexponentrn  wpwmwrz   s              rg   statement_halfz4_check_antecedents_inversion.<locals>.statement_half<  sO   (A.x	X	UAX	X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rn   c           
     D    t         | |||d       | |||d            S )zW Provide a convergence statement for z**a * exp(b*z**c),
             c/f sphinx docs. TF)rT   )r   r   r   r^   r  s       rg   	statementz/_check_antecedents_inversion.<locals>.statementN  s1     >!Q1d3!!Q1e46 	6rn   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                f    t        j                  D cg c]  } |dz
  dd|        c} S c c}w r   )rT   r   )r^   r   r   r  s     rg   Ez'_check_antecedents_inversion.<locals>.E~  s/    =1Yq1uaA.=>>=s   .c                "      dz  |       S r   r   )r^   r  r  r  s    rg   Hz'_check_antecedents_inversion.<locals>.H  s    %33rn   c                $      dz  | d      S )NrR   Tr   r^   r  r  r  s    rg   Hpz(_check_antecedents_inversion.<locals>.Hp  s    eeVQuWa>>rn   c                $      dz  | d      S )NrR   Fr   r  s    rg   Hmz(_check_antecedents_inversion.<locals>.Hm  s    eeVQuWa??rn   )r`  r   r   _check_antecedents_inversionr  r   r   r   r   r   r   r   NaNr   r  rd  r   r   r  rT   r   r+   r   rU   )r   rz   r^   r&  r   r   rs   r   r   r  r   r  epsilonr  r   r   r  r  r  r  rn  r  r  r  r  s   ``                   @@@@rg   r  r  2  s   
01	

A!QDAq1u+GAJ::$6 CIs144y#add)SY?@JAq!Q
a%!)C	
QB8Q,CEEz&&	%%%i]S!$$Z'#qtt*4e;EGGEG1ab#u-/.%0GH GGqsNqAv!q&>?
 !!!$$- 1E!a%./ 	Av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q519b.5(BqD0Qs1??2-q1u5667QsAOO+B.A6778: ; ;E
 
c!q&!q&%!)7?B&."Q$6!> ? ?E 
c"Sa!eQ#XseAg~>Q!a%Q1q5!));<>!)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&#'519ec"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   S8c                    t        | j                  |      \  }}t        t        | j                  | j
                  | j                  | j                  |||z  z        |       \  }} ||z  | z  S )zO
    Compute the laplace inversion integral, assuming the formula applies.
    )r   r   r  rP   r   r  r   r  )r   rz   r   r   r   r  s         rg   _int_inversionr    s\     !**a(DAq'!$$!$$!AqD&IA2NDAqQ3q5Lrn   c                &
   ! ddl m}m!m}m  t
        si at        t
               t        | t              rt        | j                  |      j                  |      \  }}t        |      dkD  ry|d   }|j                  r&|j                  |k7  s|j                  j                   sy||k7  ryddt        | j"                  | j$                  | j&                  | j(                  ||z        fgdfS | }| j+                  |t,              } t/        | t,              }|t
        v rt
        |   }	|	D ]  \  }
}}}| j1                  |
d      }|si }|j3                         D ]   \  }}t5        t7        |d      d      ||<   " |}t        |t8              s|j+                  |      }|d	k(  r}t        |t8        t:        f      st5        |j+                  |            }t=        |      d	k(  rt        |t>              s ||      }g }|D ]  \  }}tA        t5        |j+                  |      j+                  t,        |      d      |      }	 |j+                  |      j+                  t,        |      }tE        ||fz    jG                  tH        jJ                  tH        jL                  tH        jN                        rt        |j"                  |j$                  |j&                  |j(                  t5        |j                  d            }|jQ                  ||fz           |s||fc S  |sytS        d
        !fd}|} tU        dd|       }d }	  || |||d	d      \  }}} |||||      }|gtW        dd      }|| jX                  vrMt[        | |      rA	  || j+                  |||z        |||dd	      \  }}} |||||      j+                  |d      }|=|jG                  tH        jJ                  tH        j\                  tH        jL                        rtS        d       yt_        j`                  |      }g }|D ]  } | j                  |      \  }}t        |      dkD  rtc        d      |d   }tA        |j                  |      \  }}||dt        |j"                  |j$                  |j&                  |j(                  t5        t7        |d      d      ||z  z        fgz  } tS        d|       |dfS # tB        $ r Y w xY w# |$ r d}Y w xY w# |$ r d}Y Fw xY w)aH  
    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           
         	  | |||dd      S # $ r/ ddl m}   |t        t        |                   |||dd      cY S w xY w)z Calling 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   )FrY  rz   stripr  r  r  s        rg   my_imtz_rewrite_single.<locals>.my_imt
  s_    
	0+Aq!U7;dL L( 	0/+q	*+Q5$0 0	0s    1AArY  zrewrite-singlec           	     &   t        | |d      }|Wddlm} |\  }}t         ||d            }t	        ||ft        | |t        j                  t        j                  f      df      S t        | |t        j                  t        j                  f      S )NT)only_doubler   hyperexpandnonrepsmall)rewrite)	_meijerint_definite_4r   r  _my_unpolarifyr5   rS   r   r   r4  )rf   rz   r   r  rm   r   s         rg   my_integratorz&_rewrite_single.<locals>.my_integrator  s    !!QD9=2IC S-!HICc4[&q1affajj*ABDIK KAqvvqzz233rn   )
integratorr  r  r   )r  r  r  z"Recursive Mellin transform failed.zUnexpected form...z"Recursive Mellin transform worked:)2
transformsr  r  r  r  _lookup_tabler   r   rP   rZ   r   r   r   r   r   r+   r  r   r  r   r  r   r^   r   r   itemsr%   r&   rO  rV   rQ  r   r   
ValueErrorr
   rl   r   r4  ComplexInfinityNegativeInfinityr   r`  r  r  r   r   r   r   r   NotImplementedError)"rf   rz   	recursiver  r  r  r   f_r   r  r   termsr   r   r   subs_rC  rD  rm   r   r   r  r  rY  r  r  r  r&  r   rk   r   r   r  r  s"                                   @@rg   _rewrite_singler(    s   ; ; ]+!W!**a(55a8qq6A:aD88vv{!%%"3"3!VAwqttQXXqttQXXuQwGHI4OO	
B	q!A1AM!*+ #	%&GUD$7777-D#zz| AGC!+HRd,C;?"AE#JA !$-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 ahhahh *1::d KMAJJrQDy)* 9$G#	%L 
670 	As$a(A4&q!Q=05F5!1aE" 	y C)*ANN"|Aq'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_ & ! !` "  * s7    %S'S7 	A T '	S43S47TTTTc                Z    t        | |      \  }}}t        |||      }|r|||d   |d   fS y)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   r(  )rf   rz   r$  r   r   r   s         rg   	_rewrite1r*  J  sC     Aq!JCQ1i(AB!ad"" 	rn   c           	        t        |       \  }}}t        fdt        |      D              ryt        |      }|syt	        t        |fdfdfdg            }t        j                  d|      D ]N  \  }\  }}t        ||      }	t        ||      }
|	s&|
s)t        |	d   |
d         }|dk7  sA|||	d	   |
d	   |fc S  y)
a  
    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  <   K   | ]  }t        |d       du   yw)FN)r(  r  s     rg   rh   z_rewrite2.<locals>.<genexpr>a  s     
Lt?4E*d2
Ls   Nc           	     t    t        t        t        | d               t        t        | d                     S Nr   rR   )maxr   r   r   rz   s    rg   r{   z_rewrite2.<locals>.<lambda>g  .    #c*QqT1-.JqtQ4G0HI rn   c           	     t    t        t        t        | d               t        t        | d                     S r.  )r/  r   r   r0  s    rg   r{   z_rewrite2.<locals>.<lambda>h  r1  rn   c           	     t    t        t        t        | d               t        t        | d                     S r.  )r/  r   r   r0  s    rg   r{   z_rewrite2.<locals>.<lambda>i  s3    #c01q9:01q9:< rn   FTrR   Fr   )
r   r  r   r   r   r   r   r   r(  rT   )rf   rz   r   r   r   r  r$  fac1fac2r  r  r   s    `          rg   	_rewrite2r7  X  s     Aq!JCQ

Ly|
LL!AWQII	<= > 	?A $-#4#4]A#F 3	<D$T1i0T1i0"r!ube$Du}B1r!ud223rn   c                v   t        |       } g }t        t        | |      t        j                  hz  t
              D ]c  }t        | j                  |||z         |      }|s%|j                  |||z
        }t        |t        t              r|j                  |       a|c S  | j                  t              rnt        d       t        t!        |       |      }|rLt#        |t$              s+ddlm}  |t+        |      |j-                  t.                    S |j1                  |       |rt3        t5        |            S y)a#  
    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   rl   r2   r`  meijerint_indefiniter1   r   r   sympy.simplify.radsimpr;  r   r   r+   extendnextr   )rf   rz   resultsr   rm   rvr;  s          rg   r=  r=  u  s    	
AG*1a0AFF8;AQR %affQA&6:hhq!a% UG$NN3J 	uu ;<!'*A/b$':|B/#??NN2GG$%% rn   c           	     x   t        d| d       ddlm}m} t	        |       }|y|\  }}}}t        d|       t
        j                  }	|D ]  \  }
}}t        |j                        \  }}t        |      \  }}||z  }||
z  d|z   z  z  |z  }|dz   |z  t        dd	t
        j                        }fd
}t        d  ||j                        D              rit        t        |j                        t        |j                         dz
  gz   t        |j                         gz   t        |j"                        |       }ngt        t        |j                        dz
  gz   t        |j                         t        |j                        t        |j"                         gz   |      }|j$                  rA| j'                  d      j)                  t
        j*                  t
        j,                        sd}nd} ||j'                  |||z  z        |      }|	 |||z  d      z  }	 fd}t/        |	d      }	|	j0                  r;g }|	j2                  D ]  \  }}t5         ||            }|||fgz  }  t7        |ddi}	nt5         ||	            }	t7        |	t5        |      ft9        |       df      S )z0 Helper that does not attempt any substitution. z,Trying to compute the indefinite integral ofwrtr   )r  r  Nz could rewrite:rR   r   zmeijerint-indefinitec                4    | D cg c]  }|z   	 c}S c c}w rb   r   )r   r   r  s     rg   r  z#_meijerint_indefinite_1.<locals>.tr  s    %&'AG'''r  c              3  H   K   | ]  }|j                   xr |d k  dk(    yw)r   TN)r  )rd   r   s     rg   rh   z*_meijerint_indefinite_1.<locals>.<genexpr>  s%     CQq||0aD 00Cs    ")placeTr  c                ~    t        t        |       d      } t        j                  | j	                        d         S )a  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)rm   rz   s    rg   _cleanz'_meijerint_indefinite_1.<locals>._clean  s4    . 51~~c..q1!455rn   )evaluaterM  F)r`  r   r  r  r*  r   r   r   r   r  r   r  r   rP   r   r   r  r  is_extended_nonnegativer   rl   r   r!  r6   r`   rk   r  r5   rS   )rf   rz   r  r  r   r   r   glr   rm   r  rY  r   r   r   r&  r   fac_r   r  r   rG  rL  rM  r   r  s    `                       @rg   r<  r<    s   
91eQG5	1aB	zCR
b!
&&C %-1aajj!,1b!$1	Q QwQU#a'1uai 3.6	(C"QTT(CCQTT
DNaeW4d144jSD66I4PQPXPX>[\^ ^A QTT
aeW$d188nd144j$qxx.UXTXSYBY[\^A $$QVVAq\-=-=aeeQEVEV-WEEq!AqD&)7 	yat,,K%-N64 t
,C
HH 	 DAqvay)AAxG	  151VC[)c>$/08Aq>42HIIrn   c                v	   t        d| |||f       t        |       } | j                  t              rt	        d       y| j                  t
              rt	        d       y| |||f\  }}}}t        d      }| j                  ||      } |}||k(  rt        j                  dfS g }	|t        j                  u r3|t        j                  ur!t        | j                  ||       || |       S |t        j                  u rt	        d       t        | |      }
t	        d|
       t        |
t        d	      t        j                  gz   D ]  }t	        d
|       |j                   st	        d       't#        | j                  |||z         |      }|t	        d       Tt#        | j                  |||z
        |      }|t	        d       |\  }}|\  }}t%        t'        ||            }|dk(  rt	        d       ||z   }||fc S  n|t        j                  u r't        | ||t        j                        }|d    |d   fS ||ft        j                  t        j                  fk(  r7t#        | |      }|rt)        |d   t*              r|	j-                  |       n~|S |t        j                  u rt        | |      D ]v  }||z
  dk\  dk(  st        d|       t#        | j                  |||z         t/        ||z   |z
        z  |      }|sOt)        |d   t*              r|	j-                  |       t|c S  | j                  |||z         } ||z
  }d}|t        j                  urit1        t        j2                  t5        |      z        }t7        |      }| j                  |||z        } | t/        ||z
        |z  z  } t        j                  }t	        d||       t	        d|        t#        | |      }|r't)        |d   t*              r|	j-                  |       n|S |j                  t8              rt	        d       t        t;        |      |||      }|r[t=        |t>              s:ddl m!}  |tE        |d         |d   jG                  t0                    f|dd z   }|S |	jI                  |       |	rtK        tM        |	            S y)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.rz   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 tor9  r:  )'rd  r   rl   r?   r`  rQ   r   r   r   r   r"  r4  meijerint_definiter   r   r   is_extended_real_meijerint_definite_2r<  rT   rc   rP   r   r@   r+   r   r"   r#   r2   r1   r   r   r>  r;  r   r   r?  r@  r   )rf   rz   r   r   r%  x_a_b_r  rA  r   r   res1res2cond1cond2r   rm   splitr  rB  r;  s                         rg   rS  rS    s_   < 2Q1aLA
AuuZ<=uu !FG1aZNBB 	c
A	q!A	AAv~GA1AJJ#6!!&&QB-QB;;	
a  	 *+*1a0	-y9	'7F!&&Q 	A)1-%%45(1q5)91=D|@A(1q5)91=D|ABKD%KD%S./Du}BC+C9)	, 
ajj Aq!**5AwA
QAFFAJJ'	'#Aq)CFG$s#
 

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

A"Aq)$a(#Aq)CFG$s#
	vv !;<'+RR9b$':l2a512a5;;s3CDFABO	NN2GG$%% rn   c                   | dfg}|d   d   }|h}t        |      }||vr||dfgz  }|j                  |       t        |      }||vr||dfgz  }|j                  |       |j                  t        t
              r1t        t        |            }||vr||dfgz  }|j                  |       |j                  t        t              r+ddl	m
}  ||      }||vr||dfgz  }|j                  |       |S )	z6 Try 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   rl   r:   r2   r   r7   r8   sympy.simplify.fur_  )rf   rz   rm   origsawexpandedr_  reduceds           rg   _guess_expansionre    s   #$
%Cr71:D&C$Hs<())d|Hs8$%%xx%'9:k$/03X89::CGGHxxS3%#W4566CGGGJrn   c                    t        dd| d      }| j                  ||      } |}| dk(  rt        j                  dfS t	        | |      D ]#  \  }}t        d|       t        ||      }|s!|c S  y)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.
    rz   zmeijerint-definite2T)positiver   TryingN)r  r   r   r   re  r`  _meijerint_definite_3)rf   rz   dummyr   explanationrm   s         rg   rU  rU    sw      3-q4@E	q%AAAvvvt|*1a0 ;x%#Aq)J	rn   c                J   t        | |      }|r
|d   dk7  r|S | j                  rzt        d       | j                  D cg c]  }t        ||       }}t	        d |D              r9g }t
        j                  }|D ]  \  }}||z  }||gz  } t        | }|dk7  r||fS yyyc c}w )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  $   K   | ]  }|d u 
 y wrb   r   )rd   r   s     rg   rh   z(_meijerint_definite_3.<locals>.<genexpr>  s     +q}+s   N)r  is_Addr`  rk   rj   r   r   rT   )rf   rz   rm   r   ressrn  r   r   s           rg   ri  ri    s      1
%C
s1v
xx4556VV<%a+<<+d++E&&C 1q! UAEzAv  , <s   B c                *    t        t        |             S rb   )rQ  r%   )rf   s    rg   r  r    s    jm$$rn   c                   ddl m} t        d|        |st        | |d      }||\  }}}}t        d|||       t        j
                  }	|D ]U  \  }
}} |
dk(  rt        ||
z  |||z  z  | |      \  }
} |	|
t        | |      z  z  }	t        |t        | |            }|dk(  sU n t        |      }|dk(  rt        d       nt        d	|	       t         ||	            |fS t        | |      }|d
D ]  }|\  }}}}}t        d||||       t        j
                  }	|D ]  \  }}}|D ]{  \  }}}t        ||z  |z  ||||z   z  z  ||||      }|t        d          y|\  }
}}t        d|
||       t        |t        |||            }|dk(  r n|	|
t        |||      z  z  }	}  n t        |      }|dk(  rt        d|       t        d|	f       |r|	|fc S t         ||	            |fc S  yy)a  
    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   r  IntegratingF)r$  N#Could rewrite as single G function:But cond is always False.z&Result before branch substitutions is:r4  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   r  r`  r*  r   r   r[  rz  rT   rf  r  r7  r  r  r  rd  )rf   rz   r  r  r   r   r   r   r   rm   r  rY  rU  r  r  r  s1f1r  s2f2r   f1_f2_s                           rg   r  r    sX    +
=!q!u->!CQ8#r1E&&C 1a6(Q1a4A>1q1a((4!5a!;<5= "$'Du}23?E%k#&67== 
1aB	~$ 	>G$&!CRT6RRH&&C  
B"$ JBB'Br	2a"r'l?(*B7<Ay89"#KAsC63Dt%7S!%DEDu}1WS#q111C   "$'Du}@'JCcWM9$%k#&67==7	> rn   c           	        | }|}t        dd      }| j                  ||      } t        d|        t        | |      st        d       yt        j
                  }| j                  rt        | j                        }nt        | t              r| g}nd}|r\g }g }|rE|j                         }	t        |	t              rmt        |	      }
|
j                  r||
j                  z  }J	 t        |	j                  d   |      \  }}|dk(  r|j                         n|j                  |	       n|	j                   rt        |	      }
|
j                  r||
j                  z  }||	j"                  j$                  vrF	 t        |	j                  |      \  }}|dk(  r'|j                  t'        |	j"                        z         |j                  |	       n|j                  |	       |rEt)        | }t+        | } || j$                  vrnt        d	| |       t-        t/        |      d      }|d
k(  rt        d       y| t1        ||z         z  }t        d||       t3        |j                  ||      |f      S t5        | |      }|U|\  }}}}t        d|||       t        j
                  }|D ]P  \  }}} t7        ||z  |||z  z  | |      \  }} ||t9        | ||      z  z  }t;        |t=        | |            }|d
k(  sP n t?        |      }|d
k(  rt        d       yt        d|       ddl m!} t?         ||            }|jE                  tF              s|tG        |      z  }|j                  |||z         }t        |tH              s|j                  |||z         }ddl%m&} t3        |j                  ||      |f ||j                  ||      ||d      df      S y# t        $ r d}Y w xY w# t        $ r d}Y dw xY w)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:rs  rt  z"Result before branch substitution:r  )InverseLaplaceTransform)'r   r   r`  r   r   r   is_Mulr   rk   r   r+   popr   r   r   r   r   r   r   r-   r   r   r   r!   r?   r5   r*  r  r  rT   r  r  r   r  rl   r@   rO  r  r|  )rf   rz   r   r%  t_shiftrk   rM  exponentialsr"   rI  r   r   r   rm   r   r   r   r   r  rY  r  r|  s                          rg   meijerint_inversionr  !  s   $ 
B	
BcA	r1A
"101 FFExxAFF|	As	s((*C#s#c{;;DII%D)#((1+q9DAq 6 ''*NN3'c{;;DII%DCHH111-cggq91 Av$++Ac#((mO<s#s#; < \"M?EJ"U)Q5=HI
1u9%%BCN#((1b/4011	1aB	~RD4c2qAff 	GAq!%c!eR1Wa;DAq1^Aq!,,,Ct9!Q?@Du}	 d#5=./7=2 S!12C779%y|#((1a%i(CdD)yyAI.;chhq"ot45bgganaTRTXY[ [/ I + A / s$   "O 3O" OO"O10O1)rf   r   rz   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]   rd  r^   rc   r   sympy.utilities.timeutilsr   timeitr   r   r   r   r   r   r   r   r   r   r  r  r  r  __annotations__r  r  r   r<  rQ  rV  r[  rf  rz  r  r  r  r  r  r  r  r(  r*  r7  r=  r<  rS  re  rU  ri  r  r  r  r   rn   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2 +-
& ,	#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[rn   