U
    ZÊ¹j6A  ã                   @   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*t‚d S )N© é   )r   r   ÚdiffÚAssertionError)Úpr   r   úg/var/www/html/bwave/python/venv/lib/python3.8/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s4t‚tddtƒtd	d
tƒksPt‚tddtdd�} | jtdddƒksvt‚| jtddddƒksŽt‚tddtƒ}|jtddƒks®t‚|jtdddƒksÄt‚|jtksÒt‚|j	dksàt‚tddtƒ}|jtddƒk�st‚|jtdddƒk�st‚|jtk�s*t‚|j	dk�s:t‚t
ttƒ tƒ tƒttƒtƒ�s\t‚t
ttdtdƒt ƒ tdt ƒtƒ�sˆt‚ttƒ tƒ tƒ ftƒ tƒ ftƒ}t|tƒ�s¸t‚tdƒ\}}}}}t||f|||ftƒ t¡|| || |  t|d |d f|d |d |d ftƒ k�s*t‚ttgg tƒ t¡tttgg tƒtƒk�sXt‚ddlm} t|tƒg|tƒg|tƒƒttgtg|tƒƒk�sšt‚tddtdd�jtk�s¶t‚d S )Nc                   S   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   r   ÚapÚbqÚargumentÚis_commutativeÚtnr
   r   ÚrandcplxÚtdr	   r   r   Ú$sympy.functions.elementary.complexesr1   r   r   Úfunc)ÚuÚhÚa1Úa2Úb1Úb2Zb3r1   r   r   r!   Ú
test_hyper   sD    &", 
 ÿ<ÿ
.ÿ
rB   c                  C   s€  ddl m} m}m} ddlm} tƒ tƒ tƒ d   }}}|t| |g|gdƒƒt|ƒt|  | | ƒ t|  | ƒt| | ƒ  ksŠt	‚t
|t||g|gdƒƒ ¡ t||g|gdƒ ¡  ƒdk sÆt	‚|tg g tƒƒttƒksât	‚|tdddgg tƒƒtdddgg tƒk�st	‚|tddgg gdgdggtƒƒttd ƒk�sBt	‚|tddgg gg g gtƒƒtddgg gg g gtƒk�s|t	‚d S )	Nr   )ÚaÚbÚc)Úexpand_funcr/   r#   ç»½×Ùß|Û=r   r'   )Ú	sympy.abcrC   rD   rE   Úsympy.core.functionrF   r8   r   r   r   ÚabsÚnr   r
   r   r   )rC   rD   rE   rF   r>   r@   Úc1r   r   r!   Útest_expand_funcI   s"    4ÿÿÿ.2ÿrM   c                 C   s@   ddl m} |  |¡}|s| S t|ƒdks.t‚|  | ¡ |i¡S )Nr   ©ÚDummyr#   )Úsympy.core.symbolrO   ZatomsÚlenr   ZxreplaceÚpop)ÚexprÚsymrO   Zdumr   r   r!   Úreplace_dummy[   s    
