
    gS                        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 ZOdOdZPd ZQe3d             ZRd ZSd  ZTd! ZUd" ZVd# ZWdPd%ZXe5d&             ZYd' ZZd( Z[d) Z\d* Z]d+ Z^d, Z_d- Z`dQd.Zae5d/             Zbd0 Zce3d1             Zde5d2             Zed3 Zfe5d4             Zgd5 Zhd6 Zid7 Zjd8 Zkd9 Zle5d:             Zmd; Zne5d<             Zod= Zpe6d>             Zqe5d?             Zre5d@             Zse5dA             Zte5dB             Zue5dC             ZvdD Zwe5dE             ZxdF ZydG Zze5dH             Z{e3dI             Z|e3dJ             Z}e3dK             Z~dL ZdM ZdNS )R    )	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                  x   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 d S )N      z1/3            r   z2/3)r   r#   r.   r   Halfr%   r;   r1   r   r/   r4   r9   r$   r:        a/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/simplify/tests/test_hyperexpand.pytest_branch_bugrH   #   s   uhr1ooqv6!QRSUV8X[\Z\]]^^	
AeHHZ	!B$ 11555a7
r((3tAww<<
477
+	,, , , , wA2B!Q8H8TUWX>>[\J]_`aabb	!QuXX+qbz#d1gg,,.tAww6:1~~q<* <* :**+QuXX+:6 6 	77<Xa^^7L7L	MMRS[\]_`SaSaMbMb	cc c 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                                          t                    sJ d S )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   ,   s    uRQ''((CFF2222uaVaS1"--a/00CAJJ>>>>uR!&AqD573344A>>>>qrAeHH:1uQw77788CFFBBBBuahh%1AeHH:q!tDDQFGG77   c(1a..A-1ay99>>@@$GGGGGGGrF   TrC   Fc           	      ~   t          t          | |t                              }|                    t                    rdS |sdS i }|j        t          hz
  }|r`t          |          D ]\  }}	t          |          |z  ||	<   t          d t          | 	                    |          D                       sn|`g d\  }
}}}|r	g d\  }
}}}t          t          | |t                    	                    |          |                    t          t                    	                    |          t          |
|||          S )NFTc              3   0   K   | ]}|j         o|d k    V  dS )r   N)
is_Integer).0r'   s     rG   	<genexpr>zcan_do.<locals>.<genexpr>E   s-      JJq1<*AFJJJJJJrF   )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   sP   E"b!$$%%AuuU|| u tD~#H
 x(( 	' 	'EAr{{3DHHJJE2JOOD4I4IJJJJJ 	   !==LQ1a &%~~Aq!b"ad##			)S!!&&t,,	Q!qA   rF   c                     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 d S )N	   r?   rC   r@   rJ   r=   r>   rU   )ri   r   rD   r.   rE   rF   rG   
test_roachrn   P   sN    16(Xa^^,-----"q(1a..!,-----8B??Aq)Aq6222228Aq>>"Xb!__hr1ooqvq$QRRRRR8B??HROO4xA6JKKKKK8B??%Q'@AAAAA8B??HROO4qc:::::::rF   c            	      h   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 d S )	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QQ8Aq>>"Xa^^Q$7888888B??AFA.!Q!Q0PQQQQQ)))afa[)))))16(Xb!__hr1ooxAOPPPP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 d S )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0ubTB4++,,2222uaVbT1--..!33332r8::xzz2S(**4EFFFFFuWeQ//0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 d S )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   sW   uaS1#q))**	AQK!Q$1q!a%y0145c!ff<1q5! 	 	!! ! ! ! uaVaS!,,--A#qb1f++ad8J1JJJJJuafa[8Aq>>*:A>>??
AaC!GuT!WW~~d1gg-a//0 0 0 0uafaf-A/?CCDD	A1aaR!Vn%Q37DaMM
!1QA%6#6
7	88 8 8 8 uaVhq!nn%5q99::b!A#'l
tAww--a!A#'*4Q<<7
8?9 9 9 9 9uhr1oo11a8161+qIIJJQ8Aq>>!HQNN23E$q''NNBq!t8bd?Q
"1
$	%'(aR!V}bAg'>	?? ? ? ? ua!&j!Q/!Q;;<<
3tQBF||A~&''')* * * * uaS1a&!,,--	QBqD16M71q5!DGG)444U1XX=
qbdQh-1T!WW9--
-eAhh
6	77 7 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 d S )NrC   rU   r?   r=   )r   r#   r&   r   rD   r%   r4   r.   rE   rF   rG   test_hyperexpand_parametricr}      s    ua!_qvh::;;QK2a4 "a$q''kRT%:1%<<= = = =ua"a1!45!ua@@AAqsQw<1"q&16)A-A::; ; ; ; ; ;rF   c                  j   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 d S )Nr   simplifyrJ   r?   r>   rK   )	sympy.simplify.simplifyr   r   r%   r#   r   r7   rD   r6   r   s    rG   test_shifted_sumr      s    0000008K1UA3AeHH1u%E%E EFFGGS1XX:!Q$QqS11AF:; ; ; ; ; ;rF   c                  F    t          t          d          dz             dz  S )z Steer clear of integers.    
   2   )r   r   rE   rF   rG   _randratr      s     Yr]]R  ##rF   r=   c                 h    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            	         ddl m}   |             j        }|D ]-}|                    |j                  }i }t          |j                  D ]\  }}t          |          ||<   |                    |          }|j	                            |          
                    d          }|j        }t          ||                    t          t                    |          sJ |j        |j        z  d                             |          
                    d          }	t          |                    t          t                    |	                    t          t                    |          sJ ||j                            d                               |          z  }
|j        |j        z  }t)          |
|          D ]\  }}t          |                    |                              t          t                    |                    |          
                    d                              t          t                    |          sJ /d S )Nr   )FormulaCollectionnonrepsmallc                 ,    |                      d          S )Nr   )rewrite)ts    rG   <lambda>ztest_formulae.<locals>.<lambda>   s    2 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 VLL##00 	# 	#FAs{{CHH FF3KK)..s33;;MJJI![((C88!<<<<< i')#Q',,S1199-HH+%%s ZZ	377< < 	< 	< 	<79&& ( (   DGG$WY&&&)) 	V 	VFBbggcll**9c::ggcll**=99AA)SQQSTV V V V V V	V1V VrF   c            	         ddl m}   |             j        }|D ]l}||         D ]_}t          |j        j        |j        j        |j        j        |j        j        |j	                  }i }|j
        D ]}t                      ||<   |                    |          }|j                            |          }|j	        }t          |||          sJ |j        |j        z  d                             |          }	t          ||	|          sJ ||j                            |          z  }
|j        |j        z  }t'          |
|          D ]>\  }}t          |                    |          |                    |          |          sJ ?and S )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      s   BBBBBB&&((1H 9 9} 	9 	9G	# #A C & &#::C sA!-22377K	Aaa((((( )gi'+0055Bk2q)))))wy~~a(((FY*Fff-- 9 9B"''#,,a8888889'	99 9rF   c                 F    t           |                     t                     z  S N)r%   r   )fs    rG   opr      s    QVVAYY;rF   c                  l   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            n# 1 swxY w Y   t          t                    5  t          t          dgdg          t          dgdg          t                     d d d            n# 1 swxY w Y   t          t                    5  t          t          dgg           t          t          d          gg           t                     d d d            n# 1 swxY w Y   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 d S )Nr   rE   rC   r?   rL   c              3   4   K   | ]}t          |          V  d S r   rZ   rS   rg   s     rG   rT   ztest_plan.<locals>.<genexpr>   (      00!(1++000000rF   r>   )r   r   r%   r*   
ValueErrorr   ranger   r#   r]   r   r   )a1a2b1r   h2s        rG   	test_planr      s   ~qc2..A3##Q( (+-. . . .	
		 H HNA3++^B-C-CQGGGH H H H H H H H H H H H H H H	
		 K KNA3,,naS1#.F.FJJJK K K K K K K K K K K K K K K	
		 P PNA3++^QuXXJ-K-KQOOOP P P P P P P P P P P P P P P 10uQxx000JBB!A#IBr2ha  A	Q|bT1	%	%BoaNBFB<"66B8bT**A	/ 	/024 4 	A    
 
QQ"q	)	)BoaNBFBF#3bT::B8bT**A	/ 	/024 4 	A      s7   4BBB.7C11C58C5AEE"%E"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 d S )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xxBB%BB|b"X..A	aaa026262B	C	CB
b!Q

C1aaddBA$QS!,,EqsC//3Q7ABBBBB	R!VR!V,rAvrAv.>	?	?B
b!Q

CqsC//3Q7ABBBBBBBrF   c                  <   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          ||                              |t                    |t                    sJ t          | |dz   f||ft                    }t          t          |dz   |                              |t                    |t                    sJ t          |dz   | f||ft                    }t          t          |dz   |                              |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 d S )	Nc              3   4   K   | ]}t          |          V  d S r   r   r   s     rG   rT   z+test_reduction_operators.<locals>.<genexpr>  r   rF   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   00uQxx000JBBrdRD!Aq!$$$q"%%%q!E((##+++	Bx"b1	%	%Bk"b!!''2..A66666	BF|b"Xq	)	)Bk"q&"%%++Ar22B:::::	Q|b"Xq	)	)Bk"q&"%%++Ar22B::::: q&"b1f	B
b"B^B3344ID#7re7reoab))5R+;+;Q???????rF   c            
      V   d t          d          D             \  } }}}}t          | |f|||ft                    }t          t          d            t          t          d            t          t          |                               |t                    t          | dz   |f|||ft                    t                    sJ t          t          |                              |t                    t          | |dz   f|||ft                    t                    sJ t          t          |                              |t                    t          | |f|dz
  ||ft                    t                    sJ t          t          |                              |t                    t          | |f||dz
  |ft                    t                    sJ t          t          |                              |t                    t          | |f|||dz
  ft                    t                    sJ d S )Nc              3   4   K   | ]}t          |          V  d S r   r   r   s     rG   rT   z'test_shift_operators.<locals>.<genexpr>'  (      88!(1++888888rF   r@   c                       t          d          S )Nr   )r   rE   rF   rG   r   z&test_shift_operators.<locals>.<lambda>*      vayy 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   &  s   88uQxx888BBBr2hRa((A
:(()))
:(()))fRjjq"%%ub1fb\BB<'K'KQOOOOOfRjjq"%%ub"q&\BB<'K'KQOOOOOfRjjq"%%ub"XQB7G'K'KQOOOOOfRjjq"%%ub"XBFB7G'K'KQOOOOOfRjjq"%%ub"XBQ7G'K'KQOOOOOOOrF   c            
      D   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          |                    |t                    t          | dz
  |f|||ft                    t                    sJ t          | |f|||fdt                    }t          |                    |t                    t          | |dz
  f|||ft                    t                    sJ t          | |f|||fdt                    }t          |                    |t                    t          | |f|dz   ||ft                    t                    sJ t          | |f|||fdt                    }t          |                    |t                    t          | |f||dz   |ft                    t                    sJ t          | |f|||fd	t                    }t          |                    |t                    t          | |f|||dz   ft                    t                    sJ d S )
Nc              3   4   K   | ]}t          |          V  d S r   r   r   s     rG   rT   z(test_ushift_operators.<locals>.<genexpr>5  r   rF   r@   c                  0    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7 rF   c                  0    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8 rF   c                  0    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                  0    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  sa   88uQxx888BBBr2hRa((A
:77888
:88999
:??@@@
:;;<<<"bBB<A..AagganneR!VRL2r2,BBAFFFFF"bBB<A..AagganneRaL2r2,BBAFFFFF"bBB<A..AagganneRHrAvr2.>BBAFFFFF"bBB<A..AagganneRHr262.>BBAFFFFF"bBB<A..AagganneRHr2rAv.>BBAFFFFFFFrF   c                    ddl m} ddlm} t	          t          | |||t                              }|                    t
                    rdS  | ||ddddddd                    }|sdS i }t          t          | |||t                    j	        t          hz
            D ]\  }	}
t          |	          ||
<   t          t          | |||t                                        |          |                    |          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~~ u 	
66!4DE#EP P P 	Q 	QA  tD72r2r155BaSHII  2A;;Rgb"b"a((--d33QVVD\\1EEErF   c                     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 d S )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22222000000wBx1#rQB7788CFFBBBBwA|qcA3Z;;<<AE

   wA|qcA3Z;;<<	1q5	   wBx16(QC1Q3(CCDDq66$r((?   wBx1#x1Q3(CCDDq66$r((?   aS1q5!af*"5r:::::R!A#!A66666!qcA3AE
33333 wsBQC33441c!ffqj/As1Q3xx!|#41#r2sA..5	7 	77 7 7 7 wrA3R33441c!ffqj/As1Q3xx!|#4"qcA3A..5	7 	77 7 7 7
 R!ac'QAaCQV,DEEEEE
BaS%! ! ! ! !afXsaRD11111R!Q,,,,,R!Q,,,,,R!QZ1a!&j/BBBBBR!aR1af+u=====R!QZAJ!?DDDDD!&2sQG44444!&2sQGU;;;;;a!&j\Aq6AJ<GGGGGa!&j\AE1q5!+<b%HHHHH!af*rAqsQw?BFFFFF RaV,,,,, w1vr2Aw::;;1c!ffqj/a!AqD&j>!#S1XX\2Aq62rB7A66=	? 	?? ? ? ? 9XXka!eWr!taRTAF]3R1==? ? @ @ A A
488T!a%[[1_q((*+ + + +
 wsBaVQ7788E	
q1ua!ena	!B$/=1 =112A=66;Ahh=??DQU||Q=O O O O O 	y$/A66Aq>>T"XXd1q2w;&7&777777q"""d2hhqj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    rNt          t          t          gg t          t          j        z
  t          t          gg t                              k    sn J t          t          dz
  gg t          dz   t          t'          dd          z
  t          dz   gg           sJ d S )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     s   @@@@@@@@BBBBBBwsBAA6677	1SVVE1"q&1*%%%jjQ&:&::; ; ; ;wsBAA6677Azz!Q       !b1a!e*b11111!b1q5!*b11111!b1q5!*b11111wsBAq16z(:BBBCC	b	!a!&j/!1S477^^#3RR$q''	]]RT5I#J%&s1T!WW9~~%5bb477mm%C$D 	EA A A A 	GQCaQVQ%7Q??@@A A A A 	GQCa!&j!Q%7Q??@@	A A A A A A
 !a%"q1ua(1a...@!a%&H"MMMM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 d S )Nr?   r   r>   )r   r&   r   rD   r'   rE   rF   rG   test_meijerg_expand_failr     s]    R!af*1qs7A!G/DEEEEER!QVq1"g66666R!A#,A2;!?!af*NNNNNR!QZ!af!=xHHHHHR!QZ!3acAgY?????R!QZAaC!G!<=====!&2Aw4444444rF   c            
      T   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        ||                              |
t                    |t                    sJ t          | |g||g|g|||dz   gt                    }t          t          j        ||dz                                 |
t                    |t                    sJ t          | |dz
  g||g|g|||dz   gt                    }t          t          j        |dz
  |dz                                 |
t                    |t                    sJ t          | g|||dz
  g||dz   g||gt                    }t          t          j        |dz   |dz
                                |
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 d S )Nc              3   `   K   | ])}t          |          d t          z  z
  |t          z  z
  V  *dS r@   NrZ   r   r   s     rG   rT   ztest_meijerg.<locals>.<genexpr>  :      88!hqkkAaC!A#%888888rF   r?   c              3   `   K   | ])}t          |          d t          z  z   |t          z  z   V  *dS r   r   r   s     rG   rT   ztest_meijerg.<locals>.<genexpr>  r   rF   c              3   2   K   | ]}t                      V  d S r   r   r   s     rG   rT   ztest_meijerg.<locals>.<genexpr>  s&      ;;Qhjj;;;;;;rF   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
    sJ   
 98uQxx888FB88uQxx888FB;;%((;;;BBBr2hr2h22A#Aq))111"1a((000	"bB8bTBB<	;	;Bk%b"--33Ar::BBBBBB	"bB8bTBBF+;Q	?	?Bk%b"q&11772>>AFFFFF	"b1fBx"BQ/?	C	CBk%b1fb1f55;;ArBBBJJJJJ	"BQ'"b1fBx	C	CBk&
QQ ab!7 7 7 7 7 7 bB
b"q&	B
b"q&	B
b1fB":b"b"#=#=>>HC6bU????sv;;2r(""""6bU????sv;;2r(""""oab))72r2r1+E+EqIIIIIIIrF   c            
         d t          d          D             \
  } }}}}}}}}}	t          | g||g|g||gt                    }
t          t	          |                              |
t                    t          | g||g|dz   g||gt                    t                    sJ t          t          |                               |
t                    t          | dz
  g||g|g||gt                    t                    sJ t          t          |                              |
t                    t          | g||g|g|dz   |gt                    t                    sJ t          t          |                              |
t                    t          | g|dz
  |g|g||gt                    t                    sJ t          | g||g|g||gdt                    }t          |                    |
t                    t          | g||g|dz
  g||gt                    t                    sJ t          | g||g|g||gdt                    }t          |                    |
t                    t          | g||g|g|dz
  |gt                    t                    sJ t          | g||g|g||gdt                    }t          |                    |
t                    t          | dz   g||g|g||gt                    t                    sJ t          | g||g|g||gdt                    }t          |                    |
t                    t          | g|dz   |g|g||gt                    t                    sJ d S )Nc              3   4   K   | ]}t          |          V  d S r   r   r   s     rG   rT   z/test_meijerg_shift_operators.<locals>.<genexpr>  s(      -M-Mahqkk-M-M-M-M-M-MrF   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   -M-M599-M-M-M*BBBBBr2hr2h22Al2$$Q++rdRHrAvhR!<<aA A A A Al2$$Q++rAvhR2$R!<<aA A A A Al2$$Q++rdRHrdR!VRL!<<aA A A A Al2$$Q++rdR!VRL2$R!<<aA A A A A 	tb"Xtb"Xq!<<A	2r2ha2r(AFFK K K K K 	tb"Xtb"Xq!<<A	2r2hrAvrlAFFK K K K K 	tb"Xtb"Xq!<<A	2a2r(RD2r(AFFK K K K K 	tb"Xtb"Xq!<<A	2rAvrlRD2r(AFFK K K K 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 d S )Nc           	      z   ddl m}  |||g          \  }}| }t          |           } | t          |t	          t
                    dk     f|t	          dt
          z            dk     f|df          k    sdS | j        d         j        d         |k    r| j        d         j        d         |k    sdS t                      dz  }t	          |                     t
          |          	                                 |j        t
          |          	                                z
            	                                dk    rdS t	          |                     t
          d|z            	                                 |j        t
          d|z            	                                z
            	                                dk    rdS dS )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  sv   ......w1v1NNIq#a&&1*o3qs88a</@2t*MMMM5q	q!Q&&16!9>!+<+A+A5ZZ]qvva}}  616!R==??#4#44557799EAA5qvva2  ""VQVAqt__%6%6%8%8899;;==EE5trF   rC   r   r>   r?   rJ   r=      rB   rC   rC   rC   rC   )r   r   r   r   c                     t          | |||t                    }t          |d          }|                    t                     r!|j        rt          |j                  dk    sdS 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  sk    BBA&&---66'?? 	BO 	BG8I8I5!R||rF   )r?   r?   r@   )rC   rC   rB   )r$   r%   r2   r.   r   rD   )r   r  s     rG   test_meijerg_confluencer    s$       1WR!Q!QQ//#a&&!<<<<<1W
QFQFB# #%&TE!GaK#a&&($:Xa^^$KQP P P P P1WR!Q"a"a00T"Wqs]SVVAX%A6AaC@!E E E E E1WR|||R;;c!ffaiZ\1MMMMM1WaVRaVQ//S1XXI>>>>>1WaVaVaVaVQ77RAY1_s1Q3xxi!m- - - - -1WafX1v1vA/?CCSVVAXPQ\STUUUUU   1R!q!fb!!!!!1aVRaS!!!!!1aVYYY			Aq6222221aVYYY			A3///////rF   c            
         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  }| 	                    t          |          |z                                  d
d          sJ d S )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0000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 d S )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  s   JJJJJJJJ222222uaVa!eWa00233xx1a7H7HHHHHq!Qi!a%Q++AqD02 25=XaA5F5FG G G GuaAq\AE1q5!a%+@!DDQTIJJAq   uaSA3r6\AE72:q99!R%?@@B   9[!QUR!
i2q "" "" # # $ $'/x1a'8'89 9 9 99[!QUAE):B
aR)QBrE""1$"& "& ' ' ( (+38Aq!+<+<= = = =9[!QUAE1q5)A2s
aR!i2&&q("* "* + + , ,/7x1a/@/@A A A A q1vsA...//CQBKK<????qyyy1a&!44455AFFFFq|||YYY:::;;wwq!}}LLLLuaAJ/!a%!DDEE
1a!e1a4!XXaA%6%6667 7 7 7 )))aV$$$$$ 1aAE"Q1I2666666 	
Aq!QUa!eQUAE15H H H H H H 988888uafafafa8&q!nnhq!nnhq!nnMxXY[\~~_ _ ` `WWQ	!B$)***WWQ-?-??@@A A A A A ArF   c            
         d t          d          D             \  } }}}}t          | ||g||g          t          g | ||||g          fD ]}t          |          }|j        }|j         ||          k    sJ |j                            |          |z  }|j        |j        z  }	t          ||	          D ]\  }
}t          |
||          s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 d S )	Nc              3   2   K   | ]}t                      V  d S r   r   )rS   _s     rG   rT   z$test_partial_simp.<locals>.<genexpr>v  s&      22AXZZ222222rF   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_simpr1  t  s   22q222MAq!QAq	Aq62221aA//1 ' '(..C}Q''''!QQS// 	' 	'LE5eUA&&&&&&	' gGAq!uaVaVQ//00
Aa!A#a%!A#	ua!eWqc1555Q3q51Q3;?E1#sA..
.	// / / / E1a&1a&!,,--uaVaVQ/G/GL L L L LuaS1a)Q//00b1a&!
E"q1uaj!$$
$ac
*	+
QU)E"q1ua!ena00
0!A#a%
8	99 9 9 9 E1#1ay!,,--uaS1a)Q/G/GL L L L 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k    sJ d S )NrC   r=   r?   r   )r   r#   r&   r'   r(   r:   r$   r%   rE   rF   rG   test_hyperexpand_specialr3    s   uaVaS!,,--aq1uqy!!!%A,,.uQU||;< < < <uaVa!eai["5566a!A#guQUQY'''a!e4U1qs7Q;5G5GGH H H HuaVa!eai["5566a!A#guQUQY'''a!e4U1qs7Q;5G5GGH H H HwA!}q1uqs{macUaRTFANNOOa!A#guQ1Wqs]+++E!a%!A#+!2C,D,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 d S )Nr   )Symbolr   rg   T)integerrC   )sympy.core.symbolr5  r   r   r   r$   r%   r;   )r5  r   rg   s      rG   test_Mod1_behaviorr8    s    ((((((000000sD!!!A8KR!a%1#q A ABBC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 d S )NrC   r>   r?   T)rc   )ri   r   r.   r   rD   r&   r'   rE   rF   rG   test_prudnikov_miscr:    s   1q1uai!a%+hq!nna-@AAAAA161q5/HQNNAE#:tLLLLLL"q1ug1#Aq1u~&&&&&1#AF
AaC()))))1#AF
AaC!G,-----1#AF
AaC!G,-----1#AF
AaC()))))1#AF
AaC!G,-----1#AF
AaC!G,-----16(QAJ'''''16(QAJ'''''1#1v1a!&j/AaCAaC!GaK#8999991a!&j/AFAaC1qv#>?????1#Aw400000000rF   c                     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 d S )NrC   r>   r?   Fr'  )ri   r&   r   rD   r.   r'   rE   rF   rG   test_prudnikov_1r<    s    1qb'AF8$$$$$1a!e*qvh'''''1a!e*x1~~./////1a!e*qvh'''''1a!e*x1~~./////1a!e*x1~~./////1a!&j/AaC!G9-----1a!&j/AaC5)))))1a!&j/AaC!G9-----1a!&j/AF8,,,,,1a!&j/HQNN#3444441acAg,1&&&&&1a&1#1a&1q5'U333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          sJ ,dD ]}dD ]}t          ||g|g          sJ cd S )Nr>   r@   rA   rC   r?   rJ   rC   r?   r>   rJ   r   rD   ri   r   prg   r  s       rG   test_prudnikov_2rB    s   	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 d S )NrC   rJ   r>   r?   r@   )r   rD   ri   r.   r   s    rG   test_prudnikov_3rE    s    	A8Aq>>8Aq>>2QC888888Aq>>8Aq>>2QqSE:::::8Aq>>8Aq>>2QqSE:::::8Aq>>8Aq>>2QC88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          sJ -Id S )	Nr>  rC   r>   r?   r@   rA   rJ   rk   r?  r@  s       rG   test_prudnikov_3_slowrG    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          sJ ,dD ]}dD ]}t          ||g|g          sJ _d S )Nr>   r@   rA   r?   rJ   r>  )r?   r>   rJ   r?  r@  s       rG   test_prudnikov_4rI     s    	Ac1Q3!_ + +"a1ac1Q3' 	+ 	+Ac1ac1ac1- + +q!fqc******+ 	+ 	+A + +q!fqc******+	+	+ +rF   c            	         t           j        } dD ]E}t          |d          D ]2}dD ]-}t          |d          D ]}t          |  ||g||g          sJ .3F| dd| z  dd| z  dfD ]P}| d| z  d| z  fD ]B}| d| z  d| z  fD ]4}| d| z  d| z  fD ]&}||k    r||k    rt          |  ||g||g          sJ '5CQ| dd| z  dd| z  dfD ]2}dD ]-}| d| z  d| z  fD ]}dD ]}t          |  ||g||g          sJ  .3d S )Nrp   rJ   rC   r>   r?   r@   r   rD   r   ri   )r   rA  qrd   r   s        rG   test_prudnikov_5rM    s   	A 6 6q! 	6 	6A 6 6q! 6 6A!A2q!*q!f55555566	6
 AaCAaC# : :QqS!A# 	: 	:A1ac] : :QqS!A# : :AAvv!q&&%r1aj1a&99999::	: AaCAaC# 6 6 	6 	6A1ac] 6 6" 6 6A!A2q!*q!f55555566	66 6rF   c            	         t           j        } d| z  d| z  fD ]T}dD ]O}| ddfD ]}dD ]}t          | ||g||g          sJ dD ]&}d| z  d| z  fD ]}t          | ||g||g          sJ 'PUdD ](}dD ]#}dD ]}dD ]}t          | ||g||g          s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 d S )Nr>   r@   rp   rC   r?   )rC   r?   r?  )r   r  rg   rL  rA  s        rG   test_prudnikov_6rO  $  s   	Ac1Q3Z 5 5 	5 	5AAY 5 5" 5 5A!1a)aV4444445 5 5A#qs 5 5A!1a)aV44444455		5  5 5 	5 	5A 5 5" 5 5A!1a)aV444444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          s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          sJ /d S )Nr>   rB   r@   rA   rC   r?   rJ   )ri   r   rD   )r   rg   r  s      rG   test_prudnikov_7rQ  >  s    1#s	A1ac1Q3 ! !rdQC      b!Q!Q!Q!Q/ $ $"a1ac1Q31a3 	$ 	$A1#s######	$$ $rF   c            	      4   t           j        } dD ]}}dD ]?}t          d|dz             D ])}| dd| z  dd| z  dfD ]}t          ||g||g          sJ *@d| z  d| z  fD ].}| dd| z  dd| z  dfD ]}dD ]}t          ||g||g          sJ /~|  | d| z  d| z  fD ]}}dD ].}| dd| z  dd| z  dfD ]}dD ]}t          ||g||g          sJ /| d| z  d| z  fD ]>}| d| z  d| z  dfD ]/}| dd| z  dd| z  dfD ]}||k    rt          ||g||g          sJ 0?~d S )Nrp   rC   r>   r?   r@   rK  )r   rh   bicidis        rG   test_prudnikov_8rV  J  sJ   	A  6 6 	6 	6BArAv&& 6 6a1a1a0 6 6B!2r(RH55555566 Q3!* 	6 	6B!QqS!QqS!, 6 6# 6 6B!2r(RH55555566	6
 r1ac1Q3 	: 	: 	6 	6B!QqS!QqS!, 6 6# 6 6B!2r(RH55555566 ac1Q3- 	: 	:B!A#qsA& : :a1a1a0 : :BRxx%r2hR99999::	:	: 	:rF   c                      t          d          D ](} t          g t          |           dz   dz  g          sJ )t          d          D ],} t          g dt          |           z  dz    dz  g          sJ -d S )Nrk   rC   r?   r@   )r   ri   r   )is    rG   test_prudnikov_9rY  e  s    1XX * *bAaDD1Ha<.))))))1XX - -bQqttVaZ=?+,,,,,,- -rF   c            	      r   t           j        } |  | dd| z  dd| z  dd| z  df	D ]/}dD ]*}t          |d          D ]}t          |g||g          sJ +0dD ].}| d| z  d| z  d| z  fD ]}dD ]}t          |g||g          sJ /d| z  d| z  d| z  fD ]A}| ddd| z  dd| z  dfD ]/}t          |g| |g          sJ t          |gd| z  |g          sJ 0B| ddd| z  dd| z  dfD ]}t          d| z  gd| z  |g          sJ t          t	          dd          gt           j        t           j        g          sJ d S )	NrC   r>   r?   r@   rA   rJ   r>  r=   )r   rD   r   ri   r.   r   rA  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??#afaf%56666666rF   c                     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 d S )Nr?   r>   rC   rJ   r@   rA   )ri   r&   r   rD   r'   r.   rE   rF   rG   test_prudnikov_11r^    s   1a!&j/AaCAaC!G#4555551a!&j/HQNNAaC1qv#FGGGGG8Aq>>8Aq>>2QVQVQ4GHHHHH8Aq>>8Aq>>2Xa^^QVQ4OPPPPP8Aq>>8Aq>>2Xa^^XaQR^^UV4WXXXXX8Aq>>8Aq>>2Xa^^XaQR^^UV4WXXXXX1a&8Aq>>1a01111111rF   c            	      .   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 d S )Nr?   FrC   r>   rJ   r@   rA   )ri   r&   r   rD   r.   rE   rF   rG   test_prudnikov_12r`    s>   
QAF
AaC %) ) ) ) )"q!af*acAg.66666"qvq!af*-....."x1~~q!af*566666"x1~~qvx1~~>?????"qvqvq)*****"qvx1~~q122222"x1~~x1~~x1~~FGGGGG"q!Xa^^,-----"q!Xa^^,-----"q(1a..(1a..9:::::"x1~~x1~~x1~~FGG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          sJ /d S )Nr>   r@   rA   r>  r?  r[  s       rG   test_prudnikov_2F1rb    s    	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 d S )NrC   r=   r>   r?   rJ      rk   rB   rA      r@      r           )ri   r&   r'   r(   r   rD   r.   One)os    rG   test_prudnikov_fail_2F1rl    s   1a&1q5'"""""2q'A3
 1a&1q516>*+++++1a&1q516>*+++++1a&1q58Aq>>12333331a&AEAIq=/*****1a&AE19q=/*****1a&1q519+&&&&&1a&1q519+&&&&&1a&1Q3%     1a&16(#####1a&8Aq>>*+++++1a!e*qc"""""1a!e*qc"""""1a!e*qc"""""1a!&j/A3'''''1a&1#1a&8Aq>>*+++++8Aq>>8Aq>>2QC88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            	      l   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 d S )NrC   r>   r?   rJ   r@   r=   rd  rk   rf  re  rA   ri  rB   )ri   r&   r.   r   rD   rE   rF   rG   test_prudnikov_fail_3F2rn    s   1a(1a..(!hq!nn*<=APXYZ\]P^P^?_`````1a(1a..(!hq!nn*<=APXYZ\]P^P^?_`````1a(1a..(!hq!nn*<=APXYZ\]P^P^?_````` 1a(1a..(!hq!nn*<=(1a..@PSTUVSVYZSZ\]R]?^_____ 8B??AFAF3aV<<<<<8B??AFA.!Q!Q0PQQQQQ 8Aq>>8Aq>>15AQSUV7XYYYYY8Aq>>8Aq>>15AQSUV7XYYYYY8Aq>>8Aq>>15AQSUV7XYYYYY8Aq>>8Aq>>15AQRTU7WXXXXX8Aq>>8Aq>>15AQRTU7WXXXXX8Aq>>8Aq>>15AQSUV7XYYYYY161a.8Aq>>8Aq>>"BCCCC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 d S )
NrC   r?   r=   rJ   r@   r>   rA   gUUUUUU?gUUUUUU?)ri   r&   r'   r.   r   rD   rE   rF   rG   test_prudnikov_fail_otherrp     s   
 1a&1a!A#gk*+++++ 8B??#afa[111111#'(((((8Aq>>"QVXa^^$<=====8Aq>>"Xa^^Xa^^$DEEEEE1#AA7888881#AA7888881#AA788888 161+AAAOPPPPP161+AAAOPPPPP "x1~~qvv./////"x1~~qvv./////"x1~~qvv.///// "q!af*acAg.///////rF   c                      t          ddgt          gd          } t          |           t          dz   t          z  k    sJ d S )Nr=   rC   )r#   r%   r   rD  s    rG   test_bugrr    s>    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 d S )N)rm   rl   rz   )rt  rC      )rt  irm   r=   rB   )r#   r   r.   rD  s    rG   test_omgissue_203rv  #  sh    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   r7  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*  r1  r3  r8  r:  r<  rB  rE  rG  rI  rM  rO  rQ  rV  rY  r\  r^  r`  rb  rl  rn  rp  rr  rv  rE   rF   rG   <module>r     s   ' ' ' ' ' '5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 * ) ) ) ) ) ' ' ' ' ' '                         " " " " " " % % % % % % = = = = = = : : : : : : : : : : : : : :                         = = = = = = = = = = = = 6 6 6 6 6 6 - - - - - - - - H H H H H H H H H H 7 7 7 7 7 7 9 9 9 9 9 9 E E E E E E E E E E 2 2 2 2 2 2 7 7 7 7 7 7 G G G G G G G Gc c c
H 
H 
H   .	; 	; 	; Q Q Q< < <7 7 74; ; ;; ; ;$ $ $
6 6 6 6
 V V V@9 9 96    8C C C@ @ @4P P PG G G,F F F F> ?@ ?@ ?@DN N N& 5 5 5 #J #J #JLK K K> %0 %0 %0P; ; ;+A +A +A\L L L8# # #   1 1 1*" " "6 + + +"; ; ; 		+ 	+ 		+ + + + 6 6 6. % % %2 $ $ $ : : :4- - - 7 7 70
2 
2 
2; ; ;& + + + 3( 3( 3(l D D D0 0 0 0:' ' '
- - - - -rF   