mò
­fIc        	   @   sE  d  k  Z  d  k Z d  k Z d  k Z d  k Z d k l Z l Z l Z l	 Z	 d k
 l Z d e  i f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d d d d d d d d d f	 Z e d d „ Z d e  i f d „  ƒ  YZ d e  i f d „  ƒ  YZ d  d „ Z e d j o e d e ƒ n d  S(   N(   s   logs   exps   sqrts   pi(   s   test_supportt   TestBasicOpsc           B   sk   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z RS(   Nc         C   s.   g  } t | ƒ D] } | |  i i ƒ  q ~ S(   s0   Helper function to make a list of random numbersN(   t   _[1]t   xranget   nt   it   selft   gent   random(   R   R   R   R   (    (    t-   /mit/python/lib/python2.4/test/test_random.pyt
   randomlist   s     c         C   sY   |  i i ƒ  |  i i ƒ  } t i d ƒ |  i i ƒ  |  i i ƒ  } |  i | | ƒ d  S(   Nf0.10000000000000001(	   R   R   t   seedt   getstatet   state1t   timet   sleept   state2t   assertNotEqual(   R   R   R   (    (    R   t   test_autoseed   s    c         C   s^   d } |  i i ƒ  |  i i ƒ  } |  i | ƒ } |  i i | ƒ |  i	 | |  i | ƒ ƒ d  S(   Niè  (
   t   NR   R   R
   R   t   stateR	   t   randseqt   setstatet   assertEqual(   R   R   R   R   (    (    R   t   test_saverestore   s    c         C   sÖ   xX d  d d d d d d d d d d d	 d d
 d t d ƒ g D] } |  i i | ƒ qA Wx< t d ƒ t d d ƒ g D] } |  i t	 |  i i | ƒ qw W|  i t	 |  i i d d ƒ |  i t	 t
 |  i ƒ g  ƒ d  S(   Ni    l    i   l    iÿÿÿÿlÿÿÿÿ i
   i   f3.1400000000000001x0.02.0t   at   abci   t   onei   (   t   Nonet   tuplet   argR   R   R
   t   ranget   dictt   assertRaisest	   TypeErrort   type(   R   R   (    (    R   t   test_seedargs$   s    A  c         C   sâ   |  i i ƒ  |  i i ƒ  } |  i i d ƒ |  i i ƒ  } |  i | | ƒ |  i i d ƒ |  i i ƒ  } |  i | | ƒ |  i	 t
 |  i i ƒ |  i	 t
 |  i i d ƒ |  i	 t
 |  i i d ƒ |  i	 t
 |  i i d d ƒ d  S(   Nid   t   ickf2.2999999999999998i   i   (   R   R   R
   R   R   t	   jumpaheadR   R   t   state3R    R!   (   R   R&   R   R   (    (    R   t   test_jumpahead-   s    c         C   s¶   d } t | ƒ } x~ t | d ƒ D]l } |  i i | | ƒ } |  i t	 | ƒ | ƒ t
 | ƒ } |  i t	 | ƒ | ƒ |  i | t
 | ƒ j ƒ q# W|  i |  i i g  d ƒ g  ƒ d  S(   Nid   i   i    (   R   R   t
   populationt   kR   R   t   samplet   sR   t   lent   sett   uniqt
   failUnless(   R   R   R+   R.   R)   R(   (    (    R   t   test_sample<   s     c   	      C   s´   d } t | ƒ } d } d „  } xŒ t | ƒ D]~ } | | ƒ | | | ƒ } h  } xU t | ƒ D]= } d  | t |  i i | | ƒ ƒ <t | ƒ | j o Pqa qa W|  i ƒ  q. Wd  S(   Ni   i'  c         C   s   t  t i t d |  ƒ d ƒ S(   Ni   (   t   reducet   intt   __mul__R   R   (   R   (    (    R   t	   factorialO   s    (   R   R   t   popt   trialsR4   R   R)   t   expectedt   permsR   R   R   R   R   R*   R,   t   fail(	   R   R   R4   R6   R5   R   R8   R7   R)   (    (    R   t   test_sample_distributionI   s    	  	c         C   s‡   |  i i t t d ƒ ƒ d ƒ |  i i t d ƒ d ƒ |  i i t d ƒ d ƒ |  i i t d ƒ d ƒ |  i i t d ƒ d ƒ d  S(   Ni   i   t   abcdefghijklmnopqrst(   R   R   R*   R-   R   R   t   strR   (   R   (    (    R   t   test_sample_inputs[   s
    c         C   s  |  i i t i d ƒ d ƒ t i t d ƒ t d d d ƒ t d d ƒ ƒ } |  i i | d ƒ d } t d „  t | ƒ Dƒ ƒ } xW t | d	 ƒ D]E } |  i i | | ƒ } x' | D] } |  i t | ƒ t j ƒ q¶ Wq” W| i ƒ  |  i | t | ƒ ƒ d  S(
   NR;   i   i
   id   in   i   i   c         c   s'   x  |  ] } | t | | ƒ f Vq Wd  S(   N(   t   [outmost-iterable]R   t   complex(   R>   R   (    (    R   t   <generator expression>n   s    i   (   R   R   R*   R   t   fromkeysR   R   R   R   t   dR)   t   sampt   xt   assert_R"   R2   t   sortR   (   R   R   RB   R   RD   RC   R)   (    (    R   t   test_sample_on_dictsc   s    2  !
