
ʽXc           @` s  d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d l	 j
 Z d d l m Z d d l m Z d d l m Z 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( d e e e  f d     YZ) 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   dec(   t   with_metaclass(   t   knownfailure_overridable(   t   MissingModulet   check_versiont   DecoratorMetat   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>   /tmp/pip-build-7oUkmx/scipy/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>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   values0   s    #"(   t   __name__t
   __module__t   __doc__R   R$   (    (    (    s>   /tmp/pip-build-7oUkmx/scipy/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>   /tmp/pip-build-7oUkmx/scipy/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>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   __call__A   s    66(   R%   R&   R   R1   (    (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   R3   R4   R5   R6   R7   R8   R   R)   R*   R<   R=   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyR   H   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(   R7   R3   R   t   isnant   nanR:   R5   R   t   workdpsR8   R4   t   tupleR   t   real(   R   t   argst   res(    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   idmape   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<   R;   R=   t   zipR6   t   appendR(   R   R   (   R   t   filtersR)   R*   t   spec(    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   get_param_filtery   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   R6   R   RK   RB   t   ranget   shapeR   t   hstackR5   t   reshapeR	   RF   R)   R*   R   t   check(   R   RD   RO   RL   RM   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRT      s    ;N(   R%   R&   R-   R;   R   RF   RK   RT   (    (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyR2   G   s   		c          O` s   t  |  |   } | j   d  S(   N(   R2   RT   (   R   t   kwt   d(    (    s>   /tmp/pip-build-7oUkmx/scipy/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>   /tmp/pip-build-7oUkmx/scipy/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   RY   RZ   (   R   R[   R]   R-   (   t   dfnt   dfdR.   t   ubRE   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   (
   R;   R   t   mpR8   RA   R[   t   hyp2f1t   gammat   sqrtt   pi(   t   dft   tR8   t   fac(    (    s>   /tmp/pip-build-7oUkmx/scipy/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   besseliRi   t   exp(   Rl   Rk   t   ncRE   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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(   Rr   (   Rl   (   Rk   Rq   (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   <lambda>   s    i    (   R;   R   Rf   R8   R[   RA   t   quad(   R.   Rk   Rq   R8   RE   (    (   Rk   Rq   s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   _noncentral_chi_cdf   s    /$c         C` s   |  | d |  | | S(   Ni   (    (   R_   t   lmbda(    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   _tukey_lmbda_quantile   s    t
   TestCDFlibc           B` s  e  Z e j d f e e d  f f g Z e   d    Z	 d   Z
 d   Z d   Z e   d    Z d   Z d   Z d   Z d	   Z e   d
    Z d   Z d   Z e   d    Z e   d    Z d   Z d   Z d   Z e   d    Z RS(   s   0.19c         C` s8   t  t j t d t   t d d  t   g d d d  S(   Ni    i   i  R)   g-C6?(   RW   t   spt   bdtrikRa   R   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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ư>(   RW   Ry   t   bdtrinRa   R   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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(   NRY   RZ   (   R   R]   R-   (   R   R   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs      s    i    g     @@t   inclusive_ai   t   inclusive_bR)   gư>(   RW   Ry   t   btdtriaR   R
   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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(   NRY   RZ   (   R   R]   R-   (   R   R   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs      s    i   i    g      Y@R~   R   R)   gHz>R=   g#B;(   RW   Ry   t   btdtribR
   R   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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>(   RW   Ry   t   fdtridfdRe   R   R   R
   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   RZ   (   R   t   gammaincR-   (   R   R   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs      s    i    g     @@R~   g     @R)   gHz>R=   g|=(   RW   Ry   t   gdtriaR   R
   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   RZ   (   R   R   R-   (   R   R   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs     s    i   i    g      Y@R~   g     @@R)   gh㈵>(   RW   Ry   t   gdtribR
   R   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   RZ   (   R   R   R-   (   R   R   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs     s    i   i    g     @@R~   R)   gHz>R=   g|=(   RW   Ry   t   gdtrixR
   R   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   Ry   t   stdtrRn   R   R
   R   t   inf(   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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>(   RW   Ry   t   stdtridfRn   R   R
   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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|=(   RW   Ry   t   stdtritRn   R   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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   RZ   (   R   R   R-   (   R#   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs   +  s    i    i   id   R)   g-C6?(   RW   Ry   t   chdtrivR   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/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瞯<(   RW   Ry   t	   chndtridfRu   R
   R   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_chndtridf.  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瞯<(   RW   Ry   t	   chndtrincRu   R
   R   R   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_chndtrinc8  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ư>(	   RW   Ry   t   chndtrixRu   R   R   R
   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_chndtrixA  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    (   Ry   t   tklmbda(   R.   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs   N  s    c         ` s     t  j |     S(   N(   R   Rp   (   R.   (   t   one(    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRs   O  s    R)   gHz>(   R   R[   R   R
   (   R   (    (   R   s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_tklmbda_zero_shapeJ  s
    c         C` sN   t  t j t d t   t t j d d t g d t d d d d d  g d  S(   Ni    R   R7   R)   gh㈵>R=   g&.>(
   RW   Ry   R   Rw   R   R
   R   R   R   R;   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_tklmbda_neg_shapeR  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~   R7   R)   gh㈵>(   RW   Ry   R   Rw   R   R
   R   (   R   (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   test_tklmbda_pos_shapeZ  s
    !N(   R%   R&   R   t   slowR;   R   R   t
   decoratorsR   R{   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyRx      s(   										
					(*   R'   t
   __future__R    R   R   t   numpyR   t   numpy.testingR   t   scipy.specialt   specialRy   t   scipy._lib.sixR   t   scipy._lib._testutilsR   t   scipy.special._testutilsR   R   R   R	   t   scipy.special._mptestutilsR
   R   R   R   R   R   t   ImportErrort   objectR   R(   R2   RW   Ra   Re   R;   Rn   Rr   Ru   Rw   Rx   (    (    (    s>   /tmp/pip-build-7oUkmx/scipy/scipy/special/tests/test_cdflib.pyt   <module>   s.   "(P							