
    Ed:                       d Z ddlZddlmZm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mZmZmZmZ ddlmZ ddlmZmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZAmBZBmCZCmDZD ddlEmFZF ddlGmHZHmIZI ddlJmKZKmLZLmMZMmNZN ddlOmPZPmQZQmRZRmSZS ddlTmUZUmVZV ddlWmXZXmYZY ddlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe ddlfmgZg ddlhmiZimjZj ddlkmlZl d d!lmmnZn dd"lompZpmqZqmrZrmsZsmtZt dd#lumvZvmwZw dd$lxmyZy dd%lzm{Z|  e'd&          Z}d' Z~d( Zdd)lmZ  ed*          Zd+ Z G d, d-e          Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zi ad8 Zd9 Zd: ZdUd<Zd= ZdVd?Zd@ ZdVdAZdB ZdVdCZdD ZdE ZdF ZdG ZdH ZdaeedUdI                        ZdUdJZdK ZdL ZdM ZedN             ZdO ZdP ZdQ ZdR ZedVdS            ZdT ZdS )Wa  
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
    N)DictTuple)SYMPY_DEBUG)SExpr)Add)cacheit)r   )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)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zc                     t          |           } t          | dd          r t          fd| j        D                       S  | j         S )Nis_PiecewiseFc              3   2   K   | ]}t          |gR  V  d S N)_has).0ifs     9lib/python3.11/site-packages/sympy/integrals/meijerint.py	<genexpr>z_has.<locals>.<genexpr>R   s/      1114;A;;;111111    )r5   getattrallargshas)resrd   s    `re   ra   ra   M   sY     

CsNE** 2111111111137A;rg   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k                          
t          z
            z
  	dz
  z  z  g 	gdgg z  t          	          	dz
  z  z  t          dk                          
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k                          
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k                          
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          j         t          z            t          j        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             dS )z8 Add formulae for the function -> meijerg lookup table. c                 0    t          | t          g          S )Nexclude)r   r\   )ns    re   wildz"_create_lookup_table.<locals>.wildX   s    As####rg   pqabcrq   c                     | j         o| dk    S Nr   )
is_Integer)xs    re   <lambda>z&_create_lookup_table.<locals>.<lambda>[   s    (>Q rg   )
propertiesTc	                     	                     t          | t                    g                               | |t	          |||||          fg||f           d S r`   )
setdefault_mytyper\   appendrO   )
formulaanapbmbqr!   faccondhinttables
            re   addz!_create_lookup_table.<locals>.add^   sl    !,,b1188''*GBBC,H,H&I%JDRV:X 	Y 	Y 	Y 	Y 	Yrg   c                                          t          | t                    g                               | |||f           d S r`   )r{   r|   r\   r}   )r~   instr   r   r   s       re   addiz"_create_lookup_table.<locals>.addib   sD    GQ	% 	%%+VWdD$,G%H%H%H%H%Hrg   c           	      r    | t          dgg g dgt                    f| t          g dgdgg t                    fgS NrQ   r   )rO   r\   )as    re   constantz&_create_lookup_table.<locals>.constantf   sD    GQCR!a001GBaS"a0013 	3rg    c                   $    e Zd Zed             ZdS )2_create_lookup_table.<locals>.IsNonPositiveIntegerc                 B    t          |          }|j        du r|dk    S d S )NTr   )r$   rv   )clsr!   s     re   evalz7_create_lookup_table.<locals>.IsNonPositiveInteger.evaln   s/    S//C~%  ax   rg   N)__name__
__module____qualname__classmethodr   r   rg   re   IsNonPositiveIntegerr   l   s-        		  	  
	  	  	 rg   r   rQ   r   )r      c                 X    t           t          dd          z  | |z  dz  dd| z  z
  z  z  S )Nr   rQ   )r   r   )rr#   nus      re   A1z _create_lookup_table.<locals>.A1   s1    8B??"TE"HQJ!ac'#:::rg   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             d S )Nr   rQ   r2   )r   sgnr   r   r   bts     re   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&	( 	( 	( 	( 	(rg   r   c                 f    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             d S )Nr   rQ   r   )r3   r\   r   Half)r   r   r   r   r   r   pqs     re   r   z$_create_lookup_table.<locals>.tmpadd   s    T!a1f*DGGA!H 44q8!a1f*qHUSU1W_AAa01af+radF1Ha!A#'l22aa==0	2 	2 	2 	2 	2rg         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   rO   subsNrq   r   s     re   	make_log1z'_create_lookup_table.<locals>.make_log1   sY    G!)A,,.aS!a%[1#q1u+r1==? @ 	@rg   c           	      v    |          }t          |          t          dg|dz   z  g g dg|dz   z            fgS r   )r   rO   r   s     re   	make_log2z'_create_lookup_table.<locals>.make_log2   sM    G1!a!eb"qc1q5k1==? @ 	@rg   c                 2     |            |           z   S r`   r   )r   r   r   s    re   	make_log3z'_create_lookup_table.<locals>.make_log3   s    y400rg   z3/2   NT)-listmapr   r\   r   Oner   r?   rM   rS   rV   r"   r7   r   r   r   r*   r&   r/   r   r.   r3   r6   r8   r,   rO   rE   ImaginaryUnitr   rG   rH   rI   rJ   rF   rB   rC   rD   rK   rL   r:   r;   r<   r=   r@   rA   )r   rr   cr   r   r   r   r   r   r   r   r   r   r   rq   r   r   r   s   `       @@@@@@@@@@re   _create_lookup_tabler   V   s$   $ $ $T7++,,MAq!QS>>?@@@A	!Q$A)*Dt Y Y Y Y Y YI I I I I I3 3 3 XXa[[$-.E"I         x       C	!a%!a%1q5))A3BQqSaQUSQZZ) ) )C	!a%!a%1q5))2sQCQqSaQUSQZZ) ) )C	!qsacl"##QUa!e$44qc2rA3!aQUSQZZ) ) )C	1Q3!A#,"##QUa!e$44b1#sB!aQUSQZZ) ) )CQ1"AwQCQqS!qb'%((2B%%a(())+ + + +CAE

aR1q5'QUAI;q1uai[!A#	#bd1f++eAEll"3q66QB</A< < <CA1q1u1vrAq62qs	AE
3qt99R! ! !; ; ;( ( ( ( ( ( ( ( ( F1aLLL
F1bMMM
F161
F1622 2 2 2 2 2 2 2 2 2 F1aLLL
F1bMMM
F161
F162 CJrNN1r2sB/// CQaS16(QFAqDFBA4FGGGCQafXsQVQV$4ad1fb(1a..>PQQQ CAB1#q!tAvtBxx888CABafXq!tAvtBxx888 CQR!xA/Aab!DDD@ @ @ @ @ @
@ @ @ @ @ @ 	DQ9QU##	#Y555DQ9QU##	#Y5551 1 1 1 1 1DQIt$$$DQU	#a&&		aeWaVR!qc1Q3%G%GHI	I	   	DSQZZ((3s1vv;;//w1vx!q!&k1Q3??
@	AB	   	DA	1?"2%	&	&1='"qcAq6SUJrNN";$ ;$ +% *& 
&	   C1sB1a&!Q$q&$r((1*===C1rA3A!Q$q&488)A+>>> CA"qcHROOXb!__#EzRT~~VWYZVZGZ[\G\	$r((
1  CAQVQK!Q!&!&)91a46
AeHHDD    Cq!b1#Aqz2q111 CAR!&A31aRj999CQaS1af+r1a4488<<< CQ!&2sXb!__$51uaRjIII CaS"x1~~.HQNN0CRU1a4ZPR]TUTZ[[[CaS"x1~~.HQNN0CRU1a4ZPR]TUTZ[[[ C1r2!ur!tfad1f555 C1ra!eHQJ<!A#r!tQxzlAqDFKKK6 C1rQUAI;11q1uai/@!Q$q&"MMM C1r2!aRT{B1Q??? C
1'aS1#r16BBBC
1!&)2sQC!Xb!__Q=NOOOOOrg   )timethisrO   c                     | j         vrdS | j        rt          |           fS fd| j        D             }g }|D ]}|t	          |          z  }|                                 t          |          S )z4 Create a hashable entity describing the type of f. r   c                 0    g | ]}t          |          S r   )r|   )rb   r   rw   s     re   
<listcomp>z_mytype.<locals>.<listcomp>2  s!    ///1A///rg   )free_symbolsis_Functiontyperj   r   sorttuple)rd   rw   typesrl   r   s    `   re   r|   r|   +  s     
r	
 Qz/////// 	 	A477NCC


Szzrg   c                       e Zd ZdZdS )_CoeffExpValueErrorzD
    Exception raised by _get_coeff_exp, for internal use only.
    N)r   r   r   __doc__r   rg   re   r   r   :  s          	Drg   r   c                 2   ddl m} t           ||                                         |          \  }}|s|t          j        fS |\  }|j        r#|j        |k    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   )exprrw   r   r   ms        re   _get_coeff_expr   A  s    & '&&&&&wwt}}--::1==FQ !&y
