
    sgS                        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l2m3Z3m4Z4m5Z5m6Z6 d dl m7Z8 d dl m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZF d dlGmHZH d dlImJZJ d dlKmLZLmMZM d ZNd ZOdKdZPd ZQe3d        ZRd ZSd ZTd ZUd ZVd  ZWdLd!ZXe5d"        ZYd# ZZd$ Z[d% Z\d& Z]d' Z^d( Z_d) Z`dMd*Zae5d+        Zbd, Zce3d-        Zde5d.        Zed/ Zfe5d0        Zgd1 Zhd2 Zid3 Zjd4 Zkd5 Zle5d6        Zmd7 Zne5d8        Zod9 Zpe6d:        Zqe5d;        Zre5d<        Zse5d=        Zte5d>        Zue5d?        Zvd@ Zwe5dA        ZxdB ZydC Zze5dD        Z{e3dE        Z|e3dF        Z}e3dG        Z~dH ZdI ZyJ)N    )	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tooslow)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;   r1   r   r/   r4   r9   r$   r:        X/var/www/html/venv/lib/python3.12/site-packages/sympy/simplify/tests/test_hyperexpand.pytest_branch_bugrH   #   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rF   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 )NrC   r?      3/21/2r   )r   r#   r%   r0   r2   r   rD   r6   r7   r5   
isinstancer   r!   r&   doitr   rE   rF   rG   test_hyperexpandrO   ,   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GrF   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     rG   	<genexpr>zcan_do.<locals>.<genexpr>E   s      Jq1<<*AF*Js   )r?   r=   r>   rC   )r?   r>   r=   )r&   r'   r(   d)r   r#   r%   hasfree_symbols	enumeraterandcplxanyr   substnreplacer1   r0   )apbq	numericaldiv
lowerplanerreplrandsymsnair&   r'   r(   rV   s                 rG   can_dori   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 rF   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?   rC   r@   rJ   r=   r>   rU   )ri   r   rD   r.   rE   rF   rG   
test_roachrn   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:::rF   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?   rC   rJ   r>   r@   rC   r?   r>   rU   )ri   r.   r   rD   rE   rF   rG   test_roach_failrq   \   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PrF   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=   rU   rC   rm   i)r=   rC   )rU   r?   )sympy.core.numbersrt   r   r#   r%   ri   rZ   rs   s    rG   test_polynomialrv   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;;;rF   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?   rC   r>   rU   r=   r@   rl   rJ   rB   rA   i    #   )r   r#   r&   r%   r0   r;   r2   r   rD   r.   r3   r4   r5   r'   r8   r:   rE   rF   rG   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 7rF   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 )NrC   rU   r?   r=   )r   r#   r&   r   rD   r%   r4   r.   rE   rF   rG   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::; ; ;rF   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   simplifyrJ   r?   r>   rK   )	sympy.simplify.simplifyr   r   r%   r#   r   r7   rD   r6   r   s    rG   test_shifted_sumr      s{    0K1UA3AeH1u%E EFGS1X:!Q$QqS11AFF:; ; ;rF   c                  6    t        t        d      dz         dz  S )z Steer clear of integers.    
   2   )r   r   rE   rF   rG   _randratr      s    Yr]R ##rF   c                 T    t               t        t               z  z   t        d| z   z  z   S )z+ Polys is not good with real coefficients. rC   )r   r   )offsets    rG   rZ   rZ      s"    :(*$q!f*~55rF   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    rG   <lambda>ztest_formulae.<locals>.<lambda>   s    2 rF   )sympy.simplify.hyperexpandr   formulaefuncr%   rY   r    rZ   r\   closed_formr   r]   r^   r1   r0   CB	applyfuncdiffMzip)r   r   formulahreprg   symr   r%   clderiv1deriv2d1d2s                 rG   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rF   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_   bmr`   r%   r    rZ   r\   r   r]   r   r   r   r   r   )r   r   sigr   gr   r   r   r%   r   r   r   r   r   s                 rG   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9rF   c                 :    t         | j                  t               z  S N)r%   r   )fs    rG   opr      s    QVVAY;rF   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   rE   rC   r?   rL   c              3   2   K   | ]  }t        |        y wr   rZ   rS   rg   s     rG   rT   ztest_plan.<locals>.<genexpr>        0!(1+0   r>   )r   r   r%   r*   
ValueErrorr   ranger   r#   r]   r   r   )a1a2b1r   h2s        rG   	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 )NrC   r?   rL   r>   z5/2r   )r   r   r   r%   r   r   r   r]   r   r   r   )
r   r   a3r   b2r   r   opsr   derivs
             rG   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BrF   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     rG   rT   z+test_reduction_operators.<locals>.<genexpr>  r   r   r>   r?   r   r=   rC   rL   rJ   )r   r#   r%   r   r   r]   applyr   r   r   r_   r`   r   )	r   r   r   r   r   r_   r`   r   r   s	            rG   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???rF   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     rG   rT   z'test_shift_operators.<locals>.<genexpr>'       8!(1+8r   r@   c                      t        d      S )Nr   )r   rE   rF   rG   r   z&test_shift_operators.<locals>.<lambda>*  
    vay rF   c                      t        d      S )NrC   )r   rE   rF   rG   r   z&test_shift_operators.<locals>.<lambda>+  r   rF   rC   )
