ó
àÆ÷Xc           @` sô   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l	 Td  d l
 m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z m Z d Z d	 e j f d
 „  ƒ  YZ e d k rð d  d l m Z e d ƒ n  d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   unittest_tools(   t   *(   t
   raw_randomt   ivectort   dvectort   iscalart   dcolt   dtensor3(   t   tensor(   t   compilet   configt   gofs   restructuredtext ent   T_random_functionc           B` sU  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 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 d „  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  S(   N(   t   uttt   seed_rng(   t   self(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   setUp   s    c   	      C` sé   t  t j j j t j ƒ } | j s+ t ‚ t	 | d i  ƒ i  k sI t ‚ t
 ƒ  } | | d d d ƒ \ } } | j t j k s… t ‚ t j | g | ƒ } t j j t j ƒ  ƒ } | | ƒ } | | ƒ } t j | | k ƒ så t ‚ d  S(   Nt   destroy_mapi   g        g      ð?(   i   (   t   RandomFunctiont   numpyt   randomt   RandomStatet   uniformR   R   t   inplacet   AssertionErrort   getattrt   random_state_typet   typeR   t   functionR   t
   fetch_seedt   all(	   R   t   rft   rng_Rt   post_rt   outt   ft
   rng_state0t   f_0t   f_1(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_basic_usage   s    	c         C` sR   t  t j j j t j d t ƒ} | j s0 t	 ‚ t
 | d i  ƒ i  k sN t	 ‚ d  S(   NR   R   (   R   R   R   R   R   R   R   t   TrueR   R   R   (   R   R"   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_inplace_norun+   s    	c      	   C` s¤  t  t j j j t j ƒ } t  t j j j t j d t ƒ} t ƒ  } | | d d d ƒ \ } } | | d d d ƒ \ } } | | d d d ƒ \ } }	 | | d d d ƒ \ }
 } t	 j
 t	 j | d t j j t j ƒ  ƒ d	 | d
 t ƒg | | |	 | g d t ƒ} | ƒ  \ } } } } | ƒ  \ } } } } t j | d | ƒ sWt | | f ƒ ‚ t j | | ƒ s{t | | f ƒ ‚ t j | | ƒ s t | | f ƒ ‚ d S(   s1   Test that arguments to RandomFunction are honoredR   i   iþÿÿÿi   iüÿÿÿg      Àg      @t   valuet   updatet   mutablet   accept_inplaceN(   i   (   i   (   i   (   i   (   R   R   R   R   R   R   R   R+   R   R   R   t   InR   R    t   allcloseR   (   R   t   rf2t   rf4R#   t   post_r2t   out2t   post_r4t   out4t	   post_r2_4t   out2_4t   post_r2_4_4t   out2_4_4R&   t   f2t   f4t   f2_4t   f2_4_4t   f2bt   f4bt   f2_4bt   f2_4_4b(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt	   test_args1   s(    				($c   	   	   C` sþ   t  t j j j t j ƒ } t ƒ  } | | d
 d d ƒ \ } } t j	 t j
 | d t j j t j ƒ  ƒ d | d t ƒg | d d ƒ} t | | ƒ } | ƒ  } | t | | ƒ k s¼ t ‚ | ƒ  } | t | | ƒ k sá t ‚ t j | | ƒ sú t ‚ d	 S(   s@   Test that FAST_RUN includes the random_make_inplace optimizationi   g        g      ð?R-   R.   R/   t   modet   FAST_RUNN(   i   (   R   R   R   R   R   R   R   R   R   R   R1   R   R    R+   t   idR   R2   (	   R   R3   R#   R5   R6   R&   t   id0t   val0t   val1(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_inplace_optimization`   s     					c      	   C` sË  t  d t j ƒ } t ƒ  } | | d	 d d ƒ \ } } t j | g | | g ƒ } t j j t	 j
 ƒ  ƒ } | | ƒ \ } } t j j t	 j
 ƒ  ƒ }	 |  j | j j | |	 ƒ ƒ |  j | j j | | ƒ ƒ t j t j | d | d | d t ƒg | | g ƒ }
 |
 ƒ  \ } } |  j | j j | |	 ƒ ƒ |  j | j j | | ƒ ƒ |  j | j j | | ƒ ƒ |
 ƒ  \ } } |  j | j j | | ƒ ƒ |  j | j j | | ƒ ƒ |  j | j j | | ƒ ƒ d S(
   sJ   Test that when not running inplace, the RandomState is
        not updatedR   i   g        g      ð?R-   R.   R/   N(   i   (   R   R   R   R   R   R   R   R   R   R   R    t
   assertTrueR   t	   values_eqt   assertFalseR1   t   False(   R   R"   R#   R$   R%   R&   t   rngt   rng0RJ   t   rng_R=   t   rng2t   val2t   rng3t   val3(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_no_inplace~   s.    		c      	   C` s  t  ƒ  } t | d ƒ \ } } t | d d d ƒ\ } } t | d d d ƒ\ } } |  j t t | d d d ƒt j t j | d t j j	 t
 j ƒ  ƒ d | d t ƒg | | | g d t ƒ} | ƒ  \ }	 }
 } |  j t j |	 |
 ƒ ƒ |  j t j |	 | d	 ƒ ƒ d
 S(   s?   Test that random_function helper function accepts argument ndimi   t   ndimi   i   R-   R.   R/   R0   i    N(   i   (   i   (   i   i   (   i   (   R   R   t   assertRaisest
   ValueErrorR   R   R1   R   R   R   R   R    R+   RM   R2   (   R   R#   t	   post_out4R8   t   post_out1_4t   out1_4t   post_out2_4_4R<   t   f_okt   o4t   o1_4t   o2_4_4(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_random_function_ndim¤   s    			c         C` sÕ  t  ƒ  } t | d d d d ƒ\ } } t j t j | d t j j t	 j
 ƒ  ƒ d | d t ƒg | g d t ƒ} | ƒ  \ } t j d d	 d
 t t t f ƒ ƒ  } t j d d	 d
 t t t t f ƒ ƒ  } t | d d d d d | d | ƒ\ } }	 |  j |	 j d ƒ |  j |	 j t t t t f ƒ t j | | t j | d t j j t	 j
 ƒ  ƒ d | d t ƒg |	 g d t ƒ}
 d g g d g g d g g g } d d g g g g } |
 | | ƒ \ } |  j | j d ƒ d S(   s@   Test if random_function helper works with args but without shapet   sizeRY   i   R-   R.   R/   R0   t   dtypet   float64t   broadcastablet   lowt   highi   i   iûÿÿÿi   i   i   N(   i   i   i   i   (   R   R   t   NoneR   R   R1   R   R   R   R   R    R+   R   t
   TensorTypeRP   t   assertEqualRY   Rh   t   shape(   R   R#   t   post_outR%   R&   t   oRi   Rj   t	   post_out2R6   t   gt   low_vt   high_vt   o2(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt!   test_random_function_noshape_argsÂ   s<    				*			!c         C` s,   t  ƒ  } |  j t t | d d d d ƒd S(   s:   Test if random_function helper works without args or shapeRe   RY   i   N(   R   RZ   t	   TypeErrort   poissonRk   (   R   R#   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt#   test_random_function_noshape_noargsè   s    	c      	   C` s"  d „  } | d ƒ } | d ƒ } | d ƒ } t  ƒ  } | | d d ƒ\ } } | | d d ƒ\ } }	 | | d d ƒ\ }
 } | | d d ƒ\ } } | | d d ƒ\ } } | | d d ƒ\ } } |  j | j d ƒ |  j |	 j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ t j t j | d	 t j j t	 j
 ƒ  ƒ d
 | d t ƒg | g d t ƒ} t j t j | d	 t j j t	 j
 ƒ  ƒ d
 | d t ƒg |	 g d t ƒ} t j t j | d	 t j j t	 j
 ƒ  ƒ d
 | d t ƒg | g d t ƒ} t j t j | d	 t j j t	 j
 ƒ  ƒ d
 | d t ƒg | g d t ƒ} t j t j | d	 t j j t	 j
 ƒ  ƒ d
 | d t ƒg | | g d t ƒ} |  j t | ƒ |  j t | ƒ |  j t | ƒ |  j t | ƒ | ƒ  \ } } |  j t j | | d ƒ ƒ d S(   sX   Test that random_function helper function accepts ndim_added as
        keyword argumentc         ` s   d d d d  ‡  f d † } | S(   Ng        c         ` s›   t  j | | ƒ \ } } } ˆ  d k  r4 | ˆ   } n | t f ˆ  } t | ƒ | ˆ  k sa t ‚ t d t j d d d | ƒ d ˆ  ƒ} | |  | | | ƒ S(   Ni    R   Rf   Rg   Rh   t
   ndim_added(   R   t   _infer_ndim_bcastRP   t   lenR   R   R   Rl   (   t   random_stateRe   Ri   Rj   RY   t   bcastt   op(   Rz   (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   randomfunctionø   s    		(    (   Rk   (   Rz   R€   (    (   Rz   sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   ndim_added_deco÷   s    	i   i    iÿÿÿÿRe   i   i   i   R-   R.   R/   R0   N(   i   (   i   i   (   i   (   i   i   (   i   (   i   i   (   R   Rm   RY   R   R   R1   R   R   R   R   R    R+   RZ   R[   RM   R2   (   R   R   t   uni_1t   uni_0t   uni_m1R#   t   p_uni11t   uni11t   p_uni12t   uni12t   p_uni01t   uni01t   p_uni02t   uni02t   p_unim11t   unim11t   p_unim12t   unim12t   f11t   f12t   fm11t   fm12t   f0t   u01t   u02(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_random_function_ndim_addedï   s`    		c   
   	   C` sÿ   t  ƒ  } t | d
 d d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d d d ƒ} | j d d d d ƒ}	 |  j t j | | ƒ ƒ |  j t j | |	 ƒ ƒ d	 S(   sA   Test that raw_random.uniform generates the same results as numpy.i   g       Àg       @R-   R.   R/   R0   Re   N(   i   (   i   (   i   (   R   R   R   R   R1   R   R   R   R   R    R+   RM   R2   (
   R   R#   R$   R%   R&   t	   numpy_rngRJ   RK   t
   numpy_val0t
   numpy_val1(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_uniform;  s    			c   
   	   C` s  t  ƒ  } t | d d d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d d	 d ƒ} | j d d d	 d ƒ}	 |  j t j | | k ƒ ƒ |  j t j | |	 k ƒ ƒ d
 S(   sJ   Test that raw_random.binomial generates the same results
        as numpy.i   i   i   gš™™™™™é?R-   R.   R/   R0   Re   N(   i   i   (   i   i   (   i   i   (   R   t   binomialR   R   R1   R   R   R   R   R    R+   RM   R!   (
   R   R#   R$   t   binR&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_binomialP  s    			c   
   	   C` sÿ   t  ƒ  } t | d d d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d d	 d ƒ} | j d d d	 d ƒ}	 |  j t j | | ƒ ƒ |  j t j | |	 ƒ ƒ d
 S(   s@   Test that raw_random.normal generates the same results as numpy.i   i   g      @g       @R-   R.   R/   R0   Re   N(   i   i   (   i   i   (   i   i   (   R   t   normalR   R   R1   R   R   R   R   R    R+   RM   R2   (
   R   R#   R$   R%   R&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_normalg  s    			c   
   	   C` sÿ   t  ƒ  } t | d d d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d	 d
 d ƒ} | j d d	 d
 d ƒ}	 |  j t j | | ƒ ƒ |  j t j | |	 ƒ ƒ d  S(   Ni   i   iýÿÿÿi   R-   R.   R/   R0   i   Re   (   i   i   (   i   i   (   i   i   (   R   t   random_integersR   R   R1   R   R   R   R   R    R+   t   randintRM   R2   (
   R   R#   R$   R%   R&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_random_integers|  s    			c      	   C` se  t  t t j d d d ƒ} t ƒ  } | | d d ƒ \ } } t j t j | d t j	 j
 t j ƒ  ƒ d | d t ƒg | g d t ƒ} t j	 j
 t j ƒ  ƒ } | ƒ  } | ƒ  } t j g  t d ƒ D] }	 | j d ƒ ^ qÄ ƒ }
 t j g  t d ƒ D] }	 | j d ƒ ^ qõ ƒ } |  j t j | |
 k ƒ ƒ |  j t j | | k ƒ ƒ t  t t j d ƒ } | | d d ƒ \ } } t j t j | d t j	 j
 t j ƒ  ƒ d | d t ƒg | g d t ƒ} |  j t | ƒ t  t t j d d d	 ƒ} | | d d ƒ \ } } t j t j | d t j	 j
 t j ƒ  ƒ d | d t ƒg | g d t ƒ} |  j t | ƒ d
 S(   s‘   Test that raw_random.permutation_helper generates the same
        results as numpy,
        and that the 'ndim_added' keyword behaves correctly.i   Rz   i   i   R-   R.   R/   R0   i   N(   i   (   i   (   i   (   R   t   permutation_helperR   t   imatrixR   R   R   R1   R   R   R   R   R    R+   t   asarrayt   ranget   permutationRM   R!   RZ   R[   (   R   R"   R#   R$   R%   R&   R™   RJ   RK   t   iRš   R›   t   rf0t   post_r0t   out0R•   R3   R5   R6   R=   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_permutation_helper•  sF    						(	(	c   
   	   C` s  t  ƒ  } t | d d d d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d	 t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d t
 d
 ƒ } | j d d t
 d
 ƒ }	 |  j t j | | ƒ ƒ |  j t j | |	 ƒ ƒ d
 S(   sH   Test that raw_random.choice generates the same
        results as numpy.i   i   i
   i   i    R-   R.   R/   R0   N(   i   i   (   i   i   (   i   i   (   R   t   choiceR   R   R1   R   R   R   R   R    R+   Rk   RM   R2   (
   R   R#   R$   R%   R&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_choiceË  s    			c   
   	   C` sü   t  ƒ  } t | d d d d ƒ\ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d	 t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } | j d d d ƒ} | j d d d ƒ}	 |  j t j | | ƒ ƒ |  j t j | |	 ƒ ƒ d
 S(   sI   Test that raw_random.poisson generates the same
        results as numpy.t   lami   Re   i   i   R-   R.   R/   R0   N(   i   i   (   i   i   (   i   i   (   R   Rx   R   R   R1   R   R   R   R   R    R+   RM   R2   (
   R   R#   R$   R%   R&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_poissonâ  s    			c      	   C` s$  t  ƒ  } t | d d d d ƒ\ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  } | ƒ  } t j g  t d ƒ D] } | j d ƒ ^ q¯ ƒ }	 t j g  t d ƒ D] } | j d ƒ ^ qà ƒ }
 |  j t j | |	 k ƒ ƒ |  j t j | |
 k ƒ ƒ xÈ d	 d g D]º } t | d d
 d d d | ƒ\ } } t j | d t j j t j	 ƒ  ƒ d | d t
 ƒ} t j | g | ƒ } | ƒ  } | j d k sÓt ‚ t j | ƒ t j d
 ƒ k j ƒ  sCt ‚ qCW|  j t t | d d d d ƒd S(   sM   Test that raw_random.permutation generates the same
        results as numpy.Re   i	   t   ni   R-   R.   R/   R0   i   i
   RY   i   N(   i	   (   i
   (   R   R©   R   R   R1   R   R   R   R   R    R+   R§   R¨   RM   R!   Rk   t   theanoRn   R   t   sortt   arangeRZ   Rw   (   R   R#   R$   R%   R&   R™   RJ   RK   Rª   Rš   R›   RY   t   inpRp   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_permutationù  s4    				(	($	.c   
   	   C` sF  t  ƒ  } t | d d d g d ƒ \ } } t j t j | d t j j t j	 ƒ  ƒ d | d t
 ƒg | g d	 t
 ƒ} t j j t j	 ƒ  ƒ } | ƒ  \ } | ƒ  \ } | j d d g d d ƒ } | j d d g d d ƒ }	 |  j t j | | k ƒ ƒ |  j t j | |	 k ƒ ƒ |  j | j d k ƒ |  j | j d k ƒ d
 S(   sM   Test that raw_random.multinomial generates the same
        results as numpy.i   i   i   gš™™™™™É?i   R-   R.   R/   R0   N(   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   R   t   multinomialR   R   R1   R   R   R   R   R    R+   RM   R!   Rn   (
   R   R#   R$   R%   R&   R™   RJ   RK   Rš   R›   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_multinomial  s     	"c         C` sç   t  ƒ  } t j ƒ  } t | | d d ƒ\ } } t j | | g | ƒ } t j j t	 j
 ƒ  ƒ } | | d d g ƒ j d k s„ t ‚ | | d d g ƒ j d k s¨ t ‚ |  j t | | d g ƒ |  j t | | d d d d g ƒ d  S(	   NRY   i   i   i   i   i   (   i   i   (   i   i   (   R   R   t   lvectorR   R   R   R   R   R   R   R    Rn   R   RZ   R[   (   R   R#   Rn   R$   R%   R&   R'   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_symbolic_shape6  s    	$$c   
      C` s  t  ƒ  } t j ƒ  } | d f } t | d | d d ƒ\ } } t j | | g | ƒ } t j j t	 j
 ƒ  ƒ } | | d ƒ j d k s t ‚ | | d ƒ j d k s« t ‚ t | d | ƒ\ } } t j | | g | ƒ }	 |	 | d ƒ j d k sù t ‚ |	 | d ƒ j d	 k st ‚ d  S(
   Ni   Re   RY   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   t   lscalarR   R   R   R   R   R   R   R    Rn   R   (
   R   R#   t   shape0Rn   R$   t   uR&   R'   t   vRr   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_mixed_shapeC  s    	c   
      C` sQ  t  ƒ  } t j ƒ  } | d f } t | d | d d ƒ\ } } | j t t f k sZ t ‚ t j	 | | g | ƒ } t
 j j t j ƒ  ƒ } | | d ƒ j d k s¨ t ‚ | | d ƒ j d k sÆ t ‚ t | d | ƒ\ } } | j t t f k sù t ‚ t j	 | | g | ƒ }	 |	 | d ƒ j d k s/t ‚ |	 | d ƒ j d	 k sMt ‚ d  S(
   Ni   Re   RY   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R½   R   Rh   RP   R+   R   R   R   R   R   R   R   R    Rn   (
   R   R#   R¾   Rn   R$   R¿   R&   R'   RÀ   Rr   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_mixed_shape_bcastableT  s    	c         C` sŸ  t  ƒ  } t | ƒ \ } } t j | g | | g d t ƒ} t j j t j	 ƒ  ƒ } t j j t j	 ƒ  ƒ } | | ƒ \ } } | | ƒ \ }	 }
 t j
 | j ƒ  d t j j ƒ} t j
 | j ƒ  d t j j ƒ} t j | | k ƒ sí t ‚ t j |
 | k ƒ st ‚ t | ƒ \ } } t j | g | | g d t ƒ} | |	 ƒ \ } } t j
 | j d d d d d g ƒ d t j j ƒ} t j | | k ƒ s›t ‚ d  S(   NR0   Rf   R³   i   t   pvalsg      à?(   R   R   R   R   R+   R   R   R   R   R    R§   R´   R   t   floatXR!   R   R¹   (   R   R#   R$   R%   R&   R'   R™   t   post0RJ   t   post1RK   Rš   R›   Rr   t   post2RU   t
   numpy_val2(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_default_shapeg  s&    	!!$c   #   
   C` s¤  t  ƒ  } t j ƒ  } t | d | d d ƒ\ } } | j d k sH t ‚ t j | | g | | g d t ƒ} d „  } t	 j
 j t j ƒ  ƒ } t	 j
 j t j ƒ  ƒ } | | d d d d g ƒ \ }	 }
 | |	 | d	 g ƒ ƒ \ } } | | j d d d d d g d d ƒ ƒ } | | j d | d	 g ƒ d d ƒ ƒ } t	 j |
 | k ƒ sPt ‚ t	 j | | k ƒ skt ‚ t j ƒ  } t | d | d | ƒ\ } } | j d k sªt ‚ t j | | | g | | g d t ƒ} | | d
 d g d d g ƒ \ } } | | d
 g d g ƒ \ } } | | j d d
 d g d d d g ƒ ƒ } | | j d d
 g d d g ƒ ƒ } t	 j | | k ƒ s|t ‚ t	 j | | k ƒ s—t ‚ |  j t | | d
 d g d d d g ƒ t j ƒ  } t | d | d | d | d d ƒ\ } } t j | | | | g | | g d t ƒ} | | d
 d g d d g d g ƒ \ } } | | d
 g d g d g ƒ \ } }  | | j d d
 d g d d d g ƒ ƒ }! | | j d d
 g d d g ƒ ƒ }" t	 j | |! k ƒ sÖt ‚ t	 j |  |" k ƒ sñt ‚ |  j t | | d
 d g d d g d g ƒ |  j t | | d
 d g d d g d d g ƒ |  j t | | d
 d g d d g d d g ƒ |  j t | | d
 d g d g d g ƒ d  S(   NRi   Rj   i   R0   c         S` s   t  j |  d t j j ƒS(   NRf   (   R   R§   R´   R   RÄ   (   t   thing(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt	   as_floatX‡  s    iûÿÿÿg      à?i    gÍÌÌÌÌÌì?g      ÀiþÿÿÿiÿÿÿÿRe   RY   i   (   R   R   t   vectorR   RY   R   R   R   R+   R   R   R   R   R    R!   RZ   R[   R»   (#   R   R#   Ri   R$   R%   R&   RË   R'   R™   RÅ   RJ   RÆ   RK   Rš   R›   Rj   t   post_rbt   outbt   fbt   post0bt   val0bt   post1bt   val1bt   numpy_val0bt   numpy_val1bRe   t   post_rct   outct   fct   post0ct   val0ct   post1ct   val1ct   numpy_val0ct   numpy_val1c(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_vector_arguments€  sP    	$	!*'	$*$(*!	*$*$+..c         C` s#  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t	 ƒ} t
 j j t j ƒ  ƒ } t
 j j t j ƒ  ƒ } | | d d d d g d	 g g ƒ \ }	 }
 | |	 d
 g d	 g d g d g g ƒ \ } } | | d d d d g d	 g d g d g g ƒ \ } } | j d d d d d g d d	 g ƒ } | j d d
 g d d	 g d g d g g ƒ } | j d d d d d g d d	 g d g d g g ƒ } t
 j |
 | k ƒ sét |
 | f ƒ ‚ t
 j | | k ƒ st ‚ t
 j | | k ƒ st ‚ d  S(   NRi   Rj   i   R0   iûÿÿÿg      à?i    i   g      ð?gÍÌÌÌÌÌì?gš™™™™™ñ?g      ø?(   R   R   R   R	   R   RY   R   R   R   R+   R   R   R   R   R    R!   (   R   R#   Ri   Rj   R$   R%   R&   R'   R™   RÅ   RJ   RÆ   RK   RÇ   RU   Rš   R›   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_broadcast_argumentsµ  s&    		*-6'-'c      
   C` sE  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t ƒ} d „  } | d d d g ƒ } | d	 d
 d g ƒ }	 t	 j
 j t j ƒ  ƒ }
 t	 j
 j t j ƒ  ƒ } | |
 | |	 ƒ \ } } | | j d | d |	 ƒ ƒ } t	 j | | k ƒ s/t ‚ | | | d  |	 d  ƒ \ } } | | j d | d  d |	 d  ƒ ƒ } t	 j | | k ƒ st ‚ t j | | | g t | d | d | d d ƒd t ƒ} | | | |	 ƒ \ } } | | j d | d |	 d d ƒ ƒ } t	 j | | k ƒ s t ‚ |  j t | | | d  |	 d  ƒ d  S(   NRi   Rj   i   R0   c         S` s   t  j |  d t j j ƒS(   NRf   (   R   R§   R´   R   RÄ   (   RÊ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyRË   Ö  s    gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™ñ?gš™™™™™@gffffff
@iÿÿÿÿRe   i   (   i   (   i   (   R   R   RÌ   R   RY   R   R   R   R+   R   R   R   R   R    R!   RZ   R[   (   R   R#   Ri   Rj   R$   R%   R&   RË   t   low_valt   high_valRQ   R™   RR   RJ   Rš   t   rng1RK   R›   Rr   RT   RU   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_uniform_vectorÍ  s6    			 	c      
   C` s0  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t	 ƒ} d d d g } t
 j d d d	 g d
 t j ƒ} t
 j j t j ƒ  ƒ }	 t
 j j t j ƒ  ƒ }
 | |	 | | ƒ \ } } |
 j d | d | ƒ } t
 j | | k ƒ s&t ‚ | | | d  | d  ƒ \ } } |
 j d | d  d | d  ƒ } t
 j | | k ƒ st ‚ t j | | | g t | d | d | d d ƒd t	 ƒ} | | | | ƒ \ } } |
 j d | d | d d ƒ } t
 j | | k ƒ st ‚ |  j t | | | d  | d  ƒ d  S(   NR³   t   pi   R0   i   i   gš™™™™™¹?gš™™™™™É?g333333Ó?Rf   iÿÿÿÿRe   (   i   (   i   (   R   R   R»   RÌ   R   RY   R   R   R   R+   R   R§   R   RÄ   R   R   R   R    R!   RZ   R[   (   R   R#   R³   t   probR$   R%   R&   t   n_valt   prob_valRQ   R™   RR   RJ   Rš   Rã   RK   R›   Rr   RT   RU   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_binomial_vectorò  s0    		!  	c      
   C` si  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t ƒ} d „  } d d d g } | d d	 d
 g ƒ }	 t	 j
 j t j ƒ  ƒ }
 t	 j
 j t j ƒ  ƒ } | |
 | |	 ƒ \ } } | | j d | | ƒ d | |	 ƒ ƒ ƒ } t	 j | | k ƒ s5t ‚ | | | d  |	 d  ƒ \ } } t	 j | j d | d  d |	 d  ƒ d t j j ƒ} t	 j | | k ƒ s¥t ‚ t j | | | g t | d | d | d d ƒd t ƒ} | | | |	 ƒ \ } } t	 j | j d | d |	 d d ƒ d t j j ƒ} t	 j | | k ƒ sDt ‚ |  j t | | | d  |	 d  ƒ d  S(   Nt   avgt   stdi   R0   c         S` s   t  j |  d t j j ƒS(   NRf   (   R   R§   R´   R   RÄ   (   RÊ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyRË     s    i   i   gš™™™™™¹?gš™™™™™É?g333333Ó?t   loct   scaleiÿÿÿÿRf   Re   (   i   (   i   (   R   R   RÌ   R    RY   R   R   R   R+   R   R   R   R   R    R!   R§   R´   R   RÄ   RZ   R[   (   R   R#   Rê   Rë   R$   R%   R&   RË   t   avg_valt   std_valRQ   R™   RR   RJ   Rš   Rã   RK   R›   Rr   RT   RU   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_normal_vector  s<    			 		c      
   C` s¥  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t ƒ} d d d g } d d	 d
 g } t	 j
 j t j ƒ  ƒ }	 t	 j
 j t j ƒ  ƒ }
 | |	 | | ƒ \ } } t	 j g  t | | ƒ D]( \ } } |
 j d | d | d ƒ ^ q÷ ƒ } t	 j | | k ƒ sCt ‚ | | | d  | d  ƒ \ } } t	 j g  t | d  | d  ƒ D]( \ } } |
 j d | d | d ƒ ^ qƒ } t	 j | | k ƒ sÍt ‚ t j | | | g t | d | d | d d ƒd t ƒ} | | | | ƒ \ } } t	 j g  t | | ƒ D]( \ } } |
 j d | d | d ƒ ^ q4ƒ } t	 j | | k ƒ s€t ‚ |  j t | | | d  | d  ƒ d  S(   NRi   Rj   i   R0   id   iÈ   i,  in   iÜ   iJ  iÿÿÿÿRe   i   (   i   (   R   R   R»   R¢   RY   R   R   R   R+   R   R   R   R   R    R§   t   zipR£   R!   RZ   R[   (   R   R#   Ri   Rj   R$   R%   R&   Rá   Râ   RQ   R™   RR   RJ   t   lvt   hvRš   Rã   RK   R›   Rr   RT   RU   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_random_integers_vector<  s6    			> 	F		>c      
   C` sÃ  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | ƒ\ } } | j d k sT t ‚ t j | | | g | | g d t	 ƒ} d d d g } d d g d	 d
 g d d g g } t
 j | d t j ƒ} t
 j j t j ƒ  ƒ }	 t
 j j t j ƒ  ƒ }
 | |	 | | ƒ \ } } t
 j g  t | | ƒ D]$ \ } } |
 j d | d | ƒ ^ q!ƒ } t
 j | | k ƒ sit ‚ | | | d  | d  ƒ \ } } t
 j g  t | d  | d  ƒ D]$ \ } } |
 j d | d | ƒ ^ q§ƒ } t
 j | | k ƒ sït ‚ t j | | | g t | d | d | d d ƒd t	 ƒ} | | | | ƒ \ } } t
 j g  t | | ƒ D]$ \ } } |
 j d | d | ƒ ^ qVƒ } t
 j | | k ƒ sžt ‚ |  j t | | | d  | d  ƒ d  S(   NR³   RÃ   i   R0   i   i   gš™™™™™¹?gÍÌÌÌÌÌì?gš™™™™™É?gš™™™™™é?g333333Ó?gffffffæ?Rf   iÿÿÿÿRe   (   i   (   R   R   R»   t   matrixR¹   RY   R   R   R   R+   R   R§   R   RÄ   R   R   R   R    Rñ   R!   RZ   R[   (   R   R#   R³   RÃ   R$   R%   R&   Rç   t	   pvals_valRQ   R™   RR   RJ   t   nvt   pvRš   Rã   RK   R›   Rr   RT   RU   RÈ   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_multinomial_vectorc  s8    		!	: 	B		:c      	   C` sZ  t  ƒ  } d } t j ƒ  } t | d | d | d d ƒ\ } } | j d k sT t ‚ | j t t t f k sr t ‚ t	 j
 | | g | | g d t ƒ} t j j t j ƒ  ƒ } t j j t j ƒ  ƒ } t j d	 d
 g d d g d d g g g ƒ }	 |	 j d k st ‚ | | |	 ƒ \ }
 } | j d k s2t ‚ t j | j d d ƒ d ƒ sVt ‚ d  S(   Ni	   R³   RÃ   Re   i   iÿÿÿÿi   R0   gš™™™™™¹?gÍÌÌÌÌÌì?gš™™™™™É?gš™™™™™é?g333333Ó?gffffffæ?i   t   axis(   i   iÿÿÿÿ(   i   i   i   (   i   i   i   (   R   R   R
   R¹   RY   R   Rh   R+   RP   R   R   R   R   R   R   R    R§   Rn   R2   t   sum(   R   R#   R³   RÃ   R$   R%   R&   RQ   R™   Rö   t   new_rngt   draw(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_multinomial_tensor3_aˆ  s    	$	-c      
   C` s]  t  ƒ  } d } t j ƒ  } t | d | d | d d ƒ\ } } | j d k sT t ‚ | j t t t t f k su t ‚ t	 j
 | | g | | g d	 t ƒ} t j j t j ƒ  ƒ } t j j t j ƒ  ƒ } t j d
 d g d d g d d g g g ƒ }	 |	 j d k st ‚ | | |	 ƒ \ }
 } | j d k s5t ‚ t j | j d d ƒ d ƒ sYt ‚ d  S(   Ni	   R³   RÃ   Re   i
   i   iÿÿÿÿi   R0   gš™™™™™¹?gÍÌÌÌÌÌì?gš™™™™™É?gš™™™™™é?g333333Ó?gffffffæ?i   i   Rú   (   i
   i   iÿÿÿÿ(   i   i   i   (   i
   i   i   i   (   R   R   R
   R¹   RY   R   Rh   RP   R+   R   R   R   R   R   R   R    R§   Rn   R2   Rû   (   R   R#   R³   RÃ   R$   R%   R&   RQ   R™   Rö   t   out_rngRý   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_multinomial_tensor3_bŸ  s    	$!	-c      
   C` s  t  ƒ  } t j ƒ  } t j ƒ  } t | d | d | d d d d ƒ\ } } | j d k s` t ‚ t j | | | g | | g ƒ } t j	 j
 t j ƒ  ƒ } | | d d ƒ \ } }	 |	 j d k sÆ t ‚ | | d	 d
 ƒ \ }
 } | j d k só t ‚ t j t | ƒ d k ƒ st ‚ d  S(   NRi   Rj   Re   i   Rf   t   int8i    i	   iÿ   i  i   (   i   (   R   R   R½   R¢   Rf   R   R   R   R   R   R   R   R    R!   t   abs(   R   R#   Ri   Rj   R$   R%   R&   RQ   RR   RJ   Rã   RK   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt
   test_dtype¶  s    	!c         C` s   t  ƒ  } t | d t j d d d ƒd d ƒd j d k sC t ‚ t | d t j d d d ƒd d ƒd j d k s} t ‚ d  S(   NRi   i    Rf   Rg   t   float32i   Rê   (   R   R   R   t   constantRf   R   R    (   R   R#   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_dtype_normal_uniform_687Ç  s
    	c         C` s   t  t |  ƒ j ƒ  d  S(   N(   t   superR   R   (   R   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyR   Ð  s    c      
   C` s8  t  ƒ  } t j j t j ƒ  ƒ } t | ƒ \ } } |  j | g | g | g t ƒ t | d d  d d ƒ\ } } |  j | g | g | g t ƒ t
 j d d d t t t f ƒ ƒ  } t
 j d d d t t t t f ƒ ƒ  } t | d d  d d d | d | ƒ\ } } d	 g g d
 g g d g g g } d d g g g g } |  j | | | g | g | | | g t ƒ t ƒ  } t ƒ  } t | d | d d ƒ\ } } d d d d g } |  j | | g | g | | g t ƒ d g } |  j | | g | g | | g t ƒ t | d | d | ƒ\ } } d d g } d d g } |  j | | | g | g | | | g t ƒ d g } d g } |  j | | | g | g | | | g t ƒ t ƒ  } t ƒ  } t | d | d | ƒ\ } } d d d d g } d g g } |  j | | | g | g | | | g t ƒ d g } d g d g d g g } |  j | | | g | g | | | g t ƒ d d d d g } d g d g d g g } |  j | | | g | g | | | g t ƒ t ƒ  } t ƒ  } t | d | d | ƒ\ } } d d d g } d d d g } d! }	 |  j | | | g | g | | d  | d  g t ƒ t | d |	 d | d | ƒ\ } } |  j | | | g | g | | | g t ƒ t ƒ  }
 t ƒ  } t | d |
 d | ƒ\ } } d d d	 g } d d d g } d" }	 |  j | |
 | g | g | | d  | d  g t ƒ t | d |
 d | d |	 ƒ\ } } |  j | |
 | g | g | | | g t ƒ t ƒ  } t ƒ  } t | d | d  | ƒ\ } } d d d	 g } d d d g } d# }	 |  j | | | g | g | | d  | d  g t ƒ t | d | d  | d |	 ƒ\ } } |  j | | | g | g | | | g t ƒ d  S($   NRe   RY   i   Rf   Rg   Rh   Ri   Rj   i   i   iûÿÿÿi   i   i   g      à?i    gÍÌÌÌÌÌì?g      Àiþÿÿÿiÿÿÿÿg      ð?gš™™™™™ñ?g      ø?gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™@gffffff
