a
     ¬<b  ć                   @   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   śo/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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sXJ t| tsfJ | jtkstJ | jtksJ | j	t tfksJ |  
d”dtdt  d ksøJ | 
d”dtdt  d ksŚJ | 
d”dtdt  d ksüJ |  t”dtt ksJ | t”td d ks4J | t”td ksLJ |  ” 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r6 qL|| |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   s2   t | D ]$\}}|| | ks J ||kr q.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   r*   c                   S   s   t tt dtfS r+   )r   r   Śyr   r   r   r   r   r)   D   r*   )r   r   r   r
   r   ŚtruncateŚ
isinstancer   ŚfunctionZperiodŚtermr   r   Zas_leading_termr"   Śsubsr   Ś
ValueError)r   r   r   ZfotŚsr$   r&   r'   r   r   r   Śtest_FourierSeries   sD    
’’""":26



r4   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sxJ | ” dttt d  t ttt t  dttt d  td   tj	 ksĪJ d S )Nr   Též’’’r   r   é   r   )
r
   r   r   r0   r   r   r   r-   r   ŚHalf)Śpr#   r   r   r   Śtest_FourierSeries_2G   s    &"’
,’’r9   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stJ | d”dt tt ttd  ddt  tdt  tdt d   ksĘJ dS )	zETest if fourier_series approximates discontinuous function correctly.r   )é’’’’Tr   r   r   r6   é   N)r
   r   r   r   r-   r   Zsigma_approximationr   )Zsquare_waver3   r   r   r   Śtest_square_waveQ   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sRJ 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   r6   r   é   r   r   )r   r   r   r-   r   r   r7   )r3   r   r   r   Śtest_sawtooth_wave\   s    2’H’r>   c                     sī  t  \ } }|  d” td ”}| ” dtt tdt  dtd  d  ksTJ | t d ” ” dtt dtdt  d  dtdt  d  ks J   d”}| ” dtt dtdt   dtdt   ksāJ |  d” 	d”}| ” dtdt d  tdt d  td d  ks0J |  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   r6   r   r;   r=   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   rA   r   r   r)   y   r*   c                      s      tt ”S r!   )Śscaler   r,   r   rA   r   r   r)   z   r*   c                      s      td ”S )Nr   )Śscalexr   r   rA   r   r   r)   {   r*   )r   rC   r@   r   r-   r   r   r   rD   rB   r   r2   )r   r   ZfesZfosZfxŚflr   rA   r   Śtest_FourierSeries__operationse   s(    40’

8>$,’’rF   c                  C   s|   t  \} }}|   ” dtt tdt  dtdt  d  ksFJ |  ” dtt tdt  td d  ksxJ d S )Nr5   r   r   r6   )r   r-   r   r   r   r   r   r   r   r   Śtest_FourierSeries__neg~   s    :rG   c                     s
  t  \ } }     d”ks"J    dks2J |  |  |  d”ksJJ  |   ” dtt tdt  dtt  tdt  td d  ksJ  |   ” dtt tdt  dtt  tdt  td d  ksāJ t d tsōJ t	t
 fdd d S )	Nr   r   r5   r6   r   r   c                      s    t ttddf S )Nr   r   r(   r   rA   r   r   r)      r*   z.test_FourierSeries__add__sub.<locals>.<lambda>)r   rC   r-   r   r   r   r   r.   r   r   r2   )r   r   r   rA   r   Śtest_FourierSeries__add__sub   s    8
’
8
’
rH   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sdJ 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   r6   é   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’’40\’’rL   N)'Zsympy.core.addr   Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z&sympy.functions.elementary.exponentialr   r	   Z$sympy.functions.elementary.piecewiser
   Z(sympy.functions.elementary.trigonometricr   r   r   r   Zsympy.series.fourierr   r   Zsympy.testing.pytestr   Ś	functoolsr   r   r,   rK   r   r4   r9   r<   r>   rF   rG   rH   rL   r   r   r   r   Ś<module>   s*   
/
	