
    MZd                        d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ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 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, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl m8Z9 d dl m:Z:m;Z; d dl<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZN d ZOd ZPdJdZQd ZRe3d        ZSd ZTd ZUd ZVd ZWd  ZXdKd!ZYe5d"        ZZd# Z[d$ Z\d% Z]d& Z^d' Z_d( Z`d) ZadLd*Zbe5d+        Zcd, Zde3d-        Zee5d.        Zfd/ Zge5d0        Zhd1 Zid2 Zjd3 Zkd4 Zld5 Zme5d6        Znd7 Zoe5d8        Zpe5d9        Zqe5d:        Zre5d;        Zse5d<        Zte5d=        Zue5d>        Zvd? Zwe5d@        ZxdA ZydB Zze5dC        Z{e3dD        Z|e3dE        Z}e3dF        Z~dG ZdH ZyI)M    )	randrange)ShiftAShiftBUnShiftAUnShiftBMeijerShiftAMeijerShiftBMeijerShiftCMeijerShiftDMeijerUnShiftAMeijerUnShiftBMeijerUnShiftCMeijerUnShiftDReduceOrderreduce_orderapply_operatorsdevise_planmake_derivative_operatorFormulahyperexpandHyper_Function
G_Functionreduce_order_meijerbuild_hypergeometric_formula)Sum)Tuple)Expr)I)S)symbols)binomial)	Piecewise)hypermeijerg)zabc)XFAILraisesslowON_CIskip)verify_numerically)Rationalpi)exp	exp_polarlog)atanh)sqrt)asincossin)besseli)erf)gamma
lowergammac                  t   t        t        t        dd      t        j                  ft        dd      t        dd      ft
                     t
        t        d      z   t        t        t        t        z        dz  t
              z  dz  t        t              t        t        t
                    z  dt        t
              z  z  z   k(  sJ t        t        t        dd      dgg t        dd      gt        dd      d	gt
                    dt
        t        d
      z  z  dt        t              z  t        t        t
                    z  t        t
              z  dt        t        dd      t
              z  t
        t        d
      z  z  z
  z  t        t        dd            z  t        t        dd            z  k(  sJ y )N      z1/3            r   z2/3)r   r#   r/   r   Halfr%   r<   r2   r   r0   r5   r:   r$   r;        G/usr/lib/python3/dist-packages/sympy/simplify/tests/test_hyperexpand.pytest_branch_bugrI   #   ss   uhr1oqvv6!QRSUV8X[\Z\]^	
AeHZ	!B$ 1155a7
r(3tAw<
47
+	,, , , wA2B!Q8H8TUWX>[\J]_`ab	!QuX+qbz#d1g,.tAw6:1~q<* :**+QuX+:6 6 	77<Xa^7L	MMRS[\]_`SaMb	cc c crG   c            	         t        t        g g t                    t        t              k(  sJ t        t        ddgdgt               t        z        t	        dt        z         k(  sJ t        t        g t
        j                  gt        dz   dz              t        t              k(  sJ t        t        t        g t        d      gt        dz   dz        z        t        t              k(  sJ t        t        t        d      t        d      gt        d      gt        dz        t        z        t        t              k(  sJ t        t        t        dt              t        dz  z  t        dt        f      j                         t              sJ y )NrD   r@      3/21/2r   )r   r#   r%   r1   r3   r   rE   r7   r8   r6   
isinstancer   r!   r&   doitr   rF   rG   rH   test_hyperexpandrP   ,   s2    uRQ'(CF222uaVaS1"-a/0CAJ>>>uR!&&AqD5734A>>>qrAeH:1uQw778CFBBBuah%1AeH:q!tDQFG7  c(1a.A-1ay9>>@$GGGrG   c           	         t        t        | |t                    }|j                  t              ry|syi }|j                  t        hz
  }|rOt        |      D ]  \  }}	t        |      |z  ||	<    t        d t        | j                  |      D              sn|rOg d\  }
}}}|r	g d\  }
}}}t        t        | |t              j                  |      |j                  t        t              j                  |      t        |
|||      S )NFTc              3   B   K   | ]  }|j                   xr |d k    yw)r   N)
is_Integer).0r'   s     rH   	<genexpr>zcan_do.<locals>.<genexpr>E   s      Jq1<<*AF*Js   )r@   r>   r?   rD   )r@   r?   r>   )r&   r'   r(   d)r   r#   r%   hasfree_symbols	enumeraterandcplxanyr   substnreplacer2   r1   )apbq	numericaldiv
lowerplanerreplrandsymsnair&   r'   r(   rW   s                 rH   can_dorj   9   s    E"b!$%AuuU|D~~#H
x( 	'EAr{3DH	'JE2JOOD4IJJ  !LQ1a%Aq!b"ad#			)S!&&t,	Q!qA rG   c                  R   t        t        j                  gt        dd      g      sJ t        g dt        dd      dg      sJ t        t        dd      ddgddg      sJ t        t        dd      gt        dd      t        dd      t        j                  dg      sJ t        t        d	d      t        dd      gt        d
d      dg      sJ t        t        d	d      gt        dd      t        j                  g      sJ t        t        d	d      t        dd      gdg      sJ y )N	   r@   rD   rA   rK   r>   r?   rV   )rj   r   rE   r/   rF   rG   rH   
test_roachro   P   s
    166(Xa^,---"q(1a.!,---8B?Aq)Aq62228Aq>"Xb!_hr1oqvvq$QRRR8B?HRO4xA6JKKK8B?%Q'@AAA8B?HRO4qc:::rG   c            	         t        t        dd      dgt        dd      t        j                  t        dd      g      sJ t        t        dd      gt        dd      dg      sJ t        t        dd      t        j                  dgt        dd      t        dd      g      sJ t        g dt        j                  dg      sJ t        t        j                  gt        dd      t        dd      t        dd      g      sJ y )	Nr>   r@   rD   rK   r?   rA   rD   r@   r?   rV   )rj   r/   r   rE   rF   rG   rH   test_roach_failrr   \   s    8B?A&!Q!Q(PQQQ8Aq>"Xa^Q$78888B?AFFA.!Q!Q0PQQQ)affa[)))166(Xb!_hr1oxAOPPPrG   c                  |   ddl m}  t        t        g dgt                    | u sJ t        t        dgdgt                    | u sJ t        t        ddgdgt                    dk(  sJ t        ddt               t               gdt               g      sJ t        t        dd	t                    dt        d
z  z   k(  sJ y )Nr   oor>   rV   rD   rn   i)r>   rD   )rV   r@   )sympy.core.numbersru   r   r#   r%   rj   r[   rt   s    rH   test_polynomialrw   g   s    %uR"q)*b000ubTB4+,222uaVbT1-.!3332r8:xz2S(*4EFFFuWeQ/0A!G;;;rG   c            
         t        t        dgt        gt                    t        t        t         dz   z  t        dz   dt        z  z   t        t        dz
  z  z   dz
  z  t	        t              z  t        t        dz
  t              z  z   dz
  k(  sJ t        t        ddgdgt                    dt        z  dt        t         dz         z  t        dz  z  z
  k(  sJ t        t        t        j                  dgt        dd      gt                    ddt        z  dz
  z  t        t        t                    t        t              z  dz  z   k(  sJ t        t        t        j                  t        j                  gt        dd      gt                    dt        z  dz   dz  t        t        t         dz         z  z  d	t        z  dz
  t        t        t                    z  dt        t        dd      z  z  z  z   k(  sJ t        t        ddgt        dd      gt                    ddt        z  dz
  z  t        t        t                    t        t              dt        z  dz
  z  t        t         dz         z  z  z
  k(  sJ t        t        t        dd      dz
  ddgt        j                  dgt                    t        t              t        t        d	d
      z  t        d	d      z
  z  t        t        t                    z  dt        dz  z  dt        z  z   d	z
  dz  t        z  z   d	t        t         dz         z  dt        dz  z  z  z
  k(  sJ t        t        dt        j                  z   ddgddgt                    dt        t        t         dz         dz  t        j                  z         z  t        z  k(  sJ t        t        dgt        dgt                    t        t         dz  t        j                  z   z  t        t        dz
  dt        t              z        z  t        t              z  t        t         dz  dz   z  t        t        dt        t              z        z  t        t              z  z   k(  sJ y )Nr@   rD   r?   rV   r>   rA   rm   rK   rC   rB   i    #   )r   r#   r&   r%   r1   r<   r3   r   rE   r/   r4   r5   r6   r'   r9   r;   rF   rG   rH   test_hyperexpand_basesr|   p   s   uaS1#q)*	AQK!Q$1q!a%y0145c!f<1q5! 	 	!! ! ! uaVaS!,-A#qb1f+ad8J1JJJJuaffa[8Aq>*:A>?
AaC!GuT!W~d1g-a//0 0 0uaffaff-A/?CD	A1aaR!Vn%Q37DaM
!1QA%6#6
7	88 8 8 uaVhq!n%5q9:b!A#'l
tAw-a!A#'*4Q<7
8?9 9 9 9uhr1o11a81661+qIJQ8Aq>!HQN23E$q'NBq!t8bd?Q
"1
$	%'(aR!V}bAg'>	?? ? ? ua!&&j!Q/!Q;<
3tQBF|A~&'')* * * uaS1a&!,-	QBqD166M71q5!DG)44U1X=
qbdQh-1T!W9-
-eAh
6	77 7 7rG   c            	         t        t        t        t        j                  t        z   gt        j                  gt
                    dt        t
              z   dt        z  z  dz  dt        t
              z
  dt        z  z  dz  z   k(  sJ t        t        t        t        dd      t        z   gdt        z  gt
                    ddt        z  dz
  z  t
         dz   t        j                  z  dz   dt        z  dz   z  z  k(  sJ y )NrD   rV   r@   r>   )r   r#   r&   r   rE   r%   r5   r/   rF   rG   rH   test_hyperexpand_parametricr~      s    ua!_qvvh:;QK2a4 "a$q'kRT%:1%<<= = =ua"a1!45!ua@AqsQw<1"q&166)A-A::; ; ;rG   c                  <   ddl m}   | t        t        dz  t	        dgdt        d      gt        dz         z              t        t        dt        z        z  t        dz   t
        j                  z   t        dt        z        z  z   t
        j                  z
  k(  sJ y )Nr   simplifyrK   r@   r?   rL   )	sympy.simplify.simplifyr   r   r%   r#   r   r8   rE   r7   r   s    rH   test_shifted_sumr      s{    0K1UA3AeH1u%E EFGS1X:!Q$QqS11AFF:; ; ;rG   c                  6    t        t        d      dz         dz  S )z Steer clear of integers.    
   2   )r   r   rF   rG   rH   _randratr      s    Yr]R ##rG   c                 T    t               t        t               z  z   t        d| z   z  z   S )z+ Polys is not good with real coefficients. rD   )r   r   )offsets    rH   r[   r[      s"    :(*$q!f*~55rG   c            	      0   ddl m}   |        j                  }|D ]  }|j                  |j                        }i }t        |j                        D ]  \  }}t        |      ||<    |j                  |      }|j                  j                  |      j                  d      }|j                  }t        ||j                  t        t              |      sJ |j                  |j                   z  d   j                  |      j                  d      }	t        |j                  t        t              |	j                  t        t              |      sJ ||j                   j#                  d       j%                  |      z  }
|j&                  |j                   z  }t)        |
|      D ]q  \  }}t        |j                  |      j                  t        t              |j                  |      j                  d      j                  t        t              |      rqJ   y )Nr   )FormulaCollectionnonrepsmallc                 $    | j                  d      S )Nr   )rewrite)ts    rH   <lambda>ztest_formulae.<locals>.<lambda>   s    2 rG   )sympy.simplify.hyperexpandr   formulaefuncr%   rZ   r    r[   r]   closed_formr   r^   r_   r2   r1   CB	applyfuncdiffMzip)r   r   formulahreprh   symr   r%   clderiv1deriv2d1d2s                 rH   test_formulaer      s   < "++H VLL#0 	#FAs{CH	# FF3K))..s3;;MJII![((C8!<<< ii'))#Q',,S199-H+%%sZZ	37< 	< <799&& (  DG$WYY&&&) 	VFBbggcl**9c:ggcl**=9AA)SQSTV V V	V1VrG   c            	      `   ddl m}   |        j                  }|D ]  }||   D ]  }t        |j                  j
                  |j                  j                  |j                  j                  |j                  j                  |j                        }i }|j                  D ]  }t               ||<    |j                  |      }|j                  j                  |      }|j                  }t        |||      sJ |j                  |j                   z  d   j                  |      }	t        ||	|      sJ ||j                   j#                  |      z  }
