ó
ž9C]c           @` sf  d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l m Z e e j ƒ e d ƒ k  rÐ d  d l j j Z n d  d l j j Z d „  Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ  e! d k rbe d e j" ƒ n  d S(   i    (   t   divisiont   absolute_importt   print_functionN(   t   TestCaset   run_module_suitet   assert_t   assert_raisest   assert_equalt   assert_warnst   assert_allclose(   t   random(   t   LooseVersions   1.17.0c         C` sC   |  | k r t  St | t j ƒ r6 t | d ƒ r6 t  S|  j d k S(   s|   
    Strict check for `arr` not sharing any data with `original`,
    under the assumption that arr = asarray(original)
    t	   __array__N(   t   Falset
   isinstancet   npt   ndarrayt   hasattrt   baset   None(   t   arrt   original(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   _datacopied.   s
    "t   Test_mklfft_vectorc           B` s}   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C` sz   t  j d ƒ t  j d ƒ |  _ |  j j t j ƒ |  _ t  j d ƒ j d t j	 ƒ j
 ƒ  |  _ |  j j t j ƒ |  _ d  S(   Ni‡Ö i€   i   t   dtype(   i€   i   (   t   rndt   seedt   standard_normalt   xd1t   astypeR   t   float32t   xf1t   viewt
   complex128t   squeezet   xz1t	   complex64t   xc1(   t   self(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   setUp;   s
    'c         C` s~   t  j |  j ƒ } t j |  j ƒ } t | | d d d d ƒt  j |  j ƒ } t j |  j ƒ } t | | d d d d ƒd S(   s5   check that mkl_fft gives the same result of numpy.fftt   rtolgH¯¼šò×z>t   atolgê-™—=gíµ ÷ÆÀ>N(   t   mkl_fftt   fftR#   t   np_fftR	   R%   (   R&   t   f1t   f2(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector1B   s    c         C` sò   t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j	 ƒ } t  j | ƒ } t t j |  j	 | d d ƒƒ d S(   s   ifft(fft(x)) is identityR)   gH¯¼šò×Š>N(
   R*   R+   R#   t   ifftR   R   t   allcloseR%   R   R   (   R&   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector2L   s    c         C` sò   t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j ƒ } t  j | ƒ } t t j |  j | ƒ ƒ t  j |  j	 ƒ } t  j | ƒ } t t j |  j	 | d d ƒƒ d S(   s   fft(ifft(x)) is identityR)   gH¯¼šò×Š>N(
   R*   R0   R#   R+   R   R   R1   R%   R   R   (   R&   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector3^   s    c         C` s¤   |  j  d d d … } t j | ƒ } t j | j ƒ  ƒ } t t j | | ƒ ƒ |  j  d d d … } t j | ƒ } t j | j ƒ  ƒ } t t j | | ƒ ƒ d S(   s0   fft of strided is same as fft of contiguous copyNi   iÿÿÿÿ(   R#   R*   R+   t   copyR   R   R1   (   R&   t   xR-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector4p   s    c         C` sj   |  j  j ƒ  d d d … } t j | d t ƒ} t j |  j  d d d … ƒ } t t j | | ƒ ƒ d S(   s,   fft in-place is the same as fft out-of-placeNiþÿÿÿt   overwrite_x(   R#   R4   R*   R+   t   TrueR   R   R1   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector5|   s    c         C` sÝ   |  j  j ƒ  } t j | d t ƒ} t t | | ƒ ƒ |  j  j ƒ  } t j | d d d … d t ƒ} t t j | |  j  ƒ ƒ t t j | d d d … |  j  d d d … ƒ ƒ t t j | d d d … | ƒ ƒ d S(   s   fft in placeR7   Niþÿÿÿiÿÿÿÿ(	   R#   R4   R*   R+   R8   R   R   R   R1   (   R&   R5   R-   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector6ƒ   s    "3c         C` sZ   |  j  d d d … } t j | ƒ } t j | j t j ƒ ƒ } t t j | | ƒ ƒ d S(   s8   fft of real array is the same as fft of its complex casti   i   i   N(   R   R*   R+   R   R   R!   R   R1   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector7   s    c         C` sZ   |  j  d d d … } t j | ƒ } t j | j t j ƒ ƒ } t t j | | ƒ ƒ d S(   s9   ifft of real array is the same as fft of its complex casti   i   i   N(   R   R*   R0   R   R   R!   R   R1   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector8–   s    c         C` s|   t  j |  j j d d ƒ} d | d <d | d <t  j j |  j d | ƒ} t j | ƒ } t j |  j ƒ } t | | ƒ d S(   s   works on subtypes of ndarrayR   t   inti   iþÿÿÿt   maskN(	   R   t   zerosR   t   shapet   mat   masked_arrayR*   R+   R	   (   R&   R>   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector9   s    

c         C` s   |  j  d  j ƒ  } t j | d d ƒ} t j |  j  d  ƒ } t | | ƒ t j | d d ƒ} |  j  d  j ƒ  } d | d <t j | ƒ } t | | ƒ d S(   s   check n for real arraysi   t   ni   i	   g        iÿÿÿÿN(   R   R4   R*   R+   R	   (   R&   R5   R-   R.   t   y(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector10§   s    
c         C` s   |  j  d  j ƒ  } t j | d d ƒ} t j |  j  d  ƒ } t | | ƒ t j | d d ƒ} |  j  d  j ƒ  } d	 | d <t j | ƒ } t | | ƒ d S(
   s   check n for complex arraysi   RD   i   i	   g        y                iÿÿÿÿNy                (   R#   R4   R*   R+   R	   (   R&   R5   R-   R.   RE   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector11´   s    
c         C` sJ   t  j d ƒ } t j | ƒ } t j | j t  j ƒ ƒ } t | | ƒ d S(   s   check fft of float-valued arrayi   N(   R   t   arangeR*   R+   R   t   float64R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_vector12Á   s    (   t   __name__t
   __module__R'   R/   R2   R3   R6   R9   R:   R;   R<   RC   RF   RG   RJ   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyR   :   s   		
								
		t   Test_mklfft_matrixc           B` sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C` s°   t  j d ƒ t  j d ƒ |  _ |  j j t j ƒ |  _ t j t  j d ƒ t j	 d d g d t j
 ƒƒ |  _ |  j j t j ƒ |  _ t j |  j ƒ |  _ t  j d ƒ |  _ d  S(   Ni‡Ö i   i   i   i   i   g      ð?y                g        y              ð?R   i€   (   i   i   (   i   i   i   y      ð?        y              ð?(   R   R   R   t   ad2R   R   R   t   af2t   dott   arrayR!   t   az2R$   t   ac2t   matrixt   matR   (   R&   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyR'   Ê   s    $c         C` sØ   |  j  j ƒ  } t j | ƒ } t j g  t | j d ƒ D] } t j | | ƒ ^ q8 ƒ } t | | ƒ t j | d d ƒ} t j g  t | j d ƒ D]% } t j | d  d  … | f ƒ ^ q– ƒ j	 } t | | ƒ d  S(   Ni    t   axisi   (
   RR   R4   R*   R+   R   RQ   t   rangeR@   R	   t   T(   R&   R5   R-   t   iR.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix1Ö   s    <Kc         C` s5   t  j |  j ƒ } t  j |  j ƒ } t | | ƒ d  S(   N(   R*   R+   RR   RU   R	   (   R&   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix2à   s    c         C` s|   |  j  j ƒ  } t j | d  d  d … d  d  d … f ƒ } t j | d  d  d … d  d  d … f j ƒ  ƒ } t | | ƒ d  S(   Ni   iÿÿÿÿ(   RR   R4   R*   R+   R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix3å   s    +1c         C` s|   |  j  j ƒ  } t j | d  d  d … d  d  d … f ƒ } t j | d  d  d … d  d  d … f d t ƒ} t | | ƒ d  S(   Ni   iÿÿÿÿR7   (   RR   R4   R*   R+   R8   R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix4ë   s    +1c         C` s>   |  j  } t j | ƒ } t j | ƒ } t | | d d ƒd  S(   NR)   g»½×Ùß|Û=(   RN   R*   R+   R0   R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix5ñ   s    	c         C` s>   |  j  } t j | ƒ } t j | ƒ } t | | d d ƒd  S(   NR)   g»½×Ùß|Û=(   RN   R*   R0   R+   R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix6÷   s    	c         C` sØ   |  j  j ƒ  } t j | ƒ } t j g  t | j d ƒ D] } t j | | ƒ ^ q8 ƒ } t | | ƒ t j | d d ƒ} t j g  t | j d ƒ D]% } t j | d  d  … | f ƒ ^ q– ƒ j	 } t | | ƒ d  S(   Ni    RV   i   (
   RN   R4   R*   R+   R   RQ   RW   R@   R	   RX   (   R&   R5   R-   RY   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix7ý   s    <Kc         C` sŒ   d d l  m } |  j d  j ƒ  } | | d d d d | j | j f ƒ} t j | ƒ } t j | j ƒ  ƒ } t | | d d	 d
 d ƒd  S(   Ni    (   t
   as_stridedi
   R@   i   t   stridesi   R)   gVçž¯Ò<R(   gH¯¼šò×z>(   i   i   (   t   numpy.lib.stride_tricksRa   R   R4   t   itemsizeR*   R+   R	   (   R&   Ra   R5   RE   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_matrix8  s    ((   RK   RL   R'   RZ   R[   R\   R]   R^   R_   R`   Re   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyRM   É   s   		
						
t   Test_mklfft_rank3c           B` sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s‰   t  j d ƒ t  j d ƒ |  _ |  j j t j ƒ |  _ t j t  j d ƒ t j	 d d g d t j
 ƒƒ |  _ |  j j t j ƒ |  _ d  S(   Ni‡Ö i   i   i   i   i   i   i   g      ð?y                g        y              ð?R   (   i   i   i   (   i   i   i   i   y      ð?        y              ð?(   R   R   R   t   ad3R   R   R   t   af3RP   RQ   R!   t   az3R$   t   ac3(   R&   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyR'     s    $c         C` sd   |  j  } xT t | j ƒ D]C } t j | d | ƒ} t j | d | ƒ} t | | d d ƒq Wd  S(   NRV   R)   gVçž¯â<(   Ri   RW   t   ndimR*   R+   R0   R	   (   R&   R5   t   axR-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array1  s
    	c         C` sd   |  j  } xT t | j ƒ D]C } t j | d | ƒ} t j | d | ƒ} t | | d d ƒq Wd  S(   NRV   R)   gVçž¯â<(   Rg   RW   Rk   R*   R+   R0   R	   (   R&   R5   Rl   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array2"  s
    	c         C` sd   |  j  } xT t | j ƒ D]C } t j | d | ƒ} t j | d | ƒ} t | | d d ƒq Wd  S(   NRV   R)   gVçž¯â<(   Ri   RW   Rk   R*   R0   R+   R	   (   R&   R5   Rl   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array3)  s
    	c         C` sd   |  j  } xT t | j ƒ D]C } t j | d | ƒ} t j | d | ƒ} t | | d d ƒq Wd  S(   NRV   R)   gVçž¯â<(   Rg   RW   Rk   R*   R0   R+   R	   (   R&   R5   Rl   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array40  s
    	c         C` s¤  |  j  } | t j } t j | d d ƒ} t j | j | j ƒ d d ƒ} t | | d d ƒ| d d … t j f } t j | d d ƒ} t j | j | j ƒ d d ƒ} t | | d d ƒ| d d … d d … t j f } t j | d d ƒ} t j | j | j ƒ d d ƒ} t | | d d ƒ| d d … d d … d d … t j f } t j | d d ƒ} t j | j | j ƒ d d ƒ} t | | d d ƒd S(   s.   Inputs with zero strides are handled correctlyRV   iÿÿÿÿR)   gVçž¯â<N(   Ri   R   t   newaxisR*   R+   t   reshapeR@   R	   (   R&   t   zt   z1R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array58  s"    	!!"!+!c         C` s¥   |  j  } | j | j d d ƒ} t j | d d ƒ} t j |  j  d d ƒ} t | | d d ƒt j | d d ƒ} t j |  j  d d ƒ} t | | d d ƒd S(	   s:   Inputs with Fortran layout are handled correctly, issue 29t   ordert   FRV   i    R)   gVçž¯â<iÿÿÿÿN(   Ri   R   R   R*   R+   R	   (   R&   Rs   t   y1t   y2(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test_array6L  s    	(	   RK   RL   R'   Rm   Rn   Ro   Rp   Ru   Rz   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyRf     s   	
					t   Test_mklfft_rfftc           B` s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` sP   t  j d ƒ t  j d ƒ |  _ t  j d d ƒ |  _ t  j d d d ƒ |  _ d  S(   Ni‡Ö i   i   i   i   (   R   R   t   randnt   v1t   m2t   t3(   R&   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyR'   Y  s    c         C` s>   |  j  j ƒ  } t j | ƒ } t j | ƒ } t | | ƒ d  S(   N(   R}   R4   R*   t   rfftt   irfftR	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test1_  s    c         C` s>   |  j  j ƒ  } t j | ƒ } t j | ƒ } t | | ƒ d  S(   N(   R}   R4   R*   R   R€   R	   (   R&   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test2e  s    c      	   C` sÔ   xÍ t  d d ƒ D]¼ } x³ t t g D]¥ } xœ t t j t j g d d g ƒ D]y \ } } |  j j ƒ  j	 | ƒ } t
 j | d | d | ƒ} t
 j | d | d | ƒ} t | |  j j	 | ƒ d | ƒqK Wq# Wq Wd  S(   Ni    i   gH¯¼šò×Š>gVçž¯â<RV   R7   R)   (   RW   R8   R   t   zipR   R   RI   R~   R4   R   R*   R€   R   R	   (   R&   t   at   ovwr_xt   dtR)   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test3k  s    .c      	   C` sÔ   xÍ t  d d ƒ D]¼ } x³ t t g D]¥ } xœ t t j t j g d d g ƒ D]y \ } } |  j j ƒ  j	 | ƒ } t
 j | d | d | ƒ} t
 j | d | d | ƒ} t | |  j j	 | ƒ d | ƒqK Wq# Wq Wd  S(   Ni    i   gH¯¼šò×Š>gVçž¯â<RV   R7   R)   (   RW   R8   R   R„   R   R   RI   R~   R4   R   R*   R   R€   R	   (   R&   R…   R†   R‡   R)   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test4t  s    .c      	   C` sÔ   xÍ t  d d ƒ D]¼ } x³ t t g D]¥ } xœ t t j t j g d d g ƒ D]y \ } } |  j j ƒ  j	 | ƒ } t
 j | d | d | ƒ} t
 j | d | d | ƒ} t | |  j j	 | ƒ d | ƒqK Wq# Wq Wd  S(   Ni    i   gH¯¼šò×š>gVçž¯ò<RV   R7   R)   (   RW   R8   R   R„   R   R   RI   R   R4   R   R*   R   R€   R	   (   R&   R…   R†   R‡   R)   R5   R-   R.   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   test5}  s    .(   RK   RL   R'   R‚   Rƒ   Rˆ   R‰   RŠ   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyR{   X  s   							t   __main__t   argv(#   t
   __future__R    R   R   t   numpyR   t   numpy.testingR   R   R   R   R   R   R	   R
   R   t   syst   warningsR*   t   distutils.versionR   t   __version__t   numpy.fft.fftpackR+   t   fftpackR,   t   numpy.fft.pocketfftt	   pocketfftR   R   RM   Rf   R{   RK   RŒ   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fft1d.pyt   <module>   s"   4	GH.