o
    GZŽ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   úW/var/www/auris/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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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Úb2Zb3r1   r   r   r    Ú
test_hyper   s@   & *ÿ<
ÿ.
ÿ rB   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s…J ‚|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s¹J ‚d S )Nr   )ÚaÚbÚc)Úexpand_funcr/   r#   ç»½×Ùß|Û=©r#   r   r'   )Ú	sympy.abcrC   rD   rE   Úsympy.core.functionrF   r8   r   r   ÚabsÚnr   r
   r   r   )rC   rD   rE   rF   r>   r@   Úc1r   r   r    Útest_expand_funcI   s"   4ÿÿÿ(0ÿrN   c                 C   s@   ddl m} |  |¡}|s| S t|ƒdksJ ‚|  | ¡ |i¡S )Nr   ©ÚDummyr#   )Úsympy.core.symbolrP   ZatomsÚlenZxreplaceÚpop)ÚexprÚsymrP   Zdumr   r   r    Úreplace_dummy[   s   
rV   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   )ÚSumrO   )ÚRisingFactorialÚ	factorialr   r,   r)   r   r'   rH   )éÿÿÿÿr'   )Zsympy.concrete.summationsrW   rQ   rP   Z(sympy.functions.combinatorial.factorialsrX   rY   rV   r   r   Úrewriter   r   )rW   rP   rX   rY   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 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s‚J ‚t dg tƒjtu sJ ‚t ddgdgdƒjdks›J ‚t ddgdgdƒjdks©J ‚t ddgdgdƒjdks·J ‚t ddgdgdƒjdksÅJ ‚d S )Nr,   r'   r#   r.   rH   r   )r   r#   r   )rZ   r#   r   éüÿÿÿ)rZ   éþÿÿÿr   rZ   )rZ   r   r^   )rZ   r#   r'   r   )rZ   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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s‚J ‚| jdks‰J ‚| jdksJ ‚| jdu s—J ‚| jdu sžJ ‚tg g gtjgdggdƒjdu s°J ‚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ƒ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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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.   r`   r   r   r   r    r$   †   s    )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$   ¤   s    c                   S   r"   )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   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   rI   rC   rD   rE   ro   rp   Z	integrandr   )Úgr>   r?   r@   rA   rM   Úc2Zd1Zd2ÚplrC   rD   rE   ro   rp   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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ƒs€J ‚tt tg|g|d gg | ƒtƒs’J ‚tt tg|d g|gg | ƒtƒs¤J ‚tt t|gg g |d g| ƒtƒs¶J ‚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   r8   r9   r   )ÚyrC   rD   r   r   r    Útest_meijerg_derivativeÇ   s$    ÿÿ $$$$
0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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   Z
get_periodr   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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}   rC   rD   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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|ƒ|ƒsTJ ‚|||ƒ| td	d	gdg|ƒ |ƒsiJ ‚|||ƒttjtjgtddƒg|ƒ|ƒs€J ‚|||ƒtd	d	gtddƒg|ƒ|ƒs•J ‚||ˆ |ƒtˆ  tjˆ  gtjg|ƒ|ƒs­J ‚||ˆ |ƒ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|ƒ |ƒ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   )rC   r   r    Ú_expr_smallý   ó   z(test_hyperrep.<locals>.myrep._expr_smallc                    r   rŽ   r   r   )rD   r   r    Ú_expr_small_minus  r’   z.test_hyperrep.<locals>.myrep._expr_small_minusc                    ó   ˆ | S rŽ   r   ©r   r   rL   )rE   r   r    Ú	_expr_big  ó   z&test_hyperrep.<locals>.myrep._expr_bigc                    r”   rŽ   r   r•   )ro   r   r    Ú_expr_big_minus	  r—   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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    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
   rK   rL   )r;   Zhypr   rT   r¤   rL   Ú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	   r[   rK   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ñ   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 s©J ‚t|| jt|t| |	 || |	 id
ƒdk sÃJ ‚qq~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¡   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«   rI   r¬   r8   r   r   r   r   r   rK   rL   r¡   r   r   r
   )r}   r«   r¬   rC   Úargr¦   r§   Zx_Zk_ZepsrT   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#   rf   é   éQ   i`  rc   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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   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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#   )rJ   r   r	   r   r   )r   rC   r@   rA   rE   r   ry   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s°J ‚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,   rH   r   rd   r#   r'   r.   é   rc   ih  r&   é   é@   é]   r/   re   é€   )
r	   r   r   Z_eval_nseriesr   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   rJ   r   Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   rQ   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   rI   r   r   r   Zsympy.series.limitsr   Zsympy.testing.pytestr   r   Zsympy.core.randomr   r8   r   r7   r   r9   r!   rB   rN   rV   r\   r_   rx   rz   r{   r   rª   r°   r³   rµ   r¶   r¼   r   r   r   r    Ú<module>   sB    .	C
Y
		