a
    kº”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*J ‚d S )N© é   )r   r   Údiff)Úpr   r   úV/var/www/auris/lib/python3.9/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s4J ‚tddtƒtd	d
tƒksPJ ‚tddtdd} | jtdddƒksvJ ‚| jtddddƒksŽJ ‚tddtƒ}|jtddƒks®J ‚|jtdddƒksÄJ ‚|jtksÒJ ‚|jdu sàJ ‚tddtƒ}|jtddƒksJ ‚|jtdddƒksJ ‚|jtks*J ‚|jdu s:J ‚t	ttƒ tƒ tƒt
tƒtƒs\J ‚t	ttdtdƒt ƒ tdt ƒtƒsˆJ ‚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s*J ‚ttgg tƒ t¡tttgg tƒtƒksXJ ‚ddlm} t|tƒg|tƒg|tƒƒttgtg|tƒƒksšJ ‚tddtddjtu s¶J ‚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   ÚapÚbqÚargumentÚis_commutativeÚtnr
   r   ÚrandcplxÚtdr	   r   r   Ú$sympy.functions.elementary.complexesr0   r   r   Úfunc)ÚuÚhÚa1Úa2Úb1Úb2Zb3r0   r   r   r    Ú
test_hyper   s@    &",ÿ<ÿ
.ÿ
rA   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ŠJ ‚t	|t||g|gdƒƒ 
¡ t||g|gdƒ 
¡  ƒdk sÆJ ‚|tg g tƒƒttƒksâJ ‚|tg d¢g tƒƒtg d¢g tƒksJ ‚|tddgg gdgdggtƒƒttd ƒks>J ‚|tddgg gg g gtƒƒtddgg gg g gtƒksxJ ‚d S )Nr   )ÚaÚbÚc)Úexpand_funcr.   r"   ç»½×Ùß|Û=©r"   r   r&   )Ú	sympy.abcrB   rC   rD   Úsympy.core.functionrE   r7   r   r   ÚabsÚnr   r
   r   r   )rB   rC   rD   rE   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.J ‚|  | ¡ |i¡S )Nr   ©ÚDummyr"   )Úsympy.core.symbolrO   ZatomsÚlenZ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|J ‚td
