o
    8Va                     @   s  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mZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z1 d dlm2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? dd	 Z@d
d ZAdqddZBdd ZCe*dd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdrd d!ZJe,d"d# ZKd$d% ZLd&d' ZMd(d) ZNd*d+ ZOd,d- ZPd.d/ ZQd0d1 ZRdsd2d3ZSe,d4d5 ZTd6d7 ZUe*d8d9 ZVe,d:d; ZWd<d= ZXe,d>d? ZYd@dA ZZdBdC Z[dDdE Z\dFdG Z]dHdI Z^e,dJdK Z_dLdM Z`e,dNdO Zae,dPdQ Zbe,dRdS Zce,dTdU Zde,dVdW Zee,dXdY Zfe,dZd[ Zgd\d] Zhe,d^d_ Zid`da Zjdbdc Zke,ddde Zle*dfdg Zme*dhdi Zne*djdk Zodldm Zpdndo ZqdpS )t    )	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)	hyperISmeijerg	PiecewiseTupleSumbinomialExpr)zabc)XFAILraisesslow	ON_TRAVISskip)verify_numerically)cossinlogexpasin
lowergammaatanhbesseligammasqrtpierf	exp_polarRationalc                   C   s  t ttddtjftddtddft ttd  tttt	 d t d t
t	tt
t dt
t   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
  dt
t	 tt
t t
t dttddt ttd
    ttdd ttdd ksJ d S )N      z1/3            r   z2/3)r   r   r:   r   Halfr#   r2   r9   r   r7   r6   r8   r   r5    rC   rC   G/usr/lib/python3/dist-packages/sympy/simplify/tests/test_hyperexpand.pytest_branch_bug   s    ,&.0

rE   c                   C   s  t tg g tttksJ t tddgdgt t tdt ks$J t tg tjgtd  d ttks9J t ttg tdgtd  d  ttksQJ t ttdtdgtdgtd t t	tkslJ t
ttdttd  tdtf tsJ d S )NrA   r=      3/21/2r   )r   r   r#   r0   r/   r   rB   r-   r.   r1   
isinstancer    r!   r$   Zdoitr"   rC   rC   rC   rD   test_hyperexpand   s   ,*0(0rJ   TrA   Fc              	   C   s   ddl m}m} tt| |t}|trdS |sdS i }|jth }	|	rGt|	D ]\}
}t	|
| ||< q)t
dd t| |D sEn|	s%g d\}}}}|rYg d\}}}}tt| |t|||||t||||d	S )
Nr   )r9   r0   FTc                 S   s   g | ]	}|j o
|d kqS r   )Z
is_Integer).0r%   rC   rC   rD   
<listcomp>8   s    zcan_do.<locals>.<listcomp>)r=   r;   r<   rA   )r=   r<   r;   )r$   r%   r&   d)sympyr9   r0   r   r   r#   hasfree_symbols	enumeraterandcplxanyr   substnreplace)apbq	numericaldiv
lowerplaner9   r0   rreplZrandsymsnair$   r%   r&   rO   rC   rC   rD   can_do+   s,   

rb   c                   C   s   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sSJ t td	dgtddtjgsdJ t td	dtddgdgstJ d S )N	   r=   rA   r>   rF   r;   r<   rN   )rb   r   rB   r:   rC   rC   rC   rD   
test_roachC   s   ,("$rf   c                   C   s   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sHJ t tjgtddtddtddgs]J d S )	Nr;   r=   rA   rF   r<   r>   rA   r=   r<   rN   )rb   r:   r   rB   rC   rC   rC   rD   test_roach_failO   s
   , ,.rh   c                  C   s   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s0J tddt t gdt gs@J ttdd	tdtd
  ksPJ d S )Nr   oor;   rN   rA   re   i)r;   rA   )rN   r=   )rP   rj   r   r   r#   rb   rT   ri   rC   rC   rD   test_polynomialZ   s    $rk   c                   C   s  t tdgtgtttt d  td  dt  ttd   d  tt ttd t  d ks3J t tddgdgtdt dtt d  td   ksQJ t ttjdgt	ddgtddt d  t
