ó
¡¼™\c           @   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 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 S(   iÿÿÿÿ(   t   symbolst   pit	   Piecewiset   sint   cost   sinct   Rationalt   oot   fourier_seriest   Addt   logt   expt   tan(   t   FourierSeries(   t   raises(   t	   lru_caches   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 t f ƒ t t t f ƒ } |  | | f S(   Ni   i    (   R   t   xR   R   t   True(   t   fot   fet   fp(    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   _get_examples
   s    4c          C   sŠ  t  ƒ  \ }  } } t d t t f ƒ d k s4 t ‚ t d t d k  f t t f ƒ j t t t f ƒ j ƒ  | j ƒ  k s€ t ‚ t |  t	 ƒ s• t ‚ |  j
 t k sª t ‚ |  j t k s¿ t ‚ |  j t t f k sÛ t ‚ |  j d ƒ d t d t ƒ d k st ‚ | j d ƒ d t d t ƒ d k s5t ‚ | j d ƒ d t d t ƒ d k sbt ‚ |  j t ƒ d t t ƒ k s‡t ‚ | j t ƒ t d d k sªt ‚ | j t ƒ t d k sÉt ‚ |  j ƒ  d t t ƒ t d t ƒ d t d t ƒ d k st ‚ | j ƒ  d t t ƒ t d t ƒ t d d k sKt ‚ | j ƒ  d t t ƒ d t d t ƒ d t d k s‹t ‚ |  j d d  ƒ } d d t t ƒ t d t ƒ g } x@ t | ƒ D]2 \ } } | d k rêPn  | | | k sÎt ‚ qÎWd „  } | |  d ƒ | | d ƒ | | d ƒ |  j t t d ƒ |  k sVt ‚ t t d	 „  ƒ t t d
 „  ƒ t t d „  ƒ d  S(   Ni   i    i   i   iüÿÿÿi	   t   nc         S   sG   x@ t  |  ƒ D]2 \ } } | |  | k s/ t ‚ | | k r Pq q Wd  S(   N(   t	   enumeratet   AssertionError(   t   ft   it   indt   t(    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   _check_iter0   s    c           S   s   t  t d ƒ S(   Ni    i   i   (   i    i   i   (   R   R   (    (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   <lambda><   t    c           S   s   t  t t d t f ƒ S(   Ni    (   R   R   R   (    (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   =   R   c           S   s   t  t t d t f ƒ S(   Ni    (   R   R   t   yR   (    (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   >   R   (   R   R   R   R   R   R   R   t   truncatet
   isinstanceR   t   functiont   periodt   termR   R   t   as_leading_termt   NoneR   t   subsR   t
   ValueError(   R   R   R   t   fott   sR   R   R   (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries   s>    "!+---%#F<@$	"c          C   s  t  d t d k  f t t f ƒ }  t |  t d d f ƒ } | j d ƒ d t d t t d ƒ d t d t d t t d ƒ d t d k s˜ t ‚ | j	 ƒ  d t t t d ƒ t t t t ƒ t d t t t d ƒ t d t
 d d ƒ k st ‚ d  S(   Ni    iþÿÿÿi   i   i   i	   i   (   R   R   R   R   R%   R   R   R   R   R!   R   (   t   pR   (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries_2A   s    !-2	c          C   s  t  d t t k  f d t f ƒ }  t |  t d d t f ƒ } | j d ƒ d t t t ƒ d d t t d t ƒ d d t t d t ƒ k sš t ‚ | j d ƒ d t t t ƒ t	 t d ƒ d d t t d t ƒ t	 d t d ƒ k sý t ‚ d S(	   sE   Test if fourier_series approximates discontinuous function correctly.i   iÿÿÿÿi    i   i   i   i   N(
   R   R   R   R   R   R!   R   R   t   sigma_approximationR   (   t   square_waveR+   (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_fourier_series_square_waveK   s    !7&+c             sg  t  ƒ  \ ‰  }  } |  j d ƒ j t d ƒ } | j ƒ  d t t ƒ t d t ƒ d t d d k sn t ‚ | j t d ƒ j ƒ  d t t ƒ d t d t ƒ d d t d t ƒ d k sÊ t ‚ ˆ  j d ƒ } | j ƒ  d t t ƒ d t d t ƒ d t d t ƒ k st ‚ |  j	 d ƒ j
 d ƒ } | j ƒ  d t d t d ƒ t d t d ƒ t d d k st ‚ |  j	 d ƒ j t ƒ j	 d ƒ j
 d ƒ j d ƒ } | j ƒ  d	 t d t d ƒ d t d
 t d
 ƒ d t d t d d k st ‚ t t ‡  f d †  ƒ t t ‡  f d †  ƒ t t ‡  f d †  ƒ t t ‡  f d †  ƒ d  S(   Niÿÿÿÿi   i   i   i   i   i   iüÿÿÿiðÿÿÿi   c              s   ˆ  j  t ƒ S(   N(   t   shiftR   (    (   R   (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   i   R   c              s   ˆ  j  t t ƒ ƒ S(   N(   t   shiftxR   R   (    (   R   (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   j   R   c              s   ˆ  j  t t ƒ S(   N(   t   scaleR   R    (    (   R   (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   k   R   c              s   ˆ  j  t d ƒ S(   Ni   (   t   scalexR   (    (   R   (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   l   R   (   R   R4   R2   R   R!   R   R   R   R   R5   R3   R   R)   (   R   R   t   fest   fost   fxt   fl(    (   R   s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries__operationsV   s     @:"FH4	Oc          C   s›   t  ƒ  \ }  } } |  j ƒ  d t t ƒ t d t ƒ d t d t ƒ d k sY t ‚ | j ƒ  d 
t t ƒ t d t ƒ t d d k s— t ‚ d  S(   Niþÿÿÿi   i   i   (   R   R!   R   R   R   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries__nego   s    Gc             sR  t  ƒ  \ ‰  }  } ˆ  ˆ  ˆ  j d ƒ k s1 t ‚ ˆ  ˆ  d k sG t ‚ |  |  |  j d ƒ k sg t ‚ ˆ  |  j ƒ  d t t ƒ t d t ƒ d t t ƒ t d t ƒ t d d k sÃ t ‚ ˆ  |  j ƒ  d t t ƒ t d t ƒ d t t ƒ t d t ƒ t d d k st ‚ t ˆ  d t	 ƒ s8t ‚ t
 t ‡  f d †  ƒ d  S(   Ni   i    iþÿÿÿi   i   i   c              s   ˆ  t  t t d d f ƒ S(   Ni    i   (   R   R   (    (   R   (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyR   „   R   (   R   R4   R   R!   R   R   R   R   R"   R	   R   R)   (   R   R   (    (   R   s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries__add__subv   s     OOc           C   s7  t  t t ƒ ƒ j d ƒ t t ƒ k s- t ‚ t  t t ƒ t t ƒ t t ƒ t t	 t	 f ƒ j ƒ  t t ƒ t t ƒ t t ƒ k sŒ t ‚ t  t t ƒ d ƒ j 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 ƒ j ƒ  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 ƒ ƒ j 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 ƒ ƒ j t
 ƒ d t t ƒ k s>t ‚ t  t t	 t ƒ t d
 d f ƒ j t
 ƒ t t	 t ƒ k st ‚ t  t d t	 t d ƒ t d t	 t ƒ t t	 t ƒ t d
 d f ƒ j t
 ƒ t t	 t ƒ t d t	 t ƒ t d ƒ t d t	 t ƒ t d ƒ t d t	 t ƒ k s3t ‚ d  S(   Ni   i   iñÿÿÿi   i    i   i   i   i   iÿÿÿÿ(   R   R   R   R!   R   R
   R    R   t   zR   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   test_FourierSeries_finite‡   s    -_VD2lEAPN(   t   sympyR    R   R   R   R   R   R   R   R   R	   R
   R   R   t   sympy.series.fourierR   t   sympy.utilities.pytestR   t   sympy.core.cacheR   R   R    R=   R   R,   R.   R1   R:   R;   R<   R>   (    (    (    s>   lib/python2.7/site-packages/sympy/series/tests/test_fourier.pyt   <module>   s   X	/	
				