
    sg                        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&y)    )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      R/var/www/html/venv/lib/python3.12/site-packages/sympy/series/tests/test_fourier.py_get_examplesr      s_    	AsB<	(B	1sBi	(B		1a!e*r4j9AsB<	HBr2:    c                     t               \  } }}t        dt         t        f      dk(  sJ t        dt        dk  ft        df      j                  t        t         t        f      j                         |j                         k(  sJ t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ | j                  t         t        fk(  sJ | j                  d      dt        dt        z        z  dz  k(  sJ |j                  d      dt        dt        z        z  dz  k(  sJ |j                  d      dt        dt        z        z  dz  k(  sJ | j                  t              dt        t              z  k(  sJ |j                  t              t        dz  dz  k(  sJ |j                  t              t        dz  k(  sJ | j                         dt        t              z  t        dt        z        z
  dt        dt        z        z  dz  z   k(  sJ |j                         dt        t              z  t        dt        z        z   t        dz  dz  z   k(  sJ |j                         dt        t              z  dt        dt        z        z  dz  z   t        dz  z   k(  sJ | j                  d       }ddt        t              z  t        dt        z         g}t        |      D ]  \  }}|dk(  r n||   |k(  rJ  d	 } || d        ||d        ||d       | j                  t        t        dz        | k(  sJ t!        t"        d
        t!        t"        d        t!        t"        d        y )N   r   T   r   	   )nc                 L    t        |       D ]  \  }}|| |   k(  sJ ||k(  s y  y N)	enumerate)fiindts       r   _check_iterz'test_FourierSeries.<locals>._check_iter6   s3    l 	FC#;;ax	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                  8    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                  <    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b-(((;;!4419999"b	!!!771:3qs8a'''771:C!Hq(((771:3qs8a'''a Ac!fH,,,a BEAI---a BF***;;=Ac!fHs1Q3x/1S1X:>BBBB;;=Bs1vIAaC02q519<<<<;;=Ac!fH#ac(
Q7"q&@@@@
+++
C	
Ac!fHs1Q3xi A# 16tqyy
 AAA771adr!!!
:;<
:<=
:;<r   c                  L   t        dt        dk  ft        df      } t        | t        ddf      }|j                  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 |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 y )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!93qtAvz?*ad33qtAvz?*aAg67 8 8 8::<Ac"Q$(mOb03r!t9r>Ac"Q$(mOb!e3467ff= > > >r   c                  0   t        dt        t        k  fd      } t        | t        ddt        z  f      }|j	                  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 |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 y)	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4K{Q1R4L1A::a=AFSVOa1r6lSQZ.GG	QVs1q5z!" " " "  #q2vAb1f'E	QVs1q5z!DR!$44(5 5 5 5r   c                  :   t        t        t        dt        f      } | j                  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      } | j                  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 y )Nr   rA   r      r    r   )r   r   r   r4   r   r   rB   )r=   s    r   test_sawtooth_waverM   \   s    q1a*%A::a=
1s1Q3x#ac(1*$s1Q3xz12 2 2q1a)$A::a=	QrT!VR#ad1f+qt"44s1R46{AbD7IIJ J Jr   c                  t   t               \  } }| j                  d      j                  t        dz        }|j	                         dt        t              z  t        dt        z        z
  dt        dz  z  dz  z   k(  sJ |j                  t         dz        j	                         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 j                  d      }|j	                         dt        t              z  dt        dt        z        z  z
  dt        dt        z        z  z   k(  sJ | j                  d      j                  d      }|j	                         dt        dt        z  dz         z  t        dt        z  dz         z   t        dz  dz  z   k(  sJ | j                  d      j                  t               j                  d      j                  d      j                  d      }|j	                         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       y )NrF   r   rA   r    rG   rL   r   r!   i   c                  .     j                  t              S r%   )shiftr   r   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>x   s    rxx{ r   c                  @     j                  t        t                    S r%   )shiftxr   r   rR   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>y   s    ryyQ0 r   c                  <     j                  t        t        z        S r%   )scaler   r3   rR   s   r   r/   z0test_FourierSeries__operations.<locals>.<lambda>z   s    rxx!} r   c                  4     j                  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   s7   JBB
((2,

RU
#C<<>Qs1vXAaC01RU7Q;>>>>88RCE?##%!CF(aAaCj1n*E+,S1X:>+; < < < ((1+C<<>Qs1vX#ac(
2Qs1Q3xZ????	1		Q	B;;=Bs1Q37|Oc!A#'l:RUQYFFFF	1		RC	 	'	'	*	1	1!	4	:	:1	=B;;=SQqS1W-#bdRi.0@@rT"$%b!eGaK0 1 1 1 :*+
:01
:,-
:./r   c                  P   t               \  } }}|  j                         dt        t              z  t        dt        z        z   dt        dt        z        z  dz  z
  k(  sJ | j                         dt	        t              z  t	        dt        z        z
  t
        dz  dz  z
  k(  sJ y )Nr@   r   r    rA   )r   r4   r   r   r   r   r   s      r   test_FourierSeries__negr_   ~   s    JBBC>>r#a&y3qs83qQqSzA~FFFFC>>r#a&y3qs83b!eai????r   c                     t               \  } }z   j                  d      k(  sJ z
  dk(  sJ |  | z
  | j                  d      k(  sJ | z   j                         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
  j                         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       y )Nr   r   r@   rA   r    r   c                  8     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      s7   JBB7bhhqk!!!7a<<38rxx|###G1SV8c!A#h#63q6#AC!H#L
a%!)$   G1SV8c!A#h#63q6#AC!H#L
a%!)$    b1fc"""
:@Ar   c                  :   t        t        t                    j                  d      t        t              k(  sJ t        t        t              t	        t
              z  t        t              z  t        t        t         f      j                         t        t              t	        t
              z  t        t              z  k(  sJ t        t        t              dz        j                  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        j                         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         j                  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         j                  t              dt        t              z  k(  sJ t        t        t        t        z        t        d
df      j                  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      j                  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 y )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      s5   #a&!**1-Q777 #a&Q-A."bSz:CCEQPSTUPVWZ[\W]I]]]]#a&!)$--b1SQqS\"_qQqSzRT}5TWZ[\]^[^W_`bWb5ba_6   #a&A+&//1S3q1u:5E5JQQTUVYZUZQ[^^`M`5`a_6   #ac!e*s1Q3q5z12;;B?SVGCPQRSPSHDTWZ[\]^[^W_`cde`fWfDfVC!H_E"1vc!A#hE/ / / /#a&QA./88<#a&HHH#bd)aQZ099"=RTJJJ#ad1fqj/C"QKBqD	,AAAr1:NWWXZ[`cdfghdh`i_ijmnoprnrstntju_uVC"QK` "%a&QrT!V"4`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 " % = : J J / . ' 
'
1a  ,=^>5J02@B"5r   