
    g;                   F   U d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZK ddlLmMZMmNZNmOZOmPZP ddlQmRZRmSZSmTZTmUZU ddlVmWZWmXZX ddlYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZg ddlhmiZi dd ljmkZkmlZl dd!lmmnZn d"d#lompZp dd$lqmrZrmsZsmtZtmuZumvZv dd%lwmxZxmyZy dd&lzm{Z{ dd'l|m}Z~ dd(l|mZ  e(d)          Zd* Zd+ Zdd,lmZ  ed-          Zd`d4Z G d5 d6e          Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ Zi adAedB<   dC ZdD ZdE ZdadGZdH ZdbdJZdK ZdbdLZdM ZdbdNZdO ZdP ZdQ ZdR ZdS ZdaeedadT                        ZdadUZdV ZdW ZdX ZedY             ZdZ Zd[ Zd\ Zd] Zedbd^            Zd_ ZdS )ca  
Integrate functions by rewriting them as Meijer G-functions.

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

- meijerint_indefinite
- meijerint_definite
- meijerint_inversion

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

The main references for this are:

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

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

[P] A. P. Prudnikov, Yu. A. Brychkov and O. I. Marichev (1990).
    Integrals and Series: More Special Functions, Vol. 3,.
    Gordon and Breach Science Publisher
    )annotationsN)SYMPY_DEBUG)SExpr)Add)Basic)cacheit)Tuple)factor_terms)expand
expand_mulexpand_power_baseexpand_trigFunctionMul)ilcm)Rationalpi)EqNe_canonical_coeff)default_sort_keyordered)DummysymbolsWildSymbol)sympify)	factorial)reimargAbssign
unpolarifypolarify
polar_liftprincipal_branchunbranched_argumentperiodic_argument)exp	exp_polarlog)ceiling)coshsinh_rewrite_hyperbolics_as_expHyperbolicFunctionsqrt)	Piecewisepiecewise_fold)cossinsincTrigonometricFunction)besseljbesselybesselibesselk)
DiracDelta	Heaviside)
elliptic_k
elliptic_e)erferfcerfiEiexpintSiCiShiChifresnelsfresnelc)gamma)hypermeijerg)SingularityFunction   )Integral)AndOrBooleanAtomNotBooleanFunction)cancelfactor)multiset_partitions)debug)debugfzc                    t          |           } t          | dd          r t          fd| j        D                       S  | j         S )Nis_PiecewiseFc              3  2   K   | ]}t          |gR  V  d S N)_has).0ifs     U/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/integrals/meijerint.py	<genexpr>z_has.<locals>.<genexpr>T   s/      1114;A;;;111111    )r7   getattrallargshas)resrg   s    `rh   rd   rd   O   sY     

CsNE** 2111111111137A;rj   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    rh   wildz"_create_lookup_table.<locals>.wildZ   s    As####rj   pqabcrt   c                    | j         o| dk    S Nr   )
is_Integerxs    rh   <lambda>z&_create_lookup_table.<locals>.<lambda>]   s    (>Q rj   )
propertiesTc	                    	                     t          | t                    g                               | |t	          |||||          fg||f           d S rc   )
setdefault_mytyper_   appendrQ   )
formulaanapbmbqr#   faccondhinttables
            rh   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rj   c                                         t          | t                    g                               | |||f           d S rc   )r   r   r_   r   )r   instr   r   r   s       rh   addiz"_create_lookup_table.<locals>.addid   sD    GQ	% 	%%+VWdD$,G%H%H%H%H%Hrj   c           	     r    | t          dgg g dgt                    f| t          g dgdgg t                    fgS NrS   r   )rQ   r_   )as    rh   constantz&_create_lookup_table.<locals>.constanth   sD    GQCR!a001GBaS"a0013 	3rj    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&   ry   )clsr#   s     rh   evalz7_create_lookup_table.<locals>.IsNonPositiveInteger.evalp   s+    S//C~%%ax &%rj   N)__name__
__module____qualname__classmethodr   r   rj   rh   IsNonPositiveIntegerr   n   s-        		  	  
	  	  	 rj   r   rS   r   )r      c                X    t           t          dd          z  | |z  dz  dd| z  z
  z  z  S )Nr   rS   )r   r   )rr%   nus      rh   A1z _create_lookup_table.<locals>.A1   s1    8B??"TE"HQJ!ac'#:::rj   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   rS   r4   )r   sgnr   r   r   bts     rh   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&	( 	( 	( 	( 	(rj   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   rS   r   )r5   r_   r   Half)r   r   r   r   r   r   pqs     rh   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 	2rj         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    rQ   subsNrt   r   s     rh   	make_log1z'_create_lookup_table.<locals>.make_log1   sY    G!)A,,.aS!a%[1#q1u+r1==? @ 	@rj   c           	     v    |          }t          |          t          dg|dz   z  g g dg|dz   z            fgS r   )r    rQ   r   s     rh   	make_log2z'_create_lookup_table.<locals>.make_log2   sM    G1!a!eb"qc1q5k1==? @ 	@rj   c                2     |            |           z   S rc   r   )r   r   r   s    rh   	make_log3z'_create_lookup_table.<locals>.make_log3   s    y400rj   z3/2   NT)-listmapr   r_   r   Oner   rA   rO   rU   rX   r$   r9   r   r!   r   r,   r(   r1   r   r0   r5   r8   r:   r.   rQ   rG   ImaginaryUnitr   rI   rJ   rK   rL   rH   rD   rE   rF   rM   rN   r<   r=   r>   r?   rB   rC   )r   ru   cr   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   s   `       @@@@@@@@@@rh   _create_lookup_tabler   X   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Orj   )timethisrQ   rg   r   r{   r   returntuple[type[Basic], ...]c                    d	d}| j         vrdS | j        rt          |           fS t          t	          fd| j        D             |                    S )