|j$                  |j                   z  }t'        |
|      D ]2  \  }}t        |j                  |      |j                  |      |      r2J    y )Nr   )MeijerFormulaCollection)r   r   r   r$   r   anr`   bmra   r%   r    r[   r]   r   r^   r   r   r   r   r   )r   r   sigr   gr   r   r   r%   r   r   r   r   r   s                 rH   test_meijerg_formulaer      so   B&(11H 9} 	9G		#A C &#:C& sA!--2237K		Aaa((( ))gii'+005Bk2q)))wyy~~a((FYY*Fff- 9B"''#,a8889'	99rG   c                 :    t         | j                  t               z  S N)r%   r   )fs    rH   opr      s    QVVAY;rG   c                  D   t        t        dgd      t        dgd      t              g k(  sJ t        t              5  t        t        dgd      t        dd      t               d d d        t        t              5  t        t        dgdg      t        dgdg      t               d d d        t        t              5  t        t        dgg       t        t        d      gg       t               d d d        d t        d      D        \  } }}|dt        z  z  }t        | |g|gt              }t        | dz   |f|gt              }t        t        |t        t        | dz   |f|g      t        | |f|g      t              t              |t              sJ t        | dz   |dz
  f|gt              }t        t        |t        t        | dz   |dz
  f|g      t        | |f|g      t              t              |t              sJ y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   +xY w)Nr   rF   rD   r@   rM   c              3   2   K   | ]  }t        |        y wr   r[   rT   rh   s     rH   rU   ztest_plan.<locals>.<genexpr>        0!(1+0   r?   )r   r   r%   r*   
ValueErrorr   ranger   r#   r^   r   r   )a1a2b1r   h2s        rH   	test_planr      s   ~qc2.A3#Q(+-. . .	
	 HNA3+^B-CQGH	
	 KNA3,naS1#.FJK	
	 PNA3+^QuXJ-KQOP 1uQx0JBB!A#IBr2ha A	Q|bT1	%BoaNBFB<"6B8bT*A	/024 	A  
 
QQ"q	)BoaNBFBF#3bT:B8bT*A	/024 	A  'H HK KP Ps#   'G;:*H;1H;HHHc                     ddt        d      }}} dt        d      }}t        | ||f||f      }t        | dz   |dz   |dz   f|dz   |dz   f      }t        ||t              }t	        |t         |t              g       }t        |j                  t              }	t        t        |j                  ||	      |j                  z  d    |t              t              sJ t        | |dz
  |dz
  f|dz
  |dz
  f      }t        ||t              }t        t        |j                  ||	      |j                  z  d    |t              t              sJ y )NrD   r@   rM   r?   z5/2r   )r   r   r   r%   r   r   r   r^   r   r   r   )
r   r   a3r   b2r   r   opsr   derivs
             rH   test_plan_derivativesr      s,   AqxBB%BB|b"X.A	aaa026262B	CB
b!Q
C1adBA$QSS!,EqssC/3Q7ABBB	R!VR!V,rAvrAv.>	?B
b!Q
CqssC/3Q7ABBBrG   c                  r   d t        d      D        \  } }}t        | g|gt              }t        dd      J t        dd      J t        dt	        d            J t        | |f||ft              }t        t        ||      j                  |t              |t              sJ t        | |dz   f||ft              }t        t        |dz   |      j                  |t              |t              sJ t        |dz   | f||ft              }t        t        |dz   |      j                  |t              |t              sJ |dz   | |dz   f}|||f}t        t        ||            \  }}|j                  | fk(  sJ |j                  |fk(  sJ t        t        ||t              t        ||t              t              sJ y )	Nc              3   2   K   | ]  }t        |        y wr   r   r   s     rH   rU   z+test_reduction_operators.<locals>.<genexpr>  r   r   r?   r@   r   r>   rD   rM   rK   )r   r#   r%   r   r   r^   applyr   r   r   r`   ra   r   )	r   r   r   r   r   r`   ra   r   r   s	            rH   test_reduction_operatorsr     s   0uQx0JBBrdRD!Aq!$$$q"%%%q!E(#+++	Bx"b1	%Bk"b!''2.A666	BF|b"Xq	)Bk"q&"%++Ar2B:::	Q|b"Xq	)Bk"q&"%++Ar2B::: q&"b1f	B
b"B^B34ID#77re77reoab)5R+;Q???rG   c            
      j   d t        d      D        \  } }}}}t        | |f|||ft              }t        t        d        t        t        d        t        t        |       j                  |t              t        | dz   |f|||ft              t              sJ t        t        |      j                  |t              t        | |dz   f|||ft              t              sJ t        t        |      j                  |t              t        | |f|dz
  ||ft              t              sJ t        t        |      j                  |t              t        | |f||dz
  |ft              t              sJ t        t        |      j                  |t              t        | |f|||dz
  ft              t              sJ y )Nc              3   2   K   | ]  }t        |        y wr   r   r   s     rH   rU   z'test_shift_operators.<locals>.<genexpr>'       8!(1+8r   rA   c                      t        d      S )Nr   )r   rF   rG   rH   r   z&test_shift_operators.<locals>.<lambda>*  
    vay rG   c                      t        d      S )NrD   )r   rF   rG   rH   r   z&test_shift_operators.<locals>.<lambda>+  r   rG   rD   )
r   r#   r%   r*   r   r^   r   r   r   r   )r   r   r   r   b3r   s         rH   test_shift_operatorsr   &  sn   8uQx8BBBr2hRa(A
:()
:()fRjq"%ub1fb\BB<'KQOOOfRjq"%ub"q&\BB<'KQOOOfRjq"%ub"XQB7G'KQOOOfRjq"%ub"XBFB7G'KQOOOfRjq"%ub"XBQ7G'KQOOOrG   c            
      :   d t        d      D        \  } }}}}t        | |f|||ft              }t        t        d        t        t        d        t        t        d        t        t        d        t        | |f|||fdt              }t        |j                  |t              t        | dz
  |f|||ft              t              sJ t        | |f|||fdt              }t        |j                  |t              t        | |dz
  f|||ft              t              sJ t        | |f|||fdt              }t        |j                  |t              t        | |f|dz   ||ft              t              sJ t        | |f|||fdt              }t        |j                  |t              t        | |f||dz   |ft              t              sJ t        | |f|||fd	t              }t        |j                  |t              t        | |f|||dz   ft              t              sJ y )
Nc              3   2   K   | ]  }t        |        y wr   r   r   s     rH   rU   z(test_ushift_operators.<locals>.<genexpr>5  r   r   rA   c                  &    t        dddt              S )NrD   rF   r   r   r%   rF   rG   rH   r   z'test_ushift_operators.<locals>.<lambda>8  s    xb!Q7 rG   c                  &    t        dddt              S )NrF   r>   r   r   r%   rF   rG   rH   r   z'test_ushift_operators.<locals>.<lambda>9  s    xE1a8 rG   c                  &    t        dddt              S )Nr   )r   r>   rD   r   r   rF   rG   rH   r   z'test_ushift_operators.<locals>.<lambda>:  s    xj!Q? rG   c                  &    t        dddt              S )Nr   rD   r   r   r   rF   rG   rH   r   z'test_ushift_operators.<locals>.<lambda>;  s    xa; rG   r   rD   r@   )
r   r#   r%   r*   r   r   r^   r   r   r   )r   r   r   r   r   r   ss          rH   test_ushift_operatorsr   4  s   8uQx8BBBr2hRa(A
:78
:89
:?@
:;<"bBB<A.AagganeR!VRL2r2,BAFFF"bBB<A.AagganeRaL2r2,BAFFF"bBB<A.AagganeRHrAvr2.>BAFFF"bBB<A.AagganeRHr262.>BAFFF"bBB<A.AagganeRHr2rAv.>BAFFFrG   c                    ddl m} ddlm} t	        t        | |||t                    }|j                  t
              ry | ||ddddddd            }|syi }t        t        | |||t              j                  t        hz
        D ]  \  }	}
t        |	      ||
<    t        t        | |||t              j                  |      |j                  |      t              S )ab  
    This helper function tries to hyperexpand() the meijer g-function
    corresponding to the parameters a1, a2, b1, b2.
    It returns False if this expansion still contains g-functions.
    If numeric is True, it also tests the so-obtained formula numerically
    (at random values) and returns False if the test fails.
    Else it returns True.
    r   )expand)
unpolarifyFT)force
power_base	power_expmulr3   multinomialbasic)sympy.core.functionr   $sympy.functions.elementary.complexesr   r   r$   r%   rX   rZ   rY   r[   r^   r]   )r   r   r   r   numericr   r   re   rf   rh   ri   s              rH   can_do_meijerr   J  s     +?GBBA./AuuW~ 	6!4DE#EP 	QA D72r2r15BBaSHI 2A;Rgb"b"a(--d3QVVD\1EErG   c                  H   ddl m}  ddlm} t	        t        g g gdgg gt                     t        t              k(  sJ t	        t        ddgg gdgdggt                    t        t        dz         k(  sJ t	        t        ddgg gdgdggt                    t        t        dz   z  k(  sJ t	        t        g g gt        j                  gdggt        dz  dz              t        t              t        t              z  k(  sJ t	        t        g g gdgt        j                  ggt        dz  dz              t        t              t        t              z  k(  sJ t        g t         gt         dz
  t         t        j                  z
  gg       sJ t        g g t         dz  gt          dz  gd      sJ t        t         gt"        gt         gt"        t         dz
  g      sJ t	        t        dgg g dgt                    t%        dt'        t              dk  fdt'        dt        z        dk  ft        dgg g dgt              df      k(  sJ t	        t        g dgdgg t                    t%        dt'        t              dk  fdt'        dt        z        dk  ft        g dgdgg t              df      k(  sJ t        g g t         t"        dz  z   gt         t         t"        dz  z
  t         t        j                  z   g      sJ t        g g t         gt"        gd      sJ t        g t        j                  gt         gt          g      sJ t        g g t         t"        gg       sJ t        g g t         t"        gg       sJ t        g g t         t         t        j                  z   gt"        t"        t        j                  z   g      sJ t        g g t         t          gdt        j                  gd      sJ t        g g t         t         t        j                  z   t"        t"        t        j                  z   gg       sJ t        t        j                  gg dgt         t          g      sJ t        t        j                  gg t         gdt          gd      sJ t        g t         t        j                  z
  gt         t"        gt         t        j                  z
  gd      sJ t        g t         t        j                  z   gt         t"        z   t         t"        z
  t         gg d      sJ t        t         t        j                  z   gg t"        dt         z  t"        z
  t         gg d      sJ t        g g g t         t"        g      sJ t	        t        ddgg g ddgt                    t%        dt'        t              dk  ft        ddt        dz  z  z
  z  dz  t'        dt        z        dk  ft        ddgg g ddgt              df      k(  sJ  |  |t	        t        dgdt         z
  gt          dz  t          dz  t        j                  z   gg dt        z                          d	t        t              z  t        t        dz         dz   t         z  z  t         z  k(  sJ t	        t        dgg t         gddgt                    t)        t         ft         dz   t         dz   ft        t+        t,        t        z        z        t        t         z  z  t/        t               z  t/        t         dz         dz  z  k(  sJ t        d
t        j                  fdft        dz        }t	        |      t        t              t        dt        d	z  z         z  k(  sJ t	        |d      t        t              t        z  t        t        dz  dz         z  k(  sJ y )Nr   	gammasimpr   rD   r@   FTr>   rV   )r   rF   r   )place)sympy.simplify.gammasimpr   r   r   r   r$   r%   r1   r3   r   rE   r8   r5   r0   r7   r   r&   r'   r"   absr#   r2   r   r;   )r   r   r   s      rH   test_meijerg_expandr   i  s   20wBx1#rQB78CFBBBwA|qcA3Z;<AE
  wA|qcA3Z;<	1q5	  wBx166(QC1Q3(CDq6$r(?  wBx1#x1Q3(CDq6$r(?  aS1q5!aff*"5r:::R!A#!A666!qcA3AE
333 wsBQC341c!fqj/As1Q3x!|#41#r2sA.5	77 7 7 wrA3R341c!fqj/As1Q3x!|#4"qcA3A.5	77 7 7
 R!ac'QAaCQVV,DEEE
BaS%! ! !affXsaRD111R!Q,,,R!Q,,,R!QZ1a!&&j/BBBR!aR1aff+u===R!QZAJ!?DDD!&&2sQG444!&&2sQGU;;;a!&&j\Aq6AJ<GGGa!&&j\AE1q5!+<b%HHH!aff*rAqsQw?BFFF RaV,,, w1vr2Aw:;1c!fqj/a!AqD&j>!#S1X\2Aq62rB7A6=	?? ? ? Xka!eWr!taRTAFF]3R1=? @ A
48T!a%[1_q((*+ + +
 wsBaVQ78E	
q1ua!ena	!B$/=112A=66;Ah=??DQU|Q=O O O O 	y$/A6Aq>T"Xd1q2w;&77777q"d2hqjadQh&????rG   c            
         ddl m} m} ddlm} t        t        t        gg t        t        gg t                    t        t        z  t        t              z  t        t         t        z   dz         z   |t        t        z
  t              z  k(  sJ t        t        dgg ddgg t                    t        t               |dt              z  k(  sJ t        t        gg t        t        dz   gg       sJ t        t        gg t        dz   t        gg       sJ t        t        gg t        dz
  t        gg       sJ t        t        t        gg t        t        t        t        j                  z
  gg t                    t        t                t        t        t        j                  z
  z  z  dt#        dt        t              z        z   |dt        t              z        t         dz  z
  z  dt%        dt        t              z        z   | dt        t              z        z  z
  z  cxk(  rt        t        t        gg t        t        t        j                  z
  t        gg t                    cxk(  rEt        t        t        gg t        t        j                  z
  t        t        gg t                    k(  sJ  J t        t        dz
  gg t        dz   t        t'        dd      z
  t        dz   gg       sJ y )Nr   )CiSi)
uppergammarD   r@   r?   )'sympy.functions.special.error_functionsr   r   'sympy.functions.special.gamma_functionsr   r   r$   r&   r'   r%   r1   r;   r   r   rE   r5   r0   r7   r8   r/   )r   r   r   s      rH   test_meijerg_lookupr     sJ   @BwsBAA67	1SVE1"q&1*%%jQ&::; ; ;wsBAA67Az!Q     !b1a!e*b111!b1q5!*b111!b1q5!*b111wsBAq166z(:BBC	b	!a!&&j/!1S47^#3R$q'	]RT5I#J%&s1T!W9~%5b47m%C$D 	EA 	GQCaQVVQ%7Q?@A 	GQCa!&&j!Q%7Q?@	A A A A A
 !a%"q1ua(1a..@!a%&H"MMMrG   c            
         t        g g t        t        j                  z   gt        t        t        dz  z
  t        t        dz  z   g      sJ t        g g dt        j                  gt        t         g      sJ t        g g dt        z  t        j                  z
  t        t         t        j                  z
  gt        t        j                  z
  g      sJ t        g g dt        t        j                  z
  t         t        j                  z
  gt        j                  g      sJ t        g g t        t        t        j                  z   t        gdt        z  t        z
  g      sJ t        g g t        t        t        j                  z   t        dt        z  t        z
  g      sJ t        t        j                  gg t         t        gdg      sJ y )Nr@   r   r?   )r   r&   r   rE   r'   rF   rG   rH   test_meijerg_expand_failr     sC    R!aff*1qs7A!G/DEEER!QVVq1"g666R!A#,A2;!?!aff*NNNR!QZ!aff!=xHHHR!QZ!3acAgY???R!QZAaC!G!<===!&&2Aw444rG   c            
         d t        d      D        \  } }d t        d      D        \  }}d t        d      D        \  }}}}}}	t        | g||g|g||gt              }
t        j                  dd      J t        j
                  dd      J t        | |g||g|g|||gt              }t        t        j
                  ||      j                  |
t              |t              sJ t        | |g||g|g|||dz   gt              }t        t        j
                  ||dz         j                  |
t              |t              sJ t        | |dz
  g||g|g|||dz   gt              }t        t        j
                  |dz
  |dz         j                  |
t              |t              sJ t        | g|||dz
  g||dz   g||gt              }t        t        j                  |dz   |dz
        j                  |
t              |t        d	
      sJ | |g}|||dz   g}|||dz
  g}||dz   g}t        t        ||||            \  }}|j                  | fk(  sJ t        |j                        ||hk(  sJ |j                  |fk(  sJ t        |j                        ||hk(  sJ t        t!        |
|t              t        ||||t              t              sJ y )Nc              3   Z   K   | ]#  }t        |      d t        z  z
  |t        z  z
   % ywrA   Nr[   r   r   s     rH   rU   ztest_meijerg.<locals>.<genexpr>  &     8!hqkAaC!A#%8   )+r@   c              3   Z   K   | ]#  }t        |      d t        z  z   |t        z  z    % ywr   r   r   s     rH   rU   ztest_meijerg.<locals>.<genexpr>  r   r   c              3   0   K   | ]  }t                 y wr   r   r   s     rH   rU   ztest_meijerg.<locals>.<genexpr>  s     ;Qhj;   rC   r?   rK   rD   gư>)tol)r   r$   r%   r   meijer_minusmeijer_plusr^   r   r   r   r   r   setr`   r   ra   r   )r   r   r   r   r   b4b5r   a4a5r   g2r   ra   r`   r   niqr   s                     rH   test_meijergr    s   
 9uQx8FB8uQx8FB;%(;BBBr2hr2h2A##Aq)111""1a(000	"bB8bTBB<	;Bk%%b"-33Ar:BBBB	"bB8bTBBF+;Q	?Bk%%b"q&1772>AFFF	"b1fBx"BQ/?	CBk%%b1fb1f5;;ArBBJJJ	"BQ'"b1fBx	CBk&&
QQab!7 7 7 bB
b"q&	B
b"q&	B
b1fB":b"b"#=>HC66bU??svv;2r("""66bU??svv;2r("""oab)72r2r1+EqIIIrG   c            
         d t        d      D        \
  } }}}}}}}}}	t        | g||g|g||gt              }
t        t	        |      j                  |
t              t        | g||g|dz   g||gt              t              sJ t        t        |       j                  |
t              t        | dz
  g||g|g||gt              t              sJ t        t        |      j                  |
t              t        | g||g|g|dz   |gt              t              sJ t        t        |      j                  |
t              t        | g|dz
  |g|g||gt              t              sJ t        | g||g|g||gdt              }t        |j                  |
t              t        | g||g|dz
  g||gt              t              sJ t        | g||g|g||gdt              }t        |j                  |
t              t        | g||g|g|dz
  |gt              t              sJ t        | g||g|g||gdt              }t        |j                  |
t              t        | dz   g||g|g||gt              t              sJ t        | g||g|g||gdt              }t        |j                  |
t              t        | g|dz   |g|g||gt              t              sJ y )Nc              3   2   K   | ]  }t        |        y wr   r   r   s     rH   rU   z/test_meijerg_shift_operators.<locals>.<genexpr>  s     -Mahqk-Mr   r   rD   r   )r   r$   r%   r^   r   r   r   r	   r
   r   r   r   r   r   )r   r   r   r
  r  r   r   r   r  r	  r   r   s               rH   test_meijerg_shift_operatorsr    s   -M59-M*BBBBBr2hr2h2Al2$$Q+rdRHrAvhR!<aA A Al2$$Q+rAvhR2$R!<aA A Al2$$Q+rdRHrdR!VRL!<aA A Al2$$Q+rdR!VRL2$R!<aA A A 	tb"Xtb"Xq!<A	2r2ha2r(AFK K K 	tb"Xtb"Xq!<A	2r2hrAvrlAFK K K 	tb"Xtb"Xq!<A	2a2r(RD2r(AFK K K 	tb"Xtb"Xq!<A	2rAvrlRD2r(AFK K KrG   c                     d }  | t        g ddgddgg t              t        t               d      sJ  | t        g ddgddgg t              t        dz   dz  t        z   t        t              dz  z
  t        dd      z
  d      sJ  | t        g ddgddgg t              t        dz  dz  t        dz  z
  t        t              dz  z   t        dd      z   dd	t        z  z  z   d      sJ  | t        g g d
g dg t              t        t              dz   d	z  d      sJ  | t        ddgg g ddgt              dt        dt        z               sJ  | t        ddgddgddgddgt              t         t        t              z  dt        z  z   t        dt        z         dz         sJ  | t        t        j
                  gddgddgt        dd      gt              t        t              dz  dz
  d      sJ d } |g dgddgg       sJ  |ddgg g dg      sJ  |ddgg dg dddg      sJ  |ddgg dg ddg      sJ y )Nc           	         ddl m}  |||g      \  }}| }t        |       } | t        |t	        t
              dk  f|t	        dt
        z        dk  f|df      k(  sy| j                  d   j                  d   |k(  r| j                  d   j                  d   |k(  syt               dz  }t	        | j                  t
        |      j                          |j                  t
        |      j                         z
        j                         dkD  ryt	        | j                  t
        d|z        j                          |j                  t
        d|z        j                         z
        j                         dkD  ryy)Nr   )sympifyrD   TFr   g|=)
sympy.core.sympifyr  r   r"   r   r%   argsr[   r]   rh   )mr&   r'   r  m_z0s         rH   r   z"test_meijerg_confluence.<locals>.t  s+   .1v1NIq#a&1*o3qs8a</@2t*MMq	q!Q&166!9>>!+<+AZ]qvva} 6166!R=??#445779EAqvva2  "VQVVAqt_%6%6%889;;=ErG   rD   r   r?   r@   rK   r>      rC   rD   rD   rD   rD   )r   r   r   r   c                     t        | |||t              }t        |d      }|j                  t               r%|j                  rt        |j                        dk(  syt        ||t              S )NT)allow_hyperr?   F)r$   r%   r   rX   is_Piecewiselenr  r^   )r   r`   r   ra   r  m2s         rH   uz"test_meijerg_confluence.<locals>.u1  sQ    BBA&-66'?BOOBGG8I!R|rG   )r@   r@   rA   )rD   rD   rC   )r$   r%   r3   r/   r   rE   )r   r!  s     rH   test_meijerg_confluencer"    s_     WR!Q!QQ/#a&!<<<W
QFQFB#%&TE!GaK#a&($:Xa^$KQP P PWR!Q"a"a0T"Wqs]SVAX%A6AaC@!E E EWR|R;c!faiZ\1MMMWaVRaVQ/S1XI>>>WaVaVaVaVQ7RAY1_s1Q3xi!m- - -WaffX1v1vA/?CSVAXPQ\STUUU R!q!fb!!!aVRaS!!!aVY	Aq6222aVY	A3///rG   c            
      Z   ddl m}  t        dt        dd      fdft              }d}|t        t        dd      z  z  t        dt        dd      ft        d	d      ft        t        t        t        z        z        z  }| j                  t        |      |z  j                         d
