a
    <b                     @   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 d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl m8Z9 d dl m:Z:m;Z; d dl<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZN dd ZOdd ZPdddZQd d! ZRe3d"d# ZSd$d% ZTd&d' ZUd(d) ZVd*d+ ZWd,d- ZXdd/d0ZYe5d1d2 ZZd3d4 Z[d5d6 Z\d7d8 Z]d9d: Z^d;d< Z_d=d> Z`d?d@ ZaddAdBZbe5dCdD ZcdEdF Zde3dGdH Zee5dIdJ ZfdKdL Zge5dMdN ZhdOdP ZidQdR ZjdSdT ZkdUdV ZldWdX Zme5dYdZ Znd[d\ Zoe5d]d^ Zpe5d_d` Zqe5dadb Zre5dcdd Zse5dedf Zte5dgdh Zue5didj Zvdkdl Zwe5dmdn Zxdodp Zydqdr Zze5dsdt Z{e3dudv Z|e3dwdx Z}e3dydz Z~d{d| Zd}d~ ZdS )    )	randrange)ShiftAShiftBUnShiftAUnShiftBMeijerShiftAMeijerShiftBMeijerShiftCMeijerShiftDMeijerUnShiftAMeijerUnShiftBMeijerUnShiftCMeijerUnShiftDReduceOrderreduce_orderapply_operatorsdevise_planmake_derivative_operatorFormulahyperexpandHyper_Function
G_Functionreduce_order_meijerbuild_hypergeometric_formula)Sum)Tuple)Expr)I)S)symbols)binomial)	Piecewise)hypermeijerg)zabc)XFAILraisesslow	ON_TRAVISskip)verify_numerically)Rationalpi)exp	exp_polarlog)atanh)sqrt)asincossin)besseli)erf)gamma
lowergammac                   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szJ 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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:    rD   rD   u/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/simplify/tests/test_hyperexpand.pytest_branch_bug#   s     ,&.0

rF   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sHJ t tg tjgtd  d ttksrJ t ttg tdgtd  d  ttksJ t ttdtdgtdgtd t t	tksJ t
ttdttd  tdtf tsJ d S )NrB   r>      3/21/2r   )r   r"   r$   r0   r2   r   rC   r6   r7   r5   
isinstancer   r    r%   Zdoitr   rD   rD   rD   rE   test_hyperexpand,   s    ,*0(rK   TrB   Fc              	   C   s   t t| |t}|trdS |s&dS i }|jth }|r|t|D ]\}}	t|| ||	< qBtdd t| 	|D s6q|q6g d\}
}}}|rg d\}
}}}t
t| |t	||tt	|t|
|||dS )NFTc                 s   s   | ]}|j o|d kV  qdS )r   N)Z
is_Integer).0r&   rD   rD   rE   	<genexpr>E       zcan_do.<locals>.<genexpr>)r>   r<   r=   rB   )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replZrandsymsnair%   r&   r'   rP   rD   rD   rE   can_do9   s(    