rU   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|t‚td
dtƒ 
| ¡td
dtƒksžt‚d S )Nr   )ÚSumrN   )ÚRisingFactorialÚ	factorialr   r,   r)   r   r'   ©r#   r   r'   )éÿÿÿÿr'   )Zsympy.concrete.summationsrV   rP   rO   Z(sympy.functions.combinatorial.factorialsrW   rX   rU   r   r   Úrewriter   r   r   )rV   rO   rW   rX   Z_kr   r   r!   Útest_hyper_rewrite_sumd   s    ÿÿÿ
ÿr\   c                   C   sž  t ddgtƒjdkst‚t dddgtƒjtks2t‚t ddgtƒjdksJt‚t ddgtƒjtksbt‚t dd	gtƒjdkszt‚t d
dgtƒjtks’t‚t dddgtƒjdks¬t‚t dddgddgtƒjdksÌt‚t ddgddgtƒjtksêt‚t dddgdgtƒjdk�s
t‚t dg tƒjtk�s"t‚t ddgdgdƒjdk�s@t‚t ddgdgdƒjdk�s^t‚t ddgdgdƒjdk�s|t‚t ddgdgdƒjdk�sšt‚d S )Nr,   r'   r#   r.   rY   r   )r   r#   r   )rZ   r#   r   éüÿÿÿ)rZ   éþÿÿÿr   rZ   )rZ   r   r^   r   )rZ   r   r'   r.   TF)r   r   Zradius_of_convergencer   r   Zconvergence_statementr   r   r   r!   Útest_radius_of_convergenceq   s      r_   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sNt‚tddddtƒ} | jtddƒksrt‚| jtdddd	d
ƒksŒt‚| jtdd	d
ƒks¢t‚| j	tddddƒksºt‚| j
tdddddddddƒ	ksÜt‚| jtdddddƒksöt‚| jtk�st‚| jdk�st‚| jdk�s&t‚| jdk�s6t‚| jdk�sFt‚tg g gtjgdggdƒjdk�slt‚tddgdgd	gd
gtƒjtjk�s”t‚tttƒ tƒ tdƒtƒ t ƒttƒtƒ�sÂt‚tttƒttƒ tƒ tdƒttjƒtd d	 ƒ ttƒtƒ�st‚tttddƒtƒ tdƒtdƒtƒtdt ƒtƒ�s8t‚t tdd„ ƒ t tdd„ ƒ ttƒ ftƒ dt  ftƒ tƒ tƒ ftƒ} t| tƒ�sŽt‚ttƒ tƒ ftƒ tƒ tƒ ftƒ} t| tƒ�s¾t‚ttƒ tƒ ttƒ ƒttƒ tƒ ƒtƒ} t| tƒ�sòt‚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�s†t‚tttgg g g tƒ t¡ttttgg g g tƒtƒk�sÀt‚dd l m!}	 t|	|ƒg|	|ƒg|	|ƒg|	|ƒg|	tƒƒt|g|g|g|g|	tƒƒk�st‚dd!l"m#}
m$}m%}m&}m'} t|
g|g|g|gtƒ (|¡t| t)|| ƒ t)|
 | d ƒ t)|| ƒt)| | d ƒ  k�sžt‚d S )"Nc                   S   s
   t dtƒS )Nr#   ©r   r   r   r   r   r!   r$   …   r%   ztest_meijer.<locals>.<lambda>c                   S   s   t dddtƒS )N)r&   r(   ©r'   ©r.   r`   r   r   r   r!   r$   †   r%   )r,   ra   )rb   )r/   r#   r   r'   r.   r/   r,   r-   )é   é   é   é	   )é
   é   é   é   é   rc   rd   re   rf   rg   rh   ri   rj   rk   éK   rZ   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$   ¤   r%   c                   S   s   t ddtƒS )Nrm   )r&   rn   )r   r   r   r   r   r!   r$   ¥   r%   za1:3, b1:3, c1:3, d1:3r0   )rC   rD   rE   ÚdÚs)*r   r2   r   r   r   r   Zanr3   ZaotherZbmr4   Zbotherr5   ÚnuÚdeltar6   Z	is_numberr   ÚHalfr7   r
   r   r   r   r   Ú
ValueErrorr8   r   r9   r	   r   r   r:   r1   rH   rC   rD   rE   ro   rp   Z	integrandr   )Úgr>   r?   r@   rA   rL   Úc2Zd1Zd2ÚplrC   rD   rE   ro   rp   r   r   r!   Útest_meijer„   sˆ    
 ÿ"&(.  
ÿ ÿ
 
 ÿ

 ÿ
 ÿ ÿ$"&ÿÿÿ