d      sJ y )Nr   )RR))g      @rD   rF   r?   r@   r   gwg      rA   g      ?g-q=)sympy.polys.domains.realfieldr$  r$   r/   r%   r#   r2   r   r0   almosteqr   rh   )r$  r   r&   r   s       rH   test_meijerg_with_Floatsr'  =  s    0(1a.!2D 91=AA	!Xa^
E4!Q"88Aq>:KQyYZ[]Y]M^__A;;Aq(++-sE:::rG   c                  	   ddl m} m} ddlm} t        t        dt        gt        dz   gt              t        z         | t        dt              k(  sJ t        t        dt        t        gt        dz   t        dz   gt              t        dz  z         | t        dt              k(  sJ t        t        dt        t        t        gt        dz   t        dz   t        dz   gt              t        dz  z         | t        dt              k(  sJ t        t        dgt        gdz  z   t        dz   gdz  t              t        dz  z         | t        dt              k(  sJ  |t        t        ddt        z
  gg dgt         gt        t         t        z        t        z                     | t        dt              k(  sJ  |t        t        ddt        z
  dt        z
  gg dgt         t         gt        t         t        z        t        z                     | t        dt              k(  sJ  |t        t        ddt        z
  dt        z
  dt        z
  gg dgt         t         t         gt        t         t        z        t        z                     | t        dt              k(  sJ t        t        t        ddgdgt              z        t        dt         z          k(  sJ t        t        t        g dddgt              z         |dt              k(  sJ t        t        t        g d	g d
t              z         |dt              k(  sJ t        t        dt        dt        j                  z   gt        dz   t        j                  gt                    dt        z  t        dz
  z  dt        dz  z  t        z    | t        dt              z  z   k(  sJ t!        g d
ddg      sJ t!        dddt"        dz   gddt"        gd      sJ t!        dt        t        t        t"        dz   gt        dz   t        dz   t        dz   t"        gd      sJ ddlm} t        t        t        j                  t        j                  t        j                  dgt)        dd      t)        dd      t)        dd      gt)        dd                   | |dt        t        t        z        dz          |dt        j                        z         k(  sJ y )Nr   )lerchphipolylogr   rD   r@   r?   r   )rD   rD   rD   r  )r@   r@   r@   rV   rA   )rc   Frb   )AbsrK   )&sympy.functions.special.zeta_functionsr)  r*  r   r   r   r#   r&   r%   r$   r2   r   r0   r3   r   rE   rj   r'   r   r,  r/   )r)  r*  r   r,  s       rH   test_lerchphir.  F  sX   J2uaVa!eWa023x1a7HHHHq!Qi!a%Q+AqD025=aA5FG G GuaAq\AE1q5!a%+@!DQTIJAq  uaSA3r6\AE72:q9!R%?@B  [!QUR!
i2q "" # $'/1a'89 9 9[!QUAE):B
aR)QBrE"1$"& ' (+3Aq!+<= = =[!QUAE1q5)A2s
aR!i2&q("* + ,/71a/@A A A q1vsA../CQBK<???qy1a&!445AFFFq|Y::;wq!}LLLuaAJ/!a%!DE
1a!e1a4!XaA%6667 7 7 )aV$$$ 1aAE"Q1I2666 	
Aq!QUa!eQUAE15H H H 9uaffaffaffa8&q!nhq!nhq!nMxXY[\~_ `WQ	!B$)**WQ-??@A A ArG   c            
      <   d t        d      D        \  } }}}}t        | ||g||g      t        g | ||||g      fD ]  }t        |      }|j                  }|j                   ||      k(  sJ |j
                  j                  |      |z  }|j                  |j
                  z  }	t        ||	      D ]  \  }
}t        |
||      rJ   t        d      \  } }}t        t        d| gd|g|            |  |z  dz  | |z  dz  z   d| z  z   t        | dz   g|g|      z  | |z  dz  d| z  z
  dz   t        | g|g|      z  z   k(  sJ t        t        t        d|gd|g|            t        d|gd|g|      |      sJ t        t        dgd| |g|            t        d| |f|      |t        d| dz   |f|      z  d| z  z  z   ||dz
  z  t        d| dz   |dz   f|      z  d| z  |z  z  z
  k(  sJ t        t        t        dgd||g|            t        dgd||g|      |      sJ y )	Nc              3   0   K   | ]  }t                 y wr   r   )rT   _s     rH   rU   z$test_partial_simp.<locals>.<genexpr>v  s     2AXZ2r  rA   za b zr?   rD   r@   rF   rK   )r   r   r   r%   r   r   r   r   r   r^   r    r   r#   )r&   r'   r(   rW   er   r   r%   r   r   func1func2s               rH   test_partial_simpr5  t  s   2q2MAq!QAq	Aq6221aA/1 '(.CC}}Q'''!QQSS/ 	'LE5eUA&&&	'' gGAq!uaVaVQ/0
Aa!A#a%!A#	ua!eWqc155Q3q51Q3;?E1#sA.
.	// / / E1a&1a&!,-uaVaVQ/GL L LuaS1a)Q/0b1a&!
E"q1uaj!$
$ac
*	+
QU)E"q1ua!ena0
0!A#a%
8	99 9 9 E1#1ay!,-uaS1a)Q/GL L LrG   c            	         t        t        t        t        gt        gd            t        t              t        t        t        z
  t        z
        z  t        t        t        z
        z  t        t        t        z
        z  k(  sJ t        t        t        t        gdt        z   t        z
  gd            t        dt        dz  z         t        dt        z   t        z
        z  t        dt        z         z  t        dt        dz  z   t        z
        z  k(  sJ t        t        t        t        gdt        z   t        z
  gd            t        dt        dz  z         t        dt        z   t        z
        z  t        dt        z         z  t        dt        dz  z   t        z
        z  k(  sJ t        t        dt        z
  t        dz  z
  gdt        z
  t        dz  z   gt        dz  gt         dz  gd            t        ddt        z  z
        t        t        t        dz  z   t        dz  z         z  t        dt        z
  t        dz  z   t        dz  z
        z  t        dt        z
  t        dz  z
  t        dz  z         z  t        dt        z
  t        dz  z   t        dz  z         z  k(  sJ t        t        t        gt        gd            dk(  sJ t        t        gt        gd      dk7  sJ y )NrD   r>   r@   r   )r   r#   r&   r'   r(   r;   r$   r%   rF   rG   rH   test_hyperexpand_specialr7    s\   uaVaS!,-aq1uqy!!%A,.uQU|;< < <uaVa!eai["56a!A#guQUQY''a!e4U1qs7Q;5GGH H HuaVa!eai["56a!A#guQUQY''a!e4U1qs7Q;5GGH H HwA!}q1uqs{macUaRTFANOa!A#guQ1Wqs]++E!a%!A#+!2C,DD	q1uqs{QqS 	!	""'A!ac(9":	;; ; ; uaS1#q)*a///!qc1"""rG   c                      ddl m}  ddlm}  | dd      } |t	        t        dgg |dz   gdgt                          t        |dz   t              k(  sJ y )Nr   )Symbolr   rh   T)integerrD   )sympy.core.symbolr9  r   r   r   r$   r%   r<   )r9  r   rh   s      rH   test_Mod1_behaviorr<    sU    (0sD!AKR!a%1#q ABC1q5!  rG   c                     t        ddt        z   dz  dt        z
  dz  gt        dd      dg      sJ t        t        j                  t
        dz
  gt        dd      t
        dz   gd      sJ t        g t        dz   g      sJ t        t
        gt
        dz
  t        dz   g      sJ t        t
        gt
        t        j                  z
  dt
        z  g      sJ t        t
        gt
        t        j                  z
  dt
        z  dz   g      sJ t        t
        gt
        t        j                  z
  dt
        z  dz
  g      sJ t        t
        gt
        t        j                  z   dt
        z  g      sJ t        t
        gt
        t        j                  z   dt
        z  dz   g      sJ t        t
        gt
        t        j                  z   dt
        z  dz
  g      sJ t        t        j                  gt        dt        z
  g      sJ t        t        j                  gt        dt        z
  g      sJ t        dgdt        g      sJ t        t
        t
        t        j                  z   gdt
        z  t        dt
        z  t        z
  dz   g      sJ t        t
        t
        t        j                  z   gt        j                  dt
        z  dt
        z  t        j                  z   g      sJ t        t
        gt
        dz   gd      sJ y )NrD   r?   r@   T)rd   )rj   r   r/   r   rE   r&   r'   rF   rG   rH   test_prudnikov_miscr>    sM   1q1uai!a%+hq!na-@AAA1661q5/HQNAE#:tLLL"q1ug1#Aq1u~&&&1#AFF
AaC()))1#AFF
AaC!G,---1#AFF
AaC!G,---1#AFF
AaC()))1#AFF
AaC!G,---1#AFF
AaC!G,---166(QAJ'''166(QAJ'''1#1v1a!&&j/AaCAaC!GaK#89991a!&&j/AFFAaC1qvv#>???1#Aw4000rG   c                  J   t        t        t         gt        j                  g      sJ t        t        dt        z
  gt        j                  g      sJ t        t        dt        z
  gt	        dd      g      sJ t        t        dt        z
  gt        j                  g      sJ t        t        dt        z
  gt	        dd      g      sJ t        t        dt        z
  gt	        dd      g      sJ t        t        t        t        j                  z   gdt        z  dz
  g      sJ t        t        t        t        j                  z   gdt        z  g      sJ t        t        t        t        j                  z   gdt        z  dz   g      sJ t        t        t        t        j                  z   gt        j                  g      sJ t        t        t        t        j                  z   gt	        dd      g      sJ t        t        t        dz  dz   gt        dz  g      sJ t        dt
        gdg      sJ t        dt
        gt
        dz   gd      sJ t        t        gdt        z  g      sJ t        t        gdt        z  dz   g      sJ t        t        gdt        z  dz
  g      sJ y )NrD   r?   r@   Fr+  )rj   r&   r   rE   r/   r'   rF   rG   rH   test_prudnikov_1r@    s    1qb'AFF8$$$1a!e*qvvh'''1a!e*x1~.///1a!e*qvvh'''1a!e*x1~.///1a!e*x1~.///1a!&&j/AaC!G9---1a!&&j/AaC5)))1a!&&j/AaC!G9---1a!&&j/AFF8,,,1a!&&j/HQN#34441acAg,1&&&1a&1#1a&1q5'U333 1#!u1#!ay!!!1#!ay!!!rG   c            
         t         j                  } t        |  |  g| g      sJ t        |  | gd| z  g      sJ t        |  | gd| z  g      sJ t        |  | gd| z  g      sJ t        |  dg| g      sJ |  | fD ]b  }|  | dd| z  dd| z  dd| z  df	D ])  }|  | d| z  d| z  d| z  fD ]  }t        ||g|g      rJ  + dD ]  }dD ]  }t        ||g|g      rJ   d y )Nr?   rA   rB   rD   r@   rK   rD   r@   r?   rK   r   rE   rj   r   prh   r  s       rH   test_prudnikov_2rF    sJ   	AA2r(QC   A2q'AaC5!!!A2q'AaC5!!!A2q'AaC5!!!A2q'A3b!W +"aAaCAaCAaC3 	+Ab!QqS!A#qs+ +q!fqc***+	+  	+A! +q!fqc***+	+	+rG   c                  d   t         rt        d       t        j                  } t	        t        dd      t        dd      g| g      sJ t	        t        dd      t        dd      gd| z  g      sJ t	        t        dd      t        dd      gd| z  g      sJ t	        t        dd      t        dd      g| g      sJ t	        t        dd      t        dd      gd| z  g      sJ dD ]H  }|  | dd| z  dd| z  dd| z  dd	| z  f
D ]*  }dd| z  dd| z  dd| z  dfD ]  }t	        ||g|g      rJ  , J y )
NzToo slow for CI.rD   rK   r?   r@   rA   rB  rB   rl   )r,   r-   r   rE   rj   r/   rD  s       rH   test_prudnikov_3rH    sW    	A8Aq>8Aq>2QC8888Aq>8Aq>2QqSE:::8Aq>8Aq>2QqSE:::8Aq>8Aq>2QC8888Aq>8Aq>2QqSE::: +"aAaCAaCAaCAaC8 	+A1a1a1a0 +q!fqc***+	++rG   c                     t         j                  } d| z  d| z  d| z  fD ]^  }|  | d| z  d| z  d| z  fD ])  }d| z  dd| z  dd| z  dfD ]  }t        ||g|g      rJ  + dD ]  }dD ]  }t        ||g|g      rJ   ` y )Nr?   rA   rB   r@   rK   rB  )r@   r?   rK   rC  rD  s       rH   test_prudnikov_4rJ    s    	Ac1Q3!_ +"a1ac1Q3' 	+Ac1ac1ac1- +q!fqc***+	+  	+A +q!fqc***+	+	+rG   c            	         t         j                  } dD ]?  }t        |d      D ].  }dD ]'  }t        |d      D ]  }t        |  ||g||g      rJ  ) 0 A | dd| z  dd| z  dfD ]R  }| d| z  d| z  fD ]B  }| d| z  d| z  fD ]2  }| d| z  d| z  fD ]"  }||k  s	||k  st        |  ||g||g      r"J  4 D T | dd| z  dd| z  dfD ]4  }dD ]-  }| d| z  d| z  fD ]  }dD ]  }t        |  ||g||g      rJ   / 6 y )Nrq   rK   rD   r?   r@   rA   r   rE   r   rj   )r   rE  qre   r   s        rH   test_prudnikov_5rN  	  s   	A 6q! 	6A 6q! 6A!A2q!*q!f55566	66 AaCAaC# :QqS!A# 	:A1ac] :QqS!A# :AAv!q&%r1aj1a&999::	:: AaCAaC# 6 	6A1ac] 6" 6A!A2q!*q!f55566	66rG   c            	         t         j                  } d| z  d| z  fD ]V  }dD ]O  }| ddfD ]  }dD ]  }t        | ||g||g      rJ   dD ]$  }d| z  d| z  fD ]  }t        | ||g||g      rJ  & Q X dD ]*  }dD ]#  }dD ]  }dD ]  }t        | ||g||g      rJ   % , t        | | d| z  gd| z  d| z  g      sJ t        | dd| z  gd| z  d| z  g      sJ t        | ddgddg      sJ y )Nr?   rA   rq   rD   r@   )rD   r@   rC  )r   r  rh   rM  rE  s        rH   test_prudnikov_6rP  !  sy   	Ac1Q3Z 5 	5AAY 5" 5A!1a)aV44455  5A#qs 5A!1a)aV44455		55  5 	5A 5" 5A!1a)aV44455	55 1a1+!QqSz***1a1+!QqSz***1a)aV$$$rG   c            
         t        dgdg      sJ t        j                  } | d| z  d| z  d| z  fD ]  }t        |  g|g      rJ  |  | dd| z  dd| z  dd| z  df	D ],  }|  | d| z  d| z  d| z  ddddf	D ]  }t        |g|g      rJ  . y )Nr?   rC   rA   rB   rD   r@   rK   )rj   r   rE   )r   rh   r  s      rH   test_prudnikov_7rR  ;  s    1#s	A1ac1Q3 !rdQC   !b!Q!Q!Q!Q/ $"a1ac1Q31a3 	$A1#s###	$$rG   c            	      J   t         j                  } dD ]}  }dD ];  }t        d|dz         D ]'  }| dd| z  dd| z  dfD ]  }t        ||g||g      rJ  ) = d| z  d| z  fD ].  }| dd| z  dd| z  dfD ]  }dD ]  }t        ||g||g      rJ   0  |  | d| z  d| z  fD ]  }dD ].  }| dd| z  dd| z  dfD ]  }dD ]  }t        ||g||g      rJ   0 | d| z  d| z  fD ]>  }| d| z  d| z  dfD ]-  }| dd| z  dd| z  dfD ]  }||k  s	t        ||g||g      rJ  / @  y )Nrq   rD   r?   r@   rA   rL  )r   ri   bicidis        rH   test_prudnikov_8rW  G  s   	A  6 	6BArAv& 6a1a1a0 6B!2r(RH55566	6 Q3!* 	6B!QqS!QqS!, 6# 6B!2r(RH55566	66 r1ac1Q3 	: 	6B!QqS!QqS!, 6# 6B!2r(RH55566	6 ac1Q3- 	:B!A#qsA& :a1a1a0 :BRx%r2hR999::	:	:rG   c                      t        d      D ]   } t        g t        |       dz   dz  g      r J  t        d      D ]$  } t        g dt        |       z  dz    dz  g      r$J  y )Nrl   rD   r@   rA   )r   rj   r   )is    rH   test_prudnikov_9rZ  b  sk    1X *bAaD1Ha<.)))*1X -bQqtVaZ=?+,,,-rG   c            	      l   t         j                  } |  | dd| z  dd| z  dd| z  df	D ]+  }dD ]$  }t        |d      D ]  }t        |g||g      rJ  & - dD ].  }| d| z  d| z  d| z  fD ]  }dD ]  }t        |g||g      rJ   0 d| z  d| z  d| z  fD ];  }| ddd| z  dd| z  dfD ]'  }t        |g| |g      sJ t        |gd| z  |g      r'J  = | ddd| z  dd| z  dfD ]  }t        d| z  gd| z  |g      rJ  t        t	        dd      gt         j                  t         j                  g      sJ y )	NrD   r?   r@   rA   rB   rK   rB  r>   )r   rE   r   rj   r/   r   rE  r  rh   s       rH   test_prudnikov_10r]  j  s    	
