
    g                        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             Zd Zd Z d Z!d Z"d Z#d Z$d Z%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                  ,   t          t          t          t           t          f          } t          t          dz  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fps      [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/series/tests/test_fourier.py_get_examplesr      sk    	AsB<	(	(B	1sBi	(	(B		1a!e*r4j99AsB<	H	HBr2:    c                  |   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                    sJ | j        t          k    sJ | j        t          k    sJ | j	        t           t          fk    sJ | 
                    d          dt          dt          z            z  dz  k    sJ |
                    d          dt          dt          z            z  dz  k    sJ |
                    d          dt          dt          z            z  dz  k    sJ |                     t                    dt          t                    z  k    sJ |                    t                    t          dz  dz  k    sJ |                    t                    t          dz  k    sJ |                                 dt          t                    z  t          dt          z            z
  dt          dt          z            z  dz  z   k    sJ |                                dt          t                    z  t          dt          z            z   t          dz  dz  z   k    sJ |                                dt          t                    z  dt          dt          z            z  dz  z   t          dz  z   k    sJ |                     d           }ddt          t                    z  t          dt          z             g}t          |          D ]\  }}|dk    r n||         |k    sJ d	 } || d            ||d            ||d           |                     t          t          dz            | k    sJ t!          t"          d
            t!          t"          d            t!          t"          d            d S )N   r   T   r   	   )nc                 ^    t          |           D ]\  }}|| |         k    sJ ||k    r d S d S N)	enumerate)fiindts       r   _check_iterz'test_FourierSeries.<locals>._check_iter6   sK    ll 	 	FC#;;;;axx 	 	r   c                  ,    t          t          d          S )N)r   r   r   r   r    r   r   <lambda>z$test_FourierSeries.<locals>.<lambda>B   s    ~a;; r   c                  F    t          t          t          dt          f          S Nr   )r   r   r   r.   r   r   r/   z$test_FourierSeries.<locals>.<lambda>C   s    ~a!Q<< r   c                  J    t          t          t          z  dt          f          S r1   )r   r   yr   r.   r   r   r/   z$test_FourierSeries.<locals>.<lambda>D   s    ~acAr7;; r   )r   r   r   r   r   truncate
isinstancer   functionperiodtermr   r   as_leading_termr&   subsr   
ValueError)r   r   r   fotsr(   r*   r+   s           r   test_FourierSeriesr>      s   JBB!rc2Y''1,,,,q!a%j2t*--NAsB<((F F F Fb-(((((;!4199999"b	!!!!771::3qs88a''''771::C!HHq((((771::3qs88a''''a  Ac!ffH,,,,a  BEAI----a  BF****;;==Ac!ffHs1Q3xx/1S1XX:>BBBBB;;==Bs1vvIAaC02q519<<<<<;;==Ac!ffH#ac((
Q7"q&@@@@@
+++

C	
Ac!ffHs1Q3xxi A#  166Etqyyyyy   KAKAKA771adr!!!!
:;;<<<
:<<===
:;;<<<<<r   c                     t          dt          dk     ft          df          } t          | t          ddf          }|                    d          dt	          dt
          z  t          z  dz            z  dt
          z  z  dt          dt
          z  t          z  dz            z  dt
          dz  z  z  z
  k    sJ |                                dt	          t
          t          z  dz            z  t
          z  t	          t
          t          z            t
          z  z
  dt          t
          t          z  dz            z  t
          dz  z  z
  t          j	        z   k    sJ d S )Nr   Tr   r       r"   )
r   r   r   r8   r   r   r   r4   r   Half)pr'   s     r   test_FourierSeries_2rD   G   s#   1a!e*q$i((Aq1b!*%%A66!993qtAvz??*ad33qtAvz??*aAg67 8 8 8 8::<<Ac"Q$(mmOb03r!t99r>Ac"Q$(mmOb!e3467f= > > > > > >r   c                     t          dt          t          k     fd          } t          | t          ddt          z  f          }|                    d          dt          z  t          t                    z  ddt          z  z  t          dt          z            z  z   ddt          z  z  t          dt          z            z  z   k    sJ |                    d          dt          z  t          t                    z  t          t          dz            z  ddt          z  z  t          dt          z            z  t          dt          z  dz            z  z   k    sJ dS )	zETest if fourier_series approximates discontinuous function correctly.r   )Tr   r   r    rA      N)r   r   r   r   r4   r   sigma_approximationr   )square_waver=   s     r   test_square_waverJ   Q   s    QBK44K{Q1R4L11A::a==AFSVVOa1r6lSQZZ.GG	QVs1q5zz!" " " " "  ##q2vAb1f'E	QVs1q5zz!DR!$4$44(5 5 5 5 5 5 5r   c                     t          t          t          dt          f          } |                     d          t          dz  t	          dt          z            z
  t	          dt          z            dz  z
  t	          dt          z            dz  z
  k    sJ t          t          t          ddf          } |                     d          t
          j        t	          dt          z  t          z            t          z  z
  t	          dt          z  t          z            dt          z  z  z
  t	          dt          z  t          z            dt          z  z  z
  k    sJ d S )Nr   rA   r      r    r   )r   r   r   r4   r   r   rB   )r=   s    r   test_sawtooth_waverM   \   s   q1a*%%A::a==