@R³   Rå   Rê   Rë   (   i   (   i   (   i   (   R   R   R   R   R   R    R   t   _compile_and_checkR   Rk   R   Rl   RP   R+   R   R	   R   R   R    (   R   R#   t	   rng_R_valR$   R%   Ri   Rj   Rá   Râ   t   size_valR³   Ræ   Rç   Rè   Rê   Rë   Rî   Rï   (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_infer_shapeÓ  s°    	*!										
$		
$		
$c         C` sÑ   t  ƒ  } d  } t j j d k r* d } n  t | d d d ƒ \ } } t j | g | | g d | ƒ} t j | ƒ } t	 | d d	 d
 ƒ \ } } t j | g | | g d | ƒ}	 t j |	 ƒ }
 t j
 |
 ƒ d  S(   Nt
   DEBUG_MODEt	   DebugModet   FAST_COMPILEi   i   i   g333333Ó?RF   iÿÿÿÿi   (   R  R  (   i   i   (   i   i   (   R   Rk   R´   R   RF   R   R   t   picklet   dumpsR¢   t   loads(   R   t   rng_rRF   t
   post_bin_rt
   bin_sampleR&   t   pkl_ft
   post_int_rt
   int_sampleRr   t   pkl_g(    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   test_pklx  s    		!!(&   t   __name__t
   __module__R   R*   R,   RE   RL   RX   Rd   Rv   Ry   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  (    (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyR      sJ   				/		&		&		L					6			%						5		%	!	)	'	%							¥t   __main__(   t   maint   test_raw_random(   t
   __future__R    R   R   R   R  t   theano.testsR   R   t   theano.tensor.raw_randomt   theano.tensorR   R   R   R   R	   R
   R´   R   R   R   R   t   __docformat__t   InferShapeTesterR   R  R  (    (    (    sC   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_raw_random.pyt   <module>   s    
.ÿ ÿ ÿ ÿ }