z4 Create a hashable entity describing the type of f. r{   type[Basic]r   tuple[int, int, str]c                *    |                                  S rc   )	class_keyrz   s    rh   keyz_mytype.<locals>.key/  s    {{}}rj   r   c              3  B   K   | ]}t          |          D ]}|V  d S rc   )r   )re   r   r   r{   s      rh   ri   z_mytype.<locals>.<genexpr>6  s8      BBqGAqMMBBqBBBBBBBrj   r   )r{   r   r   r   )free_symbolsis_Functiontypetuplesortedrm   )rg   r{   r   s    ` rh   r   r   -  st        	r	
 AwwxBBBBAFBBBLLLMMMrj   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   rj   rh   r   r   9  s          	Drj   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   )exprr{   r   r   ms        rh   _get_coeff_expr   @  s    & '&&&&&wwt}}--::1==FQ !&y
CQx H6Q;;%&?@@@!%x	
a!%x!"?$"FGGGrj   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 NrS   )updater   r   r,   rm   )r   r{   ro   argument_exponents_s       rh   r   z_exponents.<locals>._exponents_u  s    199JJsOOOF; 	49>>JJz"""F	 	* 	*HK!S))))	* 	*rj   set)r   r{   ro   r   s      @rh   
_exponentsr   b  s@    &* * * * * %%CKaJrj   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)re   er{   s     rh   	<setcomp>z_functions.<locals>.<setcomp>  s'    HHHqA4G4GAF4G4G4Grj   )atomsr   )r   r{   s    `rh   
_functionsr     s)    HHHHDJJx00HHHHrj   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 )rr   )r   )re   rt   r{   s     rh   
<listcomp>z*_find_splitting_points.<locals>.<listcomp>  s(    ///QDQC   ///rj   pqc                   t          | t                    sd S |                     z  z             }|r3|         dk    r'|                    |          |         z             d S | j        rd S | j        D ]} ||           d S rx   )
isinstancer   matchr   is_Atomrm   )r   ro   r   r   compute_innermostr   r   r{   s       rh   r   z1_find_splitting_points.<locals>.compute_innermost  s    $%% 	FJJqsQw 	1GGQqTE!A$JF< 	F	 	- 	-Hh,,,,	- 	-rj   r   )r   r{   	innermostr   r   r   s    ` @@@rh   _find_splitting_pointsr     sq    $ 0///$///DAq
- 
- 
- 
- 
- 
- 
- 
- IdI&&&rj   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'   )	rg   r{   r   pogrm   r   r   r   s	            rh   
_split_mulr     s'    %C	
B	A!A=D  66!GBBan$$1HCCx AQU%777v**1--199%af--::1==DAq99!QU(NB:hq!%xe&D&D&DEEECFAAA:rj   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   rS   )r   r   r   r,   ry   r   r   )rg   rm   gsr   rt   r   s         rh   	_mul_argsr    s     =D	B 	 	8 	( 	A6D1uuBv4&(NBBIIaLLLLIrj   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   )re   r{   ys      rh   r   z%_mul_as_two_parts.<locals>.<listcomp>  s)    HHH6AqS!Wc1gHHHrj   )r  lenr   r\   )rg   r   s     rh   _mul_as_two_partsr    s_    . 
1B
2ww{{t
2ww!||b		{HH-@Q-G-GHHHHrj   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   )re   r   rf   rt   s      rh   r   z/_inflate_g.<locals>.inflate.<locals>.<listcomp>  s%    JJJdaQ	JJJrj   )	itertoolsproductrange)paramsrt   s    `rh   inflatez_inflate_g.<locals>.inflate  s0    JJJJi&7a&I&IJJJJrj   rS   r   )r   r  r   r   r   r   deltarQ   r   aotherr   botherr   )r   rt   r  vCs        rh   
_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 0rj   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 rS   r   re   r   s     rh   r   z'_flip_g.<locals>.tr.<locals>.<listcomp>  s    !!!!A!!!rj   r   ls    rh   trz_flip_g.<locals>.tr  s    !!q!!!!rj   rS   )rQ   r   r  r   r  r   )r   r  s     rh   _flip_gr    sU    " " "22ad88RR\\22ad88RR\\1QZ<PPPrj   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   rS   r   c                     g | ]
}|d z   z  S r  r   )re   rt   r   s     rh   r   z"_inflate_fox_h.<locals>.<listcomp>8  s!    	&	&	&1q5!)	&	&	&rj   )_inflate_fox_hr  r   r   r   r  r   r   r   r  rQ   r   r  r   r   r  )r   r   r   Dr_   bsr   s         @rh   r   r   "  s     	1uugajj1"---	!#A	!#A aDAq	
A!B$1q5!)	QQ/	//AAIA	&	&	&	&U1XX	&	&	&BgadAHadDNNR,?CCCCrj   zdict[tuple[str, str], Dummy]_dummiesc                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        rh   _dummyr*  >  sD     	e&&v&&ADT$$V$$$Hrj   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.
    )r#  r   )r&  r'  r(  s      rh   r%  r%  J  s@     %=H$$"'"7"7"7"7$T5M""rj   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 rc   )r   re   r   r{   s     rh   ri   z_is_analytic.<locals>.<genexpr>X  s+      NNd1))NNNNNNrj   )anyr   rA   r$   )rg   r{   s    `rh   _is_analyticr0  U  s9     NNNNaggi6M6MNNNNNNNrj   Tc                   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        fd	| j        D              } d
}|r;d}t/          |          D ]%\  }\  }}|j        | j        k    rt/          | 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 ]}t/          | 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ǌt5                    t5          |          dz   k    rfdt/          | j                  D             |                              gz   }t8          r|dvrt;          d|            | j        | } d
} '|;fd}|                      d |          } t8          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 rc   is_Relational_s    rh   r|   z_condsimp.<locals>.<lambda>o  s    ao rj   Fzp q r)r   r   r   rS   c                0    g | ]}t          |          S r   )	_condsimp)re   r6  firsts     rh   r   z_condsimp.<locals>.<listcomp>  s#    >>>qyE**>>>rj   Tc                :    g | ]}|                               S r   r   )re   r{   r   s     rh   r   z_condsimp.<locals>.<listcomp>  s#    TTT1QVVAYYTTTrj   Nc                "    g | ]\  }}|v	|S r   r   )re   karg_	otherlists      rh   r   z_condsimp.<locals>.<listcomp>  s1     2 2 2IQy00  000rj   )
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   rS   )rel_oprhslhsr   r#   r*   r(   r   r+   rm   is_polarr   Infinity)relLHSr   r   r   s      rh   rel_touchupz_condsimp.<locals>.rel_touchup  s    :AJ gIIc!ffai   	A		-jmmQ.>??@@A 	#011 )#(1+:N )qz11a(J!qrj   c                    | j         S rc   r3  r5  s    rh   r|   z_condsimp.<locals>.<lambda>  s    !/ rj   z_condsimp: )replacer   r   rY   r   r   rV   r   rU   r$   r#   r   r   falser   truer*   r-   r   r8   r5   r   rm   	enumerater   r   r  r   r   print)r   r:  r   ruleschangeirulefrotort   arg1num	otherargsarg2r=  arg3newargsrO  r   r?  r   r   s    `               @@@@rh   r9  r9  [  sb   &  ||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< 49>>>>DI>>>?D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\Q5F5F *4 5 5 6G:>)A,$):S:S%!,I!E%dC00 "TYq\Q5F5F *4 5 5 6G:>)A,$):S:S%!,I!Ey>>S^^a%7772 2 2 2491E1E 2 2 257WWQZZLA 7$FFF.666 ty'*Q  (V      <<11;??D #mT"""Krj   c                r    t          | t                    r| S t          |                                           S )z Re-evaluate the conditions. )r   boolr9  doit)r   s    rh   
_eval_condrd    s/    $ TYY[[!!!rj   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 rc   r   )r{   r  s     rh   r|   z&_my_principal_branch.<locals>.<lambda>  s     rj   )r)   rQ  )r   periodfull_pbro   s       rh   _my_principal_branchri    s6     4
(
(C <kk*NN;;Jrj   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.
    rS   c                "    fd| D             S )Nc                ,    g | ]}|d z   z  z   d z
  S r  r   )re   r   r   ss     rh   r   z1_rewrite_saxena_1.<locals>.tr.<locals>.<listcomp>  s*    ---aQUAI!---rj   r   r  r   rm  s    rh   r  z_rewrite_saxena_1.<locals>.tr  s     -----1----rj   )
