ó
ž9C]c           @` s  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 e j e j ƒ j Z d e j e j  ƒ j Z! d e j e j ƒ j Z" d e j e j  ƒ j Z# d
 „  Z$ d e f d „  ƒ  YZ% d e f d „  ƒ  YZ& 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.0i   i   i   c         C` s¸   |  j  } | t j k s' | t j k r1 t t f S| t j k sO | t j k rY t t	 f S| t j k sª | t j k sª | t j k sª | t j k sª t
 d j | ƒ ƒ ‚ t t f Sd  S(   Ns   Unexpected dtype {}(   t   dtypet   npt   doublet
   complex128t   reps_64t   atol_64t   singlet	   complex64t   reps_32t   atol_32t   AssertionErrort   format(   t   xt   dt(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   _get_rtol_atol2   s    	

Qt   Test_mklfft_matrixc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` sw   t  j d ƒ t  j d d ƒ |  _ |  j j t j ƒ |  _ t  j d d ƒ j t j	 ƒ |  _
 |  j
 j t j ƒ |  _ d  S(   Ni@â i   i   i   (   t   rndt   seedt   randnt   mdt   astypeR   t   float32t   mft   viewR   t   mzR   t   mc(   t   self(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   setUp>   s
    !c         C` s*  x#|  j  |  j |  j |  j g D]} t | ƒ \ } } | j ƒ  } t j | ƒ } t j t j | d d ƒd d ƒ} t j t j | d d ƒd d ƒ} t	 | | d | d | d d j
 | j t j t j | | ƒ ƒ ƒ ƒt	 | | d | d | d d j
 | j t j t j | | ƒ ƒ ƒ ƒq Wd S(	   s   fftn equals repeated fftt   axisi    i   t   rtolt   atolt   err_msgs*   failed test for dtype {}, max abs diff: {}N(   R   R$   R"   R%   R   t   copyt   mkl_fftt   fftnt   fftR	   R   R   R   t   maxt   abs(   R&   t   art   r_tolt   a_tolt   dt   t1t   t2t   t3(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_matrix1E   s    %$$Dc         C` s§   x  |  j  |  j |  j |  j g D]€ } | j ƒ  } t | ƒ \ } } t j t j | ƒ ƒ } t	 | | d | d | d d j
 | j t j t j | | ƒ ƒ ƒ ƒq Wd S(   s   ifftn(fftn(x)) is xR)   R*   R+   s*   failed test for dtype {}, max abs diff: {}N(   R   R$   R"   R%   R,   R   R-   t   ifftnR.   R	   R   R   R   R0   R1   (   R&   R2   R5   R3   R4   t   t(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_matrix2P   s
    %c         C` s§   x  |  j  |  j |  j |  j g D]€ } | j ƒ  } t | ƒ \ } } t j t j | ƒ ƒ } t	 | | d | d | d d j
 | j t j t j | | ƒ ƒ ƒ ƒq Wd S(   s   fftn(ifftn(x)) is xR)   R*   R+   s*   failed test for dtype {}, max abs diff: {}N(   R   R$   R"   R%   R,   R   R-   R.   R:   R	   R   R   R   R0   R1   (   R&   R2   R5   R3   R4   R;   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_matrix3X   s
    %c         C` s¤   x |  j  |  j |  j |  j g D]} } t | ƒ \ } } | d d d … d d d … f } | j ƒ  } t j | ƒ } t j | ƒ } t | | d | d | ƒq Wd S(   s:   fftn of strided array is same as fftn of a contiguous copyNi   R)   R*   (	   R   R$   R"   R%   R   R,   R-   R.   R	   (   R&   R2   R3   R4   t	   d_stridedt   d_contigt	   t_stridedt   t_contig(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_matrix4a   s    %"(   t   __name__t
   __module__R'   R9   R<   R=   RB   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyR   =   s
   					t   Test_Regressionsc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s}   t  j d ƒ t  j d d d ƒ |  _ |  j j t j ƒ |  _ t  j d d d ƒ j t j	 ƒ |  _
 |  j
 j t j ƒ |  _ d  S(   Ni@â i    i   i   i   i.   (   R   R   R   t   adR    R   R!   t   afR#   R   t   azR   t   ac(   R&   (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyR'   n   s
    $c   	   	   C` s·   x° |  j  |  j |  j |  j g D] } t | ƒ \ } } | j ƒ  } t j | ƒ } xZ t | j	 ƒ D]I } t
 j | d | ƒ} t
 j | d | ƒ} t | | d | d | ƒqb Wq Wd S(   sG   fft of F-contiguous array is the same as of C-contiguous with same dataR(   R)   R*   N(   RF   RG   RH   RI   R   R,   R   t   asfortranarrayt   ranget   ndimR-   R/   R	   (	   R&   R2   R3   R4   t   d_ccontt   d_fcontt   at   f1t   f2(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_cf_contigu   s    %c      	   C` s±   d d	 d
 d d d g } x’ |  j  |  j g D]~ } xu | D]m } t | ƒ \ } } t j t j | | ƒ ƒ } t j t j | d | ƒ| ƒ } t | | d | d | ƒq8 Wq+ Wd S(   s'   Test that rfftn_numpy works as expectedi    i   i   t   axesR)   R*   N(   i    i   i   (   i    i   i   (   i   i    i   (   i   i   i    (   i   i    i   (   i   i   i    (   RF   RG   R   R-   t   rfftn_numpyR   t	   transposeR	   (   R&   RS   R   RO   R3   R4   t   rfft_trt   tr_rfft(    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   test_rfftn_numpy€   s    !(   RC   RD   R'   RR   RX   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyRE   l   s   		i   i   i   i   ('   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   fftpackt   np_fftt   numpy.fft.pocketfftt	   pocketfftt   finfot   float64t   epsR   R!   R   R   R   R   R   RE   (    (    (    s7   lib/python2.7/site-packages/mkl_fft/tests/test_fftnd.pyt   <module>   s"   4	/