o
    jg  ć                   @   sü   d dl mZ d dl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mZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ e	d\ZZZe 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S ) é    )ŚAdd)ŚRationalŚooŚpi)ŚS)Śsymbols)ŚexpŚlog)Ś	Piecewise)ŚcosŚsinŚsincŚtan)Śfourier_series)ŚFourierSeries)Śraises)Ś	lru_cachezx y zc                  C   sT   t ttt tf} t td t tf}t tdtdk ftdftt tf}| ||fS )Né   r   T)r   Śxr   r
   ©ŚfoŚfeŚfp© r   śW/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/series/tests/test_fourier.pyŚ_get_examples   s   $
r   c                  C   s¬  t  \} }}tdt tfdksJ tdtdk ftdf tt tf” ” | ” ks,J t| ts3J | jtks:J | jtksAJ | j	t tfksKJ |  
d”dtdt  d ks\J | 
d”dtdt  d ksmJ | 
d”dtdt  d ks~J |  t”dtt ksJ | t”td d ksJ | t”td ks£J |  ” dtt tdt  dtdt  d  ksæJ | ” dtt tdt  td d  ks×J | ” dtt dtdt  d  td  ksńJ | jd d}ddtt tdt  g}t|D ]\}}|dkr n|| |ksJ q	d	d
 }|| d ||d ||d |  ttd ”| ks?J ttdd  ttdd  ttdd  d S )Né   r   Té   r   éü’’’é	   )Śnc                 S   s4   t | D ]\}}|| | ksJ ||kr d S qd S ©N)Ś	enumerate)ŚfŚiŚindŚtr   r   r   Ś_check_iter6   s   ’žz'test_FourierSeries.<locals>._check_iterc                   S   s
   t tdS )N)r   r   r   ©r   r   r   r   r   r   Ś<lambda>B   ó   
 z$test_FourierSeries.<locals>.<lambda>c                   S   s   t ttdtfS ©Nr   )r   r   r   r   r   r   r   r)   C   s    c                   S   s   t tt dtfS r+   )r   r   Śyr   r   r   r   r   r)   D   s    )r   r   r   r
   r   ŚtruncateŚ
isinstancer   ŚfunctionŚperiodŚtermr   r   Śas_leading_termr"   Śsubsr   Ś
ValueError)r   r   r   ŚfotŚsr$   r&   r'   r   r   r   Śtest_FourierSeries   s@   ’"""804



r7   c                  C   sŅ   t dtdk ftdf} t| tddf}| d”dtdt t d  dt  dtdt t d  dtd    ks<J | ” dttt d  t ttt t  dttt d  td   tj	 ksgJ d S )Nr   Též’’’r   r   é   r   )
r
   r   r   r1   r   r   r   r-   r   ŚHalf)Śpr#   r   r   r   Śtest_FourierSeries_2G   s   &"
’,’’r<   c                  C   sŹ   t dttk fd} t| tddt f}| d”dt tt ddt  tdt   ddt  tdt   ks:J | d”dt tt ttd  ddt  tdt  tdt d   kscJ dS )	zETest if fourier_series approximates discontinuous function correctly.r   )é’’’’Tr   r   r   r9   é   N)r
   r   r   r   r-   r   Śsigma_approximationr   )Śsquare_waver6   r   r   r   Śtest_square_waveQ   s   .
’"&’rA   c                  C   s¾   t ttdtf} |  d”td tdt  tdt d  tdt d  ks)J t ttddf} |  d”tjtdt t t  tdt t dt   tdt t dt   ks]J d S )Nr   r9   r   é   r   r   )r   r   r   r-   r   r   r:   )r6   r   r   r   Śtest_sawtooth_wave\   s   2’H’rC   c                     sź  t  \ } }|  d” td ”}| ” dtt tdt  dtd  d  ks*J | t d ” ” dtt dtdt  d  dtdt  d  ksPJ   d”}| ” dtt dtdt   dtdt   ksqJ |  d” 	d”}| ” dtdt d  tdt d  td d  ksJ |  d” t ” d” 	d” d”}| ” d	tdt d  dtd
t d
   dt  dtd  d  ksĻJ t
t fdd t
t fdd t
t fdd t
t fdd d S )Nr=   r   r9   r   r>   rB   r   r   iš’’’é   c                      s
      t”S r!   )Śshiftr   r   ©r   r   r   r)   x   r*   z0test_FourierSeries__operations.<locals>.<lambda>c                      s      tt”S r!   )Śshiftxr   r   r   rF   r   r   r)   y   ó    c                      s      tt ”S r!   )Śscaler   r,   r   rF   r   r   r)   z   rH   c                      s      td ”S )Nr   )Śscalexr   r   rF   r   r   r)   {   rH   )r   rI   rE   r   r-   r   r   r   rJ   rG   r   r4   )r   r   ŚfesŚfosŚfxŚflr   rF   r   Śtest_FourierSeries__operationse   s(   40
’
8<$,’
’rO   c                  C   s|   t  \} }}|   ” dtt tdt  dtdt  d  ks#J |  ” dtt tdt  td d  ks<J d S )Nr8   r   r   r9   )r   r-   r   r   r   r   r   r   r   r   Śtest_FourierSeries__neg~   s   :6rP   c                     s
  t  \ } }     d”ksJ    dksJ |  |  |  d”ks%J  |   ” dtt tdt  dtt  tdt  td d  ksKJ  |   ” dtt tdt  dtt  tdt  td d  ksqJ t d tszJ t	t
 fdd d S )	Nr   r   r8   r9   r   r   c                      s    t ttddf S )Nr   r   r(   r   rF   r   r   r)      s    z.test_FourierSeries__add__sub.<locals>.<lambda>)r   rI   r-   r   r   r   r   r.   r   r   r4   )r   r   r   rF   r   Śtest_FourierSeries__add__sub   s   8

’8

’rQ   c                   C   s  t tt d”ttksJ t tttt tt ttt f ” tttt tt ks2J t ttd  t	”dt
dt  d dt
dt  d  t
dt d  td	d ks`J t ttd  ” dt
dt  d dt
dt  d  td	d ksJ t tdt d t
dt d   t	”td tdt  tdt t
d  t
dt
dt   tdt
dt   ksÅJ t ttt
ttt   t	”dtt ksŽJ t t
tt td
df t	”t
tt ksõJ t t
dt t d tdt t ttt   td
df t	”ttt  tdt t  tdtdt t   t
dt
dt t   ks@J d S )Nr   rB   iń’’’r   é    r   r9   é   r>   r=   )r   r   r   r-   r	   r,   r   Śzr   r   r   r   r   r   r   r   r   Śtest_FourierSeries_finite   s(   FJ
’8
’P’
’2.\’’rU   N)'Śsympy.core.addr   Śsympy.core.numbersr   r   r   Śsympy.core.singletonr   Śsympy.core.symbolr   Ś&sympy.functions.elementary.exponentialr   r	   Ś$sympy.functions.elementary.piecewiser
   Ś(sympy.functions.elementary.trigonometricr   r   r   r   Śsympy.series.fourierr   r   Śsympy.testing.pytestr   Ś	functoolsr   r   r,   rT   r   r7   r<   rA   rC   rO   rP   rQ   rU   r   r   r   r   Ś<module>   s,    
/
	