o
    *ήc>                     @   sl  d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ d dlmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z'm(Z)m*Z+ dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3d d! Z4d"d# Z5e$d$d% Z6e$d&d' Z7d(d) Z8d*d+ Z9d,d- Z:d.d/ Z;d0S )1    )Tuple)
Derivative)IRationaloopi)S)symbols)explog)sqrt)cos)gamma)appellf1hypermeijerg)O)xzk)limit)raisesslow)random_complex_numberverify_numericallytest_derivative_numericallyc                  C   s.   t ddtd } | t| d t ksJ d S )N    )r   r   diff)pr   r   O/tmp/pip-target-vg8gfxp4/lib/python/sympy/functions/special/tests/test_hyper.pytest_TupleParametersBase   s   r!   c                  C   s  t tdd  tddtttddtdtksJ tddt} | jtddks*J | jtdd	d
ks5J | jtks<J | jdu sCJ t	tt t tt
ttsSJ t	ttdtdt  tdt tshJ tt t t ft t ft} t| tsJ td\}}}}}t||f|||ftt|| || |  t|d |d f|d |d |d ft ksJ ttgg tttttgg ttksJ ddlm} t|tg|tg|tttgtg|tksJ tddtddjtu sJ d S )Nc                   S      t ddtS )N   r   )r   r   r   r   r   r    <lambda>       ztest_hyper.<locals>.<lambda>r#   r   r#   r#   r            r)   r*   r+   T)r#   r#   z
a1:3, b1:4r   
polar_liftFevaluate)r   	TypeErrorr   r   r   apbqargumentis_commutativetnr
   r   randcplxtdr	   r   r   $sympy.functions.elementary.complexesr-   r   r   func)ha1a2b1b2b3r-   r   r   r    
test_hyper   s.   & *<,r@   c                  C   sv  ddl m} m}m} ddlm} t t t d }}}|t| |g|gdt|t|  | |  t|  | t| |   ksEJ t	|t||g|gd
 t||g|gd
  dk scJ |tg g tttksqJ |tg dg ttg dg tksJ |tddgg gdgdggtttd ksJ |tddgg gg g gttddgg gg g gtksJ d S )Nr   )abc)expand_funcr+   r#   绽|=r#   r   r)   )	sympy.abcrA   rB   rC   sympy.core.functionrD   r6   r   r   absnr   r
   r   r   )rA   rB   rC   rD   r;   r=   c1r   r   r    test_expand_func@   s"   4(0rL   c                 C   s@   ddl m} | |}|s| S t|dksJ | | |iS )Nr   Dummyr#   )sympy.core.symbolrN   atomslenxreplacepop)exprsymrN   dumr   r   r    replace_dummyR   s   