r   r   
get_periodri  r$   rQ   r   r  r   r  )r   r   r   r{   r6  r   rg  r  r  r   rm  s            @@rh   _rewrite_saxena_1rp    s     "a  DAq!*a((DAq\\^^FQ''A 	SVVAQ	A&&'A. . . . . .gbbhh18bbhh18c   rj   c                0   | 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||||||	f            |dt!          | j                  t!          | j                  f            |dt!          | j                  t!          | j                  f            |d|||f           g }g }d|k    ||	k     d|k    g}d|k    d|k    t#          |	|dz             t%          t          t#          |d          t#          ||dz                                 g}d|k    t#          |	|          g}t'          t)          |dz            dz             D ]>}|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   re   r{   s     rh   r   z4_check_antecedents_1.<locals>.tr.<locals>.<listcomp>  s    %%%aAE%%%rj   r   r  s    rh   r  z _check_antecedents_1.<locals>.tr  s    %%1%%%%rj   c                6    g | ]}t          |           d k     S r  r!   re   r   s     rh   r   z(_check_antecedents_1.<locals>.<listcomp>  s$    
$
$
$!BqEE6A:
$
$
$rj   c                :    g | ]}d d t          |          z
  k     S r  rv  r  s     rh   r   z(_check_antecedents_1.<locals>.<listcomp>  s&    'D'D'D!A1I'D'D'Drj   c                6    g | ]}t          |           d k     S r  rv  rw  s     rh   r   z(_check_antecedents_1.<locals>.<listcomp>  s$    )))1RUUFQJ)))rj   c                :    g | ]}d d t          |          z
  k     S r  rv  r  s     rh   r   z(_check_antecedents_1.<locals>.<listcomp>  s&    ,,,aABqEE	M,,,rj   rS   r   c                     t          |   d S rc   )_debug)msgs    rh   r]   z#_check_antecedents_1.<locals>.debug"  s    rj   c                &    t          | |           d S rc   _debugf)stringr#   s     rh   r^   z$_check_antecedents_1.<locals>.debugf%  s    rj   z$Checking antecedents for 1 function:z*  delta=%s, eta=%s, m=%s, n=%s, p=%s, q=%sz  ap = %s, %sz  bq = %s, %sz"  cond_3=%s, cond_3*=%s, cond_4=%sr   z	  case 1:z	  case 2:z	  case 3:z  extra case:z  second extra case:)r  r   r   r   r  r   r   r   r   _check_antecedents_1rQ   r  r  rU   r!   r   r   r   rX   r  r/   r   r$   r*   r   zipr   rV   ) r   r{   helperr  etar6  r   rt   r   r   r  tmpcond_3cond_3_starcond_4r]   r^   condscase1tmp1tmp2tmp3r=  extrar   case2case3
