U
    	Ē-e  ć                   @   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   ś`/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/series/tests/test_fourier.pyŚ_get_examples   s    $r   c                  C   sŗ  t  \} }}tdt tfdks$ttdtdk ftdf tt tf” ” | ” ksXtt| tsft| j	tkstt| jtkst| j
t tfkst|  d”dtdt  d ksøt| d”dtdt  d ksŚt| d”dtdt  d ksüt|  t”dtt kst| t”td d ks4t| t”td ksLt|  ” dtt tdt  dtdt  d  kst| ” dtt tdt  td d  ksøt| ” dtt dtdt  d  td  ksīt| jd d}ddtt tdt  g}t|D ],\}}|dkr6 qL|| |kstqd	d
 }|| d ||d ||d |  ttd ”| kst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 t||kr q.qd S ©N)Ś	enumerateŚAssertionError)Ś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
   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



r5   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sxt| ” dttt d  t ttt t  dttt d  td   t	j
 ksĪtd S )Nr   Též’’’r   r   é   r   )r
   r   r   r1   r   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stt| d”dt tt ttd  ddt  tdt  tdt d   ksĘtdS )	zETest if fourier_series approximates discontinuous function correctly.r   )é’’’’Tr   r   r   r7   é   N)	r
   r   r   r   r.   r   r#   Zsigma_approximationr   )Zsquare_waver4   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sRt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ŗtd S )Nr   r7   r   é   r   r   )r   r   r   r.   r   r#   r   r8   )r4   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sTt| t d ” ” dtt dtdt  d  dtdt  d  ks t  d”}| ” dtt dtdt   dtdt   ksāt|  	d” 
d”}| ” dtdt d  tdt d  td d  ks0t|  	d” t ” 	d” 
d” d”}| ” d	tdt d  dtd
t d
   dt  dtd  d  ks¢ttt fdd tt fdd tt fdd tt fdd d S )Nr;   r   r7   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   rB   r   r   r*   y   r+   c                      s      tt ”S r!   )Śscaler   r-   r   rB   r   r   r*   z   r+   c                      s      td ”S )Nr   )Śscalexr   r   rB   r   r   r*   {   r+   )r   rD   rA   r   r.   r   r   r#   r   rE   rC   r   r3   )r   r   ZfesZfosZfxŚflr   rB   r   Śtest_FourierSeries__operationse   s(    40’

8>$,’’rG   c                  C   s|   t  \} }}|   ” dtt tdt  dtdt  d  ksFt|  ” dtt tdt  td d  ksxtd S )Nr6   r   r   r7   )r   r.   r   r   r#   r   r   r   r   r   r   Śtest_FourierSeries__neg~   s    :rH   c                     s
  t  \ } }     d”ks"t   dks2t|  |  |  d”ksJt |   ” dtt tdt  dtt  tdt  td d  kst |   ” dtt tdt  dtt  tdt  td d  ksātt d t	sōtt
t fdd d S )	Nr   r   r6   r7   r   r   c                      s    t ttddf S )Nr   r   r)   r   rB   r   r   r*      r+   z.test_FourierSeries__add__sub.<locals>.<lambda>)r   rD   r#   r.   r   r   r   r   r/   r   r   r3   )r   r   r   rB   r   Śtest_FourierSeries__add__sub   s    8
’
8
’
rI   c                   C   s  t tt d”ttkstt tttt tt tt	t	 f ” tttt tt ksdtt ttd  t
”dtdt  d dtdt  d  tdt d  td	d ksĄtt ttd  ” dtdt  d dtdt  d  td	d kst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tt tttttt   t
”dtt ksĀtt tt	t td
df t
”tt	t ksņt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td S )Nr   r>   iń’’’r   é    r   r7   é   r<   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\’’rM   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-   rL   r   r5   r:   r=   r?   rG   rH   rI   rM   r   r   r   r   Ś<module>   s*   
/
	