Ab!Q!Q!Q!Q/ + 	+A1a[ +qcAq6***+	++
  +QqS!A#qs# 	+A! +qcAq6***+	++
 c1Q3!_ )Q1Q31Q3* 	)A1#1v&&&1#!Qx(((	))
 AqsAqsA& 'qseac1X&&&' 8B?#affaff%5666rG   c                  b   t        t        t        t        j                  z   gdt        z  t        dt        z  t        z
  g      sJ t        t        t        t        j                  z   gt        dd      dt        z  dt        z  t        j                  z
  g      sJ t        t        dd      t        dd      gt        j                  t        j                  dg      sJ t        t        dd      t        dd      gt        dd      t        j                  dg      sJ t        t        dd      t        dd      gt        dd      t        dd      dg      sJ t        t        dd      t        dd      gt        dd      t        dd      dg      sJ t        ddgt        dd      ddg      sJ y )Nr@   r?   rD   rK   rA   rB   )rj   r&   r   rE   r'   r/   rF   rG   rH   test_prudnikov_11r_    sY   1a!&&j/AaCAaC!G#45551a!&&j/HQNAaC1qvv#FGGG8Aq>8Aq>2QVVQVVQ4GHHH8Aq>8Aq>2Xa^QVVQ4OPPP8Aq>8Aq>2Xa^XaQR^UV4WXXX8Aq>8Aq>2Xa^XaQR^UV4WXXX1a&8Aq>1a0111rG   c            	      x   t        g t        t        t        j                  z   dt        z  gd      sJ t        g t        t        t        j                  z   dt        z  dz   gd      sJ t        g t        j                  t        t        t        j                  z   g      sJ t        g t	        dd      t        t        t        j                  z   g      sJ t        g t	        dd      t        j                  t	        dd      g      sJ t        g t        j                  t        j                  dg      sJ t        g t        j                  t	        dd      dg      sJ t        g t	        dd      t	        dd      t	        dd      g      sJ t        g ddt	        dd      g      sJ t        g ddt	        dd      g      sJ t        g dt	        dd      t	        dd      g      sJ t        g t	        dd      t	        dd      t	        dd      g      sJ t        g dt	        dd      t	        dd      g      sJ y )Nr@   FrD   r?   rK   rA   rB   )rj   r&   r   rE   r/   rF   rG   rH   test_prudnikov_12ra    s   