tttt d  ksvJ t ttjtjgt	ddgtdt d d ttt d   d	t d ttt dtt	dd    ksJ t tddgt	ddgtddt d  tttttdt d  tt d    ksJ t tt	ddd ddgtjdgttttt	d	d
 t	d	d  t
tt dtd  dt  d	 d t  d	tt d  dtd    ks(J t tdtj ddgddgtdttt d d tj  t ksMJ t tdgtdgttt d tj  ttd dtt  tt tt d d  ttdtt  tt  ksJ d S )Nr=   rA   r<   rN   r;   r>   rd   rF   r@   r?   i    #   )r   r   r$   r#   r0   r2   r/   r   rB   r:   r3   r6   r1   r%   r4   r5   rC   rC   rC   rD   test_hyperexpand_basesc   sD   8<& ((,
$*
"
0*ro   c                   C   s   t tttjt gtjgtdtt dt  d dtt dt  d  ks)J t tttddt gdt gtddt d  t d tj d dt d   ksUJ d S )NrA   rN   r=   r;   )r   r   r$   r   rB   r#   r6   r:   rC   rC   rC   rD   test_hyperexpand_parametric}   s   .".rp   c                  C   sr   ddl m}  | ttd tdgdtdgtd   ttdt  td  tj tdt   tj ks7J d S )Nr   simplifyrF   r=   r<   rG   )	rP   rr   r   r#   r   r   r.   rB   r-   rq   rC   rC   rD   test_shifted_sum   s   *0rs   c                   C   s   t tdd d S )z Steer clear of integers.    
   2   )r   r   rC   rC   rC   rD   _randrat   s   rw   r;   c                 C   s   t  tt    td|    S )z+ Polys is not good with real coefficients. rA   )rw   r   )offsetrC   rC   rD   rT      s   rT   c                  C   s4  ddl m}  |  j}|D ]}||j}i }t|jD ]
\}}t|||< q||}|j	|
d}|j}t||tt|sCJ |j|j d |
d}	t|tt|	tt|saJ ||jdd | }
|j|j }t|
|D ]\}}t||tt||
dtt|sJ qyqd S )Nr   )FormulaCollectionnonrepsmallc                 S   s
   |  dS )Nrz   )rewrite)trC   rC   rD   <lambda>   s    ztest_formulae.<locals>.<lambda>)sympy.simplify.hyperexpandry   formulaefuncr#   rS   symbolsrT   rV   closed_formr{   rW   rX   r9   r0   CBZ	applyfuncdiffMzip)ry   r   formulahrepr`   symr   r#   clderiv1deriv2d1d2rC   rC   rD   test_formulae   s6   

r   c                  C   s
  ddl m}  |  j}|D ]v}|| D ]o}t|jj|jj|jj|jj|j	}i }|j
D ]}t ||< q*||}|j|}|j	}t|||sHJ |j|j d |}	t||	|s[J ||j| }
|j|j }t|
|D ]\}}t|||||sJ qnqqd S )Nr   )MeijerFormulaCollection)r~   r   r   r   r   anrY   bmrZ   r#   r   rT   rV   r   rW   r   r   r   r   r   )r   r   Zsigr   gr   r   r   r#   r   r   r   r   r   rC   rC   rD   test_meijerg_formulae   s0   