CQx H6Q; 	A%&?@@@!%x	
a H!%x!"?$"FGGGrg   c                 H    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|                     dg           d S | j        r(| j        |k    r|                     | j        g           d S | j        D ]} |||           d S NrQ   )updater   r   r*   rj   )r   rw   rl   argument_exponents_s       re   r   z_exponents.<locals>._exponents_v  s    19 	JJsOOOF; 	49> 	JJz"""F	 	* 	*HK!S))))	* 	*rg   set)r   rw   rl   r   s      @re   
_exponentsr   c  s@    &* * * * * %%CKaJrg   c                 P    fd|                      t                    D             S )zB Find the types of functions in expr, to estimate the complexity. c                 0    h | ]}|j         v |j        S r   )r   func)rb   erw   s     re   	<setcomp>z_functions.<locals>.<setcomp>  s'    HHHqA4GHAFHHHrg   )atomsr   )r   rw   s    `re   
_functionsr     s)    HHHHDJJx00HHHHrg   c                 t    fddD             \  fdt                      } | |           |S )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}
    c                 4    g | ]}t          |g           S )ro   )r   )rb   rq   rw   s     re   r   z*_find_splitting_points.<locals>.<listcomp>  s(    ///QDQC   ///rg   pqc                    t          | t                    sd S |                     z  z             }|r3|         dk    r'|                    |          |         z             d S | j        rd S | j        D ]} ||           d S ru   )
isinstancer   matchr   is_Atomrj   )r   rl   r   r   compute_innermostr   r   rw   s       re   r   z1_find_splitting_points.<locals>.compute_innermost  s    $%% 	FJJqsQw 	1 	GGQqTE!A$JF< 	F	 	- 	-Hh,,,,	- 	-rg   r   )r   rw   	innermostr   r   r   s    ` @@@re   _find_splitting_pointsr     sq    $ 0///$///DAq
- 
- 
- 
- 
- 
- 
- 
- IdI&&&rg   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        	                    |          \  }}||fk    r*t          |j                  	                    |          \  }}||fk    r7|||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%   )	rd   rw   r   pogrj   r   r   r   s	            re   
_split_mulr     s4    %C	
B	A!A=D  6 	!GBBan$ 	1HCCx AQU%77 v**1--19 >%af--::1==DAq9 !QU(NB:hq!%xe&D&D&DEEECFAAA:rg   c                     t          j        |           }g }|D ]P}|j        r2|j        j        r&|j        }|j        }|dk     r| }d|z  }||g|z  z  };|                    |           Q|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   rQ   )r   r   r   r*   rv   r   r}   )rd   rj   gsr   rq   r   s         re   	_mul_argsr     s     =D	B 	 	8 	( 	A6D1u Bv4&(NBBIIaLLLLIrg   c                     t          |           }t          |          dk     rdS t          |          dk    rt          |          gS d t          |d          D             S )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   Nc                 8    g | ]\  }}t          | t          | fS r   r   )rb   rw   ys      re   r   z%_mul_as_two_parts.<locals>.<listcomp>  s)    HHH6AqS!Wc1gHHHrg   )r   lenr   rZ   )rd   r   s     re   _mul_as_two_partsr     se    . 
1B
2ww{ t
2ww!| b		{HH-@Q-G-GHHHHrg   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                 `    fdt          j        | t                              D             S )z5 (a1, .., ak) -> (a1/n, (a1+1)/n, ..., (ak + n-1)/n) c                 &    g | ]\  }}||z   z  S r   r   )rb   r   rc   rq   s      re   r   z/_inflate_g.<locals>.inflate.<locals>.<listcomp>  s%    JJJdaQ	JJJrg   )	itertoolsproductrange)paramsrq   s    `re   inflatez_inflate_g.<locals>.inflate  s0    JJJJi&7a&I&IJJJJrg   rQ   r   )r   r   r   r   r   r   deltarO   r   aotherr   botherr   )r   rq   r  vCs        re   
_inflate_gr	  
  s    
K K K 	
#ad))c!$ii
  A	AHqsNA!B$1q5!'/	""AgggadA&&!(<(<gadA&&!(<(<j!ma!A#h.0 0 0 0rg   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                     d | D             S )Nc                     g | ]}d |z
  S rQ   r   rb   r   s     re   r   z'_flip_g.<locals>.tr.<locals>.<listcomp>  s    !!!!A!!!rg   r   ls    re   trz_flip_g.<locals>.tr  s    !!q!!!!rg   rQ   )rO   r   r  r   r  r   )r   r  s     re   _flip_gr    sU    " " "22ad88RR\\22ad88RR\\1QZ<PPPrg   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  }fdt                    D             }|t          | j        | j        | j        t          | j                  |z   |          fS )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   rQ   r   c                      g | ]
}|d z   z  S r  r   )rb   rq   r   s     re   r   z"_inflate_fox_h.<locals>.<listcomp>9  s!    	&	&	&1q5!)	&	&	&rg   )_inflate_fox_hr  r   r   r   r	  r   r   r   r  rO   r   r  r   r   r  )r   r   r   Dr\   bsr   s         @re   r  r  #  s     	1u .gajj1"---	!#A	!#A aDAq	
A!B$1q5!)	QQ/	//AAIA	&	&	&	&U1XX	&	&	&BgadAHadDNNR,?CCCCrg   c                 N    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        re   _dummyr  ?  sF     	e&&v&&AD %T$$V$$$Hrg   c                 d    | |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.
    )_dummiesr   )r  r  r  s      re   r  r  K  sB     %=H$ 8"'"7"7"7"7$T5M""rg   c                 x    t          fd|                     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 V  d S r`   )r   rb   r   rw   s     re   rf   z_is_analytic.<locals>.<genexpr>Y  s+      NNd1))NNNNNNrg   )anyr   r?   r"   )rd   rw   s    `re   _is_analyticr%  V  s9     NNNNaggi6M6MNNNNNNNrg   Tc                 8   r|                      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k    z  dz  dk    ft          dz  d          t'          t          t                                        t                    z  dk    z  t                    dk    ft          d          t'          t          t                                        t                    z  dk    z  t                    dk    ft          t                              t          dz  k     t'          t          t                                        t)          t          dz                      z  dk    z  dz  dk    fg} | j        t-          t/          fd	| j                             } d
}|r;d}t3          |          D ]%\  }\  }}|j        | j        k    rt3          | j                  D ]\  }}	||j        d         j        v r#|	                    |j        d                   d}
n"d}
|	                    |j        d                   sbfd|j        d|
         |j        |
dz   d         z   D             }|g|D ]}t3          | j                  D ]\  }}|v r
||k    r|gz   nt          |t                    rB|j        d         |k    r1t          |t                    r|j        d         |j        v r|gz   nXt          |t                    rB|j        d         |k    r1t          |t                    r|j        d         |j        v r|gz   nǌt9                    t9          |          dz   k    rfdt3          | j                  D             |                              gz   }t<          r|dvrt?          d|            | j        | } d
} '|;fd}|                      d |          } t<          rt?          d|            | S )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 r`   is_Relational_s    re   rx   z_condsimp.<locals>.<lambda>p  s    ao rg   Fzp q r)r   r   r   rQ   c                 $    t          |           S r`   )	_condsimp)r+  firsts    re   rx   z_condsimp.<locals>.<lambda>  s    1e)<)< rg   Tc                 :    g | ]}|                               S r   r   )rb   rw   r   s     re   r   z_condsimp.<locals>.<listcomp>  s#    TTT1QVVAYYTTTrg   Nc                 "    g | ]\  }}|v	|S r   r   )rb   karg_	otherlists      re   r   z_condsimp.<locals>.<listcomp>  s6     2 2 2IQy024 2 2 2rg   )
r   r   r                        zused new rule:c                    | j         dk    s| j        dk    r| S | j        }|                    t	                    z            }|s2|                    t          t                    z                      }|sSt          |t                    r<|j	        d         j
        s*|j	        d         t          j        u r|j	        d         dk    S | S |         dk    S )Nz==r   rQ   )rel_oprhslhsr   r!   r(   r&   r   r)   rj   is_polarr   Infinity)relLHSr   r   r   s      re   rel_touchupz_condsimp.<locals>.rel_touchup  s    : 	A 	J gIIc!ffai   	A		-jmmQ.>??@@A 	#011 )#(1+:N )qz1)a(J!qrg   c                     | j         S r`   r(  r*  s    re   rx   z_condsimp.<locals>.<lambda>  s    !/ rg   z_condsimp: ) replacer   r   rW   r   r   rT   r   rS   r"   r!   r   r   falser   truer(   r+   r   r6   r3   r   r   r   rj   	enumerater   r   r   r   r   print)r   r/  r   ruleschangeirulefrotorq   arg1num	otherargsarg2r2  arg3newargsrD  r   r4  r   r   s    `               @@@@re   r.  r.  \  s}   &  ||557GHHdO,, g4(((GAq!
 
AE2a88		a1f% 
SQ[[BCFFQrTM 2 2b 8	9	9	CFFRK				S3q66B2%s1SVV8b='9'9R'?	@	@	CFFA		S3q66B"$c!CFF(R-&8&8B&>	?	?	
		SQ"Q$2a4'SVVbd]););r!t)C	D	D	CFFA		SQ"Q$2a4'SVVbd]););bd)B	C	C	
		SQT!VaZ!!B&3s1a46A:+?+?(D(D	E	E	
		CAqDFQJ  2%r!QT!VaZ.!'<'<	=	=	
		S$Q''((B."9RU1?-B#C#CA#EFFGG2M
O 
O		1?*:2*= > >q @AA1	E	E	G 
S$Q''((BqD0"9bS-@#A#A!#CDDEEAM
O 
O		1?*:2*=a*? @ @ BCCQ	G	G	I 
AFCAqMM	"	"AF+	AqD!1q	!1a4!8,	AaCs3s1vv;;''A.2	3SVVaZ@	AqSSVV%%c!ff,q0	13q66A:>
c!ff++1
SQ[[!1!1$s1a4yy//!AA!E	F1qQ9E< 49d3<<<<diHHIIJDF
 ( )% 0 0 &	 &	E9Cx49$ $TY// # #400 0

38A;//ACCC

38A;//A TTTT##PQ'((AS0STTT	C	% " "D#,TY#7#7 " "4	> %$4< "%!,I!E%dC00 "TYq\Q5F " *4 5 5":>)A,$):S"%!,I!E%dC00 "TYq\Q5F " *4 5 5":>)A,$):S"%!,I!Ey>>S^^a%77 2 2 2 2491E1E 2 2 257WWQZZLA 7$FF 7.666 ty'*Q  (V      <<11;??D #mT"""Krg   c                 r    t          | t                    r| S t          |                                           S )z Re-evaluate the conditions. )r   boolr.  doit)r   s    re   
_eval_condrY    s/    $ TYY[[!!!rg   Fc                 b    t          | |          }|s|                    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 r`   r   )rw   r   s     re   rx   z&_my_principal_branch.<locals>.<lambda>  s     rg   )r'   rF  )r   periodfull_pbrl   s       re   _my_principal_branchr^    s6     4
(
(C <kk*NN;;Jrg   c           	        	
 t          ||          \  }
t          |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.
    rQ   c                 "    fd| D             S )Nc                 ,    g | ]}|d z   z  z   d z
  S r  r   )rb   r   r   ss     re   r   z1_rewrite_saxena_1.<locals>.tr.<locals>.<listcomp>  s*    ---aQUAI!---rg   r   r  r   rb  s    re   r  z_rewrite_saxena_1.<locals>.tr  s     -----1----rg   )
r   r   
get_periodr^  r"   rO   r   r  r   r  )r   r   r   rw   r+  r   r\  r  r  r   rb  s            @@re   _rewrite_saxena_1re    s     "a  DAq!*a((DAq\\^^FQ''A 	SVVAQ	A&&'A. . . . . .gbbhh18bbhh18c   rg   c                 V   | j         }t          | j        |          \  }}t          t	          | j                  t	          | j                  t	          | j                  t	          | j                  g          \  }}}}	||	k    r_d }
t          t           |
| j                   |
| j                   |
| j                   |
| j                  ||z            |          S d | j        D             d | j        D             z   }t          | }|d | j        D             z  }|d | j        D             z  }t          | }t          | j                   |	dz   |z
  dz  z   |	|z
  k    }d } |d	            |d
|d|d|d|d|d|	            |dt!          | j                  dt!          | j                              |dt!          | j                  dt!          | j                              |d|d|d|           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 ]>}|t+          t-          t/          |                    |d|z  z
  t0          z            gz  }?|dk    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|R  g}||z  } |d|           ||g}|rg }t          ||	k     d|k    |dk    t#          t-          t/          |                    |t0          z            g|R  g}|t          ||	dz
  k    t#          |d          t#          t-          t/          |                    d          g|R  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k    t-          t/          |                    |t0          z  k               g}|s||gz  }t          | }||gz  } |d|g           t7          | S )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                     d | D             S )Nc                     g | ]}d |z
  S r  r   rb   rw   s     re   r   z4_check_antecedents_1.<locals>.tr.<locals>.<listcomp>  s    %%%aAE%%%rg   r   r  s    re   r  z _check_antecedents_1.<locals>.tr  s    %%1%%%%rg   c                 6    g | ]}t          |           d k     S r  r   rb   r   s     re   r   z(_check_antecedents_1.<locals>.<listcomp>  s$    
$
$
$!BqEE6A:
$
$
$rg   c                 :    g | ]}d d t          |          z
  k     S r  rk  r  s     re   r   z(_check_antecedents_1.<locals>.<listcomp>  s&    'D'D'D!A1I'D'D'Drg   c                 6    g | ]}t          |           d k     S r  rk  rl  s     re   r   z(_check_antecedents_1.<locals>.<listcomp>  s$    )))1RUUFQJ)))rg   c                 :    g | ]}d d t          |          z
  k     S r  rk  r  s     re   r   z(_check_antecedents_1.<locals>.<listcomp>  s&    ,,,aABqEE	M,,,rg   rQ   r   c                      t          |   d S r`   _debug)msgs    re   r[   z#_check_antecedents_1.<locals>.debug#  s    rg   z$Checking antecedents for 1 function:z  delta=, eta=, m=, n=, p=, q=z  ap = z, z  bq = z	  cond_3=z
, cond_3*=z	, cond_4=r   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_1rO   r  r  rS   r   r   r   r   rV   r  r-   r   r"   r(   r   zipr   rT   )r   rw   helperr  etar+  r   rq   r   r   r  tmpcond_3cond_3_starcond_4r[   condscase1tmp1tmp2tmp3r2  extrar   case2case3
case_extrarb  r   r   case_extra_2s                                  re   ry  ry    sx    GEAJ**FCCIIs14yy#ad))SYY?@@JAq!Q1u '	& 	& 	&#GBBqtHHbbll,.BqtHHbbllAcE%K %K$%' ' 	' %
$qt
$
$
$'D'Dqt'D'D'D
DC#YF))))))C,,18,,,,Cs)K!$xxi1q519a-'!a%/F   
E
0111	EEUUCCCAAAqqq!!% & & &	EET!$ZZZZah
8999	EET!$ZZZZah
8999	EE&&&+++vv
NOOOE EFAE16"DFAFBq!a%LL#c"Q((Bq!a%LL.I.I*J*JKDFBq!HHD757##a'(( F FC+C0011EAaCK3CDDEE19c-c2233eBh>
?CQZZ E D$ + +#C%)**	UNE	E+u HE Aq1q5A:qAv(--..r9C<AC C C DE	UNE	E+u VE QQ	2c2Ec2J2J.K.KUSUX+V+V    E	c!q1u*bllBs3Fs3K3K/L/La,P,PYSXYYYZZE	UNE	E+u J2a88Rq\\2.A#.F.F+J+JBsTUJJWWJ vh

AAD!$  1	a!eW2c1g;;?##Jj!J	j\E	E/J<(((	3':3'?'?#@#@58#KLLML ! %L	l^E	E
 <.111
 u:rg   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   )	gammasimprQ   )
r   r  r   r   r   rM   r   r  r  r$   )r   rw   r  r|  r+  rl   r   r   s           re   	_int0oo_1r  p  s     )(((((AJ**FC
C%CT  uQU||T    uQUQYX    uQUQYX  uQU||9Z__%%%rg   c                    fd}t          |          \  }}t          |j                  \  }}	t          |j                  \  }}
|	dk     dk    r|	 }	t          |          }|
dk     dk    r|
 }