case_extrarm  r   r   case_extra_2s                                    rh   r  r    sX    GEAJ**FCCIIs14yy#ad))SYY?@@JAq!Q1uu	& 	& 	&#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
F731a#% % %
F?T!$ZZah8999
F?T!$ZZah8999
F/&+v1N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:rj   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   )	gammasimprS   )
r   r  r   r   r   rO   r   r  r  r&   )r   r{   r  r  r6  ro   r   r   s           rh   	_int0oo_1r  r  s     )(((((AJ**FC
C%CT  uQU||T    uQUQYX    uQUQYX  uQU||9Z__%%%rj   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 rc   )	r   r   ro  rQ   r   r  r   r  ri  )r   r   r   perrh  r{   s       rh   pbz_rewrite_saxena.<locals>.pb  sb    aj!,,1llnnqtQXqtQX+AsG<<QTAC C 	Crj   r   TNrS   c                     fd| D             S )Nc                    g | ]}|z   S r   r   )re   r   r,   s     rh   r   z/_rewrite_saxena.<locals>.tr.<locals>.<listcomp>  s    ###AC###rj   r   )r  r,   s    rh   r  z_rewrite_saxena.<locals>.tr  s    ########rj   	powdenestpolar)r   r   r  is_Rationalr   r   r   r  r$   rQ   r   r  r   r  r   r  )r   r   g1g2r{   rh  r  r6  rm  b1b2m1n1m2n2taur1r2C1C2a1r   a2r  r  r,   s       ``                   @rh   _rewrite_saxenar    sY   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--rj   c                2   +,-./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||45|1f           t          d-||.0|	,f           t          d|
|/3f            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}"t1           |"dd           |"dd          z  t          t!          t          2          d          t!          t          -          d                    f |"t3          t          -                    d           |"t3          t          -                    d          z  t          t!          t          2          d          t+          t          -          d                    f |"dt3          t          2                               |"dt3          t          2                              z  t          t+          t          2          d          t!          t          -          d                    f |"t3          t          -                    t3          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# t4          $ 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|!d ffD ]\  }%}&t          d!|&|%f           g ++fd"}'+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  + |'d            +t          .0k    45k    |dk    |	dk    |||||||||          gz  + |'d#           +t          .0k     45k     |dk    |	dk    |||||||||          gz  + |'d$           +t          t!          |d          |j        du |j        du |
j        du |||          gz  + |'d%           +t          t!          |d          |j        du |j        du |
j        du |||          gz  + |'d&           +t          t!          |d          |j        du |	j        du |
j        du |||          gz  + |'d'           +t          t!          |d          |j        du |	j        du |
j        du |||          gz  + |'d(           +t          t!          ||z  d          |j        du |	j        du |||||          gz  + |'d)           +t          t!          ||z  d          |j        du |	j        du |||||          gz  + |'d*           t;           |d+          }(t;          |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  + |'d0           +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  + |'d1           +t          t!          .0dz
            t!          |d          t!          |
d          |j        du |j        du |	dk    |	t          z  t          t          -                    k     |||||!          gz  + |'d2           +t          t!          .0dz             t!          |d          t!          |
d          |j        du |j        du |	dk    |	t          z  t          t          -                    k     |||||!          gz  + |'d3           +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  + |'d4           +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  + |'d5           +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  + |'d6           +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  + |'d7           +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  + |'d8           +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  + |'d9           +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  + |'d:           +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  + |'d;           t)          + S )<z> Return a condition under which the integral theorem applies. r   rS   zChecking antecedents:z1  sigma=%s, s=%s, t=%s, u=%s, v=%s, b*=%s, rho=%sz1  omega=%s, m=%s, n=%s, p=%s, q=%s, c*=%s, mu=%s,z"  phi=%s, eta=%s, psi=%s, theta=%sc                     fD ]>} t          j        | j        | j                  D ]\  }}||z
  }|j        r|j        r  dS ?dS )NFT)r
  r  r   r   