ÿ
*ÿ
Bÿrx   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 dddgddtdgg tƒ  ksht‚tƒ } d}tt tgg g g | ƒtƒsŽt‚tt td gg g g | ƒtƒs®t‚tt g tgg g | ƒtƒsÊt‚tt g g tgg | ƒtƒsæt‚tt g g g tg| ƒtƒ�st‚tt tg|g|d gg | ƒtƒ�s*t‚tt tg|d g|gg | ƒtƒ�sPt‚tt t|gg g |d g| ƒtƒ�svt‚tt t|d gg g |g| ƒtƒ�sœt‚tddƒ}tt |d g|g|d tg|g| ƒtƒ�sÔt‚d S )Nr#   r   r   r/   r'   )	r   r   r   r   r   r   r8   r9   r   )ÚyrC   rD   r   r   r!   Útest_meijerg_derivativeÇ   s$      ÿÿ &&&&
rz   c                   C   sÞ   t g dgdgg tƒ ¡ dt ks$t‚t dgg g dgtƒ ¡ dt ksHt‚t g g dgg tƒ ¡ dt ksjt‚t g g dgtjgtƒ ¡ dt ks�t‚t g g tjgdgtƒ ¡ dt ks¶t‚t ddgg dgdgtƒ ¡ tksÚt‚d S )Nr#   r   r   r.   )r   r   Z
get_periodr   r   r   rs   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:t‚tdgg |ƒj|ksRt‚tdgdg|ƒj|kslt‚tddgdg|ƒj|ksˆt‚tddgdg| dt t ƒƒjdks°t‚d S )Nr   ©Ú	exp_polarr   r#   )Ú&sympy.functions.elementary.exponentialr}   r   r   r   r   r5   r   )r}   rC   rD   r   r   r!   Útest_hyper_unpolarifyæ   s    r   c                     sV  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s¨t‚|ˆtt ƒ| ƒ d¡|dt|ƒd	kfˆd
fƒksàt‚|ˆdt t ƒ| ƒ d¡|ˆt|ƒd	kfˆ d
fƒk�st‚|ˆdt t ƒ| ƒ d¡|ˆt|ƒd	kfˆd
fƒk�s\t‚|ˆdt t ƒ| ƒ d¡|dˆ t|ƒd	kfˆ d
fƒk�sžt‚|ˆdt t ƒ| ƒ d¡|dˆ t|ƒd	kfˆd
fƒk�sàt‚||ƒ d¡ˆ k�søt‚|ˆtt ƒ| ƒ d¡ˆk�st‚‡fdd„}td	dƒ‰ |||ƒttjd	gtddƒg|ƒ|ƒ�s^t‚||ˆ |ƒtˆ  gg |ƒ|ƒ�s‚t‚||ˆ |ƒtˆ ˆ tj gdˆ  g|ƒ|ƒ�s²t‚|||ƒ| td	d	gdg|ƒ |ƒ�sÜt‚|||ƒttjtjgtddƒg|ƒ|ƒ�s
t‚|||ƒtd	d	gtddƒg|ƒ|ƒ�s4t‚||ˆ |ƒtˆ  tjˆ  gtjg|ƒ|ƒ�sdt‚||ˆ |ƒd| dˆ  d	  tˆ  tj ˆ  gtjg|ƒ |¡ |ƒ�s°t‚||	|ƒ| d ttddƒd	d	gddg|ƒ |ƒ�sèt‚||
ˆ |ƒtˆ  ˆ gtjg|ƒ|ƒ�st‚||ˆ |ƒdˆ  | td	ˆ  d	ˆ  gtddƒg|ƒ |ƒ�sRt‚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   ˆ S ©Nr   ©Úclsr   )rC   r   r!   Ú_expr_smallý   s    z(test_hyperrep.<locals>.myrep._expr_smallc                    s   ˆ S r�   r   rŽ   )rD   r   r!   Ú_expr_small_minus  s    z.test_hyperrep.<locals>.myrep._expr_small_minusc                    s   ˆ | S r�   r   ©r�   r   rK   )rE   r   r!   Ú	_expr_big  s    z&test_hyperrep.<locals>.myrep._expr_bigc                    s   ˆ | S r�   r   r’   )ro   r   r!   Ú_expr_big_minus	  s    z,test_hyperrep.<locals>.myrep._expr_big_minusN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr�   r‘   r“   r”   r   ©rC   rD   rE   ro   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�s0dS t |  d¡ ˆ ˆtt ƒˆ  ¡ ˆt	¡|  ˆ ˆtt ƒˆ  ¡ d¡ˆ tddƒtddƒtjtjd�s–dS |  ˆ ˆtt ƒˆ  ¡ d¡}t
| ˆ d¡ ¡ | ˆ d¡ ¡  ƒd	kràdS ‡‡ fd
d„}dD ]Â}|| dt t | tt d ƒ}|| dt t | tt  t t d ƒ}t ||ˆ ƒ�sT dS || dt t |d  t t d ƒ}|| dt t | tt  tt d ƒ}t ||ˆ ƒsò dS qòdS )z2 Test that func is a valid representation of hyp. rœ   rZ   r   r™   Fr›   g     ð?g÷ÿÿÿÿÿï?rG   c                    s6   |   ˆˆ |ƒˆ ¡ d¡}|  ˆˆ |ƒˆ ¡ ˆ t¡S )Nr›   )Úsubsr[   Úreplacer
   )r;   rC   rD   Úrv)r}   r   r   r!   Údosubs-  s    z(test_hyperrep.<locals>.t.<locals>.dosubs)	r   r#   r   r'   r.   rZ   r^   éýÿÿÿr]   r#   T)r7   r[   r   r   rs   r�   r   r   rž   r
   rJ   rK   )r;   Zhypr   rS   r    rK   Úexpr1Úexpr2r|   )r   r!   Út  sJ       ÿ
 ÿ ÿ    ü( *&(ztest_hyperrep.<locals>.tr^   )Úsympy.functions.special.hyperr€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   r~   r}   Z$sympy.functions.elementary.piecewiserŒ   r	   r[   rJ   r   r   r   r   r   r   rs   r   )r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rš   r¤   r   )rC   rD   rE   ro   r}   r!   Útest_hyperrepñ   sN    8,ÿÿ