t          |          }|	j        r|
j        sdS |	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                  \  }}|                                 }t          | j        | j        | j        | j        t          ||          |z  z            S r`   )	r   r   rd  rO   r   r  r   r  r^  )r   r   r   perr]  rw   s       re   pbz_rewrite_saxena.<locals>.pb  sb    aj!,,1llnnqtQXqtQX+AsG<<QTAC C 	Crg   r   TNrQ   c                      fd| D             S )Nc                     g | ]}|z   S r   r   )rb   r   r*   s     re   r   z/_rewrite_saxena.<locals>.tr.<locals>.<listcomp>  s    ###AC###rg   r   )r  r*   s    re   r  z_rewrite_saxena.<locals>.tr  s    ########rg   	powdenestpolar)r   r   r  is_Rationalr   r   r   r	  r"   rO   r   r  r   r  r   r  )r   r   g1g2rw   r]  r  r+  rb  b1b2m1n1m2n2taur1r2C1C2a1r   a2r  r  r*   s       ``                   @re   _rewrite_saxenar    s]   6C C C C C C "a  DAq2;**EAr2;**EAr
Q4 SR[[
Q4 SR[[>  T24BT24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
s1vvC
 C$ $ $ $ $	BEBBryMM22be99bbmmRT	J	JB		25")RT	:	:B((((((9S%%%r2--rg   c                 ,3   +,-./012345 t           j        |          \  2}t          j        |          \  -}t          t           j                  t           j                  t           j                  t           j                  g          \  }}45t          t          j                  t          j                  t          j                  t          j                  g          \  }}.0||z   45z   dz  z
  }||z   .0z   dz  z
  }	 j        45z
  dz  z   dz   1j        .0z
  dz  z   dz   ,0.z
  54z
  z
  }
d54z
  z
  ,z
  1z
  }t          0|z
  |z
  z  t          t          -                    z   0.z
  z  /t          5|z
  |z
  z  t          t          2                    z   54z
  z  3t          d           t          d2d|d|d4d5d	|d
1           t          d-d|d|d.d0d|	d,d           t          d|
d|d/d3            fd} |            }t          fd j        D              }t          fd j        D              }t          ,.0fd j        D              }t          ,.0fd j        D              }t          145fdj        D              }t          145fdj        D              }t          |
          dt          1dz
  0.z
  z  54z
  0.z
  z  z   ,dz
  54z
  z  z             z  z   dk    }t          |
          dt          1dz
  0.z
  z  54z
  0.z
  z  z   ,dz
  54z
  z  z             z  z
  dk    }t          t          2                    |t          z  k     }t          t          t          2                    |t          z            }t          t          -                    |	t          z  k     }t          t          t          -                    |	t          z            }t!          ||	z    t          z  t          j        z            }t%          |-z  2z            }t%          |2z  -z            }|d|z  k    ryt          t          |
d          ||	z   dk    t'          t)          |d          t          ,1z   5z   4z
            dk     t          ,1z   0z   .z
            dk                         }n7d }t          t          |
d          |dz
  |	z   dk    t'          t          t)          |d           ||                    t          t          ,1z   5z   4z
            dk     t          |d                                        }t          t          |
d          |	dz
  |z   dk    t'          t          t)          |d           ||                    t          t          ,1z   0z   .z
            dk     t          |d                                        }t'          ||          }	 	 0.z
  t          -          d0.z
  z  z  z  t+          /          z  54z
  t          2          d54z
  z  z  z  t+          3          z  z   } t-          | dk              d k    r| dk    }!ng-./02345fd!}"t/           |"dd           |"d"d"          z  t          t          t          2          d          t          t          -          d                    f |"t1          t          -                    d           |"t1          t          -                    d"          z  t          t          t          2          d          t)          t          -          d                    f |"dt1          t          2                               |"d"t1          t          2                              z  t          t)          t          2          d          t          t          -          d                    f |"t1          t          -                    t1          t          2                              d#f          }#| dk    t          t          | d          t)          |#d          t          |          d"k              t          t          | d          t          |#d          t          |          dk              g}$t'          |$ }!n# t2          $ r d }!Y nw xY w|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|!d0ffD ]\  }%}&t          d1|&z  |%           g ++fd2}'+t          ||z  |z  |z  dk    |j        d#u |	j        d#u |||||          gz  + |'d           +t          t          45          t          |d          |	j        d#u 2j        d#u t          1          dk     ||||	  	        gz  + |'d           +t          t          .0          t          |	d          |j        d#u -j        d#u t          ,          dk     ||||	  	        gz  + |'d$           +t          t          .0          t          45          t          |d          t          |	d          2j        d#u -j        d#u t          ,          dk     t          1          dk     t)          2-          |||          gz  + |'d%           +t          t          .0          t          45          t          |d          t          |	d          2j        d#u -j        d#u t          ,1z             dk     t)          -2          |||          gz  + |'d&           +t          .0k    |j        d#u |j        d#u |	dk    ||||||
  
        gz  + |'d'           +t          .0k     |j        d#u |j        d#u |	dk    ||||||
  
        gz  + |'d(           +t          45k    |j        d#u |	j        d#u |dk    ||||||
  
        gz  + |'d)           +t          45k     |j        d#u |	j        d#u |dk    ||||||
  
        gz  + |'d*           +t          .0k    t          45          t          |d          |	dk    2j        d#u t          1          dk     |||||          gz  + |'d+           +t          .0k     t          45          t          |d          |	dk    2j        d#u t          1          dk     |||||          gz  + |'d,           +t          t          .0          45k    |dk    t          |	d          -j        d#u t          ,          dk     |||||          gz  + |'d-           +t          t          .0          45k     |dk    t          |	d          -j        d#u t          ,          dk     |||||          gz  + |'d.           +t          .0k     45k    |dk    |	dk    |||||||          gz  + |'d/           +t          .0k    45k     |dk    |	dk    |||||||          gz  + |'d0           +t          .0k    45k    |dk    |	dk    |||||||||          gz  + |'d3           +t          .0k     45k     |dk    |	dk    |||||||||          gz  + |'d4           +t          t          |d          |j        d#u |j        d#u |
j        d#u |||          gz  + |'d5           +t          t          |d          |j        d#u |j        d#u |
j        d#u |||          gz  + |'d6           +t          t          |d          |j        d#u |	j        d#u |
j        d#u |||          gz  + |'d7           +t          t          |d          |j        d#u |	j        d#u |
j        d#u |||          gz  + |'d8           +t          t          ||z  d          |j        d#u |	j        d#u |||||          gz  + |'d9           +t          t          ||z  d          |j        d#u |	j        d#u |||||          gz  + |'d:           t9           |d#;          }(t9          |d#;          })+t          |)t          |d          4|k     |j        d#u ||||          gz  + |'d<           +t          |)t          |d          5|k     |j        d#u ||||          gz  + |'d=           +t          |(t          |d          .|k     |	j        d#u ||||          gz  + |'d>           +t          |(t          |d          0|k     |	j        d#u ||||          gz  + |'d?           t'          + }*t-          |*          d k    r|*S +t          ||z   .k    t          |d          t          |
d          |j        d#u |j        d#u |	j        d#u t          t          -                    ||z   .z
  dz   t          z  k     |||||!          gz  + |'d@           +t          ||z   0k    t          |d          t          |
d          |j        d#u |j        d#u |	j        d#u t          t          -                    ||z   0z
  dz   t          z  k     |||||!          gz  + |'dA           +t          t          .0dz
            t          |d          t          |
d          |j        d#u |j        d#u |	dk    |	t          z  t          t          -                    k     |||||!          gz  + |'dB           +t          t          .0dz             t          |d          t          |
d          |j        d#u |j        d#u |	dk    |	t          z  t          t          -                    k     |||||!          gz  + |'dC           +t          .0dz
  k     t          |d          t          |
d          |j        d#u |j        d#u |	dk    |	t          z  t          t          -                    k     t          t          -                    ||z   .z
  dz   t          z  k     |||||!          gz  + |'dD           +t          .0dz   k    t          |d          t          |
d          |j        d#u |j        d#u |	dk    |	t          z  t          t          -                    k     t          t          -                    ||z   0z
  dz   t          z  k     |||||!          gz  + |'dE           +t          t          |d          t          |
d          ||z   dk    |j        d#u |	j        d#u |j        d#u t          t          2                    ||z   4z
  dz   t          z  k     |||||!          gz  + |'dF           +t          t          |d          t          |
d          ||z   5k    |j        d#u |	j        d#u |j        d#u t          t          2                    ||z   5z
  dz   t          z  k     |||||!          gz  + |'dG           +t          t          |d          t          |
d          t          45dz
            |j        d#u |	j        d#u |dk    |t          z  t          t          2                    k     t          t          2                    |dz   t          z  k     |||||!          gz  + |'dH           +t          t          |d          t          |
d          t          45dz             |j        d#u |	j        d#u |dk    |t          z  t          t          2                    k     t          t          2                    |dz   t          z  k     |||||!          gz  + |'dI           +t          t          |d          t          |
d          45dz
  k     |j        d#u |	j        d#u |dk    |t          z  t          t          2                    k     t          t          2                    ||z   4z
  dz   t          z  k     |||||!          gz  + |'dJ           +t          t          |d          t          |
d          45dz   k    |j        d#u |	j        d#u |dk    |t          z  t          t          2                    k     t          t          2                    ||z   5z
  dz   t          z  k     |||||!          gz  + |'dK           t'          + S )Lz> Return a condition under which the integral theorem applies. r   rQ   zChecking antecedents:z  sigma=z, s=z, t=z, u=z, v=z, b*=, rho=z  omega=ru  rv  rw  rx  z, c*=z, mu=,z  phi=rt  z, psi=, theta=c                      fD ]>} t          j        | j        | j                  D ]\  }}||z
  }|j        r|j        r  dS ?dS )NFT)r   r   r   r   
is_integeris_positive)r   rc   jdiffr  r  s       re   _c1z_check_antecedents.<locals>._c1  sm    b 	! 	!A!)!$55 ! !11u? !t'7 ! 555! trg   c                 V    g | ]%}j         D ]}t          d |z   |z             dk    &S rQ   r   )r   r   rb   rc   r  r  s      re   r   z&_check_antecedents.<locals>.<listcomp>   s;    ???Q??Ar!a%!)}}q ????rg   c                 V    g | ]%}j         D ]}t          d |z   |z             dk     &S )rQ   r   )r   r   r  s      re   r   z&_check_antecedents.<locals>.<listcomp>  s;    CCCRUCCr!a%!)}}u$CCCCrg   c                     g | ]?}z
  t          d |z   d z
            z  t                    z
  t          dd          k    @S rQ   r   r   r   rb   rc   mur   r   s     re   r   z&_check_antecedents.<locals>.<listcomp>  sH    OOOAAr!a%!)}}$r"vv-Q?OOOrg   c                     g | ]<}z
  t          d |z             z  t                    z
  t          dd          k    =S r  r  r  s     re   r   z&_check_antecedents.<locals>.<listcomp>  sD    KKKAr!a%yy 2b66)HROO;KKKrg   c                     g | ]?}z
  t          d |z   d z
            z  t                    z
  t          dd          k    @S r  r  rb   rc   rhour  s     re   r   z&_check_antecedents.<locals>.<listcomp>  sH    PPPQAr!a%!)}}$r#ww."a@PPPrg   c                     g | ]<}z
  t          d |z             z  t                    z
  t          dd          k    =S r  r  r  s     re   r   z&_check_antecedents.<locals>.<listcomp>  sD    LLLAr!a%yy 2c77*Xb!__<LLLrg   r   c                 ^    | dk    o'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)`
            rQ   )r"   r!   r   )r\   s    re   _condz!_check_antecedents.<locals>._cond"  s(     62c#a!e**oo22rg   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"   r7   )
c1c2omegar   psir   sigmathetar  r  s
     re   	lambda_s0z%_check_antecedents.<locals>.lambda_s0Q  sk    1q5z#e**q!a%y"99#c((B!a%jUaQi!88UCD Drg   r   Tr   r   r5  r6  r7     	   
   r8  r9  r:  r;     z  c%s:c                 :    t          d| z  d                    d S )Nz
  case %s:r   rq  )countr  s    re   prz_check_antecedents.<locals>.prj  s"    |e#U2Y/////rg   r                        )r{  E1E2E3E4                            !   "   #   )r   r   r   r   r   r   r   r   r   r   r"   r(   rr  rS   r   r   r*   r   r$   rT   r   r6   rY  r4   r#   	TypeErrorr  is_negativery  )6r  r  rw   r+  rb  r   r   rq   bstarcstarphir|  r  r  r  c3c4c5c6c7c8c9c10c11c12c13z0zoszsoc14r  c14_altlambda_cc15r  lambda_sr}  r   rc   r  