c         C   s   x– d	 D]Ž } |  i i  | ƒ |  i i ƒ  } |  i i d d ƒ } |  i i  | ƒ |  i i ƒ  } |  i i d d ƒ } |  i	 | | ƒ |  i	 | | ƒ q Wd  S(
   Ni   i   i{   iÒ  i90  i@â iñû	 i    (   i   i   i{   iÒ  i90  i@â iñû	 (
   R
   R   R   R   t   x1t   gausst   y1t   x2t   y2R   (   R   RH   RK   R
   RJ   RL   (    (    R   t
   test_gaussw   s     c         C   s’   t  i |  i ƒ } g  } t d ƒ D] } | |  i i ƒ  q# ~ } t  i
 | ƒ } g  } t d ƒ D] } | | i ƒ  qb ~ } |  i | | ƒ d  S(   Ni
   (   t   picklet   dumpsR   R   R   R   R   R   R   t   origseqt   loadst   newgent   restoredseqR   (   R   R   RR   R   R   RS   RP   (    (    R   t   test_picklingˆ   s
    0-(   t   __name__t
   __module__R	   R   R   R#   R'   R0   R:   R=   RG   RM   RT   (    (    (    R   R       s   											t   WichmannHill_TestBasicOpsc           B   s8   t  Z e i ƒ  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   |  i t |  i i d ƒ d  S(   Ni   (   i   NN(   R   R    t
   ValueErrorR   R   R   (   R   (    (    R   t   test_setstate_first_arg’   s    c         C   s‹   d } |  i i ƒ  } |  i i | ƒ |  i i ƒ  } |  i i | ƒ x! t	 | ƒ D] } |  i i ƒ  qQ W|  i i ƒ  } |  i | | ƒ d  S(   Niè  (   R   R   R   R   R+   R%   R   t   r1R   R   R   t   r2R   (   R   RZ   R[   R   R   R+   (    (    R   t   test_strong_jumpahead•   s     c         C   s   x– d	 D]Ž } |  i i | ƒ |  i i ƒ  } |  i i d d ƒ } |  i i | ƒ |  i i ƒ  } |  i i d d ƒ } |  i
 | | ƒ |  i
 | | ƒ q Wd  S(
   Ni   i   i{   iÒ  i90  i@â iñû	 i    (   i   i   i{   iÒ  i90  i@â iñû	 (   R
   R   R   t   whseedR   RH   RI   RJ   RK   RL   R   (   R   RH   RK   R
   RJ   RL   (    (    R   t   test_gauss_with_whseed¢   s     c         C   sE   t  i } t  i d d ƒ |  i t |  i i d d ƒ | t  i (d  S(   Nt   errors   Underlying randomi   i<   (	   t   warningst   filterst
   oldfilterst   filterwarningsR   R    t   UserWarningR   t	   randrange(   R   Rb   (    (    R   t   test_bigrand³   s    
(	   RU   RV   R   t   WichmannHillR   RY   R\   R^   Rf   (    (    (    R   RW      s
   			t   SystemRandom_TestBasicOpsc           B   s†   t  Z e i ƒ  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e e d „ Z RS(   Nc         C   s   |  i i ƒ  d  S(   N(   R   R   R
   (   R   (    (    R   R   ½   s    c         C   s3   |  i t |  i i ƒ |  i t |  i i d  ƒ d  S(   N(   R   R    t   NotImplementedErrorR   R   R   R   (   R   (    (    R   R   Á   s    c         C   s   |  i i d ƒ d  S(   Nid   (   R   R   R
   (   R   (    (    R   R#   Å   s    c         C   s   |  i i d ƒ d  S(   Nid   (   R   R   R%   (   R   (    (    R   R'   É   s    c         C   s6   d  |  i _ |  i i d ƒ |  i |  i i d  ƒ d  S(   Nid   (   R   R   R   t
   gauss_nextR
   R   (   R   (    (    R   RM   Í   s    c         C   s   |  i t t i |  i ƒ d  S(   N(   R   R    Ri   RN   RO   R   (   R   (    (    R   RT   Ò   s    c         C   s\   d d } d } x1 t d ƒ D]# } | t |  i i ƒ  | ƒ O} q W|  i | | d ƒ d  S(   Ni   i5   i    id   i   (	   t   spant   cumR   R   R2   R   R   R   R   (   R   Rk   R   Rl   (    (    R   t   test_53_bits_per_floatÕ   s    
 !c         C   s   d d } d } xT t d ƒ D]F } |  i i | ƒ } |  i d | j o
 | j  n ƒ | | O} q W|  i	 | | d ƒ d  S(   Ni   iô  i    id   i   (
   Rk   Rl   R   R   R   R   Re   t   rRE   R   (   R   Rk   R   Rn   Rl   (    (    R   Rf   Ý   s    
 $c      	   C   s¨   x¡ d d d d d d d d d	 g	 D]~ } |  i i d
 | ƒ } |  i i d
 | d
 ƒ } | | j o d  Sn |  i | |  i i | | ƒ j o
 | j  n ƒ q" Wd  S(   Ni(   iP   i    iÈ   iÓ   iú   iw  i   i&  i   (   R   R   R   Re   t   startt   stopRE   (   R   R   Ro   Rp   (    (    R   t   test_bigrand_rangesè   s    " c      
   C   sŸ   x˜ d d d d d d f d d d d d f g D]a \ } } |  i t t | | ƒ ƒ t g  } t d ƒ D] } | |  i	 i
 | | ƒ qn ~ ƒ ƒ q6 Wd  S(   Niþÿÿÿi    i   i<   id   (   iþÿÿÿi    (   Ro   Rp   R   R   R-   R   R   R   R   R   Re   (   R   R   Rp   R   Ro   (    (    R   t   test_rangelimitsð   s    6 c         C   s[  xK t  d d ƒ D]: } |  i d |  i i | ƒ j o d | j  n ƒ q W|  i i } x} d d d d d d d d	 d
 d d d d d g D]K } d } x$ t  d ƒ D] } | | | ƒ O} q¤ W|  i
 | d | d ƒ q‹ W|  i t |  i i ƒ |  i t |  i i d d ƒ |  i t |  i i d ƒ |  i t |  i i d ƒ |  i t |  i i d ƒ d  S(   Ni   iè  i    i   i   i   i   i    i4   i5   i6   iw   i   i€   i   id   iÿÿÿÿf10.1(   R   R)   R   RE   R   t   getrandbitst   getbitsRk   Rl   R   R   R    R!   RX   (   R   Rt   Rk   R   Rl   R)   (    (    R   t   test_genrandbitsõ   s      81  c         C   sQ  xJt  d d ƒ D]9} d | >} | d } | d | | d ƒ ƒ } |  i | | ƒ |  i	 | d | d j ƒ | | d 7} | d | | d ƒ ƒ } |  i	 | | | d g j ƒ |  i	 d | | j o d | d j n ƒ | | d ?8} | d | | d ƒ ƒ } |  i | | ƒ |  i	 d | | j o d | d j n ƒ q Wd  S(   Ni   iè  l    f1.0000100000000001i   i   (
   R   R   R   t   numbitsR2   t   _logR)   R   R   RE   (   R   Rw   R2   R   R   Rv   R)   (    (    R   t   test_randbelow_logic	  s     

0(   RU   RV   R   t   SystemRandomR   R   R   R#   R'   RM   RT   Rm   Rf   Rq   Rr   Ru   t   logR2   Rx   (    (    (    R   Rh   º   s   											t   MersenneTwister_TestBasicOpsc           B   s}   t  Z e i ƒ  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z e e d „ Z RS(   Nc         C   s   |  i t |  i i d ƒ d  S(   Ni   (   i   NN(   R   R    RX   R   R   R   (   R   (    (    R   RY   "  s    c         C   s   |  i t |  i i d ƒ |  i t |  i i d d	 d  f ƒ |  i t |  i i d d
 d d  f ƒ |  i t |  i i d d d d d  f ƒ d  S(   Ni   i   i   R   iq  i    ip  (   i   NN(   i   i   i   (   R   (   i    (   R   (   R   R    R!   R   R   R   RX   (   R   (    (    R   t   test_setstate_middle_arg%  s    "&c      
   C   s™   d d d d d d d d d	 d
 g
 } |  i i d d d >d d >d d >ƒ |  i d ƒ d } x3 t | | ƒ D]" \ } } |  i	 | | d d ƒqo Wd  S(   Nf0.45839803073713259f0.86057815201978782f0.92848331726782152f0.35932681119782461f0.081823493762449573f0.14332226470169329f0.084297823823520024f0.53814864671831453f0.089215024911993401f0.78486196105372907l   #q l   Gai    l   fi@   l   Ÿ$ i`   iÐ  iöÿÿÿt   placesi   (
   R7   R   R   R
   R	   t   actualt   zipR   t   et   assertAlmostEqual(   R   R   R~   R7   R€   (    (    R   t   test_referenceImplementation/  s    $( c      
   C   s¯   d k  l } d d d d d d d d	 d
 d g
 } |  i i d d d >d d >d d >ƒ |  i d ƒ d } x< t | | ƒ D]+ \ } } |  i t | | d ƒ ƒ | ƒ q| Wd  S(   N(   s   ldexpl   #¤1É,u l   ¥w¤bl'Ü l    £JŠXí l   ¿uªak~[ l   @"p1y l   sVë%bX$ l   ‰E3EJ l   ”V‚b‰ l   þa“oek l   Æ4¦)[vÈ l   #q l   Gai    l   fi@   l   Ÿ$ i`   iÐ  iöÿÿÿi5   (   t   matht   ldexpR7   R   R   R
   R	   R~   R   R   R€   R   t   long(   R   R   R~   R„   R7   R€   (    (    R   t$   test_strong_reference_implementationN  s    $
( c         C   s&   d d d >d } |  i i  | ƒ d  S(   Nl    i'  i   i   (   R
   R   R   (   R   R
   (    (    R   t   test_long_seedd  s    c         C   s\   d d } d } x1 t d ƒ D]# } | t |  i i ƒ  | ƒ O} q W|  i | | d ƒ d  S(   Ni   i5   i    id   i   (	   Rk   Rl   R   R   R2   R   R   R   R   (   R   Rk   R   Rl   (    (    R   Rm   m  s    
 !c         C   s   d d } d } xT t d ƒ D]F } |  i i | ƒ } |  i d | j o
 | j  n ƒ | | O} q W|  i	 | | d ƒ d  S(   Ni   iô  i    id   i   (
   Rk   Rl   R   R   R   R   Re   Rn   RE   R   (   R   Rk   R   Rn   Rl   (    (    R   Rf   u  s    
 $c      	   C   s¨   x¡ d d d d d d d d d	 g	 D]~ } |  i i d
 | ƒ } |  i i d
 | d
 ƒ } | | j o d  Sn |  i | |  i i | | ƒ j o
 | j  n ƒ q" Wd  S(   Ni(   iP   i    iÈ   iÓ   iú   iw  i   i&  i   (   R   R   R   Re   Ro   Rp   RE   (   R   R   Ro   Rp   (    (    R   Rq   €  s    " c      
   C   sŸ   x˜ d d d d d d f d d d d d f g D]a \ } } |  i t t | | ƒ ƒ t g  } t d ƒ D] } | |  i	 i
 | | ƒ qn ~ ƒ ƒ q6 Wd  S(   Niþÿÿÿi    i   i<   id   (   iþÿÿÿi    (   Ro   Rp   R   R   R-   R   R   R   R   R   Re   (   R   R   Rp   R   Ro   (    (    R   Rr   ˆ  s    6 c         C   s‡  |  i i d ƒ |  i |  i i d ƒ d ƒ xK t d d ƒ D]: } |  i d |  i i | ƒ j o d | j  n ƒ q< W|  i i } x} d d d d	 d
 d d d d d d d d d g D]K } d } x$ t d ƒ D] } | | | ƒ O} qÐ W|  i | d | d ƒ q· W|  i t |  i i ƒ |  i t |  i i d ƒ |  i t |  i i d d ƒ |  i t |  i i d ƒ |  i t |  i i d ƒ d  S(   Ni‡Ö id   l   S!mÿ.vFXO i   iè  i    i   i   i   i   i    i4   i5   i6   iw   i   i€   i   R   iÿÿÿÿ(   R   R   R
   R   Rs   R   R)   RE   Rt   Rk   Rl   R   R    R!   RX   (   R   Rt   Rk   R   Rl   R)   (    (    R   Ru     s&     81  c         C   sQ  xJt  d d ƒ D]9} d | >} | d } | d | | d ƒ ƒ } |  i | | ƒ |  i	 | d | d j ƒ | | d 7} | d | | d ƒ ƒ } |  i	 | | | d g j ƒ |  i	 d | | j o d | d j n ƒ | | d ?8} | d | | d ƒ ƒ } |  i | | ƒ |  i	 d | | j o d | d j n ƒ q Wd  S(   Ni   iè  l    f1.0000100000000001i   i   (
   R   R   R   Rv   R2   Rw   R)   R   R   RE   (   R   Rw   R2   R   R   Rv   R)   (    (    R   Rx   ¥  s     

0(   RU   RV   R   t   RandomR   RY   R|   R‚   R†   R‡   Rm   Rf   Rq   Rr   Ru   Rz   R2   Rx   (    (    (    R   R{     s   		
									f0.99999999999951827f676.52036812188351f-1259.1392167222889f771.32342877576741f-176.61502914983859f12.50734324009056f0.1385710331296526f9.9349371139307475e-06f1.6594701874084621e-07i   c         C   s€   |  d 8}  | d } x3 t d t | ƒ ƒ D] } | | | |  | 7} q* W|  d 7}  |  | |  t |  | ƒ t d t	 ƒ | S(   Nf1.0i    i   f0.5i   (
   t   zt   coft   sumR   R,   R   t   gt   expt   sqrtt   pi(   R‰   RŠ   RŒ   R   R‹   (    (    R   t   gamma¾  s    

 
t   TestDistributionsc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   sž  t  i ƒ  } g  } t d ƒ D] } | | i  ƒ  q ~ d g d } | i | _  | i d d ƒ | i | _  | i	 d ƒ | i | _  | i
 d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d d ƒ | i | _  | i d	 d	 ƒ d  S(
   Ni2   f0.0i   i   i
   f1.0f0.01f200.0f3.0(   R   Rˆ   RŒ   R   R   R   RD   R5   t   uniformt   paretovariatet   expovariatet   weibullvariatet   normalvariateRI   t   lognormvariatet   vonmisesvariatet   gammavariatet   betavariate(   R   RŒ   R   R   RD   (    (    R   t   test_zeroinputsÇ  s    8c         C   sï  t  i ƒ  } d } g  } t d | ƒ D] } | | t | ƒ q& ~ }
 x¢| i	 d d d d d d d d f | i
 d d d d d d f | i d d d d d d d d d d f | i d t d d d	 ƒ t d d d	 ƒ t d d d	 ƒ d f g D]ä \ } } } } |
 i | _  g  }	 xG t t |
 ƒ ƒ D]3 } y |	 i | | Œ  ƒ Wq;t j
 o q;Xq;Wd
 } } x* |	 D]" } | | 7} | | | d 7} qƒWt |	 ƒ } |  i | | | d ƒ |  i | | d | d ƒ qWd  S(   Niˆ  i   f1.0f10.0i   i   f1.5f5.0f3.0i    (   f1.0f10.0(   f1.5(   f5.0(   f1.0f3.0(   R   Rˆ   RŒ   R   R   R   R   t   floatRD   R’   R”   R“   R•   R   t   variatet   argst   mut	   sigmasqrdR5   t   yR,   t   appendt
   IndexErrort   s1t   s2R€   R   R   (   R   RŸ   R    RŒ   R   Rž   R   R   R¥   R¡   RD   R   R¤   R€   (    (    R   t   test_avg_stdØ  s*    4½  	
 
(   RU   RV   R›   R¦   (    (    (    R   R‘   Æ  s   	t
   TestModulec           B   s   t  Z d „  Z d „  Z RS(   Nc         C   sP   |  i t i d ƒ |  i t i d ƒ |  i t i d ƒ |  i t i d ƒ d  S(   Nf1.71552776992141f6.2831853071800001f1.3862943611198899f2.5040773967762702(   R   R   R   t   NV_MAGICCONSTt   TWOPIt   LOG4t   SG_MAGICCONST(   R   (    (    R   t   testMagicConstantsõ  s    c         C   s,   |  i t t i ƒ t t t ƒ ƒ j ƒ d  S(   N(   R   R/   R-   R   t   __all__t   dir(   R   (    (    R   t   test__all__û  s    (   RU   RV   R¬   R¯   (    (    (    R   R§   ô  s   	c         C   sÊ   t  t t t g } y t i ƒ  i ƒ  Wn t j
 o n X| i t	 ƒ t
 i | Œ  d  k } |  o` t | d ƒ oP d  g d } x7 t t | ƒ ƒ D]# } t
 i | Œ  | i ƒ  | | <q– W| GHn d  S(   Nt   gettotalrefcounti   (   RW   R{   R‘   R§   t   testclassesR   Ry   Ri   R¢   Rh   t   test_supportt   run_unittestt   syst   verboset   hasattrR   t   countsR   R,   R   R°   (   Rµ   R±   R   R´   R·   (    (    R   t	   test_mainÿ  s    	 t   __main__Rµ   (   t   unittestR   R   RN   R`   Rƒ   Rz   R   RŽ   R   t   testR²   t   TestCaseR    RW   Rh   R{   t   _gammacoeffR   R‘   R§   R   R¸   RU   t   True(   R²   Rº   R   RW   R§   Rz   RŽ   R½   R{   R¸   Rh   R   R‘   R`   R   R   R    RN   R   (    (    R   t   ?   s"   					„+e›".