o
    g6A                     @   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   _/var/www/visachat/venv/lib/python3.10/site-packages/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td	d
tks(J tddtdd} | jtdddks;J | jtddddksGJ tddt}|jtddksWJ |jtdddksbJ |jtksiJ |jdu spJ tddt}|jtddksJ |jtdddksJ |jtksJ |jdu sJ t	tt t tt
ttsJ t	ttdtdt  tdt tsJ tt t t ft t ft}t|tsJ td\}}}}}t||f|||ftt|| || |  t|d |d f|d |d |d ft ksJ ttgg tttttgg ttks%J ddlm} t|tg|tg|tttgtg|tksFJ tddtddjtu sTJ 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   )r#   r   r#      r   r#   r'   Fevaluater'   r#   r   r'         r.   r/   T)r.   r'   r/   )r#   r#   z
a1:3, b1:4r   
polar_lift)r   	TypeErrorr   r   r   apbqargumentis_commutativetnr
   r   randcplxtdr	   r   r   $sympy.functions.elementary.complexesr1   r   r   func)uha1a2b1b2b3r1   r   r   r    
test_hyper   s@   & *<
.
 rC   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.abcrD   rE   rF   sympy.core.functionrG   r8   r   r   absnr   r
   r   r   )rD   rE   rF   rG   r>   r@   c1r   r   r    test_expand_funcI   s"   4(0rO   c                 C   s@   ddl m} | |}|s| S t|dksJ | | |iS )Nr   Dummyr#   )sympy.core.symbolrQ   atomslenxreplacepop)exprsymrQ   dumr   r   r    replace_dummy[   s   
rZ   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   )SumrP   )RisingFactorial	factorialr   r,   r)   r   r'   rI   )r'   )sympy.concrete.summationsr[   rR   rQ   (sympy.functions.combinatorial.factorialsr\   r]   rZ   r   r   rewriter   r   )r[   rQ   r\   r]   _kr   r   r    test_hyper_rewrite_sumd   s   
rc   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.   rI   r   )r   r#   r   )r^   r#   r   )r^   r   r^   )r^   r   re   )r^   r#   r'   r   )r^   r   r'   r.   TF)r   r   radius_of_convergencer   convergence_statementr   r   r   r    test_radius_of_convergenceq   s    rh   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.   ri   r   r   r   r    r$      s    )r,   rj   )rk   )r/   r#   r   r'   r.   r/   r,   r-   )         	   )
               rl   rm   rn   ro   rp   rq   rr   rs   rt   K   r^   TFr   c                   S   s   t dtfdftS )N)r'   r#   r(   r   r   )r   r   r   r   r   r   r    r$      s    c                   S   r"   )Nrv   )r&   rw   )r   r   r   r   r   r    r$      r%   za1:3, b1:3, c1:3, d1:3r0   )rD   rE   rF   ds))r   r2   r   r   r   anr3   aotherbmr4   botherr5   nudeltar6   	is_numberr   Halfr7   r
   r   r   r   r   
ValueErrorr8   r   r9   r	   r   r   r:   r1   rJ   rD   rE   rF   rx   ry   	integrandr   )gr>   r?   r@   rA   rN   c2d1d2plrD   rE   rF   rx   ry   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   r8   r9   r   )yrD   rE   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   r5   )r   rD   rE   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   )rD   r   r    _expr_small      z(test_hyperrep.<locals>.myrep._expr_smallc                    r   r   r   r   )rE   r   r    _expr_small_minus  r   z.test_hyperrep.<locals>.myrep._expr_small_minusc                        | S r   r   r   r   rM   )rF   r   r    	_expr_big     z&test_hyperrep.<locals>.myrep._expr_bigc                    r   r   r   r   )rx   r   r    _expr_big_minus	  r   z,test_hyperrep.<locals>.myrep._expr_big_minusN)__name__
__module____qualname__classmethodr   r   r   r   r   rD   rE   rF   rx   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?rH   c                    s6   |   | d}|  |  tS )Nr   )subsra   replacer
   )r;   rD   rE   rv)r   r   r   r    dosubs-  s   z(test_hyperrep.<locals>.t.<locals>.dosubs)	r   r#   r   r'   r.   r^   re   rd   r#   T)r7   ra   r   r   r   r   r   r   r   r
   rL   rM   )r;   hypr   rW   r   rM   expr1expr2r   )r   r    t  s8   
( *&(ztest_hyperrep.<locals>.tre   )sympy.functions.special.hyperr   r   r   r   r   r   r   r   r   r   r   r   r   r   $sympy.functions.elementary.piecewiser   r	   ra   rL   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   rE   rF   rx   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   rH   gvIh%<=r   r'   g      ?g      ?g      ?r   ))r   r   ))r   r   r   r   T)chop)r   r   sympy.functions.special.besselr   rJ   r   r8   r   r   r   r   r   rL   rM   r   r   r   r
   )r   r   r   rD   argr   r   x_k_epsrW   r   r   r    test_meijerg_evalK  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dtdd| |ddksCJ d S )Nzk, xr&   r.   r'   r/   r   r#   ro      Q   i`  rl   r   )r	   r   r   seriesr   r   )r   r   r   r   r    test_limitsk  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Oner;   doit)rD   r@   rA   rF   r   r   fr   r   r    test_appellf1t  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#   )rK   r   r	   r   r   )r   rD   r@   rA   rF   r   r   r   r   r   r    test_derivative_appellf1  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 ttd d tdd fddt td  tdt td d  dtd  d  dtd  d  dtd  d  ttd
  ksJ t	d ttd d tdd fddt td   tt	d t	t d  t	td  d  dt	 td  d  dt	 td  d  dt	 td  d  ttd
  ksJ d S )Nza1 b1 a2 b2r,   rI   r   rm   r#   r'   r.      rl   ih  r&      @   ]   r/   rn      )
r	   r   r   _eval_nseriesr   r
   r   r   nseriesr   )r>   r@   r?   rA   r   r   r    test_eval_nseries  s    22N:jr   N)<sympy.core.containersr   rK   r   sympy.core.numbersr   r   r   r   sympy.core.singletonr   rR   r	   r   r
   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   'sympy.functions.special.gamma_functionsr   r   r   r   r   sympy.series.orderr   rJ   r   r   r   sympy.series.limitsr   sympy.testing.pytestr   r   sympy.core.randomr   r8   r   r7   r   r9   r!   rC   rO   rZ   rc   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r    <module>   sB    .	C
Y
		