r   c                 C   s   t | t  S N)r#   r   )frC   rC   rD   op   s   r   c                  C   s  t tdgdtdgdtg ksJ tt t tdgdtddt W d    n1 s.w   Y  tt t tdgdgtdgdgt W d    n1 sRw   Y  tt t tdgg ttdgg t W d    n1 svw   Y  dd tdD \} }}|dt 7 }t| |g|gt}t| d |f|gt}t	t
|t t| d |f|gt| |f|gtt|tsJ t| d |d f|gt}t	t
|t t| d |d f|gt| |f|gtt|tsJ d S )	Nr   rC   rA   r=   rH   c                 s       | ]}t |V  qd S r   rT   rL   r`   rC   rC   rD   	<genexpr>       ztest_plan.<locals>.<genexpr>r<   )r   r   r#   r(   
ValueErrorr   ranger   r   rW   r   r   )a1a2b1r   h2rC   rC   rD   	test_plan   sF   

"
"r   c            
      C   s  ddt d} }}dt d}}t| ||f||f}t| d |d |d f|d |d f}t||t}t|t|tg }t|jt}	tt|j	||	|j
 d |ttsXJ t| |d |d f|d |d f}t||t}tt|j	||	|j
 d |ttsJ d S )NrA   r=   rH   r<   z5/2r   )r   r   r   r#   r   r   r   rW   r   r   r   )
r   r   a3r   b2r   r   opsr   ZderivrC   rC   rD   test_plan_derivatives   s   (($,r   c            	      C   sz  dd t dD \} }}t| g|gt}tddd u sJ tddd u s&J tdtdd u s1J t| |f||ft}tt|||t|tsJJ t| |d f||ft}tt|d ||t|tsgJ t|d	 | f||ft}tt|d	 ||t|tsJ |d	 | |d f}|||f}tt	||\}}|j
| fksJ |j|fksJ tt||tt||ttsJ d S )
Nc                 s   r   r   r   r   rC   rC   rD   r      r   z+test_reduction_operators.<locals>.<genexpr>r<   r=   r   r;   rA   rH   rF   )r   r   r#   r   r   rW   applyr   r   r   rY   rZ   r   )	r   r   r   r   r   rY   rZ   r   r   rC   rC   rD   test_reduction_operators   s"   ""
$r   c                  C   sL  dd t dD \} }}}}t| |f|||ft}ttdd  ttdd  tt| |tt| d |f|||ftts@J tt||tt| |d f|||fttsYJ tt	||tt| |f|d ||fttsrJ tt	||tt| |f||d |fttsJ tt	||tt| |f|||d fttsJ d S )Nc                 s   r   r   r   r   rC   rC   rD   r     r   z'test_shift_operators.<locals>.<genexpr>r>   c                   S      t dS )Nr   )r   rC   rC   rC   rD   r}         z&test_shift_operators.<locals>.<lambda>c                   S   r   )NrA   )r   rC   rC   rC   rD   r}     r   rA   )
r   r   r#   r(   r   rW   r   r   r   r   )r   r   r   r   b3r   rC   rC   rD   test_shift_operators  s   22226r   c                  C   s  dd t dD \} }}}}t| |f|||ft}ttdd  ttdd  ttdd  ttdd  t| |f|||fd	t}t||tt| d
 |f|||fttsXJ t| |f|||fd
t}t||tt| |d
 f|||ftts{J t	| |f|||fd	t}t||tt| |f|d
 ||fttsJ t	| |f|||fd
t}t||tt| |f||d
 |fttsJ t	| |f|||fdt}t||tt| |f|||d
 fttsJ d S )Nc                 s   r   r   r   r   rC   rC   rD   r   (  r   z(test_ushift_operators.<locals>.<genexpr>r>   c                   S      t dddtS )NrA   rC   r   r   r#   rC   rC   rC   rD   r}   +      z'test_ushift_operators.<locals>.<lambda>c                   S   r   )NrC   r;   r   r   r#   rC   rC   rC   rD   r}   ,  r   c                   S   r   )Nr   )r   r;   rA   r   r   rC   rC   rC   rD   r}   -  r   c                   S   r   )Nr   rA   r   r   r   rC   rC   rC   rD   r}   .  r   r   rA   r=   )
r   r   r#   r(   r   r   rW   r   r   r   )r   r   r   r   r   r   srC   rC   rD   test_ushift_operators'  s    ....2r   c                 C   s   ddl m}m} tt| |||t}|trdS |||dddddddd}|s+dS i }tt| |||tjth D ]
\}	}
t	|	||
< q;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   )
unpolarifyexpandFT)ZforceZ
power_baseZ	power_expmulr/   ZmultinomialZbasic)rP   r   r   r   r   r#   rQ   rS   rR   rT   rW   rV   )r   r   r   r   numericr   r   r^   r_   r`   ra   rC   rC   rD   can_do_meijer=  s   	
$$r   c               
   C   s  ddl m} 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 ks4J ttddgg gdgdggtttd  ksLJ ttg g gtj	gdggtd d t