1s1Q3xx#ac((1*$s1Q3xxz12 2 2 2q1a)$$A::a==	QrT!VR#ad1f++qt"44s1R46{{AbD7IIJ J J J J Jr   c                     t                      \  } }|                     d                              t          dz            }|                                dt          t                    z  t          dt          z            z
  dt          dz  z  dz  z   k    sJ |                    t           dz                                            dt          t                    z  dt          dt          z            z  dz  z   dt          dt          z            z  dz  z   k    sJ                     d          }|                                dt          t                    z  dt          dt          z            z  z
  dt          dt          z            z  z   k    sJ |                     d          	                    d          }|                                dt          dt          z  dz             z  t          dt          z  dz             z   t          dz  dz  z   k    sJ |                     d                              t                                         d          	                    d                              d          }|                                d	t          dt          z  dz             z  dt          d
t          z  d
z             z  z   dt          z  z
  dt          dz  z  dz  z   k    sJ t          t          fd           t          t          fd           t          t          fd           t          t          fd           d S )NrF   r   rA   r    rG   rL   r   r!   i   c                  8                          t                    S r%   )shiftr   r   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>x   s    rxx{{ r   c                  R                          t          t                              S r%   )shiftxr   r   rR   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>y   s    ryyQ00 r   c                  H                          t          t          z            S r%   )scaler   r3   rR   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>z   s    rxx!}} r   c                  >                          t          dz            S )Nr   )scalexr   rR   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>{   s    ryyA r   )r   rV   rQ   r   r4   r   r   r   rX   rT   r   r;   )r   r   fesfosfxflr   s         @r   test_FourierSeries__operationsr]   e   s   JBB
((2,,

RU
#
#C<<>>Qs1vvXAaC01RU7Q;>>>>>88RCE??##%%!CFF(aAaCj1n*E+,S1XX:>+; < < < < ((1++C<<>>Qs1vvX#ac((
2Qs1Q3xxZ?????	1		Q		B;;==Bs1Q37||Oc!A#'ll:RUQYFFFFF	1		RC	 	 	'	'	*	*	1	1!	4	4	:	:1	=	=B;;==SQqS1W-#bdRi..0@@rT"$%b!eGaK0 1 1 1 1 :****+++
:0000111
:,,,,---
:..../////r   c                     t                      \  } }}|                                  dt          t                    z  t          dt          z            z   dt          dt          z            z  dz  z
  k    sJ |                                 dt	          t                    z  t	          dt          z            z
  t
          dz  dz  z
  k    sJ d S )Nr@   r   r    rA   )r   r4   r   r   r   r   r   s      r   test_FourierSeries__negr_   ~   s    JBBC>>r#a&&y3qs883qQqSzA~FFFFFC>>r#a&&y3qs883b!eai???????r   c                  @   t                      \  } }z                       d          k    sJ z
  dk    sJ |  | z
  |                     d          k    sJ | z                                   dt          t                    z  t          dt          z            z
  dt          t                    z  z
  t          dt          z            z   t          dz  dz  z   k    sJ | z
                                  dt          t                    z  t          dt          z            z
  dt          t                    z  z   t          dt          z            z
  t          dz  dz  z
  k    sJ t          dz   t                    sJ t          t          fd           d S )Nr   r   r@   rA   r    r   c                  D     t          t          t          ddf          z   S )Nr   r   r-   rR   s   r   r/   z.test_FourierSeries__add__sub.<locals>.<lambda>   s    rN1q!Qi$@$@@ r   )r   rV   r4   r   r   r   r   r5   r   r   r;   )r   r   r   s     @r   test_FourierSeries__add__subrb      s   JBB7bhhqkk!!!!7a<<<<38rxx||####G1SVV8c!A#hh#63q66#AC!HH#L