mt1_exists
mt2_existsr   r  r  r  r   r  r   r  r  r  r  r  s6   ``                                         @@@@@@@@@@@re   _check_antecedentsr    s)    bk1--HE1bk1--HE1CJJBE

CJJBE

CDDJAq!QCJJBE

CJJBE

CD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
"###
FeeQQQ111aaa- . . .
FeeQQQ111aaa, - - -
F333SSS%%HIII      
B	????"%???	@B	CCCCbeCCC	DB	OOOOOOOOO	PB	KKKKKKRUKKK	LB	PPPPPP"%PPP	QB	LLLLLLbeLL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
7
7C"5))**U2X5C
S$U++,,eBh
7
7C 
uu}b 0	1	1B
RXe^
$
$C
RXe^
$
$C
ae| #"S!**eemq0RQZZBHqL1$4!5!5!9S1q())A-/ /0 0	3 	3 	3 "S!**eai%/14SCUU3ZZ00BHqL1,--12c1::>>@ @A A bajj%!)e"3q"8SCUU3ZZ00BHqL1,--12c1::>>@ @A A gE3u::1q5	223s88;1uc%jj1a!e9--c%jj89 hl##u, 	a<CCD D D D D D D D D D D D !)B##IIb"$5$55R+E22A66;Nu;U;UWX8Y8YZZ\4 3E : :;;R@@4PcdiPjPjKkKkmoApAppR+E22A66;Nu;U;UWX8Y8YZZ\2t$7$>$>??@@2tTghmTnTnOoOoApAppR+E22A66;Nu;U;UWX8Y8YZZ\4 3E : :;;TBUV[B\B\=]=]^^`deg gH a<r(A8QC2FFr(A8QC1EEGC c(C   Gb!Wr1gAwQ"aGb!Wr1gRy3)"IRy3)c2Y@ # #a 	x!|T"""" E0 0 0 0 0	c!A#a%'Q, 1T 95;LPT;TVXZ\^`be   EBqEEE	c"Q((BuaLL%*;t*CUEVZ^E^`bcf`g`gjk`kb"c# # $ $EBqEEE	c"Q((BuaLL%*;t*CUEVZ^E^`bce`f`fij`jb"c# # $ $EBqEEE	c"Q((Bq!HHbllBuaLL#t+U->$-F2QR
TVWZT[T[^_T_UE""BB0 0 1 1E BqEEE	c"Q((Bq!HHbllBuaLL#t+U->$-F2PS8WXHXUE""BB0 0 1 1E BqEEE	c!a%$.0AT0I5TU:b"b#s, , - -EBqEEE	c!a%$.0AT0I5TU:b"b#s, , - -EBqEEE	c!a%$.0AT0I5TU:b"b#s, , - -EBqEEE	c!a%$.0AT0I5TU:b"b#s, , - -EBqEEE	c!a%Aq2eQ<<!U=NRV=VS''A+r2r2s4 4 5 5EBrFFF	c!a%Aq2eQ<<!U=NRV=VS''A+r2r2s4 4 5 5EBrFFF	c"Q((AE5A:r%||U=NRV=VR&&1*b"b"c3 3 4 4EBrFFF	c"Q((AE5A:r%||U=NRV=VR&&1*b"b"c3 3 4 4EBrFFF	c!a%Q
EQJb"b"c30 0 1 1EBrFFF	c!a%Q
EQJb"b"c30 0 1 1EBrFFF	c!a%Q
EQJb"b"b#sC9 9 : :EBrFFF	c!a%Q
EQJb"b"b#sC9 9 : :EBrFFF	c"Q((AMT153D3LcoaeNegikmorssttEBrFFF	c"Q((AMT153D3LcoaeNegikmorssttEBrFFF	c"Q((AMT153D3LcoaeNegikmorssttEBrFFF	c"Q((AMT153D3LcoaeNegikmorssttEBrFFF	c"QqS!**e/479Jd9Rb"c3( ( ) )EBrFFF	c"QqS!**e/479Jd9Rb"c3( ( ) )EBrFFF &b!D999J%b!D999J	c*bAhhAu/@D/H#rSUWYZZ[[EBtHHH	c*bAhhAu/@D/H#rSUWYZZ[[EBtHHH	c*bAhhAu/@D/H#rSUWYZZ[[EBtHHH	c*bAhhAu/@D/H#rSUWYZZ[[EBtHHH 	E
A!}} 	c!a%!)R1XXr#qzz1=D3H%J[_cJcejevz~e~)%0011QUQY]B4FFb#sC) ) * *E BrFFF	c!a%!)R1XXr#qzz1=D3H%J[_cJcejevz~e~)%0011QUQY]B4FFb#sC) ) * *E BrFFF	c"QA,,1a"S!**amt6KUM^bfMf1*eBh-@-G-G)H)HHb#sC) ) * *E BrFFF	c"QA,,1a"S!**amt6KUM^bfMf1*eBh-@-G-G)H)HHb#sC) ) * *E BrFFF	c!a!e)R1XXr#qzz1=D3H%J[_cJc1*eBh-@-G-G)H)HH)%0011QUQY]B4FFb#sC) ) * *E BrFFF	c	AE	2a88RQZZ$)>@QUY@Y[`de[e(S!4U!;!;<<<)%0011QUQY]B4FFb#sC	) ) * *E
 BrFFF	c"Q((BsAJJA	1=D3H%J[_cJcejevz~e~)%0011QUQY]B4FFb#sC) ) * *E BrFFF	c"Q((BsAJJA	1=D3H%J[_cJcejevz~e~)%0011QUQY]B4FFb#sC) ) * *E BrFFF	c"Q((BsAJJ1a!eamt6KUM^bfMf1*eBh-@-G-G)H)HH)%0011UQYNBb#sC) ) * *E BrFFF	c"Q((BsAJJ1a!eamt6KUM^bfMf1*eBh-@-G-G)H)HH)%0011UQYNBb#sC) ) * *E BrFFF	c
1a"S!**a!a%i$)>@QUY@Y[`de[eb3*511222&&''1q519q="*<<
BS#	     E
 BrFFF	c
1a"S!**a!a%i$)>@QUY@Y[`de[eb3*511222&&''1q519q="*<<
BS#	     E
 BrFFFu:s   5K#d d('d(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(((1/2, 0), ()), ((m/2,), (-m/2,)), s**(-2))/s**2
    c                     d | D             S )Nc                     g | ]}| S r   r   ri  s     re   r   z(_int0oo.<locals>.neg.<locals>.<listcomp>  s    qrg   r   r  s    re   negz_int0oo.<locals>.neg  s    Arg   )r   r   r   r   r   r  r  rO   )r  r  rw   r|  r+  r  r	  r  r  r  r  s              re   _int0oor
    s    " BK++FCbk1--HE1  	RUd25kk	!B	bi33ry>>	)B	RUd25kk	!B	bi33ry>>	)B2r2r59--c11rg   c           	      @  	 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                 "    fd| D             S )Nc                      g | ]
}|z  z   S r   r   )rb   r   r   rb  s     re   r   z2_rewrite_inversion.<locals>.tr.<locals>.<listcomp>*  s!    ###AAaC###rg   r   rc  s    re   r  z_rewrite_inversion.<locals>.tr)  s     #########rg   r   r  Tr  )	r   r   r   r  rO   r   r  r   r  )
r   r   r   rw   r+  r   r  r  r   rb  s
           @@re   _rewrite_inversionr  $  s    "a  DAq!*a((DAq$ $ $ $ $ $((((((Ic!ac(l$///BBqtHHbbllBBqtHHbbllAJOOQ Qrg   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k    rd}nt
          j        }dz
  dz  t           j
         z   t           j	         z
  z   j        }t          d|d	|d
