U
    	Ē-e+  ć                   @   s  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
mZ d dl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mZ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l&m'Z'm(Z( e
d\Z)Z*Z+e
d\Z,Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4d d! Z5d"d# Z6d$d% Z7d&d' Z8d(d) Z9d*d+ Z:d,d- Z;e(d.d/ Z<d0d1 Z=d2S )3é    )ŚTuple)ŚFunction)ŚooŚRational)ŚS)ŚsymbolsŚSymbol)Ś
tribonacciŚ	fibonacci)Śexp)Śsqrt)ŚcosŚsin)ŚEmptySequence)ŚSeqMulŚSeqAddŚSeqPerŚ
SeqFormulaŚsequence)ŚInterval)ŚIndexedŚIdx)ŚSeqExprŚ	SeqExprOpŚRecursiveSeq)ŚraisesŚslowzx y zzn mc                   C   sH   t jtkstt jjt jks tt jjt jks2ttt jg ksDtd S ©N)r   r   ŚAssertionErrorŚintervalZEmptySetŚlengthZZeroŚlist© r"   r"   śb/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/series/tests/test_sequences.pyŚtest_EmptySequence   s    r$   c                  C   s²   t tdttttdd} t| t s(t| jdttfks<t| jt	ddksPt| j
dks^t| jdkslt| jdkszt| jtfkstt tdddttdtjtks®td S )Né   r   é
   é   é   é   )r   r   ŚnŚyŚxŚ
isinstancer   Śgenr   r   ŚstartŚstopr    Ś	variablesr   ©Śsr"   r"   r#   Śtest_SeqExpr   s    r4   c                  C   sĀ  t dtdftddf} t| t s$t| jtdtdks:t| jdksHt|  d”dksZt| j	thksjtt
| dtddtdgkst| d d  dtddtdgks¦tt dtdftt dfdd dtddtdgksŚtttdd  ttdd  ttd	d  t ttd
 td ftdtfd d ttd
 td ttd
 td gksPtt ttd
 td ftdtfd d ddddddgkstt ttftdtfd d dtd
tdtgks¾td S )Nr%   r)   r   é   é   c                   S   s
   t ddS )N©r%   r(   r)   ©r   r%   r(   )r   r"   r"   r"   r#   Ś<lambda>=   ó    ztest_SeqPer.<locals>.<lambda>c                   S   s   t dtt tfS )Nr7   )r   r,   r   r"   r"   r"   r#   r9   >   r:   c                   S   s   t td dtfS ©Nr(   r   )r   r*   r   r"   r"   r"   r#   r9   ?   r:   r(   é   é   é}   é   )r   r*   r,   r-   r   Z
