a
    BCCf                  	   @   sV  d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlZd dlZ	d dl
mZmZmZ d dlmZmZmZmZmZmZmZ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 m!Z! d d
l"m#Z# G dd dZ$dde$ ifddg difddg difdde$ ifdde$ ifde$ d dfgZ%ej&j'dkrRej&j(dk rRdZ)ndZ)dd edfdd e*e)fdd e+dfd d edfd!d edfd"d e*d#fgZ,d$d edfd%d edfd&d e*e)fd'd e+dfd(d e*d#fgZ-d)d e*e)fd*d e+dfd+d edfd,d edfd-d e*d#fgZ.g d.fd/d0ggd1fd2d3e	j/d4gd5fd2d3e	j0d4gd5fd0d0gd6fgZ1d7e2d8fd9e2d8fgZ3d:ed;fd<ed;fgZ4d=ed;fe	j0e	j0fed;fe	j0 e	j0 fed;fe	j0e	j0 fed;fe	j0 e	j/fe2d>fe	j/e	j0fe2d>fgZ5d e	j/fe2d>fe	j/e	j/fe2d>fgZ6ej78d?e4e3 e6 ej78d@e%dAdB Z9ej78d@e%dCdD Z:dEdF Z;dGdH Z<ej78d@e%dIdJ Z=ej78dKg dLdMdN Z>dOdP Z?dndSdTZ@dodVdWZAdXdY ZBej78dZg d[d\d] ZCej78dZddgG d^d_ d_ZDG d`da daZEG dbdc dcZFG ddde deZGG dfdg dgZHG dhdi diZIG djdk dkZJG dldm dmZKdS )p    N)deepcopy)assert_allcloseassert_equalsuppress_warnings)TransformedDensityRejectionDiscreteAliasUrnDiscreteGuideTableNumericalInversePolynomialNumericalInverseHermiteRatioUniformsSimpleRatioUniformsUNURANError)raises)stats)special)	chisquarecramervonmises)distdiscretedistcont)check_random_statec                   @   s$   e Zd Zdd Zdd Zdd ZdS )StandardNormalc                 C   s&   dt dt j  t d| |  S N      ?       @      ࿩npsqrtpiexpselfx r#   [/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/stats/tests/test_sampling.pypdf!   s    zStandardNormal.pdfc                 C   s,   dt dt j  |  t d| |  S r   r   r    r#   r#   r$   dpdf%   s    zStandardNormal.dpdfc                 C   s
   t |S N)r   Zndtrr    r#   r#   r$   cdf(   s    zStandardNormal.cdfN__name__
__module____qualname__r%   r&   r(   r#   r#   r#   r$   r       s   r   r   distr   ){Gz?
ףp=
?皙?r   r	   r
   r   )r-   modepypy)      
   z.unsupported operand type for float\(\): 'list'zmust be real number, not listc                 C   s   |  S r'   r#   r"   r#   r#   r$   <lambda>@       r7   z...c                 C   s   g S r'   r#   r6   r#   r#   r$   r7   B   r8   c                 C   s   t S r'   foor6   r#   r#   r$   r7   D   r8   name 'foo' is not definedc                 C   s   t jS r'   r   infr6   r#   r#   r$   r7   F   r8   c                 C   s   t jS r'   r   nanr6   r#   r#   r$   r7   H   r8   c                   C   s   dS Nr   r#   r#   r#   r#   r$   r7   J   r8   ,takes 0 positional arguments but 1 was givenc                 C   s   t jS r'   r<   r6   r#   r#   r$   r7   Q   r8   c                 C   s   t jS r'   r>   r6   r#   r#   r$   r7   S   r8   c                 C   s   g S r'   r#   r6   r#   r#   r$   r7   U   r8   c                 C   s   t S r'   r9   r6   r#   r#   r$   r7   W   r8   c                   C   s   dS r@   r#   r#   r#   r#   r$   r7   Y   r8   c                 C   s   g S r'   r#   r6   r#   r#   r$   r7   `   r8   c                 C   s   t S r'   r9   r6   r#   r#   r$   r7   b   r8   c                 C   s   t jS r'   r<   r6   r#   r#   r$   r7   d   r8   c                 C   s   t jS r'   r>   r6   r#   r#   r$   r7   f   r8   c                   C   s   dS r@   r#   r#   r#   r#   r$   r7   h   r8   z!must contain at least one elementr           z0wrong number of dimensions \(expected 1, got 2\)皙?皙?r0   )must contain only finite / non-nan values(must contain at least one non-zero value)      r4   zmust be a length 2 tupler#   )rH   rG   zleft >= right)rG   rG   )r5   r5   zonly non-nan valuesdomain, err, msgzmethod, kwargsc                 C   sT   t tj|}tj||d& |f i |d| i W d    n1 sF0    Y  d S )Nmatchdomain)getattrr   samplingpytestr   )rL   errmsgmethodkwargsMethodr#   r#   r$   test_bad_domain   s    rU   c           
      C   s  t tj| }d}|f i |d|i}|f i |d|i}t|d|d tjd |f i |}|d}tjd  |f i |ddi}|d}t|| tjtj	d}tj