rb   c                   C   s   t tjgtddgsJ t g dtdddgs4J t tddddgddgsRJ 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sJ t td	dgtddtjgsJ t td	dtddgdgsJ d S )N	   r>   rB   r?   rG   r<   r=   rO   )rb   r   rC   r.   rD   rD   rD   rE   
test_roachP   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sLJ t tddtjdgtddtddgsxJ t g dtjdgsJ t tjgtddtddtddgsJ d S )	Nr<   r>   rB   rG   r=   r?   rB   r>   r=   rO   )rb   r.   r   rC   rD   rD   rD   rE   test_roach_fail\   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 sBJ ttddgdgtdks`J tddt t gdt gsJ ttdd	tdtd
  ksJ d S )Nr   oor<   rO   rB   re   i)r<   rB   )rO   r>   )sympy.core.numbersrj   r   r"   r$   rb   rT   ri   rD   rD   rE   test_polynomialg   s     rl   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sfJ t tddgdgtdt dtt d  td   ksJ t ttjdgt	ddgtddt d  t
tttt d  ksJ 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s^J 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sTJ t tdtj ddgddgtdttt d d tj  t ksJ 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sJ d S )Nr>   rB   r=   rO   r<   r?   rd   rG   rA   r@   i    #   )r   r"   r%   r$   r0   r;   r2   r   rC   r.   r3   r4   r5   r&   r8   r:   rD   rD   rD   rE   test_hyperexpand_basesp   sD    8<& (
(,$*
"
0*rp   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sRJ 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sJ d S )NrB   rO   r>   r<   )r   r"   r%   r   rC   r$   r4   r.   rD   rD   rD   rE   test_hyperexpand_parametric   s    .".rq   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snJ d S )Nr   simplifyrG   r>   r=   rH   )	sympy.simplify.simplifyrs   r   r$   r"   r   r7   rC   r6   rr   rD   rD   rE   test_shifted_sum   s    *0ru   c                   C   s   t tdd d S )z Steer clear of integers.    
   2   )r   r   rD   rD   rD   rE   _randrat   s    ry   r<   c                 C   s   t  tt    td|    S )z+ Polys is not good with real coefficients. rB   )ry   r   )offsetrD   rD   rE   rT      s    rT   c                  C   s6  ddl m}  |  j}|D ]}||j}i }t|jD ]\}}t|||< q8||}|j	|
d}|j}t||tt|sJ |j|j d |
d}	t|tt|	tt|sJ ||jdd | }
|j|j }t|
|D ]:\}}t||tt||
dtt|sJ qqd S )Nr   )FormulaCollectionnonrepsmallc                 S   s
   |  dS )Nr|   )rewrite)trD   rD   rE   <lambda>   s   ztest_formulae.<locals>.<lambda>)sympy.simplify.hyperexpandr{   formulaefuncr$   rS   r   rT   rV   closed_formr}   rW   rX   r1   r0   CBZ	applyfuncdiffMzip)r{   r   formulahrepr`   symr   r$   clderiv1deriv2d1d2rD   rD   rE   test_formulae   s2    

r   c                  C   s
  ddl m}  |  j}|D ]}|| D ]}t|jj|jj|jj|jj|j	}i }|j
D ]}t ||< qT||}|j|}|j	}t|||sJ |j|j d |}	t||	|sJ ||j| }
|j|j }t|
|D ]$\}}t|||||sJ qq$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   sigr   gr   r   r   r$   r   r   r   r   r   rD   rD   rE   test_meijerg_formulae   s*    

