
&]\c           @` s  d  Z  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
 Z
 d d l j Z d d l m Z d d l m Z m Z m Z d d l m Z m Z m Z m Z m Z y d d l Z Wn e k
 r e d  Z n Xd	 e f d
     YZ d e f d     YZ d e f d     YZ d   Z  d   Z! d   Z" d d  Z$ d   Z% d d  Z& d   Z' e
 j( j) e e d  d e f d     Y  Z* d   Z+ d S(   s   
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtr
- ncfdtri
- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nbdtrik
- nbdtrin
- nrdtrimn
- nrdtrisd
- pdtrik
- nctdtr
- nctdtrit
- nctdtridf
- nctdtrinc

i    (   t   divisiont   print_functiont   absolute_importN(   t   assert_equal(   t   with_metaclass(   t   MissingModulet   check_versiont   FuncData(   t   Argt   IntArgt   get_argst	   mpf2floatt   assert_mpmath_equalt   mpmatht   ProbArgc           B` s    e  Z d  Z d   Z d   Z RS(   s*   Generate a set of probabilities on [0, 1].c         C` s   d |  _  d |  _ d  S(   Ni    i   (   t   at   b(   t   self(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   __init__-   s    	c         C` s   t  d | d  } t j d t j d  |  } t j d d | d d t d } d t j t j d  d |  } t j | | | f } t j |  S(   s5   Return an array containing approximatively n numbers.i   i   ig333333?gffffff?t   endpointi(   t   maxt   npt   logspacet   log10t   linspacet   Falset   r_t   unique(   R   t   nt   mt   v1t   v2t   v3t   v(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   values2   s    #"(   t   __name__t
   __module__t   __doc__R   R"   (    (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyR   +   s   	t   EndpointFilterc           B` s   e  Z d    Z d   Z RS(   c         C` s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   R   R   t   rtolt   atol(   R   R   R   R'   R(   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyR   =   s    			c         C` s   t  j | |  j  |  j t  j |  j  |  j k  } t  j | |  j  |  j t  j |  j  |  j k  } t  j | | Bt t  S(   N(	   R   t   absR   R'   R(   R   t   whereR   t   True(   R   t   xt   mask1t   mask2(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   __call__C   s    66(   R#   R$   R   R/   (    (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyR&   <   s   	t   _CDFDatac           B` sA   e  Z e d  d d d d d d  Z d   Z d   Z d   Z RS(   i   i  c         C` s  | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ t	 | t
  su d  |  _ d  |  _ n |
 d  k	 s | d  k	 r t	 |
 t
  r |
 |  _ n |
 g t |  j  |  _ t	 | t
  r | |  _ q
| g t |  j  |  _ n d  |  _ d  |  _ d  S(   N(   t   spfunct   mpfunct   indext   argspect   spfunc_firstt   dpsR   R'   R(   t
   isinstancet   listt   Nonet
   endpt_rtolt
   endpt_atolt   len(   R   R1   R2   R3   R4   R5   R6   R   R'   R(   R:   R;   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyR   J   s*    											c         G` s   |  j  r |  j |   } t j |  r. t j St |  } | | |  j <t j |  j	  ) |  j
 t |    } t | j  } Wd  QXne t j |  j	  # |  j
 |   } t | j  } Wd  QXt |  } | | |  j <|  j t |    } | S(   N(   R5   R1   R   t   isnant   nanR8   R3   R   t   workdpsR6   R2   t   tupleR   t   real(   R   t   argst   res(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   idmapg   s     	c         C` s   |  j  d  k r" |  j d  k r" d  Sg  } x t |  j  |  j |  j  D] \ } } } | d  k r~ | d  k r~ | j d   qD n* | d  k r d } n | d  k r d } n  | j t | j | j | |   qD W| S(   Ng        (	   R:   R9   R;   t   zipR4   t   appendR&   R   R   (   R   t   filtersR'   R(   t   spec(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   get_param_filter{   s    +		&c         C` s   t  |  j |  j  } |  j   } t t | j d   } | j d } t j | | d  d   |  j	 f j
 | j d d  f  } t |  j | d | d | d |  j d |  j d t d | j   d  S(	   Ni   i    t   param_columnst   result_columnsR'   R(   t
   vectorizedt   param_filter(   R
   R4   R   RI   R@   t   ranget   shapeR   t   hstackR3   t   reshapeR   RD   R'   R(   R   t   check(   R   RB   RM   RJ   RK   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRR      s    ;N(   R#   R$   R+   R9   R   RD   RI   RR   (    (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyR0   I   s   		c          O` s   t  |  |   } | j   d  S(   N(   R0   RR   (   R   t   kwt   d(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _assert_inverts   s    c         C` s   t  j |   t  j |  t  j |  }  } } |  d k rH t  j d  S|  | k ra t  j d  St  j d | d t } t  j | |  |  d d | d t S(   Ni    i   t   exactt   x2t   regularized(   R   t   mpft   fsubR+   t   betainc(   t   kR   t   pt   onemp(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _binomial_cdf   s    /c         C` s   | d k  r t  j d  St  j |   t  j |  t  j |  }  } } |  | |  | | } t  j |  d | d d | d t } | S(   Ni    i   RW   RX   (   R   RY   R[   R+   (   t   dfnt   dfdR,   t   ubRC   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _f_cdf   s    /&c      
   C` s   | d  k r t j j } n  t j |   t j |   t j |  }  } t j d d |  d d | d |   } | | t j d |  d  9} | t j t j	 |   t j d |   } d | SWd  QXd  S(   Ng      ?i   g      ?i   (
   R9   R   t   mpR6   R?   RY   t   hyp2f1t   gammat   sqrtt   pi(   t   dft   tR6   t   fac(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _student_t_cdf   s    )+c         C` s_   t  j | d d t  j | |    } | t  j |  | d  |  | | d d d 9} | S(   Ni   i   i   g      ?(   R   t   besseliRg   t   exp(   Rj   Ri   t   ncRC   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _noncentral_chi_pdf   s    '4c         ` s   | d  k r t j j } n  t j |   t j    t j   }     t j |  - t j    f d   d |  g  } | SWd  QXd  S(   Nc         ` s   t  |      S(   N(   Rp   (   Rj   (   Ri   Ro   (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   <lambda>   s    i    (   R9   R   Rd   R6   RY   R?   t   quad(   R,   Ri   Ro   R6   RC   (    (   Ri   Ro   s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _noncentral_chi_cdf   s    /$c         C` s   |  | d |  | | S(   Ni   (    (   R]   t   lmbda(    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   _tukey_lmbda_quantile   s    s   0.19t
   TestCDFlibc           B` s(  e  Z e j j d  e  d    Z d   Z d   Z d   Z	 e j j d  e  d    Z
 d   Z d   Z d   Z d	   Z e j j d  e  d
    Z d   Z d   Z e j j d  e  d    Z e j j d  e  d    Z d   Z d   Z d   Z e j j d  e  d    Z RS(   t   runc         C` s8   t  t j t d t   t d d  t   g d d d  S(   Ni    i   i  R'   g-C6?(   RU   t   spt   bdtrikR_   R   R	   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_bdtrik   s
    !c         C` sG   t  t j t d t d d  t   t   g d d d d  d  d g d  S(   Ni   i  R'   g-C6?R;   gư>(   RU   Rx   t   bdtrinR_   R	   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_bdtrin   s
    !c         C` sS   t  t j d   d t   t d d d t t d d d t d t g d d d  S(	   Nc         S` s   t  j |  | d | d t S(   NRW   RX   (   R   R[   R+   (   R   R   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq      s    i    g      Y@t   inclusive_ai   t   inclusive_bR'   gư>(   RU   Rx   t   btdtriaR   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_btdtria   s    c         C` sb   t  t j d   d t d d d t t   t d d d t d t g d d d	 d  d
 d g d  S(   Nc         S` s   t  j |  | d | d t S(   NRW   RX   (   R   R[   R+   (   R   R   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq      s    i   i    g      Y@R}   R~   R'   gHz>R;   gC]r2<gV瞯<(   RU   Rx   t   btdtribR   R   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_btdtrib   s    c         C` sD   t  t j t d t d d  t   t d d d t g d d d  S(   Ni   id   i    R}   R'   gHz>(   RU   Rx   t   fdtridfdRc   R	   R   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_fdtridfd   s
    -c         C` s\   t  t j d   d t   t d d d t t d d d t g d d d d  d d	 g d  S(
   Nc         S` s   t  j | d |  | d t S(   NR   RX   (   R   t   gammaincR+   (   R   R   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq      s    i    g     @@R}   g     @R'   gHz>R;   g|=(   RU   Rx   t   gdtriaR   R   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_gdtria   s    c         C` sM   t  t j d   d t d d d t t   t d d d t g d d d  S(	   Nc         S` s   t  j | d |  | d t S(   NR   RX   (   R   R   R+   (   R   R   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq   	  s    i   i    g      Y@R}   g     @@R'   gh㈵>(   RU   Rx   t   gdtribR   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_gdtrib  s
    c         C` s\   t  t j d   d t d d d t t d d d t t   g d d d d  d d	 g d  S(
   Nc         S` s   t  j | d |  | d t S(   NR   RX   (   R   R   R+   (   R   R   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq     s    i   i    g     @@R}   R'   gHz>R;   g|=(   RU   Rx   t   gdtrixR   R   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_gdtrix  s    'c         C` s8   t  t j t t d d  t d t j  g d d d  S(   Ni   id   g|=R'   gHz>(   R   Rx   t   stdtrRl   R	   R   R   t   inf(   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt
   test_stdtr  s    c         C` s,   t  t j t d t   t   g d d d  S(   Ni    R'   gHz>(   RU   Rx   t   stdtridfRl   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_stdtridf  s    c      
   C` s>   t  t j t d t d d  t   g d d d d  d g d  S(   Ni   id   R'   gHz>R;   g|=(   RU   Rx   t   stdtritRl   R	   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_stdtrit#  s
    !c         C` s5   t  t j d   d t   t d d  g d d d  S(   Nc         S` s!   t  j |  d d | d d t S(   Ni   R   RX   (   R   R   R+   (   R!   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq   -  s    i    i   id   R'   g-C6?(   RU   Rx   t   chdtrivR   R	   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_chdtriv*  s    c         C` sV   t  t j t d t d d d t t   t d d d t g d d d d d	 d
 d  S(   Ni   i    id   R}   R   i  R'   g-C6?R(   gV瞯<(   RU   Rx   t	   chndtridfRs   R   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_chndtridf0  s    c         C` sP   t  t j t d t d d d t t d d  t   g d d d d	 d
 d d  S(   Ni   i    id   R}   i   R   i  R'   g-C6?R(   gV瞯<(   RU   Rx   t	   chndtrincRs   R   R   R	   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_chndtrinc:  s
    -c         C` s_   t  t j t d t   t d d  t d d d t g d d d d d	 d
 d d d  d  g d  S(   Ni    i   id   R}   R   i  R'   g-C6?R(   gV瞯<R;   gư>(	   RU   Rx   t   chndtrixRs   R   R	   R   R   R9   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_chndtrixC  s    -c         ` s;   t  j d    t d     f d   t   g d d d  S(   Ni   c         S` s   t  j |  d  S(   Ni    (   Rx   t   tklmbda(   R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq   P  s    c         ` s     t  j |     S(   N(   R   Rn   (   R,   (   t   one(    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRq   Q  s    R'   gHz>(   R   RY   R   R   (   R   (    (   R   s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_tklmbda_zero_shapeL  s
    c         C` sJ   t  t j t d t   t d d d t g d t d d d d d g d  S(	   Ni    iR~   R5   R'   gh㈵>R;   g&.>(   RU   Rx   R   Ru   R   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_tklmbda_neg_shapeT  s    !c      
   C` s>   t  t j t d t   t d d d t g d t d d d  S(   Ni    id   R}   R5   R'   gh㈵>(   RU   Rx   R   Ru   R   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_tklmbda_pos_shape\  s
    !(   R#   R$   t   pytestt   markt   xfailR   Rz   R|   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyRv      s$   										
					c           C` s-  d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC g }  t  j j d#  x |  D] \ } } t t |  } g  t  j j |  D]( } t |  t  j t  j t  j f ^ q } xL t	 j
 |   D]; } | |   } t d$   | D  r t | t  j  q q Wqz Wd  S(D   NR   i   R   Ry   R{   R   i   t   chndtrR   R   R   R   t   ncfdtri   t   ncfdtrit
   ncfdtridfnt
   ncfdtridfdt	   ncfdtrincR   R   R   t   nbdtrikt   nbdtrint   nrdtrimnt   nrdtrisdt   pdtrikR   R   R   t   nctdtrt   nctdtritt	   nctdtridft	   nctdtrincR   i   c         s` s   |  ] } t  j |  Vq d  S(   N(   R   R=   (   t   .0R,   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pys	   <genexpr>  s    (   R   i   (   R   i   (   Ry   i   (   R{   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   t   randomt   seedt   getattrRx   t   randt   floatR>   R   t	   itertoolst   productt   anyR   (   t   funcst   funct   numargsR,   t   args_choicesRB   RC   (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   test_nonfinitee  sR    	>(,   R%   t
   __future__R    R   R   R   t   numpyR   t   numpy.testingR   R   t   scipy.specialt   specialRx   t   scipy._lib.sixR   t   scipy.special._testutilsR   R   R   t   scipy.special._mptestutilsR   R	   R
   R   R   R   t   ImportErrort   objectR   R&   R0   RU   R_   Rc   R9   Rl   Rp   Rs   Ru   R   t   slowRv   R   (    (    (    s>   lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyt   <module>   s6   (P								