|d|d|d|	d|
d           t          d|dd|            j        |dz  k    s|dk    r||k    st          d           dS t          j         j         j                  D ]'\  }}||z
  j        r||k    rt          d            dS (||k    r*t          d           t%          fd j        D              S  fd}fd}fd}fd}g }|t%          d|k    d|k    |
t&          z  |z
  t&          dz  k    |dk     |t)          t
          j        t&          z  |	dz   z            z                      gz  }|t%          |dz   |k    |dz   |k    |dk    |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k    |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k    |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k    |dk    ||
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 )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k    t	          |
          dk               gz  }|t          t          |d          t          t          |          d          t	          |          dk    t	          |
          dk    t	          |           dk              gz  }t          | S )Nr   r   r   )r   r*   r   r   r   r   rS   rT   r   r   r    )r   r   r   r\   pluscoeffexponentr  wpwmwrw   s              re   statement_halfz4_check_antecedents_inversion.<locals>.statement_half:  s   (A..x	X	UAX	Xs1?2a55(+A-...sAO#BqEE)",Q./// 	AAA#bAq2a55A:..1<<==#bAhh2a55!beeaiACCDD#bAhh2a55!beeaiA!eerk# # $ 	$5zrg   c           
      X    t           | |||d           | |||d                    S )zW Provide a convergence statement for z**a * exp(b*z**c),
             c/f sphinx docs. TF)rS   )r   r   r   r\   r  s       re   	statementz/_check_antecedents_inversion.<locals>.statementL  s@     >>!Q1d33!>!Q1e446 6 	6rg   r   rQ   z  m=rv  rw  rx  z, tau=z, nu=r  z, sigma=z
  epsilon=r  z, delta=z-  Computation not valid for these parameters.Fz  Not a valid G function.z$  Using asymptotic Slater expansion.c                 2    g | ]} |d z
  dd          S r  r   rb   r   r  r\   s     re   r   z0_check_antecedents_inversion.<locals>.<listcomp>z  -    ===1YYq1uaA..===rg   c                 <     t           fdj        D              S )Nc                 2    g | ]} |d z
  dd          S r  r   r  s     re   r   z;_check_antecedents_inversion.<locals>.E.<locals>.<listcomp>}  r  rg   )rS   r   )r\   r   r  s   `re   Ez'_check_antecedents_inversion.<locals>.E|  s)    ========>>rg   c                 (      dz  |           S r   r   )r\   r  r  r  s    re   Hz'_check_antecedents_inversion.<locals>.H  s    y%333rg   c                 *      dz  | d          S )NrQ   Tr   r\   r  r  r  s    re   Hpz(_check_antecedents_inversion.<locals>.Hp  s!    ~eeVQuWa>>>rg   c                 *      dz  | d          S )NrQ   Fr   r#  s    re   Hmz(_check_antecedents_inversion.<locals>.Hm  s!    ~eeVQuWa???rg   )rr  r   r   _check_antecedents_inversionr  r   r   r   r   r   r   r   NaNr   r  r   r   r  rS   r   r*   r   rT   )r   rw   r+  r   r   rq   r   r   r  r   r  epsilonr  r   r   r  r!  r$  r&  r  r  r  r  r  r\   s   ``                  @@@@@re   r'  r'  0  se   
0111	
A!QDAq1u ;+GAJJ:::    $6 6 6 6 6 CIIs14yy#ad))SYY?@@JAq!Q
a%!)C	
QB8Q,CEEz &	 %%i]S!$Z'#qt*4e;EGE
F	111aaaCCCSSS%%) * * *
F%%%GHHH GqsN qAv !q& >???u
 !!$--  1E 	!a% 	.///55 	Av ?5666========>>? ? ? ? ? ?4 4 4 4 4 4 4? ? ? ? ? ? ?@ @ @ @ @ @ @ E	c!q&!q&#b&5.BqD"8%!)!Ac!/",b1f5666779 9 : :E 
c!a%1*a!eqj%!)URT\16q519b.5(BqD0"Qs1?2-q1u566677"QsAO+B.A67778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122"QsAO+B.r122233	5 5 6 6E 
c!q&#'519ec"fnr!t.C="$u,14"Qs1?2-b011122"QsAO+B.r1222335 5 6 6E
 
a1fXE u:rg   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  rO   r   r  r   r  )r   rw   r   r   r   r  s         re   _int_inversionr+    s[     !*a((DAq'!$!$!AqD&IIA2NNDAqQ3q5Lrg   c                 
   ! ddl m}m!m}m  t
          si at          t
                     t          | t                    rt          | j
        |                              |          \  }}t          |          dk    rdS |d         }|j        r|j        |k    s|j        j        sdS n||k    rdS ddt          | j        | j        | j        | j        ||z            fgdfS | }|                     |t,                    } t/          | t,                    }|t
          v rKt
          |         }	|	D ]:\  }
}}}|                     |
d          }|ri }|                                D ](\  }}t5          t7          |d          d          ||<   )|}t          |t8                    s|                    |          }|d	k    rt          |t8          t:          f          s"t5          |                    |                    }t=          |          d	k    rt          |t>                    s ||          }g }|D ]&\  }}tA          t5          |                    |                              t,          |          d          |          }	 |                    |                              t,          |          }n# tB          $ r Y w xY wtE          ||fz    #                    tH          j%        tH          j&        tH          j'                  rt          |j        |j        |j        |j        t5          |j
        d                    }|(                    ||fz              (|r||fc S <|sdS tS          d
            !fd}|} tU          dd|           }d }	  || |||d	d          \  }}} |||||          }n# |$ r d}Y nw xY w|tW          dd          }|| j,        vrmt[          | |          r]	  ||                     |||z            |||dd	          \  }}} |||||                              |d          }n# |$ r d}Y nw xY w|5|#                    tH          j%        tH          j.        tH          j&                  rtS          d           dS t_          j0        |          }g }|D ]} |                     |          \  }}t          |          dk    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 )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.
    rQ   )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   r7  rX   r   )Frb  rw   stripr7  r0  r.  s        re   my_imtz_rewrite_single.<locals>.my_imt  s    
	0++Aq!U7;dL L L L( 	0 	0 	0//////++q		**++Q5$0 0 0 0 0 0	0s    ?AArb  zrewrite-singlec           	      4   t          | |d          }|^d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_unpolarifyr4   rR   r   r   rA  )rd   rw   r   r>  rl   r   s         re   my_integratorz&_rewrite_single.<locals>.my_integrator  s    !!QD999 	K222222IC S-!H!H!HIICc4[&q1afaj*ABBDIK K KAqvqz2333rg   )
integratorr7  r6  r   )rD  r6  r7  z"Recursive Mellin transform failed.zUnexpected form...z"Recursive Mellin transform worked:)2
transformsr-  r.  r/  r0  _lookup_tabler   r   rO   rY   r   r   r   r   r   r*   r  r   r  r   r  r   r\   r|   r   itemsr$   r%   rW  rU   rY  r   r   
ValueErrorr   rk   r   rA  ComplexInfinityNegativeInfinityr}   rr  r  r  r   r%  r(  r   r   NotImplementedError)"rd   rw   	recursiver-  r/  r  r   f_r   r  r~   termsr   r   r   subs_rN  rO  rl   r   r   r  r:  rb  rC  r8  r9  r+  r   rj   r   r   r0  r.  s"                                   @@re   _rewrite_singlerP    s   ; ; ; ; ; ; ; ; ; ; ; ;  ,]+++!W 
P!*a((55a88qq66A: 	4aD8 	v{ !%"3 t!V 	4AwqtQXqtQXuQwGGHI4OO	
B	q!A1AM %%!*+ #	% #	%&GUD$7777--D !%#zz|| A AGC!+HRd,C,C,C;?"A "A "AE#JJ!$-- +99T??D5= !${(;<< 7%diioo66Dd##u, !%.. (!E$KKE# * *FC'
388D>>3F3Fq!3L3LBF)H )H )HIJL LB!FF4LL--a33% ! ! ! !
 rQDy*..qz1;LaN`aa ! ahah *1:d K K KM MAJJrQDy)))) %9$$$  t