r   c                 C   s   t | t  S N)r$   r   )frD   rD   rE   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\0    Y  tt0 t tdgdgtdgdgt W d    n1 s0    Y  tt0 t tdgg ttdgg t W d    n1 s0    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   rD   rB   r>   rI   c                 s   s   | ]}t |V  qd S r   rT   rL   r`   rD   rD   rE   rM      rN   ztest_plan.<locals>.<genexpr>r=   )r   r   r$   r)   
ValueErrorr   ranger   r"   rW   r   r   )a1a2b1r   h2rD   rD   rE   	test_plan   s@    
8
>
>
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sJ t| |d |d f|d |d f}t||t}tt|j	||	|j
 d |tts
J d S )NrB   r>   rI   r=   z5/2r   )r   r   r   r$   r   r   r   rW   r   r   r   )
r   r   a3r   b2r   r   opsr   ZderivrD   rD   rE   test_plan_derivatives   s    (($r   c            	      C   s  dd t dD \} }}t| g|gt}tddd u s:J tddd u sLJ tdtdd u sbJ t| |f||ft}tt|||t|tsJ t| |d f||ft}tt|d ||t|tsJ t|d	 | f||ft}tt|d	 ||t|ts
J |d	 | |d f}|||f}tt	||\}}|j
| fksJJ |j|fks\J tt||tt||tts~J d S )
Nc                 s   s   | ]}t |V  qd S r   r   r   rD   rD   rE   rM     rN   z+test_reduction_operators.<locals>.<genexpr>r=   r>   r   r<   rB   rI   rG   )r   r"   r$   r   r   rW   applyr   r   r   rY   rZ   r   )	r   r   r   r   r   rY   rZ   r   r   rD   rD   rE   test_reduction_operators  s"    "$
r   c                  C   sP  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sJ tt||tt| |d f|||fttsJ tt	||tt| |f|d ||fttsJ tt	||tt| |f||d |fttsJ tt	||tt| |f|||d fttsLJ d S )Nc                 s   s   | ]}t |V  qd S r   r   r   rD   rD   rE   rM   '  rN   z'test_shift_operators.<locals>.<genexpr>r?   c                   S   s   t dS )Nr   )r   rD   rD   rD   rE   r   *  rN   z&test_shift_operators.<locals>.<lambda>c                   S   s   t dS )NrB   )r   rD   rD   rD   rE   r   +  rN   rB   )
r   r"   r$   r)   r   rW   r   r   r   r   )r   r   r   r   b3r   rD   rD   rE   test_shift_operators&  s    2224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sJ t| |f|||fd
t}t||tt| |d
 f|||fttsJ t	| |f|||fd	t}t||tt| |f|d
 ||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 d S )Nc                 s   s   | ]}t |V  qd S r   r   r   rD   rD   rE   rM   5  rN   z(test_ushift_operators.<locals>.<genexpr>r?   c                   S   s   t dddtS )NrB   rD   r   r   r$   rD   rD   rD   rE   r   8  rN   z'test_ushift_operators.<locals>.<lambda>c                   S   s   t dddtS )NrD   )r<   r   r   r$   rD   rD   rD   rE   r   9  rN   c                   S   s   t dddtS )Nr   )r   r<   rB   r   r   rD   rD   rD   rE   r   :  rN   c                   S   s   t dddtS )Nr   rB   r   r   r   rD   rD   rD   rE   r   ;  rN   r   rB   r>   )
r   r"   r$   r)   r   r   rW   r   r   r   )r   r   r   r   r   r   srD   rD   rE   test_ushift_operators4  s     ..00r   c                 C   s   ddl m} ddl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   )expand)
unpolarifyFT)forceZ
power_baseZ	power_expmulr2   Zmultinomialbasic)Zsympy.core.functionr   $sympy.functions.elementary.complexesr   r   r#   r$   rQ   rS   rR   rT   rW   rV   )r   r   r   r   numericr   r   r^   r_   r`   ra   rD   rD   rE   can_do_meijerJ  s    	
$r   c               
   C   s  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 kspJ ttddgg gdgdggtttd  ksJ ttg g gt	j
gdggtd d tttt ksJ ttg g gdgt	j
ggtd d tttt ksJ tg tgtd tt	j
 gg s:J tg g td gt d gds^J 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s4J tg g ttd  gtttd  tt	j
 gsfJ tg g tgtgdsJ tg t	j
gtgt gsJ tg g ttgg sJ tg g ttgg sJ tg g ttt	j
 gttt	j
 gsJ tg g tt gdt	j
gdsJ tg g ttt	j
 ttt	j
 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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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    d tdt dk ftddgg g ddgtdfksJ | |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sJ 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sbJ 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   rB   r>   FTr<   rO   )r   rD   r   )Zplace)sympy.simplify.gammasimpr   rt   rs   r   r#   r$   r0   r2   r   rC   r7   r4   r/   r6   r   r%   r&   r!   absr"   r1   r   r:   )r   rs   r   rD   rD   rE   test_meijerg_expandi  s    (

$$
$$""
"
2
("( "*,,&
0"
 &r   c                  C   s  ddl m} m} ddlm} tttgg ttgg t	t	t t
