ó
ÐEe]c           @` sÜ   d  Z  d d l m Z m Z m Z d d l Z d d l m Z m	 Z	 d d l m
 Z
 m Z d d l m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sf   Test functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005

i    (   t   divisiont   absolute_importt   print_functionN(   t   assert_array_almost_equalt   assert_equal(   t   fftt   pi(   t	   _FFTCachet   TestFFTShiftc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c      
   C` sæ   d d d d d d d d d	 g	 } d d d d	 d d d d d g	 } t  t j | ƒ | ƒ t  t j | ƒ | ƒ d d d d d d
 d d d d	 g
 } d
 d d d d	 d d d d d g
 } t  t j | ƒ | ƒ t  t j | ƒ | ƒ d  S(   Ni    i   i   i   i   iüÿÿÿiýÿÿÿiþÿÿÿiÿÿÿÿiûÿÿÿ(   R   R   t   fftshiftt	   ifftshift(   t   selft   xt   y(    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_definition   s    !!$$c         C` sX   xQ d d d d d g D]: } t  j j | f ƒ } t t j t j | ƒ ƒ | ƒ q Wd  S(   Ni   i   i	   id   iÓ   (   t   npt   randomR   R   R
   R	   (   R   t   nR   (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_inverse   s    c         C` s  d d d g d d d g d d d	 g g } d	 d d g d d d g d d d g g } t  t j | d
 d ƒ| ƒ t  t j | d
 d ƒt j | d
 d ƒƒ t  t j | d
 d ƒ| ƒ t  t j | d
 d ƒt j | d
 d ƒƒ t  t j | ƒ | ƒ t  t j | ƒ | ƒ d  S(   Ni    i   i   i   i   iüÿÿÿiýÿÿÿiþÿÿÿiÿÿÿÿt   axes(   i    i   (   i    (   i    i   (   i    (   R   R   R	   R
   (   R   t   freqst   shifted(    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_axes_keyword   s    **c         C` s  d d g d d g d d g g } d d g d d g d d g g } t  t j | d d ƒ| ƒ t  t j | d d ƒ| ƒ t  t j | d d	 ƒ| ƒ t  t j | d d g ƒ| ƒ d d g d d g d d g g } t  t j | d d ƒ| ƒ t  t j | d d ƒ| ƒ d d g d d g d d g g } t  t j | d d
 ƒ| ƒ t  t j | d d ƒ| ƒ t  t j | d d d g ƒ| ƒ t  t j | d d d g ƒ| ƒ t  t j | d d ƒ| ƒ t  t j | d d ƒ| ƒ t  t j | ƒ | ƒ t  t j | ƒ | ƒ d S(   s1    Test 2D input, which has uneven dimension sizes i    i   i   i   i   i   R   N(   i    (   i    i   (   i    i   (   R   R   R	   R
   t   None(   R   R   t
   shift_dim0t
   shift_dim1t   shift_dim_both(    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_uneven_dims+   s4    								""c         ` s  d d l  m ‰ d d l m ‰ m ‰ m ‰  m ‰ d ‡  ‡ ‡ ‡ ‡ f d † } d ‡  ‡ ‡ ‡ ‡ f d † } x¤ t d ƒ D]– } x t d ƒ D] } xv d d d d	 d
 g D]_ } t	 j
 j | | ƒ } t t j | | ƒ | | | ƒ ƒ t t j | | ƒ | | | ƒ ƒ qª WqŽ Wq{ Wd S(   s\    Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) i    (   t   integer_types(   t   asarrayt   concatenatet   aranget   takec   	      ` sº   ˆ |  ƒ } | j  } | d k r6 t t | ƒ ƒ } n t | ˆ ƒ rQ | f } n  | } x\ | D]T } | j | } | d d } ˆ ˆ  | | ƒ ˆ  | ƒ f ƒ } ˆ | | | ƒ } q^ W| S(   s&    How fftshift was implemented in v1.14i   i   N(   t   ndimR   t   listt   ranget
   isinstancet   shape(	   R   R   t   tmpR!   R   t   kR   t   p2t   mylist(   R   R   R   R   R    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   original_fftshift]   s    	!c   	      ` s¾   ˆ |  ƒ } | j  } | d k r6 t t | ƒ ƒ } n t | ˆ ƒ rQ | f } n  | } x` | D]X } | j | } | | d d } ˆ ˆ  | | ƒ ˆ  | ƒ f ƒ } ˆ | | | ƒ } q^ W| S(   s(    How ifftshift was implemented in v1.14 i   i   N(   R!   R   R"   R#   R$   R%   (	   R   R   R&   R!   R   R'   R   R(   R)   (   R   R   R   R   R    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   original_ifftshiftm   s    	!i   i   N(   i    (   i    i   (   t   numpy.compatR   t
   numpy.coreR   R   R   R    R   R#   R   R   t   randR   R   R	   R
   (   R   R*   R+   t   it   jt   axes_keywordt   inp(    (   R   R   R   R   R    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_equal_to_originalX   s    "(   t   __name__t
   __module__R   R   R   R   R3   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR      s
   	
			-t   TestFFTFreqc           B` s   e  Z d  „  Z RS(   c      
   C` s¿   d d d d d d d d d	 g	 } t  d
 t j d
 ƒ | ƒ t  d
 t t j d
 t ƒ | ƒ d d d d d d d d d d	 g
 } t  d t j d ƒ | ƒ t  d t t j d t ƒ | ƒ d  S(   Ni    i   i   i   i   iüÿÿÿiýÿÿÿiþÿÿÿiÿÿÿÿi	   iûÿÿÿi
   (   R   R   t   fftfreqR   (   R   R   (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR      s    !!$(   R4   R5   R   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR6   ‹   s   t   TestRFFTFreqc           B` s   e  Z d  „  Z RS(   c         C` s§   d d d d d g } t  d t j d ƒ | ƒ t  d t t j d t ƒ | ƒ d d d d d d g } t  d t j d ƒ | ƒ t  d t t j d t ƒ | ƒ d  S(	   Ni    i   i   i   i   i	   i   i
   (   R   R   t   rfftfreqR   (   R   R   (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR   ˜   s    !(   R4   R5   R   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR8   –   s   t
   TestIRFFTNc           B` s   e  Z d  „  Z RS(   c         C` sC   t  j j d ƒ \ } } | d | } d	 } t j | d | ƒd  S(
   Ni   i   i   i    y              ð?iþÿÿÿR   (   i   i   i   i    (   iþÿÿÿ(   R   R   R   t   irfftn(   R   t   art   ait   aR   (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_not_last_axis_success£   s    (   R4   R5   R?   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR:   ¡   s   t   TestFFTCachec           B` s   e  Z d  „  Z d „  Z RS(   c         C` s„  t  d d d d ƒ } | j d t j d d t j ƒƒ | j d t j d d t j ƒƒ t | j d ƒ t j d d t j ƒƒ t | j d ƒ t j d d t j ƒƒ t t	 | j
 ƒ d ƒ xX t d ƒ D]J } | j d t j d d t j ƒƒ | j d t j d d t j ƒƒ qÌ Wt | j d ƒ t j d d t j ƒƒ t | j d ƒ t j d d t j ƒƒ t t	 | j
 ƒ d ƒ d  S(   Nt   max_size_in_mbi   t   max_item_counti   i   t   dtypei    (   R   t   put_twiddle_factorsR   t   onest   float32t   zerosR   t   pop_twiddle_factorsR   t   lent   _dictR#   (   R   t   ct   _(    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_basic_behaviour¯   s     """&c         C` s  t  d d d d ƒ } | j d t j d d t j ƒƒ | j d t j d d t j ƒƒ t t | j j ƒ  ƒ d d g ƒ | j d	 t j d
 d t j ƒƒ t t | j j ƒ  ƒ d d d	 g ƒ | j d t j d
 d t j ƒƒ t t | j j ƒ  ƒ d g ƒ t  d d d d ƒ } | j d t j	 d ƒ ƒ | j d t j	 d ƒ ƒ t t | j j ƒ  ƒ d d g ƒ | j d	 t j	 d ƒ ƒ t t | j j ƒ  ƒ d d	 g ƒ t  d d d d ƒ } | j d t j d
 d t j ƒƒ | j d t j d d t j ƒƒ | j d	 t j d d t j ƒƒ | j d t j d d t j ƒƒ t t | j j ƒ  ƒ d d d	 d g ƒ x6 t
 d ƒ D]( } | j d t j d d t j ƒƒ qyWt t | j j ƒ  ƒ d d	 d d g ƒ | j d t j d d t j ƒƒ t t | j j ƒ  ƒ d g ƒ d  S(   NRA   g{®Gáz„?RB   i   i   iÈ   RC   i   i   i¸  i   i   iô  i   (   R   RD   R   RE   RF   R   R"   RJ   t   keyst   emptyR#   (   R   RK   RL   (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   test_automatic_pruningÊ   s2    """"%"""""""(&("(   R4   R5   RM   RP   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyR@   ­   s   	(   t   __doc__t
   __future__R    R   R   t   numpyR   t   numpy.testingR   R   R   R   t   numpy.fft.helperR   t   objectR   R6   R8   R:   R@   (    (    (    s:   lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyt   <module>   s   ~