U
    9%ev>  ć                   @   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/Darija-Ai-API/env/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} | jtddksTt| jtdd	d
ksjt| jtksxt| 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sptttgg t t”tttgg ttkst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+   T)r#   r#   z
a1:3, b1:4r   ©Ś
polar_liftF©Śevaluate)r   Ś	TypeErrorr   r   r   r   ŚapŚbqŚargumentŚis_commutativeŚtnr
   r   ŚrandcplxŚtdr	   r   r   Ś$sympy.functions.elementary.complexesr-   r   r   Śfunc)ŚhŚa1Śa2Śb1Śb2Zb3r-   r   r   r!   Ś
test_hyper   s2    & * 
 ’<’
.’
r?   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.abcr@   rA   rB   Śsympy.core.functionrC   r6   r   r   r   ŚabsŚnr   r
   r   r   )r@   rA   rB   rC   r;   r=   Śc1r   r   r!   Śtest_expand_func@   s"    4’’’.2’rJ   c                 C   s@   ddl m} |  |”}|s| S t|dks.t|  | ” |i”S )Nr   ©ŚDummyr#   )Śsympy.core.symbolrL   ZatomsŚlenr   ZxreplaceŚpop)ŚexprŚsymrL   Zdumr   r   r!   Śreplace_dummyR   s    
rR   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   )ŚSumrK   )ŚRisingFactorialŚ	factorialr   r&   )r#   r)   r   r)   ©r#   r   r)   )é’’’’r)   )Zsympy.concrete.summationsrS   rM   rL   Z(sympy.functions.combinatorial.factorialsrT   rU   rR   r   r   Śrewriter   r   r   )rS   rL   rT   rU   Z_kr   r   r!   Śtest_hyper_rewrite_sum[   s    ’’’
’rY   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*   rV   r   )r   r#   r   )rW   r#   r   éü’’’)rW   éž’’’r   rW   )rW   r   r[   r   )rW   r   r)   r*   TF)r   r   Zradius_of_convergencer   r   Zconvergence_statementr   r   r   r!   Śtest_radius_of_convergenceh   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&   r_   )r`   )r+   r#   r   r)   r*   r+   r&   r(   )é   é   é   é	   )é
   é   é   é   é   ra   rb   rc   rd   re   rf   rg   rh   ri   éK   rW   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 )Nrk   )r'   rl   )r   r   r   r   r   r!   r$      r%   za1:3, b1:3, c1:3, d1:3r,   )r@   rA   rB   ŚdŚs)*r   r0   r   r   r   r   Zanr1   ZaotherZbmr2   Zbotherr3   ŚnuŚdeltar4   Z	is_numberr   ŚHalfr5   r
   r   r   r   r   Ś
ValueErrorr6   r   r7   r	   r   r   r8   r-   rE   r@   rA   rB   rm   rn   Z	integrandr   )Śgr;   r<   r=   r>   rI   Śc2Zd1Zd2Śplr@   rA   rB   rm   rn   r   r   r!   Śtest_meijer{   s    
 ’"&(.  
’ ’
 
 ’

 ’
 ’ ’$"&’’’
’
*’
B’rv   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   r6   r7   r   )Śyr@   rA   r   r   r!   Śtest_meijerg_derivative¾   s$      ’’ &&&&
rx   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   rq   r   r   r   r   r!   Śtest_meijerg_periodŅ   s,    $$"    ’’    ’’ry   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   r3   r   )r{   r@   rA   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_sinasinrz   )Ś	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   )r@   r   r!   Ś_expr_smallō   s    z(test_hyperrep.<locals>.myrep._expr_smallc                    s    S r   r   r   )rA   r   r!   Ś_expr_small_minusų   s    z.test_hyperrep.<locals>.myrep._expr_small_minusc                    s    | S r   r   ©r   r   rH   )rB   r   r!   Ś	_expr_bigü   s    z&test_hyperrep.<locals>.myrep._expr_bigc                    s    | S r   r   r   )rm   r   r!   Ś_expr_big_minus   s    z,test_hyperrep.<locals>.myrep._expr_big_minusN)Ś__name__Ś
__module__Ś__qualname__Śclassmethodr   r   r   r   r   ©r@   rA   rB   rm   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   rW   r   r   Fr   g     š?g÷’’’’’ļ?rD   c                    s6   |    | ” d”}|   | ”  t”S )Nr   )ŚsubsrX   Śreplacer
   )r9   r@   rA   Śrv)r{   r   r   r!   Śdosubs$  s    z(test_hyperrep.<locals>.t.<locals>.dosubs)	r   r#   r   r)   r*   rW   r[   éż’’’rZ   r#   T)r5   rX   r   r   rq   r   r   r   r   r
   rG   rH   )r9   Zhypr   rP   r   rH   Śexpr1Śexpr2rz   )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	   rX   rG   r   r   r   r   r   r   rq   r   )r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r¢   r   )r@   rA   rB   rm   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   rz   )Śbesseli)Ślr#   r   r*   )ē      ą?ē      ų?)g        g¹?g333333Ó?r§   gé?r#   g/Ż$@g.@)r   rD   gvIhĀ%<=r§   r)   g      Š?g      č?g      š?rØ   ))r§   r   ))r§   r   r§   r   T)Zchop)r|   r{   Zsympy.functions.special.besselr„   rE   r¦   r6   r   r   r   r   r   rG   rH   r   r   r   r   r
   )r{   r„   r¦   r@   Śargr    r”   Zx_Zk_ZepsrP   r   r   r!   Śtest_meijerg_evalB  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#   rd   é   éQ   i`  ra   r   )r	   r   r   Zseriesr   r   r   )r   r   r   r   r!   Śtest_limitsb  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Oner9   Zdoit)r@   r=   r>   rB   r   rw   Śfr   r   r!   Śtest_appellf1k  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#   )rF   r   r	   r   r   r   )r   r@   r=   r>   rB   r   rw   r   r   r   r!   Śtest_derivative_appellf1v  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d S )Nza1 b1 a2 b2r&   rV   r   rb   r#   r)   r*   é   ra   ih  )r	   r   r   Z_eval_nseriesr   r   r
   r   )r;   r=   r<   r>   r   r   r!   Śtest_eval_nseries  s    R4r²   N)<Zsympy.core.containersr   rF   r   Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   rM   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   rE   r   r   r   Zsympy.series.limitsr   Zsympy.testing.pytestr   r   Zsympy.core.randomr   r6   r   r5   r   r7   r"   r?   rJ   rR   rY   r\   rv   rx   ry   r}   r¤   rŖ   r­   rÆ   r°   r²   r   r   r   r!   Ś<module>   s@   %	C
Y
		