QAFF
AaC %) ) )"q!aff*acAg.666"qvvq!aff*-..."x1~q!aff*5666"x1~qvvx1~>???"qvvqvvq)***"qvvx1~q1222"x1~x1~x1~FGGG"q!Xa^,---"q!Xa^,---"q(1a.(1a.9:::"x1~x1~x1~FGGG"q(1a.(1a.9:::rG   c                      t         j                  } |  | fD ].  }| d| z  d| z  d| z  fD ]  }dD ]  }t        ||g|g      rJ   0 y )Nr?   rA   rB   rB  rC  r\  s       rH   test_prudnikov_2F1rc    si    	Ab!W +QqS!A#qs# 	+A! +q!fqc***+	++rG   c                  
   t        t        t        gt        dz   g      sJ t        dt        gt        g      sJ t        t        t        gt        t        z   t        j
                  z   g      sJ t        t        t        gt        t        z   t        j
                  z
  g      sJ t        t        t        gt        t        z   t        dd      z   g      sJ t        t        t        gt        t        z   dz   dz  g      sJ t        t        t        gt        t        z   dz  dz   g      sJ t        t        t        gt        t        z
  dz   g      sJ t        t        t        gt        t        z
  dz   g      sJ t        t        t        gdt        z  g      sJ t        t        t        gt        j
                  g      sJ t        t        t        gt        dd      g      sJ t        t        dt        z
  gt        g      sJ t        t        dt        z
  gt        g      sJ t        t        dt        z
  gt        g      sJ t        t        t        t        j
                  z   gt        g      sJ t        dt        gt        g      sJ t        dt        gt        dd      g      sJ t        t        dd      t        dd      gdg      sJ t        j                  } t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  d	z  g      sJ t        | dz  dg| dz  d