r   r#   r%   r*   r   r]   r   r   r   r   )r   r   r   r   b3r   s         rG   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OrF   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     rG   rT   z(test_ushift_operators.<locals>.<genexpr>5  r   r   r@   c                  &    t        dddt              S )NrC   rE   r   r   r%   rE   rF   rG   r   z'test_ushift_operators.<locals>.<lambda>8  s    xb!Q7 rF   c                  &    t        dddt              S )NrE   r=   r   r   r%   rE   rF   rG   r   z'test_ushift_operators.<locals>.<lambda>9  s    xE1a8 rF   c                  &    t        dddt              S )Nr   )r   r=   rC   r   r   rE   rF   rG   r   z'test_ushift_operators.<locals>.<lambda>:  s    xj!Q? rF   c                  &    t        dddt              S )Nr   rC   r   r   r   rE   rF   rG   r   z'test_ushift_operators.<locals>.<lambda>;  s    xa; rF   r   rC   r?   )
r   r#   r%   r*   r   r   r]   r   r   r   )r   r   r   r   r   r   ss          rG   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FrF   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mulr2   multinomialbasic)sympy.core.functionr   $sympy.functions.elementary.complexesr   r   r$   r%   rW   rY   rX   rZ   r]   r\   )r   r   r   r   numericr   r   rd   re   rg   rh   s              rG   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ErF   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   rC   r?   FTr=   rU   )r   rE   r   )place)sympy.simplify.gammasimpr   r   r   r   r$   r%   r0   r2   r   rD   r7   r4   r/   r6   r   r&   r'   r"   absr#   r1   r   r:   )r   r   r   s      rG   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&????rF   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)
uppergammarC   r?   r>   )'sympy.functions.special.error_functionsr   r   'sympy.functions.special.gamma_functionsr   r   r$   r&   r'   r%   r0   r:   r   r   rD   r4   r/   r6   r7   r.   )r   r   r   s      rG   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MrF   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   rD   r'   rE   rF   rG   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4rF   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r@   NrZ   r   r   s     rG   rT   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     rG   rT   ztest_meijerg.<locals>.<genexpr>  r   r   c              3   0   K   | ]  }t                 y wr   r   r   s     rG   rT   ztest_meijerg.<locals>.<genexpr>  s     ;Qhj;   rB   r>   rJ   rC   gư>)tol)r   r$   r%   r   meijer_minusmeijer_plusr]   r   r   r   r   r   setr_   r   r`   r   )r   r   r   r   r   b4b5r   a4a5r   g2r   r`   r_   r   niqr   s                     rG   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IrF   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     rG   rT   z/test_meijerg_shift_operators.<locals>.<genexpr>  s     -Mahqk-Mr   r   rC   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               rG   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rF   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   )sympifyrC   TFr   g|=)
sympy.core.sympifyr  r   r"   r   r%   argsrZ   r\   rg   )mr&   r'   r  m_z0s         rG   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rF   rC   r   r>   r?   rJ   r=      rB   rC   rC   rC   rC   )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   rW   is_Piecewiselenr  r]   )r   r_   r   r`   r  m2s         rG   uz"test_meijerg_confluence.<locals>.u1  sQ    BBA&-66'?BOOBGG8I!R|rF   )r?   r?   r@   )rC   rC   rB   )r$   r%   r2   r.   r   rD   )r   r   s     rG   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///rF   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      @rC   rE   r>   r?   r   gwg      r@   g      ?g-q=)sympy.polys.domains.realfieldr#  r$   r.   r%   r#   r1   r   r/   almosteqr   rg   )r#  r   r&   r   s       rG   test_meijerg_with_Floatsr&  =  s    0(1a.!2D 91=AA	!Xa^
E4!Q"88Aq>:KQyYZ[]Y]M^__A;;Aq(++-sE:::rF   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   rC   r?   r>   r   )rC   rC   rC   r  )r?   r?   r?   rU   r@   )rb   Fra   )AbsrJ   )&sympy.functions.special.zeta_functionsr(  r)  r   r   r   r#   r&   r%   r$   r1   r   r/   r2   r   rD   ri   r'   r   r+  r.   )r(  r)  r   r+  s       rG   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rF   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   )rS   _s     rG   rT   z$test_partial_simp.<locals>.<genexpr>v  s     2AXZ2r  r@   za b zr>   rC   r?   rE   rJ   )r   r   r   r%   r   r   r   r   r   r]   r    r   r#   )r&   r'   r(   rV   er   r   r%   r   r   func1func2s               rG   test_partial_simpr4  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rF   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 )NrC   r=   r?   r   )r   r#   r&   r'   r(   r:   r$   r%   rE   rF   rG   test_hyperexpand_specialr6    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"""rF   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   rg   T)integerrC   )sympy.core.symbolr8  r   r   r   r$   r%   r;   )r8  r   rg   s      rG   test_Mod1_behaviorr;    sU    (0sD!AKR!a%1#q ABC1q5!  rF   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 )NrC   r>   r?   T)rc   )ri   r   r.   r   rD   r&   r'   rE   rF   rG   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0rF   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 )NrC   r>   r?   Fr*  )ri   r&   r   rD   r.   r'   rE   rF   rG   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!!!rF   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>   r@   rA   rC   r?   rJ   rC   r?   r>   rJ   r   rD   ri   r   prg   r  s       rG   test_prudnikov_2rE    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***+	+	+rF   c                     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 y )NrC   rJ   r>   r?   r@   )r   rD   ri   r.   r   s    rG   test_prudnikov_3rH    s    	A8Aq>8Aq>2QC8888Aq>8Aq>2QqSE:::8Aq>8Aq>2QqSE:::8Aq>8Aq>2QC8888Aq>8Aq>2QqSE:::rF   c                      t         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 )	NrA  rC   r>   r?   r@   rA   rJ   rk   rB  rC  s       rG   test_prudnikov_3_slowrJ    s     	
A +"aAaCAaCAaCAaC8 	+A1a1a1a0 +q!fqc***+	++rF   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>   r@   rA   r?   rJ   rA  )r?   r>   rJ   rB  rC  s       rG   test_prudnikov_4rL     s    	Ac1Q3!_ +"a1ac1Q3' 	+Ac1ac1ac1- +q!fqc***+	+  	+A +q!fqc***+	+	+rF   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 )Nrp   rJ   rC   r>   r?   r@   r   rD   r   ri   )r   rD  qrd   r   s        rG   test_prudnikov_5rP    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6rF   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>   r@   rp   rC   r?   )rC   r?   rB  )r   r  rg   rO  rD  s        rG   test_prudnikov_6rR  $  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$$$rF   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>   rB   r@   rA   rC   r?   rJ   )ri   r   rD   )r   rg   r  s      rG   test_prudnikov_7rT  >  s    1#s	A1ac1Q3 !rdQC   !b!Q!Q!Q!Q/ $"a1ac1Q31a3 	$A1#s###	$$rF   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 )Nrp   rC   r>   r?   r@   rN  )r   rh   bicidis        rG   test_prudnikov_8rY  J  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::	:	:rF   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 )Nrk   rC   r?   r@   )r   ri   r   )is    rG   test_prudnikov_9r\  e  sk    1X *bAaD1Ha<.)))*1X -bQqtVaZ=?+,,,-rF   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 )	NrC   r>   r?   r@   rA   rJ   rA  r=   )r   rD   r   ri   r.   r   rD  r  rg   s       rG   test_prudnikov_10r_  m  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6rF   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>   rC   rJ   r@   rA   )ri   r&   r   rD   r'   r.   rE   rF   rG   test_prudnikov_11ra    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1rF   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?   FrC   r>   rJ   r@   rA   )ri   r&   r   rD   r.   rE   rF   rG   test_prudnikov_12rc    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:::rF   c                      t         j                  } |  | fD ].  }| d| z  d| z  d| z  fD ]  }dD ]  }t        ||g|g      rJ   0 y )Nr>   r@   rA   rA  rB  r^  s       rG   test_prudnikov_2F1re    si    	Ab!W +QqS!A#qs# 	+A! +q!fqc***+	++rF   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 )NrC   r=   r>   r?   rJ      rk   rB   rA      r@      r           )ri   r&   r'   r(   r   rD   r.   One)os    rG   test_prudnikov_fail_2F1ro    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'''rF   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 )NrC   r>   r?   rJ   r@   r=   rg  rk   ri  rh  rA   rl  rB   )ri   r&   r.   r   rD   rE   rF   rG   test_prudnikov_fail_3F2rq    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CrF   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 )
NrC   r?   r=   rJ   r@   r>   rA   gUUUUUU?gUUUUUU?)ri   r&   r'   r.   r   rD   rE   rF   rG   test_prudnikov_fail_otherrs     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.///rF   c                  h    t        ddgt        gd      } t        |       t        dz   t        z  k(  sJ y )Nr=   rC   )r#   r%   r   rG  s    rG   test_bugru    s0    r1gsBAq>a!eQY&&&rF   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)rm   rl   rz   )rw  rC      )rw  irm   r=   rB   )r#   r   r.   rG  s    rG   test_omgissue_203ry  #  sN    lHa(Aq>Xa_,,,lHa(Aq>Xb!_,,,rF   N)TrC   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   ru   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/   &sympy.functions.elementary.exponentialr0   r1   r2   %sympy.functions.elementary.hyperbolicr3   (sympy.functions.elementary.miscellaneousr4   (sympy.functions.elementary.trigonometricr5   r6   r7   sympy.functions.special.besselr8   r   r9   r   r:   r;   rH   rO   ri   rn   rq   rv   r{   r}   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r&  r-  r4  r6  r;  r=  r?  rE  rH  rJ  rL  rP  rR  rT  rY  r\  r_  ra  rc  re  ro  rq  rs  ru  ry  rE   rF   rG   <module>r     s   '5 5 5 5 5 5 5 * '     " % = : :     = = 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:'
-rF   