rW   c                  C   s   ddl m}  ddlm} ddlm}m} |d}ttddt	
| || t	| || |d| |d	| |dtfks>J td
dt
| td
dtksOJ d S )Nr   )SumrM   )RisingFactorial	factorialr   r&   )r#   r)   r   r)   rF   )r)   )sympy.concrete.summationsrX   rO   rN   (sympy.functions.combinatorial.factorialsrY   rZ   rW   r   r   rewriter   r   )rX   rN   rY   rZ   _kr   r   r    test_hyper_rewrite_sum[   s   
r`   c                   C   s  t ddgtjdksJ t dddgtjtu sJ t ddgtjdks%J t ddgtjtu s1J t dd	gtjdks=J t d
dgtjtu sIJ t dddgtjdksVJ t g dddgtjdkseJ t ddgddgtjtu stJ t g ddgtjdksJ t dg tjtu sJ t ddgdgdjdksJ t ddgdgdjdksJ t ddgdgdjdksJ t ddgdgdjdksJ d S )Nr&   r)   r#   r*   rF   r   )r   r#   r   )r[   r#   r   )r[   r   r[   )r[   r   rb   )r[   r#   r)   r   )r[   r   r)   r*   TF)r   r   radius_of_convergencer   convergence_statementr   r   r   r    test_radius_of_convergenceh   s    re   c                  C   s  t tdd  t tdd  tddtttddtdtd	td
tks'J tddddt} | jtddks9J | jtdddd	d
ksFJ | jtdd	d
ksQJ | jtddddks]J | j	tddddddddd	ksnJ | j
tdddddks{J | jtksJ | jdksJ | jdksJ | jdu sJ | jdu sJ tg g gtjgdggdjdu sJ tddgdgd	gd
gtjtjksJ ttt t tdt t tttsJ ttttt t tdttjtd d	  tttsJ tttddt tdtdttdt tsJ t tdd  t tdd  tt ft dt  ft t t ft} t| ts>J tt t ft t t ft} t| tsVJ tt t tt tt t t} t| tspJ td\}}}}}}}}t||f||f||f||fttt|d |f||f||f||ft|d t||f||f||f||ft  t ksJ tttgg g g ttttttgg g g ttksJ dd lm }	 t|	|g|	|g|	|g|	|g|	tt|g|g|g|g|	tksJ dd!l!m"}
m#}m$}m%}m&} t|
g|g|g|gt'|t| t(||  t(|
 | d  t(|| t(| | d   ksFJ d S )"Nc                   S   s
   t dtS )Nr#   r   r   r   r   r   r    r$   |   s   
 ztest_meijer.<locals>.<lambda>c                   S   s   t dddtS )N)r'   r   r)   r*   rf   r   r   r   r    r$   }   s    )r&   rh   )ri   )r+   r#   r   r)   r*   r+   r&   r(   )         	   )
               rj   rk   rl   rm   rn   ro   rp   rq   rr   K   r[   TFr   c                   S   s   t dtfdftS )N)r)   r#   rg   r   r   )r   r   r   r   r   r   r    r$      s    c                   S   r"   )Nrt   )r'   ru   )r   r   r   r   r   r    r$      r%   za1:3, b1:3, c1:3, d1:3r,   )rA   rB   rC   ds))r   r0   r   r   r   anr1   aotherbmr2   botherr3   nudeltar4   	is_numberr   Halfr5   r
   r   r   r   r   
ValueErrorr6   r   r7   r	   r   r   r8   r-   rG   rA   rB   rC   rv   rw   	integrandr   )gr;   r<   r=   r>   rK   c2d1d2plrA   rB   rC   rv   rw   r   r   r    test_meijer{   sz   
 "$&, 
$"&

*
Br   c               
   C   s  t g ddgddtgg ttttt g ddgddtgg t dt g g dddtdgg t  ks3J t } d}tt tgg g g | tsFJ tt td gg g g | tsVJ tt g tgg g | tsdJ tt g g tgg | tsrJ tt g g g tg| tsJ tt tg|g|d gg | tsJ tt tg|d g|gg | tsJ tt t|gg g |d g| tsJ tt t|d gg g |g| tsJ tdd}tt |d g|g|d tg|g| tsJ d S )Nr#   r   r   )r#   r#   r#   r+   r)   )r   r   r   r   r   r6   r7   r   )yrA   rB   r   r   r    test_meijerg_derivative   s$     $$$$
0r   c                   C   s   t g dgdgg t dt ksJ t dgg g dgt dt ks$J t g g dgg t dt ks5J t g g dgtjgt dt ksHJ t g g tjgdgt dt ks[J t ddgg dgdgt tu smJ d S )Nr#   r   r   r*   )r   r   
get_periodr   r   r   r   r   r   r   r    test_meijerg_period   s   $$"

(r   c                  C   s   ddl m}  | dt t t }t}tg g |j|ksJ tdgg |j|ks)J tdgdg|j|ks6J tddgdg|j|ksDJ tddgdg| dt t jdksXJ d S )Nr   	exp_polarr   r#   )&sympy.functions.elementary.exponentialr   r   r   r   r   r3   )r   rA   rB   r   r   r    test_hyper_unpolarify   s   ,r   c                     sL  ddl m} m}m}m}m}m}m}m}m	}m
}	m}
m} ddlm ddlm} td\ }G  fddd| }||d|dt|d	kf d
fksTJ |tt | d|dt|d	kfd
fkspJ |dt t | d|t|d	kf d
fksJ |dt t | d|t|d	kfd
fksJ |dt t | d|d t|d	kf d
fksJ |dt t | d|d t|d	kfd
fksJ ||d ksJ |tt | dks	J fdd}td	d |||ttjd	gtddg||s*J || |t  gg ||s<J || |t  tj gd  g||sTJ |||| td	d	gdg| |siJ |||ttjtjgtddg||sJ |||td	d	gtddg||sJ || |t  tj  gtjg||sJ || |d| d  d	  t  tj   gtjg|| |sJ ||	|| d ttddd	d	gddg| |sJ ||
 |t   gtjg||sJ || |d  | td	  d	  gtddg| |s$J d S )Nr   )HyperRepHyperRep_atanhHyperRep_power1HyperRep_power2HyperRep_log1HyperRep_asin1HyperRep_asin2HyperRep_sqrts1HyperRep_sqrts2HyperRep_log2HyperRep_cosasinHyperRep_sinasinr   )	Piecewisez	a b c d zc                       sL   e Zd Ze fddZefddZefddZefddZd	S )
ztest_hyperrep.<locals>.myrepc                        S Nr   clsr   )rA   r   r    _expr_small      z(test_hyperrep.<locals>.myrep._expr_smallc                    r   r   r   r   )rB   r   r    _expr_small_minus   r   z.test_hyperrep.<locals>.myrep._expr_small_minusc                        | S r   r   r   r   rJ   )rC   r   r    	_expr_big      z&test_hyperrep.<locals>.myrep._expr_bigc                    r   r   r   r   )rv   r   r    _expr_big_minus   r   z,test_hyperrep.<locals>.myrep._expr_big_minusN)__name__
__module____qualname__classmethodr   r   r   r   r   rA   rB   rC   rv   r   r    myrep   s    r   nonrepr#   Tr   r)   r*   r+   nonrepsmallc              	      s  t | d| tddtddtjtjdsdS t | d tt   t	|  tt   d tddtddtjtjdsKdS |  tt   d}t
| d | d  d	krpdS  fd
d}dD ]`}|| dt t | tt d }|| dt t | tt  t t d }t || s dS || dt t |d  t t d }|| dt t | tt  tt d }t || s dS qydS )z2 Test that func is a valid representation of hyp. r   r[   r   r   Fr   g     ?g?rE   c                    s6   |   | d}|  |  tS )Nr   )subsr^   replacer
   )r9   rA   rB   rv)r   r   r   r    dosubs$  s   z(test_hyperrep.<locals>.t.<locals>.dosubs)	r   r#   r   r)   r*   r[   rb   ra   r#   T)r5   r^   r   r   r   r   r   r   r   r
   rI   rJ   )r9   hypr   rT   r   rJ   expr1expr2r   )r   r    t  s8   