z  g      sJ t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  dz  g      sJ t        | dz  dg| dz  d	z  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  d	z  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  d
z  g      sJ t        | dz  dz  dg| dz  d
z  g      sJ t        | dz  dz  dg| dz  d	z  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  dz  dg| dz  dz  g      sJ t        | dz  d	z  dg| dz  dz  g      sJ y )NrD   r>   r?   r@   rK      rl   rC   rB      rA      r           )rj   r&   r'   r(   r   rE   r/   One)os    rH   test_prudnikov_fail_2F1rm    s   1a&1q5'"""2q'A3
 1a&1q5166>*+++1a&1q5166>*+++1a&1q58Aq>123331a&AEAIq=/***1a&AE19q=/***1a&1q519+&&&1a&1q519+&&&1a&1Q3%   1a&166(###1a&8Aq>*+++1a!e*qc"""1a!e*qc"""1a!e*qc"""1a!&&j/A3'''1a&1#1a&8Aq>*+++8Aq>8Aq>2QC888 	
A1Q3(QqSUG$$$1Q3(QqSUG$$$1Q3(QqSVH%%%1Q3(QqSUG$$$1Q3(QqSVH%%%1Q3(QqSUG$$$1Q3(QqSUG$$$1Q3(QqSUG$$$1Q3(QqSUG$$$1Q3q5!*qs2vh'''1Q3q5!*qs1ug&&&1Q3q5!*qs2vh'''1Q3q5!*qs1ug&&&1Q3q5!*qs2vh'''1Q3q5!*qs2vh'''1Q3q5!*qs1ug&&&1Q3q5!*qs2vh'''1Q3q5!*qs1ug&&&1Q3q5!*qs1ug&&&1Q3q5!*qs1ug&&&1Q3q5!*qs2vh'''1Q3q5!*qs2vh'''1Q3q5!*qs2vh'''1Q3q5!*qs2vh'''rG   c            	         t        t        t        t        dd      z   t        t        dd      z   gt        dd      t        dd      g      sJ t        t        t        t        dd      z   t        t        dd      z   gt        dd      t        dd      g      sJ t        t        t        t        dd      z   t        t        dd      z   gt        dd      t        dd      g      sJ t        t        t        t        dd      z   t        t        dd      z   gt        t        dd      z  dt        z  dz   dz  g      sJ t        t        dd      t        j                  t        j                  gddg      sJ t        t        dd      t        j                  dgt        dd      t        dd      g      sJ t        t        dd      t        dd      dgt        dd      t        d	d      g      sJ t        t        dd      t        dd      dgt        dd      t        d
d      g      sJ t        t        dd      t        dd      dgt        dd      t        dd      g      sJ t        t        dd      t        dd      dgt        dd      t        dd      g      sJ t        t        dd      t        dd      dgt        dd      t        dd      g      sJ t        t        dd      t        dd      dgt        dd      t        d
d      g      sJ t        t        j                  ddgt        dd      t        dd      g      sJ y )NrD   r?   r@   rK   rA   r>   re  rl   rg  rf  rB   rj  rC   )rj   r&   r/   r   rE   rF   rG   rH   test_prudnikov_fail_3F2ro    s   1a(1a.(!hq!n*<=APXYZ\]P^?_```1a(1a.(!hq!n*<=APXYZ\]P^?_```1a(1a.(!hq!n*<=APXYZ\]P^?_``` 1a(1a.(!hq!n*<=(1a.@PSTUVSVYZSZ\]R]?^___ 8B?AFFAFF3aV<<<8B?AFFA.!Q!Q0PQQQ 8Aq>8Aq>15AQSUV7XYYY8Aq>8Aq>15AQSUV7XYYY8Aq>8Aq>15AQSUV7XYYY8Aq>8Aq>15AQRTU7WXXX8Aq>8Aq>15AQRTU7WXXX8Aq>8Aq>15AQSUV7XYYY1661a.8Aq>8Aq>"BCCCrG   c            	         t        dt        gt        ddt        z  z
  t        z   g      sJ t        t        dd      gt        j
                  dg      sJ t        dgt        j
                  t        j
                  g      sJ t        t        dd      gt        j
                  t        dd      g      sJ t        t        dd      gt        dd      t        dd      g      sJ t        dgt        dd      t        dd      g      sJ t        dgt        dd      t        dd      g      sJ t        dgt        dd      t        dd      g      sJ t        t        j
                  dgt        dd      t        dd      t        dd      g      sJ t        t        j
                  dgt        dd      t        dd      t        dd      g      sJ t        g t        dd      t	        d      g      sJ t        g t        dd      t	        d	      g      sJ t        g t        dd      t	        d	      g      sJ t        g t        t        t        j
                  z   dt        z  dz
  g      sJ y )
NrD   r@   r>   rK   rA   r?   rB   gUUUUUU?gUUUUUU?)rj   r&   r'   r/   r   rE   rF   rG   rH   test_prudnikov_fail_otherrq    s   
 1a&1a!A#gk*+++ 8B?#affa[1111#'(((8Aq>"QVVXa^$<===8Aq>"Xa^Xa^$DEEE1#AA78881#AA78881#AA7888 1661+AAAOPPP1661+AAAOPPP "x1~qv.///"x1~qv.///"x1~qv./// "q!aff*acAg.///rG   c                  h    t        ddgt        gd      } t        |       t        dz   t        z  k(  sJ y )Nr>   rD   )r#   r%   r   r   s    rH   test_bugrt    s0    r1gsBAq>a!eQY&&&rG   c                      t        ddd      } t        |       t        dd      k(  sJ t        ddd      } t        |       t        dd      k(  sJ y )N)rn   rm   r{   )rv  rD      )rv  irn   r>   rC   )r#   r   r/   rs  s    rH   test_omgissue_203rx     sN    lHa(Aq>Xa_,,,lHa(Aq>Xb!_,,,rG   N)TrD   Fr   )T)sympy.core.randomr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.concrete.summationsr   sympy.core.containersr   sympy.core.exprr   rv   r   sympy.core.singletonr   r;  r    (sympy.functions.combinatorial.factorialsr!   $sympy.functions.elementary.piecewiser"   sympy.functions.special.hyperr#   r$   	sympy.abcr%   r&   r'   r(   sympy.testing.pytestr)   r*   r+   r,   r-   r.   r^   r/   r0   &sympy.functions.elementary.exponentialr1   r2   r3   %sympy.functions.elementary.hyperbolicr4   (sympy.functions.elementary.miscellaneousr5   (sympy.functions.elementary.trigonometricr6   r7   r8   sympy.functions.special.besselr9   r   r:   r   r;   r<   rI   rP   rj   ro   rr   rw   r|   r~   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r"  r'  r.  r5  r7  r<  r>  r@  rF  rH  rJ  rN  rP  rR  rW  rZ  r]  r_  ra  rc  rm  ro  rq  rt  rx  rF   rG   rH   <module>r     s   '5 5 5 5 5 5 5 * '     " % = : :     A A 6 - H H 7 9 E E 2 7 Gc
H.	; Q Q<74;;$
6
 V V@968C@4PG,F> ?@ ?@DN& 5 5 #J #JLK> %0 %0P;+A\L8# 1 1*"6 + +" + +$ + + 6 6. % %2 $ $ : :4- 7 70
2;& + + 3( 3(l D D0 0 0:'
-rG   