tj	d}	|f i |d|i}|f i |d|	i}t|d|d d S )N{   random_stated   )rM   r   rN   r   rvsr   randomseedRandomStateZMT19937	Generator)
rR   rS   rT   r[   rng1rng2rvs1rvs2Zseed1Zseed2r#   r#   r$   test_random_state   s"    


rb   c                  C   sr   t t dd} t t }|d t| d|d t t dd}|d}|d |d}t|| d S )NrV   rW   rX   )r   r   Zset_random_stater   rY   )r^   r_   rngr`   ra   r#   r#   r$   test_set_random_state   s    




re   c                     s   d d dG dd d  fdd}  fdd}t j| d}t j|d}|  |  |  |  d	 d
ks|J d dksJ d S )N)err1err2c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z.test_threading_behaviour.<locals>.Distributionc                 S   s
   || _ d S r'   )pdf_msg)r!   rh   r#   r#   r$   __init__   s    z7test_threading_behaviour.<locals>.Distribution.__init__c                 S   s&   d|  k rdk r"n n
t | j|S )Ng33333H@g      I@)
ValueErrorrh   r    r#   r#   r$   r%      s    
z2test_threading_behaviour.<locals>.Distribution.pdfc                 S   s   dS NrG   r#   r    r#   r#   r$   r&      s    z3test_threading_behaviour.<locals>.Distribution.dpdfN)r*   r+   r,   ri   r%   r&   r#   r#   r#   r$   Distribution   s   rl   c               
      s\    d} t | ddd}z|d W n2 tyV } z|jd d< W Y d }~n
d }~0 0 d S )Nr:   r5   rX      rL   rW   順 r   rf   r   rY   rj   argsr-   rd   erl   errorsr#   r$   func1   s    z'test_threading_behaviour.<locals>.func1c               
      s\    d} t | ddd}z|d W n2 tyV } z|jd d< W Y d }~n
d }~0 0 d S )Nbarrm   rH   ro   rp   r   rg   rq   rs   ru   r#   r$   func2   s    z'test_threading_behaviour.<locals>.func2)targetrf   r:   rg   rx   )	threadingThreadstartjoin)rw   ry   t1t2r#   ru   r$   test_threading_behaviour   s    
		r   c                 C   sP   t tj| }|f i |ddi}t|}t|}t|d|d d S )NrW   rV   rX   )rM   r   rN   pickledumpsloadsr   rY   )rR   rS   rT   r^   objr_   r#   r#   r$   test_pickle   s
    

r   size)Nr   )r   rG   )r5   r4   )rH   r4         )r   r   )r   rG   c                 C   sP   t t }| d u r(t|| sLJ n$t| r8| f} || j| ksLJ d S r'   )r   r   r   ZisscalarrY   shape)r   rd   r#   r#   r$   test_rvs_size  s    

r   c                  C   s   t  } tjd}t| |d}tjdddd}t|| |    t| 	||	| t jddd} t| |d}t|| |    t| 	||	| t 
d	d
} t| |d}|  }| t|d |d d }t|||    d S )Nr   rc   rG   rX   num      $@      @)locscaler5   rC   )r   normr   rZ   default_rngr
   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r-   urngrd   urL   pvr#   r#   r$   test_with_scipy_distribution  s    r   Hz>皙?c                 C   sn   |  d}| | f}t|d r8t||||d |  d}t|j|_t||jj	}|dksjJ d S )Nrp   rG   rtolatoli  r   )
rY   meanvarr   isfiniter   Z	vectorizer(   r   pvalue)rd   r-   mv_exr   r   rY   mvpvalr#   r#   r$   r   )  s    

r   MbP?c                 C   s   |  d}| | f}t||||d ||  }t|}tj|dd\}}	|	|	  }	|	|d |	j< t	||j
}
|
dksJ d S )Nrp   r   T)Zreturn_countsr   )rY   r   r   r   sumr   Z
zeros_likeuniquer   r   r   )rd   r   r   r   r   rY   r   Z	obs_freqs_Zfreqsr   r#   r#   r$   r   6  s    

r   c                  C   s   d} t jt| d  tt ddd W d    n1 s80    Y  t jt| d tt dd W d    n1 st0    Y  d S )Nz.102 : center moved into domain of distributionrJ   r   r4   r   )centerrL   rL   )rO   warnsRuntimeWarningr	   r   )rQ   r#   r#   r$   !test_warning_center_not_in_domainF  s
    .r   rR   )r   r	   r   c                 C   sR   t tj| }d}tjt|d  |t ddd W d    n1 sD0    Y  d S )Nz17 : mode not in domainrJ   r   r   )r1   rL   )rM   r   rN   rO   r   r   r   )rR   rT   rQ   r#   r#   r$   test_error_mode_not_in_domainP  s    r   c                   @   s   e Zd Zdd ZdejjdddejjdddgZde	 fdd	d
dgZ
de	 fde	 fdgZejdeejde
ejdedd Zdd ZdS )TestQRVSc                 C   s   d}t jt|d2 ttj|}|t }|jdd W d    n1 sJ0    Y  ttj|}|t }d}t jt|d& |jdtj	dd W d    n1 s0    Y  d S )	Nz&`qmc_engine` must be an instance of...rJ   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.r4   rH   dr   )
rO   r   rj   rM   r   rN   r   qrvsqmcHalton)r!   rR   rK   rT   genr#   r#   r$   test_input_validationa  s    
*
zTestQRVS.test_input_validationNrG   r   r[   r4   )rG   rG   )r   r   )r   r   )rH   r   r   )r4   r4   qrngsize_in, size_outzd_in, d_outc                 C   sJ  t jdkot d dk}|r0|dkr0td t }ttj|}	|	|}
|d ur|d ur|j	|krd}tj
t|d  |
j|||d W d    n1 s0    Y  d S |d u r|d ur|j	d	kr|j	f}|| }t|}|
j|||d
}|d ur|j|ksJ |d urF|t|p"d	}tj||}t||dd d S )Nwin32r   32bitr	   z4NumericalInversePolynomial.qrvs fails for Win 32-bitr   rJ   r   rG   r   r   r   -q=r   )sysplatformarchitecturerO   xfailr   rM   r   rN   r   r   rj   r   r   r   rZ   r   prodr   r   reshaper   )r!   r   size_insize_outZd_inZd_outrR   Zw32r-   rT   r   rK   Zshape_expectedqrng2r   uniformqrvs2r#   r#   r$   test_QRVS_shape_consistencyw  s,    
.

z$TestQRVS.test_QRVS_shape_consistencyc                 C   s   t  }ttj|}||}d}d}tjj|dd}tjj|dd}|t|}	|j	|||d}
tj
|	}t|D ]4}|
d|f }|d d |f |}t||dd qvd S )	N)r4   r   r   r   r   r   .r   r   )r   rM   r   rN   r   r   rZ   r   r   r   r   r   ranger   r   )r!   rR   r-   rT   r   r   r   r   r   r   r   r   isampleZsample2r#   r#   r$   test_QRVS_size_tuple  s    zTestQRVS.test_QRVS_size_tuple)r*   r+   r,   r   r   r   ZSobolr   ZqrngstuplesizesZdsrO   markparametrizer   r   r#   r#   r#   r$   r   ^  s   ""r   c                
   @   s  e Zd ZG dd dZG dd dZG dd dZe e ededgZdd	gZdd
gZde	j
gZde	j
gZeeeegZejdeeedd Zdd edfgZee7 Zejdedd Zejdedd Zejdedd Zejdg ddd Zdd Zejd d!e	je	j
d"d#gd$d% Ze	jd&d'd(d)g g ge	jge	j
 e	je	j
gd&e	jd*d"gd+d,e	j
gg d-ggZ ejd.e d/d0 Z!d1d2 Z"d3S )4TestTransformedDensityRejectionc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z%TestTransformedDensityRejection.dist0c                 C   s   dd||   S N      ?rG   r#   r    r#   r#   r$   r%     s    z)TestTransformedDensityRejection.dist0.pdfc                 C   s   dd|  S )Nr   r#   r    r#   r#   r$   r&     s    z*TestTransformedDensityRejection.dist0.dpdfc                 C   s   d||d d  d  S Nr   r4   gUUUUUU?r#   r    r#   r#   r$   r(     s    z)TestTransformedDensityRejection.dist0.cdfc                 C   s   dS N)rG   r#   r!   r#   r#   r$   r     s    z-TestTransformedDensityRejection.dist0.supportNr*   r+   r,   r%   r&   r(   r   r#   r#   r#   r$   dist0  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z%TestTransformedDensityRejection.dist1c                 C   s   t j|d S Nr   r   r   Z_pdfr    r#   r#   r$   r%     s    z)TestTransformedDensityRejection.dist1.pdfc                 C   s   | d t j|d  S )N{Gz?r   r   r    r#   r#   r$   r&     s    z*TestTransformedDensityRejection.dist1.dpdfc                 C   s   t j|d S r   r   r   Z_cdfr    r#   r#   r$   r(     s    z)TestTransformedDensityRejection.dist1.cdfNr)   r#   r#   r#   r$   dist1  s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z%TestTransformedDensityRejection.dist2c                 C   s
   || _ d S r'   shiftr!   r   r#   r#   r$   ri     s    z.TestTransformedDensityRejection.dist2.__init__c                 C   s&   || j 8 }dt|d  }d| | S Nr         ?r   absr!   r"   yr#   r#   r$   r%     s    
z)TestTransformedDensityRejection.dist2.pdfc                 C   s8   || j 8 }dt|d  }|| | }|dk r2|S | S )Nr   rB   r   r   r#   r#   r$   r&     s    
z*TestTransformedDensityRejection.dist2.dpdfc                 C   s2   || j 8 }|dkrdd|  S ddd|   S d S NrB   r   r   r   r    r#   r#   r$   r(     s    
z)TestTransformedDensityRejection.dist2.cdfN)r*   r+   r,   ri   r%   r&   r(   r#   r#   r#   r$   dist2  s   r   rB        @?r   dist, mv_exc                 C   sL   t  &}|t t|dd}W d    n1 s20    Y  t||| d S N*   rc   )r   filterr   r   r   )r!   r-   r   suprd   r#   r#   r$   
test_basic  s    
*z*TestTransformedDensityRejection.test_basicc                 C   s   dS )Nr   r#   r6   r#   r#   r$   r7     r8   z(TestTransformedDensityRejection.<lambda>50 : bad construction points.pdf, err, msgc                 C   sX   G dd d}||_ dd |_tj||d t| W d    n1 sJ0    Y  d S )Nc                   @   s   e Zd ZdS )z:TestTransformedDensityRejection.test_bad_pdf.<locals>.distNr*   r+   r,   r#   r#   r#   r$   r-     s   r-   c                 S   s   dS rk   r#   r6   r#   r#   r$   r7   	  r8   z>TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>rJ   r%   r&   rO   r   r   r!   r%   rP   rQ   r-   r#   r#   r$   test_bad_pdf  s
    
z,TestTransformedDensityRejection.test_bad_pdfzdpdf, err, msgc                 C   s\   G dd d}dd |_ ||_tj||d t|dd W d    n1 sN0    Y  d S )Nc                   @   s   e Zd ZdS )z;TestTransformedDensityRejection.test_bad_dpdf.<locals>.distNr  r#   r#   r#   r$   r-     s   r-   c                 S   s   | S r'   r#   r6   r#   r#   r$   r7     r8   z?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>rJ   rG   r5   r   r  )r!   r&   rP   rQ   r-   r#   r#   r$   test_bad_dpdf  s
    
z-TestTransformedDensityRejection.test_bad_dpdfrI   c                 C   s@   t j||d tt |d W d    n1 s20    Y  d S NrJ   r   )rO   r   r   r   r!   rL   rP   rQ   r#   r#   r$   test_inf_nan_domains  s    z4TestTransformedDensityRejection.test_inf_nan_domainsconstruction_points)r   r   r   c                 C   s@   t jtdd tt |d W d    n1 s20    Y  d S )Nz1`construction_points` must be a positive integer.rJ   r  rO   r   rj   r   r   r!   r  r#   r#   r$   #test_bad_construction_points_scalar  s    zCTestTransformedDensityRejection.test_bad_construction_points_scalarc                 C   s  g }t jtdd tt |d W d    n1 s60    Y  g d}t jtdd tt |d W d    n1 sz0    Y  tjtjtjg}t jt	dd tt |d W d    n1 s0    Y  ddg}t jtd	d  tt d
|d W d    n1 s0    Y  d S )NzC`construction_points` must either be a scalar or a non-empty array.rJ   r  )rG   rG   rG   rG   rG   rG   z:33 : starting points not strictly monotonically increasingr  r5   z!50 : starting point out of domain)r4   )rL   r  )
rO   r   rj   r   r   r   r   r   r?   r   r  r#   r#   r$   "test_bad_construction_points_array%  s*    $$$zBTestTransformedDensityRejection.test_bad_construction_points_arrayc      r   r   c                 C   sD   d}t jt|d tt dd W d    n1 s60    Y  d S )Nz`c` must either be -0.5 or 0.rJ   r  )r  r  )r!   r  rQ   r#   r#   r$   
test_bad_cI  s    z*TestTransformedDensityRejection.test_bad_cr   rG     r   r   rC   rD   r   r4   r   r   c                 C   s   t t dd}t V}|td |td |td |td ||}tj|}W d    n1 sp0    Y  t	||ddd	 |j
|j
ksJ d S )
NgH.?)Zmax_squeeze_hat_ratio$invalid value encountered in greater*invalid value encountered in greater_equal!invalid value encountered in less'invalid value encountered in less_equalr   h㈵>r   )r   r   r   r   r   Zppf_hatr   r   r   r   r   )r!   r   rd   r  resexpectedr#   r#   r$   test_ppf_hatS  s    
*z,TestTransformedDensityRejection.test_ppf_hatc                 C   s   G dd d}d}t jt|d t| W d    n1 s>0    Y  G dd d}d}t jt|d t| W d    n1 s0    Y  d S )Nc                   @   s   e Zd ZdS );TestTransformedDensityRejection.test_bad_dist.<locals>.distNr  r#   r#   r#   r$   r-   i  s   r-   z`pdf` required but not found.rJ   c                   @   s   e Zd Zdd ZdS )r#  c                 S   s   d| |   S rk   r#   r6   r#   r#   r$   r7   r  r8   zDTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>Nr*   r+   r,   r%   r#   r#   r#   r$   r-   q  s   z`dpdf` required but not found.)rO   r   rj   r   )r!   r-   rQ   r#   r#   r$   test_bad_distg  s    &z-TestTransformedDensityRejection.test_bad_distN)#r*   r+   r,   r   r   r   distsmv0mv1r   r=   mv2mv3mvsrO   r   r   zipr  r   Zbad_pdfsbad_pdfs_commonr  bad_dpdf_commonr
  inf_nan_domainsr  r  r  r?   r  r   r   r"  r%  r#   r#   r#   r$   r     sB   







$

r   c                	   @   s8  e Zd Zh dZejdedd Zdd e	dfdd e	dfd	d e	d
fdd e
dfdd e	dfdd edfdd edfgZejdedd Zejdg dg dgdd Zejdedd Zej ejfejejfej ej fdejfej dfgZejded d! Zd"d# Zd$d% Zd&d' Zd(S ))TestDiscreteAliasUrn>   nchypergeom_walleniusrandintnchypergeom_fisherdistname, paramsc           
      C   s   || j v rd}t| t|ts(|}n
tt|}|| }| }t	|d |d  sbtd t
|d |d d }||}|d}t|dd}	t|	|| d S )NzYDAU fails on these probably because of large domains and small computation errors in PMF.rG   r   z$DAU only works with a finite domain.r   r   rc   )basic_fail_distsrO   skip
isinstancestrrM   r   r   r   r   r   r   r   r   
r!   distnameparamsrQ   r-   rL   kr   r   rd   r#   r#   r$   r    s    






zTestDiscreteAliasUrn.test_basicc                 C   s   t jS r'   r<   r6   r#   r#   r$   r7     r8   zTestDiscreteAliasUrn.<lambda>rE   c                 C   s   t jS r'   r>   r6   r#   r#   r$   r7     r8   c                 C   s   dS )NrB   r#   r6   r#   r#   r$   r7     r8   rF   c                 C   s   t S r'   r9   r6   r#   r#   r$   r7     r8   r;   c                 C   s   g S r'   r#   r6   r#   r#   r$   r7     r8   z)setting an array element with a sequence.c                 C   s   |  S r'   r#   r6   r#   r#   r$   r7     r8   z50 : probability < 0c                   C   s   dS r@   r#   r#   r#   r#   r$   r7     r8   rA   zpmf, err, msgc                 C   sR   G dd d}||_ tj||d t|dd W d    n1 sD0    Y  d S )Nc                   @   s   e Zd ZdS )z/TestDiscreteAliasUrn.test_bad_pmf.<locals>.distNr  r#   r#   r#   r$   r-     s   r-   rJ   r	  r   )r   rO   r   r   )r!   r   rP   rQ   r-   r#   r#   r$   test_bad_pmf  s    z!TestDiscreteAliasUrn.test_bad_pmfr   )r/   r.   r0   )r   r   g      @      @r   g      @c                 C   s~   t j|t jd}t|dd}|d ||  }t dt|}t j||d}t j|| d |d}||f}t	||| d S )N)ZdtyperV   rc   rp   r   )weightsrH   )
r   ZasarrayZfloat64r   rY   r   r   lenZaverager   )r!   r   rd   ZvariatesZ
m_expectedZ
v_expectedZmv_expectedr#   r#   r$   test_sampling_with_pv  s    
z*TestDiscreteAliasUrn.test_sampling_with_pvpv, msgc                 C   s:   t jt|d t| W d    n1 s,0    Y  d S NrJ   rO   r   rj   r   r!   r   rQ   r#   r#   r$   test_bad_pv  s    z TestDiscreteAliasUrn.test_bad_pvr   rL   c                 C   sF   t jtdd$ ttdd|d W d    n1 s80    Y  d S Nzmust be finiterJ   r5   rC   r   )rO   r   rj   r   r   r   r!   rL   r#   r#   r$   test_inf_domain  s    z$TestDiscreteAliasUrn.test_inf_domainc                 C   sB   t jtdd  tddgdd W d    n1 s40    Y  d S )Nzrelative urn size < 1.rJ   r   r   )Z
urn_factor)rO   r   r   r   r   r#   r#   r$   test_bad_urn_factor  s    z(TestDiscreteAliasUrn.test_bad_urn_factorc                 C   sL   d}G dd d}t jt|d t| W d    n1 s>0    Y  d S )NzG`domain` must be provided when the probability vector is not available.c                   @   s   e Zd Zdd ZdS )z0TestDiscreteAliasUrn.test_bad_args.<locals>.distc                 S   s   |S r'   r#   r    r#   r#   r$   r     s    z4TestDiscreteAliasUrn.test_bad_args.<locals>.dist.pmfN)r*   r+   r,   r   r#   r#   r#   r$   r-     s   r-   rJ   rD  )r!   rQ   r-   r#   r#   r$   test_bad_args  s    z"TestDiscreteAliasUrn.test_bad_argsc                 C   s0   t td}t|dd}t||ddd d S )N)i  r   rc   )g     @g    
Ag{Gzt?)r   )r   Zsoftmaxr   Zonesr   r   )r!   r   rd   r#   r#   r$   test_gh19359  s
    z!TestDiscreteAliasUrn.test_gh19359N)r*   r+   r,   r5  rO   r   r   r   r  rj   	NameErrorr   	TypeErrorZbad_pmfr=  rA  bad_pv_commonrF  r   r=   
inf_domainrI  rJ  rK  rL  r#   r#   r#   r$   r0  y  sR   



$
r0  c                   @   sX  e Zd ZG dd dZG dd dZG dd dZG dd dZe e e e gZd	d
gZd	dgZ	de
j dde
jd   gZde
j dde
jd   gZee	eegZejdeeedd Zejjejdedd Zejdedd Zejdedd Zejdedd Ze
jd d!d"d#g g ge
jge
j e
je
jgd e
jd$d%gd&d'e
jgg d(ggZ ejd)e d*d+ Z!e
jd,d-d"d#g g ge
jge
j e
je
jgd e
jd$d%gd&d'e
jge
j d.d/gggZ"ejd0e"d1d2 Z#d3d4 Z$d!d5d6e
je
jgZ%d7d%e
je
jgZ&ejd8e%d9d: Z'ejd;e&d<d= Z(d>d? Z)d@dA Z*dBS )CTestNumericalInversePolynomialc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z$TestNumericalInversePolynomial.dist0c                 C   s   dd||   S r   r#   r    r#   r#   r$   r%     s    z(TestNumericalInversePolynomial.dist0.pdfc                 C   s   d||d d  d  S r   r#   r    r#   r#   r$   r(     s    z(TestNumericalInversePolynomial.dist0.cdfc                 C   s   dS r   r#   r   r#   r#   r$   r     s    z,TestNumericalInversePolynomial.dist0.supportNr*   r+   r,   r%   r(   r   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )z$TestNumericalInversePolynomial.dist1c                 C   s   t j|d S r   r   r    r#   r#   r$   r%     s    z(TestNumericalInversePolynomial.dist1.pdfc                 C   s   t j|d S r   r   r    r#   r#   r$   r(     s    z(TestNumericalInversePolynomial.dist1.cdfN)r*   r+   r,   r%   r(   r#   r#   r#   r$   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z$TestNumericalInversePolynomial.dist2c                 C   s    dddt dt j |    S )N皙??rG   rH   r   sinr   r    r#   r#   r$   r%     s    z(TestNumericalInversePolynomial.dist2.pdfc                 C   sD   d|d  dddt j d|   t dt j |   dt j   S )NrS  rG   g?r   r   r>  r   r   cosr    r#   r#   r$   r(     s
    
,z(TestNumericalInversePolynomial.dist2.cdfc                 C   s   dS r   r#   r   r#   r#   r$   r     s    z,TestNumericalInversePolynomial.dist2.supportNrR  r#   r#   r#   r$   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z$TestNumericalInversePolynomial.dist3c                 C   s$   ddddt dt j |     S )NrC   rS  rT  rG   rH   rU  r    r#   r#   r$   r%     s    z(TestNumericalInversePolynomial.dist3.pdfc                 C   s>   |d d ddt j  t dt j t dt j |    S )Nr   r   g
ףp=
?rH   r5   rW  r    r#   r#   r$   r(     s    $z(TestNumericalInversePolynomial.dist3.cdfc                 C   s   dS )N)r   r#   r   r#   r#   r$   r      s    z,TestNumericalInversePolynomial.dist3.supportNrR  r#   r#   r#   r$   dist3  s   rZ  rB   r   r   gܿUUUUUU?gQ?rH   g @r   c                 C   s   t |dd}t||| d S r   )r	   r   r!   r-   r   rd   r#   r#   r$   r  ,  s    z)TestNumericalInversePolynomial.test_basicr4  c           	      C   s   g d}g d}dg}||v r.t d|  ||v rFt d|  t|trZtt|n|}|| }t &}|t t	|dd}W d    n1 s0    Y  ||v rd S t
||| | g d S )N)Zanglit
gausshyperkappa4ksonekstwoZlevy_llevy_stablestudentized_rangeZ	trapezoidZtriangvonmises)	Zchi2ZfatiguelifeZgibratZhalfgennormZlognormncfZncx2ZparetotZrel_breitwignerzPINV too slow for zPINV fails for r   rc   )rO   r6  r7  r8  rM   r   r   r   r   r	   r   r   r   )	r!   r:  r;  Zvery_slow_dists
fail_distsZskip_sample_moment_checkr-   r  rd   r#   r#   r$   test_basic_all_scipy_dists2  s$    
*z9TestNumericalInversePolynomial.test_basic_all_scipy_distsr  c                 C   sV   G dd d}||_ tj||d  t|ddgd W d    n1 sH0    Y  d S )Nc                   @   s   e Zd ZdS )z9TestNumericalInversePolynomial.test_bad_pdf.<locals>.distNr  r#   r#   r#   r$   r-   V  s   r-   rJ   r   r   r   )r%   rO   r   r	   r  r#   r#   r$   r  T  s    z+TestNumericalInversePolynomial.test_bad_pdfzlogpdf, err, msgc                 C   sV   G dd d}||_ tj||d  t|ddgd W d    n1 sH0    Y  d S )Nc                   @   s   e Zd ZdS )z<TestNumericalInversePolynomial.test_bad_logpdf.<locals>.distNr  r#   r#   r#   r$   r-   ^  s   r-   rJ   r   r   r   )logpdfrO   r   r	   )r!   rh  rP   rQ   r-   r#   r#   r$   test_bad_logpdf\  s    z.TestNumericalInversePolynomial.test_bad_logpdfrI   c                 C   s@   t j||d tt |d W d    n1 s20    Y  d S r  )rO   r   r	   r   r  r#   r#   r$   r  f  s    z3TestNumericalInversePolynomial.test_inf_nan_domainsr   rG   '  r   r   r   rC   rD   r  r   c                 C   s   t  }t|dd}t V}|td |td |td |td ||}tj|}W d    n1 st0    Y  t||ddd |j	|j	ksJ d S 	N+=u_resolutionr  r  r  r  gdy=r   )
r   r	   r   r   r   r   r   r   r   r   r!   r   r-   rd   r  r   r!  r#   r#   r$   test_ppfz  s    
*z'TestNumericalInversePolynomial.test_ppfr  r5   r4   r   r"   c                 C   s   t  }t|dd}t V}|td |td |td |td ||}tj|}W d    n1 st0    Y  t||ddd |j	|j	ksJ d S rk  )
r   r	   r   r   r   r(   r   r   r   r   )r!   r"   r-   rd   r  r   r!  r#   r#   r$   test_cdf  s    
*z'TestNumericalInversePolynomial.test_cdfc                 C   sj   t  }t|dd}| \}}|dk s*J ||ks6J t|dd}| \}}|dk sZJ ||ksfJ d S Ng|=rm  rl  )r   r	   u_error)r!   r-   rd   	max_errormaer#   r#   r$   test_u_error  s    z+TestNumericalInversePolynomial.test_u_errorg      @   g#B;orderc                 C   sH   t  }d}tjt|d t||d W d    n1 s:0    Y  d S )Nz2`order` must be an integer in the range \[3, 17\].rJ   rx  )r   rO   r   rj   r	   )r!   rx  r-   rQ   r#   r#   r$   test_bad_orders  s    z.TestNumericalInversePolynomial.test_bad_ordersrn  c                 C   sD   d}t jt|d tt |d W d    n1 s60    Y  d S )Nz.`u_resolution` must be between 1e-15 and 1e-5.rJ   rm  )rO   r   rj   r	   r   )r!   rn  rQ   r#   r#   r$   test_bad_u_resolution  s
    z4TestNumericalInversePolynomial.test_bad_u_resolutionc                 C   s   G dd d}| }d}t jt|d t|}W d    n1 sD0    Y  t }t|}d}t jt|d |d W d    n1 s0    Y  G dd d}| }t|}d	}t jt|d |  W d    n1 s0    Y  d S )
Nc                   @   s   e Zd Zdd ZdS )z=TestNumericalInversePolynomial.test_bad_args.<locals>.BadDistc                 S   s   t j|S r'   r   r    r#   r#   r$   r(     s    zATestNumericalInversePolynomial.test_bad_args.<locals>.BadDist.cdfN)r*   r+   r,   r(   r#   r#   r#   r$   BadDist  s   r|  z9Either of the methods `pdf` or `logpdf` must be specifiedrJ   z4`sample_size` must be greater than or equal to 1000.r5   c                   @   s   e Zd Zdd ZdS )zBTestNumericalInversePolynomial.test_bad_args.<locals>.Distributionc                 S   s   t d| | S )Nr   r   r   r    r#   r#   r$   r%     s    zFTestNumericalInversePolynomial.test_bad_args.<locals>.Distribution.pdfNr$  r#   r#   r#   r$   rl     s   rl   z!Exact CDF required but not found.)rO   r   rj   r	   r   rs  )r!   r|  r-   rQ   rd   rl   r#   r#   r$   rK    s     &(z,TestNumericalInversePolynomial.test_bad_argsc                 C   sh   G dd d}| }dd |_ t|}| }dd |_t|}tjdddd	}t|||| d S )
Nc                   @   s   e Zd ZdS )zJTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.MyDistNr  r#   r#   r#   r$   MyDist  s   r~  c                 S   s   t |  |  d S NrH   )mathr   r6   r#   r#   r$   r7     r8   zLTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>c                 S   s   |  |  d S r  r#   r6   r#   r#   r$   r7     r8   r  gwJ?rX   r   )r%   r	   rh  r   r   r   r   )r!   r~  Zdist_pdfr^   Zdist_logpdfr_   qr#   r#   r$   test_logpdf_pdf_consistency  s    

z:TestNumericalInversePolynomial.test_logpdf_pdf_consistencyN)+r*   r+   r,   r   r   r   rZ  r&  r'  r(  r   r   r)  r*  r+  rO   r   r   r,  r  xslowr   rg  r-  r  bad_logpdfs_commonri  r/  r  r   r?   r=   r   rp  r"   rq  rv  Z
bad_ordersZbad_u_resolutionrz  r{  rK  r  r#   r#   r#   r$   rQ    s\   
 

	

"


rQ  c                
   @   s  e Zd ZG dd dZG dd dZe e gZddej  ddd	ej ej   gZd
dddej ej   d gZ	ee	gZ
ejdeee
ejdddgdd Zejdedd Zdd Zejdejjejdedd Zejddd Zdd Zd d!ejd!gZeejd! d e fd"d#gZejd$eejd%ed&d' Z d(d) Z!d*d+ Z"ej#d,d-d.d/g g gej$gej% ej$ej%gd!ej$d0d1gd2d3ej%gg d4ggZ&ejd5e&d6d7 Z'd8d9 Z(d S ):TestNumericalInverseHermitec                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z!TestNumericalInverseHermite.dist0c                 C   s   ddt dt j |   S )Nr   r   r   rU  r    r#   r#   r$   r%     s    z%TestNumericalInverseHermite.dist0.pdfc                 C   s   t jt dt j |  S )Nr   rW  r    r#   r#   r$   r&     s    z&TestNumericalInverseHermite.dist0.dpdfc                 C   s4   ddt j d|   t dt j |  dt j  S )Nr   r   rG   r>  rW  r    r#   r#   r$   r(     s    z%TestNumericalInverseHermite.dist0.cdfc                 C   s   dS r   r#   r   r#   r#   r$   r     s    z)TestNumericalInverseHermite.dist0.supportNr   r#   r#   r#   r$   r     s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z!TestNumericalInverseHermite.dist1c                 C   s\   |dkr&t dt j | d t j S |dk r2dS |dkrXt dt j | d t j S d S )Nr   r   r   rB   rU  r    r#   r#   r$   r%     s    z%TestNumericalInverseHermite.dist1.pdfc                 C   s`   |dkr(t dt j | t j t j S |dk r4dS |dkr\t dt j | t j t j S d S )Nr   r   rB   r   r   rX  r   r    r#   r#   r$   r&     s     z&TestNumericalInverseHermite.dist1.dpdfc                 C   sX   |dkr$ddt dt j |   S |dk r0dS |dkrTddt dt j |   S d S )Nr         ?rG   r   rB   r   r   r  r    r#   r#   r$   r(     s    z%TestNumericalInverseHermite.dist1.cdfc                 C   s   dS )N)r   r   r#   r   r#   r#   r$   r     s    z)TestNumericalInverseHermite.dist1.supportNr   r#   r#   r#   r$   r     s   r   r   rH   r[  rG   r   g      пg      ?g      ?r   rx  r4   r   c                 C   s   t ||dd}t||| d S )Nr   )rx  rW   )r
   r   )r!   r-   r   rx  rd   r#   r#   r$   r  (  s    z&TestNumericalInverseHermite.test_basicrI   c                 C   s@   t j||d tt |d W d    n1 s20    Y  d S r  )rO   r   r
   r   r  r#   r#   r$   r  1  s    z0TestNumericalInverseHermite.test_inf_nan_domainsc           
   	   C   s   h d}h d}||v r"t d ||v r4t d tjd tt|| }t|}tj	d}t