( *&(ztest_hyperrep.<locals>.trb   )sympy.functions.special.hyperr   r   r   r   r   r   r   r   r   r   r   r   r   r   $sympy.functions.elementary.piecewiser   r	   r^   rI   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rA   rB   rC   rv   r   r    test_hyperrep   sL   8,$
",$0*.*0
8
8*Dr   c                  C   s  ddl m}  ddlm} ddlm} t }t| tt	 t
  }t	tg |d d gg|d g| d |d d gg|d d  }|||}dD ],}d	D ]'}t|| jt|t|id
dk s_J t|| jt|t| id
dk srJ qKqGd}	|t|}dD ]F}dtddddtddddfD ]4}t|| jt|t||	 |||	 id
dk sJ t|| jt|t| |	 || |	 id
dk sJ qq~tdd| t
 t	 d tdd| t
t	 d  dtt	  }
|
t	td  jdddksJ d S )Nr   r   )besseli)lr#   r   r*   )      ?      ?)g        g?g333333?r   g?r#   g/$@g.@)r   rE   gvIh%<=r   r)   g      ?g      ?g      ?r   ))r   r   ))r   r   r   r   T)chop)r   r   sympy.functions.special.besselr   rG   r   r6   r   r   r   r   r   rI   rJ   r   r   r   r
   )r   r   r   rA   argr   r   x_k_epsrT   r   r   r    test_meijerg_evalB  sB   B
$("



$r   c                  C   s   t d\} }tdtddtddf| d | dd| d  d	  d
| d  d  t| d  ks3J ttdddd| |dtdddksHJ tdtdd| |ddksXJ d S )Nzk, xr'   r*   r)   r+   r   r#   rm      Q   i`  rj   r   r   r   )r   r   )r'   r   )r	   r   r   seriesr   r   r   )r   r   r   r   r    test_limitsb  s   $.
$r   c               	   C   s   t d\} }}}}}t| |||||t| |||||ksJ t| |||||t| |||||ks2J t| |||tjtjtju sBJ t| |||tjtjdd}|jtu sVJ | tju s_J d S )Nza b1 b2 c x yFr.   )r	   r   r   ZeroOner9   doit)rA   r=   r>   rC   r   r   fr   r   r    test_appellf1m  s   (( r   c               	   C   s  ddl m}  td\}}}}}}}| t||||||||| t|d ||d |d || | ks4J | t||||||||| t|d ||d |d || | ksWJ | t|||||||dksgJ | t|||||||tt|||||||ksJ d S )Nr   )r   za b1 b2 c x y zr#   )rH   r   r	   r   r   )r   rA   r=   r>   rC   r   r   r   r   r   r    test_derivative_appellf1x  s   FF 8r   c                  C   s   t d\} }}}tddtd tdd dtd d  td d	  td
 d  ttd  ks1J tttdd t| |f| |fttdd ksKJ t| |f||fttdd t| |f||ftttd  kslJ d S )Nza1 b1 a2 b2r&   rF   r   rk   r#   r)   r*      rj   ih  )r	   r   r   _eval_nseriesr   r
   r   )r;   r=   r<   r>   r   r   r    test_eval_nseries  s   R4Fr   N)<sympy.core.containersr   rH   r   sympy.core.numbersr   r   r   r   sympy.core.singletonr   rO   r	   r   r
   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   'sympy.functions.special.gamma_functionsr   r   r   r   r   sympy.series.orderr   rG   r   r   r   sympy.series.limitsr   sympy.testing.pytestr   r   sympy.core.randomr   r6   r   r5   r   r7   r!   r@   rL   rW   r`   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r    <module>   sB    %	C
Y
	