67770 0 0 0 0 0 	As$a((A4 4 4&&q!Q=05F F F5!F1aE""!     C)**AN" 	|Aq'9'9 	..qvva1~~q!:G8<uN N N5! F1aE**//155)    AEE!*aeQ->?? 3444t=D
C 	( 	(~~a  1q66A: 	<%&:;;;aDaj!,,1AwqtQXqtQX)(#$4+1 +1 +1AE G  G  G !1 %& & ' ( 	( /3339s7   	.J88
KK#N= =OO6AQ QQc                 x    t          | |          \  }}}t          |||          }|r|||d         |d         fS dS )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   rQ   N)r   rP  )rd   rw   rL  r   r   r   s         re   	_rewrite1rR  H  sS     Aq!!JCQ1i((A #B!ad""# #rg   c           	         t          |           \  }}}t          fdt          |          D                       rdS t          |          }|sdS t	          t          |fdfdfdg                    }t          j        d|          D ]e\  }\  }}t          ||          }	t          ||          }
|	r9|
r7t          |	d         |
d                   }|dk    r|||	d	         |
d	         |fc S fdS )
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 V  dS )FN)rP  r#  s     re   rf   z_rewrite2.<locals>.<genexpr>_  s4      
L
Lt?4E**d2
L
L
L
L
L
Lrg   Nc           	          t          t          t          | d                             t          t          | d                                       S Nr   rQ   )maxr   r   r   rw   s    re   rx   z_rewrite2.<locals>.<lambda>e  =    #c*QqT1--..JqtQ4G4G0H0HII rg   c           	          t          t          t          | d                             t          t          | d                                       S rV  )rW  r   r   rX  s    re   rx   z_rewrite2.<locals>.<lambda>f  rY  rg   c           	          t          t          t          | d                             t          t          | d                                       S rV  )rW  r   r   rX  s    re   rx   z_rewrite2.<locals>.<lambda>g  sD    #c01q99::01q99::< < rg   FTrQ   Fr   )
r   r$  r   r   r   r   r   r   rP  rS   )rd   rw   r   r   r   r  rL  fac1fac2r  r  r   s    `          re   	_rewrite2r_  V  sW    Aq!!JCQ

L
L
L
Ly||
L
L
LLL t!A tWQIIIIIIII	< 	< 	< 	<= > > 	? 	?A $-#4]A#F#F 3 3	<D$T1i00T1i00 	3" 	3r!ube$$Du} 3B1r!ud22223 3rg   c                    t          |           } g }t          t          | |          t          j        hz  t
                    D ]y}t          |                     |||z             |          }|s,|                    |||z
            }t          |t          t                    r|                    |           v|c S |                     t                    rt          d           t          t!          |           |          }|rat#          |t$                    s7ddlm}  |t+          |          |                    t.                              S |                    |           |rt3          t5          |                    S dS )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)
    )key*Try rewriting hyperbolics in terms of exp.r   collectN)r   sortedr   r   r   r   _meijerint_indefinite_1r   ra   rN   rO   r}   rk   r1   rr  meijerint_indefiniter0   r   r   sympy.simplify.radsimprd  r
   r   r*   extendnextr   )rd   rw   resultsr   rl   rvrd  s          re   rg  rg  s  s    	

AG*1a00AF8;AQRRR  %affQA&6&6:: 	hhq!a%  UG$$ 	NN3JJJuu   ;<<<!'**A/ / 	b$'' @::::::w|B//#???NN2 &GG$$%%%& &rg   c           	         t          d| d           ddlm}m} t	          |           }|dS |\  }}}}t          d|           t
          j        }	|D ]\  }
}}t          |j                  \  }}t          |          \  }}||z  }||
z  ||d|z   |z  z  z  z  }|dz   |z  dz
  t          dd	t
          j
                  }fd
}t          d  ||j                  D                       rUt           ||j                   ||j                  dgz    ||j                  dgz    ||j                  |           }nSt           ||j                  dgz    ||j                   ||j                   ||j                  dgz   |          }|j        rA|                     d                              t
          j        t
          j                  sd}nd} ||                    |||z  z            |          }|	 |||z  d          z  }	ˈfd}t-          |	d          }	|	j        r<g }|	j        D ]%\  }}t3           ||                    }|||fgz  }&t5          |ddi}	nt3           ||	                    }	t5          |	t3          |          ft7          |           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:rQ   r   zmeijerint-indefinitec                      fd| D             S )Nc                      g | ]
}|z   d z   S r  r   )rb   r   r  s     re   r   z7_meijerint_indefinite_1.<locals>.tr.<locals>.<listcomp>  s!    +++AAGaK+++rg   r   )r   r  s    re   r  z#_meijerint_indefinite_1.<locals>.tr  s    ++++++++rg   c              3   8   K   | ]}|j         o	|d k    dk    V  dS )r   TN)r  rl  s     re   rf   z*_meijerint_indefinite_1.<locals>.<genexpr>  s2      CCQq|0aD 0CCCCCCrg   )placeTr  c                     t          t          |           d          } t          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)deeprQ   )r   rX   r   
_from_argsas_coeff_add)rl   rw   s    re   _cleanz'_meijerint_indefinite_1.<locals>._clean  s@    . 5111~c..q11!4555rg   )evaluaterx  F)rr  r   r>  r  rR  r   r   r   r   r  r   r$  r   rO   r   r  r  is_extended_nonnegativer   rk   r(  rI  r5   r^   rj   rB  r4   rR   )rd   rw   r>  r  r   r   r   glr   rl   r  rb  r   r   r   r+  r   fac_r   r  r   rr  rw  rU  r   r  s    `                       @re   rf  rf    sF   
91eQGGG55555555	1aB	 tCR
b!!!
&C %- %-1aaj!,,1b!$$1	Q Qw!AQ	N*+1uai!m 3.66	, 	, 	, 	, 	,CC""QT((CCCCC 	O14""QX,,!,bbhh!nbbllAO O OAA 14A318bbhh18s8JAO OA $ 	QVVAq\\-=-=aeQEV-W-W 	EEEKq!AqD&))777 	yyat,,,,6 6 6 6 64 t
,
,
,C
 *H 	  	 DAqvvayy))AAxGG1511VVC[[))c>$//08Aq>>42HIIIrg   c                 2   t          d| d|d|d|d           t          |           } |                     t                    rt          d           dS |                     t                    rt          d           dS | |||f\  }}}}t          d	          }|                     ||          } |}||k    rt          j        d