is_integeris_positive)r   rf   jdiffr  r  s       rh   _c1z_check_antecedents.<locals>._c1  sm    b 	! 	!A!)!$55 ! !11u? !t'7 ! 555! trj   c                V    g | ]%}j         D ]}t          d |z   |z             dk    &S rS   r   )r   r!   re   rf   r  r  s      rh   r   z&_check_antecedents.<locals>.<listcomp>  s;    ???Q??Ar!a%!)}}q ????rj   c                V    g | ]%}j         D ]}t          d |z   |z             dk     &S )rS   r   )r   r!   r  s      rh   r   z&_check_antecedents.<locals>.<listcomp>  s;    CCCRUCCr!a%!)}}u$CCCCrj   c                    g | ]?}z
  t          d |z   d z
            z  t                    z
  t          dd          k    @S rS   r   r!   r   re   rf   mur   r   s     rh   r   z&_check_antecedents.<locals>.<listcomp>  sH    OOOAAr!a%!)}}$r"vv-Q?OOOrj   c                    g | ]<}z
  t          d |z             z  t                    z
  t          dd          k    =S r  r  r  s     rh   r   z&_check_antecedents.<locals>.<listcomp>  sD    KKKAr!a%yy 2b66)HROO;KKKrj   c                    g | ]?}z
  t          d |z   d z
            z  t                    z
  t          dd          k    @S r  r  re   rf   rhour  s     rh   r   z&_check_antecedents.<locals>.<listcomp>  sH    PPPQAr!a%!)}}$r#ww."a@PPPrj   c                    g | ]<}z
  t          d |z             z  t                    z
  t          dd          k    =S r  r  r  s     rh   r   z&_check_antecedents.<locals>.<listcomp>  sD    LLLAr!a%yy 2c77*Xb!__<LLLrj   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)`
            rS   )r$   r#   r   )r_   s    rh   _condz!_check_antecedents.<locals>._cond$  s(     62c#a!e**oo22rj   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$   r9   )
c1c2omegar   psir   sigmathetar  r  s
     rh   	lambda_s0z%_check_antecedents.<locals>.lambda_s0S  sk    1q5z#e**q!a%y"99#c((B!a%jUaQi!88UCD Drj   r   Tr   r   r@  rA  rB     	   
   rC  rD  rE  rF     z	  c%s: %sc                8    t          d| d         f           d S )Nz  case %s: %sr   r  )countr  s    rh   prz_check_antecedents.<locals>.prl  s"    %r!344444rj   r                        )r  E1E2E3E4                            !   "   #   )r   r   r   r  r   r   r   r   r   r   r$   r*   r|  r  rU   r!   r   r,   r   r&   rV   r   r8   rd  r6   r%   	TypeErrorr  is_negativer  )6r  r  r{   r6  rm  r   r   rt   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   rf   r  
mt1_exists
mt2_existsr   r  r  r  r   r  r   r  r  r  r  r  s6   ``                                         @@@@@@@@@@@rh   _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
"###?Aq!Qs+- - -?Aq!Qr*, , ,03S%2H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 	aY'''' E5 5 5 5 5	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   K#c7 7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(((0, 1/2), ()), ((m/2,), (-m/2,)), s**(-2))/s**2
    c                    d | D             S )Nc                    g | ]}| S r   r   rt  s     rh   r   z(_int0oo.<locals>.neg.<locals>.<listcomp>  s    qrj   r   r  s    rh   negz_int0oo.<locals>.neg  s    Arj   )r   r   r   r   r   r  r  rQ   )r  r  r{   r  r6  r  r  r  r  r  r  s              rh   _int0oor  	  s    " BK++FCbk1--HE1  	RUd25kk	!B	bi33ry>>	)B	RUd25kk	!B	bi33ry>>	)B2r2r59--c11rj   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   )re   r   r   rm  s     rh   r   z2_rewrite_inversion.<locals>.tr.<locals>.<listcomp>,  s!    ###AAaC###rj   r   rn  s    rh   r  z_rewrite_inversion.<locals>.tr+  s     #########rj   r   r  Tr  )	r   r   r   r  rQ   r   r  r   r  )
r   r   r   r{   r6  r   r  r  r   rm  s
           @@rh   _rewrite_inversionr  &  s    "a  DAq!*a((DAq$ $ $ $ $ $((((((Ic!ac(l$///BBqtHHbbllBBqtHHbbllAJOOQ Qrj   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||||||	|
f           t          d	||f            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   rU   rV   r   r   r"   )r   r   r   r_   pluscoeffexponentr  wpwmwr{   s              rh   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rj   c           
     X    t           | |||d           | |||d                    S )zW Provide a convergence statement for z**a * exp(b*z**c),
             c/f sphinx docs. TF)rU   )r   r   r   r_   r  s       rh   	statementz/_check_antecedents_inversion.<locals>.statementN  s@     >>!Q1d33!>!Q1e446 6 	6rj   r   rS   z9  m=%s, n=%s, p=%s, q=%s, tau=%s, nu=%s, rho=%s, sigma=%sz   epsilon=%s, theta=%s, delta=%sz-  Computation not valid for these parameters.Fz  Not a valid G function.z$  Using asymptotic Slater expansion.c                2    g | ]} |d z
  dd          S r  r   re   r   r  r_   s     rh   r   z0_check_antecedents_inversion.<locals>.<listcomp>|  -    ===1YYq1uaA..===rj   c                <     t           fdj        D              S )Nc                2    g | ]} |d z
  dd          S r  r   r!  s     rh   r   z;_check_antecedents_inversion.<locals>.E.<locals>.<listcomp>  r"  rj   )rU   r   )r_   r   r  s   `rh   Ez'_check_antecedents_inversion.<locals>.E~  s)    ========>>rj   c                (      dz  |           S r   r   )r_   r  r  r  s    rh   Hz'_check_antecedents_inversion.<locals>.H  s    y%333rj   c                *      dz  | d          S )NrS   Tr   r_   r  r  r  s    rh   Hpz(_check_antecedents_inversion.<locals>.Hp  s!    ~eeVQuWa>>>rj   c                *      dz  | d          S )NrS   Fr   r)  s    rh   Hmz(_check_antecedents_inversion.<locals>.Hm  s!    ~eeVQuWa???rj   )r|  r   r   _check_antecedents_inversionr  r   r  r   r   r   r   r   NaNr   r  r  r
  r  r  rU   r   r,   r   rV   )r   r{   r6  r   r   rt   r   r   r  r   r  epsilonr  r   r   r%  r'  r*  r,  r  r  r  r  r  r_   s   ``                  @@@@@rh   r-  r-  2  s%   
0111	
A!QDAq1uu+GAJJ:::    $6 6 6 6 6 CIIs14yy#ad))SYY?@@JAq!Q
a%!)C	
QB8Q,CEEzz&	%%i]S!$Z'#qt*4e;EGEG1ab#u-/ / /.%0GHHH GqsNNqAvv!q&&>???u
 !!$--  1E 	!a%%.///55 	Avv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:rj   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   rQ   r   r  r   r  )r   r{   r   r   r   r  s         rh   _int_inversionr1    s[     !*a((DAq'!$!$!AqD&IIA2NNDAqQ3q5Lrj   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.
    rS   )mellin_transforminverse_mellin_transformIntegralTransformErrorMellinTransformStripErrorNr   T)old)lift)exponents_onlyFz)Trying recursive Mellin transform method.c           
         	  | |||dd          S # $ r= ddl m}   |t          t          |                               |||dd          cY S w xY w)z Calling simplify() all the time is slow and not helpful, since
            most of the time it only factors things in a way that has to be
            un-done anyway. But sometimes it can remove apparent poles. T)