dtƒ 
| ¡td
dtƒksžJ ‚d S )Nr   )ÚSumrN   )ÚRisingFactorialÚ	factorialr   r+   r(   r   r&   rG   )éÿÿÿÿr&   )Zsympy.concrete.summationsrV   rP   rO   Z(sympy.functions.combinatorial.factorialsrW   rX   rU   r   r   Úrewriter   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J ‚t dddgtƒjtu s2J ‚t ddgtƒjdksJJ ‚t ddgtƒjtu sbJ ‚t dd	gtƒjdkszJ ‚t d
dgtƒjtu s’J ‚t dddgtƒjdks¬J ‚t g d¢ddgtƒjdksÊJ ‚t ddgddgtƒjtu sèJ ‚t g d¢dgtƒjdksJ ‚t dg tƒjtu sJ ‚t ddgdgdƒjdks<J ‚t ddgdgdƒjdksZJ ‚t ddgdgdƒjdksxJ ‚t ddgdgdƒjdks–J ‚d S )Nr+   r&   r"   r-   rG   r   )r   r"   r   )rY   r"   r   éüÿÿÿ)rY   éþÿÿÿr   rY   )rY   r   r]   )rY   r"   r&   r   )rY   r   r&   r-   TF)r   r   Zradius_of_convergencer   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sNJ ‚tddddtƒ} | jtddƒksrJ ‚| jtdddd	d
ƒksŒJ ‚| jtdd	d
ƒks¢J ‚| jtddddƒksºJ ‚| j	tdddddddddƒ	ksÜJ ‚| j
tdddddƒksöJ ‚| jtksJ ‚| jdksJ ‚| jdks&J ‚| jdu s6J ‚| jdu sFJ ‚tg g gtjgdggdƒjdu slJ ‚tddgdgd	gd
gtƒjtjks”J ‚tttƒ tƒ tdƒtƒ t ƒttƒtƒsÂJ ‚tttƒttƒ tƒ tdƒttjƒtd d	 ƒ ttƒtƒsJ ‚tttddƒtƒ tdƒtdƒtƒtdt ƒtƒs8J ‚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ƒs¾J ‚ttƒ tƒ ttƒ ƒttƒ tƒ ƒtƒ} t| tƒsòJ ‚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†J ‚tttgg g g tƒ t¡ttttgg g g tƒtƒksÀJ ‚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sžJ ‚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+   r`   )ra   )r.   r"   r   r&   r-   r.   r+   r,   )é   é   é   é	   )é
   é   é   é   é   rb   rc   rd   re   rf   rg   rh   ri   rj   éK   rY   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 )Nrl   )r%   rm   )r   r   r   r   r   r    r#   ¥   r$   za1:3, b1:3, c1:3, d1:3r/   )rB   rC   rD   ÚdÚs))r   r1   r   r   r   Zanr2   ZaotherZbmr3   Zbotherr4   ÚnuÚdeltar5   Z	is_numberr   ÚHalfr6   r
   r   r   r   r   Ú
ValueErrorr7   r   r8   r	   r   r   r9   r0   rH   rB   rC   rD   rn   ro   Z	integrandr   )Úgr=   r>   r?   r@   rL   Úc2Úd1Zd2ÚplrB   rC   rD   rn   ro   r   r   r    Útest_meijer„   sz    
 ÿ"&(.ÿÿ
 ÿ
ÿÿÿ$"&ÿÿÿ
ÿ
*ÿ
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 g d¢ddtdgg tƒ  ksfJ ‚tƒ } d}tt tgg g g | ƒtƒsŒJ ‚tt td gg g g | ƒtƒs¬J ‚tt g tgg g | ƒtƒsÈJ ‚tt g g tgg | ƒtƒsäJ ‚tt g g g tg| ƒtƒsJ ‚tt tg|g|d gg | ƒtƒs(J ‚tt tg|d g|gg | ƒtƒsNJ ‚tt t|gg g |d g| ƒtƒstJ ‚tt t|d gg g |g| ƒtƒsšJ ‚tddƒ}tt |d g|g|d tg|g| ƒtƒsÒJ ‚d S )Nr"   r   r   )r"   r"   r"   r.   r&   )r   r   r   r   r   r7   r8   r   )ÚyrB   rC   r   r   r    Útest_meijerg_derivativeÇ   s$     ÿÿ &&&&
rz   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sHJ ‚t g g dgg tƒ ¡ dt ksjJ ‚t g g dgtjgtƒ ¡ dt ksJ ‚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 sÚJ ‚d S )Nr"   r   r   r-   )r   r   Z
get_periodr   r   rr   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sRJ ‚tdgdg|ƒj|kslJ ‚tddgdg|ƒj|ksˆJ ‚tddgdg| dt t ƒƒjdks°J ‚d S )Nr   ©Ú	exp_polarr   r"   )Ú&sympy.functions.elementary.exponentialr}   r   r   r   r   r4   )r}   rB   rC   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¨J ‚|ˆtt ƒ| ƒ d¡|dt|ƒd	kfˆd
fƒksàJ ‚|ˆdt t ƒ| ƒ d¡|ˆt|ƒd	kfˆ d
fƒksJ ‚|ˆdt t ƒ| ƒ d¡|ˆt|ƒd	kfˆd
fƒks\J ‚|ˆdt t ƒ| ƒ d¡|dˆ t|ƒd	kfˆ d
fƒksžJ ‚|ˆdt t ƒ| ƒ d¡|dˆ t|ƒd	kfˆd
fƒksàJ ‚||ƒ d¡ˆ ksøJ ‚|ˆ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|ƒ|ƒs²J ‚|||ƒ| td	d	gdg|ƒ |ƒsÜJ ‚|||ƒttjtjgtddƒg|ƒ|ƒs
J ‚|||ƒtd	d	gtddƒg|ƒ|ƒs4J ‚||ˆ |ƒtˆ  tjˆ  gtjg|ƒ|ƒsdJ ‚||ˆ |ƒd| dˆ  d	  tˆ  tj ˆ  gtjg|ƒ |¡ |ƒs°J ‚||	|ƒ| d ttddƒd	d	gddg|ƒ |ƒsèJ ‚||
ˆ |ƒtˆ  ˆ gtjg|ƒ|ƒsJ ‚||ˆ |ƒdˆ  | td	ˆ  d	ˆ  gtddƒg|ƒ |ƒsRJ ‚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   )rB   r   r    Ú_expr_smallý   s    z(test_hyperrep.<locals>.myrep._expr_smallc                    s   ˆ S r   r   rŽ   )rC   r   r    Ú_expr_small_minus  s    z.test_hyperrep.<locals>.myrep._expr_small_minusc                    s   ˆ | S r   r   ©r   r   rK   )rD   r   r    Ú	_expr_big  s    z&test_hyperrep.<locals>.myrep._expr_bigc                    s   ˆ | S r   r   r’   )rn   r   r    Ú_expr_big_minus	  s    z,test_hyperrep.<locals>.myrep._expr_big_minusN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r‘   r“   r”   r   ©rB   rC   rD   rn   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œ   rY   r   r™   Fr›   g     ð?g÷ÿÿÿÿÿï?rF   c                    s6   |   ˆˆ |ƒˆ ¡ d¡}|  ˆˆ |ƒˆ ¡ ˆ t¡S )Nr›   )ÚsubsrZ   Úreplacer
   )r:   rB   rC   Úrv)r}   r   r   r    Údosubs-  s    z(test_hyperrep.<locals>.t.<locals>.dosubs)	r   r"   r   r&   r-   rY   r]   éýÿÿÿr\   r"   T)r6   rZ   r   r   rr   r   r   r   rž   r
   rJ   rK   )r:   Zhypr   rS   r    rK   Úexpr1Úexpr2r|   )r   r    Út  s8    ÿ
ÿÿü( *&(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	   rZ   rJ   r   r   r   r   r   rr   r   )r€   r   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rš   r¤   r   )rB   rC   rD   rn   r}   r    Útest_hyperrepñ   sL    8,ÿÿ
ÿ
ÿ
ÿ
$"
,$0*.*0
8ÿ
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¾J ‚t|| jt|t| id
ƒdk s–J ‚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 sTJ ‚t|| jt|t| |	 || |	 id
ƒdk sJ ‚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ðJ ‚d S )Nr   r|   )Úbesseli)Úlr"   r   r-   )ç      à?ç      ø?)g        gš™™™™™¹?g333333Ó?r©   gš™™™™™é?r"   g/Ý$@gš™™™™™.@)r   rF   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¨   r7   r   r   r   r   r   rJ   rK   r   r   r   r
   )r}   r§   r¨   rB   Úargr¢   r£   Zx_Zk_Z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sfJ ‚tdtdd|ƒ |dƒdks†J ‚d S )Nzk, xr%   r-   r&   r.   r   r"   re   é   éQ   i`  rb   r   )r	   r   r   Zseriesr   r   )r   r   r   r   r    Útest_limitsk  s
    $.ÿr¯   c               	   C   sÂ   t dƒ\} }}}}}t| |||||ƒt| |||||ƒks<J ‚t| |||||ƒt| |||||ƒksdJ ‚t| |||tjtjƒtju s„J ‚t| |||tjtjdd}|jtu s¬J ‚| ¡ tju s¾J ‚d S )Nza b1 b2 c x yFr)   )r	   r   r   ZZeroZOner:   Zdoit)rB   r?   r@   rD   r   ry   Úfr   r   r    Útest_appellf1t  s    (( r±   c               	   C   s  ddl m}  tdƒ\}}}}}}}| t||||||ƒ|ƒ|| t|d ||d |d ||ƒ | kshJ ‚| t||||||ƒ|ƒ|| t|d ||d |d ||ƒ | ks®J ‚| t||||||ƒ|ƒdksÎJ ‚| t||||||ƒ|ƒtt||||||ƒ|ƒksJ ‚d S )Nr   )r   za b1 b2 c x y zr"   )rI   r   r	   r   r   )r   rB   r?   r@   rD   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sbJ ‚ttƒ tdd ¡t| |f| |ftƒ tdd ¡ks–J ‚t| |f||ftƒ tdd ¡t| |f||ftƒttd ƒ ksØJ ‚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sbJ ‚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+   rG   r   rc   r"   r&   r-   é   rb   ih  r%   é   é@   é]   r.   rd   é€   )
r	   r   r   Z_eval_nseriesr   r
   r   r   Znseriesr   )r=   r?   r>   r@   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   r7   r   r6   r   r8   r!   rA   rM   rU   r[   r^   rx   rz   r{   r   r¦   r¬   r¯   r±   r²   r¸   r   r   r   r    Ú<module>   s@   .	C
Y
		