periodicalr   ZperiodŚcoeffZfree_symbolsr!   r   r   Ś
ValueErrorŚmr2   r"   r"   r#   Śtest_SeqPer0   s"     4$’
<rC   c                  C   sj  t td tddf} t| t s"t| jtd ks4t|  d”dksFtt| dd tdD ksdt| d d  d	d tdD kstt td tt dfdd d
d tdD ksŗtt td dtft td tdtfksätt td dt	f 
t	t”t td dtfkstt t	td  tdtf 
t	t”t ttd  tdtfksTtttdd  ttdd  ttdd  t ttd t  tddf}| ” t ttd  tt  tddfksČtt tttd t  tddf}|jddt tttd  ttt  ttt tttd    tddfks>t| ” t tttd  tt  tddfkspt|jddt tttd  tt  tddfks¦tt tttd t  tddf}| ” t tttd  ttt  tddfksüt|jddt tttd  tt  tddfks2t|jdddt tttd t  tddfksftd S )Nr(   r   r5   r)   é	   c                 S   s   g | ]}|d  qS ©r(   r"   ©Ś.0Śir"   r"   r#   Ś
<listcomp>N   s     z#test_SeqFormula.<locals>.<listcomp>r6   c                 S   s   g | ]}|d  qS rE   r"   rF   r"   r"   r#   rI   O   s     c                 S   s   g | ]}|d  qS rE   r"   rF   r"   r"   r#   rI   P   s     c                   S   s   t td dS )Nr(   r8   )r   r*   r"   r"   r"   r#   r9   X   r:   z!test_SeqFormula.<locals>.<lambda>c                   S   s   t td tt tfS ©Nr(   )r   r*   r   r"   r"   r"   r#   r9   Y   r:   c                   S   s   t ttd  dtfS r;   )r   rB   r*   r   r"   r"   r"   r#   r9   Z   r:   r%   éd   T)ZtrigF)Ś	power_exp)ŚmulrL   )r   r*   r-   r   Zformular@   r!   Śranger   rB   Śsubsr,   r   rA   r+   ŚzŚexpandr   r   r   )r3   Śseqr"   r"   r#   Śtest_SeqFormulaG   s2    "4*2’
. V26 66rS   c                  C   s|   t td tddf} tdtddf}t td }ttd tddf| ksLttdtddf|ksdtttd |ksxtd S )Nr(   r   r5   r7   )r   r*   r   r   r   )ŚformŚperZinterr"   r"   r#   Śtest_sequenceg   s    rV   c                  C   s   t td tddf} tdtddf}t| |}|jtd dfksDt|jtddksXt|j	dksft|j
dkstt|jdkst|jttfkstd S )Nr(   r   r&   r7   r5   r6   )r   r*   r   rB   r   r.   r   r   r   r/   r0   r    r1   )rT   rU   r3   r"   r"   r#   Śtest_SeqExprOpq   s    
rW   c                  C   sF  t dtdtf} ttd }t dtddf}ttd d}ttd d}t tjksXtttjtjksltt| | ks|tt| tj| kstt||tjks¤tt||d	d
}|j||fksÄt|d d  dddddgksātt	|dddddgksütt
t| |d	d
tstt| |}t
|t s0t|t dtddfksJtt||}t
|tsdt|tdtd  dkstt||| t| tdtd  dksŖtt|t|| t| tdtd  dksŲtt| t||d	d
t| tdtd  dks
ttt dtdtft dtdtft dtdtfksBtd S )Nr7   r   r(   ©r%   r(   r%   r5   ©r6   r&   ©r%   r5   F©Śevaluater6   r&   é   é   )r(   r?   r?   r)   r)   r5   ©r(   r?   )r   r*   r   r   r   r   r   r   Śargsr!   r-   rB   ©rU   rT   Zper_bouZform_bouZ	form_bou2r3   Śs1Śs2r"   r"   r#   Śtest_SeqAdd~   sB    


’
’
’
 ’rd   c                  C   s@  t dtdtf} ttd }t dtddf}ttd tddf}ttd d	}t tjks^tttjtjksrtt| | kstt| tjtjkstt||tjks¬tt||d