ÿ
ÿ
ÿ
$"
,$0*.*0
6 ÿ
8*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 ]X}d	D ]N}t|| jt|t|id
�ƒdk s¾t‚t|| jt|t| id
�ƒdk s–t‚q–qŽd}	| t|¡}dD ]’}dtddƒddtddƒddfD ]n}t|| jt|t||	 |||	 id
�ƒdk �sTt‚t|| jt|t| |	 || |	 id
�ƒdk �st‚�qqütdd| t
 t	 ƒd ƒtdd| t
t	 ƒd ƒ dtt	ƒ  }
|
t	tdƒ  jdd�dk�sðt‚d S )Nr   r|   )Úbesseli)Úlr#   r   r.   )ç      à?ç      ø?)g        gš™™™™™¹?g333333Ó?r©   gš™™™™™é?r#   g/Ý$@gš™™™™™.@)r�   rG   g‚vIhÂ%<=r©   r'   g      Ð?g      è?g      ð?rª   ))r©   r   ))r©   r   r©   r   T)Zchop)r~   r}   Zsympy.functions.special.besselr§   rH   r¨   r8   r   r   r   r   r   rJ   rK   r   r�   r   r   r
   )r}   r§   r¨   rC   Úargr¢   r£   Zx_Zk_ÚepsrS   r   r   r!   Útest_meijerg_evalK  s>    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sft‚tdtdd|ƒ |dƒdks†t‚d S )Nzk, xr&   r.   r'   r/   r   r#   rf   é   éQ   i`  rc   r   )r	   r   r   Zseriesr   r   r   )r   r   r   r   r!   Útest_limitsk  s
    $.ÿr°   c               	   C   sÂ   t dƒ\} }}}}}t| |||||ƒt| |||||ƒks<t‚t| |||||ƒt| |||||ƒksdt‚t| |||tjtjƒtjks„t‚t| |||tjtjdd�}|jtks¬t‚| ¡ tjks¾t‚d S )Nza b1 b2 c x yFr*   )r	   r   r   r   ZZeroZOner;   Zdoit)rC   r@   rA   rE   r   ry   Úfr   r   r!   Útest_appellf1t  s    (( r²   c               	   C   s  ddl m}  tdƒ\}}}}}}}| t||||||ƒ|ƒ|| t|d ||d |d ||ƒ | ksht‚| t||||||ƒ|ƒ|| t|d ||d |d ||ƒ | ks®t‚| t||||||ƒ|ƒdksÎt‚| t||||||ƒ|ƒtt||||||ƒ|ƒk�st‚d S )Nr   )r   za b1 b2 c x y zr#   )rI   r   r	   r   r   r   )r   rC   r@   rA   rE   r   ry   r   r   r   r!   Útest_derivative_appellf1  s    FF 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sbt‚ttƒ tdd ¡t| |f| |ftƒ tdd ¡ks–t‚t| |f||ftƒ tdd ¡t| |f||ftƒttd ƒ ksØt‚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�sbt‚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t‚d S )Nza1 b1 a2 b2r,   rY   r   rd   r#   r'   r.   é   rc   ih  r&   é   é@   é]   r/   re   é€   )r	   r   r   Z_eval_nseriesr   r   r
   r   r   Znseriesr   )r>   r@   r?   rA   r   r   r!   Útest_eval_nseriesˆ  s     2ÿÿÿ2Nÿ
:jÿr¹   N)<Zsympy.core.containersr   rI   r   Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   rP   r	   r~   r
   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Z'sympy.functions.special.gamma_functionsr   r¥   r   r   r   Zsympy.series.orderr   rH   r   r   r   Zsympy.series.limitsr   Zsympy.testing.pytestr   r   Zsympy.core.randomr   r8   r   r7   r   r9   r"   rB   rM   rU   r\   r_   rx   rz   r{   r   r¦   r­   r°   r²   r³   r¹   r   r   r   r!   Ú<module>   s@   .	C
Y
		