ttt ksiJ ttg g gdgtj	ggtd d tttt ksJ tg tgtd ttj	 gg sJ tg g td gt d gdsJ ttgtgtgttd gsJ ttdgg g dgttdttdk fdtdt dk ftdgg g dgtdfksJ ttg dgdgg ttdttdk fdtdt dk ftg dgdgg tdfksJ tg g ttd  gtttd  ttj	 gs*J tg g tgtgds7J tg tj	gtgt gsFJ tg g ttgg sRJ tg g ttgg s^J tg g tttj	 gtttj	 gsrJ tg g tt gdtj	gdsJ tg g tttj	 tttj	 gg sJ ttj	gg dgtt gsJ ttj	gg tgdt gdsJ tg ttj	 gttgttj	 gdsJ tg ttj	 gtt tt tgg dsJ tttj	 gg tdt t tgg dsJ 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    d tdt dk ftddgg g ddgtdfks@J | |ttdgdt gt d t d tj	 gg dt dtt ttd d t  t kstJ ttdgg tgddgtttftd td ftttt  tt  tt ttd d  ksJ td	tj	fd
ftd }t|tttdtd   ksJ t|ddttt ttd d  ksJ d S )Nr   )	gammasimprr   rA   r=   FTr;   rN   )r   rC   rK   )Zplace)rP   r   rr   r   r   r#   r0   r/   r   rB   r.   r6   r7   r-   r   r$   r%   r   absr   r9   r   r5   )r   rr   r   rC   rC   rD   test_meijerg_expand[  s   (

$$"" ""
2
("( "*,,&
0"
 &2r   c                  C   s  ddl m} m}m} tttgg ttgg ttt t	t t
t t d  | tt t ks1J ttdgg ddgg tt	t| dt ksIJ ttgg ttd gg sWJ ttgg td tgg seJ ttgg td tgg ssJ tttgg ttttj gg ttt tttj   dtdtt  |dtt td   dtdtt  |dtt      krtttgg tttj tgg t  krtttgg ttj ttgg tksJ  J ttd gg td ttdd td gg sJ d S )Nr   
uppergammaSiCirA   r=   r<   )rP   r   r   r   r   r   r$   r%   r#   r0   r5   r   r   rB   r6   r7   r-   r.   r:   r   rC   rC   rD   test_meijerg_lookup  s(   . @"  4r   c                	   C   s  t g g ttj gtttd  ttd  gsJ t g g dtjgtt gs'J t g g dt tj tt tj gttj gs@J t g g dttj t tj gtjgsUJ t g g tttj tgdt t gsiJ t g g tttj tdt t gs|J t tjgg t tgdgsJ d S )Nr=   r   r<   )r   r$   r   rB   r%   rC   rC   rC   rD   test_meijerg_expand_fail  s   02*(&"r   c                  C   s~  dd t dD \} }dd t dD \}}dd t dD \}}}}}}	t| g||g|g||gt}
tddd u s=J tddd u sGJ t| |g||g|g|||gt}tt|||
t|tsgJ t| |g||g|g|||d	 gt}tt||d	 |
t|tsJ t| |d	 g||g|g|||d gt}tt|d	 |d |
t|tsJ t| g|||d	 g||d g||gt}tt|d |d	 |
t|td
dsJ | |g}|||d	 g}|||d	 g}||d	 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                 s   s(    | ]}t |d t  |t  V  qdS r>   NrT   r   r   rC   rC   rD   r        & ztest_meijerg.<locals>.<genexpr>r=   c                 s   s(    | ]}t |d t  |t  V  qdS r   r   r   rC   rC   rD   r     r   c                 s       | ]}t  V  qd S r   r   r   rC   rC   rD   r         r@   r<   rF   rA   gư>)Ztol)r   r   r#   r   Zmeijer_minusZmeijer_plusrW   r   r   r   r   r   setrY   r   rZ   r   )r   r   r   r   r   b4b5r   a4a5r   Zg2r   rZ   rY   r   Zniqr   rC   rC   rD   test_meijerg  s8     $$(((
*r   c               
   C   sr  dd t dD \
} }}}}}}}}}	t| g||g|g||gt}
tt||
tt| g||g|d g||gtts=J tt| |
tt| d g||g|g||gttsYJ tt||
tt| g||g|g|d |gttsuJ tt	||
tt| g|d |g|g||gttsJ t
| g||g|g||gdt}t||
tt| g||g|d g||gttsJ t| g||g|g||gdt}t||
tt| g||g|g|d |gttsJ t| g||g|g||gdt}t||
tt| d g||g|g||gttsJ t| g||g|g||gdt}t||
tt| g|d |g|g||gtts7J d S )Nc                 s   r   r   r   r   rC   rC   rD   r     r   z/test_meijerg_shift_operators.<locals>.<genexpr>ru   rA   r   )r   r   r#   rW   r   r   r   r   r	   r
   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rC   rC   rD   test_meijerg_shift_operators  s<   &    ***
