o
    8Val)                     @   s&  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ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 Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/d d! Z0ed"d# Z1d$d% Z2d&S )'    )STuplesymbolsIntervalEmptySequenceooSeqPer
SeqFormulasequenceSeqAddSeqMulIndexedIdxsqrt	fibonacci
tribonaccisincosexpRationalSymbolFunction)SeqExpr	SeqExprOpRecursiveSeq)raisesslowzx y zzn mc                   C   sH   t jtu sJ t jjt ju sJ t jjt ju sJ tt jg ks"J d S N)r   r   intervalZEmptySetlengthZZerolist r!   r!   C/usr/lib/python3/dist-packages/sympy/series/tests/test_sequences.pytest_EmptySequence   s   r#   c                  C   s   t dttftddf} t| t sJ | jdttfksJ | jtddks&J | jdks-J | j	dks4J | j
dks;J | jtfksCJ t dtdtfj
tu sPJ d S )N   r   
      r$         )r   nyx
isinstance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J | jtdtdksJ | jdks$J | ddks-J | jthks5J t	| dtddtdgksCJ | d d  dtddtdgksSJ t dtdftt
 dfdd dtddtdgksmJ 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sJ t ttd
 td ftdt
fd d g dksJ t ttftdt
fd d dtd
tdtgksJ d S )Nr$   r)   r         c                   S   s
   t ddS )Nr'   r   r$   r(   )r   r!   r!   r!   r"   <lambda>0   s   
 ztest_SeqPer.<locals>.<lambda>c                   S   s   t dtt tfS )Nr'   )r   r,   r   r!   r!   r!   r"   r8   1       c                   S   s   t td dtfS Nr(   r   )r   r*   r   r!   r!   r!   r"   r8   2   r9   r(   )r   r$      r)      }      )r   r*   r,   r-   Z
periodicalr   ZperiodcoeffZfree_symbolsr    r   r   
ValueErrormr2   r!   r!   r"   test_SeqPer#   s"    4$24rB   c                  C   sd  t td tddf} t| t sJ | jtd ksJ | ddks#J t| dd tdD ks2J | d d  d	d tdD ksCJ t td tt dfdd d
d tdD ks]J t td dtft td tdtfksrJ t td dtf	tt
t td dt
fksJ t ttd  tdtf	tt
t t
td  tdtfksJ 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sJ 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J | t tt
td  t
t  tddfks5J |jddt tt
td  t
t  tddfksPJ t tt
td t  tddf}| t tt
td  tt
t  tddfks{J |jddt tt
td  t
t  tddfksJ |jdddt tt
td t  tddfksJ d S )Nr(   r   r5   r)   	   c                 S      g | ]}|d  qS r(   r!   .0ir!   r!   r"   
<listcomp>A       z#test_SeqFormula.<locals>.<listcomp>r6   c                 S   rD   rE   r!   rF   r!   r!   r"   rI   B   rJ   c                 S   rD   rE   r!   rF   r!   r!   r"   rI   C   rJ   c                   S   s   t td dS )Nr(   r7   )r	   r*   r!   r!   r!   r"   r8   K   s    z!test_SeqFormula.<locals>.<lambda>c                   S   s   t td tt tfS Nr(   )r	   r*   r   r!   r!   r!   r"   r8   L       c                   S   s   t ttd  dtfS r:   )r	   rA   r*   r   r!   r!   r!   r"   r8   M   rL   r$   d   T)ZtrigF)	power_exp)mulrN   )r	   r*   r-   Zformular?   r    ranger   rA   subsr,   r   r@   r+   zexpandr   r   r   )r3   seqr!   r!   r"   test_SeqFormula:   s2   "4*0, V26 668rU   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s&J tdtddf|ks2J ttd |ks<J d S )Nr(   r   r5   r'   )r	   r*   r   r
   )formperZinterr!   r!   r"   test_sequenceZ   s   rX   c                  C   s   t td tddf} tdtddf}t| |}|jtd dfks"J |jtddks,J |jdks3J |j	dks:J |j
dksAJ |jttfksJJ d S )Nr(   r   r%   r'   r5   r6   )r	   r*   r   rA   r   r.   r   r   r/   r0   r   r1   )rV   rW   r3   r!   r!   r"   test_SeqExprOpd   s   
rY   c                  C   s*  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s,J ttjtjks6J t| | ks>J t| tj| ksHJ t||tjksRJ t||d	d
}|j||fksbJ |d d  g dksnJ t|g dksxJ t	t| |d	d
tsJ t| |}t	|t sJ |t dtddfksJ t||}t	|tsJ |tdtd  dksJ t||| t| tdtd  dksJ t|t|| t| tdtd  dksJ t| t||d	d
t| tdtd  dksJ tt dtdtft dt
dtft dtdtfksJ d S )Nr'   r   r(   r$   r(   r$   r5   r6   r%   r$   r5   FZevaluate)r(   r6   r%         )r(   r>   r>   r)   r)   r5   r(   r>   )r   r*   r   r	   r   r   r   argsr    r-   rA   rW   rV   Zper_bouZform_bouZ	form_bou2r3   s1s2r!   r!   r"   test_SeqAddq   sB   


 re   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/J ttjtjks9J t| | ksAJ t| tjtjksLJ t||tjksVJ t||d