as_meijergneedevalr   )simplify)r   r=  rZ   r   )Frm  r{   stripr=  r6  r4  s        rh   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rm  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   rD  _my_unpolarifyr6   rT   r   r   rL  )rg   r{   r   rD  ro   r   s         rh   my_integratorz&_rewrite_single.<locals>.my_integrator  s    !!QD999=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3rj   )
integratorr=  r<  r   )rJ  r<  r=  z"Recursive Mellin transform failed.zUnexpected form...z"Recursive Mellin transform worked:)2
transformsr3  r4  r5  r6  _lookup_tabler   r   rQ   r[   r   r   r  r   r   r,   r  r   r  r   r  r   r_   r   r   itemsr&   r'   rb  rW   rd  r   r   
ValueErrorr
   rn   r   rL  ComplexInfinityNegativeInfinityr   r|  r*  r%  r   r0  r.  r   r   NotImplementedError)"rg   r{   	recursiver3  r5  r  r   f_r   r  r   termsr   r   r   subs_rY  rZ  ro   r   r   r  r@  rm  rI  r>  r?  r6  r   rm   r   r   r6  r4  s"                                   @@rh   _rewrite_singlerV    sq   ; ; ; ; ; ; ; ; ; ; ; ;  ,]+++!W 
P!*a((55a88qq66A::4aD8 	v{{!%"3{t !VV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""!   y C)**AN""|Aq'9'9"..qvva1~~q!:G8<uN N N5! F1aE**//155)   yAEE!*aeQ->??y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   rS   N)r   rV  )rg   r{   rR  r   r   r   s         rh   	_rewrite1rX  J  sS     Aq!!JCQ1i((A #B!ad""# #rj   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)rV  r.  s     rh   ri   z_rewrite2.<locals>.<genexpr>a  s4      
L
Lt?4E**d2
L
L
L
L
L
Lrj   Nc           	         t          t          t          | d                             t          t          | d                                       S Nr   rS   )maxr  r   r   r{   s    rh   r|   z_rewrite2.<locals>.<lambda>g  =    #c*QqT1--..JqtQ4G4G0H0HII rj   c           	         t          t          t          | d                             t          t          | d                                       S r\  )r]  r  r   r^  s    rh   r|   z_rewrite2.<locals>.<lambda>h  r_  rj   c           	         t          t          t          | d                             t          t          | d                                       S r\  )r]  r  r   r^  s    rh   r|   z_rewrite2.<locals>.<lambda>i  sD    #c01q99::01q99::< < rj   FTrS   Fr   )
r   r/  r  r  r   r   r
  r  rV  rU   )rg   r{   r   r   r   r  rR  fac1fac2r  r  r   s    `          rh   	_rewrite2re  X  sT    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}}B1r!ud22223 3rj   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)
    r   *Try rewriting hyperbolics in terms of exp.r   collectN)r   r   r   r   r   r   _meijerint_indefinite_1r   rd   rP   rQ   r   rn   r3   r|  meijerint_indefiniter2   r   r   sympy.simplify.radsimpri  r   r   r,   extendnextr   )rg   r{   resultsr   ro   rvri  s          rh   rk  rk  u  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$$%%%& &rj   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  }|dz   |z  t          dd	t
          j
                  }fd
}t          d  ||j                  D                       rit          t          |j                  t          |j                  dz
  gz   t          |j                   gz   t          |j                  |           }ngt          t          |j                  dz
  gz   t          |j                  t          |j                  t          |j                   gz   |          }|j        rA|                     d                              t
          j        t
          j                  sd}nd} ||                    |||z  z            |          }|	 |||z  d          z  }	fd}t/          |	d          }	|	j        r<g }|	j        D ]%\  }}t5           ||                    }|||fgz  }&t7          |ddi}	nt5           ||	                    }	t7          |	t5          |          ft9          |           df          S )z0 Helper that does not attempt any substitution. z,Trying to compute the indefinite integral ofwrtr   )rD  r  Nz could rewrite:rS   r   zmeijerint-indefinitec                     fd| D             S )Nc                    g | ]}|z   S r   r   )re   r   r  s     rh   r   z7_meijerint_indefinite_1.<locals>.tr.<locals>.<listcomp>  s    '''AG'''rj   r   )r   r  s    rh   r  z#_meijerint_indefinite_1.<locals>.tr  s    ''''Q''''rj   c              3  8   K   | ]}|j         o	|d k    dk    V  dS )r   TN)r  rw  s     rh   ri   z*_meijerint_indefinite_1.<locals>.<genexpr>  s2      CCQq|0aD 0CCCCCCrj   )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)deeprS   )r   rZ   r   
_from_argsas_coeff_add)ro   r{   s    rh   _cleanz'_meijerint_indefinite_1.<locals>._clean  s@    . 5111~c..q11!4555rj   )evaluater|  F)r|  r   rD  r  rX  r   r   r   r   r*  r   r/  r   rQ   r   r   r  r  is_extended_nonnegativer   rn   r.  rO  r7   ra   rm   rH  r6   rT   )rg   r{   rD  r  r   r   r   glr   ro   r  rm  r   r   r   r6  r   fac_r   r  r   rv  r{  r`  r   r  s    `                       @rh   rj  rj    s@   
91eQGGG55555555	1aB	ztCR
b!!!
&C %- %-1aaj!,,1b!$$1	Q QwQU#a'1uai 3.66	( 	( 	( 	( 	(CC""QT((CCCCC 	^QT

DNNaeW4d14jjSD66I4PQPX>>[\^ ^ ^AA QT

aeW$d18nnd14jj$qx..UXTXSYBY[\^ ^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Irj   c                    t          d| |||f           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|           t#          |                     |||z             t/          ||z   |z
            z  |          }|r5t)          |d         t*                    r|	                    |           |c S |                     |||z             } ||z
  }d}|t          j        urut1          t          j        t5          |          z            }t7          |          }|                     |||z            } | t/          ||z
            |z  z  } t          j        }t	          d||           t	          d|            t#          | |          }|r3t)          |d         t*                    r|	                    |           n|S |                    t8                    rt	          d           t          t;          |          |||          }|r{t=          |t>                    sQddl m!}  |tE          |d                   |d         #                    t0                              f|dd         z   }|S |	$                    |           |	rtK          tM          |	                    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.
    z$Integrating %s wrt %s from %s to %s.z+Integrand has DiracDelta terms - giving up.Nz5Integrand has Singularity Function terms - giving up.r{   Tz  Integrating -oo to +oo.z  Sensible splitting points:)r   reversez  Trying to split atz  Non-real splitting point.z'  But could not compute first integral.z(  But could not compute second integral.Fz)  But combined condition is always false.r   rS   zTrying x -> x + %szChanged limits tozChanged function torg  rh  )'r  r   rn   r@   r|  rR   r   r   r   r   rP  rL  meijerint_definiter   r   r   is_extended_real_meijerint_definite_2r9  rU   rd   rQ   r   rA   r,   r   r#   r$   r3   r2   r   r   rl  ri  r   r   rm  rn  r   )rg   r{   r   r   rS  x_a_b_r)  ro  r   r   res1res2cond1cond2r   ro   splitr  rp  ri  s                         rh   r  r    s   < 2Q1aLAAA

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

A	q!A	AAvv~GA1AJ#6#6!!&&QB--QB;;;	
a 	 	 *+++*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++0%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$$%%%& &rj   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   rn   r;   r3   r   r8   r9   sympy.simplify.fur  )rg   r{   ro   origsawexpandedr  reduceds           rh   _guess_expansionr    sc   #$
%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Jrj   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.
    r{   zmeijerint-definite2T)positiver   TryingN)r*  r   r   r   r  r|  _meijerint_definite_3)rg   r{   dummyr   explanationro   s         rh   r  r    s      3-q4@@@E	q%AAAvvvt|*1a00  ;x%%%#Aq)) 	JJJ	 rj   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.
    rS   Fz#Expanding and evaluating all terms.c                0    g | ]}t          |          S r   )rG  )re   r   r{   s     rh   r   z)_meijerint_definite_3.<locals>.<listcomp>  s$    <<<%a++<<<rj   c              3     K   | ]}|d uV  	d S rc   r   )re   r   s     rh   ri   z(_meijerint_definite_3.<locals>.<genexpr>  s&      ++q}++++++rj   N)rG  is_Addr|  rm   rl   r   r   rU   )rg   r{   ro   ressr  r   r   s    `     rh   r  r    s      1
%
%C
 s1v
x 4555<<<<QV<<<++d+++++ 	E&C  1q!UAEzzAv 	 	 zrj   c                :    t          t          |                     S rc   )rd  r&   )rg   s    rh   rH  rH    s    jmm$$$rj   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|           t          d|	f           |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   rC  IntegratingF)rR  N#Could rewrite as single G function:But cond is always False.z&Result before branch substitutions is:rb  z!Could rewrite as two G functions:zNon-rational exponents.zSaxena subst for yielded:z&But cond is always False (full_pb=%s).z)Result before branch substitutions is: %s)r   rD  r|  rX  r   r   rp  r  rU   r  rH  re  r  r  r  r  )rg   r{   rB  rD  r   r   r   r   r   ro   r  rm  rh  r  r  r  s1f1r  s2f2r   f1_f2_s                           rh   rG  rG    s    +*****
=! >q!u--->!CQ8#r1EEE&C  1a66(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y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}}@'JJJJCcWMMM %9$$$%kk#&6&677====9 ~	> 	>rj   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   rS   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:rC  )InverseLaplaceTransform)'r   r   r|  r0  r   r   is_Mulr   rm   r   r,   popr   r   r   r   r   r   r   r.   r   r   r   r"   r@   r6   rX  r  r1  rU   r-  rH  r   rD  rn   rA   rb  rK  r  )rg   r{   r   rS  t_shiftrm   r`  exponentialsr#   r^  r   r   r   ro   r   r   r   r   r  rm  rD  r  s                          rh   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66 ''****NN3'''' $c{{; DI%DCH111-cgq9911.   Avv$++Ac#(mmO<<<s####s###;  	$< \"M?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)rg   r   r{   r   r   r   r   )F)r   
__future__r   r
  sympyr   
sympy.corer   r   sympy.core.addr   sympy.core.basicr   sympy.core.cacher	   sympy.core.containersr
   sympy.core.exprtoolsr   sympy.core.functionr   r   r   r   r   sympy.core.mulr   sympy.core.intfuncr   sympy.core.numbersr   r   sympy.core.relationalr   r   r   sympy.core.sortingr   r   sympy.core.symbolr   r   r   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr    $sympy.functions.elementary.complexesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   &sympy.functions.elementary.exponentialr,   r-   r.   #sympy.functions.elementary.integersr/   %sympy.functions.elementary.hyperbolicr0   r1   r2   r3   (sympy.functions.elementary.miscellaneousr5   $sympy.functions.elementary.piecewiser6   r7   (sympy.functions.elementary.trigonometricr8   r9   r:   r;   sympy.functions.special.besselr<   r=   r>   r?   'sympy.functions.special.delta_functionsr@   rA   *sympy.functions.special.elliptic_integralsrB   rC   'sympy.functions.special.error_functionsrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   'sympy.functions.special.gamma_functionsrO   sympy.functions.special.hyperrP   rQ   -sympy.functions.special.singularity_functionsrR   	integralsrT   sympy.logic.boolalgrU   rV   rW   rX   rY   sympy.polysrZ   r[   sympy.utilities.iterablesr\   sympy.utilities.miscr]   r|  r^   r  r_   rd   r   sympy.utilities.timeutilsr   timeitr   rN  r   r   r   r   r   r   r  r  r  r  r   r#  __annotations__r*  r%  r0  r9  rd  ri  rp  r  r  r  r  r  r  r-  r1  rL  rV  rX  re  rk  rj  r  r  r  r  rH  rG  r  r   rj   rh   <module>r     s5    8 # " " " " "                         " " " " " " $ $ $ $ $ $ ' ' ' ' ' ' - - - - - -8 8 8 8 8 8 8 8 8 8 8 8 8 8       # # # # # # + + + + + + + + : : : : : : : : : : 8 8 8 8 8 8 8 8 : : : : : : : : : : : : & & & & & & > > > > > >                          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 2 2 2 2 2 2 
E#JJ  JP JP JPb / . . . . .	)			N 	N 	N 	N	 	 	 	 	* 	 	 	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" " "	 	 	 	  *m m m m`& & &<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[rj   