*r   c                  C   s:  d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  d t ttd  tdd ds=J | t g ddgddgg ttd d	 td  ttd  tdd dd
t   dshJ | t g g dg dg tttd  d
 dsJ | t ddgg g ddgtdtdt  sJ | t ddgddgddgddgtt tt dt  tdt  d sJ | t tjgddgddgtddgtttd d dsJ dd }|g dgddgg sJ |ddgg g dgsJ |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                 S   s  ddl m}m} |||g\}}| }t| } | ||ttdk f|tdt dk f|dfks0dS | jd jd |krD| jd jd |ksFdS t d }t| t|	 |t|	  	 dkrcdS t| td| 	 |td| 	  	 dkrdS dS )Nr   )sympifyr   rA   TFru   g|=)
rP   r   r   r   r   r#   argsrT   rV   r`   )mr$   r%   r   r   Zm_Zz0rC   rC   rD   r|     s   0(
,4z"test_meijerg_confluence.<locals>.trA   r   r<   r=   rF   r;      r@   rA   rA   rA   rA   )r   r   r   r   c                 S   sJ   t | |||t}t|dd}|t r|jrt|jdksdS t||tS )NT)Zallow_hyperr<   F)r   r#   r   rQ   Zis_Piecewiselenr   rW   )r   rY   r   rZ   r   Zm2rC   rC   rD   u!  s
   z"test_meijerg_confluence.<locals>.u)r=   r=   r>   )rA   rA   r@   )r   r#   r/   r:   r   rB   )r|   r   rC   rC   rD   test_meijerg_confluence  s*   *(62. $<$&r   c                  C   s   ddl m}  tdtddfdft}d}|ttdd  tdtddftd	dftttt   }| 	t
||  d
dsAJ d S )Nr   )RR))g      @rA   rC   r<   r=   rK   gwg      r>   g      ?g-q=)rP   r   r   r:   r#   r   r9   r   r7   Zalmosteqr   r`   )r   r   r$   r   rC   rC   rD   test_meijerg_with_Floats-  s
   <"r   c               
   C   s  ddl m} m}m}m}m} ttdtgtd gt	t |t	dtks%J ttdttgtd td gt	td  |t	dtksBJ ttdtttgtd td td gt	td  |t	dtkscJ ttdgtgd  td gd t	td  |t	dtksJ | tt
ddt gg dgt g|t t t	 |t	dtksJ | tt
ddt dt gg dgt t g|t t t	 |t	dtksJ | tt
ddt dt dt gg dgt t t g|t t t	 |t	dtksJ tt	tddgdgt	 |dt	   ksJ tt	tg dddgt	 |dt	ks%J tt	tg dg d	t	 |dt	ks;J ttdtdtj gtd tjgt	d
t t	d  d
td  t |t	dt  ksgJ tg d	ddgssJ tdddtd gddtgddsJ tdttttd gtd td td tgddsJ 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 d  |dtj ksJ d S )Nr   )r   r9   polylogr/   lerchphirA   r=   r<   ru   )rA   rA   rA   r   )r=   r=   r=   rN   r>   )r\   Fr[   )AbsrF   )rP   r   r9   r   r/   r   r   r   r$   r#   r   r   r7   r   rB   rb   r%   r   r:   )r   r9   r   r/   r   r   rC   rC   rD   test_lerchphi6  sZ   .$
0
,