t	 tt t d  |tt t	 ksjJ ttdgg ddgg t	t
t	|dt	 ksJ ttgg ttd gg sJ ttgg td tgg sJ ttgg td tgg sJ 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sn J ttd gg td ttdd td gg sJ d S )Nr   )CiSi)
uppergammarB   r>   r=   )'sympy.functions.special.error_functionsr   r   'sympy.functions.special.gamma_functionsr   r   r#   r%   r&   r$   r0   r:   r   r   rC   r4   r/   r6   r7   r.   )r   r   r   rD   rD   rE   test_meijerg_lookup  s*    . @"
 
 r   c                	   C   s  t g g ttj gtttd  ttd  gs0J t g g dtjgtt gsNJ t g g dt tj tt tj gttj gsJ t g g dttj t tj gtjgsJ t g g tttj tgdt t gsJ t g g tttj tdt t gsJ t tjgg t tgdgsJ d S )Nr>   r   r=   )r   r%   r   rC   r&   rD   rD   rD   rE   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 szJ tddd u sJ t| |g||g|g|||gt}tt|||
t|tsJ t| |g||g|g|||d	 gt}tt||d	 |
t|tsJ t| |d	 g||g|g|||d gt}tt|d	 |d |
t|tsjJ 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s0J |j|fksBJ t|j||hksZJ tt|
|tt||||ttsJ d S )Nc                 s   s&   | ]}t |d t  |t  V  qdS r?   NrT   r   r   rD   rD   rE   rM     rN   ztest_meijerg.<locals>.<genexpr>r>   c                 s   s&   | ]}t |d t  |t  V  qdS r   r   r   rD   rD   rE   rM     rN   c                 s   s   | ]}t  V  qd S r   r   r   rD   rD   rE   rM     rN   rA   r=   rG   rB   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   rD   rD   rE   test_meijerg  s<      $&(*(r   c               
   C   sx  dd t dD \
} }}}}}}}}}	t| g||g|g||gt}
tt||
tt| g||g|d g||gttszJ tt| |
tt| d g||g|g||gttsJ tt||
tt| g||g|g|d |gttsJ tt	||
tt| g|d |g|g||gtts$J t
| g||g|g||gdt}t||
tt| g||g|d g||gttsxJ 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stJ d S )Nc                 s   s   | ]}t |V  qd S r   r   r   rD   rD   rE   rM     rN   z/test_meijerg_shift_operators.<locals>.<genexpr>rw   rB   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   rD   rD   rE   test_meijerg_shift_operators  s<    &    
*
*
*
*r   c                  C   sF  dd } | t g ddgddgg ttt ds2J | t g ddgddgg ttd  d t ttd  tdd dszJ | 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sJ | t g g dg dg tttd  d
 dsJ | t ddgg g ddgtdtdt  s4J | 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sBJ d S )Nc                 S   s   ddl m} |||g\}}| }t| } | t|ttdk f|tdt dk f|dfks\dS | jd jd |kr| jd jd |ksdS t d }t| t|	 |t|	  	 dkrdS t| td| 	 |td| 	  	 dkrdS dS )Nr   )sympifyrB   TFrw   g|=)
Zsympy.core.sympifyr   r   r!   r   r$   argsrT   rV   r`   )mr%   r&   r   Zm_Zz0rD   rD   rE   r~     s    0(
,4z"test_meijerg_confluence.<locals>.trB   r   r=   r>   rG   r<      rA   rB   rB   rB   rB   )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   m2rD   rD   rE   u1  s
    z"test_meijerg_confluence.<locals>.u)r>   r>   r?   )rB   rB   rA   )r#   r$   r2   r.   r   rC   )r~   r   rD   rD   rE   test_meijerg_confluence  s*    *(640 $
>$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sJ d S )Nr   )RR))g      @rB   rD   r=   r>   r   gwg      r?   g      ?g-q=)Zsympy.polys.domains.realfieldr   r#   r.   r$   r"   r1   r   r/   Zalmosteqr   r`   )r   r   r%   r   rD   rD   rE   test_meijerg_with_Floats=  s
    <r   c               
   C   s  ddl m} m} ddlm} ttdtgtd gtt | tdtksJJ ttdttgtd td gttd  | tdtksJ ttdtttgtd td td gttd  | tdtksJ ttdgtgd  td gd ttd  | tdtksJ |tt	ddt gg dgt gt