fS g }	|t          j	        u r7|t          j
        ur)t          |                     ||           || |           S |t          j	        u r9t          d           t          | |          }
t          d|
           t          |
t          d
          t          j        gz   D ]}t          d|           |j        st          d           )t!          |                     |||z             |          }|t          d           bt!          |                     |||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    rHt!          | |          }|r4t'          |d         t(                    r|	                    |           n|S n|t          j
        u rt          | |          D ]}||z
  dk    d
k    rt          d|z             t!          |                     |||z             t-          ||z   |z
            z  |          }|r5t'          |d         t(                    r|	                    |           |c S |                     |||z             } ||z
  }d}|t          j
        urut/          t          j        t3          |          z            }t5          |          }|                     |||z            } | t-          ||z
            |z  z  } t          j
        }t          d||           t          d|            t!          | |          }|r3t'          |d         t(                    r|	                    |           n|S |                    t6                    rt          d           t          t9          |          |||          }|r{t;          |t<                    sQddlm }  |tC          |d                   |d         "                    t.                              f|dd         z   }|S |	#                    |           |	rtI          tK          |	                    S dS )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.
    Integratingzwrt z from z to .z+Integrand has DiracDelta terms - giving up.Nz5Integrand has Singularity Function terms - giving up.rw   Tz  Integrating -oo to +oo.z  Sensible splitting points:)ra  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   rQ   zTrying x -> x + %szChanged limits tozChanged function torb  rc  )&rr  r   rk   r>   rP   r   r   r   r   rJ  rA  meijerint_definiter   re  r   is_extended_real_meijerint_definite_2r.  rS   ra   rO   r}   r?   r*   r   r!   r"   r1   r0   r   r   rh  rd  r
   r   ri  rj  r   )rd   rw   r   r   rM  x_a_b_r  rk  r   r   res1res2cond1cond2r   rl   splitr  rl  rd  s                         re   r  r    s   < =!!111aaa@AAA

AuuZ <===tuu !! FGGGt1aZNBB 	c

A	q!A	AAv ~GA I1AJ#6 I!!&&QB--QB;;;	
a 	  F*+++*1a00	-y999	'7FFF!&Q 	 	A)1---% 4555(1q5)9)91==D @AAA(1q5)9)91==D ABBBKD%KD%S..//Du} BCCC+C9)	, 
aj + Aq!*55AwA
QAFAJ'	' '#Aq)) 	CFG$$ s####
		 
? 
	'/155 	' 	'INt+ '/%7888/q!e)0D0D1:1u9q=1I1I1JKLN NC 'A00 '#NN3////#&JJJFF1a!eEAJ 	aoc!ff,--CAAq#a%  A1q5!!#%%A