"
0,,$*
&("&r   c                  C   s"  dd t dD \} }}}}t| ||g||gtg | ||||gfD ]2}t|}|j}|j||ks4J |j|| }|j|j }	t||	D ]\}
}t	|
||sSJ qGq"ddl
m} m}m} ttd| gd|g||  | d | | d  d|   t| d g|g| | | d d|   d t| g|g|  ksJ t	ttd|gd|g|td|gd|g||sJ ttdgd| |g|td	| |f||td	| d |f| d|    ||d
  td	| d |d f| d|  |   ksJ t	ttdgd||g|tdgd||g||sJ d S )Nc                 s   r   r   r   )rL   _rC   rC   rD   r   e  r   z$test_partial_simp.<locals>.<genexpr>r>   r   )r$   r%   r#   r<   rA   r=   rC   rF   )r   r   r   r#   r   r   r   r   r   rW   	sympy.abcr$   r%   r   r   )r$   r%   r&   rO   er   r   r#   r   r   Zfunc1Zfunc2rC   rC   rD   test_partial_simpc  s>   4&*.*r   c                   C   s  t tttgtgdttttt t  ttt  ttt  ks%J t tttgdt t gdtdtd  tdt t  tdt  tdtd  t  ksVJ t tttgdt t gdtdtd  tdt t  tdt  tdtd  t  ksJ t tdt td  gdt td  gtd gt d gdtddt  tttd  td   tdt td  td   tdt td  td   tdt td  td   ksJ t ttgtgddksJ ttgtgddksJ d S )NrA   r;   r=   r   )r   r   r$   r%   r&   r5   r   r#   rC   rC   rC   rD   test_hyperexpand_special  s$   .>><Br   c                  C   sX   ddl m} m}m} | ddd}|ttdgg |d gdgt||d tks*J d S )Nr   )Symbolrr   r2   r`   T)ZintegerrA   )rP   r   rr   r2   r   r   r#   )r   rr   r2   r`   rC   rC   rD   test_Mod1_behavior  s
    r   c                   C   s  t ddt d dt d gtdddgsJ t tjtd gtddtd gdds,J t g td gs6J t tgtd td gsDJ t tgttj dt gsSJ t tgttj dt d gsdJ t tgttj dt d gsuJ t tgttj dt gsJ t tgttj dt d gsJ t tgttj dt d gsJ t tjgtdt gsJ t tjgtdt gsJ t dgdtgsJ t tttj gdt tdt t d gsJ t tttj gtjdt dt tj gsJ t tgtd gddsJ d S )NrA   r<   r=   T)r]   )rb   r   r:   r   rB   r$   r%   rC   rC   rC   rD   test_prudnikov_misc  s    .*"""".. r   c                   C   s  t tt gtjgsJ t tdt gtjgsJ t tdt gtddgs(J t tdt gtjgs5J t tdt gtddgsDJ t tdt gtddgsSJ t tttj gdt d gsdJ t tttj gdt gssJ t tttj gdt d gsJ t tttj gtjgsJ t tttj gtddgsJ t ttd d gtd gsJ t dtgdgsJ t dtgtd gddsJ t tgdt gsJ t tgdt d gsJ t tgdt d gsJ d S )NrA   r<   r=   Fr   )rb   r$   r   rB   r:   r%   rC   rC   rC   rD   test_prudnikov_1  s"   ""  r   c               
   C   s  t j} t|  |  g| gsJ t|  | gd|  gsJ t|  | gd|  gs)J t|  | gd|  gs6J t|  dg| gsAJ |  | fD ]F}|  | dd|  dd|  dd|  df	D ]}|  | d|  d|  d|  fD ]}t||g|gsvJ qjqZdD ]}dD ]}t||g|gsJ q~qzqFd S )Nr<   r>   r?   rA   r=   rF   rA   r=   r<   rF   r   rB   rb   r   pr`   r   rC   rC   rD   test_prudnikov_2  s"   ( r   c                  C   s4  t rtd tj} ttddtddg| gsJ ttddtddgd|  gs+J ttddtddgd|  gs=J ttddtddg| gsMJ ttddtddgd|  gs_J dD ]6}|  | dd|  dd|  dd|  dd	|  f
D ]}dd|  dd|  dd|  dfD ]}t||g|gsJ qqxqad S )
NzToo slow for travis.rA   rF   r<   r=   r>   r   r?   rc   )r*   r+   r   rB   rb   r:   r   rC   rC   rD   test_prudnikov_3  s    $$ $."r   c                  C   s   t j} d|  d|  d|  fD ]B}|  | d|  d|  d|  fD ]}d|  dd|  dd|  dfD ]}t||g|gs:J q.qdD ]}dD ]}t||g|gsNJ qBq>qd S )Nr<   r>   r?   r=   rF   r   )r=   r<   rF   r   r   rC   rC   rD   test_prudnikov_4  s     r   c                  C   sL  t j} dD ]$}t|dD ]}dD ]}t|dD ]}t|  ||g||gs&J qqqq| dd|  dd|  dfD ];}| d|  d|  fD ]/}| d|  d|  fD ]#}| d|  d|  fD ]}||krn||krnt|  ||g||gsnJ qWqLqAq6| dd|  dd|  dfD ]%}dD ] }| d|  d|  fD ]}dD ]}t|  ||g||gsJ qqqq~d S )Nrg   rF   rA   r<   r=   r>   r   rB   r   rb   )r   r   qr^   r   rC   rC   rD   test_prudnikov_5  s8   r   c                  C   s4  t j} d|  d|  fD ]<}dD ]7}| ddfD ]}dD ]}t| ||g||gs(J qqdD ]}d|  d|  fD ]}t| ||g||gsDJ q6q,qqdD ]}dD ]}dD ]}dD ]}t| ||g||gsdJ qVqRqNqJt| | d|  gd|  d|  gszJ t| dd|  gd|  d|  gsJ t| ddgddgsJ d S )Nr<   r>   rg   rA   r=   )rA   r=   r   )r   r   r`   r   r   rC   rC   rD   test_prudnikov_6  s0   $$r   c               
   C   s   t dgdgs	J tj} | d|  d|  d|  fD ]}t |  g|gs$J q|  | dd|  dd|  dd|  df	D ] }|  | d|  d|  d|  ddddf	D ]}t |g|gsVJ qKq7d S )Nr<   r@   r>   r?   rA   r=   rF   )rb   r   rB   )r   r`   r   rC   rC   rD   test_prudnikov_7)  s   ((r   c               	   C   s  t j} dD ]U}dD ]&}td|d D ]}| dd|  dd|  dfD ]}t||g||gs-J q qq	d|  d|  fD ]!}| dd|  dd|  dfD ]}dD ]}t||g||gsWJ qJqFq8q|  | d|  d|  fD ]]}dD ]!}| dd|  dd|  dfD ]}dD ]}t||g||gsJ q|qxqj| d|  d|  fD ]-}| d|  d|  dfD ] }| dd|  dd|  dfD ]}||krt||g||gsJ qqqqfd S )Nrg   rA   r<   r=   r>   r   )r   ra   ZbiZciZdirC   rC   rD   test_prudnikov_85  s@   r   c                  C   s^   t dD ]} tg t| d d gsJ qt dD ]} tg dt|  d  d gs,J qd S )Nrc   rA   r=   r>   )r   rb   r   )irC   rC   rD   test_prudnikov_9P  s
   $r   c               	   C   sj  t j} |  | dd|  dd|  dd|  df	D ]}dD ]}t|dD ]}t|g||gs,J q qqdD ] }| d|  d|  d|  fD ]}dD ]}t|g||gsOJ qCq?q1d|  d|  d|  fD ](}| ddd|  dd|  dfD ]}t|g| |gsxJ t|gd|  |gsJ qlq]| ddd|  dd|  dfD ]}td|  gd|  |gsJ qttddgt jt jgsJ d S )	NrA   r<   r=   r>   r?   rF   r   r;   )r   rB   r   rb   r:   r   r   r   r`   rC   rC   rD   test_prudnikov_10X  s*   ("r   c                   C   s2  t tttj gdt tdt t gsJ t tttj gtdddt dt tj gs.J t tddtddgtjtjdgsBJ t tddtddgtddtjdgsXJ t tddtddgtddtdddgspJ t tddtddgtddtdddgsJ t ddgtddddgsJ d S )Nr=   r<   rA   rF   r>   r?   )rb   r$   r   rB   r%   r:   rC   rC   rC   rD   test_prudnikov_11q  s   *2(,00"r   c                   C   s  t g tttj dt gdsJ t g tttj dt d gds"J t g tjtttj gs0J t g tddtttj gs@J t g tddtjtddgsQJ t g tjtjdgs]J t g tjtdddgskJ t g tddtddtddgs~J t g ddtddgsJ t g ddtddgsJ t g dtddtddgsJ t g tddtddtddgsJ t g dtddtddgsJ d S )Nr=   FrA   r<   rF   r>   r?   )rb   r$   r   rB   r:   rC   rC   rC   rD   test_prudnikov_12~  s   $ "& &$r   c                  C   sV   t j} |  | fD ] }| d|  d|  d|  fD ]}dD ]}t||g|gs&J qqqd S )Nr<   r>   r?   r   r   r   rC   rC   rD   test_prudnikov_2F1  s   r   c                  C   sp  t ttgtd gsJ t dtgtgsJ t ttgtt tj gs%J t ttgtt tj gs4J t ttgtt tdd gsEJ t ttgtt d d gsUJ t ttgtt d d gseJ t ttgtt d gssJ t ttgtt d gsJ t ttgdt gsJ t ttgtjgsJ t ttgtddgsJ t tdt gtgsJ t tdt gtgsJ t tdt gtgsJ t tttj gtgsJ t dtgtgsJ t dtgtddgsJ t tddtddgdgsJ tj} t | d dg| d d gsJ t | d dg| d d	 gs"J t | d dg| d d
 gs3J t | d dg| d d gsDJ t | d dg| d d gsUJ t | d dg| d d gsfJ t | d dg| d d gswJ t | d dg| d d gsJ t | d dg| d d	 gsJ t | d d dg| d d gsJ t | d d dg| d d	 gsJ t | d d dg| d d gsJ t | d d dg| d d gsJ t | d d dg| d d
 gsJ t | d d dg| d d
 gsJ t | d d dg| d d	 gsJ t | d d dg| d d gs1J t | d d dg| d d gsDJ t | d d dg| d d gsWJ t | d d dg| d d gsjJ t | d d dg| d d gs}J t | d d dg| d d gsJ t | d d dg| d d gsJ t | d d	 dg| d d gsJ d S )NrA   r;   r<   r=   rF      rc   r@   r?      r>      r            )rb   r$   r%   r&   r   rB   r:   ZOne)orC   rC   rD   test_prudnikov_fail_2F1  sX   "   """""""""&&&&&&&&&&&&&&*r  c                   C   s  t tttdd ttdd gtddtddgsJ t tttdd ttdd gtddtddgs8J t tttdd ttdd gtddtddgsTJ t tttdd ttdd gttdd dt d d gsuJ t tddtjtjgddgsJ t tddtjdgtddtddgsJ t tddtdddgtddtd	dgsJ t tddtdddgtddtd