t t t | tdtksLJ |tt	ddt dt gg dgt t gt
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 | tdtksJ tttddgdgt tdt   ks&J tttg dddgt |dtksRJ 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sJ tg d
ddgsJ tdddtd gddtgddsJ tdttttd gtd td td tgddsJJ 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 d  |dtj ksJ d S )Nr   )lerchphipolylogr   rB   r>   r=   rw   )rB   rB   rB   r   )r>   r>   r>   rO   r?   )r\   Fr[   )AbsrG   )Z&sympy.functions.special.zeta_functionsr   r   r   r   r   r"   r%   r$   r#   r1   r   r/   r2   r   rC   rb   r&   r   r   r.   )r   r   r   r   rD   rD   rE   test_lerchphiF  s\    .$
0
,





"

0,,$*
&("&r   c                  C   s"  dd t dD \} }}}}t| ||g||gtg | ||||gfD ]d}t|}|j}|j||kshJ |j|| }|j|j }	t||	D ]\}
}t	|
||sJ qqDt
d\} }}ttd| gd|g||  | d | | d  d|   t| d g|g| | | d d|   d t| g|g|  ks4J t	ttd|gd|g|td|gd|g||sjJ 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   s   | ]}t  V  qd S r   r   )rL   _rD   rD   rE   rM   v  rN   z$test_partial_simp.<locals>.<genexpr>r?   za b zr=   rB   r>   rD   rG   )r   r   r   r$   r   r   r   r   r   rW   r   r   r"   )r%   r&   r'   rP   er   r   r$   r   r   Zfunc1Zfunc2rD   rD   rE   test_partial_simpt  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sJJ 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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sJ 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 )NrB   r<   r>   r   )r   r"   r%   r&   r'   r:   r#   r$   rD   rD   rD   rE   test_hyperexpand_special  s$    .>>
<B
r   c                  C   s\   ddl m}  ddlm} | ddd}|ttdgg |d gdgtt|d tksXJ d S )Nr   )Symbolrr   r`   T)integerrB   )sympy.core.symbolr   rt   rs   r   r#   r$   r;   )r   rs   r`   rD   rD   rE   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sXJ t g td gslJ t tgtd td gsJ 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gttj dt gs
J t tgttj dt d gs.J t tgttj dt d gsRJ t tjgtdt gsnJ 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s J t tgtd gddsJ d S )NrB   r=   r>   T)r]   )rb   r   r.   r   rC   r%   r&   rD   rD   rD   rE   test_prudnikov_misc  s     .*"" $$00r   c                   C   s  t tt gtjgsJ t tdt gtjgs2J t tdt gtddgsPJ t tdt gtjgsjJ t tdt gtddgsJ t tdt gtddgsJ t tttj gdt d gsJ t tttj gdt gsJ t tttj gdt d gs
J t tttj gtjgs(J t tttj gtddgsJJ t ttd d gtd gslJ 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 )NrB   r=   r>   Fr   )rb   r%   r   rC   r.   r&   rD   rD   rD   rE   test_prudnikov_1  s"    "$""r   c               
   C   s  t j} t|  |  g| gsJ t|  | gd|  gs8J t|  | gd|  gsRJ t|  | gd|  gslJ t|  dg| gsJ |  | fD ]}|  | dd|  dd|  dd|  df	D ]:}|  | d|  d|  d|  fD ]}t||g|gsJ qqdD ]"}dD ]}t||g|gsJ qqqd S )Nr=   r?   r@   rB   r>   rG   rB   r>   r=   rG   r   rC   rb   r   pr`   r   rD   rD   rE   test_prudnikov_2  s    ( r   c                  C   s8  t rtd tj} ttddtddg| gs2J ttddtddgd|  gsVJ ttddtddgd|  gszJ ttddtddg| gsJ ttddtddgd|  gsJ dD ]p}|  | dd|  dd|  dd|  dd	|  f