A"Aq)))$a(((#Aq)) 	CFG$$ s####
	vv !! 	;<<<'++RR9 9 	b$'' ::::::gl2a5112a5;;s3C3CDDFABBO	NN2 &GG$$%%%& &rg   c                 P   | dfg}|d         d         }|h}t          |          }||vr||dfgz  }|                    |           t          |          }||vr||dfgz  }|                    |           |                    t          t
                    r=t          t          |                    }||vr||dfgz  }|                    |           |                    t          t                    r2ddl	m
}  ||          }||vr||dfgz  }|                    |           |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   rk   r9   r1   r   r6   r7   sympy.simplify.fur  )rd   rw   rl   origsawexpandedr  reduceds           re   _guess_expansionr  }  sk   #$
%Cr71:D&C$Hs <())d||Hs 8$%%xx%'9:: k$//003 	X89::CGGHxxS 333333-%%# 	W4566CGGGJrg   c                     t          dd| d          }|                     ||          } |}| dk    rt          j        dfS t	          | |          D ]+\  }}t          d|           t          ||          }|r|c S ,dS )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.
    rw   zmeijerint-definite2T)positiver   TryingN)r  r   r   r   r  rr  _meijerint_definite_3)rd   rw   dummyr   explanationrl   s         re   r  r    s      3-q4@@@E	q%AAAv vt|*1a00  ;x%%%#Aq)) 	JJJ	 rg   c                 <   t          |           }|r|d         dk    r|S | j        rot          d           fd| j        D             }t	          d |D                       r6g }t
          j        }|D ]\  }}||z  }||gz  }t          | }|dk    r||fS dS dS dS )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.
    rQ   Fz#Expanding and evaluating all terms.c                 0    g | ]}t          |          S r   )rA  )rb   r   rw   s     re   r   z)_meijerint_definite_3.<locals>.<listcomp>  s$    <<<%a++<<<rg   c              3      K   | ]}|d uV  	d S r`   r   )rb   r   s     re   rf   z(_meijerint_definite_3.<locals>.<genexpr>  s&      ++q}++++++rg   N)rA  is_Addrr  rj   ri   r   r   rS   )rd   rw   rl   ressr  r   r   s    `     re   r  r    s      1
%
%C
 s1v 
x 4555<<<<QV<<<++d+++++ 	E&C  1q!UAEz Av 	 	 rg   c                 :    t          t          |                     S r`   )rY  r$   )rd   s    re   rB  rB    s    jmm$$$rg   c                    ddl m} t          d|            |st          | |d          }||\  }}}}t          d|||           t          j        }	|D ]g\  }
}} |
dk    rt          ||
z  |||z  z  | |          \  }
} |	|
t          | |          z  z  }	t          |t          | |                    }|dk    r nht          |          }|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              dS |\  }
}}t          d|
||           t          |t          |||                    }|dk    r n|	|
t          |||          z  z  }	 t          |          }|dk    rt          d|z             t          d	|	           |r|	|fc S t           ||	                    |fc S dS dS )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=  r}  F)rL  N#Could rewrite as single G function:But cond is always False.z&Result before branch substitutions is:r\  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).)r   r>  rr  rR  r   r   re  r  rS   ry  rB  r_  r  r  r
  )rd   rw   r<  r>  r   r   r   r   r   rl   r  rb  r]  r  r  r  s1f1r  s2f2r   f1_f2_s                           re   rA  rA    s+    +*****
=! >q!u--- 	>!CQ8#r1EEE&C  1a6 (Q1a4A>>1q1a((4!5a!;!;<<5= E!$''Du} >23333?EEE%kk#&6&677== 
1aB	 >$ 	> 	>G$&!CRT6RRHHH&C   
B"$  JBB'Br	2a"r'l?(*B7< <A 8999"#KAsC63DDDt%7S!%D%DEEDu} 1WS#q1111CC!$''Du} >?'IJJJJ?EEE %9$$$%kk#&6&677====9> >	> 	>rg   c           	         | }|}t          dd          }|                     ||          } t          d|            t          | |          st          d           dS t          j        }| j        rt          | j                  }nt          | t                    r| g}nd}|rg }g }|rn|                                }	t          |	t                    rt          |	          }
|
j        r||
j        z  }M	 t          |	j        d         |          \  }}n# t          $ r d}Y nw xY w|dk    r|                    |           n|                    |	           n|	j        rt          |	          }
|
j        r||
j        z  }||	j        j        vr\	 t          |	j
        |          \  }}n# t          $ r d}Y nw xY w|dk    r*|                    |t'          |	j                  z             |                    |	           n|                    |	           |nt)          | }t+          | } || j        vrt          d	| |           t-          t/          |          d          }|d
k    rt          d           dS | t1          ||z             z  }t          d||           t3          |                    ||          |f          S t5          | |          }||\  }}}}t          d|||           t          j        }|D ]a\  }}} t7          ||z  |||z  z  | |          \  }} ||t9          | ||          z  z  }t;          |t=          | |                    }|d
k    r nbt?          |          }|d
k    rt          d           dS t          d|           ddl m!} t?           ||                    }|"                    tF                    s|tG          |          z  }|                    |||z             }t          |tH                    s|                    |||z             }ddl%m&} t3          |                    ||          |f ||                    ||          ||d          df          S dS )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   rQ   z.Expression consists of constant and exp shift:Fz3but shift is nonreal, cannot be a Laplace transformz1Result is a delta function, possibly conditional:r  r  z"Result before branch substitution:r=  )InverseLaplaceTransform)'r   r   rr  r%  r   r   is_Mulr   rj   r   r*   popr   r   r   r}   r   r   r   r,   r   r   r   r    r>   r4   rR  r  r+  rS   r'  rB  r   r>  rk   r?   rW  rE  r  )rd   rw   r   rM  t_shiftrj   rU  exponentialsr!   rS  r   r   r   rl   r   r   r   r   r  rb  r>  r  s                          re   meijerint_inversionr    s   $ 
B	
BcA	r1A
"""1 0111t FEx AF||	As		 s " 	$((**C#s## $c{{; DI%D)#(1+q99DAqq*   AAA6 ( ''****NN3'''' $c{{; DI%DCH11 =-cgq9911.   Av =$++Ac#(mmO<<<s####s###;  	$< \"M 	2?EJJJ"U))Q5= 	HIII4
1u9%%%BCNNN#((1b//40111	1aB	 [RD4c2qAAAf 	 	GAq!%c!eR1Wa;;DAq1^Aq!,,,,Ct9!Q??@@Du} d##5= 	[./////7===222222 S!1!122C779%% $y||#((1a%i((CdD)) /yyAI..;;;;;;chhq"oot455bggannaTRRTXY[ [ [/[ [s$   5D D#"D#F( (F76F7r   )F)r   r   typingr   tDictr   tTuplesympyr   
sympy.corer   r   sympy.core.addr   sympy.core.cacher	   sympy.core.containerssympy.core.exprtoolsr
   sympy.core.functionr   r   r   r   r   sympy.core.mulr   sympy.core.numbersr   r   r   sympy.core.relationalr   r   r   sympy.core.sortingr   r   sympy.core.symbolr   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.   r/   r0   r1   (sympy.functions.elementary.miscellaneousr3   $sympy.functions.elementary.piecewiser4   r5   (sympy.functions.elementary.trigonometricr6   r7   r8   r9   sympy.functions.special.besselr:   r;   r<   r=   'sympy.functions.special.delta_functionsr>   r?   *sympy.functions.special.elliptic_integralsr@   rA   'sympy.functions.special.error_functionsrB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   'sympy.functions.special.gamma_functionsrM   sympy.functions.special.hyperrN   rO   -sympy.functions.special.singularity_functionsrP   	integralsrR   sympy.logic.boolalgrS   rT   rU   rV   rW   sympy.polysrX   rY   sympy.utilities.iterablesrZ   sympy.utilities.miscr[   rr  r\   ra   r   sympy.utilities.timeutilsr   timeitr|   rH  r   r   r   r   r   r   r   r   r	  r  r  r   r  r  r%  r.  rY  r^  re  ry  r  r  r  r
  r  r'  r+  rF  rP  rR  r_  rg  rf  r  r  r  r  rB  rA  r  r   rg   re   <module>r     s   8     1 1 1 1 1 1 1 1                     $ $ $ $ $ $ ' ' ' ' ' ' - - - - - -8 8 8 8 8 8 8 8 8 8 8 8 8 8       1 1 1 1 1 1 1 1 1 1 : : : : : : : : : : 8 8 8 8 8 8 8 8 2 2 2 2 2 2 2 2 2 2 & & & & & & > > > > > >                          G F F F F F F F F F 7 7 7 7 7 79 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 J J J J J J J J            M M M M M M M M M M M M I I I I I I I I M M M M M M M M6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 9 9 9 9 9 9 8 8 8 8 8 8 8 8 M M M M M M       J J J J J J J J J J J J J J & & & & & & & & 9 9 9 9 9 9 0 0 0 0 0 0 
E#JJ  JP JP JPb / . . . . .	)		  	 	 	 	 	* 	 	 	H H HD  BI I I
! ! !H$ $ $N  .I I I>0 0 0 Q Q QD D D2 	 	 	# # #O O Oy y y yv" " "	 	 	 	  *j j j jZ& & &<F. F. F. F.Rj j j`	2 2 2:	Q 	Q 	Qw w wt    	I I I  	IX# # # #3 3 3:"& "& "&JWJ WJ WJt G& G& G&T  @  <  0% % % D> D> D> D>Nn[ n[ n[ n[ n[rg   