o
    ą8Va   ć                   @   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 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 )é    )ŚsymbolsŚpiŚ	PiecewiseŚsinŚcosŚsincŚRationalŚSŚooŚfourier_seriesŚAddŚlogŚexpŚtan)Ś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   śA/usr/lib/python3/dist-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ŚiZindŚtr   r   r   Ś_check_iter0   s   ’žz'test_FourierSeries.<locals>._check_iterc                   S   s
   t tdS )N)r   r   r   ©r   r   r   r   r   r   Ś<lambda><   ó   
 z$test_FourierSeries.<locals>.<lambda>c                   S   s   t ttdtfS ©Nr   )r   r   r
   r   r   r   r   r(   =   s    c                   S   s   t tt dtfS r*   )r   r   Śyr
   r   r   r   r   r(   >   s    )r   r   r   r   r   ŚtruncateŚ
isinstancer   ŚfunctionZperiodŚtermr   r   Zas_leading_termr"   Zsubsr   Ś
ValueError)r   r   r   ZfotŚsr$   r%   r&   r   r   r   Śtest_FourierSeries   s@   ’"""804



r2   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   r/   r   r   r   r,   r	   ŚHalf)Śpr#   r   r   r   Śtest_FourierSeries_2A   s   &"
’,’’r7   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   r4   é   N)r   r   r   r   r,   r   Zsigma_approximationr   )Zsquare_waver1   r   r   r   Śtest_square_waveK   s   .
’"&’r:   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   r4   r   é   r   r   )r   r   r   r,   r   r	   r5   )r1   r   r   r   Śtest_sawtooth_waveV   s   2’H’r<   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 )Nr8   r   r4   r   r9   r;   r   r   iš’’’é   c                      s
      t”S r!   )Śshiftr   r   ©r   r   r   r(   r   r)   z0test_FourierSeries__operations.<locals>.<lambda>c                      s      tt”S r!   )Śshiftxr   r   r   r?   r   r   r(   s   ó    c                      s      tt ”S r!   )Śscaler   r+   r   r?   r   r   r(   t   rA   c                      s      td ”S )Nr   )Śscalexr   r   r?   r   r   r(   u   rA   )r   rB   r>   r   r,   r   r   r   rC   r@   r   r0   )r   r   ZfesZfosZfxZflr   r?   r   Śtest_FourierSeries__operations_   s(   40
’
8<$,’
’rD   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 )Nr3   r   r   r4   )r   r,   r   r   r   r   r   r   r   r   Śtest_FourierSeries__negx   s   :6rE   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   r3   r4   r   r   c                      s    t ttddf S )Nr   r   r'   r   r?   r   r   r(      s    z.test_FourierSeries__add__sub.<locals>.<lambda>)r   rB   r,   r   r   r   r   r-   r   r   r0   )r   r   r   r?   r   Śtest_FourierSeries__add__sub   s   8

’8

’rF   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   r;   iń’’’r   é    r   r4   é   r9   r8   )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.\’’rJ   N)!Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zsympy.series.fourierr   Zsympy.testing.pytestr   Zsympy.core.cacher   r   r+   rI   r   r2   r7   r:   r<   rD   rE   rF   rJ   r   r   r   r   Ś<module>   s   @ 
/
	