d}|j||fksĢt|d d  dddddgksźtt	|dddddgkstt
t| |d
dts tt| |}t
|t s:t|t dtddfksTtt||}t
|tsnt|ttd dkstt||| t| ttd dks¬tt|t|| t| ttd dksÖtt| t||d
dd
dt|| |d
dksttt dtdtft dtdtft dtdtfks<td S )Nr7   r   r(   rX   r%   r5   r6   r&   rZ   Fr[   r<   rD   é    é   )r%   r?   r)   r(   r(   r6   r?   rY   )r%   r?   )r   r*   r   r   r   r   r   r   r`   r!   r-   ra   r"   r"   r#   Śtest_SeqMul„   sJ    


’
’

’’ž
 ’rg   c                     s¢   t dtdtf ttd }  t d t dtdtfks<t| ttd  ttd td  ksdt |  t | kszttt fdd tt fd	d d S )
NrX   r   r(   ©r(   r)   )r)   r5   r)   c                      s    t  S r   ©r*   r"   ©rU   r"   r#   r9   Ö   r:   ztest_add.<locals>.<lambda>c                      s   t   S r   ri   r"   rj   r"   r#   r9   ×   r:   ©r   r*   r   r   r   r   r   Ś	TypeError©rT   r"   rj   r#   Śtest_addĶ   s     (rn   c                     s¤   t dtdtf ttd }  t d t dtdtfks<t| ttd  ttd td  ksdt |  t |  ks|ttt fdd tt fd	d d S )
NrX   r   r(   rh   )é’’’’ro   r)   c                      s    t  S r   ri   r"   rj   r"   r#   r9   ć   r:   ztest_sub.<locals>.<lambda>c                      s   t   S r   ri   r"   rj   r"   r#   r9   ä   r:   rk   rm   r"   rj   r#   Śtest_subŚ   s     (rp   c                   C   s  t dtdtf d”t dtdtfks*tttd  d”tdtd  ksPttj d”tjksftt dtdtft d t dtdtfkstttd ttd  ttd	 ksŗttjttd  tjksÖtttd tj tjksņttt	d
d  tt	dd  d S )NrX   r   r(   r_   rK   rh   )r(   r6   r)   r5   c                   S   s   t td t S rJ   )r   r*   r"   r"   r"   r#   r9   ó   r:   z%test_mul__coeff_mul.<locals>.<lambda>c                   S   s   t tt d  S rJ   )r*   r   r"   r"   r"   r#   r9   ō   r:   )
r   r*   r   Ś	coeff_mulr   r   r   r   r   rl   r"   r"   r"   r#   Śtest_mul__coeff_mulē   s    *&’(rr   c                   C   sJ   t dtdtf t dtdtfks&tttd  ttd  ksFtd S )N)r%   éž’’’r   )ro   r(   r(   )r   r*   r   r   r   r"   r"   r"   r#   Śtest_neg÷   s    &rt   c                  C   sĢ  t dtdtf} t dtdtf}ttd }ttd }| | | t| ||ksTt| | | t| || ksrt| | tj t| |kst| | | tt dtdtf|ks“ttj|  |  ksČt|| tdtd  ksät| | | t| ||kst|| ttd kst||  ttd  ks:t|| |  t|t| |ks\t|| |   t||ksxt| 	t
”tt
td  tdtfks t|  	t
”t t
dt
 ftdtfksČtd S )NrX   r   r_   r(   r)   )r)   r6   r?   )r   r*   r   r   r   r   r   r   r   rq   rB   )rU   Zper2rT   Zform2r"   r"   r#   Śtest_operationsü   s"    &"(ru   c                      sz   t dtd td t ddfd d   fddtdD ksJttd	 ddfd d  d
dd
dd
dgksvtd S )NrH   )ŚclsŚrr   r5   c                    s   g | ]}   |”qS r"   )rO   )rG   Śj©rH   rw   r"   r#   rI     s     z#test_Idx_limits.<locals>.<listcomp>r6   rX   r%   r(   )r   r   r   r   rN   r   r   r"   r"   ry   r#   Śtest_Idx_limits  s    
4rz   c                   C   s  t dtddf d”ddgks"tt dtddf d”dd	d
dgksHtt ttd  tt  tdtf d”ddddgks~tt tt tddf d”tgks¢tt d dd”dddgksĄtt dtd d t dtd  d t    d”ddgkstt tdtd d t  tdtd  d t    tdtf d”ddgksXtt dtddf d”g ksxtt dtddfjd
tdg d fks tt dtddfjd
tdtdddtddgdtd  dt  d dtd  dtd   dt  d  fkstt t	tjdtdddgt td t d  fksLtt t
tjdtddddgt td td  t d  fkstd S )N)r   r%   r%   r(   r)   r5   r<   é   é   é"   é7   r   r&   r'   r%   )r%   r(   r?   é   é   é   iF  i¹
  iŻ2  iń  i©v i* é   r5   rs   r6   iõ’’’r)   r?   iś’’’ro   é   r|   r7   r(   )r%   r(   r)   r?   r6   )r(   r)   r?   r5   r6   éO   )Zgfvar)r(   r)   r?   r5   r<   é   é   iģ’’’é   iį’’’re   é(   r   )r   r*   Zfind_linear_recurrencer   r,   r+   r   r   r   r
   r	   r"   r"   r"   r#   Śtest_find_linear_recurrence  s\    ’’’’’
’$
’$’’’
4’’’
 ’
P’
’
&’r   c                  C   sP   t d} td}t| |d | |d  | ||ddg}| d”dksLtd S )Nr+   r*   r%   r(   r   r)   )r   r   r   r@   r   )r+   r*   Zfibr"   r"   r#   Śtest_RecursiveSeq4  s    *r   N)>Zsympy.core.containersr   Zsympy.core.functionr   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z%sympy.functions.combinatorial.numbersr	   r
   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.seriesr   Zsympy.series.sequencesr   r   r   r   r   Zsympy.sets.setsr   Zsympy.tensor.indexedr   r   r   r   r   Zsympy.testing.pytestr   r   r,   r+   rP   r*   rB   r$   r4   rC   rS   rV   rW   rd   rg   rn   rp   rr   rt   ru   rz   r   r   r"   r"   r"   r#   Ś<module>   sB   	 
'(