t|||| t|| }t
t|||| }	|dk sJ |	dk sJ d S )	N>   Zskewnormr`  r_  ra  >   rc  betaZgenhyperbolicZwaldrd  Znctr^  ZnorminvgaussZgeninvgaussZinvgaussrb  r]  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   r5   :0yE>r   )rO   r6  r   r   rZ   r[   rM   r   r
   Zrandmaxr   r   r(   )
r!   r:  shapesZ
slow_distsrf  r-   fnir"   Zp_tolZu_tolr#   r#   r$   basic_test_all_scipy_dists6  s    

0 z6TestNumericalInverseHermite.basic_test_all_scipy_distszignore::RuntimeWarning)r:  r  c                 C   s   |  || d S r'   r  )r!   r:  r  r#   r#   r$   rg  O  s    z6TestNumericalInverseHermite.test_basic_all_scipy_distsc                 C   s   |  dd d S )NZ	truncnorm)r   rH   r  r   r#   r#   r$   test_basic_truncnorm_gh17155W  s    z8TestNumericalInverseHermite.test_basic_truncnorm_gh17155c                 C   s   d}t jt|d tt dd W d    n1 s60    Y  d}t jt|d td W d    n1 sp0    Y  d}t jt|d tt dd	 W d    n1 s0    Y  d S )
Nz"`order` must be either 1, 3, or 5.rJ   rH   ry  z`cdf` required but not foundr   z!could not convert string to floatZekkirm  )rO   r   rj   r
   r   )r!   rK   r#   r#   r$   r   [  s    ,&z1TestNumericalInverseHermite.test_input_validationNr   )   )r  )r   r      r  rd   r   c           
      C   sp   t  }t|}t|}|j||d}|d ur:|j|ks:J |d urlt|}|j|d}tj	|}	t
||	 d S )N)r   rW   r   )r   r
   r   rY   r   r   r   r   r   r   r   )
r!   rd   r   r   r-   r  r_   rY   r   ra   r#   r#   r$   test_RVSm  s    z$TestNumericalInverseHermite.test_RVSc                 C   sZ   d}d}t jt|d ttj|  W d    n1 s:0    Y  ttj| dd d S )N)gdsz@g@e?zg98 : one or more intervals very short; possibly due to numerical problems with a pole or very flat tailrJ   r  rm  )rO   r   r   r
   r   r  )r!   r  rK   r#   r#   r$   test_inaccurate_CDF~  s
    ,z/TestNumericalInverseHermite.test_inaccurate_CDFc                 C   s<   t  }t|}t }t|}t|jdd|jdd d S )Nr   rc   )r   r
   r   r   r   rY   )r!   r   Zfni1r   Zfni2r#   r#   r$   test_custom_distribution  s
    z4TestNumericalInverseHermite.test_custom_distributionrB   r   rj  r   r   r   rC   rD   r  r   c                 C   s   t  }t|dd}t V}|td |td |td |td ||}tj|}W d    n1 st0    Y  t||ddd	 |j	|j	ksJ d S )
Nr   rm  r  r  r  r  g&.>gLa㧝=r   )
r   r
   r   r   r   r   r   r   r   r   ro  r#   r#   r$   rp    s    
*z$TestNumericalInverseHermite.test_ppfc                 C   s   t  }t|dd}| \}}|dk s*J ||ks6J t &}|t t|dd}W d    n1 sh0    Y  | \}}|dk sJ ||ksJ d S rr  )r   r
   rs  r   r   r   )r!   r-   rd   rt  ru  r  r#   r#   r$   rv    s    
*z(TestNumericalInverseHermite.test_u_error))r*   r+   r,   r   r   r&  r   r   r'  r(  r+  rO   r   r   r,  r  r/  r  r  filterwarningsr  r   rg  r  r   rZ   r\   Zrngsappendr   r   r   r  r  r  r   r?   r=   r   rp  rv  r#   r#   r#   r$   r    sL   & 




r  c                
   @   s
  e Zd Zh dZdd Zdd Zdd Zej	de
d	d
 Zejddddg g gejgej ejejgdejddgddejgg dggZej	dedd Zej	dedd Zej ejfejejfej ej fdejfej dfgZej	dedd ZdS )TestDiscreteGuideTable>   r1  r2  r3  c                 C   sN   g d}t j }tt t||dd W d    n1 s@0    Y  d S )Nr   g333333?g333333?r3   rW   Zguide_factorr   rZ   r   rO   r   r   r   r!   r   r   r#   r#   r$   $test_guide_factor_gt3_raises_warning  s    
z;TestDiscreteGuideTable.test_guide_factor_gt3_raises_warningc                 C   sN   g d}t j }tt t||dd W d    n1 s@0    Y  d S )Nr  r   r  r  r  r#   r#   r$   %test_guide_factor_zero_raises_warning  s    
z<TestDiscreteGuideTable.test_guide_factor_zero_raises_warningc                 C   sN   g d}t j }tt t||dd W d    n1 s@0    Y  d S )Nr  r   r  r  r  r#   r#   r$   )test_negative_guide_factor_raises_warning  s    
z@TestDiscreteGuideTable.test_negative_guide_factor_raises_warningr4  c           
      C   s   || j v rd}t| t|ts(|}n
tt|}|| }| }t	|d |d  sbtd t
|d |d d }||}|d}t|dd}	t|	|| d S )NzYDGT fails on these probably because of large domains and small computation errors in PMF.rG   r   z$DGT only works with a finite domain.r   r   rc   )r5  rO   r6  r7  r8  rM   r   r   r   r   r   r   r   r   r9  r#   r#   r$   r    s    






z!TestDiscreteGuideTable.test_basicr   rG   rj  r   r   r   rC   rD   r  r   c           	      C   s   d\}}t ||}t|dd}t Z}|td |td |td |td ||}t j|||}W d    n1 s0    Y  t|j|j t|| d S )N)r   r   r   rc   r  r  r  r  )	r   r   r   r   r   r   r   r   r   )	r!   r   npr-   rd   r  r   r!  r#   r#   r$   rp  	  s    
.zTestDiscreteGuideTable.test_ppfrB  c                 C   s:   t jt|d t| W d    n1 s,0    Y  d S rC  )rO   r   rj   r   rE  r#   r#   r$   rF    s    z"TestDiscreteGuideTable.test_bad_pvrL   c                 C   sF   t jtdd$ ttdd|d W d    n1 s80    Y  d S rG  )rO   r   rj   r   r   r   rH  r#   r#   r$   rI  (  s    z&TestDiscreteGuideTable.test_inf_domainN)r*   r+   r,   r5  r  r  r  rO   r   r   r   r  r   r   r?   r=   r   rp  rO  rF  rP  rI  r#   r#   r#   r$   r    s*   	


$r  c                   @   s   e Zd ZG dd dZededgZdejgZdejgZeegZ	e
jdeee	dd Ze
jded	d
 Zdd ZdS )TestSimpleRatioUniformsc                   @   s$   e Zd Zdd Zdd Zdd ZdS )zTestSimpleRatioUniforms.distc                 C   s   || _ || _d S r'   )r   r1   r   r#   r#   r$   ri   3  s    z%TestSimpleRatioUniforms.dist.__init__c                 C   s&   || j 8 }dt|d  }d| | S r   r   r   r#   r#   r$   r%   7  s    
z TestSimpleRatioUniforms.dist.pdfc                 C   s2   || j 8 }|dkrdd|  S ddd|   S d S r   r   r    r#   r#   r$   r(   <  s    
z TestSimpleRatioUniforms.dist.cdfN)r*   r+   r,   ri   r%   r(   r#   r#   r#   r$   r-   2  s   r-   rB   r   r   c                 C   sF   t ||jdd}t||| t ||j||jdd}t||| d S )Nr   )r1   rW   )r1   Zcdf_at_moderW   )r   r1   r   r(   r\  r#   r#   r$   r  J  s    
z"TestSimpleRatioUniforms.test_basicrI   c                 C   s@   t j||d tt |d W d    n1 s20    Y  d S r  )rO   r   r   r   r  r#   r#   r$   r  V  s    z,TestSimpleRatioUniforms.test_inf_nan_domainsc                 C   sB   t jtdd  tt ddd W d    n1 s40    Y  d S )Nz`pdf_area` must be > 0rJ   r   r   )r1   Zpdf_area)rO   r   rj   r   r   r   r#   r#   r$   rK  [  s    z%TestSimpleRatioUniforms.test_bad_argsN)r*   r+   r,   r-   r&  r   r=   r(  r)  r+  rO   r   r   r,  r  r/  r  rK  r#   r#   r#   r$   r  .  s   




r  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestRatioUniformsz# Tests for rvs_ratio_uniforms.
    c                 C   s   t jj}t|tdtd }t|d}t||| |dd}tt |ddd dkd	 td
d dddt	d dd}tt |ddd dkd	 d S )NrH   r   i90  umaxvminvmaxrW   i	  r   rG   r  Tc                 S   s   t |  S r'   r}  r6   r#   r#   r$   r7   o  r8   z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>r   r  Zexpon)
r   r   r%   r   r   r   r   ZkstestrY   r   )r!   fvr   r   r#   r#   r$   test_rv_generatione  s     
z$TestRatioUniforms.test_rv_generationc                 C   s  t jj}t|tdtd }t|d}t||| |dd}t||| |dd}t||| |dd}|d|d|d  }}}	t|| t||	  t|j	d t|	j	d t||| |dd}
t||| |dd}|
jd	d
|jdd
 }}t| | t|j	d	 t||| |dd}t||| |dd}t||| |dd}| |d|d  }}}t|| t|| d S )NrH   r     r  r4   r   )r4   rG   rn   )r4   r4   r4   r     rG   r   )
r   r   r%   r   r   r   rY   r   flattenr   )r!   r  r  r   gen1gen2Zgen3r1r2Zr3Zgen4Zgen5Zr4Zr5Zgen6Zgen7Zgen8Zr6Zr7r8r#   r#   r$   
test_shapes  s,    "
 
zTestRatioUniforms.test_shapec                 C   s   t jj}t|tdtd }t|d}t||| |dd}|d}tjd t||| |d}|d}t	|| d S )NrH   r   r  r  r5   )r  r  r  )
r   r   r%   r   r   r   rY   rZ   r[   r   )r!   r  r  r  r  r  r  r  r#   r#   r$   rb     s    

z#TestRatioUniforms.test_random_statec                 C   s   t jj}ttdd  t|dddd W d    n1 s:0    Y  ttdd  t|dddd W d    n1 sv0    Y  ttdd  t|dddd W d    n1 s0    Y  ttdd  t|dddd W d    n1 s0    Y  d S )	Nzvmin must be smaller than vmaxrJ   rG   r4   )r%   r  r  r  zumax must be positiver   r   )r   r   r%   assert_raisesrj   r   )r!   r  r#   r#   r$   test_exceptions  s    ...z!TestRatioUniforms.test_exceptionsN)r*   r+   r,   __doc__r  r  rb   r  r#   r#   r#   r$   r  a  s
   r  )r   r   )r   r   )Lr{   r   rO   copyr   r   r   r  numpyr   Znumpy.testingr   r   r   Zscipy.stats.samplingr   r   r   r	   r
   r   r   r   r   r  Zscipyr   r   Zscipy.statsr   r   Zscipy.stats._distr_paramsr   r   Zscipy._lib._utilr   r   Zall_methodsimplementationnameversionZfloaterrrN  rM  r-  r.  r  r?   r=   rO  rj   Zbad_sized_domainsZbad_domainsr/  Znan_domainsr   r   rU   rb   re   r   r   r   r   r   r   r   r   r   r   r0  rQ  r  r  r  r  r#   r#   r#   r$   <module>   s   (
	

	
1






[ ?u   Wi3