U
    L?h6A  ã                   @   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   úZ/var/www/html/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   Ú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ÿry   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$      ÿÿ &&&&
r{   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st‚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   rt   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   rt   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   rt   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   rz   Ú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   rz   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_   ry   r{   r|   r€   r§   r®   r±   r³   r´   rº   r   r   r   r!   Ú<module>   s@   .	C
Y
		