dgsJ t tddtdddgtddtddgsJ t tddtdddgtddtddgsJ 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sBJ d S )NrA   r<   r=   rF   r>   r;   r   rc   r  r   r?   r  r@   )rb   r$   r:   r   rB   rC   rC   rC   rD   test_prudnikov_fail_3F2  s   888B",000022,r  c                   C   s  t dtgtddt  t 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sOJ t dgtddtddgs_J t dgtddtddgsoJ 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sJ t tjdgtddtddtddgsJ t g tddtdgsJ t g tddtd	gsJ t g tddtd	gsJ t g tttj dt d gsJ d S )
NrA   r=   r;   rF   r>   r<   r?   gUUUUUU?gUUUUUU?)rb   r$   r%   r:   r   rB   rC   rC   rC   rD   test_prudnikov_fail_other  s   ""&   ,,&r  c                  C   s.   t ddgtgd} t| td t ksJ d S )Nr;   rA   )r   r#   r   r   rC   rC   rD   test_bug	  s   r
  c                  C   sH   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)re   rd   rn   )r  rA      )r  ire   r;   r@   )r   r   r:   r	  rC   rC   rD   test_omgissue_203  s   r  N)TrA   Fr   )T)rZ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   rP   r   r   r   r   r   r   r    r!   r"   r   r#   r$   r%   r&   Zsympy.testing.pytestr'   r(   r)   r*   r+   Zsympy.testing.randtestr,   rW   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   rE   rJ   rb   rf   rh   rk   ro   rp   rs   rw   rT   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   r   r   r   r   r   r   r   r  r  r  r
  r  rC   rC   rC   rD   <module>   s    d,	@	


	

 

A

&
(	-









	
6