a%!)$    G1SVV8c!A#hh#63q66#AC!HH#L
a%!)$     b1fc"""""
:@@@@AAAAAr   c                  
   t          t          t                                                  d          t          t                    k    sJ t          t          t                    t	          t
                    z  t          t                    z  t          t          t           f                                          t          t                    t	          t
                    z  t          t                    z  k    sJ t          t          t                    dz                                t                    dt          dt          z            z  dz  dt          dt          z            z  dz  z   t          dt          z            dz  z
  t          d	d          z   k    sJ t          t          t                    dz                                            dt          dt          z            z  dz  dt          dt          z            z  dz  z   t          d	d          z   k    sJ t          t          dt          z  dz             t          dt          z  dz             z                                 t                    t          d           t          dt          z            z  t          dt          z            t          d          z  z   t          d          t          dt          z            z  z   t          d          t          dt          z            z  z   k    sJ t          t          t                    t          t                    t          t                    z  z                                 t                    dt          t                    z  k    sJ t          t          t          t          z            t          d
df                              t                    t          t          t          z            k    sJ t          t          dt          z  t          z  dz             t          dt          z  t          z            t	          t          t
          z            z  z
  t          d
df                              t                    t	          t          t
          z             t          dt          z  t          z            z  t          d          t          dt          z  t          z            z  z
  t          d          t          dt          z  t          z            z  z   k    sJ d S )Nr   rL   ir       r    rA      rG   rF   )r   r   r   r4   r
   r3   r	   zr   r   r   r   r   r.   r   r   test_FourierSeries_finiterg      s   #a&&!!**1--Q7777 #a&&Q-A."bSz::CCEEQPSTUPVPVWZ[\W]W]I]]]]]#a&&!)$$--b11SQqS\"_qQqSzRT}5TWZ[\]^[^W_W_`bWb5ba__6    #a&&A+&&//11S3q1u::5E5JQQTUVYZUZQ[Q[^^`M`5`a__6    #ac!e**s1Q3q5zz122;;B??SVVGCPQRSPSHHDTWZ[\]^[^W_W_`cde`f`fWfDfVVC!HH_E"1vvc!A#hhE/ / / / /#a&&QA.//88<<#a&&HHHH#bd))aQZ0099"==RTJJJJ#ad1fqj//C"QKKBqD		,AAAr1:NNWWXZ[[`cdfghdh`i`i_ijmnoprnrstntjuju_uVVC"QKK` "%a&&QrT!V"4`5 5 5 5 5 5 5r   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   r3   rf   r   r>   rD   rJ   rM   r]   r_   rb   rg   r.   r   r   <module>rr      s         1 1 1 1 1 1 1 1 1 1 " " " " " " % % % % % % = = = = = = = = : : : : : : J J J J J J J J J J J J / / / / / / . . . . . . ' ' ' ' ' '      
''

1a   ,= ,= ,=^> > >5 5 5J J J0 0 02@ @ @B B B"5 5 5 5 5r   