ó
‡ˆ\c           @   sC  d  d l  Z d  d l m Z d  d l m Z d  d l m Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l m
 Z
 d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m  Z  d  d l m! Z! d  d l m" Z" d  d l m# Z# d  d l m$ Z$ d  d l% m& Z& d  „  Z' d! „  Z( d" „  Z) e d# „  ƒ Z* d$ „  Z+ e j, j- d% e j. e j/ e j0 e j1 f ƒ d& „  ƒ Z2 e d' „  ƒ Z3 e j, j- d% e j0 e j1 f ƒ d( „  ƒ Z4 d) „  Z5 d* „  Z6 d+ „  Z7 d, „  Z8 d- „  Z9 d. „  Z: d/ „  Z; d0 „  Z< d1 „  Z= d2 „  Z> d3 „  Z? d4 „  Z@ e d5 „  ƒ ZA d6 „  ZB d7 „  ZC d8 „  ZD d9 „  ZE d S(:   iÿÿÿÿN(   t   sparse(   t   linalg(   t   stats(   t   assert_equal(   t   assert_almost_equal(   t   assert_allclose(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_false(   t   assert_greater(   t   assert_warns(   t   assert_warns_message(   t   skip_if_32bit(   t   SkipTest(   t   ignore_warnings(   t
   np_version(   t   density(   t	   logsumexp(   t   normt   squared_norm(   t   randomized_svd(   t	   row_norms(   t   weighted_mode(   t	   cartesian(   t   log_logistic(   t   svd_flip(   t   _incremental_mean_and_var(   t   _deterministic_vector_sign_flip(   t   softmax(   t   stable_cumsum(   t   make_low_rank_matrixc          C   s±   t  j j d ƒ }  |  j d d d ƒ} d | d	 <d | d
 <t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } x3 | | | | f D] } t	 t
 | ƒ t
 | ƒ ƒ qŠ Wd  S(   Ni    i
   t   sizei   i   i   i   (   i
   i   (   i   i   (   i   i   (   t   npt   randomt   RandomStatet   randintR    t
   csr_matrixt
   csc_matrixt
   coo_matrixt
   lil_matrixR   R   (   t   rngt   Xt   X_csrt   X_csct   X_coot   X_lilt   X_(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_density,   s    

c          C   s˜   t  j j d ƒ }  |  j d d d ƒ} t  j | j ƒ } xX d D]P } t j | | ƒ \ } } t	 | | | ƒ \ } } t
 | | ƒ t
 | | ƒ q@ Wd  S(   Ni    i
   R   i   i   (   i
   i   (   Ni    i   (   R    R!   R"   R#   t   onest   shapet   NoneR   t   modeR   R   (   R(   t   xt   weightst   axisR3   t   scoret   mode2t   score2(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_uniform_weights:   s    c          C   sÛ   d }  t  j j d ƒ } | j |  d d	 ƒ} | j | j ƒ } |  | d  d  … d  d … f <| d  d  … d  d … f c d 7<t | | d d ƒ\ } } t | |  ƒ t | j	 ƒ  | d  d  … d  d … f j
 d ƒ ƒ d  S(
   Ni   i    R   id   i
   i   i   R6   (   id   i
   (   R    R!   R"   R#   t   random_sampleR1   R   R   R   t   ravelt   sum(   t   mode_resultR(   R4   t   wR3   R7   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_random_weightsH   s    "c          C   sÑ   t  j d g d ƒ }  t  j |  ƒ } t t  j t | ƒ ƒ |  j ƒ  ƒ t  j |  |  g ƒ } t  j | | g ƒ } t t  j t | d d ƒƒ | j d d ƒ ƒ t t  j t | d d ƒƒ | j d d ƒ ƒ d  S(   NgœWw'&l¡7i@B R6   i    i   (	   R    t   arrayt   logR   t   expR   R=   t   vstackR   (   R4   t   logxR)   t   logX(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_logsumexpZ   s    ".c         C   sZ  d } d } d } d } |  t  j k r- d n d } t  j |  ƒ }  t d | d | d | d	 d
 d d ƒ j |  d t ƒ} t | j | | f ƒ t j	 | d t ƒ\ } } }	 | j |  d t ƒ} | j |  d t ƒ} |	 j |  d t ƒ}	 xhd d d g D]W}
 t
 | | d |
 d d ƒ\ } } } |  j d k rv| j |  k sIt ‚ | j |  k s^t ‚ | j |  k s¾t ‚ nH | j t  j k sŽt ‚ | j t  j k s¦t ‚ | j t  j k s¾t ‚ t | j | | f ƒ t | j | f ƒ t | j | | f ƒ t | |  | d | ƒt t  j | d  d  … d  | … f |	 d  | … d  d  … f ƒ t  j | | ƒ d | ƒt j | ƒ } t
 | | d |
 d d ƒ\ } } } |  j d k rï| j |  k sÂt ‚ | j |  k s×t ‚ | j |  k s7t ‚ nH | j j d k st ‚ | j j d k st ‚ | j j d k s7t ‚ t | |  | |  d | ƒqû Wd  S(   Nid   iô  i   i
   i   t	   n_samplest
   n_featurest   effective_rankt   tail_strengthg        t   random_statei    t   copyt   full_matricest   autot   LUt   QRt   power_iteration_normalizert   ft   decimal(   R    t   float32t   dtypeR   t   astypet   FalseR   R1   R   t   svdR   t   kindt   AssertionErrort   float64R   t   dotR    R$   (   RV   RH   RI   t   rankt   kRT   R)   t   Ut   st   Vt
   normalizert   Uat   sat   Va(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   check_randomized_svd_low_rankg   sR    !PRV   c         C   s   t  |  ƒ d  S(   N(   Rg   (   RV   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt'   test_randomized_svd_low_rank_all_dtypes¯   s    c          C   sÈ   t  j j d ƒ j d d ƒ }  |  d 9}  |  d 7}  t t  j j |  j ƒ  ƒ t |  ƒ ƒ t t |  ƒ d t |  ƒ d d ƒt t  j j |  ƒ t  j	 t |  ƒ ƒ d d ƒt
 t d	 t |  j t ƒ ƒ d  S(
   Ni*   i2   i?   id   iÈ   i   RT   i   sY   Array type is integer, np.dot may overflow. Data should be float type to avoid this issue(   R    R!   R"   t   randnR   R   R   R<   R   t   sqrtR   t   UserWarningRW   t   int(   R)   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_norm_squared_normµ   s    

%#.c         C   sy  t  j j d ƒ j d d ƒ } |  t  j k r6 d } n d } | j |  ƒ } | d j d d ƒ } t | t | d t	 ƒ| ƒ t t  j
 | ƒ t | ƒ | ƒ xÖ t  j t  j g D]Â } t j | d	 |  ƒ} | t  j k r| j j | ƒ | _ | j j | ƒ | _ n  | j j | k st ‚ | j j | k s6t ‚ t | t | d t	 ƒ| ƒ t t  j
 | ƒ t | ƒ | ƒ q¯ Wd  S(
   Ni*   id   i   i   i   R6   i   t   squaredRV   (   R    R!   R"   Ri   RU   RW   R=   R   R   t   TrueRj   t   int32t   int64R    R$   t   indptrt   indicesRV   R[   (   RV   R)   t	   precisiont   sq_normt   csr_index_dtypet   Xcsr(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_row_normsÅ   s(    	c    
      C   s  d }  d } d } d } t  d |  d | d | d d	 d
 d ƒ } t | j |  | f ƒ t j | d t ƒ\ } } } x£ d d d d g D] } t | | d d d | d
 d ƒ\ } } } t t j	 | |  | ƒ j
 ƒ  d ƒ t | | d | d
 d ƒ\ } }	 } t | |  |	 d d ƒq† Wd  S(   Nid   iô  i   i
   RH   RI   RJ   RK   gš™™™™™¹?RL   i    RN   RO   t   noneRP   RQ   t   n_iterRR   g{®Gáz„?RT   i   (   R   R   R1   R   RY   RX   R   R	   R    t   abst   maxR   (
   RH   RI   R^   R_   R)   t   _Ra   Rc   Re   t   sap(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt'   test_randomized_svd_low_rank_with_noiseä   s$    	$c    
      C   s  d }  d } d } d } t  d |  d | d | d d	 d
 d ƒ } t | j |  | f ƒ t j | d t ƒ\ } } } x d d d d g D]‰ } t | | d d d | ƒ\ } } } t t j	 | |  | ƒ j
 ƒ  d ƒ t | | d d d | ƒ\ } }	 } t | |  |	 d d ƒq† Wd  S(   Nid   iô  i   i
   RH   RI   RJ   RK   g      ð?RL   i    RN   RO   Ry   RP   RQ   Rz   RR   gš™™™™™¹?RT   i   (   R   R   R1   R   RY   RX   R   R	   R    R{   R|   R   (
   RH   RI   R^   R_   R)   R}   Ra   Rc   Re   R~   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt!   test_randomized_svd_infinite_rank	  s     	$c          C   sõ  d }  d } d } d } t  d |  d | d | d d	 d
 d ƒ } t | j |  | f ƒ t | | d d d t d
 d ƒ\ } } } t | | d d d t d
 d ƒ\ } }	 }
 t | | d d d d d
 d ƒ\ } } } t j | d t ƒ\ } } } t | | |  d d ƒt |	 | |  d d ƒt | | |  d d ƒt t	 j
 | | ƒ t	 j
 | d  d  … d  | … f | d  | … d  d  … f ƒ d d ƒt t	 j
 | |
 ƒ t	 j
 | d  d  … d  | … f | d  | … d  d  … f ƒ d d ƒt |	 | ƒ d  S(   Nid   iô  i   i
   RH   RI   RJ   RK   g      à?RL   i    Rz   i   t	   transposeRO   RN   RT   i   (   R   R   R1   R   RX   Ro   R   RY   R   R    R]   (   RH   RI   R^   R_   R)   t   U1t   s1t   V1t   U2t   s2t   V2t   U3t   s3t   V3t   U4t   s4t   V4(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt)   test_randomized_svd_transpose_consistency,  s.    	PPc          C   sF  t  j j d ƒ }  t d d d d d |  ƒ} | d |  j d d	 d
 | j ƒ7} d } t | | d d	 d d ƒ\ } } } | | j t  j | ƒ j | ƒ ƒ } t	 j
 | d d ƒ} t | | d d d d ƒ\ } } } | | j t  j | ƒ j | ƒ ƒ } t	 j
 | d d ƒ} t t  j | | ƒ d ƒ xd d d g D]}	 t | | d d	 d |	 d d ƒ\ } } } | | j t  j | ƒ j | ƒ ƒ } t	 j
 | d d ƒ} x• d d d g D]„ }
 t | | d |
 d |	 d d ƒ\ } } } | | j t  j | ƒ j | ƒ ƒ } t	 j
 | d d ƒ} t d t  j | | ƒ ƒ q¶Wq<Wd  S(   Ni*   id   iô  RJ   i2   RL   i   i    i   R   Rz   RR   Ry   t   ordt   froi   RP   RQ   RO   i   i
   i   (   R    R!   R"   R   R#   R1   R   R]   t   diagR   R   R	   R{   (   R(   R)   t   n_componentsR`   Ra   Rb   t   At   error_2t   error_20Rc   t   it   error(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt.   test_randomized_svd_power_iteration_normalizerM  s4    #%%%%c          C   s‘   t  j j d ƒ }  t d d d d d |  ƒ} d } xW t j t j f D]C } | | ƒ } t t j d j	 | j
 ƒ t | | d	 d
 d d ƒqF Wd  S(   Ni*   i2   i   RJ   i
   RL   i   sC   Calculating SVD of a {} is expensive. csr_matrix is more efficient.Rz   i   RR   Ry   (   R    R!   R"   R   R    R'   t
   dok_matrixR   t   SparseEfficiencyWarningt   formatt   __name__R   (   R(   R)   R’   t   cls(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt#   test_randomized_svd_sparse_warningsp  s    	c          C   sq  t  j j d ƒ }  d } d } |  j | | ƒ } t j | d t ƒ\ } } } t | | d t ƒ\ } } t t  j	 | | | ƒ | d d ƒ| j
 }	 t j |	 d t ƒ\ } } } t | | d t ƒ\ }
 } t t  j	 |
 | | ƒ |	 d d ƒt | | d t ƒ\ } } t t  j	 | | | ƒ |	 d d ƒt | | d t ƒ\ } } t t  j	 | | | ƒ |	 d d ƒd  S(   NiÏ  i   i
   RN   t   u_based_decisionRT   i   (   R    R!   R"   Ri   R   RY   RX   R   R   R]   t   TRo   (   t   rsRH   RI   R)   R`   t   SRb   R‚   R„   t   XTR…   R‡   t   U_flip1t   V_flip1t   U_flip2t   V_flip2(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_svd_flip  s    #	##c          C   s  t  j d d g d d g g ƒ }  t |  d d t d d ƒ\ } } } x¹ t d ƒ D]« } t |  d d t d | ƒ\ } } } t | | ƒ t | | ƒ t t  j | | | ƒ |  ƒ t t  j | j | ƒ t  j d ƒ ƒ t t  j | j | ƒ t  j d ƒ ƒ qR Wd  S(	   Ng       @g        g      ð?i   t	   flip_signRL   i)   i
   (	   R    RA   R   Ro   t   rangeR   R]   R    t   eye(   t   at   u1Rƒ   t   v1t   seedt   u2R†   t   v2(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_randomized_svd_sign_flip˜  s    !$$%c    	      C   sÀ   d „  }  t  j d ƒ j d d ƒ } t | d d t ƒ\ } } } |  | | ƒ \ } } | sc t ‚ t | ƒ t | d d t d t ƒ\ } } } |  | | ƒ \ } } | s² t ‚ t | ƒ d  S(	   Nc         S   sp   t  j |  ƒ j d d ƒ |  j d d ƒ k j ƒ  } t  j | ƒ j d d ƒ | j d d ƒ k j ƒ  } | | f S(   s˜   
        returns bool tuple indicating if the values maximising np.abs
        are positive across all rows for u and across all columns for v.
        R6   i    i   (   R    R{   R|   t   all(   t   ut   vt   u_basedt   v_based(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   max_loading_is_positive©  s    33i
   i   iÿÿÿÿi   R©   R   iP   (   R    t   aranget   reshapeR   Ro   R[   R   (	   R¸   t   matt	   u_flippedR}   t	   v_flippedR¶   R·   t   u_flipped_with_transposet   v_flipped_with_transpose(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt,   test_randomized_svd_sign_flip_with_transpose¤  s    		
!c          C   s3  t  j d d d g ƒ t  j d d g ƒ t  j d d g ƒ f }  t  j d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g ƒ } t |  ƒ } t | | ƒ t  j d ƒ } t | d  d  … t  j f t | f ƒ ƒ d  S(   Ni   i   i   i   i   i   i   (   R    RA   R   R   R¹   t   newaxis(   t   axest   true_outt   outR4   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_cartesianÃ  s"    ?c          C   si   d „  }  t  j d d d ƒ } t t | ƒ |  | ƒ ƒ t  j d d g ƒ } t t | ƒ d d g ƒ d  S(	   Nc         S   s   t  j d d t  j |  ƒ ƒ S(   Ni   (   R    RB   RC   (   R4   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   naive_log_logisticß  s    iþÿÿÿi   i2   g      YÀg      Y@iœÿÿÿi    (   R    t   linspaceR   R   RA   (   RÆ   R4   t	   extreme_x(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_logistic_sigmoidÝ  s
    	c    
   	   C   sS  t  j d d d d d g d d d d d g d d d d d g d d d d d g g ƒ j }  d } |  d  | … d  d  … f } |  | d  … d  d  … f } | j d d ƒ } | j d d ƒ } t  j | j d	 | j d d
 t  j ƒ} t | | | | ƒ \ } } }	 t	 | |  j d d ƒ d ƒ t	 | |  j d d ƒ d ƒ t	 |	 |  j d ƒ d  S(   NiX  iÖ  iª   i®  i,  i   R6   i    i   RV   i   (
   R    RA   R    t   meant   vart   fullR1   Rp   R   R   (
   R“   t   idxt   X1t   X2t	   old_meanst   old_variancest   old_sample_countt   final_meanst   final_variancest   final_count(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt)   test_incremental_variance_update_formulasé  s    )c          C   sT  t  j d d d d g ƒ }  t  j d d d d g ƒ } t  j d d d d g d t  j ƒ} t  j d d d d g d d d d g d d d d g g ƒ } t  j d t  j d d g t  j d d d g d d t  j d g d d d t  j g g ƒ } t | |  | | ƒ \ } } } t | |  | | ƒ \ } }	 }
 t | | ƒ t |	 | ƒ t |
 | ƒ d  S(   Ng     ¸€@g     °@i   RV   iª   i®  i,  (   R    RA   Rp   t   nanR   R   (   RÐ   RÑ   RÒ   R)   t   X_nant   X_meanst   X_variancest   X_countt   X_nan_meanst   X_nan_variancest   X_nan_count(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt-   test_incremental_mean_and_variance_ignore_nanÿ  s"    $c          C   s  d „  }  d „  } d „  } d „  } d } d } d } t  j d d	 t  j ƒ} t  j d
 d	 t  j ƒ} t  j | d | f | d	 t  j ƒ}	 t  j | d | f | d	 t  j ƒ}
 t  j |	 |
 f ƒ } t  j |  | ƒ | | ƒ ƒ j ƒ  d k  rù |  } n | } t t  j | | ƒ | | ƒ ƒ j ƒ  | ƒ |	 d d  d  … f t  j	 | ƒ | d } } } xI t
 |
 j d ƒ D]4 } | |
 | d  d  … f | | | ƒ \ } } } qpWt | | j d ƒ t t  j | j d d ƒ | ƒ j ƒ  d ƒ t t  j | | ƒ | ƒ j ƒ  | ƒ |	 d d  d  … f t  j	 | ƒ } } t  j | | d d	 t  j ƒ} x_ t
 |
 j d ƒ D]J } t |
 | d  d  … f j d |
 j d f ƒ | | | ƒ \ } } } qgWt | | j d ƒ t | j d d ƒ | ƒ t | t  j | | ƒ | ƒ j ƒ  ƒ d  S(   Nc         S   s   |  j  d d ƒ S(   NR6   i    (   RË   (   R“   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   np_var  s    c         S   sI   |  j  d } |  d j d d ƒ | } |  j d d ƒ | d } | | S(   Ni    i   R6   (   R1   R=   (   R)   t   nt   exp_x2t   expx_2(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   one_pass_var   s    c         S   s9   |  j  d d ƒ } |  j ƒ  } t j  | | d d d ƒS(   NR6   i    i   (   RÊ   RM   R    (   R)   RÊ   t   Y(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   two_pass_var)  s    c         S   sW   | d } | t  | ƒ } |  | | | } | | |  | |  | | } | | | f S(   Ni   (   t   float(   R4   t	   last_meant   last_variancet   last_sample_countt   updated_sample_countt   samples_ratiot   updated_meant   updated_variance(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   naive_mean_variance_update1  s    
iÈ   i   i'  g    „×—ARV   gñhãˆµøä>gíµ ÷Æ°>i    R6   i   (   R    RA   R\   RB   RÌ   RD   R{   R|   R	   t   zerosRª   R1   R   RÊ   Rp   R   Rº   R   R   (   Rà   Rä   Ræ   Rï   t   tolRI   RH   t   x1t   x2t   A0t   A1R“   t
   stable_varRÊ   RË   Rá   R–   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt-   test_incremental_variance_numerical_stability  s<    					%%+	,12,&&,c          C   sÝ  t  j j d ƒ }  |  j d d ƒ } | j \ } } x£d d d g D]’} t  j d | j d | ƒ } | d | j d k r” t  j | | g ƒ } n  x>t | d  | d	 ƒ D]%\ } } | | | … d  d  … f } | d k r=| j d
 d ƒ }	 | j	 d
 d ƒ }
 | j d } t  j
 | j d	 | j d d t  j ƒ} n5 t | |	 |
 | ƒ } | \ }	 }
 } | | j d 7} t  j | |  d
 d ƒ} t  j	 | |  d
 d ƒ} t |	 | d ƒ t |
 | d ƒ t | | ƒ q¬ WqC Wd  S(   NiÏ  i2   i
   i   i   i%   i    iÿÿÿÿi   R6   RV   i   (   R    R!   R"   Ri   R1   R¹   t   hstackt   zipRÊ   RË   RÌ   Rp   R   R   R   (   R(   R)   RH   RI   t
   batch_sizet   stepsR–   t   jt   batcht   incremental_meanst   incremental_variancest   incremental_countt   sample_countt   resultt   calculated_meanst   calculated_variances(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_incremental_variance_ddofg  s4    $		
c          C   s¸   t  j j d ƒ j d d ƒ }  t  j t  j |  ƒ d d ƒ} t |  ƒ } t  j | d d ƒ} t | | ƒ t  j |  t	 |  j
 d ƒ | f ƒ } t |  | | d  d  … t  j f ƒ d  S(   Ni$   i   R6   i   i    (   R    R!   R"   Ri   t   argmaxR{   R   R   t   signRª   R1   RÁ   (   t   datat   max_abs_rowst   data_flippedt   max_rowst   signs(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_vector_sign_flipŠ  s    &c          C   sl   t  j j d ƒ }  |  j d d ƒ } t  j | ƒ } t  j | d d ƒj d ƒ } t t | ƒ | | ƒ d  S(   Ni    i   i   R6   i   iÿÿÿÿ(   iÿÿÿÿi   (	   R    R!   R"   Ri   RC   R=   Rº   R   R   (   R(   R)   t   exp_Xt	   sum_exp_X(    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_softmax•  s
    c          C   s  t  d k  r t d ƒ ‚ n  t t d d d g ƒ t j d d d g ƒ ƒ t j j d ƒ j d ƒ }  t	 t
 t |  d d d	 d ƒt j j d
 ƒ j d d d ƒ} t t | d d ƒt j | d d ƒƒ t t | d d ƒt j | d d ƒƒ t t | d d ƒt j | d d ƒƒ d  S(   Ni   i	   s,   Sum is as unstable as cumsum for numpy < 1.9i   i   i    i † t   rtolt   atoli$   iè  R   i   R6   (   i   i	   (   i   i   i   (   R   R   R   R   R    t   cumsumR!   R"   t   randR
   t   RuntimeWarningR#   (   t   rR“   (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   test_stable_cumsum  s    .!(((F   t   numpyR    t   scipyR    R   R   t   pytestt   sklearn.utils.testingR   R   R   R   R   R   R	   R
   R   R   R   R   t   sklearn.utils.fixesR   t   sklearn.utils.extmathR   R   R   R   R   R   R   R   R   R   R   R   R   R   t"   sklearn.datasets.samples_generatorR   R/   R:   R@   RG   Rg   t   markt   parametrizeRp   Rq   RU   R\   Rh   Rm   Rx   R   R€   RŽ   R˜   Rž   R¨   R²   RÀ   RÅ   RÉ   RÖ   Rß   R÷   R  R  R  R  (    (    (    s?   lib/python2.7/site-packages/sklearn/utils/tests/test_extmath.pyt   <module>   st   				H*	%	#	!	#								P	#		