d}|j||fksfJ |d d  g dksrJ t|g dks|J t	t| |d
dtsJ t| |}t	|t sJ |t dtddfksJ t||}t	|tsJ |ttd dksJ t||| t| ttd dksJ t|t|| t| ttd dksJ t| t||d
dd
dt|| |d
dksJ tt dtdtft dtdtft dtdtfksJ d S )Nr'   r   r(   rZ   r$   r5   r6   r%   r\   Fr]   )r$   r;   rC          )r$   r>   r)   r(   r(   r6   r>   r[   )r$   r>   )
r   r*   r   r	   r   r   r   ra   r    r-   rb   r!   r!   r"   test_SeqMul   sJ   



 rh   c                     s   t dtdtf ttd }  t d t dtdtfksJ | ttd  ttd td  ks2J  |  t | ks=J tt fdd tt fd	d d S )
NrZ   r   r(   r(   r)   )r)   r5   r)   c                      s    t  S r   r*   r!   rW   r!   r"   r8          ztest_add.<locals>.<lambda>c                      s   t   S r   rj   r!   rk   r!   r"   r8      rl   r   r*   r   r	   r   r   	TypeErrorrV   r!   rk   r"   test_add   s    (rp   c                     s   t dtdtf ttd }  t d t dtdtfksJ | ttd  ttd td  ks2J  |  t |  ks>J tt fdd tt fd	d d S )
NrZ   r   r(   ri   )rq   r)   c                      s    t  S r   rj   r!   rk   r!   r"   r8      rl   ztest_sub.<locals>.<lambda>c                      s   t   S r   rj   r!   rk   r!   r"   r8      rl   rm   ro   r!   rk   r"   test_sub   s    (rr   c                   C   s  t dtdtfdt dtdtfksJ ttd dtdtd  ks(J tjdtjks3J t dtdtft d t dtdtfksIJ ttd ttd  ttd	 ks]J tjttd  tjkskJ ttd tj tjksyJ ttd
d  ttdd  d S )NrZ   r   r(   r`   rM   ri   )r(   r6   r)   r5   c                   S   s   t td t S rK   )r
   r*   r!   r!   r!   r"   r8          z%test_mul__coeff_mul.<locals>.<lambda>c                   S   s   t tt d  S rK   )r*   r
   r!   r!   r!   r"   r8      rs   )	r   r*   r   	coeff_mulr	   r   r   r   rn   r!   r!   r!   r"   test_mul__coeff_mul   s   *&(ru   c                   C   sJ   t dtdtf t dtdtfksJ ttd  ttd  ks#J d S )N)r$   r   )rq   r(   r(   )r   r*   r   r	   r!   r!   r!   r"   test_neg   s   &$rw   c                  C   s  t dtdtf} t dtdtf}ttd }ttd }| | | t| ||ks*J | | | t| || ks9J | | tj t| |ksGJ | | | tt dtdtf|ksZJ tj|  |  ksdJ || tdtd  ksrJ | | | t| ||ksJ || ttd ksJ ||  ttd  ksJ || |  t|t| |ksJ || |   t||ksJ |t	tt	td  tdtfksJ | t	t t	dt	 ftdtfksJ d S )NrZ   r   r`   r(   r)   )r)   r6   r>   )
r   r*   r   r	   r   r   r   r   rt   rA   )rW   Zper2rV   Zform2r!   r!   r"   test_operations   s"   & &*rx   c                      sr   t dtd td t ddfd d   fddtdD ks%J td	 ddfd d  g d
ks7J d S )NrH   )clsrr   r5   c                    s   g | ]}  |qS r!   )rQ   )rG   jrH   rz   r!   r"   rI     s    z#test_Idx_limits.<locals>.<listcomp>r6   rZ   )r$   r(   r$   r(   r$   r(   )r   r   r   r	   rP   r   r!   r!   r|   r"   test_Idx_limits  s   
4(r}   c                   C   s~  t dtddfdddgksJ t dtddfdg dks"J t ttd	  tt  tdtfdg d
ks;J t tt tddfdtgksMJ t dddg dks[J t dtd d t dtd  d t   dddgks|J t tdtd d t  tdtd  d t    tdtfdddgksJ t dtddfdg ksJ t dtddfjdtdg d fksJ 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sJ t ttjdtdddgt td t d  fksJ t t	tjdtdg dt td	 td  t d  fks=J d S )N)r   r$   r$   r(   r)   r5   r;         "   7   r   r%   r&   r$   )r$   r(   r>            iF  i
  i2  i  iv i*    )r5   rv   r6   ir)   )r>   ir>   rq      r   r'   r5   )r   r   r$   r(   )r$   r(   r)   r>   r6   r>   )r(   r)   r>   r5   r6   O   r6   )Zgfvar)r(   r)   r>   r5   r;         i   irf   (   r   )r$   r$   r$   )
r
   r*   Zfind_linear_recurrencer,   r+   r   r   r   r   r   r!   r!   r!   r"   test_find_linear_recurrence  sL   $$4P
$r   c                  C   sP   t d} td}t| |d | |d  | ||ddg}|ddks&J d S )Nr+   r*   r$   r(   r   r)   )r   r   r   r?   )r+   r*   Zfibr!   r!   r"   test_RecursiveSeq'  s   *r   N)3Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.series.sequencesr   r   r   Zsympy.testing.pytestr   r   r,   r+   rR   r*   rA   r#   r4   rB   rU   rX   rY   re   rh   rp   rr   ru   rw   rx   r}   r   r   r!   r!   r!   r"   <module>   s,   ` 	 
'(
