
\K]c           @   s#  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m	 Z
 d  d l 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 m Z d  d l m Z m Z d  d	 l m Z m Z m Z d  d
 l m Z m  Z  d  d l! m" Z# d  d l$ m% Z% e j& j' d  o@e j( d  d d f k Z) e j* d d k Z+ d Z, e
 j- e+ pke) e,  Z. e d e j/ f d e j/ f g  d e0 f d     Y Z1 d e f d     YZ2 d e f d     YZ3 d e f d     YZ4 d e f d     YZ5 e6 d k re
 j7   n  d S(   i(   t   divisionN(   t
   namedtuple(   t   unittest_support(
   t   njitt   typeoft   typest   typingR   t   irt   utilst   bytecodet   jitclasst   prangei   (   t   TestCaset   tag(   t   EquivSett   ArrayAnalysis(   t   Pipelinet   Flagst   _PipelineManager(   t   cput   registry(   t   version(   t   remove_deadt   win32i   i   i    s   parfors not supportedt   Lt   Tt   ExampleClass3700c           B   s   e  Z d    Z RS(   c         C   s   | |  _  | d |  _ d  S(   Ni   (   R   R   (   t   selft   n(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   __init__   s    	(   t   __name__t
   __module__R   (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR      s   t   TestEquivSetc           B   s8   e  Z d  Z e d  d    Z e d  d    Z RS(   s'   
    Test array_analysis.EquivSet.
    t	   importantc         C   s   t    } | j d d  |  j | j d d   |  j | j d d   | j d d  |  j | j d d   |  j | j d d   | j d d  |  j | j d d d d   |  j | j d d   d  S(   Nt   at   bt   ct   dt   e(   R   t   insert_equivt
   assertTruet   is_equivt   assertFalse(   R   t   s1(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_insert_equiv(   s    	c         C   sH  t    } t    } | j |  } |  j | j    | j d d  | j |  } |  j | j    | j d d  | j |  } |  j | j    | j d d  | j |  } |  j | j    | j d d  | j d d  | j |  } |  j | j d d   |  j | j d d   |  j | j d d   d  S(   NR"   R#   R$   R%   R&   (   R   t	   intersectR(   t   is_emptyR'   R)   R*   (   R   R+   t   s2t   r(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_intersect5   s&    		(   R   R   t   __doc__R   R,   R1   (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR    #   s   t   ArrayAnalysisTesterc           B   s5   e  Z e d d i  d d d d    Z d d  Z RS(   c         C   sm   | s t    } n  t | _ | d  k r6 t j j } n  | d  k rQ t j j } n  |  | | | | | | |  S(   N(   R   t   Truet   nrtt   NoneR   t
   cpu_targett   typing_contextt   target_context(   t   clst   argst   return_typet   flagst   localst   libraryR8   R9   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   mk_pipelineN   s    	c            s  t  j j |   _ y  j  j  } Wn t k
 rF } |  n X|  _ d  _ d  _	 t
   } | j d   j d k r | j  j d  n  | j  j d   j j s  j j r | j  j d  n  | j  j d  n  | j  j d  | j  j d  | j  j d   j j sO| j  j d  n  g        f d	   } | j | d
   r| j | d
  n  | j   | j  j  }  j S(   s4   
        Populate and run compiler pipeline
        t   nopythons   analyzing bytecodes   processing IRs   preserve IR for fallbacks   nopython rewritess(   inline calls to locally defined closuress   nopython frontends   annotate typec              s   t   j  j  j j  j j   _  j j  j j    j	  j j
     r{ t    d k r{     n  d  S(   Ni   (   R   t	   typingctxt   func_irt   type_annotationt   typemapt	   calltypest   array_analysist   runt   blockst   appendt   copyt   len(    (   t   func_ir_copiesR   t   test_idempotence(    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   stage_array_analysis}   s    	s   analyze array equivalences(    N(   R	   t   FunctionIdentityt   from_functiont   func_idt   extract_bytecodet   BaseExceptiont   bct   liftedR6   t   lifted_fromR   t   create_pipelineRC   t	   add_staget   stage_analyze_bytecodet   stage_process_irR=   t   no_rewritest   statust   can_fallbackt   stage_preserve_irt   stage_generic_rewritest   stage_inline_passt   stage_nopython_frontendt   stage_annotate_typet   stage_nopython_rewritest   finalizeRH   RG   (   R   t   funcRN   RU   R&   t   pmRO   t   res(    (   RM   R   RN   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   compile_to_ir[   s@    
					
N(   R   R   t   classmethodR6   R@   Ri   (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR3   L   s   	t   TestArrayAnalysisc           B   s   e  Z d    Z g  g  e 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 d   Z RS(   c         C   s   g  } xS | D]K } t  | j | j |  t j   } | j d |  | j | j    q W|  j t	 t
 |   d k  d  S(   Nt   filei   (   R   RI   t	   arg_namesR   t   StringIOt   dumpRJ   t   getvalueR(   RL   t   set(   R   t   ir_listt   outputsRC   t   output(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   compare_ir   s    c   
      C   s   t  j |  } | r |  j n d   } | j | |  } | rd x" | D] }	 |	 | j d  qF Wn  | d k r |  j |  j | j   n$ x! | D] }	 |	 | j | j	  q Wd S(   s<   
        Compile the given function and get its IR.
        c         S   s   d S(   N(    (    (   t   x(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   <lambda>   t    i    N(
   R3   R@   Ru   Ri   t
   equiv_setsR6   R(   t   _has_no_assertcallRC   RE   (
   R   t   fnt   arg_tyst   assertst   equivst
   idempotentt   test_pipelineRN   t   analysisRf   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   _compile_and_test   s    c   
      C   s   d j  d j |   } x | j j   D] \ } } x} | j d d  D]i } | j | j j  } t | t	 j
  rG | j d k rG | | j d j }	 |	 j j |  r t SqG qG Wq( Wt S(   Ns   Sizes of {} do not matchs   , t   opt   callt   assert_equivi    (   t   formatt   joinRI   t   itemst
   find_exprst   get_definitionRf   t   namet
   isinstanceR   t   GlobalR;   t   literal_valuet
   startswithR4   t   False(
   R   RC   RE   R;   t   msgt   labelt   blockt   exprR{   t   typ(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   _has_assertcall   s    !c         C   s   x | j  j   D] \ } } x | j d d  D] } | j d k r/ | j | j d t } | j | d t } t | t j	  r | j
 n | } t | t j	  r | j
 n | } | | k r t Sq/ q/ Wq Wt S(   NR   t   getattrt   shapet   lhs_only(   RI   R   R   t   attrR   t   valueR4   R   R   t   VarR   R   (   R   RC   Rv   R   R   R   t   yt   z(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   _has_shapecall   s    !!c         C   s{   xt | j  j   D]c \ } } xT | j d d  D]@ } | j | j j  } t | t j  r/ | j d k r/ t	 Sq/ Wq Wt
 S(   NR   R   R   (   RI   R   R   R   Rf   R   R   R   R   R   R4   (   R   RC   R   R   R   R{   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRz      s    !c            s      f d   S(   Nc            s    j   j |  |     S(   N(   R(   R   (   RC   RE   (   R;   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      s   (    (   R   R;   (    (   R;   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   with_assert   s    c            s      f d   S(   Nc            s    j   j |  |     S(   N(   R*   R   (   RC   RE   (   R;   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      s   (    (   R   R;   (    (   R;   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   without_assert   s    c            s     f d      f d   S(   Nc            sM   t     } x: t | d  D]( } |  j   |   | d  s t Sq Wt S(   Ni   (   RL   t   rangeR)   R   R4   (   t	   equiv_setR   t   i(   R;   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   check   s
    c            s    j    |    S(   N(   R(   (   R   (   R   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      Rx   (    (   R   R;   (    (   R;   R   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   with_equiv   s    c            s     f d      f d   S(   Nc            sM   t     } x: t | d  D]( } |  j   |   | d  r t Sq Wt S(   Ni   (   RL   R   R)   R   R4   (   R   R   R   (   R;   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR      s
    c            s    j    |    S(   N(   R(   (   R   (   R   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      Rx   (    (   R   R;   (    (   R;   R   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   without_equiv   s    c            s      f d   S(   Nc            s     j    j |     S(   N(   R(   R   (   RC   t   s(   R   Rv   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      Rx   (    (   R   Rv   (    (   R   Rv   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   with_shapecall   s    c            s      f d   S(   Nc            s     j    j |     S(   N(   R*   R   (   RC   R   (   R   Rv   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRw      Rx   (    (   R   Rv   (    (   R   Rv   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   without_shapecall   s    c            s1  d   } |  j  | d) d |  j d d*  |  j d d+  |  j d d,  g d   } |  j  | t j f d	 d  d
   } |  j  | t j t j f d	 |  j d d  g d   } |  j  | t j f d	 d  d   } |  j  | t j f d	 d  d   } |  j  | t j f d	 d  d   } |  j  | t j t j f d	 |  j d d  |  j d d  g d   } |  j  | t j t j f d	 |  j d d  |  j d d  g d   }	 |  j  |	 t j t j f d	 |  j d d  |  j d d  g d   }
 |  j  |
 t j f d	 |  j d d  g d   } |  j  | t j t j f d	 |  j d d  |  j d d  g d   } |  j  | d- d |  j d d  g d   } |  j  | d. d |  j d d d  g d   } t j t j d d  } |  j  | t j | | f  f d	 d  t	 d d d g      f d   } |  j  | t j f d |  j d  d/  g d"   } |  j  | t j t j d d  f d	 d  d#   } |  j  | t j t j d$ d  f d	 d  d%   } |  j  | t j t j t j f d	 d  d&   } |  j  | t j t j f d	 d  d'   } |  j  | t j t j d d  t j t j d d  f d	 d  |  j  | t j t j d$ d  t j t j d$ d  f d	 d  |  j
 t  G } |  j  | t j t j d d  t j t j d$ d  f d	 d  Wd  QXd( } |  j | t | j   d  S(0   Nc          S   sC   t  j d  }  t  j d  } d } d } t  j | | f  } d  S(   Ni    i   (   t   npt   zeros(   R"   R#   t   mR   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_0   s    R~   R"   i    R#   i   R$   c         S   s&   t  j |   } t  j |   } | | S(   N(   R   R   (   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_1   s    R}   c         S   s&   t  j |  } t  j |   } | | S(   N(   R   R   (   R   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_2   s    c         S   s   t  j |   } | |  S(   N(   R   R   (   R   R"   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_3  s    c         S   s+   t  j |   } | d } | d } | | S(   Ni   i   (   R   R   (   R   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_4
  s    

c         S   s8   t  j |  |  f  } |  } t  j | |  f  } | | S(   N(   R   R   (   R   R"   R   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_5  s    c         S   s:   t  j |  } t  j |   } | | } | | } | | S(   N(   R   R   (   R   R   R"   R#   R%   R&   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_6  s
    

R%   R&   c         S   sI   t  j |  } t  j |   } |  d k r7 | | } n
 | | } | | S(   Ni
   (   R   R   (   R   R   R"   R#   R%   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_7"  s    
c         S   sI   t  j |  } t  j |   } |  d k r7 | | } n
 | | } | | S(   Ni
   (   R   R   (   R   R   R"   R#   R%   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_8.  s    
c         S   s\   t  j |   } d } x@ |  d k  rW |  d 7}  t  j |   } | t  j | |  7} q W| S(   Ni    i   i   (   R   t   onest   sum(   R   t   AR   t   B(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_9:  s    
R   R   c         S   s   |  d } | d } | d } t  j |  } t  j |  } t  j |  } t  j |   } t  j | |  }	 t  j | |  }
 |	 |
 S(   Ni   (   R   R   R   (   R   R   t   pt   qR0   R   R   t   Ct   DR   t   t(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_10E  s    


R   R   c          S   sT   t  j d  }  t  j d  } |  d } | d  } t |  } t |  } | | k S(   Ni   i   i(   R   R   RL   (   R"   R#   R$   R%   R&   t   f(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_11T  s    

R   c          S   s   t  j d  j d  }  t  j d  j d  } |  d d   d  d   f } | d  d  d  d   f } | j d } | j d } t |  } | | k S(   Ni   i   i   ii    (   i   i   (   i   i   (   R   R   t   reshapeR   RL   (   R"   R#   R$   R%   R&   R   t   g(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_12_  s    R   c         S   s   |  } | d S(   Ni    (    (   R   t   T2(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_tup_argk  s    R   c            s     |  |   } | d S(   Ni    (    (   R   R0   (   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_namedtuplet  s    R0   R   c         S   s   t  j |   } t | d  S(   Ni    (   R   t   whereRL   (   R   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_np_where_tup_return{  s    c         S   s,   |  j  \ } } t j | | f  } |  | S(   N(   R   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_shape  s    i   c   	      S   s   t  j |   } t  j |  } t  j |  } |  | k rO t  j | |  } n d } | | k rj d } n t  j | |  } d } |  | k r | | k r t  j | | |  } q n  | | | S(   Ni    (   R   R   R   (	   t   lR   R   R   R   R   R0   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt	   test_cond  s    	c         S   sA   |  | k s t   t j |   } t j |  } t j | |  S(   N(   t   AssertionErrorR   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_assert_1  s    c         S   s)   |  j  | j  k s t  t j |  |  S(   N(   R   R   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_assert_2  s    s   Dimension mismatch(    (   i    (   i   (   i    i   (    (    (   R   R   (   R   R   R   t   intpR6   R   R   t   Arrayt   TupleR   t   assertRaisesR   t   assertInt   strt	   exception(   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   int_arr_typR   R   R   R   R   R   t   raisesR   (    (   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_base_cases   s    																		"	$	!		c      	      s%  d d l  m } | d        f d   } |  j | t j f d |  j d d  g d |  j d d  g   f d	   } |  j | t j f d |  j d d  g | d
 d  d      f d   } |  j | t j f d |  j d d d  |  j d d  g d |  j d d  g d  S(   Ni(   t   stencilc         S   s$   d |  d |  d |  d |  d S(	   Ng      ?i    i   i(   i    i   (   i   i    (   i    i(   ii    (    (   R"   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   kernel_1  s    c            s)   t  j |  |  f  }   |  } | | S(   N(   R   R   (   R   R"   R#   (   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s    R~   R"   R#   R}   c            sF   t  j |  |  f  } t  j |  d |  d f  }   | d | | S(   Ni   t   out(   R   R   (   R   R"   R#   (   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s    t   standard_indexingR$   c         S   s   |  d | d | d S(   Ni    i   i(   i    i   i    (   i    ii    (    (   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   kernel_2  s    c            sa   t  j d  j d d d  } t  j d  j |  d d  } t  j d  }   | | |  } | S(   Ni@   i   i   i   i   (   R   t   arangeR   R   (   R   R"   R#   t   ut   v(   R   (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s
    R   R   (   R$   (	   t   numbaR   R   R   R   R   R   R   R   (   R   R   R   R   R   (    (   R   R   s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_stencilcall  s    c   
   
   C   s}  d   } |  j  | t j t j f d |  j d d  |  j d d  g d t d   } |  j  | t j f d |  j d d  |  j d d	  g d t d
   } |  j  | t j f d |  j d d  g d t d   } |  j  | t j f d |  j d d  g d t d   } |  j  | t j t j f d |  j d d  |  j d d  |  j d d  g d t d   } |  j  | t j f d |  j d d  g d t d   } |  j  | t j f d |  j d d  g d t d   } |  j  | t j f d |  j d d  g d t d   }	 |  j  |	 t j f d |  j d d  |  j d d  |  j d d  |  j d d  g d  S(   Nc         S   sn   t  j |   } t  j |  } t  j | |  } | d |  d !} | d | d !} t  j | |  } | | S(   Ni   (   R   R   R   (   R   R   R   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s    R}   R   R   R   R   R   c         S   sT   t  j |   } | d |  d !} | d |  d !} | d |  d !} | | } | | S(   Ni    i   i   i   (   R   R   (   R   R   R   R   R   t   E(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s    
R   c         S   sk   t  j |  |  f  } | d |  d  d |  d  f } | d |  d  d |  d  f } | | } | S(   Ni    i   i   (   R   R   (   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s
    $$
c         S   sc   t  j |  |  f  } | d |  d  d  d   f } | d |  d  d  d   f } | | } | S(   Ni    i   i   (   R   R   (   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s
      
c         S   ss   t  j |   } t  j |   } | d |  d !| d |  d +t  j |  } | d |  d !} | | d | d +| | S(   Ni   i    i   (   R   R   (   R   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s    c         S   sc   t  j |  |  f  } | d |  d  d  d  f } | d |  d  d  d  f } | | } | S(   Ni    i   ii   (   R   R   (   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR     s
      
c         S   sc   t  j |  |  f  } | d |  d  d d  f } | d |  d  d d  f } | | } | S(   Ni    i   iii   ii(   R   R   (   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR   )  s
      
c         S   s_   t  j |  |  f  } | d  |  d  d d   f } | d d  d  d   f } | | } | S(   Ni   i    i   i(   R   R   (   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR   3  s
     
c         S   s]   t  j |   } | d  } | d } | d  d d  } | | } | } | d 7} | | | f S(   Ni    i   i(   R   R   (   R   R   R   R   R   R   t   F(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR   =  s    



R~   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/numba/tests/test_array_analysis.pyt
   test_slice  sT    					
				c         C   s  d   } |  j  | t j f d |  j d d  |  j d d9  |  j d d  g d   } |  j  | t j f d |  j d d  g d |  j d  g d	   } |  j  | t j f d |  j d d  |  j d d:  |  j d d  g d
   } |  j  | t j f d |  j d d  |  j d d;  |  j d d  g d   } |  j  | t j f d |  j d d<  |  j d d=  |  j d d  |  j d d  g d   } |  j  | t j f d |  j d d>  g d   } |  j  | t j f d |  j d d?  |  j d d@  g d |  j d  |  j d  g d   } |  j  | t j t j d d  f d |  j d d d d d  g d |  j d  |  j d  g d   }	 |  j  |	 t j f d |  j d dA  g d |  j d  g d   }
 |  j  |
 t j t j f d |  j d dB  |  j d dC  |  j d dD  g d   } |  j  | t j t j t j f d |  j d dE  |  j d dF  |  j d dG  |  j d dH  |  j d dI  |  j d dJ  |  j d dK  g d   } t d  d } dL g g  t	 t d  |  D] } t
 |  d ^ q	} dM g g  t	 t d  |  D] } t
 |  d ^ qB} | g  t	 t d  |  D] } t
 |  d ^ qx7} |  j  | t j f d |  j |   |  j |   g d    } |  j  | t j t j f d |  j d dN  |  j d dO  g d |  j d  |  j d  |  j d  |  j d"  g d#   } |  j  | dP d |  j d" dQ  |  j d$ dR  |  j d' dS  |  j d( dT  |  j d* dU  |  j d+ dV  |  j d, dW  g t dX k r[d/   } |  j  | t j t j f d |  j d d  |  j d dY  |  j d d0 dZ  |  j d1 d[  |  j d2 d3 d\  g n  d4   } |  j  | t j t j f d |  j d d]  |  j d d^  g d6   } |  j  | t j t j t j f d |  j d d_  |  j d d`  |  j d da  |  j d1 db  |  j d2 dc  |  j d3 dd  g d |  j d d7  g d8   } |  j  | t j t j f d |  j d d d  g d d  d  S(e   Nc         S   s@   t  j |   } t  j |  |  f  } t  j d |  |  f  } d  S(   NR   (   R   R   (   R   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_zerosO  s    R~   R"   R   R#   R$   c         S   s&   t  j d  } t  j d  } | | S(   Ni   i   (   R   t   arrayR   (   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_0d_arrayX  s    R}   c         S   s@   t  j |   } t  j |  |  f  } t  j d |  |  f  } d  S(   NR   (   R   R   (   R   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt	   test_ones`  s    c         S   s@   t  j |   } t  j |  |  f  } t  j d |  |  f  } d  S(   NR   (   R   t   empty(   R   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_emptyi  s    c         S   sY   t  j |   } t  j d |   } t  j d |  d |   } t  j d |  d |  d  } d  S(   Nt   Nt   Mi   (   R   t   eye(   R   R"   R#   R$   R%   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_eyer  s    R%   c         S   s   t  j |   } d  S(   N(   R   t   identity(   R   R"   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_identity}  s    c         S   sF   t  j |   } t  j |  } t  j |  } t  j | d d } d  S(   Nt   ki   (   R   R   t   diag(   R   R"   R#   R$   R%   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt	   test_diag  s    c         S   sR   t  j |   } t  j |   } t  j |   } t  j |  d  } t  j |   } d  S(   Ni   (   R   t
   empty_liket
   zeros_liket	   ones_liket	   full_liket   asfortranarray(   R"   R#   R$   R%   R&   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_array_like  s
    i   R   R&   R   c         S   s<   t  j |  |   } | j |  |  f  } | j   | j   S(   N(   R   R   R   R   (   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_reshape  s    c         S   s.   t  j |  | f  } | j } | j   } d  S(   N(   R   R   R   t	   transpose(   R   R   R"   R#   R$   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_transpose  s    	R   c   
      S   sy   t  j |  | | f  } | j } | j   } | j d d d  } | j d  } | j d d d  } | j d  }	 d  S(   Ni   i    i   (   i   i    i   (   i    i   i   (   R   R   R   R   (
   R   R   R   R"   R#   R$   R%   t   dtR&   t   et(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_transpose_3d  s    	R   R  R  c   G      S   s<  t  j j |   } t  j j |  |   } t  j j |   } t  j j |  |   } t  j j |   } t  j j |  |  f  } t  j j d |  |  f  } t  j j |   } t  j j |  |  f  }	 t  j j d |  |  f  }
 t  j j |   } t  j j |  |  f  } t  j j d |  |  f  } t  j j |   } t  j j |  |  f  } t  j j d |  |  f  } t  j j |   } t  j j |  |  f  } t  j j d |  |  f  } t  j j d |   } t  j j d |  |  f  } t  j j d d |  |  f } t  j j	 d |   } t  j j	 d |  |  f  } t  j j	 d d |  |  f } t  j j
 d |   } t  j j
 d |  |  f  } t  j j
 d d |  |  f } t  j j d |   } t  j j d |  |  f  } t  j j d d |  |  f } t  j j d |   }  t  j j d |  |  f  }! t  j j d d |  |  f }" t  j j d |   }# t  j j d |  |  f  }$ t  j j d d |  |  f }% t  j j d |   }& t  j j d |  |  f  }' t  j j d d |  |  f }( t  j j d d |   }) t  j j d d |  |  f  }* t  j j d d d |  |  f }+ t  j j d d |   }, t  j j d d |  |  f  }- t  j j d d d |  |  f }. t  j j d d |   }/ t  j j d d |  |  f  }0 t  j j d d d |  |  f }1 t  j j d d |   }2 t  j j d d |  |  f  }3 t  j j d d d |  |  f }4 t  j j d d |   }5 t  j j d d |  |  f  }6 t  j j d d d |  |  f }7 t  j j d d |   }8 t  j j d d |  |  f  }9 t  j j d d d |  |  f }: t  j j d d |   }; t  j j d d |  |  f  }< t  j j d d d |  |  f }= t  j j d d |   }> t  j j d d |  |  f  }? t  j j d d d |  |  f }@ t  j j d d |   }A t  j j d d |  |  f  }B t  j j d d d |  |  f }C t  j j d d d |   }D t  j j d d d |  |  f  }E t  j j d d d d |  |  f }F d  S(   Nt   sizei
   g?i    i   i(   R   t   randomt   randt   randnt   ranft   random_samplet   samplet   standard_normalt	   chisquaret   weibullt   powert	   geometrict   exponentialt   poissont   rayleight   normalt   uniformt   betat   binomialR   t   gammat	   lognormalt   laplacet   randintt
   triangular(G   R   t   a0t   a1t   b0t   b1t   c0t   c1t   c2t   d0t   d1t   d2t   e0t   e1t   e2t   f0t   f1t   f2t   g0t   g1t   g2t   h0t   h1t   h2t   i0t   i1t   i2t   j0t   j1t   j2t   k0t   k1t   k2t   l0t   l1t   l2t   m0t   m1t   m2t   n0t   n1t   n2t   o0t   o1t   o2t   p0t   p1t   p2t   q0t   q1t   q2t   r0t   r1t   r2t   s0R+   R/   t   t0t   t1t   t2t   u0t   u1t   u2t   v0t   v1t   v2t   w0t   w1t   w2t   x0t   x1t   x2(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_random  s    !!!!!!!!!!Rv   i   t   0t   1c         S   s   t  j |   } t  j |  } t  j | | f  } t  j d | f  } t  j d | f  } t  j | | f  } t  j |  d f  } t  j |  d f  }	 t  j | |	 f d d }
 t  j |  | f  } t  j |  | f  } t  j | | f  } d  S(   Ni   i   t   axisi   (   R   R   t   concatenate(   R   R   R"   R#   R$   R%   R&   R   R   t   jR   R   t   oR   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_concatenate  s    i   R   c    
      S   s   t  j d  }  t  j d  } t  j d  } t  j |  |  f  } t  j | | f  } t  j |  |  f  } t  j | | f  } t  j |  |  f  } t  j | | f  } t  j | | f  }	 d  S(   Ni   i   i   (   i   (   i   i   (   i   i   i   (   R   R   t   vstackt   hstackt   dstack(
   R   R   Rf  R   R   R0   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_vsd_stack-  s    R   i   i   R0   R   i   R   R   R   i   i
   c         S   s   t  j |   } t  j |  } t  j | | f  } t  j |  | f  } t  j |  | f  } t  j | | f  } t  j | | f d d } t  j | | f d d }	 t  j | | f d d }
 t  j | | f d d } d  S(   NRc  i    i   i   i(   R   R   t   stack(   R   R   R"   R#   R$   R%   R&   R   R   t   hR   Re  (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_stackD  s    R   Rm  R   Re  c         S   s+   t  j |  |  } t  j |  | d  } d  S(   Ni
   (   R   t   linspace(   R   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_linspace[  s    i2   c   	      S   s   t  j t  j d  t  j d   } t  j t  j d  t  j d   } t  j t  j d  t  j d   } t  j t  j d  t  j d   } t  j t  j | | f  t  j | | f   } t  j t  j | | f  t  j |  |  f   } d  S(	   Ni   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   dotR   (	   R   R   R   R"   R#   R&   Rm  R   Re  (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_dotd  s    $$$$0R   c         S   sU   t  j |  | f  } t  j |  } | | } t  j d | f  } | | | } d  S(   Ni   (   R   R   (   R   R   R"   R#   R$   R%   R&   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_broadcast{  s
    
(   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   R   (   R   R   R   (   R   R   R   (   R   R   R   (   R   R   R   (   R   R   R   (   R   R   R   (   R   (   R   R   (   i   R   (   R   i   (    (   i   i   (   i   i   (   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i
   (   i   R   (   i   R   R   (   R   i   R   (   R   R   i   (   i2   (   i
   (   i   (   i   (   i   (   i   i   (   R   R   (   R   R   (   R   R   R   R   R   R   R   R   t   ordR   t   chrt   numpy_versiont   float64R   R6   (   R   R   R   R   R   R   R   R   R   R   R   R  R`  t   lastRv   t   vars1dt   vars2dRg  Rk  Rn  Rp  Rr  Rs  (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_numpy_callsN  s    								$			
!	H996						!	(   R   R   Ru   R4   R   R   R   Rz   R   R   R   R   R   R   R   R   R   R{  (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyRk      s   															)	mt!   TestArrayAnalysisParallelRequiredc           B   sP   e  Z d  Z e Z e d    Z e d    Z e d    Z e d    Z	 RS(   sk   This is to just split out tests that need the parallel backend and
    therefore serialised execution.
    c            s]   t  d        f d   } y t  | d t d  Wn t k
 rX |  j d  n Xd  S(   Nc         S   s
   | |  f S(   N(    (   Rv   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   swap  s    c            s^   t  j |   } t  j |   } x9 t |   D]+ }   | | | |  \ | | <| | <q+ Wd  S(   N(   R   R   R   (   R   R"   R#   R   (   R}  (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_bug2537  s    t   paralleli
   s   test_bug2537 raised IndexError!(   R   R4   t
   IndexErrort   fail(   R   R~  (    (   R}  s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt	   test_misc  s    c            sS   t  d d g  } | d      f d   } |  j t | d t   |    d  S(   Nt   RowR   i   c             s(     }  |  j  } | d k r$ d } n  | S(   Ni   i   (   R   (   t   rrRh   (   t   row(    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt	   test_impl  s
    		R  (   R   t   assertEqualR   R4   (   R   R  R  (    (   R  s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_global_namedtuple  s    c         C   sq   d   } d } t  |  } t j | j  } t j | j  } |  j t | d t | |  | | |   d  S(   Nc         S   s.   x! t  |  j  D] } | | | <q W| j   S(   N(   R   R   R   (   t   t_objt   XR   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR    s    i   R  (   R   R   R   R   R  R   R4   (   R   R  R   R  t   X1t   X2(    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_array_T_issue_3700  s    	c         C   s   d   } |  j  t | d t   |    d   } t j d  } t d   } t j j t | d t | |  | | |   d  S(   Nc          S   s   t  d  d   }  t S(   N(   t   sliceR6   R4   (   R"   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_impl1  s    R  c         S   s   | } |  | S(   N(    (   R   R"   R#   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt
   test_impl2  s    i
   (	   R  R   R4   R   R   R  R6   t   testingt   assert_array_equal(   R   R  R  R   R"   (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   test_slice_shape_issue_3380  s    	"		(
   R   R   R2   R   t   _numba_parallel_test_t   skip_unsupportedR  R  R  R  (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyR|    s   t   __main__(8   t
   __future__R    t	   itertoolst   numpyR   t   syst   collectionsR   R   R   t   unittestR   R   R   R   R   R   R	   R
   R   t   supportR   R   t   numba.array_analysisR   R   t   numba.compilerR   R   R   t   numba.targetsR   R   t   numba.numpy_supportR   Rv  t   numba.ir_utilsR   t   platformR   t   version_infot   _windows_py27t   maxsizet   _32bitt   _reasont   skipIfR  t   int32t   objectR   R    R3   Rk   R|  R   t   main(    (    (    s>   lib/python2.7/site-packages/numba/tests/test_array_analysis.pyt   <module>   s6   F$)D  I