D ]@}dd|  dd|  dd|  dfD ]}t||g|gsJ qqqd S )
NzToo slow for travis.rB   rG   r=   r>   r?   r   r@   rc   )r+   r,   r   rC   rb   r.   r   rD   rD   rE   test_prudnikov_3  s     $$ $."r   c                  C   s   t j} d|  d|  d|  fD ]}|  | 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sJ qq|qd S )Nr=   r?   r@   r>   rG   r   )r>   r=   rG   r   r   rD   rD   rE   test_prudnikov_4  s      r   c                  C   sT  t j} dD ]H}t|dD ]8}dD ].}t|dD ]}t|  ||g||gs.J q.q qq
| dd|  dd|  dfD ]v}| d|  d|  fD ]^}| d|  d|  fD ]F}| d|  d|  fD ].}||kr||krt|  ||g||gsJ qqqql| dd|  dd|  dfD ]R}dD ]H}| d|  d|  fD ].}dD ]"}t|  ||g||gs"J q"qqqd S )Nrg   rG   rB   r=   r>   r?   r   rC   r   rb   )r   r   qr^   r   rD   rD   rE   test_prudnikov_5	  s"    ""r   c                  C   s8  t j} d|  d|  fD ]x}dD ]n}| ddfD ]&}dD ]}t| ||g||gs4J q4q,dD ]2}d|  d|  fD ]}t| ||g||gslJ qlqXqqdD ]:}dD ]0}dD ]&}dD ]}t| ||g||gsJ qqqqt| | d|  gd|  d|  gsJ t| dd|  gd|  d|  gsJ t| ddgddgs4J d S )Nr=   r?   rg   rB   r>   )rB   r>   r   )r   r   r`   r   r   rD   rD   rE   test_prudnikov_6!  s"      $&r   c               
   C   s   t dgdgsJ tj} | d|  d|  d|  fD ]}t |  g|gs0J q0|  | dd|  dd|  dd|  df	D ]@}|  | d|  d|  d|  ddddf	D ]}t |g|gsJ qqnd S )Nr=   rA   r?   r@   rB   r>   rG   )rb   r   rC   )r   r`   r   rD   rD   rE   test_prudnikov_7;  s    ((r   c               	   C   s  t j} dD ]}dD ]L}td|d D ]8}| dd|  dd|  dfD ]}t||g||gs@J q@q$qd|  d|  fD ]B}| dd|  dd|  dfD ]$}dD ]}t||g||gsJ qqqpq
|  | d|  d|  fD ]}dD ]B}| dd|  dd|  dfD ]$}dD ]}t||g||gsJ qqq| d|  d|  fD ]d}| d|  d|  dfD ]H}| dd|  dd|  dfD ](}||kr^t||g||gs^J q^qBq*qd S )Nrg   rB   r=   r>   r?   r   )r   ra   ZbiciZdirD   rD   rE   test_prudnikov_8G  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s2J q2d S )Nrc   rB   r>   r?   )r   rb   r   )irD   rD   rE   test_prudnikov_9b  s    r   c               	   C   sp  t j} |  | dd|  dd|  dd|  df	D ]2}dD ](}t|dD ]}t|g||gs@J q@q2q*dD ]@}| d|  d|  d|  fD ]"}dD ]}t|g||gsJ qq~qbd|  d|  d|  fD ]P}| ddd|  dd|  dfD ]0}t|g| |gsJ t|gd|  |gsJ qq| ddd|  dd|  dfD ]$}td|  gd|  |gs&J q&ttddgt jt jgslJ d S )	NrB   r=   r>   r?   r@   rG   r   r<   )r   rC   r   rb   r.   r   r   r   r`   rD   rD   rE   test_prudnikov_10j  s     ("r   c                   C   s6  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sJ t tddtddgtddtjdgsJ t tddtddgtddtdddgsJ 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s2J d S )Nr>   r=   rB   rG   r?   r@   )rb   r%   r   rC   r&   r.   rD   rD   rD   rE   test_prudnikov_11  s    *2(,02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sDJ t g tjtttj gs`J t g tddtttj gsJ t g tddtjtddgsJ t g tjtjdgsJ t g tjtdddgsJ t g tddtddtddgsJ t g ddtddgsJ t g ddtddgs4J t g dtddtddgsVJ t g tddtddtddgs~J t g dtddtddgsJ d S )Nr>   FrB   r=   rG   r?   r@   )rb   r%   r   rC   r.   rD   rD   rD   rE   test_prudnikov_12  s    $ "&"(r   c                  C   sV   t j} |  | fD ]@}| d|  d|  d|  fD ]"}dD ]}t||g|gs4J q4q,qd S )Nr=   r?   r@   r   r   r   rD   rD   rE   test_prudnikov_2F1  s
    r   c                  C   s  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sJJ t ttgtt tj gshJ t ttgtt tdd gsJ t ttgtt d d gsJ t ttgtt d d gsJ t ttgtt d gsJ t ttgtt d gsJ t ttgdt gsJ t ttgtjgs6J t ttgtddgsRJ t tdt gtgslJ 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sJ tj} t | d dg| d d gs8J t | d dg| d d	 gsZJ t | d dg| d d
 gs|J t | d dg| d d gsJ t | d dg| d d gsJ t | d dg| d d gsJ 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sHJ t | d d dg| d d gsnJ 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sRJ t | d d dg| d d gsxJ 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s6J t | d d dg| d d gs\J t | d d	 dg| d d gsJ d S )NrB   r<   r=   r>   rG      rc   rA   r@      r?      r            )rb   r%   r&   r'   r   rC   r.   ZOne)orD   rD   rE   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s8J t tttdd ttdd gtddtddgspJ t tttdd ttdd gtddtddgsJ t tttdd ttdd gttdd dt d d gsJ 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snJ 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s6J t tddtdddgtddtd
dgshJ t tjddgtddtddgsJ d S )NrB   r=   r>   rG   r?   r<   r   rc   r  r  r@   r  rA   )rb   r%   r.   r   rC   rD   rD   rD   rE   test_prudnikov_fail_3F2  s    888B$.2222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sVJ t tddgtjtddgsxJ t tddgtddtddgsJ t dgtddtddgsJ t dgtddtddgsJ t dgtddtddgsJ 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sZJ t g tddtdgsxJ 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 )
NrB   r>   r<   rG   r?   r=   r@   gUUUUUU?gUUUUUU?)rb   r%   r&   r.   r   rC   rD   rD   rD   rE   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<   rB   )r"   r$   r   r   rD   rD   rE   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sDJ d S )N)re   rd   ro   )r  rB      )r  ire   r<   rA   )r"   r   r.   r
  rD   rD   rE   test_omgissue_203   s    r  N)TrB   F)r<   )T)Z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   Zsympy.concrete.summationsr   Zsympy.core.containersr   Zsympy.core.exprr   rk   r   Zsympy.core.singletonr   r   r   Z(sympy.functions.combinatorial.factorialsr    Z$sympy.functions.elementary.piecewiser!   Zsympy.functions.special.hyperr"   r#   Z	sympy.abcr$   r%   r&   r'   Zsympy.testing.pytestr(   r)   r*   r+   r,   r-   rW   r.   r/   Z&sympy.functions.elementary.exponentialr0   r1   r2   Z%sympy.functions.elementary.hyperbolicr3   Z(sympy.functions.elementary.miscellaneousr4   Z(sympy.functions.elementary.trigonometricr5   r6   r7   Zsympy.functions.special.besselr8   r   r9   r   r:   r;   rF   rK   rb   rf   rh   rl   rp   rq   ru   ry   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  rD   rD   rD   rE   <module>   s   d		


	

 

B

&
(	.	









	
6

