a
    BCCf
                    @   sH  d Z ddlZ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
mZmZmZmZmZmZmZmZmZmZ ddlZddlmZ ddlZddlZddlmZmZ ddlmZ ddlmZ dd	l m!Z! dd
l"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z* ddl+Zddl,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z< ddl=m>Z> ej?j@dkZAej	dkoe	B dkZCddgZDdddZEdd ZFdd ZGG dd dZHdd d!ZId"d# ZJejKLd$g d%d&d' ZMG d(d) d)ZNG d*d+ d+ZOG d,d- d-ZPG d.d/ d/ZQG d0d1 d1ZRG d2d3 d3ZSG d4d5 d5ZTG d6d7 d7ZUG d8d9 d9ZVG d:d; d;ZWG d<d= d=ZXG d>d? d?ZYG d@dA dAZZG dBdC dCZ[G dDdE dEZ\G dFdG dGZ]G dHdI dIZ^G dJdK dKZ_G dLdM dMZ`G dNdO dOZaG dPdQ dQZbG dRdS dSZcG dTdU dUZdG dVdW dWZeG dXdY dYZfG dZd[ d[ZgG d\d] d]ZhG d^d_ d_ZiG d`da daZjG dbdc dcZkG ddde deZlG dfdg dgZmG dhdi diZnG djdk dkZoG dldm dmZpG dndo doZqG dpdq dqZrG drds dsZsG dtdu duZtG dvdw dwZuG dxdy dyZvG dzd{ d{ZwG d|d} d}ZxG d~d dZyG dd dZzG dd dZ{G dd dZ|G dd dZ}G dd dZ~G dd dZG dd dZddeddej   ddeddej   ddeddej   ddeddej   ddeddej   g	fdeddej  ddeddej   ddeddej   d ddeddej   d ddeddej   d g	fddedej  dddedej   dddedej   dddedej   dddedej   dddedej   dddedej   dgfgZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG ddÄ dÃZG ddń dŃZG ddǄ dǃZG ddɄ dɃZdd˄ ZG dd̈́ d̓ZG ddτ dσZG ddф dуZG ddӄ dӃZG ddՄ dՃZG ddׄ d׃ZG ddل dكZddۄ ZG dd݄ d݃ZG dd߄ d߃ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG d d dZG dd dZG dd dZdd Zdd	 Zd
d ZejKjeAdddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# ZejKLd$g d%d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 ZÐd2d3 ZejKLd4g d5d6d7 ZŐd8d9 ZƐd:d; Zǐd<d= ZȐd>d? Zɐd@dA ZʐdBdC ZejKLdDdEedFdGgfdHedIdJgfdKedLdMgfdNedOdPgfgdQdR Z̐dSdT Z͐dUdV ZΐdWdX ZϐdYdZ ZejKLd[g d\d]d^ ZejKLd_g d`dadb ZejKLdcg dddedf ZӐdgdh ZejKLd[g didjdk ZՐdldm ZG dndo doe(j׃ZG dpdq dqe(j׃ZG drds dse(j׃ZG dtdu due(j׃ZG dvdw dwZG dxdy dyZejKjeAdzdd{d| Zސd}d~ Zߐdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejKLd[g ddd ZejKLdddgdd ZejKLdddg dfddg dfddg dfgdd Zdd Zdd ZejKjejdkdddd ZG dd dZdd ZG dd dZG dd dZG dd dZG dd dZdd ZejKLde5e2 dd Zdd Zdd ZejKLd_dÐdgdŐdƄ ZejKLdcg dǢdȐdɄ Zdʐd˄ Zd̐d̈́ Zdΐdτ Z G dАdф dуZG dҐdӄ dӃZG dԐdՄ dՃZG d֐dׄ d׃ZejKLdg d٢dڐdۄ ZdS (  z!
Test functions for stats module
    N)Path)
assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_allcloseassert_assert_warnsassert_array_lesssuppress_warningsIS_PYPY)raises)	typecodesarray)rec_append_fields)special)check_random_state)IntegrationWarningquad	trapezoidcumulative_trapezoid)
argsreduce)xlogy	polygammaentr)distcontinvdistcont   )distdiscreteinvdistdiscrete)FitDataError
_argus_phi)rootfmindifferential_evolution)productdarwinx86_64tukeylambdapearson3c                 C   s,   |d u r|  d| }t t| ||d d S )Nz does not have attribute msg)r   hasattr)abr+    r/   `/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/stats/tests/test_distributions.py_assert_hasattr4   s    r1   c                   C   s   t tjjd d S )NZf_gen)r1   scipystatsdistributionsr/   r/   r/   r0   test_api_regression:   s    r5   c                  C   s`   t tjjj} dd tD }dd tD }g d}|| | }t tdd |}| |ks\J d S )Nc                 S   s   g | ]}|d  qS r   r/   .0distr/   r/   r0   
<listcomp>A       z0test_distributions_submodule.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r6   r/   r7   r/   r/   r0   r:   B   r;   )rv_discreterv_continuousrv_histogramentropytrapzc                 S   s   t | d S )N<)str
startswithsr/   r/   r0   <lambda>I   r;   z.test_distributions_submodule.<locals>.<lambda>)setr2   r3   r4   __all__r   r   filter)actualZ
continuousZdiscreteotherexpectedr/   r/   r0   test_distributions_submodule?   s    rM   c                	   @   s@  e Zd Zejdg dejdddejddgdd	 Zd
d Z	dd Z
ejdg ddd Zejdg ddd Zdd Zejdg ddd Zdd Zejjejdddgejd g d!ejd"d#d$gejd%d#d$gd&d' Zd(d) Zejd*d+dgd,d- Zd.d/ Zd0d1 Zd2d3 Zd4S )5TestVonMisesk)皙?r   e   xr   r   
   d   c                 C   sh   dd }dd }||dd| ||dd| ||dd| ||dd| ||dd| ||dd| d S )Nc                 S   s8   t j| ||d}t||||dtj |   d S )Nlocscale   )r3   vonmisesr   pdfnppirO   LrE   rR   vmr/   r/   r0   check_vonmises_pdf_periodicR   s    zHTestVonMises.test_vonmises_periodic.<locals>.check_vonmises_pdf_periodicc                 S   s@   t j| ||d}t||d ||dtj |  d  d S )NrU   r   rX   )r3   rY   r   cdfr[   r\   r]   r/   r/   r0   check_vonmises_cdf_periodicV   s    zHTestVonMises.test_vonmises_periodic.<locals>.check_vonmises_cdf_periodicr   r   rS   r/   )selfrO   rR   r`   rb   r/   r/   r0   test_vonmises_periodicO   s    z#TestVonMises.test_vonmises_periodicc                 C   s&   t tjjtj  t tjjtj d S N)r   r3   Zvonmises_liner-   r[   r\   r.   rc   r/   r/   r0   test_vonmises_line_supportc   s    z'TestVonMises.test_vonmises_line_supportc                 C   s   t d}t|dd d S )N   r         ?)r3   rY   r   ra   )rc   r_   r/   r/   r0   test_vonmises_numericalg   s    
z$TestVonMises.test_vonmises_numericalzx, kappa, expected_pdf))rP   {Gz?g|65?)rP         9@g?U?)rP   rh   g"?)       @rk   gDfI?)rm   rl   g1<)rm   rh           c                 C   s    t j||}t||dd d S NV瞯<rtol)r3   rY   rZ   r   )rc   rR   kappaexpected_pdfrZ   r/   r/   r0   test_vonmises_pdfu   s    zTestVonMises.test_vonmises_pdfzkappa, expected_entropy))r   gA	?)   g,eޞ?)rT   gBb9d22)  g
G )  gc                 C   s   t j|}t||dd d S NvIh%<=rq   )r3   rY   r?   r   )rc   rs   Zexpected_entropyr?   r/   r/   r0   test_vonmises_entropy   s    z"TestVonMises.test_vonmises_entropyc                 C   s   d}t j|}t j|}t j|}tjddddj|d}tjddt j ddj|d}tjdddt j t| d dj|d}t||dd t||dd d S )	Ni@}r   r   rU   random_staterX   rp   atol)	r[   randomdefault_rngr3   rY   rvsr\   absr   )rc   seedZrng1Zrng2Zrng3Zrvs1rvs2Zrvs3r/   r/   r0   test_vonmises_rvs_gh4598   s    z%TestVonMises.test_vonmises_rvs_gh4598zx, kappa, expected_logpdf))rP   rk   gEJ?)rP   rl   goι?)rP   rh   g0,)rm   rk   gdty)rm   rl   gʹw[A)rm   rh   gc                 C   s    t j||}t||dd d S ro   )r3   rY   logpdfr   )rc   rR   rs   Zexpected_logpdfr   r/   r/   r0   test_vonmises_logpdf   s    z!TestVonMises.test_vonmises_logpdfc                 C   s  t jd}|dd \}}}tj||ddd }t|d t |jt j	sVJ ||dt j
  f}tj||djd	d g|R  }t|d t |jt j	sJ ||dt j
  f}tj||djd
d g|R ddi}tt ||dt j
   t |jt jsJ dS )a   
        Test that the vonmises expectation values are
        computed correctly.  This test checks that the
        numeric integration estimates the correct normalization
        (1) and mean angle (loc).  These expectations are
        independent of the chosen 2pi interval.
           kD +xNn    rS   rV   rs   c                 S   s   dS Nr   r/   rR   r/   r/   r0   rF      r;   z3TestVonMises.test_vonmises_expect.<locals>.<lambda>r   rX   c                 S   s   dS r   r/   r   r/   r/   r0   rF      r;   c                 S   s   t d|  S )Ny              ?)r[   expr   r/   r/   r0   rF      r;   Zcomplex_funcN)r[   r   r   r3   rY   expectr   
issubdtypedtypeZfloatingr\   ZangleZcomplexfloating)rc   rngrV   rs   lbresboundsr/   r/   r0   test_vonmises_expect   s"    
 
z!TestVonMises.test_vonmises_expectrvs_locrX   	rvs_shape)r   rT       חAfix_locTF	fix_shapec                 C   sp   |r|rt d tjd}tjj|d||d}ddi}|rF||d< |rR||d< ttj|tjj	fi | d S )	NzNothing to fit.r   rw   )sizerV   r}   fscaler   flocf0)
pytestskipr[   r   r   r3   rY   r   _assert_less_or_close_loglikennlf)rc   r   r   r   r   r   datakwdsr/   r/   r0   test_fit_MLE_comp_optimizer   s     
z(TestVonMises.test_fit_MLE_comp_optimizerc                 C   sb   g d}t |}dt j }tjj||d\}}}|t tjksFJ t	tj|tjj
d|d d S )N)g!*Kg4,%OԿgZ۵?g
ge_@g-8gPghn?g<t?g.6@gjb?g0]o@g݅ZgSsgx7W?g%H?g65Jg:m2?g@g;,gM^lsF      ࿩r   r   )r   r   )r[   asarrayr\   r3   rY   fitfinfofloatZtinyr   r   )rc   r   rV   	kappa_fitloc_fit	scale_fitr/   r/   r0   test_vonmises_fit_bad_floc   s    


z'TestVonMises.test_vonmises_fit_bad_flocsignc                 C   s   t jd}tj|d t j ddjd|d}|dt j  }tj|\}}}tj|\}}	}
t||	 t|| |dksJ t j |  k rt jk sn J d S )	Nr   ri   rS   r   順 r|      r   )	r[   r   r   r3   rY   r\   r   r   r   )rc   r   r   r   Zshifted_datar   r   r   Zkappa_fit_shiftedZloc_fit_shifted_r/   r/   r0    test_vonmises_fit_unwrapped_data   s    

z-TestVonMises.test_vonmises_fit_unwrapped_datac                 C   s   t d}t|dddtj  dd t|tjd ddd t|tj d ddd t|dtjd dd t|	 ddd	 t|
 ddd	 tt|jd
ddtjksJ d S )Nr   r   rX   rp   rq         ??皙?r~   rS     r   r}   )r3   rY   r   rZ   r[   r\   ra   sfppfmeanr   allr   r   )rc   r9   r/   r/   r0   test_vonmises_kappa_0_gh18166   s    
z*TestVonMises.test_vonmises_kappa_0_gh18166c                 C   s4   t jdg\}}}|dkr,|dkr,|dks0J d S )Nr   g 7yACr   )r3   rY   r   )rc   rs   rV   rW   r/   r/   r0   test_vonmises_fit_equal_data  s    z)TestVonMises.test_vonmises_fit_equal_datac                 C   s8   t jjjddgdd t jjjtjd d gdd d S )Nr   gl=c>r   rX   gd?)r2   r3   rY   r   r[   r\   rf   r/   r/   r0   test_vonmises_fit_bounds	  s    z%TestVonMises.test_vonmises_fit_boundsN)__name__
__module____qualname__r   markparametrizer[   r\   rd   rg   rj   ru   r{   r   r   r   xslowr   r   r   r   r   r   r/   r/   r/   r0   rN   N   s>   



rN   Fc           	      K   s   |du r| j }| j|fi |}tt| | j|fi |}|sRt||ksRJ |||}|||}||kstj||ddsJ d|v r|d |d ksJ d|v r|d |d ksJ dS )a^  
    This utility function checks that the negative log-likelihood function
    (or `func`) of the result computed using dist.fit() is less than or equal
    to the result computed using the generic fit method.  Because of
    normal numerical imprecision, the "equality" check is made using
    `np.allclose` with a relative tolerance of 1e-15.
    Nrp   rq   r   r   r   )r   r   supertyper[   anyallclose)	r9   r   funcmaybe_identicalr   Zmle_analyticalZnumerical_optZll_mle_analyticalZll_numerical_optr/   r/   r0   r     s    	

r   c                 C   s  ddg}| j r2t| j d}|g dd | 7 }tt|tt|}g d}tjt	dd" | j
|fi | W d    n1 s0    Y  tjtdd | 
tjg W d    n1 s0    Y  tjtdd | 
tjg W d    n1 s0    Y  tjtd	d | j
|d
d W d    n1 s@0    Y  tjtdd0 | j
|gdgt|d  R   W d    n1 s0    Y  d S )Nr   r   ,)r   f1f2r   rX   r   3All parameters fixed. There is nothing to optimize.matchz#The data contains non-finite valueszUnknown keyword arguments:rX   )Zextra_keywordzToo many positional arguments.r   )shapeslensplitdictzipr[   aranger   r   RuntimeErrorr   
ValueErrornaninf	TypeError)r9   paramZnshapesZ	all_fixedr   r/   r/   r0   assert_fit_warnings9  s,    0,..r   r9   )alpha	betaprimefatiguelifeinvgammainvgauss
invweibull	johnsonsblevylevy_llognormgibratpowerlognormrayleighZwaldc                 C   s   t t}||  }tt| } t| j| jg|R  d t| j| jg|R  t	j
  t| j| jg|R  d t| j| jg|R  t	j
  dS )zgh-6235r   N)r   r   getattrr3   r   rZ   r-   r   r   r[   r   r.   )r9   dctargsr/   r/   r0   test_supportP  s    
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRandIntc                 C   s   t jd d S Nr   r[   r   r   rf   r/   r/   r0   setup_methodc  s    zTestRandInt.setup_methodc                 C   s   t jjdddd}tt|dk t|dk@  tt|dk t jjdddd}tt|dk t|jj	t
d v  t jdd}t|dk|dk @  tt|tjtt|d	 t ddd
}t|jj	t
d v  d S )Nrv      rT   r   rX   2   
AllInteger   .   r*   r   )r3   randintr   r   numpyr   r   shaper   charr   
isinstanceZ
ScalarTypereprr   rc   valsvalr/   r/   r0   test_rvsf  s     zTestRandInt.test_rvsc                 C   sF   t jdd }t |dk|dk @ dd}tj|dd}t|| d S )Nr   $   rv   r   {Gz?)r  r_wherer3   r   pmfr   )rc   rO   outr  r/   r/   r0   test_pdfs  s    zTestRandInt.test_pdfc                 C   sd   t ddd}t|}t|dk|dkgd|d d d	 gd}tj|dd}t||d
d d S )Nr   r
  rT   r   rv         ?      @r   rl      decimal)	r[   linspacer  floorselectr3   r   ra   r   )rc   rR   rO   r  r  r/   r/   r0   test_cdfy  s
    
*zTestRandInt.test_cdfN)r   r   r   r   r	  r  r  r/   r/   r/   r0   r   b  s   r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )	TestBinomc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestBinom.setup_methodc                 C   s   t jjdddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jdd}tt
|t t ddd}tt
|tj t|jjt	d v  d S NrS   r   r   r   r   r   r   )r3   binomr   r   r  r   r  r   r  r   r  intndarrayr  r/   r/   r0   r	    s     zTestBinom.test_rvsc                 C   sD   t jddd}t jddd}t|dddd t|dddd d S )NrT   r   r   r  rp   rr   r   r3   r  r  r   )rc   vals1vals2r/   r/   r0   test_pmf  s    zTestBinom.test_pmfc                 C   s|   t dd}tg d}tt|| }| }t|| t dd}| }t|d t dd}| }t|d d S )NrX   ri   )      ?ri   r$  rn   r  )	r3   r  r[   r   sumr   r?   r   r   )rc   r.   
expected_p
expected_hhr/   r/   r0   test_entropy  s    

zTestBinom.test_entropyc                 C   sh   t  L t dt ttjddd d ttjddd d W d    n1 sZ0    Y  d S )NerrorrX   r   np)	warningscatch_warningssimplefilterRuntimeWarningr   r3   r  r   stdrf   r/   r/   r0   test_warns_p0  s    
zTestBinom.test_warns_p0c                 C   s"   d}t jjd|dd|ksJ d S )Nr   333333?r  )qr,  r-  )r3   r  r   rc   r,  r/   r/   r0   test_ppf_p1  s    zTestBinom.test_ppf_p1c                 C   sH   d}d}t d}tjj|||d}tj||| }t||dd d S )NglyCgq]\	T3<r   r+  缉ؗҜ<r~   )r[   r   r3   r  r  poissonr   )rc   r,  r-  rR   r   refr/   r/   r0   test_pmf_poisson  s    
zTestBinom.test_pmf_poissonc                 C   s>   d}d}d}t j|||}t j|||}t||dd d S )NgJ-DgO
;r   r8  r~   )r3   r  r  ra   r   )rc   r,  r-  rr   r:  r/   r/   r0   test_pmf_cdf  s    zTestBinom.test_pmf_cdfc                 C   s"   t jddd}t|ddd d S )Nr   rx   +?r   r8  r~   r   )rc   r   r/   r/   r0   test_pmf_gh15101  s    zTestBinom.test_pmf_gh15101N)r   r   r   r   r	  r#  r)  r3  r7  r;  r=  r?  r/   r/   r/   r0   r    s   		r  c                   @   s   e Zd Zdd ZdS )TestArcsinec                 C   s&   t jddg}t|tjtjg d S Nr   r   )r3   ZarcsinerZ   r   r[   r   rc   r-  r/   r/   r0   test_endpoints  s    zTestArcsine.test_endpointsN)r   r   r   rC  r/   r/   r/   r0   r@    s   r@  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBernoullic                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestBernoulli.setup_methodc                 C   s   t jjddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r   r   r   r   r   r   )r3   	bernoullir   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	    s     zTestBernoulli.test_rvsc                 C   st   t d}dtd dtd  }| }t|| t d}| }t|d t d}| }t|d d S )Nr$        пr   rn   r  )r3   rE  r[   logr?   r   r   )rc   r.   r'  r(  r/   r/   r0   r)    s    




zTestBernoulli.test_entropyN)r   r   r   r   r	  r)  r/   r/   r/   r0   rD    s   rD  c                   @   s   e Zd Zdd ZdS )TestBradfordc                 C   s:   d}t dd}tj||}tj||}t|| d S )NrP   )r[   logspacer3   Zbradfordra   r   r   )rc   crR   r5  xxr/   r/   r0   test_cdf_ppf  s
    zTestBradford.test_cdf_ppfN)r   r   r   rN  r/   r/   r/   r0   rH    s   rH  c                   @   s\   e Zd ZdZdZdd Zdd Zej	ddefd	gd
d Z
ej	dg ddd ZdS )TestChignT9;g2 >h?@c                 C   s"   t jdd}t|| jdd d S )NrS   r   rp   rq   )r3   chir   r   CHI_SF_10_4rc   rE   r/   r/   r0   test_sf  s    zTestChi.test_sfc                 C   s"   t j| jd}t|ddd d S )Nr   rS   rp   rq   )r3   rP  isfrQ  r   rc   rR   r/   r/   r0   test_isf
  s    zTestChi.test_isfdf, ref     @@)g  ļBgcAc                 C   s   t tj||dd d S N-q=rq   )r   r3   rP  r   rc   dfr:  r/   r/   r0   	test_mean  s    zTestChi.test_mean))-C6?gQ(݂)r   ńjɮ9?)rX  gWr4'?)    _Bgr$h(?)}Ô%ITgs$h(?c                 C   s   t t| |dd d S ro   )r   r3   rP  r?   r[  r/   r/   r0   r)  %  s    zTestChi.test_entropyN)r   r   r   rQ  ZCHI_MEAN_1000rS  rV  r   r   r   r]  r)  r/   r/   r/   r0   rO    s   

rO  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestNBinomc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   0  s    zTestNBinom.setup_methodc                 C   s   t jjdddd}tt|dk tt|dk t|jjt	d v  t jdd}tt
|t t ddd}tt
|tj t|jjt	d v  d S r  )r3   nbinomr   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	  3  s    zTestNBinom.test_rvsc                 C   sH   t ttjdddtjddd tjjddd}t|d d S )Ni  i  gp=
ף?r   r   )	r   r[   r   r3   rc  logpmfr  r2   r   )rc   r  r/   r/   r0   r#  >  s
    zTestNBinom.test_pmfc                 C   s@   t jjg dddd}tt jjg dddd}t|| d S )N)r   rv   r   rv   333333@?r+  )r3   rc  logcdfr[   rG  ra   r   )rc   r  r:  r/   r/   r0   test_logcdf_gh16159F  s    zTestNBinom.test_logcdf_gh16159N)r   r   r   r   r	  r#  rh  r/   r/   r/   r0   rb  /  s   rb  c                   @   st   e Zd Zdd Zejjdd Zejjdd Zejjdd Z	ejjd	d
 Z
dd Zdd Zdd Zdd ZdS )TestGenInvGaussc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   N  s    zTestGenInvGauss.setup_methodc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )Nffffff@      ?  r   r   皙?Tr3   geninvgausskstestr   ra   r   rc   gigr   r-  r/   r/   r0   test_rvs_with_mode_shiftQ  s    z(TestGenInvGauss.test_rvs_with_mode_shiftc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )Nr   r   rl  r   r   rm  Trn  rq  r/   r/   r0   test_rvs_without_mode_shiftX  s    z+TestGenInvGauss.test_rvs_without_mode_shiftc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )NrP   皙?rl  r   r   rm  Trn  rq  r/   r/   r0   test_rvs_new_method_  s    z#TestGenInvGauss.test_rvs_new_methodc                 C   s<   dd }t |ddd t |ddd t |ddd d S )Nc                 S   s0   t | |}|jddd}t ||jd dkS )Nrl  r   r   r   rm  )r3   ro  r   rp  ra   )r-  r.   rr  r   r/   r/   r0   my_ks_checkh  s    z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   ru  Tr   rk  )r   )rc   rw  r/   r/   r0   test_rvs_p_zerof  s    zTestGenInvGauss.test_rvs_p_zeroc                 C   s6   t tddjddddtddjddd  d S )N      rX   rS   r   r   r   rk  )r   r3   ro  r   rf   r/   r/   r0   test_rvs_negative_pq  s    z#TestGenInvGauss.test_rvs_negative_pc                 C   s   t jjddddd}tt j|ddgdd dkd	 d
tddd }}t jj|dd| |d}t|t 	|| t jj
|dd| |d}t|t 	|
| d S )Nrl  r   r   r   )r   r-  r.   r}   r   r   333333?TrT   rk   rS   )r-  r.   rW   )r3   ro  r   r   rp  r[   r  rZ   r   r   ra   )rc   ZigmurR   Zpdf_igZcdf_igr/   r/   r0   test_invgaussw  s     zTestGenInvGauss.test_invgaussc                 C   s6   t g d}t ddd}t|tj|dd d S )N)
g;g8y8?g\}Z?ghܲ<?g&Khdd?g7!L?g	Cf?g_诱?g>0|?gRq?rk   rv   rS   ri   r   )r[   r   r  r   r3   ro  rZ   )rc   vals_RrR   r/   r/   r0   
test_pdf_R  s    zTestGenInvGauss.test_pdf_Rc                 C   s0   t tjdddd t tjdddd d S )Nr   ri   g    >Ar   rX   )r   r3   ro  rZ   rf   r/   r/   r0   test_pdf_zero  s    zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   r   r   slowrs  rt  rv  rx  rz  r~  r  r  r/   r/   r/   r0   ri  M  s   




ri  c                   @   s   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	ejdg ddd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestGenHyperbolicc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestGenHyperbolic.setup_methodc           
      C   sl   t g d}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd	 d S )
N)
gF^T=g{X'=gNunƢsy>g7!t?gɫzI?g̸?g?gq6.?gmPZz?g:PgN?rX   rX   r   ri   rk  rU   rS   r   rz   r   rr   )r[   r   r3   genhyperbolicr  r   rZ   
rc   r  lmbdar   betar}  deltar   ghrR   r/   r/   r0   
test_pdf_r  s    
zTestGenHyperbolic.test_pdf_rc           
      C   sl   t g d}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd	 d S )
N)
g=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?r  r  rU   r  rS   r   ư>r  )r[   r   r3   r  r  r   ra   r  r/   r/   r0   
test_cdf_r  s    
zTestGenHyperbolic.test_cdf_rzx, p, a, b, loc, scale, ref)
)rX   r   rk  ri   rk  g8ɹvF(;)r  rS   rk  r$  r   rv   g[Ϡ?)r  rS   rk  g      ?r   r   g ✝`D;)r        ?rk  ):?r   r   gdL;)r   r  rk  r  r   r   gzK^7?)rv         rk  r  r   r   gj?)rv   r  rw     r   r   ga=vG:)   r  rw   r  r   r   g?)(   r  rw   r  r   r   g1bV?)<   r  rw   r  r   r   g?c           	      C   s*   t jj||||||d}t||dd d S NrU   dy=rq   )r3   r  ra   r   )	rc   rR   r-  r-   r.   rV   rW   r:  ra   r/   r/   r0   test_cdf_mpmath  s    z!TestGenHyperbolic.test_cdf_mpmath))r   r  r  r   r   r   gC!,?)r   r         @      @r   r   g,Ћf?)rI  r   r  r  r   r   r  )   rX   r   rk  ri   rk  gm"چ>),  rS   rk  r$  r   rv   g:;)r  r  rw   r  r   r   gw=)K   r  rw   r  r   r   g3Z0&K<c           	      C   s*   t jj||||||d}t||dd d S r  )r3   r  r   r   )	rc   rR   r-  r-   r.   rV   rW   r:  r   r/   r/   r0   test_sf_mpmath  s    z TestGenHyperbolic.test_sf_mpmathc                    s\   g d}d\}}}d\|| | f  fddt ddD }t||dd	d
 d S )N)g@쐧@g@쐧 @g܊B@gvGăi@r  r  c                    s$   g | ]}t j d |qS )rU   )r3   r  moment)r8   ir   r  r}  r/   r0   r:     s   z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   rv   r   rz   r  )ranger   )rc   r  r  r   r  Zvals_usr/   r  r0   test_moments_r  s    	
z TestGenHyperbolic.test_moments_rc           
      C   sd   d\}}}d\}}||| || f}t j|||d}t |jddd|j\}}	t|	dkd d S )	Nr  r  rU   rl  r   r   rm  T)r3   r  rp  r   ra   r   )
rc   r  r   r  r}  r  r   r  r   r-  r/   r/   r0   r	    s    
zTestGenHyperbolic.test_rvsc           	      C   s   t ddd}t |dt t jj d }}dt | }}| d ||f}tj|||d}t |	d|	dd	d d t j
f }t||tj||dd
d d S )Nr   r   rS   rX   r   rU   rk   Gz?r   r  r  )r[   r  float_powerr   float32epssqrtr3   r  r   newaxisr   rZ   t)	rc   r\  r   r  r}  r  r   r  rR   r/   r/   r0   
test_pdf_t  s     (zTestGenHyperbolic.test_pdf_tc           	      C   s   dt t jjd  }}}d\}}|||f}tj|||d}t |d|ddd d t jf }t	|
|tj
|ddd	 d S )
Nr   r   )r   r   rU   rk   r  r   r  r  )r[   r   r  r  r3   r  r  r   r  r   rZ   cauchy)	rc   r  r   r  r}  r  r   r  rR   r/   r/   r0   test_pdf_cauchy"  s    
(z!TestGenHyperbolic.test_pdf_cauchyc           	      C   s   t ddd}t t jj}d\}}}||| || f}tj|||d}t dddd d t jf }t|	|tj
j	||ddd	d
d d S )Nr  rS   )r   r   r   rU   rI  r  r   r   r   dy=r  )r[   r  r   r  r  r3   r  r  r   rZ   laplace)	rc   rV   r  r  r   r  r   r  rR   r/   r/   r0   test_pdf_laplace3  s    
z"TestGenHyperbolic.test_pdf_laplacec           	   	   C   s   t dddt dddt dtd t dddt dddf\}}}}d	}||| || f}tj|||d
}t |d|ddd d t jf }t|	|tj
j	|||||dddd d S )Nr   r  rS   r      r   rT   r   rU   rk   r  r   )r-   r.   rV   rW   rz   r  )r[   r  r  r  r3   r  r   r  r   rZ   norminvgauss)	rc   r   r  r  r}  r  r   r  rR   r/   r/   r0   test_pdf_norminvgaussH  s    (
z'TestGenHyperbolic.test_pdf_norminvgaussN)r   r   r   r   r  r  r   r   r   r  r  r  r	  r  r  r  r  r/   r/   r/   r0   r    s&   


r  c                   @   s@   e Zd Zejdddgdd Zejdddgd	d
 ZdS )TestHypSecantzx, reference)r   gA0=)r   g!b;c                 C   s   t j|}t||dd d S N+<rq   )r3   	hypsecantr   r   )rc   rR   	referencer   r/   r/   r0   rS  d  s    zTestHypSecant.test_sfzp, reference)r  g9bT*@)rZ  gTW-;@c                 C   s   t j|}t||dd d S r  )r3   r  rT  r   )rc   r-  r  rR   r/   r/   r0   rV  n  s    zTestHypSecant.test_isfNr   r   r   r   r   r   rS  rV  r/   r/   r/   r0   r  _  s   
r  c                   @   s^   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	dd Z
dd Zdd Zdd ZdS )TestNormInvGaussc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   w  s    zTestNormInvGauss.setup_methodc                 C   s@   t g d}t g d}tjj|ddd}t||dd d S )N)gp~٧>g @X>g}e?g{)߳?gwH?ir      r   r   ri   r-   r.   &.>r~   )r[   r   r3   r  ra   r   )rc   Zr_cdfx_testvals_cdfr/   r/   r0   
test_cdf_Rz  s    zTestNormInvGauss.test_cdf_Rc                 C   s@   t g d}t g d}tjj|ddd}t||dd d S )N)gp϶>g\H55$?geСt&?go NiH?g]u>r  r   ri   r  r  r~   )r[   r   r3   r  rZ   r   )rc   Zr_pdfr  Zvals_pdfr/   r/   r0   r    s    zTestNormInvGauss.test_pdf_Rzx, a, b, sf, rtol))r   r   r   !7?rz   )r  r   r   ?=r^  )r   rv   ry  gy5`?rZ  )rS   rv   ry  gMLC9r  c                 C   s@   t j|||}t|||d t j|||}t|||d d S Nrq   r3   r  r   r   rT  )rc   rR   r-   r.   r   rr   rE   r  r/   r/   r0   test_sf_isf_mpmath  s    z#TestNormInvGauss.test_sf_isf_mpmathc                 C   s^   ddg}ddg}d}ddg}t j|||}t||ddd	 t j|||}t||d
d d S )Nr   r  r   r   r  r  rz   r8  r  r  rq   r  )rc   rR   r-   r.   r   rE   r  r/   r/   r0   test_sf_isf_mpmath_vectorized  s    z.TestNormInvGauss.test_sf_isf_mpmath_vectorizedc                 C   s<   t dd}tddd}||}||}t|| d S )Nr   r   r  rX   )r3   r  r[   r   r   rT  r   )rc   dstrR   r   rT  r/   r/   r0   test_gh8718  s
    

zTestNormInvGauss.test_gh8718c                 C   s   d\}}t |d |d  }|| |d |d  d| |t |  ddd|d  |d    | f}t|tjj||dd d S )	Nr   ri   rX   r         @r   r   mvskmoments)r[   r  r   r3   r  )rc   r-   r.   gammaZv_statsr/   r/   r0   
test_stats  s    (zTestNormInvGauss.test_statsc                 C   s@   d\}}t g d}tj|||}t|tj||| d S )Nr  MbP?ri   r>  )r[   r   r3   r  r   r   ra   )rc   r-   r.   r  r  r/   r/   r0   test_ppf  s    zTestNormInvGauss.test_ppfN)r   r   r   r   r  r  r   r   r   r  r  r  r  r  r/   r/   r/   r0   r  v  s   
r  c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestGeomc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestGeom.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r   r   r   r   r   )r3   geomr   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	    s    zTestGeom.test_rvsc                 C   sT   t jd}tjjt dd|d}|jt jks4J t 	|t 
t jjksPJ d S )Nl   A: irv   r   )r[   r   r   r3   r  r   r   r   Zint64r   ZiinfoZint32max)rc   r   r   r/   r/   r0   test_rvs_9313  s    zTestGeom.test_rvs_9313c                 C   s$   t jg dd}t|g d d S )Nr   ri   )ri   r$  r  )r3   r  r  r   rc   r  r/   r/   r0   r#    s    zTestGeom.test_pmfc                 C   sV   t tjg dd}tjg dd}t||ddd tjdd}t|d d S )Nr   ri   rp   r   r  r   rn   )r[   rG  r3   r  r  rd  r   r   )rc   r!  r"  r  r/   r/   r0   test_logpmf  s
    zTestGeom.test_logpmfc                 C   sL   t jg dd}t jg dd}tg d}t|| t|d|  d S )Nr   ri   ri   r         ?r   )r3   r  ra   r   r   r   rc   r  vals_sfrL   r/   r/   r0   test_cdf_sf  s
    
zTestGeom.test_cdf_sfc                 C   sV   t jg dd}t jg dd}tg d}t|t| t|t|  d S )Nr   ri   r  )	r3   r  rg  logsfr   r   r[   rG  log1pr  r/   r/   r0   test_logcdf_logsf  s
    zTestGeom.test_logcdf_logsfc                 C   s,   t jg dd}tg d}t|| d S )Nr  ri   )r  rm   r  )r3   r  r   r   r   rc   r  rL   r/   r/   r0   r    s    zTestGeom.test_ppfc                 C   s   t tjddddd d S )N#B;r  +=r~   )r   r3   r  r   rf   r/   r/   r0   test_ppf_underflow  s    zTestGeom.test_ppf_underflowc                 C   s    t d }t|ddd d S )Ng<,Ԛ?g۩@rp   rq   )r3   r  r?   r   )rc   r(  r/   r/   r0   test_entropy_gh18226  s    zTestGeom.test_entropy_gh18226N)r   r   r   r   r	  r  r#  r  r  r  r  r  r  r/   r/   r/   r0   r    s   	
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
TestPlanckc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestPlanck.setup_methodc                 C   s,   t jg dd}tg d}t|| d S )Nr   r  )g|dy?g8'\>ggrU!>)r3   planckr   r   r   r  r/   r/   r0   rS    s    zTestPlanck.test_sfc                 C   s,   t jg dd}tg d}t|| d S )N)rX       @@     p@rX  )g    P.g    h>g    TF)r3   r  r  r   r   r  r/   r/   r0   
test_logsf  s    zTestPlanck.test_logsfN)r   r   r   r   rS  r  r/   r/   r/   r0   r     s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestGennormc                 C   s0   g d}t j|d}t j|}t|| d S Nr   r   )r3   gennormrZ   r  r   rc   pointspdf1pdf2r/   r/   r0   test_laplace  s    zTestGennorm.test_laplacec                 C   s4   g d}t j|d}t jj|dd}t|| d S Nr   rX   g;f?rW   )r3   r  rZ   normr   r  r/   r/   r0   	test_norm  s    zTestGennorm.test_normc                 C   s   t jd td}|jdd}t||jjdks:J td}|jdd}tj	jdd}t
||jdkstJ td}|jdd}tjjddd	}t
||jdksJ d S )
Nr   ri   rw   r   rP   r   rX   g;f?rW   r   )r[   r   r   r3   r  r   rp  ra   Zpvaluer  Zks_2sampr  )rc   r9   r   Zrvs_laplaceZrvs_normr/   r/   r0   r	     s    


zTestGennorm.test_rvsc                 C   s   t jd tddgddgg}|jg dd}t|d d ddf tdjd d	ks`J t|d d ddf tdjd d	ksJ t|d d ddf tdjd d	ksJ t|d d ddf tdjd d	ksJ d S )
Nr   ri   r  rm   r  )rw   rX   rX   r   r   rP   )r[   r   r   r3   r  r   rp  ra   )rc   r9   r   r/   r/   r0   test_rvs_broadcasting1  s    ...z!TestGennorm.test_rvs_broadcastingN)r   r   r   r  r  r	  r  r/   r/   r/   r0   r    s   r  c                   @   s&   e Zd Zejdddgdd ZdS )
TestGibratx, sfx)rk  gD.?)  gJ]b<c                 C   s0   t tj||dd t tj||dd d S N+=rq   )r   r3   r   r   rT  rc   rR   sfxr/   r/   r0   test_sf_isfI  s    zTestGibrat.test_sf_isfN)r   r   r   r   r   r   r  r/   r/   r/   r0   r  ;  s   
r  c                   @   sH   e Zd Zdd Zejdg ddd Zejdg dd	d
 ZdS )TestGompertzc                 C   s&   t jt jddd}t|d d S N0.++r   )r3   gompertzr   ra   r   rB  r/   r/   r0   test_gompertz_accuracyR  s    z#TestGompertz.test_gompertz_accuracyz	x, c, sfx))r   r  g|t?)r   r  g(fMr;)rm  rv   g[?)g      @rv   gg[<c                 C   s4   t tj|||dd t tj|||dd d S Nr  rq   )r   r3   r
  r   rT  )rc   rR   rL  r  r/   r/   r0   r  c  s    zTestGompertz.test_sf_isfc, ref))r^  geUT8?)r   gtqq?)rw   gs{)r`  gN*6c                 C   s   t tj||dd d S r  )r   r3   r
  r?   rc   rL  r:  r/   r/   r0   r)  r  s    zTestGompertz.test_entropyN)	r   r   r   r  r   r   r   r  r)  r/   r/   r/   r0   r  P  s
   
r  c                   @   s&   e Zd Zejdddgdd ZdS )TestFoldNorm	x, c, ref)r^  :0yE>g:0N<?)r^  r^  g:?c                 C   s   t tj|||dd d S ro   )r   r3   foldnormra   rc   rR   rL  r:  r/   r/   r0   r    s    zTestFoldNorm.test_cdfN)r   r   r   r   r   r   r  r/   r/   r/   r0   r  z  s   
r  c                   @   s   e Zd Zejdddgdd Zejdg ddd	 Zejd
ddgejdg dejdddgejdddgdd Zdd Z	dS )TestHalfNormr   )r   |N?)rS   Oul2;c                 C   s0   t tj||dd t tj||dd d S r  )r   r3   halfnormr   rT  r  r/   r/   r0   r    s    zTestHalfNorm.test_sf_isfx, ref))Ww'&l7g;G<^͛7)C]r2<gE~o-<)r  g?c                 C   s   t tj||dd d S ro   )r   r3   r  ra   rc   rR   r:  r/   r/   r0   r    s    zTestHalfNorm.test_cdfr   h㈵>r`  	rvs_scalerk   rT   r   r   TF	fix_scalec           	      C   s   t jd}tjj||d|d}|rp|rpd}tjt|d" tj	j
|||d W d    n1 sb0    Y  d S i }|r||d< |r||d< ttj|fi |d	d
i d S Nr   rw   rV   rW   r   r}   r   r   r   r   r   r   r   T)r[   r   r   r3   r  r   r   r   r   halflogisticr   r   	rc   r   r  r   r  r   r   	error_msgr   r/   r/   r0   r     s"    0z(TestHalfNorm.test_fit_MLE_comp_optimizerc                 C   sB   t t$ tjjg ddd W d    n1 s40    Y  d S Nr   rX   r   )r   r   r    r3   r  r   rf   r/   r/   r0   test_fit_error  s    zTestHalfNorm.test_fit_errorN)
r   r   r   r   r   r   r  r  r   r'  r/   r/   r/   r0   r    s   


r  c                   @   sd   e Zd Zejdddgejdddgejddd	gejd
dd	gdd Zdd ZdS )TestHalfCauchyr   r  r`  r  rk   r   r   TFr  c           	      C   s   t jd}tjj||d|d}|rp|rpd}tjt|d" tj	j
|||d W d    n1 sb0    Y  d S i }|r||d< |r||d< ttj	|fi | d S )	Nr   rw   r!  r   r   r"  r   r   )r[   r   r   r3   r  r   r   r   r   
halfcauchyr   r   r$  r/   r/   r0   r     s    0z*TestHalfCauchy.test_fit_MLE_comp_optimizerc                 C   sB   t t$ tjjg ddd W d    n1 s40    Y  d S r&  )r   r   r    r3   r)  r   rf   r/   r/   r0   r'    s    zTestHalfCauchy.test_fit_errorN)r   r   r   r   r   r   r   r'  r/   r/   r/   r0   r(    s   r(  c                   @   s   e Zd Zejdddgdd Zejdg ddd	 Zejd
ddgejdg dejdddgejdddgdd Zdd Z	dS )TestHalfLogisticr  )rT   ]6)   L-c                 C   s   t tj||dd d S ro   )r   r3   r#  r   r  r/   r/   r0   rS    s    zTestHalfLogistic.test_sfq, ref))r+  rT   )r-  r,  )gv?g   .!>)g?g      <c                 C   s   t tj||dd d S ro   )r   r3   r#  rT  rc   r5  r:  r/   r/   r0   rV    s    zTestHalfLogistic.test_isfr   r  r`  r  r  r   TFr  c           	      C   s   t jd}tjj||d|d}i }|rt|rtd}tjt|d" tjj	|||d W d    n1 sf0    Y  d S |r||d< |r||d< t
tj|fi |d	d
i d S r   )r[   r   r   r3   r#  r   r   r   r   r   r   )	rc   r   r  r   r  r   r   r   r%  r/   r/   r0   r     s"    0z,TestHalfLogistic.test_fit_MLE_comp_optimizerc                 C   sH   d}t t|d$ tjjg ddd W d    n1 s:0    Y  d S )Nz; Maximum likelihood estimation with 'halflogistic' requiresr   )r   rX   r   r   r   )assert_raisesr    r3   r#  r   rc   r+   r/   r/   r0   test_fit_bad_floc%  s    z"TestHalfLogistic.test_fit_bad_flocN)
r   r   r   r   r   r   rS  rV  r   r2  r/   r/   r/   r0   r*    s   



r*  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestHalfgennormc                 C   s0   g d}t j|d}t j|}t|| d S r  )r3   halfgennormrZ   exponr   r  r/   r/   r0   
test_expon,  s    zTestHalfgennorm.test_exponc                 C   s4   g d}t j|d}t jj|dd}t|| d S r  )r3   r4  rZ   r  r   r  r/   r/   r0   test_halfnorm3  s    zTestHalfgennorm.test_halfnormc                 C   s6   g d}t j|d}t j|d}t|d|  d S )Nr   g
(?rX   )r3   r4  rZ   r  r   r  r/   r/   r0   test_gennorm:  s    zTestHalfgennorm.test_gennormN)r   r   r   r6  r7  r8  r/   r/   r/   r0   r3  +  s   r3  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestLaplaceasymmetricc                 C   s6   t g d}tj|d}tj|}t|| d S r  )r[   r   r3   laplace_asymmetricrZ   r  r   r  r/   r/   r0   r  C  s    z"TestLaplaceasymmetric.test_laplacec                 C   sL   t g d}d}d| }tj||}tj||d  |}t|| d S )Nr   rX   r   )r[   r   r3   r:  rZ   r   )rc   r  rs   Zkapinvr  r  r/   r/   r0   test_asymmetric_laplace_pdfJ  s    z1TestLaplaceasymmetric.test_asymmetric_laplace_pdfc              	   C   s   t t d t dg}d}tj||}tj||}tj||}t ddg}t ddg}t dd	g}tj||}	|}
tj	||}|}t
t ||||	|ft ||||
|f d S )
N   rS   rX   rP   gMbp?ru  gV-?r   gMb`?)r[   r   rG  r3   r:  rZ   ra   r   r   rT  r   concatenate)rc   r  rs   r  cdf1sf1r  cdf2Zsf2Zppf1Zppf2Zisf1Zisf2r/   r/   r0   !test_asymmetric_laplace_log_10_16S  s    z7TestLaplaceasymmetric.test_asymmetric_laplace_log_10_16N)r   r   r   r  r;  rA  r/   r/   r/   r0   r9  B  s   	r9  c                   @   s   e Zd Zdd Zejdg ddd Zejdg ddd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zg dg dg dg ddejdddd gej dd!dd"d gg d#g d$g d%g	ZeeZejd&ed'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5S )6TestTruncnormc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   f  s    zTestTruncnorm.setup_method	a, b, ref))r   rT   r_  )333333?ffffff?gܲl)r  g>g+c                 C   s   t tj|||dd d S N绽|=rq   r   r3   	truncnormr?   rc   r-   r.   r:  r/   r/   r0   r)  i  s    zTestTruncnorm.test_entropy))r  r`  ghiɮ9?)r	  ra  r_  )g0.+ra  r_  )}Ô%Ira  Z_2?c                 C   s   t tj|||dd d S r  rH  rJ  r/   r/   r0   test_extreme_entropy}  s    z"TestTruncnorm.test_extreme_entropyc              	   C   sJ   t jjg ddddgd dd}ttjdd	dd
dtjg}t|| d S )Nr   r   r^  ri   H.?r   rX         r  r      rX   rU   r   fO?l@rv   )r3   rI  r   r[   r   r   r   r  r/   r/   r0   test_ppf_ticket1131  s
    
z!TestTruncnorm.test_ppf_ticket1131c              	   C   sJ   t jjg ddddgd dd}ttjdd	dd
dtjg}t|| d S )NrN  rP  r  r   rQ  rX   rU   rv   rS  rR  r   )r3   rI  rT  r[   r   r   r   r  r/   r/   r0   test_isf_ticket1131  s
    
z!TestTruncnorm.test_isf_ticket1131c                 C   s   d\}}t jj||dddd}t||   k oD|   k oD|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d S )N)ir  r   r   rS   r   )rS      r3   rI  r   r   minr  rc   lowhighrR   r/   r/   r0   test_gh_2477_small_values  s    .z'TestTruncnorm.test_gh_2477_small_valuesc                 C   sF  d\}}t jj||dddd}t||   koD|   koD|kn  t|||gf d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o:|   k o:|k n   d S )	N)rT   rQ   r   r   rS   r   )rw     )'  i'  )i)r3   rI  r   r   rX  r  rB   rY  r/   r/   r0   test_gh_2477_large_values  s    <..z'TestTruncnorm.test_gh_2477_large_valuesc                 C   s  ddgddgfD ]\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t g d}t g d}	t g d}
|d	k rt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}t|| |d	k rfttj|||d ttj|||d n,ttj|||d ttj|||d tj|||}tt 	||
d  |d d  qd S )Nr   r   rJ  rm   r   r   r   r   r  r  rn   rn   )r   d._MT
@BKg?r   r   )r   re  rd  r   r   rX   ri   r   ri   r  gĖy	@gdv*?g,mj%V?r$  )r[   r   r   r3   rI  ra   r   rZ   r   rG  r   r   )rc   rZ  r[  xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsrZ   r/   r/   r0   test_gh_9403_nontail_values  sH    




z)TestTruncnorm.test_gh_9403_nontail_valuesc                 C   s  ddgddgfD ]x\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t g d}t g d}	t g d}
|d	k rt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}t|| tj|||}t|| |d	k rttj|||d ttj|||d n,ttj|||d ttj|||d tj|||}tt 	||
d  |d d  t ||d}|d d d  }ttj|||tj|| | d d d  ttj|||tj|| | d d d  ttj|||tj|| | d d d  qd S )N'   r  irm   rb  rc  )r   pGC@Ff<r   r   )r   rv  ru  r   r   rX   ri   rf  gEC@g i?gspXio)>r$  rV  r   )r[   r   r   r3   rI  ra   r   rZ   r   rG  r   r   r  )rc   rZ  r[  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rZ   Zxvals2r/   r/   r0   test_gh_9403_medium_tail_values  sb    





 z-TestTruncnorm.test_gh_9403_medium_tail_valuesc                 C   s6   t tdddd t tdtjdd d S )Ng      *@g      .@      ,@g T?r  g @gR?)r   r3   rI  ra   r[   r   rf   r/   r/   r0   test_cdf_tail_15110_14753
  s    z'TestTruncnorm.test_cdf_tail_15110_14753)r   rn   r  rn   rn   )r  rS   rn   r  rn   gLFu)ra  r   rn   gMFmz%?rn   gſ)r   rX   rn   ghI}?rn   gHNMr   gQ63E?gnl$A?gr1"D?gK8L?gQ63Egr1"D)r   r   gU*? bn?gnA??c3TXʿ)ra  r   gU*ҿr{  gnAr|  )r  g"$7"gOxr?gp7`g'>K@casec                 C   sL   |\}}}}}}t jj ||dd\}}	}
}t||	|
|g||||gdd d S )Nr  r  FFg<r~   )r3   rI  r   )rc   r~  r-   r.   m0Zv0s0Zk0mvrE   rO   r/   r/   r0   test_moments=  s    zTestTruncnorm.test_momentsc                 C   s0   t jj dtjdd\}}t|d t|d d S )Nr   mvr  g e3E?g:&A?)r3   rI  r[   r   r   )rc   r  r  r/   r/   r0   test_9902_momentsC  s    
zTestTruncnorm.test_9902_momentsc                 C   sP   d\}}t jj||dddd}t||   k oD|   k oD|k n   d S )N)rS   r   r   r   rS   r   rW  rY  r/   r/   r0   test_gh_1489_trac_962_rvsH  s    z'TestTruncnorm.test_gh_1489_trac_962_rvsc                 C   s   ddt j dt j t j dddddg}dddt jddddd	t jt jg}tjj||dt|fd
}t |dt|fkszJ tt ||j	ddk tt |j
dd|k d S )Nr  rS   r  ir  rV  rv   rt  -   r   r   )Zaxis)r[   r   r3   rI  r   r   r  r   r   rX  r  rY  r/   r/   r0   test_gh_11299_rvsN  s    & zTestTruncnorm.test_gh_11299_rvsc                 C   s*   t tjdr&tjjdddtj d d S )Nr   r  r  rv   r   )r,   r[   r   r3   rI  r   r   rf   r/   r/   r0   test_rvs_GeneratorX  s    z TestTruncnorm.test_rvs_Generatorc                 C   s   t t j t j dt j dg}t t jt jddt jg}t g d}g d}tt|||| tt| | | | d S )NrS   r  )rS         @r  	   r  )gOul"gځ=!gL!g>EG	f g^K[X)r[   r   r   r   r3   rI  rg  r  )rc   r-   r.   rR   rL   r/   r/   r0   test_logcdf_gh17064^  s     z!TestTruncnorm.test_logcdf_gh17064c                 C   s$   t ddd}d}t|| d S )Nr   r   rv   gl).0S?)r3   rI  r  r   )rc   r   r:  r/   r/   r0   test_moments_gh18634i  s    z"TestTruncnorm.test_moments_gh18634N)r   r   r   r   r   r   r   r)  rM  rT  rU  r\  r`  rr  rw  ry  r[   r   Z_truncnorm_stats_datar   r  r  r  r  r  r  r  r/   r/   r/   r0   rB  e  sZ   


#/#


rB  c                   @   s   e Zd Zejdg ddd Zejdg ddd Zejd	d
dgdd Zejdddgdd Z	ejdddgdd Z
ejd	ddgdd ZdS )TestGenLogisticx, expected))ig4`n)ig4	ncg)r   gX
=)rT   gh@X)rw   gh<c                 C   s$   d}t j||}t||dd d S )Nrk  rz   rq   )r3   genlogisticr   r   )rc   rR   rL   rL  logpr/   r/   r0   test_logpdfv  s    zTestGenLogistic.test_logpdfr  ))r	  gTKEl@)r^  gJk$@)r   gsF<?)ra  7~F<?c                 C   s   t tj||dd d S r  )r   r3   r  r?   r  r/   r/   r0   r)    s    zTestGenLogistic.test_entropyr  )r,  rS   g8.)  r  gpT	oc                 C   s   t tj|||dd d S r  )r   r3   r  r   r  r/   r/   r0   rS    s    zTestGenLogistic.test_sf	q, c, ref)rk   r,  g^ #@)r  rX   gGFf@c                 C   s   t tj|||dd d S NV瞯<rq   )r   r3   r  rT  rc   r5  rL  r:  r/   r/   r0   rV    s    zTestGenLogistic.test_isf)ri   r,  gİ@)r  r  g1a@c                 C   s   t tj|||dd d S r  )r   r3   r  r   r  r/   r/   r0   r    s    zTestGenLogistic.test_ppf)rT   {Gz?g(?)r   r  g'Tn7c                 C   s   t tj|||dd d S ro   )r   r3   r  rg  r  r/   r/   r0   test_logcdf  s    zTestGenLogistic.test_logcdfN)r   r   r   r   r   r   r  r)  rS  rV  r  r  r/   r/   r/   r0   r  s  s(   








r  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestHypergeomc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestHypergeom.setup_methodc                 C   s   t jjddddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jddd}tt
|t t dddd}tt
|tj t|jjt	d v  d S )Nr  rS   r   r   r   r   r   )r3   	hypergeomr   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	    s    zTestHypergeom.test_rvsc                 C   s6   d}d}d}|}|}t jd|||}t|dd d S )Ni	  r   r  rX   gkㅒP?rV  )r3   r  r  r   )rc   Mr,  NZtotZgoodZhgpmfr/   r/   r0   test_precision  s    zTestHypergeom.test_precisionc                 C   sl   t tjdddddd t tjdddddd t tjdddddd t tjdddddd d S )Nr   rX   r   r  rV  rn   )r   r3   r  r  rf   r/   r/   r0   	test_args  s    zTestHypergeom.test_argsc                 C   s.   t dtjdddd  ko"dkn   d S )Nr   r   io i  if0  r  )r   r3   r  ra   rf   r/   r/   r0   test_cdf_above_one  s    z TestHypergeom.test_cdf_above_onec                    s   d dt g dd }d fdd|D }t g d}t||d	d
d g d}tj|   d}g d}t||d	d
d d S )Ng    +@g     @)r   ffffff@333333@r   gffffff@@rv        @     @c                    s"   g | ]}t j   |qS r/   )r3   r  r   )r8   ZeatenZorangesZpearsquantiler/   r0   r:     s   z1TestHypergeom.test_precision2.<locals>.<listcomp>)r   gpR(g㘍R2gJޱ p9g?Mf=
G?r   r   gƠ>r  )g     @r  g     @g     @g     @)r   r  g)9g"1)r[   r   r   r3   r  r   )rc   Zfruits_eatenr   rL   Z	quantilesres2Z	expected2r/   r  r0   test_precision2  s    zTestHypergeom.test_precision2c                 C   sd   t ddd}| }tddg}tt|| }t|| t ddd}| }t|d d S )Nr   r   r   r$  rn   )	r3   r  r?   r[   r   r%  r   r   r   )rc   hgr(  r&  r'  r/   r/   r0   r)    s    
zTestHypergeom.test_entropyc                 C   sl   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d S )Nr      cA    .A     j@gor   r  r   @  X  r  g_7	j$r   )r3   r  r  r   rc   rO   r  r,  r  resultrL   r/   r/   r0   r    s    zTestHypergeom.test_logsfc                 C   s   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d}d	}d}d}t j||||}d}t||dd tg d}d	}d
}d}t j||||}tdd}t||dd d S )Nr   r  r  r  g)\Ur   r  r  r  r   r  g*@Vr   }      r  gר)r  r  r  )r3   r  rg  r   r[   r   fullr  r/   r/   r0   r    s8    zTestHypergeom.test_logcdfc                 C   s6   d}d}d}t j|||}|| | }t|| d S )Nip iP i.  )r3   r  r   r   )rc   r  r,  r  ZhmZrmr/   r/   r0   test_mean_gh18511?  s    zTestHypergeom.test_mean_gh18511c                 C   s`   d}d}t dd}d| }tj|d |||}t |dksDJ t t |dk s\J d S )NrS   r   rv   r         $@r   r   )r[   r   r3   r  r   r   diff)rc   r,  r  r  Zpopulation_sizer-  r/   r/   r0   test_sf_gh18506J  s    zTestHypergeom.test_sf_gh18506N)r   r   r   r   r	  r  r  r  r  r)  r  r  r  r  r/   r/   r/   r0   r    s   
	.r  c                   @   s   e Zd Zejdg ddd Zejdg ddd Zd	d
 Zdd Z	ejdddgdd Z
ejdg ddd ZdS )TestLoggammaz	x, c, cdf))r   rX   g;Y%?)r      gRٲa6_<)gHr  gi|e?)r  g6l?)i+rP   g֬CCf9)ir   g ֺlc                 C   s<   t j||}t||dd t j||}t||dd d S ry   )r3   loggammara   r   r   )rc   rR   rL  ra   r-  yr/   r/   r0   rN  ]  s    zTestLoggamma.test_cdf_ppfzx, c, sf))r   rk  gQOu3;)   rT   g\Z{0)r  r  geɐ?)ig{Gzd?gr0T?c                 C   s<   t j||}t||dd t j||}t||dd d S ry   )r3   r  r   r   rT  )rc   rR   rL  r   rE   r  r/   r/   r0   r  o  s    zTestLoggamma.test_sf_isfc                 C   s    t jdd}t|ddd d S )NrX   g     @r  rq   )r3   r  r   r   )rc   lpr/   r/   r0   r  z  s    zTestLoggamma.test_logpdfc                 C   sT   t g ddd}|D ]4\}}}}}tjj|dd}t|||||gdd qd S )N)ri   g"~jg46<@g oŏ      @r  g	h"lxgQ?gZd;333333@g      (@g{/L@g??gгYҿgh|?5?r   rv   Zmsvkr  r   r  )r[   r   reshaper3   r  r   )rc   tablerL  r   varskewZkurtcomputedr/   r/   r0   r    s    zTestLoggamma.test_statsrL  rP   r  c                 C   sv   t jj|dd}t| s"J t j|}t t||k t	|}|j
dd}|jd  k rl|jk srn J d S )Nr   r   r>  )Zconfidence_levelri   )r3   r  r   r[   isfiniter   medianZ	binomtestZcount_nonzeror   Zproportion_cirZ  r[  )rc   rL  rR   ZmedZbtestcir/   r/   r0   r	    s    zTestLoggamma.test_rvsr  ))r  g3H໱k3@)r   r  )r  g8,[H^}	)r`  g90$)ra  gtum\c                 C   s   t tj||dd d S r  )r   r3   r  r?   r  r/   r/   r0   r)    s    zTestLoggamma.test_entropyN)r   r   r   r   r   r   rN  r  r  r  r	  r)  r/   r/   r/   r0   r  V  s    


r  c                   @   s*   e Zd Zg dZejdedd ZdS )TestJohnsonsu))r  r   r   g?r  )rx   r   r   gH';vIh%,=)r   r   r   g?x7r  r~  c                 C   sF   |\}}}}}t tj||||dd t tj|||||d d S Nr  rq   )r   r3   	johnsonsur   rT  rc   r~  rR   r-   r.   r   tolr/   r/   r0   r    s    zTestJohnsonsu.test_sf_isfNr   r   r   casesr   r   r   r  r/   r/   r/   r0   r    s   r  c                   @   s*   e Zd Zg dZejdedd ZdS )TestJohnsonb))r^  r   r   g?Hz>)rO  r   r   g0jA:r  )g!?r   r   gQbF5r  r~  c                 C   sF   |\}}}}}t tj||||dd t tj|||||d d S )Nr  rq   r~   )r   r3   r   r   rT  r  r/   r/   r0   r    s    zTestJohnsonb.test_sf_isfNr  r/   r/   r/   r0   r    s   r  c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgdd Zdd Zej	
dddgdd Zdd ZdS )TestLogisticc                 C   s2   t dd}tj|}tj|}t|| d S NrI  r  )r[   r  r3   logisticra   r   r   rc   rR   r  rM  r/   r/   r0   rN    s    zTestLogistic.test_cdf_ppfc                 C   s2   t dd}tj|}tj|}t|| d S r  )r[   r  r3   r  r   rT  r   r  r/   r/   r0   r    s    zTestLogistic.test_sf_isfc                 C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r3   r  r   rT  )rc   r-  Zdesiredr/   r/   r0   test_extreme_values  s    z TestLogistic.test_extreme_valuesc                 C   s*   t jg d}g d}t||dd d S )N)r  r   rS   )gm\  .g9B.gO& $rz   rq   )r3   r  r   r   )rc   r  rL   r/   r/   r0   test_logpdf_basic  s    zTestLogistic.test_logpdf_basicc                 C   s"   t jddg}t|ddg d S )Nrh   r  )r3   r  r   r   rc   r  r/   r/   r0   test_logpdf_extreme_values  s    z'TestLogistic.test_logpdf_extreme_valueszloc_rvs,scale_rvs)g9x&?gi '?)gB"?gs^&?c                 C   sR   t jjd||d}dd }t|t j||fdj}t j|}t||dd d S )NrT   r   rV   rW   c                 S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS Nr   rX   )r   r[   r%  r   )inputr   r-   r.   r,  x1x2r/   r/   r0   r     s    z#TestLogistic.test_fit.<locals>.funcr{  gKH9r~   )r3   r  r   r"   	_fitstartrR   r   r   )rc   loc_rvs	scale_rvsr   r   Zexpected_solutionZ
fit_methodr/   r/   r0   test_fit   s    

zTestLogistic.test_fitc                 C   sB   t jjdddd}tt j| tt j|dd tt j|dd d S )NrT   ri   rX   r  r   r   r   )r3   r  r   r   rc   r   r/   r/   r0   test_fit_comp_optimizer  s    z$TestLogistic.test_fit_comp_optimizer
testlogcdfTFc                 C   sH   t g d}|r tj|}ntj| }g d}t||dd d S )N)r_  r     r   r  )     g      g%h9fg?~T}%mgCx^&ْV瞯<rq   )r[   r   r3   r  rg  r  r   )rc   r  rR   r  rL   r/   r/   r0   test_logcdfsf_tails  s    z TestLogistic.test_logcdfsf_tailsc                 C   s2   t g ddgd  dgd  }ttj| d S )N)	i5%   +   r  r  0   6   7   :   ;   r   =   r  )r[   r   r   r3   r  r  r/   r/   r0   test_fit_gh_18176,  s    
zTestLogistic.test_fit_gh_18176N)r   r   r   rN  r  r  r  r  r   r   r   r  r  r  r  r/   r/   r/   r0   r    s   


r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestLogserc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   6  s    zTestLogser.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r   r   r   r   r   )r3   logserr   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	  9  s    zTestLogser.test_rvsc                 C   s   t jdd}t|d d S )Nr   r  g&Y3)r3   r  r  r   rc   r  r/   r/   r0   test_pmf_small_pD  s    zTestLogser.test_pmf_small_pc                 C   s   t jd}t|d d S )Nr  gW  ?)r3   r  r   r   r  r/   r/   r0   test_mean_small_pR  s    zTestLogser.test_mean_small_pN)r   r   r   r   r	  r  r  r/   r/   r/   r0   r  5  s   r  c                	   @   s   e Zd Zejdddd Zejdej	ej
gejdg dejdg d	ejd
ddgddgfdd Zejdej	dfej
dfgdd ZdS )TestGumbel_r_lfunctionscopec                 C   s   t jdS r   r[   r   r   rf   r/   r/   r0   r   ^  s    zTestGumbel_r_l.rngr9   r  r   r   r   r  rP   r   rv   zfix_loc, fix_scaleTFc           	      C   sN   |j d|||d}t }|r(|d |d< |r8|d |d< t||fi | d S )NrT   r   rV   rW   r}   rX   r   r   )r   r   r   )	rc   r9   r  r  r   r  r   r   r   r/   r/   r0   r  b  s    
z&TestGumbel_r_l.test_fit_comp_optimizerz	dist, sgnr   r   c                 C   s@   |t g d }||\}}t||d  t|ddd d S )N)r   r   r   r   r   r   r   gW  @g   @g3qtw>r  rq   )r[   r   r   r   )rc   r9   ZsgnzrV   rW   r/   r/   r0   r  w  s    zTestGumbel_r_l.test_fitN)r   r   r   r   fixturer   r   r   r3   gumbel_rgumbel_lr  r  r/   r/   r/   r0   r   ]  s   

r   c                   @   s  e Zd Zdd Zdd Zejdddd Zej	d	ej
d
ddgej
dddgej
dddgdd Zej
d
ddgej
dddgej
dddgej
ddd eddgddD ejdddd Zejdddd  Zd!d" Zd#d$ Zd%S )&
TestParetoc                 C   s  t   t dt tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjd	dd\}}}}t
|d
 t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t
|d W d    n1 s0    Y  d S )Nr*  ri   r  r  r  rk  r  rm   r  g?grq@r         @gffffff?gK~?g      2@g۶m۶m?r  UUUUUU?gqq?r        @g%I$I?gQ?gUUUUUU@grq?g88Nb@)r.  r/  r0  r1  r3   paretor   r[   r   r   r   r  rc   r  r  rE   rO   r/   r/   r0   r    s^    











zTestPareto.test_statsc                 C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eArX   rk  r   rU   )r3   r  r   r   )rc   rR   r.   rW   r-  rL   r/   r/   r0   rS    s    zTestPareto.test_sfr  r  c                 C   s   t jdS r   r  rf   r/   r/   r0   r     s    zTestPareto.rngz2ignore:invalid value encountered in double_scalarsr   r   rX   r   r   r  rv   c              
   C   s   t jjd||||d}t jj|dddd }t jj|dddd }t jj|dddd }||  krv|  krvdks|n J t jjd|||d |d}t jj|dd	\}	}
}t|d |  |d }|jd }t|	|tt	||    t|
d d S )
NrT   r   r.   rW   rV   r}   r   p=
ף?)r   r   )r   fix_b)r   fbrX   r   )
r3   r  r   r   r   rX  r  r[   r%  rG  )rc   r   r   r  r   r   Zshape_mle_analytical1Zshape_mle_analytical2Zshape_mle_analytical3Zshape_mle_aZ	loc_mle_aZscale_mle_aZ
data_shiftZndatar/   r/   r0   r    s,    
zTestPareto.test_fitrP   fix_shape, fix_loc, fix_scalec                 C   s   g | ]}d |v r|qS Fr/   r8   r-  r/   r/   r0   r:     s   zTestPareto.<listcomp>TFr   repeatignoreinvalidc           
      C   sV   t jjd||||d}i }	|r&||	d< |r2||	d< |r>||	d< tt j|fi |	 d S )NrT   r  r   r   r   )r3   r  r   r   
rc   r   r   r  r   r   r  r   r   r   r/   r/   r0   r     s    	z&TestPareto.test_fit_MLE_comp_optimizerc                 C   s8   d\}}}t jj|||dtjdd}tt j| d S )N)r   r   r   rT   ið& r   )r3   r  r   r[   r   r   r   )rc   r  locationrW   r   r/   r/   r0   test_fit_known_bad_seed  s
    

z"TestPareto.test_fit_known_bad_seedc                 C   s@   t tj tttjjg ddd tttjjg dddd d S )Nr   rX   r   )rv   rX   r   r   r   r"  )r   r3   r  r0  r    r   rf   r/   r/   r0   test_fit_warnings	  s
    
zTestPareto.test_fit_warningsc                 C   s.   t jjddd|d}t|d t j|}d S )Ni~r   rT   )rV   r.   r   r}   r   )r3   r  r   r
   r   )rc   r   r   r   r/   r/   r0   test_negative_data	  s    
zTestPareto.test_negative_dataN)r   r   r   r  rS  r   r	  r   r   filterwarningsr   r  r%   r[   errstater   r   r!  r"  r/   r/   r/   r0   r    s*   <





	r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejddg dfdddded ejgfdddded d gfd!g d"fgd#d$ Zd%d& Zd'S )(TestGenparetoc                 C   sl   dD ]6}t |}tj|\}}t|d tt | qt d}tj|\}}t||gddg d S )Nr  rn   rn          ri   )	r[   r   r3   	genpareto_get_supportr   r   isposinfr   )rc   rL  r-   r.   r/   r/   r0   test_ab	  s    


zTestGenpareto.test_abc                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| d S )Nrn   rL  r   r  r   r  rS   )
r3   r(  r[   r  r   rZ   r5  ra   r   r   rc   rvrR   r5  r/   r/   r0   test_c0'	  s    zTestGenpareto.test_c0c                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| t|
d	d d S )
NrP  r,  r   r  r   rn   r  rS   r   )r3   r(  r[   r  r   rZ   uniformra   r   r   r   r-  r/   r/   r0   test_cm13	  s    zTestGenpareto.test_cm1c                 C   s   t jdd}t|tj|tjgddg tt|	tj t jdd}t|tj|tjgddg tt|	tj t jdd}t|tj|tjgddg tt|	tj d S )NrP   r,  rn   r  rP  )
r3   r(  r   rZ   r[   r   ra   r   isneginfr   rc   r.  r/   r/   r0   
test_x_infA	  s    """zTestGenpareto.test_x_infc                 C   s   t ddd}dD ]t}tj||}dD ]$}tj||| }t||dd q(tj||}dD ]$}tj||| }t||dd q`qd S )	Nr   rS   r   r   r   r  g+rZ  r~   )r  r  )r[   r  r3   r(  rZ   r   ra   )rc   rR   rL  Zpdf0dcZpdfcZcdf0Zcdfcr/   r/   r0   test_c_continuityO	  s    zTestGenpareto.test_c_continuityc              	   C   s   t jt jddddt jdddddd	t jdddd f }d
D ]<}tj||}dD ]$}tj||| }t||dd qTq>d S NrZ  rk   rP   baser   r   FZendpointr  )rn   rP  r6  r~   )r[   r  rK  r  r3   r(  r   r   )rc   r5  rL  Zppf0r7  Zppfcr/   r/   r0   test_c_continuity_ppf]	  s    z#TestGenpareto.test_c_continuity_ppfc              	   C   s   t jt jddddt jdddddd	t jdddd f }d
D ]<}tj||}dD ]$}tj||| }t||dd qTq>d S r9  )r[   r  rK  r  r3   r(  rT  r   )rc   r5  rL  Zisf0r7  Zisfcr/   r/   r0   test_c_continuity_isfg	  s    z#TestGenpareto.test_c_continuity_isfc              	   C   sj   t jt jddddt jdddddd	t jdddd f }d
D ]&}ttjtj||||dd q>d S )NrZ  rk   rP   r:  r   r   Fr<  r  )r  gC]r2rp   gV瞯Ҽrp   r~   )	r[   r  rK  r  r   r3   r(  ra   r   )rc   r5  rL  r/   r/   r0   test_cdf_ppf_roundtripq	  s    z$TestGenpareto.test_cdf_ppf_roundtripc                 C   s    t jdddd}t|d d S )Nr`  rk   r   r   gpEȜ)r3   r(  r  r   r  r/   r/   r0   r  z	  s    zTestGenpareto.test_logsfzc, expected_statsr   )r   r   rX   r  r$  r  gqq@rS   rX   gqq?g      ?g$I$	?rq?rQ  gll0@r   )ri   UUUUUU?r   333333c                 C   s$   t jj |dd}t||ddd d S )Nr  r  rz   rp   r  )r3   r(  r   )rc   rL  expected_statsr  r/   r/   r0   r  	  s    zTestGenpareto.test_statsc                 C   s   t jd}t|ddd d S )Nr  gvǼ
  ?rz   rq   )r3   r(  r  r   )rc   r  r/   r/   r0   test_var	  s    zTestGenpareto.test_varN)r   r   r   r+  r/  r1  r4  r8  r=  r>  r?  r  r   r   r   r[   r  r   r  rD  r/   r/   r/   r0   r%  	  s&   

	


r%  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestPearson3c                 C   s   t jd d S r   r   rf   r/   r/   r0   r   	  s    zTestPearson3.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd v  t jd}tt	|t
 t dd}tt	|tj t|jjtd v  tt|dk d S )NrP   r   r   ZAllFloatri   r   )r3   r)   r   r   r  r  r   r  r   r  r   r  r   r  r/   r/   r0   r	  	  s    zTestPearson3.test_rvsc                 C   s|   t jdg d}t|tg ddd t jdd}t|tdgdd t jg d	d}t|tg d
dd d S )NrX   rn   rP   ru  )gtT?g+q?g?r  r~   ra  rP   ND}i?ra  r   r   r   r   )rG  gj?gdC?gs?g'M?)r3   r)   rZ   r   r[   r   r  r/   r/   r0   r  	  s    zTestPearson3.test_pdfc                 C   sp   t jdg d}t|tg ddd t jdd}t|dgdd t jg d	d}t|g d
dd d S )NrX   rF  )grE?gTp]0?g~?r  r~   ra  rP   g E&"J?rH  )giZ*J?gh+8w?gcK?g|<x6?gG?)r3   r)   ra   r   r[   r   r  r/   r/   r0   r  	  s    
zTestPearson3.test_cdfc                    s@   g d}dd t j|} fdd|D }t|| d S )Nra  r   r   ri   ri   rz  c                    s$   g | ]}t t|j d  qS r6   )r   r3   r)   rZ   )r8   r  Zneg_infx_evalr/   r0   r:   	  s   z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r3   r)   ra   r   )rc   skewsri  Zint_pdfsr/   rJ  r0   test_negative_cdf_bug_11186	  s    z(TestPearson3.test_negative_cdf_bug_11186c                 C   sT   t jdd}t|d t|tjs(J t jdd}t|d t|tjsPJ d S )Nr   rX   r   r  )r3   r)   r  r   r  r[   number)rc   r  r/   r/   r0   test_return_array_bug_11746	  s    

z(TestPearson3.test_return_array_bug_11746c                 C   s   g d}d}t jt j|||}t|| tdgdgg}tdd}tt j||t j| |  tt j||t j	| |  tt j||t j
||   d S )NrI  ri   r   rk  r   rX   )r3   r)   r   ra   r   r[   r   r  rZ   r   rT  )rc   rL  rK  r   r  rR   r/   r/   r0   test_ppf_bug_17050	  s    
zTestPearson3.test_ppf_bug_17050c                 C   sT   g d}g d}g d}t tj|||dd t tj|dtj|dd d S )N)rP   ri   r  皙)r  r  g      I@       @)g7>g~׼=gp'+7g;r  rq   r   )r   r3   r)   r   r  )rc   r  rR   r:  r/   r/   r0   rS  	  s
    zTestPearson3.test_sfN)r   r   r   r   r	  r  r  rM  rO  rP  rS  r/   r/   r/   r0   rE  	  s   

rE  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
TestKappa4c                 C   sD   g d}d}dD ].}t j|||}t j|| }t|| qd S )N)rn   rP   ru  ri   r  )
gffffffrP  r   皙ɿrQ  rP   ru  ri   r  ffffff?)r3   kappa4ra   r(  r   rc   rR   r(  rO   r  Z	vals_compr/   r/   r0   test_cdf_genpareto	  s    zTestKappa4.test_cdf_genparetoc                 C   sL   t ddd}d}t ddd}tj|||}tj||}t|| d S )Nr  rv   rS   rn   ra  r   )r[   r  r3   rV  ra   
genextremer   rW  r/   r/   r0   test_cdf_genextreme	  s    zTestKappa4.test_cdf_genextremec                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   rS   r  rn   )r[   r  r3   rV  ra   r5  r   rW  r/   r/   r0   test_cdf_expon	  s    zTestKappa4.test_cdf_exponc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  rv   rS   rn   )r[   r  r3   rV  ra   r
  r   rW  r/   r/   r0   test_cdf_gumbel_r
  s    zTestKappa4.test_cdf_gumbel_rc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  rv   rS   rP  rn   )r[   r  r3   rV  ra   r  r   rW  r/   r/   r0   test_cdf_logistic
  s    zTestKappa4.test_cdf_logisticc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  rv   rS   r  )r[   r  r3   rV  ra   r0  r   rW  r/   r/   r0   test_cdf_uniform
  s    zTestKappa4.test_cdf_uniformc                 C   s   t dd d S r  )r3   rV  rf   r/   r/   r0   test_integers_ctor!
  s    zTestKappa4.test_integers_ctorN)
r   r   r   rX  rZ  r[  r\  r]  r^  r_  r/   r/   r/   r0   rS  	  s   					rS  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestPoissonc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   (
  s    zTestPoisson.setup_methodc                 C   s@   t d}tjg d|}d|d |d d g}t|| d S )NrX   r   r   rX   ri   r   )r[   rG  r3   r9  r  r   )rc   Zln2r  rL   r/   r/   r0   test_pmf_basic+
  s    
zTestPoisson.test_pmf_basicc                 C   s@   t jg dd}g d}t|| t jdd}t|d d S )Nra  r   )r   r   r   ffffff?r   r   )r3   r9  r  r   intervalr   )rc   r  rL   re  r/   r/   r0   test_mu02
  s
    
zTestPoisson.test_mu0c                 C   s   t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nri   r   r   r   r   r   )r3   r9  r   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	  ;
  s    zTestPoisson.test_rvsc                 C   s   d}t jj |dd}t|||td| d| g tg d}t jj |dd}||tjddtd gtjddgf}t|| d S )	Ng      0@r  r  r  )rn   r  rm   r   rX   ri   )r3   r9  r   r[   r  r   r   )rc   r}  r  rL   r/   r/   r0   r  F
  s     &zTestPoisson.test_statsN)r   r   r   r   rb  rf  r	  r  r/   r/   r/   r0   r`  '
  s
   	r`  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )	TestKSTwoc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   R
  s    zTestKSTwo.setup_methodc                 C   s   dD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkr\t |nd}t dd|| ddtjd|  t	dd|  ddg}tj
||}t|| qd S )Nr   rX   r   rS   rT   rw   r   ri   r   r  rX   rn   )r[   r   r2   r   gammalnr   r3   ksoner   r  kstwora   r   )rc   r,  rR   v1lgelgrL   r  r/   r/   r0   r  U
  s    &zTestKSTwo.test_cdfc                 C   s   t ddd}dD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkrjt |nd}t ddd||  dtj	d| t
d| ddg}tj	||}t|| qd S )Nr   r   rV  rh  ri   r  rX   )r[   r  r   r2   r   ri  r   r3   rj  r   rX  rk  r   )rc   rR   r,  rl  rm  rn  rL   r  r/   r/   r0   rS  i
  s    &
zTestKSTwo.test_sfc                 C   s\   t ddddd  }g d}|D ]4}|t | }tj||}t |}t|d q"d S )Nr   rX   rV  r   )r   rT   r,  i  rw   rx   r  )r[   r  r  r3   rk  ra   r  r
   )rc   rR   nsZ_xxnprobsZdiffsr/   r/   r0   test_cdf_sqrtnx
  s    
zTestKSTwo.test_cdf_sqrtnc                 C   sF   t ddd}dD ].}tj||}tj||}t|d|  qd S Nr   r   rV  rh  )r[   r  r3   rk  ra   r   r   )rc   rR   r,  r  r  r/   r/   r0   r  
  s
    zTestKSTwo.test_cdf_sfc                 C   sT   t ddd}dD ]<}|t | }tj||}tj||}t|d|  qd S rs  )r[   r  r  r3   rk  ra   r   r   )rc   rR   r,  rp  r  r  r/   r/   r0   test_cdf_sf_sqrtn
  s    zTestKSTwo.test_cdf_sf_sqrtnc                 C   sn   t ddd}dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qd S )	Nr   r   rV  rh  ri   r  r^  rq   )r[   r  r3   rk  ra   r   r   rc   rR   r,  rp  r  condr  r/   r/   r0   test_ppf_of_cdf
  s    zTestKSTwo.test_ppf_of_cdfc                 C   sn   t ddd}dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qd S )	Nr   r   rV  rh  ri   r  r^  rq   )r[   r  r3   rk  rT  r   r   )rc   rR   r,  rp  Zvals_isfrv  r  r/   r/   r0   test_isf_of_sf
  s    zTestKSTwo.test_isf_of_sfc                 C   st   t ddd}dD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qd S )Nr   r   rV  rh  ri   r  )r[   r  r  r3   rk  ra   r   r   ru  r/   r/   r0   test_ppf_of_cdf_sqrtn
  s    zTestKSTwo.test_ppf_of_cdf_sqrtnc                 C   st   t ddd}dD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qd S )Nr   r   rV  rh  ri   rc  )r[   r  r  r3   rk  r   rT  r   )rc   rR   r,  rp  r  rv  r  r/   r/   r0   test_isf_of_sf_sqrtn
  s    zTestKSTwo.test_isf_of_sf_sqrtnc                 C   sJ   t ddddd  }dD ]*}tj||}tj||}t|| qd S rs  )r[   r  r3   rk  r   ra   r   )rc   rq  r,  rp  r  r/   r/   r0   r  
  s
    zTestKSTwo.test_ppfc              	   C   s   g d}t g d}t g dg dg dg dg dg dg}t|D ]J\}}|t d	 t t jd	 |  }tj||}t	||| d
d qLd S )N)rS   r   rT   r,  r  rw   )r$  gUUUUUU?ri   r   rX   r   )gRT>gr	?gK5
?gn
"5?gU
?gk?)g&6#>gb
E>gI5?g\?g;?g%1?)g6>gL>g<?g䓀^?gO|6$?g qO?)g}+: >gwQ9>gH{?g]qv(?g)~/v?gmJ?)gV27J=gGk(>gWX?gY?g{0`?gZ
H?)g_R=g4>g̪?gT_@?g<e?g2?rX   r  rq   )
r[   r   	enumeraterG  r  r\   r3   rk  ra   r   )rc   ro  ratiosrL   idxr,  rR   r  r/   r/   r0   test_simard_lecuyer_table1
  s    "z$TestKSTwo.test_simard_lecuyer_table1N)r   r   r   r   r  rS  rr  r  rt  rw  rx  ry  rz  r  r~  r/   r/   r/   r0   rg  Q
  s   
		
rg  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestZipfc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   
  s    zTestZipf.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nrk  r   r   r   r   r   )r3   zipfr   r   r  r   r  r   r  r   r  r  r  r  r/   r/   r0   r	  
  s    zTestZipf.test_rvsc                 C   s\   t jj dd\}}tt| t|tj t jj ddd\}}tt||g   d S )Nffffff@r-   re  skr-   r  )r3   r  r   r[   r  r   r   r   r  r/   r/   r0   r  
  s
    zTestZipf.test_momentsN)r   r   r   r   r	  r  r/   r/   r/   r0   r  
  s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDLaplacec                 C   s   t jd d S r   r   rf   r/   r/   r0   r   
  s    zTestDLaplace.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd v  t jd}tt	|t
 t dd}tt	|tj t|jjtd v  tt jdd u d S )Nrk  r   r   r   r   r   )r3   dlaplacer   r   r  r  r   r  r   r  r  r  r  r/   r/   r0   r	     s    zTestDLaplace.test_rvsc                 C   s   d}t |}| d\}}}}d}t| |d }||}	t|	|d  t|	|d   }
}t||fd t||f|
||
d  d fd	d
d d S )Nr  r  r  r   rX   r   rd  r  r  r  r  )r3   r  r[   r   r  r%  r   r   )rc   r-   dlr  r  rE   rO   r  rM  ppm2m4r/   r/   r0   r    s    

&zTestDLaplace.test_statsc                 C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Nrm   r  )rn   rn   )r        
@)r[   rG  r3   r  r   r   )rc   r-   r  r  r  rE   rO   r/   r/   r0   test_stats2  s
    

zTestDLaplace.test_stats2N)r   r   r   r   r	  r  r  r/   r/   r/   r0   r  
  s   r  c                       s   e Zd Zdd Zejdddgdd Zejdddg fd	d
Zdd Z	dd Z
dd Zejdg ddd Z  ZS )TestInvgaussc                 C   s   t jd d S r   r   rf   r/   r/   r0   r   !  s    zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)rX   r   r   )g
ףp=@g r@gʡE6@c                 C   sF  t jjd|||d}t jj||d\}}}|| }t|}t|t|d |d   }	||	 }
t|
|ddd t|	|ddd t	|| t jjd|||d}t jj||d |d d\}}}t	|d | t	|d | t jj|d	d
d }t jj|d	dd }t jj|d	dd }||  kr<|  kr<d	ksBn J d S )NrT   )r   r}  rV   rW   r   r   rp   r  r   r"  r  )fmur   )Zfix_mur   )
r3   r   r   r   r[   r   r   r%  r   r   )rc   rvs_mur   r  r   r}  rV   rW   Zmu_temp	scale_mleZmu_mleZ
shape_mle1Z
shape_mle2Z
shape_mle3r/   r/   r0   r  $  s.    



zTestInvgauss.test_fit)gX9v>@g	@gGz@c           	         s   t jd}tjjd||||d}tttjtjj}||}tj|}t	|| ||ddd}tjj|ddd}t	|| t
tj||d t ||d  dksJ t
tj||d d t
tj|dd t
tj||t jdd d	 d S )
Nr   rT   )r   r}  rV   rW   r}   r   rX   )r   r  r   r   r"  )r[   r   RandomStater3   r   r   r   r   r   r   r   r   rand)	rc   r  r   r  r   r   Z	super_fitZsuper_fittedZinvgauss_fit	__class__r/   r0   r   C  s$    



z(TestInvgauss.test_fit_MLE_comp_optimizerc                 C   sL   t tj tt$ tjjg ddd W d    n1 s>0    Y  d S r&  )r   r3   r   r   r   r    r   rf   r/   r/   r0   test_fit_raise_errorsg  s    
z"TestInvgauss.test_fit_raise_errorsc                 C   s   g d}g d}t jjd|d}t|| t jjddd}t|d t jjddd}t|d	 t jd
d}t|d t jdd}t|d d S )N)g4wT;?gjdV&}?g{i\0>gDV_h?gqacX?)r   r   r   r   r   皙?r}  r  ?gfFn   gr^:g9̗?r^  gx_;:g!?gٷ
??)r3   r   ra   r   r   r   )rc   r}  rL   rJ   Z
cdf_actualZ	sf_actualr/   r/   r0   r  m  s    



zTestInvgauss.test_cdf_sfc                 C   sh   t jjddd}t|d t jdd}t|d t jjddd}t|d t jdd}t|d	 d S )
Nr^  r  r  giJ.r  gr^ߺr  gpgFgpQ^L)r3   r   rg  r   r  )rc   rg  r  r/   r/   r0   r    s    	


zTestInvgauss.test_logcdf_logsfzmu, ref))g:0yU>g,9)r  g%!)rk   g40)r   gK'
@)ra  g`p
@c                 C   s   t tj||dd d S r  )r   r3   r   r?   )rc   r}  r:  r/   r/   r0   r)    s    zTestInvgauss.test_entropy)r   r   r   r   r   r   r   r  r   r  r  r  r)  __classcell__r/   r/   r  r0   r     s   
"#r  c                       sz   e Zd Zejdg dejdg ddd Zejdg d fd	d
Zdd Zdd Z	dd Z
dd Z  ZS )TestLaplacer   )r  r   r   rX   r  )r   rX   r   rS   c           	      C   sZ  t jd}tjjd|||d}t |}t t || t	| }tj
|\}}t||ddd t||ddd tjj
||d\}}t||ddd tjj
||d\}}t|| |d }t t || t	| }tjj
||d\}}t|| tjj
||d\}}t|| tttjj
|||d	 tttjj
t jg tttjj
t jg d S )
Nr   rT   r  rp   r  r   r  rX   r"  )r[   r   r  r3   r  r   r  r%  r   r   r   r   r   r0  r   r   r   r   )	rc   r   r  r   r   Zloc_mler  rV   rW   r/   r/   r0   r    s0    



zTestLaplace.test_fitrvs_loc,rvs_scale))r  rS   rS   rv   )ri   ru  c                    s   t jd}tjjd|||d}dd }tj|\}}tttjtj|\}}	||||}
|||	|}|
|k st j	|
|dddsJ d S )Nr   rw   r  c              	   S   s8   dt | td|  d| tt||     S )Nr   rX   r   )r   r[   rG  r%  r   )rV   rW   r   r/   r/   r0   ll  s    z3TestLaplace.test_fit_MLE_comp_optimizer.<locals>.llrp   r  )
r[   r   r  r3   r  r   r   r   r   r   )rc   r   r  r   r   r  rV   rW   Zloc_optZ	scale_optZll_mleZll_optr  r/   r0   r     s     
z'TestLaplace.test_fit_MLE_comp_optimizerc                 C   sZ   t g d}tjj|dd\}}t|dddd tjj|dd\}}t|dddd d S )N)r  r  r  r  rR  rx  r  r   r   rp   r  r  )r[   r   r3   r  r   r   )rc   r   rV   rW   r/   r/   r0   test_fit_simple_non_random_data  s
    z+TestLaplace.test_fit_simple_non_random_datac                 C   sl   d}t j| }|dksJ t j|}|dks6J t j|}|dksNJ t j| }|dkshJ d S )Nrw   rn   r  )r3   r  ra   r   )rc   rR   p0p1r/   r/   r0   test_sf_cdf_extremes   s    z TestLaplace.test_sf_cdf_extremesc                 C   s.   d}t j|}t|t| d dd d S )Nr,  rX   rz   rq   )r3   r  r   r   r[   r   )rc   rR   r-  r/   r/   r0   rS    s    zTestLaplace.test_sfc                 C   s.   d}t j|}t|td|  dd d S )Ng}:rX   rz   rq   )r3   r  rT  r   r[   rG  )rc   r-  rR   r/   r/   r0   rV    s    zTestLaplace.test_isf)r   r   r   r   r   r   r  r   r  r  rS  rV  r  r/   r/   r  r0   r    s   -	r  c                   @   s   e Zd Zdd Zdd Zejdg ddd Zejd	g d
ejddgejdddgejdddgdd Z	dS )TestLogLaplacec                 C   s@   t g d}t g d}g d}ttj|||dd d S )N)rm   r  r  )r  r`    4&kC)g ?gKH9gXrL0rp   rq   )r[   r   r   r3   
loglaplacer   )rc   rL  rR   r:  r/   r/   r0   rS  "  s    zTestLogLaplace.test_sfc                 C   s0   d}g d}g d}t tj|||dd d S )Nr  )r   rP   rG  r  r  )gHhlh#?gH]9@?g"fj#@g11Ags!8wBr  rq   )r   r3   r  rT  )rc   rL  r5  r:  r/   r/   r0   rV  *  s    zTestLogLaplace.test_isfr<  r   rX   r   r   c                 C   sX   d|d  }t d|d d}ttj||t j t t tjj||drTJ d S )Nr  r   ri   r  )	r[   r   r   r3   r  r  r   r   r  )rc   r<  momrL  r/   r/   r0   test_moments_stats3  s    z!TestLogLaplace.test_moments_statsrL  )ri   r  rm   z
loc, scale)rB  g@fix_cTFr  c                 C   s   t jd}tjj|||d|d}d|i}|r6||d< |rB||d< dt| }	|	dkrd	}
tjt	t
f|
d
$ tjj|fi | W d    n1 s0    Y  d S ttj|fi | d S )Nr   rT   r!  r   Zfcr   r   r   r   r   )r[   r   r   r3   r  r   r   r   r   r   r   r   r   )rc   rL  rV   rW   r  r  r   r   r   nfreer%  r/   r/   r0   test_fit_analytic_mle>  s     2z$TestLogLaplace.test_fit_analytic_mleN)
r   r   r   rS  rV  r   r   r   r  r  r/   r/   r/   r0   r     s   	

r  c                   @   s   e Zd Zejdddgdd Zejdddd	 Zejd
g dejdg dejdg dejddd e	ddgddD dd Z
dd Zdd Zdd ZdS ) TestPowerlawzx, a, sf)r$  rm   g      ?)g     ?g      p?gSQ>c                 C   s   t tj|||dd d S ro   )r   r3   powerlawr   )rc   rR   r-   r   r/   r/   r0   rS  \  s    zTestPowerlaw.test_sfr  r  c                 C   s   t jdS r   r  rf   r/   r/   r0   r   b  s    zTestPowerlaw.rngr   )rP   ri   r   r   rX   r   r  r  r  r  c                 C   s   g | ]}d |v r|qS r  r/   r  r/   r/   r0   r:   j  s   zTestPowerlaw.<listcomp>TFr   r  c           
      C   sp   t jjd||||d}t }	|r(||	d< |rDt| tj |	d< |rP||	d< tt j|fi |	ddi d S )Nr  )r   r-   rV   rW   r}   r   r   r   r   T)	r3   r  r   r   r[   	nextafterrX  r   r   r  r/   r/   r0   r   f  s    z(TestPowerlaw.test_fit_MLE_comp_optimizerc                 C   sT   d}d}d}t jj|||dtjdd}dt|d i}tt j|fi | d S )	Ng`- @rn   grߟA@rT   rv   )r-   rV   rW   r   r}   r   rX   )r3   r  r   r[   r   r   ptpr   )rc   r-   r  rW   r   r   r/   r/   r0   test_problem_case~  s    
zTestPowerlaw.test_problem_casec                 C   sh  t tj d}tt|d& tjjg dddd W d    n1 sF0    Y  d}tt|d$ tjjg ddd W d    n1 s0    Y  d}tt|d$ tjjg dd	d W d    n1 s0    Y  d
}tt|d$ tjjg ddd W d    n1 s0    Y  d}tt|d$ tjjg ddd W d    n1 sZ0    Y  d S )Nz7 Maximum likelihood estimation with 'powerlaw' requiresr   r   rX   r   r   r   r"  rX   r   r   z$Negative or zero `fscale` is outsidera  r  z0`fscale` must be greater than the range of data.)r   r3   r  r0  r    r   r   r1  r/   r/   r0   r!    s     
4224zTestPowerlaw.test_fit_warningsc                 C   sH   g d}t j}tjdd t|| W d    n1 s:0    Y  d S )N)r   r   rX   rX   r   r   r   r   r   r   rv   r  r  Zover)r3   r  r[   r$  r   )rc   r   r9   r/   r/   r0   test_minimum_data_zero_gh17801  s    z+TestPowerlaw.test_minimum_data_zero_gh17801N)r   r   r   r   r   r   rS  r	  r   r%   r   r  r!  r  r/   r/   r/   r0   r  Y  s$   


r  c                   @   st   e Zd Zejdg ddd Zejdddgdd	 Zejdg d
dd Zejdg ddd Z	dS )TestPowerLogNormzx, c, s, ref))rT   r  r   ga!R()r  r  r   g;?)r  r  r   gE?)MDr  r   g=c                 C   s   t tj||||dd d S ry   )r   r3   r   r   rc   rR   rL  rE   r:  r/   r/   r0   rS    s    zTestPowerLogNorm.test_sfzq, c, s, ref)g?r  r   rk   )gR4-r  r   rw   c                 C   s   t tj||||dd d S )Ng|=rq   )r   r3   r   rT  )rc   r5  rL  rE   r:  r/   r/   r0   rV    s    zTestPowerLogNorm.test_isf))(,* Er  r   g?)r  r  r   gv6)r  r,  r   g+	94|7)r4  r,  r   g?c                 C   s   t tj||||dd d S )Ngt =rq   )r   r3   r   ra   r  r/   r/   r0   r    s    zTestPowerLogNorm.test_cdf))r  r  r   gS^Ռe9)@xDr  r   g0g;)g\)c=Hr  r   g7H7c                 C   s   t tj||||dd d S )NgAfc=rq   )r   r3   r   rZ   r  r/   r/   r0   r    s    zTestPowerLogNorm.test_pdfN)
r   r   r   r   r   r   rS  rV  r  r  r/   r/   r/   r0   r    s$   


r  c                   @   sZ   e Zd Zejdg ddd Zejdg ddd Zejdg d	d
d ZdS )TestPowerNormr  ))r  r   g| <)r  rX   ge()rT   r  g%!@6)r,  rk   gT;-c                 C   s   t tj|||dd d S ry   )r   r3   	powernormr   r  r/   r/   r0   rS    s    zTestPowerNorm.test_sfr  ))r  r  gĿ)gwJ?rT   g!X)rO  r  g缂U)rm  r  gͫ1@)r  rX   gD@)Jz5rv   gU!zYr@c                 C   s   t tj|||dd d S Nr  rq   )r   r3   r  rT  r  r/   r/   r0   rV    s    zTestPowerNorm.test_isf))ir  g.u	T9)rX   r  ?)rI  r  gsK-)r  r  gk8>)rI  r  g^u1-c                 C   s   t tj|||dd d S r  )r   r3   r  ra   r  r/   r/   r0   r    s    zTestPowerNorm.test_cdfN)	r   r   r   r   r   r   rS  rV  r  r/   r/   r/   r0   r    s   


r  c                   @   s>   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	dS )TestInvGammac                 C   s   t   t dt tjjddd}g d}t|| g d}tjj|dd}g dtjdd	gtj	d
dgtj	tj	dgf}t
||D ]\}}t|| qW d    n1 s0    Y  d S )Nr*  g(\O3@r  r  )g~?gCX&?g*7gS?gBqFq @)皙?@gffffff@)r  gEy?gў3oz?g^Yb?g,r?gOD@g2*Z@gFN8@)r.  r/  r0  r1  r3   r   r   r[   r   r   r   r   )rc   r  rL   r-   rR   r  r/   r/   r0   test_invgamma_inf_gh_1866   s    



z&TestInvGamma.test_invgamma_inf_gh_1866c                 C   s6   t dd}tj|d}tj|d}t|| d S )Ngr   r   )r[   rK  r3   r   ra   r   r   r  r/   r/   r0   rN  3  s    zTestInvGamma.test_cdf_ppfc                 C   sR   t jdkrtdd}ntdd}tj|d}tj|d}t||dd d S )N        rX   rT      r   r  rq   )	sysmaxsizer[   rK  r3   r   r   rT  r   r  r/   r/   r0   r  :  s    
zTestInvGamma.test_sf_isfa, ref)r   g70K6:)ra  gVMOuc                 C   s   t tj||dd d S ro   )r   r3   r   r?   rc   r-   r:  r/   r/   r0   test_large_entropyG  s    zTestInvGamma.test_large_entropyN)
r   r   r   r  rN  r  r   r   r   r  r/   r/   r/   r0   r    s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestFc                 C   s\   t jddgg}|D ]\}}}|j|jg|R  }qdd |D }dd |D }t|| d S )N)rX   r   r  c                 S   s&   g | ]\}}}|j |jg|R  qS r/   rZ   r-   r8   _f_argsr   r/   r/   r0   r:   ]  r;   z(TestF.test_endpoints.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r/   r/   r8   r  r  Z	_correct_r/   r/   r0   r:   ^  r;   )r3   frZ   r-   r   )rc   r   r  r  Z_correctanscorrectr/   r/   r0   rC  W  s    zTestF.test_endpointsc                 C   sX   t jj dddd\}}}}tt| tt| tt| tt|  d S )NrV        @r  r  )r3   r  r   r[   r  r  r/   r/   r0   test_f_momentsa  s
    zTestF.test_f_momentsc                 C   sT   t  8 t dt tjjdgd g ddd W d    n1 sF0    Y  d S )Nr*  rV  r   )rX   r   r  r  r  dfndfdr  )r.  r/  r0  r1  r3   r  rf   r/   r/   r0   test_moments_warningsi  s    
zTestF.test_moments_warningsc                 C   sD  t dgdgg}t ddg}tjj||dd\}}}}||d  gd }t|| d|d  || d  | |d d  |d  }t|| d| | d t d|d   |d	 t ||| d    }	t||	 d|d
| d  || d  |d |d d    }
||d	  |d  || d  }|
| }t|| d S )Nr   rV  r  r  r  rX   r   r  r  rv      )r[   r   r3   r  r   r  )rc   r  r  r  r  rE   rO   r  v2s2Zk2numZk2denZk2r/   r/   r0   test_stats_broadcasto  s"    
0
 
 zTestF.test_stats_broadcastN)r   r   r   rC  r  r  r  r/   r/   r/   r0   r  V  s   
r  c                   @   s   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	ejdg dejdddgddgddgg dg dgddgddggdgdgggdd Z
ejdddgddgddgg dg dgddgddggdgdgggdd Zdd ZdS )TestStudentTc                 C   s   t tjddgddg d S )Nrv   r  g?g?)r   r3   r  r2  rf   r/   r/   r0   test_rvgeneric_std  s    zTestStudentT.test_rvgeneric_stdc                 C   s   t tjjdddtjtjtjtjf t tjjddddtjtjtjf t tjjddddtjtjtjf t tjjdddddtjtjf t tjjd	d
dtjtjf t tjjdd
ddtjf t tjjdd
ddtjf t tjjdd
dd d S )Nr   r  )r\  r  )\(?rn   rX   gGz @g     i@r   r  gGz@r   g
ףp=
@)rn   gq    @)r   r3   r  r[   r   r   rf   r/   r/   r0   test_moments_t  s     zTestStudentT.test_moments_tc                 C   s*   g d}g d}t tj||dd d S )N)r   rX   r  rT   )g?@gTM]?ggY?U?rz   rq   r   r3   r  r?   )rc   r\  rL   r/   r/   r0   test_t_entropy  s    zTestStudentT.test_t_entropyzv, ref)rT   r  )ra  rL  c                 C   s   t tj||dd d S r  r  )rc   r  r:  r/   r/   r0   test_t_extreme_entropy  s    z#TestStudentT.test_t_extreme_entropymethname)rZ   r   ra   r   r   rT  
df_infmaskr   r   )r   r   r   )r   r   r   c                 C   s   t jd t j|td}t jjdd|jd}t jj|j }t j||< t	j
|ddd}t	j
||  ddd}t	jddd}t||}t||}	t||}
||}t|| |
||  t||  |	||   d S )	Nr   r   rS   r   r   r   r\  rV   rW   rU   )r[   r   r   r   boolr0  r  randnr   r3   r  r  r   r   )rc   r  r  r\  rR   Zt_distZ
t_dist_refZ	norm_distZt_methZ
t_meth_refZ	norm_methr   r/   r/   r0   test_t_inf_df  s    



zTestStudentT.test_t_inf_dfc                 C   s  t jd t j|td}t jjdd|jd}t j||< tj	j|dddd}tj
jdddd	}tj	j||  dddd}td
D ]2}t|| | ||  t|| |  ||  qtj	j|ddd}tj
jddd}tj	j||  ddd}t|| | t||  | d S )Nr   r  rS   r   r   r   r  )r\  rV   rW   r  rV   rW   r  r   r  rU   )r[   r   r   r   r  r0  r  r   r3   r  r  r  r   r?   )rc   r  r\  r   Z
res_ex_infZres_ex_noinfr  r/   r/   r0   test_t_inf_df_stats_entropy  s"    
z(TestStudentT.test_t_inf_df_stats_entropyc                 C   sT   g d}g d}g d}g d}t tj|||dd t tj|||dd d S )N)r   rX  rS   r   )ra  d~QJr  r   )gZ_2g9g!ǟuIgdg)g73?r   gմFhAW;gm0_?r  rq   )r   r3   r  r   rZ   )rc   rR   r\  Z
logpdf_refZpdf_refr/   r/   r0   test_logpdf_pdf  s    zTestStudentT.test_logpdf_pdfN)r   r   r   r  r  r  r   r   r   r  r  r  r  r/   r/   r/   r0   r    s.   



r  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestRvDiscretec                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestRvDiscrete.setup_methodc                 C   s   g d}g d}d}t jd||fd}|j|d}tt|tj t||D ],\}}ttt	||kt
| | dk  qL| }tt|tjsJ d S )N)r   r   r   rX   r   r   )rn   r4  r  rn   r4  rn   rw   sample)namevaluesr   rm  )r3   r<   r   r   r  r  r  r   r   r%  r   r[   r   r   integer)rc   ZstatesZprobabilitysamplesr<  rR   rE   r-  r/   r/   r0   r	    s    &zTestRvDiscrete.test_rvsc                 C   sr   t g d}tjg d|fd}tt|| }| }t|| tjg dg dfd}| }t|d d S )N)r$  rf  r4  ra  r  )r  r   r   rn   )	r[   r   r3   r<   r%  r   r?   r   r   )rc   ro  r-  r'  r(  r/   r/   r0   r)    s    
zTestRvDiscrete.test_entropyc                 C   sT   g d}g d}t j||fd}ddgddgg}t||dd	gd
dggdd d S )Nr  ri   r4  ru  r  r  r  r  rX   ri   ru  rn   r4  r  r~   )r3   r<   r   r  )rc   xkpkr.  rR   r/   r/   r0   r#    s    
zTestRvDiscrete.test_pmfc                    sd   g d}g d}t j||fd g d}g d}t ||dd t fdd	|D |dd d S )
Nr  r  r  )r   r  r  rk  rm   r  r   rv   )r   ri   ri   ri   r   r   r   r   r  r~   c                    s   g | ]}  |qS r/   )ra   )r8   rM  r.  r/   r0   r:     r;   z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r3   r<   r   ra   )rc   r  r  Zx_valuesrL   r/   r  r0   r    s    zTestRvDiscrete.test_cdfc                    sd   g d}g d}t j||fd g d}g d}t ||dd t fdd	|D |dd d S )
Nr  r  r  )rP   ri   rD  r   r   r  )r   r   rX   rX   r   r   r  r~   c                    s   g | ]}  |qS r/   )r   )r8   r5  r  r/   r0   r:   '  r;   z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r3   r<   r   r   )rc   r  r  Zq_valuesrL   r/   r  r0   r    s    zTestRvDiscrete.test_ppfc                 C   sN   g dg df}t j|d}t|||jd d d |jdd   d S )N)r   rX   r   rQ  r  )rP   ru  r4  r4  rP   r  r   r  r   )r3   r<   r   r   ra   r  )rc   r  r.  r/   r/   r0   test_cdf_ppf_next*  s
    z TestRvDiscrete.test_cdf_ppf_nextc                 C   s`   t dd}t g dg dg dg}tj||fd}t| t |j	|j
 dd d S )Nr  )r   r   )rP   rP   r|  rm  )rP   rP   rm  rm  r  r  r~   )r[   r   r  r   r3   r<   r   r   r%  r  r  rc   r  r  r.  r/   r/   r0   test_multidimension2  s    
z"TestRvDiscrete.test_multidimensionc                 C   s   g d}ddg}t ttjfi t||fd g d}t ttjfi t||fd g d}g d}t ttjfi t||fd g d}g d}t ttjfi t||fd ddg}ddg}t ttjfi t||fd d S )Nr   ri   r  )ri   333333?gffffff濩r   rX   r   r   rv   )r4  r4  r4  r4  rT  r   )r0  r   r3   r<   r   rc   r  r  r/   r/   r0   test_bad_input;  s    zTestRvDiscrete.test_bad_inputc                 C   s   t ddt dd }}tttjfi t||fd t ddt dd }}tttjfi t||fd t ddt dd }}t	tj||fd
dd d S )	Nr   rX   rX   rX   r   gUUUUUU?r  r  r   rX   r   )r[   r   r  r  r0  r   r3   r<   r   r   r  r   r/   r/   r0   test_shape_rv_sampleO  s    z#TestRvDiscrete.test_shape_rv_samplec                 C   sD   g d}g d}t j||fd}t| t|j|j dd d S )N)r   rX   r   r  rQ  rV  )rP   ru  ru  ru  ru  rP   r  r  r~   )r3   r<   r   r   r[   r%  r  r  r  r/   r/   r0   test_expect1^  s    zTestRvDiscrete.test_expect1c                 C   s   g d}g d}t j||fd}t| | dd t| tdd t||D dd t|dd	 td
d t||D dd d S )N)/g      i@g     r@g      y@g     @@g     @g     @      @g      @rX  g     0@g     @g     P@g     @g     p@g      @g     @g      @g     @r  g     h@g     0@g     @g     @g     @g     P@g     @g     @g     @r  g     8@g      @g     ȩ@g     @g     X@g      @g     @g     @g     x@g     @@g     @g     h@g     ̰@g     0@g     @g     @g     \@g     @)/g-C6:?rn   gF%uk?g:vz?rn   rn   g.nr?g|гY?rn   rn   rn   g @6*? 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?rn   g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?rn   rn   g N@s?g 1w-!_?r  gൄ|г?rn   gH}}?rn   g
F%u?rn   rn   g ^)ˀ?g v?rn   r  r  r~   c                 s   s   | ]\}}|| V  qd S re   r/   r8   r  wr/   r/   r0   	<genexpr>  r;   z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c                 S   s   | d S NrX   r/   r   r/   r/   r0   rF     r;   z-TestRvDiscrete.test_expect2.<locals>.<lambda>c                 s   s   | ]\}}|d  | V  qdS )rX   Nr/   r	  r/   r/   r0   r    r;   )r3   r<   r   r   r   r%  r   )rc   r  pyr.  r/   r/   r0   test_expect2e  s    zTestRvDiscrete.test_expect2N)r   r   r   r   r	  r)  r#  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s   	r  c                   @   s   e Zd Zdd Zdd ZdS )TestSkewCauchyc                 C   sl   t ddd}ttjj|ddtj| ttjj|ddtj| ttjj|ddtj| d S Nr  rv   rT   r   r  )	r[   r  r   r3   
skewcauchyrZ   r  ra   r   rU  r/   r/   r0   test_cauchy  s    


zTestSkewCauchy.test_cauchyc                 C   s   t jd t jdd d }t jdd d }g d}g d}ttj||| ttj||| ttj	||| d S )Nr   rS   rX   r   rv   )
g& 45?gQʶ?g-4<??gJ?gw@v?gJ%?g>[u?g
a2?g	Rn?gѦ}cي?)
gN@Q?gPPz@	?g?g;
7?glg?g!?%?gQҙ?gC"?go?g@Sg?)
r[   r   r   r  r   r3   r  rZ   ra   r   )rc   r-   rR   rZ   ra   r/   r/   r0   test_skewcauchy_R  s    z TestSkewCauchy.test_skewcauchy_RN)r   r   r   r  r  r/   r/   r/   r0   r    s   	r  c                   @   s<   e Zd Zdd Zejdd Zejdg ddd Z	d	S )
TestJFSkewTc                 C   s   d }}|d }g d}g d}t ||}t |}t|||| t|||| t|||| t| d| d d S )Nrv   rX   )rP  rn   r  rm   )rn   rP   r$  r   r   r  r  )r3   	jf_skew_tr  r   rZ   ra   r   )rc   r-   r.   r\  rR   r5  Zjfr  r/   r/   r0   test_compare_t  s    
zTestJFSkewT.test_compare_tc                 C   s$   t ttjd }t jj|ddS )a  Sample data points computed using the `ST5` distribution from the
        GAMLSS package in R. The pdf has been calculated for (a,b)=(2,3),
        (a,b)=(8,4), and (a,b)=(12,13) for x in `np.linspace(-10, 10, 41)`.

        N.B. the `ST5` distribution in R uses an alternative parameterization
        in terms of nu and tau, where:
            - nu = (a - b) / (a * b * (a + b)) ** 0.5
            - tau = 2 / (a + b)
        z"data/jf_skew_t_gamlss_pdf_data.npyz	x,pdf,a,bnames)r[   loadr   __file__parentrec
fromarraysr  r/   r/   r0   gamlss_pdf_data  s    zTestJFSkewT.gamlss_pdf_dataza,b)r  )r  r   )r     c                 C   sN   ||d |k|d |k@  }|d |d  }}t |t|||dd dS )zCompare the pdf with a table of reference values. The table of
        reference values was produced using R, where the Jones and Faddy skew
        t distribution is available in the GAMLSS package as `ST5`.
        r-   r.   rR   rZ   rZ  rq   N)r   r3   r  rZ   )rc   r  r-   r.   r   rR   rZ   r/   r/   r0   test_compare_with_gamlss_r  s
    z&TestJFSkewT.test_compare_with_gamlss_rN)
r   r   r   r  r   r	  r  r   r   r   r/   r/   r/   r0   r    s
   
r  rX   rv   g@r   gףp=
1@r   gRZ@i   gS㥛Ԋ@rP   rQ   g&@iQ i'  i0ybi l   HO1Z i3ra  irS   irT   ikr,  i1rx   i  i4i N  i(  lEI. @ i c                   @   sj   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdedd Zdd Zdd ZdS )TestSkewNormc                 C   s   t d| _d S r   )r   r   rf   r/   r/   r0   r     s    zTestSkewNorm.setup_methodc                 C   s0   t ddd}ttjj|ddtj| d S r  )r[   r  r   r3   skewnormrZ   r  rU  r/   r/   r0   test_normal  s    
zTestSkewNorm.test_normalc                 C   sH   d}t jjd|| jd}t||j t jjd|| jd}t||j d S )N)r   r   rv   r   )r-   r   r}   ra  )r3   r$  r   r   r   r  )rc   r  rR   r/   r/   r0   r	    s
    zTestSkewNorm.test_rvsc                 C   s   t jjdtddd| jd}t|t|t |t 	|g}t jj ddddd}t
||dd t jjd	tddd| jd}t|t|t |t 	|g}t jj d	dddd}t
||dd d S )
Nr   r  rv   rX   )r-   r   rV   rW   r}   r  )r-   rV   rW   r  r  rJ  )r3   r$  r   r  r   r[   r   r  r  kurtosisr   )rc   XrL   r  r/   r/   r0   r  "  s    $$zTestSkewNorm.test_momentsc                 C   s^   g dg dg dg dg dg dg dg}|D ]&\}}}t j||}t||dd	 q2d S )
N)r  r   gEAV)r  r   gV|@$a)r  r   g0rY)r  ri   Zk)rt  r   r(  )r   r  ļ)rX   g    cr)  r  rq   )r3   r$  r   r   )rc   Z
logpdfvalsrR   r-   Z	logpdfvalr  r/   r/   r0   test_pdf_large_x/  s    	zTestSkewNorm.test_pdf_large_xc                 C   sF   t jg dd}t|tddd t jdd}t|ddd d S )	N)rS   r  r   r   r   r  rq   r  r  r  )r3   r$  ra   r   r[   onesrB  r/   r/   r0   test_cdf_large_x?  s    zTestSkewNorm.test_cdf_large_xc                 C   sr   g dg dg dg dg dg}|D ]F\}}}t j||}t||dd t j| | }t||dd q&d S )N)r  r   gzbLe9)rJ  rX   gn'/2;)r   rv   g::)r}  r   g|<)r  rJ  r  r  rq   )r3   r$  ra   r   r   )rc   ZcdfvalsrR   r-   Zcdfvalr-  r/   r/   r0   test_cdf_sf_small_valuesH  s    z%TestSkewNorm.test_cdf_sf_small_valuesz
a, momentsc                 C   s6   t |ddD ]$\}}tj||}t||dd qd S )Nr   )startr  rq   )r{  r3   r$  r  r   )rc   r-   r  orderrL   r  r/   r/   r0   test_noncentral_momentsY  s    z$TestSkewNorm.test_noncentral_momentsc           %      C   s$  t jd}d\}}}t|||}|jd|d}tjj|ddd\}}}	tjj|ddd\}
}}||  krvdks|n J ||
ksJ tjj|ddd	d
\}}}|dksJ t|||}|jdd}t |t|f}t	|| tj
jdd|d}tj|}t t |sJ tjj|d	d\}}}t |s@J t |t | }}t	|||t dt j    t	||d ddt j    tjj|dd\}}}tjj| dd\}}}t	|||g| | |g tjj|d	d\}} }!tjj| d	d\}"}#}$t	|"|#|$g| |  |!g d S )Nl   #ke )r   r  ri   rT   r   ry  r   r   gmmr   methodmsr  r   r3  rX   mle)r[   r   r   r3   r$  r   r   r   r  r   r  r   r  isinfr  r  r\   )%rc   r   r-   rV   rW   r9   r   a2loc2scale2a3loc3scale3Za4loc4scale4dist4r   r:  r   Za5Zloc5Zscale5r  r  Za6pZloc6pZscale6pZa6mZloc6mZscale6mZa7pZloc7pZscale7pZa7mZloc7mZscale7mr/   r/   r0   r  _  s8    

zTestSkewNorm.test_fitc           	         s   t g dddg  dg }tj|}tj||}tjj|dd}tj||}||d k sfJ t jd d	d
dd} fdd}tjtj|||d}t jj	||j
dd d S )N)r  r   r  r  r   rv   T)Zsuperfitri   l   y
ND )r  rv   )r  rS   )r8  rS   r-   rV   rW   c                    s   t | | dS )N)r   )r$   )Zfunr   r   r/   r0   	optimizer  s    z0TestSkewNorm.test_fit_gh19332.<locals>.optimizer)rC  r^  rq   )r[   r   r3   r$  r   r   r   r   testingr   params)	rc   rR   rE  r   Zparams_superr:  r   rC  Z
fit_resultr/   rB  r0   test_fit_gh19332  s    zTestSkewNorm.test_fit_gh19332N)r   r   r   r   r%  r	  r  r*  r,  r-  r   r   r   _skewnorm_noncentral_momentsr0  r  rF  r/   r/   r/   r0   r#    s   	
0r#  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestExponc                 C   s   t tjdd d S rA  )r   r3   r5  rZ   rf   r/   r/   r0   	test_zero  s    zTestExpon.test_zeroc                 C   s0   t tjdd t tjtjdd d S )Nr  r  )r   r3   r5  ra   rT  r   rf   r/   r/   r0   	test_tail  s    zTestExpon.test_tailc                 C   s,   t dddddt jg}tttjj| d S No_?46@yX5ͻ@j+?UX@)r[   r   r   r0  r   r3   r5  r   rU  r/   r/   r0   test_nan_raises_error  s    zTestExpon.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rK  )r[   r   r   r0  r   r3   r5  r   rU  r/   r/   r0   test_inf_raises_error  s    zTestExpon.test_inf_raises_errorN)r   r   r   rI  rJ  rQ  rR  r/   r/   r/   r0   rH    s   rH  c                   @   s>   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	dS )TestNormc                 C   s,   t dddddt jg}tttjj| d S rK  )r[   r   r   r0  r   r3   r  r   rU  r/   r/   r0   rQ    s    zTestNorm.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rK  )r[   r   r   r0  r   r3   r  r   rU  r/   r/   r0   rR    s    zTestNorm.test_inf_raises_errorc                 C   s    g d}t ttjj|dd d S )Nr   shrimp)plate)r0  r   r3   r  r   rU  r/   r/   r0   test_bad_keyword_arg  s    zTestNorm.test_bad_keyword_argrV   r   r   c                 C   s^   d}t jjd| d| |d}t||dd t jjd|  d|  | d}t||dd d S )Ngg	{F.:rV  r  rV   rz   rq   )r3   r  
_delta_cdfr   )rc   rV   rL   r  r/   r/   r0   test_delta_cdf  s
     zTestNorm.test_delta_cdfN)
r   r   r   rQ  rR  rV  r   r   r   rY  r/   r/   r/   r0   rS    s
   rS  c                   @   s    e Zd ZdZdd Zdd ZdS )TestUniformgh-10300c                 C   s,   t dddddt jg}tttjj| d S rK  )r[   r   r   r0  r   r3   r0  r   rU  r/   r/   r0   rQ    s    z!TestUniform.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rK  )r[   r   r   r0  r   r3   r0  r   rU  r/   r/   r0   rR    s    z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__rQ  rR  r/   r/   r/   r0   rZ    s   rZ  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	g d
dd Z
ej	dg dg dg dg dg dgdd Zej	dg dg dg dg dg dg dgdd ZdS )TestExponNormc                 C   s   dd }d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d	\}}}d||  }t jj |||dd}t||||| d S )
Nc                 S   sh   dd| | d   }d| | d  |d  }dd| | d  d  }|d|   || d| |    ||gS )Nr  r   rX   r   ry        @r   r/   )lamsigr}  ZopK2Zexp_skewZexp_kurtr/   r/   r0   get_moms  s    z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   r  r  r  )ra  rX   rP   )r   r   r   )r  rV  r  )r3   	exponnormr   )rc   ra  r}  r`  r_  Kstsr/   r/   r0   r    s"    



zTestExponNorm.test_momentsc                 C   s2   t dddddt jg}tttjj|ddd d S 	NrL  rM  rN  rO  rP  r   r   r"  )r[   r   r   r0  r   r3   rb  r   rU  r/   r/   r0   rQ    s    z#TestExponNorm.test_nan_raises_errorc                 C   s2   t dddddt jg}tttjj|ddd d S re  )r[   r   r   r0  r   r3   rb  r   rU  r/   r/   r0   rR    s    z#TestExponNorm.test_inf_raises_errorc                 C   sT   t tjddd t tjddd t tjddd t tjddd d S )Ni|r   rn     rk   )r   r3   rb  rZ   rf   r/   r/   r0   test_extremes_x  s    zTestExponNorm.test_extremes_xzx, K, expected))r  rk   g6
N-)r   rk   g՜n+H?)r   rk   gi?)rI  rk   gbJI-)rS   r   gI8?)rS   r^  gQ3|-0?c                 C   s   t tj|||dd d S r  )r   r3   rb  rZ   )rc   rR   rc  rL   r/   r/   r0   test_std_pdf  s    zTestExponNorm.test_std_pdfzx, K, scale, expected)r   rk   r   gVAҤ?)r  {Gzt?r   g'^>)r  rk   rT   rn   )r  rk   rw   gbr ;)rv   r  r   gVMe?c                 C   s:   t jj|||d}|dkr(|dks6J nt||dd d S )Nr  rn   rz   rq   )r3   rb  ra   r   rc   rR   rc  rW   rL   r-  r/   r/   r0   test_cdf_small_K5  s    zTestExponNorm.test_cdf_small_K)rS   rk   r   ghG}$;)rX   ri  r   g]fJ?)rv   ri  ri   g31"g#;)rS   ri  ri   gf
+-)r  ri  ri   rn   )ra  r  r   ga9S?c                 C   s:   t jj|||d}|dkr(|dks6J nt||dd d S )Nr  rn   -a=rq   )r3   rb  r   r   rj  r/   r/   r0   test_sf_small_KN  s    zTestExponNorm.test_sf_small_KN)r   r   r   r  rQ  rR  rg  r   r   r   rh  rk  rm  r/   r/   r/   r0   r]    s6   

r]  c                   @   sP   e Zd Zdd Zdd Zejdg ddd Zejdg d	d
d Z	dS )TestGenExponc                 C   s@   ddl m} tjtdddddd}t||dddd d S )	Nr   )simpsonrS   rk   ri   rm   )Zdxr   )scipy.integratero  r3   genexponrZ   r  r   r   )rc   ro  r-  r/   r/   r0   test_pdf_unity_area^  s    z TestGenExpon.test_pdf_unity_areac                 C   s:   t jtdddddd}ttd|k|dk@  d S )Nr   rS   rk   ri   rm   r   )r3   rq  ra   r  r   r   r   )rc   ra   r/   r/   r0   test_cdf_boundsd  s    zTestGenExpon.test_cdf_boundszx, p, a, b, c))r   gM <r   rX   rk  )r$  g%DYY?ri   rX   r   )r$  gS4z?      #@rX   ri   )rk   ga^5?r  r$  ri   )r  gs%)?r  r$  ri   )r  gdm?r$  rv   ri   c                 C   sD   t j||||}t||dd t j||||}t||dd d S r  )r3   rq  r   r   rT  )rc   rR   r-  r-   r.   rL  r   rT  r/   r/   r0   r  t  s    zTestGenExpon.test_sf_isf))r$  g;\i?ri   rX   r   )r$  gu0?rt  rX   ri   )rk   g-%I?r  r$  ri   )r  g]d?r  r$  ri   )r  g泩'?r$  rv   ri   c                 C   sD   t j||||}t||dd t j||||}t||dd d S r  )r3   rq  ra   r   r   )rc   rR   r-  r-   r.   rL  ra   r   r/   r/   r0   rN    s    zTestGenExpon.test_cdf_ppfN)
r   r   r   rr  rs  r   r   r   r  rN  r/   r/   r/   r0   rn  ]  s   
rn  c                   @   s   e Zd Zdd ZdS )TestTruncexponc                 C   sL   ddg}ddg}ddg}t tj|||dd t tj|||d	d d S )
Nr  rT   g_93@gBX@g,M<gǃ@֫5gLa㧝=rq   rZ  )r   r3   
truncexponr   rT  )rc   r.   rR   r:  r/   r/   r0   r    s
    zTestTruncexpon.test_sf_isfN)r   r   r   r  r/   r/   r/   r0   ru    s   ru  c                   @   s   e Zd Zdd ZdS )TestExponpowc                 C   s6   t tjddd t tjtjdddd d S )NrG  rm   r  rv   r   )r   r3   exponpowra   rT  r   rf   r/   r/   r0   rJ    s    zTestExponpow.test_tailN)r   r   r   rJ  r/   r/   r/   r0   rw    s   rw  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestSkellamc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nr  r   r  )gYjP'?g$S?gQ`s2?gC/qF?gD<]Y?g/Xj?g86y?g]a¨?g:?g?gQ>?g?g:?g]a¨?g96?g0X?gA<]?gB/q?gQ`s?g$S?gYjP'?gX_?g+rx?gfSr?gJXx~?r  )r  r   r   r   r3   skellamr  )rc   rO   mu1mu2ZskpmfRr/   r/   r0   r#    s    zTestSkellam.test_pmfc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nr  r   r  )gƃQ?gS`X'?gVy)>?g:	 S?gei.f?gȼJ]x?g)?g{^'+i?gLIg>?gnZ?g?rvͪ?gA?g0?g#J?gqSm
.?g~B?gd?gFBD?gQ9?gmF^?gcMy?gGJq?gC^c?g.){?gñݸ?rv   r  )r  r   r   r   r3   rz  ra   )rc   rO   r{  r|  ZskcdfRr/   r/   r0   r    s    zTestSkellam.test_cdfc                 C   sB   d\}}}t tj|||ddd t tj|||ddd d S )N)r   r   gs1Cr   r8  r~   r   )r   r3   rz  r  ra   )rc   rR   r{  r|  r/   r/   r0   test_extreme_mu2  s    
zTestSkellam.test_extreme_mu2N)r   r   r   r#  r  r}  r/   r/   r/   r0   ry    s   ry  c                   @   s   e Zd Zdd Zdd Zejdddd Zej	d	d
dgej	dg dej	dg dej	ddd e
dddD ejdddd Zdd ZdS )TestLognormc                 C   sX   t  < t dt tjg dd}t|g d W d    n1 sJ0    Y  d S )Nr*  r   ri   r   r   )rn   g~r?g e3E?)r.  r/  r0  r1  r3   r   rZ   r   rc   rZ   r/   r/   r0   r    s    
zTestLognorm.test_pdfc                 C   sn   d\}}}t tjj|| |dtjt|| |  t tjj|| |dtjt|| |  d S )N)g(\5i@   gOn?rD   )r   r3   r   r   r  r[   rG  r  )rc   r  r}  sigmar/   r/   r0   r    s    
zTestLognorm.test_logcdfr  r  c                 C   s   t jdS r   r  rf   r/   r/   r0   r     s    zTestLognorm.rngr   rP   rX   r   )r   r   rX   r  )ru  r   rv   r  c                 C   s   g | ]}d |v r|qS r  r/   )r8   er/   r/   r0   r:     s   zTestLognorm.<listcomp>)FTr   r  r  r  c           
      C   s^   t jjd||||d}i }	|r&||	d< |r2||	d< |r>||	d< tt j|fi |	ddi d S )NrT   )r   rE   rW   rV   r}   r   r   r   r   T)r3   r   r   r   r  r/   r/   r0   r     s    	z'TestLognorm.test_fit_MLE_comp_optimizerc                 C   s0   d}g d}g d}t tj|||dd d S )NgI+?)rP   g|=gҶOɃ;gk3;9"7)g?y+@g~K8ax@gƶ@g9]Ar  rq   )r   r3   r   rT  )rc   rE   r5  r:  r/   r/   r0   rV    s    zTestLognorm.test_isfN)r   r   r   r  r  r   r	  r   r   r   r%   r[   r$  r   rV  r/   r/   r/   r0   r~    s   


r~  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zejj	e
d	d
dd Zejj	e
d	d
dd Zejj	e
d	d
dd Zdd Zejjedd
dd Zejdejjejjgejdddgdd Zejdg ddd Zejd g d!d"d# Zd$S )%TestBetac                 C   s:   t jddd}t|d t jddd}t|tj d S )Nr   r   ri   g;B.)r3   r  r   r   r[   r   rc   r   r/   r/   r0   r    s    
zTestBeta.test_logpdfc                 C   sV   d\}}t g d}t||}t|| d t||t || d S )Ni  i  ru  ri   rD  gƒ)	r[   r   r3   r  r   r   r%  rZ   r   rc   r   r  rR   r.   r/   r/   r0   test_logpdf_ticket_1866  s
    z TestBeta.test_logpdf_ticket_1866c                 C   s$   g d}t ttjj|dddd d S )NrP   ri   rD  r   r   rT  )r   r   rU  )r0  r   r3   r  r   rU  r/   r/   r0   test_fit_bad_keyword_args  s    z"TestBeta.test_fit_bad_keyword_argsc                 C   s"   g d}t ttjj|ddd d S )Nr  ri   )fafix_a)r0  r   r3   r  r   rU  r/   r/   r0   #test_fit_duplicated_fixed_parameter"  s    z,TestBeta.test_fit_duplicated_fixed_parameterzOverflow, see gh-14901reasonc                 C   s$   d\}}}t tj|||d d S )N)g?g     R@g   0xAgx)>)r   r3   r  r   )rc   r-  r-   r.   r/   r/   r0   test_issue_12635(  s    	
zTestBeta.test_issue_12635c                 C   sh   t g d}t g d}d}tj||d d| }t|| tj||d d| }t|| d S )N)g@3@?g^?gNC?)rS   rT   rw   r  r   r   )r[   r   r3   r  rT  r   r   )rc   Zinv_RZ
count_listr-  invr   r/   r/   r0   test_issue_127944  s    
zTestBeta.test_issue_12794c           	      C   sb   d}t dd}d}d| |d ||   }}}tj|||}tj|||}t|d|  d S )Nh㈵>r   r  r   )r[   r   r3   r  r   ra   r   )	rc   Zalpha_2Zcount_Znobsr5  r-   r.   r  r   r/   r/   r0   test_issue_12796F  s    zTestBeta.test_issue_12796c                 C   s   d\}}t tjd||tj d\}}t tjd||tj d\}}t tjd||d t tjd||d d\}}t tjd||d t tjd	||d d S )
Nr  r   )ru  r   r   )r   rv   rv   +ph  )rv   r   r  )r   r3   r  rZ   r[   r   )rc   r-   r.   r/   r/   r0   rC  R  s    zTestBeta.test_endpointszDoes not convert boost warningc                 C   sH   d\}}}t t  tj||| W d    n1 s:0    Y  d S )N)gףp=
?g   vH7B  @0B)r   warnsr1  r3   r  r   )rc   r5  r-   r.   r/   r/   r0   test_boost_eval_issue_14606i  s    
z$TestBeta.test_boost_eval_issue_14606r3  a, b)r        )@)r  r  c                 C   s,   d}z|||| W n t y&   Y n0 d S )Nr   )OverflowError)rc   r3  r-   r.   r-  r/   r/   r0    test_beta_ppf_with_subnormal_a_bo  s
    z)TestBeta.test_beta_ppf_with_subnormal_a_brC  ))ri   ri   gο)r  r   g )r   r^  g&׾k )r   r   g*)Mc                 C   s   t t|| | d S re   r   r3   r  r?   rJ  r/   r/   r0   r)    s    zTestBeta.test_entropyza, b, ref, tol))r   rS   gCpr  )rS   r  g8EOrz   )g    NAg    NAg(4Fr  )g    SAg   SAg8TAUr  )r`  g   _Bg[VVuD&r  )r  r  gR#Lrp   )rX   r`  g?r5r  )rX   r  <Fr  )rX   r  guRTc\r  )rv   r`  gL4rG  )rv   r  6Er  )rv   r  g.fq>\r  )rS   r`  gnQc}4r  )rS   r  g{C Er  )rS   r  %\r  )r  rX   r  r  )r  rv   r  r  )r  rS   r  r  c                 C   s   t t|| ||d d S r  r  )rc   r-   r.   r:  r  r/   r/   r0   rM    s    $zTestBeta.test_extreme_entropyN)r   r   r   r  r  r  r  r   r   skipifMACOS_INTELr  r  r  rC  xfailr   r  r   r3   r  r   rT  r  r)  rM  r/   r/   r/   r0   r    s2   



 
r  c                   @   s   e Zd Zg dZdd Zdd Zejdg ddd	 Z	ejd
edd Z
ejdeg d dd Zejdddgdd Zdd Zdd Zdd ZdS )TestBetaPrime))r        Y@rm  D>?)r`  r  rm  m嗽?)r   rm  rP   gPK?)r   r  rm  g%p?)rG  rm  rP   g#|/?)rG  rk  rk  gsM
<)rG  rm  r  $5Є*?)^ 9^;rm  rP   gompP?)r  rk  rk  g7j"!9)r  rm  r  z^J?)r	  rm  rP   gܷ"+>)r	  rk  rk  grNs: )r	  rm  r  gK>c                 C   sZ   d\}}t g d}t||}tt ||  t|	|t 
|| d S )Nr  r  )r[   r   r3   r   r   r  r   r   r   rZ   r   r  r/   r/   r0   r    s
    zTestBetaPrime.test_logpdfc                    s   t jddd}t|d d\ tg d}t j| }tt|  t j	j
 fdd|D }t||dd	d
 d S )Nr   ru  r4  rn   r  r  c                    s   g | ]}t j| qS r/   )r3   r   )r8   r  r   r  Zgen_cdfr/   r0   r:     r;   z*TestBetaPrime.test_cdf.<locals>.<listcomp>-=r  )r3   r   ra   r   r[   r   r   r  r   r=   Z_cdf_singler   )rc   rR   ri  Zcdfs_gr/   r  r0   r    s    
zTestBetaPrime.test_cdfzp, a, b, expected))rk         ?r  gV)?)rZ  r  r  gWJB9*=)r  r  r  gOG J<)r  r$        @gΣ01)      ?r$  r  g8ǘ`?)>q?rm  rP   gMDc                 C   s"   t j|||}t||dd d S r  )r3   r   r   r   )rc   r-  r-   r.   rL   rR   r/   r/   r0   r    s    
zTestBetaPrime.test_ppfz
x, a, b, pc                 C   s   t tj||||dd d S r  )r   r3   r   r   )rc   rR   r-   r.   r-  r/   r/   r0   test_ppf_gh_17631  s    zTestBetaPrime.test_ppf_gh_17631zx, a, b, expected))r`  rk  rk  r  )r`  rm  rP   gV[?)r  rm  rP   r  c                 C   s   t tj||||dd d S r  )r   r3   r   ra   )rc   rR   r-   r.   rL   r/   r/   r0   test_cdf_gh_17631  s    zTestBetaPrime.test_cdf_gh_17631)r  rm  rP   g%?)r  r  rm  goXr?c                 C   s.   t j|||}|dk sJ t||dd d S )Nr  gh㈵>rq   )r3   r   ra   r   )rc   rR   r-   r.   rL   r  r/   r/   r0   test_cdf_extreme_tails  s    z$TestBetaPrime.test_cdf_extreme_tailsc                 C   sB   g d}g d}g d}g d}t j|||}t||dd d S )N)rv   r   rX   rm  rm  rm  rm  r  r  rm  rm  rm  rk  rk  )r   rX   r   rP   rP   rP   rP   rm  rm  r  r  r  rk  rk  )r`  r  ꌠ9Y>)Fr  rG  r  r	  r  r`  rG  r  r	  r`  rG  )g/:g  U/7gKH9g<![a?gw 4?g)J?g5?r  r  r  r  g%?gsM
<r  rZ  rq   )r3   r   r   r   )rc   r-   r.   rR   r:  Z	sf_valuesr/   r/   r0   rS  )  s    zTestBetaPrime.test_sfc                 C   s.   t jjg dddd t jddd d d S )N)rP   r$  r4  r  皙?r   r   r"  r  r  )r3   r   r   rf   r/   r/   r0   test_fit_stats_gh18274>  s    z$TestBetaPrime.test_fit_stats_gh18274c                 C   s.   t jdg}tdddgd}t|| d S )NgooB?rX   r  gffffff@rv   )r[   r   r3   r   r  r   )rc   r:  r   r/   r/   r0   test_moment_gh18634E  s    
z!TestBetaPrime.test_moment_gh18634N)r   r   r   Zcdf_valsr  r  r   r   r   r  r  r  r  rS  r  r  r/   r/   r/   r0   r    s2   	




r  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
ej	dg ddd Zej	dg dej	dg dej	d	g dej	dddgej	dddgej	dddgdd ZdS )	TestGammac                 C   s<   t jjdddd}t|d t jjdddd}t|d d S )	NZ   i  ru  r  g
CTb?r   rS   gBΖ?)r3   r  rZ   r   r  r/   r/   r0   r  R  s    
zTestGamma.test_pdfc                 C   s   t jdd}t|d d S rA  )r3   r  r   r   r  r/   r/   r0   r  Z  s    zTestGamma.test_logpdfc                 C   s"   g d}t ttjj|ddd d S )Nr  r   rT  )r   rU  )r0  r   r3   r  r   rU  r/   r/   r0   r  `  s    z#TestGamma.test_fit_bad_keyword_argsc                 C   s@   t jtjdddddsJ t jtjdddd	ds<J d S )
Nr  r   gplC@r  r~   r  rT   g1}t@rz   )r[   iscloser3   r  rT  rf   r/   r/   r0   rV  d  s    
zTestGamma.test_isfrW   r  r  c                 C   s.   t jj|d |d d|d}t|ddd d S )N   r  r   r  g>S*rz   rq   )r3   r  rX  r   rc   rW   r  r/   r/   r0   rY  z  s    zTestGamma.test_delta_cdfza, ref, rtol))r^  gt.rp   )rX   r  rp   )rT   gX>k-־@rz   )r  gwM7@rp   )g NgmCg%og$6@rp   )ra  oܘ#]@rp   c                 C   s   t tj|||d d S r  )r   r3   r  r?   )rc   r-   r:  rr   r/   r/   r0   r)    s    zTestGamma.test_entropyr-   )rk   r   r  rV   )rk   r   r  r  TFr   r  c                 C   s6  t jd}tjj|||d|d}i }	|r2||	d< |r>||	d< |rJ||	d< dt|	 }
|
dkrd	}tjt	|d
( tjj
|fddi|	 W d    n1 s0    Y  d S tjj
|fddi|	}tj| }|
dkrt| t | |
dkrt|dt |d  |
dkr2t|dt |d  d S )Nr   rT   r!  r  r   r   r   r   r   r   r3  r1  r   rX   )r[   r   r   r3   r  r   r   r   r   r   r   r   r   r  )rc   r-   rV   rW   r  r   r  r   r   r   r  r%  thetar9   r/   r/   r0   test_fit_mm  s2    6


zTestGamma.test_fit_mmN)r   r   r   r  r  r  rV  r   r   r   rY  r)  r  r/   r/   r/   r0   r  Q  s"   


r  c                  C   s:   d} t jd| d  d| d  ddd}t|dd d S )	Nr  g;f?rX   r   r   rU   r  gV{q@)r3   r  r   rZ   )jitterZr/   r/   r0   test_pdf_overflow_gh19616  s    "r  c                   @   sj   e Zd Zdd Zejdg ddd Zejdg dd	d
 Zejdg ddd Z	dd Z
dS )
TestDgammac                 C   s~   t jd}d}|jd|d}|jd|d}tj||}tjt 	||d }t
|| t|}t
|||dd d S )Nl   OP($ rS   r  )r[  r   rX   r  rq   )r[   r   r   normalr0  r3   dgammarZ   r  r   r   )rc   r   r   rR   r-   r   r:  r9   r/   r/   r0   r    s    

zTestDgamma.test_pdfzx, a, expected))rI  r   ggrU>)rt  r   g$IC<)irv   g2Wj<)r  g~)A.=)rv   r   gf?c                 C   sx   t j||}t||dd t j||}t||dd t j| |}t||dd t j||}t|| dd d S r  )r3   r  ra   r   r   r   rT  )rc   rR   r-   rL   ra   r   r   rT  r/   r/   r0   test_cdf_ppf_sf_isf_tail  s    z#TestDgamma.test_cdf_ppf_sf_isf_tailr  ))rk  gmqn @)?g?)r  gx?c                 C   s   t tj||dd d S r  r   r3   r  r?   r  r/   r/   r0   r)    s    zTestDgamma.test_entropy))r	  rK  )rG  g>_)r  g5i)r  go@)r  g4Fa3@)ra  grO]@c                 C   s   t tj||dd d S rF  r  r  r/   r/   r0   test_entropy_entreme_values  s    z&TestDgamma.test_entropy_entreme_valuesc                 C   sL   t g d}tj|}tt|D ] }|| tj|| ks&J q&d S )N)r   rv   r  r  )r[   r   r3   r  r?   r  r   )rc   rR   r  r  r/   r/   r0   test_entropy_array_input  s    z#TestDgamma.test_entropy_array_inputN)r   r   r   r  r   r   r   r  r)  r  r  r/   r/   r/   r0   r    s   



r  c                   @   s6   e Zd Zdd Zdd Zejdg ddd Zd	S )
TestChi2c                 C   s4   t tjddddd t tjddddd d S )Nrw   gޞw1D?r  r  rT   g6:֜?r   r3   chi2rZ   rf   r/   r/   r0   r    s    zTestChi2.test_precisionc                 C   s|   d}t jd|}t|ddd t jd|}t|ddd d}t jd	|}t|d
dd t jd|}t|ddd d S )Nre  gλm:=6g'bd5 <rG  rq   ri   gQ8@r  gܐ؆0guu[9=rP   g8-*@)r3   r  r   r   )rc   r\  rR   r/   r/   r0   r  #  s    zTestChi2.test_ppfrW  ))r^  gܫ>)r   gƯʉ?)rT   gn>@)   g͔v0@)r  g9:3@c                 C   s   t t| |dd d S ry   )r   r3   r  r?   r[  r/   r/   r0   r)  ;  s    zTestChi2.test_entropyN)	r   r   r   r  r  r   r   r   r)  r/   r/   r/   r0   r    s   r  c                   @   s>   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	dS )TestGumbelLc                 C   s2   t dd}tj|}tj|}t|| d S Nr  rJ  )r[   r  r3   r  ra   r   r   r  r/   r/   r0   rN  G  s    zTestGumbelL.test_cdf_ppfc                 C   sH   t dd}tj|}tj|}t |}t| }t	|| d S r  )
r[   r  r3   r  rg  r  r   r   expm1r   )rc   rR   r  r  ur  r/   r/   r0   r  M  s    
zTestGumbelL.test_logcdf_logsfc                 C   s2   t dd}tj|}tj|}t|| d S )NrI  rv   )r[   r  r3   r  r   rT  r   r  r/   r/   r0   r  U  s    zTestGumbelL.test_sf_isfrV   r   r   c                 C   s2   t jjd|d}t jj||d\}}t|| d S )NrT   )r   rV   r   )r3   r  r   r   r   )rc   rV   r   Z
fitted_locr   r/   r/   r0   test_fit_fixed_param[  s    z TestGumbelL.test_fit_fixed_paramN)
r   r   r   rN  r  r  r   r   r   r  r/   r/   r/   r0   r  E  s
   r  c                   @   s   e Zd Zdd Zdd ZdS )TestGumbelRc                 C   s   t tjdddd d S )Nr   ?~T}%m;r  rq   )r   r3   r
  r   rf   r/   r/   r0   rS  f  s    zTestGumbelR.test_sfc                 C   s   t tjdddd d S )Nr  r  r  rq   )r   r3   r
  rT  rf   r/   r/   r0   rV  o  s    zTestGumbelR.test_isfN)r   r   r   rS  rV  r/   r/   r/   r0   r  d  s   	r  c                   @   s`  e Zd Zejdddd Zejdd Zejdd Zejd	d
 Zej	
dedejdej	jdgej	
dddgej	
dg dej	
dddgdd Zej	jej	
dddgdd Zdd Zej	jd d!ej	
d"d#d$gej	
d%ddgd&d' Zd(d) Zd*d+ Zd,d- Zej	
d.eg d/g d0g d1ejg d2g d3g d4ej	jdejg d5ed6d7d8ed9dd:ej	jdgd;d< Zej	
d.eg d/g d0g d1ejg d2g d3g d4ej	jdejg d5ed6d7d8ed9dd:ej	jdgd=d> Zej	
d?d@dgej	
dAdBdCgdDdE Zej	
dFdGdHgdIdHggdJdK Zej	
dLdMd@ejejejfgdNdOggdPdQ Zej	
dRg dSej	
dTej j!dUedVd@dWdXfej j"dUedVd@dWdXfej j!dYed@dZdWdUfej j"dYed@dZdWdXfgd[d\ Z#ej	
d]g d^d_d` Z$ej	jej	
d]g dadbdc Z%ddS )eTestLevyStableT)Zautousec                 C   s(   dt j_dt j_dt j_t jjt j_dS )z2Setup default parameters for levy_stable generatorS1	piecewiseN)r3   levy_stableparameterizationcdf_default_methodpdf_default_methodZ_levy_stableZ	_QUAD_EPSquad_epsrf   r/   r/   r0   reset_levy_stable_paramsz  s    z'TestLevyStable.reset_levy_stable_paramsc                 C   s*   t ttjd }t jj|jdd}|S )a  Sample data points for pdf computed with Nolan's stablec

        See - http://fs2.american.edu/jpnolan/www/stable/stable.html

        There's a known limitation of Nolan's executable for alpha < 0.2.

        The data table loaded below is generated from Nolan's stablec
        with the following parameter space:

            alpha = 0.1, 0.2, ..., 2.0
            beta = -1.0, -0.9, ..., 1.0
            p = 0.01, 0.05, 0.1, 0.25, 0.35, 0.5,
        and the equivalent for the right tail

        Typically inputs for stablec:

            stablec.exe <<
            1 # pdf
            1 # Nolan S equivalent to S0 in scipy
            .25,2,.25 # alpha
            -1,-1,0 # beta
            -10,10,1 # x
            1,0 # gamma, delta
            2 # output file
        z.data/levy_stable/stable-Z1-pdf-sample-data.npyx,p,alpha,beta,pctr  r[   r  r   r  r  r  r  Tr  r/   r/   r0   nolan_pdf_sample_data  s    z$TestLevyStable.nolan_pdf_sample_datac                 C   s*   t ttjd }t jj|jdd}|S )a#  Sample data points for cdf computed with Nolan's stablec

        See - http://fs2.american.edu/jpnolan/www/stable/stable.html

        There's a known limitation of Nolan's executable for alpha < 0.2.

        The data table loaded below is generated from Nolan's stablec
        with the following parameter space:

            alpha = 0.1, 0.2, ..., 2.0
            beta = -1.0, -0.9, ..., 1.0
            p = 0.01, 0.05, 0.1, 0.25, 0.35, 0.5,

        and the equivalent for the right tail

        Ideally, Nolan's output for CDF values should match the percentile
        from where they have been sampled from. Even more so as we extract
        percentile x positions from stablec too. However, we note at places
        Nolan's stablec will produce absolute errors in order of 1e-5. We
        compare against his calculations here. In future, once we less
        reliant on Nolan's paper we might switch to comparing directly at
        percentiles (those x values being produced from some alternative
        means).

        Typically inputs for stablec:

            stablec.exe <<
            2 # cdf
            1 # Nolan S equivalent to S0 in scipy
            .25,2,.25 # alpha
            -1,-1,0 # beta
            -10,10,1 # x
            1,0 # gamma, delta
            2 # output file
        z.data/levy_stable/stable-Z1-cdf-sample-data.npyr  r  r  r  r/   r/   r0   nolan_cdf_sample_data  s    %z$TestLevyStable.nolan_cdf_sample_datac                 C   s   t ttjd }|S )a&  Sample data where loc, scale are different from 0, 1

        Data extracted in similar way to pdf/cdf above using
        Nolan's stablec but set to an arbitrary location scale of
        (2, 3) for various important parameters alpha, beta and for
        parameterisations S0 and S1.
        z1data/levy_stable/stable-loc-scale-sample-data.npy)r[   r  r   r  r  r  r/   r/   r0   nolan_loc_scale_sample_data  s    	z*TestLevyStable.nolan_loc_scale_sample_datasample_sizer   rl  Zmarksr  ZS0r  z
alpha,beta))r  r   )r  r   )rk  r   )rU  ri   zgamma,deltar   r   r  c           
      C   sF   |t j_t j||||d}t |j|dd|j\}}	|	dksBJ d S )N)r   r  rW   rV   r   r   rm  )r3   r  r  rp  r   ra   )
rc   r  r   r  r  r  r  lsr   r-  r/   r/   r0   r	    s    zTestLevyStable.test_rvsr  ri   r   c                 C   sZ   t jd d}d}d}tjj||||dd}tj|d||||fd\}}|d	ksVJ d
S )z3Additional test cases for rvs for alpha equal to 1.h:r  ri   rk  r  rV   rW   r   r  r{  rk   N)r[   r   r   r3   r  r   rp  )rc   r  r   rV   rW   rR   statr-  r/   r/   r0   test_rvs_alpha1  s    

zTestLevyStable.test_rvs_alpha1c                 C   s   g d}t j|\}}}}t|dddd t|dd t|dd	 t|d
d |g d }t j|\}}}	}
t|d t|d t|
dd	 t|	dd	 d S )N)wgr  rn   rn   rn   rn   羼 u?r  r  r  r  67',?r  r  r  r  tA}˜.?r  r  r  r  Gz?r   rk   r  )\(̿rX   gۧ1?r   g9]c?)r  r  r  r  r  r   gv?r  )r3   r  r  r   r   r   rc   rR   alpha1beta1loc1scale1r  alpha2beta2r9  r:  r/   r/   r0   r  	  s    

zTestLevyStable.test_fitzUnknown problem with fitstart.r  zalpha,beta,delta,gamma)rk  r  rX   r   )r  r  rX   r   parametrizationc                 C   sZ   |t j_t jj||||ddd}t j|}|\}}	}
}t||||g||	|
|gdd dS )z7Test that fit agrees with rvs for each parametrization.r^  r   r!  rk   rq   N)r3   r  r  r   r  r   )rc   r   r  r  r  r  r   r   Z	alpha_obsZbeta_obsZ	delta_obsZ	gamma_obsr/   r/   r0   test_fit_rvs!  s    

zTestLevyStable.test_fit_rvsc           
      C   s~   t g d}tj|\}}}}tj| \}}}}	t|d |dksNJ t|| t||  t||  t|	| d S )Nr   r   r   r   rS   rS   rS   r   r   rT   rT   r   r   )r[   r   r3   r  r  r   r   )
rc   rR   r  r  r  r  r  r  r9  r:  r/   r/   r0   test_fit_beta_flip:  s    

z!TestLevyStable.test_fit_beta_flipc                 C   sr   d}t g d}tj| \}}}}tj| | \}}}	}
t|| t|| t|	||  t|
| d S )Nr   r  )r[   r   r3   r  r  r   )rc   SHIFTrR   r  r  r  r  r  r  r9  r:  r/   r/   r0   test_fit_delta_shiftF  s    

z#TestLevyStable.test_fit_delta_shiftc                 C   s   g d}t j|\}}}}|dk s2J d| |t|k sVJ dt| d| g d}t j|\}}}	}
|dksJ d| |	t|ksJ dt| d|	 d S )	N)r   r   r   r   rS   rS   rS   r   r      r  r   zExpected alpha < 1, got zExpected loc < z, got )r   r   r   r   rS   rS   rS   r   r      r  zExpected alpha > 1, got zExpected loc > )r3   r  r  rX  r  r  r/   r/   r0   test_fit_loc_extrapQ  s    $z"TestLevyStable.test_fit_loc_extrapz pct_range,alpha_range,beta_range)rk   ri   r  )rP   r   rX   )r   r   r   )rk   rm  ri   rc  r  )rP   ri   r   rk  rX   )gr   r   r4  rD  r   )rk   rm  rP   r$  ffffff?ri   ?r   r   rc  r  rP   rX   r  r      c                    s  |}t  }|jdko|jdkd|j|j|jg}dd fddgdd	 fd
dgdd	 fddgdd fddgdd fddgdd fddgg}t|D ]J\}	\}
}}|
tj_	|dur||| n|}t
 }|td tjj|d |d |d ddd}tjddP t|g d|t||d  t||d  t|d  g}W d   n1 s0    Y  ||d |kt|B  }d |	 d!|
 d"| d#|jj d$| 
}t||d ||d%d& W d   q1 s0    Y  qdS )'z2Test pdf values against Nolan's stablec.exe outputLinuxi686/dnir  c              	      s  t | d t | d  @ t | d @ | d dk| d dk@ | d dk| d dk@ | d dk@ B | d dkt | d d	d
g@ B | d dkt | d ddg@ B | d dkt | d ddg@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d dg@ t t | d dg@ B | d dkt | d ddg@ t t | d g d@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dkt | d dg@ t t | d g d@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d d	d
g@ t t | d ddg@ B | d dkB  @ S )Npctr   r  r   ri   r   r  r  rk   r  r4  rm  rc  ru  rP   r$  r   )ri   rD  rE  r  r  )gٿ333333ӿr4  r  ri   r  r  rP   ru  r4  r  )r   r   r  rQ  r  )r[   isinr   r<  alpha_range
beta_range	pct_ranger/   r0   rF     s    










 
%


*


/


4
9
>
C
z7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>r  r  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   r  ru  r  r[   r  r  r  r/   r0   rF     s    

c                    s:   | d dk @ t | d @ d v @ t | d @ S )Nr   r  r  r  r  r  r  r  is_linux_32r  r/   r0   rF     s    
g&.=c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   r  ru  r  r  r  r/   r0   rF     s    
fft-simpsonr  c                    s<   | d dkt | d @ t | d  @ t | d @ S )Nr   rU  r  r  r  r  r  r/   r0   rF     s    
r  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk @ S )Nr  r   r  r   rU  r  r  r  r/   r0   rF     s    

Nz2Density calculations experimental for FFT method.*rR   r   r  r   r   rW   rV   r  r  calcZabserrrelerrr-  r  z	pdf test  failed with method 'z' [platform: z]

Ferr_msgverbose)platformunamesystemmachinejoin	processorr{  r3   r  r  r   recordr1  rZ   r[   r$  r   r   isnanr   r  r   )rc   r  r  r  r  r   r$  Zplatform_desctestsixdefault_methodrr   filter_funcsubdatasupr-  subdata2failuresmessager/   r  r0   test_pdf_nolan_samples]  s    
O
	 
$	
z%TestLevyStable.test_pdf_nolan_samplesc                    s  |}dd fddgdd fddgdd fd	dgdd
 fddgdd fddgdd fddgg}t |D ]B\}\}}	}
|tj_|
dur||
| n|}t }|td tjj|d |d |d ddd}tj	ddP t
|g d|t||d  t||d  t|d  g}W d   n1 sR0    Y  ||d |	kt|B  }d| d| d|jj d | }t||d |	|d!d" W d   q1 s0    Y  qdS )#z4 Test cdf values against Nolan's stablec.exe output.r  r  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ | d dkt | d g d@ | d dk@ B  @ S 	Nr  r   r  r  )r  rT  rQ  rk   rP   ru  r4  r  r  r  r  r/   r0   rF   Q  s$    



z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>rm  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ @ | d dkt | d g d@ | d dk@ B S r5  r  r  r  r/   r0   rF   f  s"    

	

r  r  c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   r  333333?r  r  r  r/   r0   rF   x  s    
r^  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   r  rk  r7  r  r  r  r/   r0   rF     s    

r  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   r  r  rk  r  r  r  r/   r0   rF     s    

rk   c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   r  r  r  r  r  r  r/   r0   rF     s    

Nz[Cumulative density calculations experimental for FFT method. Use piecewise method instead.*rR   r   r  r   r   r  r  r  r  r-  r  z	cdf test r  z'
r  Fr   )r{  r3   r  r  r   r)  r1  ra   r[   r$  r   r   r*  r   r  r   )rc   r  r  r  r  r   r+  r,  r-  rr   r.  r/  r0  r-  r1  r2  r3  r/   r  r0   test_cdf_nolan_samples4  sx    	

N$	
z%TestLevyStable.test_cdf_nolan_samplesr   r   r~  rZ   ra   c           
      C   s   t  }|jdko dt  d v }|r8|dkr8td |}dtj_dtj_	||d |k }d| tj_
|d	v svJ |dkrtjjntjj}||d
 |d |d ddd}	t|	|| d dS )zGTests for pdf and cdf where loc, scale are different from 0, 1
        r	  32bitr   rZ   z4Test unstable on some platforms; see gh-17839, 17859r  r   S)rZ   ra   rR   r   r  rX   r   r  r  N)r#  r$  r%  architecturer   r   r3   r  r  r  r  rZ   ra   r   )
rc   r  r   r~  r$  r  r   r/  r  rl  r/   r/   r0   test_location_scale  s     
z"TestLevyStable.test_location_scalezmethod,decimal_placesr  r   r  c              	   C   s   t g d}t g d}t g d}t jddp t J}|jtdd |tj_tjj	|d|dd	d
}t
|||| W d   n1 s0    Y  W d   n1 s0    Y  dS )z sample points extracted from Tables and Graphs of Stable
        Probability Density Functions - Donald R Holt - 1973 - p 187.
        )r   r   r   r   r   r   r   r   rX   rX   rX   rX   r   r   r   r   r   r   r   r   )gtF_?gܵ|?gQ?g@?gec]?gHP?gPkw?g!rh?gTN?g?gDioɴ?g r?gH?g+?gHPs?gX ?g&?g0*?gv/?ga2U0*?)r   r$  ri   r   r   r$  ri   r   r   r$  ri   r   r   r$  ri   r   r   r$  ri   r   r  r   zDensity calculation unstable.*)categoryr3  r   r   r  N)r[   r   r$  r   rI   r1  r3   r  r  rZ   r   )rc   r3  Zdecimal_placesZxsdensityZbetasr0  rZ   r/   r/   r0   'test_pdf_alpha_equals_one_beta_non_zero  s&    z6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zerozparams,expected)r  r  r   r   )rX   r   rS   rk  )rS   r  r   r   c                 C   s4   t jj |d |d |d |d dd}t|| d S )Nr   r   rX   r   r  r  )r3   r  r   )rc   rE  rL   Zobservedr/   r/   r0   r    s
    zTestLevyStable.test_statsr   )r$  ri   r   zfunction,beta,points,expectedr  r  rS   rn   rP  r  c                 C   s>   d|  k rdk sn J t ||||dtt|| dS )a\  Ensure the pdf/cdf routines do not return nan outside support.

        This distribution's support becomes truncated in a few special cases:
            support is [mu, infty) if alpha < 1 and beta = 1
            support is (-infty, mu] if alpha < 1 and beta = -1
        Otherwise, the support is all reals. Here, mu is zero by default.
        r   r   r   r  N)r   r[   r  r   )rc   r   r  r  r  rL   r/   r/   r0   !test_distribution_outside_support  s
    (z0TestLevyStable.test_distribution_outside_supportzx,alpha,beta,expected))r   /iZ?s0?gz5F?)r   ~H?|/mg>m?)r   .d5?L,ٿg깃\?)r   >?ЀjoؿgA]4?)r   pa2?Յ пgqQ?c                 C   s$   dt j_tt jj|||d| dS )a  Test pdf for x equal to zeta.

        With S1 parametrization: x0 = x + zeta if alpha != 1 So, for x = 0, x0
        will be close to zeta.

        When case "x equal zeta" is not handled properly and quad_eps is not
        low enough: - pdf may be less than 0 - logpdf is nan

        The points from the parametrize block are found randomly so that PDF is
        less than 0.

        Reference values taken from MATLAB
        https://www.mathworks.com/help/stats/stable-distribution.html
        Afc=rA  Nr3   r  r  r   rZ   rc   rR   r   r  rL   r/   r/   r0   test_x_equal_zetaJ  s
    -z TestLevyStable.test_x_equal_zeta)
)r^  rC  rD  gz¶?)r^  rE  rF  gV?)r^  rG  rH  gRE)3\?)r^  rI  rJ  gB?)r^  rK  rL  g/^?)-C6rC  rD  gH?)rQ  rE  rF  gn?)rQ  rG  rH  gx\?)rQ  rI  rJ  gVM%?)rQ  rK  rL  gm?c                 C   s$   dt j_tt jj|||d| dS )a  Test pdf for x near zeta.

        With S1 parametrization: x0 = x + zeta if alpha != 1 So, for x = 0, x0
        will be close to zeta.

        When case "x near zeta" is not handled properly and quad_eps is not
        low enough: - pdf may be less than 0 - logpdf is nan

        The points from the parametrize block are found randomly so that PDF is
        less than 0.

        Reference values taken from MATLAB
        https://www.mathworks.com/help/stats/stable-distribution.html
        rM  rA  NrN  rO  r/   r/   r0   test_x_near_zeta~  s
    "zTestLevyStable.test_x_near_zetaN)&r   r   r   r   r	  r  r  r  r  r   r   r   r  r	  r  r  r  r  r   r  r  r[   r  r   r4  r8  r<  r@  r   r   r  r3   r  ra   rZ   rB  rP  rR  r/   r/   r/   r0   r  y  s  


!
+

 C
| 
 

r  c                   @   s   e Zd Zdd Zdd ZdS )TestArrayArgumentc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestArrayArgument.setup_methodc                 C   s.   t jjtdtddd}t|jd d S )Nrv   r  r  )r3   r  r   r[   r   r+  r   r  rc   r   r/   r/   r0   test_noexception  s    z"TestArrayArgument.test_noexceptionN)r   r   r   r   rU  r/   r/   r/   r0   rS    s   rS  c                   @   s   e Zd Zdd Zdd ZdS )TestDocstringc                 C   sD   t jjd ur tdt jj v  t jjd ur@tdt jj v  d S )Nr   rE  )r3   r   r\  r   lowerrE  rf   r/   r/   r0   test_docstrings  s    zTestDocstring.test_docstringsc                 C   s   t   t   d S re   )r3   r=   r<   rf   r/   r/   r0   test_no_name_arg  s    zTestDocstring.test_no_name_argN)r   r   r   rX  rY  r/   r/   r/   r0   rV    s   rV  c                  C   s   t g d} t| dk| d\}}t|g d t|dg tddk| d\}}t||  t|dgt|   t| dk| d\}}t||  t|dgt|   d S )N)r   r   rX   r   rX   r   r   r   rX   )r   rX   rX   r   r   r   )r   r   r   r[   r   r-   r.   rL  r/   r/   r0   test_args_reduce  s    

r[  c                   @   s   e Zd Zg dZdd Zg dZejde	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejjejdddgdd Zejdddgdd ZdS )TestFitMethod)ncfrj  rk  c                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestFitMethod.setup_method)r5  r  r0  z	dist,argsc                 C   sz   || j v rtd|  tdddddtjg}tdddddtjg}tt|}t	t
|j|dd t	t
|j|dd d	S )
r[  z"%s fit known to fail or deprecatedrL  rM  rN  rO  rP  r   r  N)fitSkipNonFiniter   r   r[   r   r   r   r   r3   r0  r   r   )rc   r9   r   rR   r  Zdistfuncr/   r/   r0   !test_fit_w_non_finite_data_values  s    

z/TestFitMethod.test_fit_w_non_finite_data_valuesc              	   C   s   t jd t jddn tjjddddd}t t |t d d	 	 }t
t tjj|d
dd|d
dgdd W d    n1 s0    Y  d S )Ni90  r  r=  r$  rn         4@r  r   rX   r   r"  r  r~   )r[   r   r   r$  r3   r   r   r  rG  r   r   r   r   )rc   rR   Zexpected_shaper/   r/   r0   test_fix_fit_2args_lognorm  s    "
z(TestFitMethod.test_fix_fit_2args_lognormc                 C   s   t dd}tj|\}}t|d t|t d tjj|dd\}}t|d t|t d tjj|dd\}}t|d t|d d S )Nr   r  r   rX   r   r  )r[   r   r3   r  r   r   r  r   rc   rR   rV   rW   r/   r/   r0   test_fix_fit_norm  s    


zTestFitMethod.test_fix_fit_normc                 C   sn  t dd}t | }d}tjj||d\}}}t | | }tt |t	| |dd t
|| t|| | dd d}d}tjj|||d\}}}t
|| t
|| t|| | dd d	}d}tjj|||d\}}}t
|| t
|| t|| | dd d}d	}	tjj|||	d
\}}}t
|| t
||	 |t |	 }
tt	||
 d S )Nr   r  r   r   rv   r  r  r   r   rX   r"  )r[   r   rG  r   r3   r  r   r   r   Zdigammar   )rc   rR   Zmeanlogr   r-   rV   rW   rE   r   r   rL  r/   r/   r0   test_fix_fit_gamma  s6    






z TestFitMethod.test_fix_fit_gammac              	   C   s  dd }t g d}tjj|ddd\}}}}t|d t|d t||||ddgdd t g d}tjj|d	ddd
\}}}}t|d	 t|d t|d ||||\}}t|ddd d| }	tjj|	d	ddd\}
}}}t|d	 t|d t|d ||
||	\}}t|ddd t|
| tt	tjj|ddd t g d}tt	tjj|ddd tt	tjj|ddd	d tt	tjj|ddd	d tt	tjj|ddd	dd d S )Nc                 S   sj   t |}t| }td|  }t| | }||| t|    ||| t|   g}|S r   )r   r[   rG  r%  r   psi)r-   r.   rR   r,  s1r  Zpsiabr   r/   r/   r0   mlefunc%  s    z0TestFitMethod.test_fix_fit_beta.<locals>.mlefunc)r  r$  ri   r   r   r"  r  r~   rX   )r   r   r   r  )r   r   r   ri   r  )r   r   r   )r   r   r   r   )r   r   r   r   )
r[   r   r3   r  r   r   r   r   r0  r   )rc   rh  rR   r-   r.   rV   rW   dadbr  r8  b2r9  r:  r  r/   r/   r0   test_fix_fit_beta"  s:    








zTestFitMethod.test_fix_fit_betac                 C   s   t g d}tj|\}}t|d t|d tjj|dd\}}t|d t|d tjj|dd\}}t|d t|d d S )N)rX   rX   r   r   r   r   r   r  rX   r   r  r   r   r   )r[   r   r3   r5  r   r   rb  r/   r/   r0   test_expon_fitY  s    




zTestFitMethod.test_expon_fitc                 C   s   t g d}t |d }tjj|dd\}}}t|| dd t|d t|t 	|
 dd tjj|ddd\}}}t|t |t d d 
 dd t|d t|d tjj|dd	d
\}}}t|d	 t|d t|t 	|
 dd d S )N)rk  r   rS   r      r  r   r   rZ  rq   r  r"  rX   r   )r   Zfix_s)r[   r   rG  r3   r   r   r   r2  r   r   r   r  )rc   rR   Zlnxm1r  rV   rW   r/   r/   r0   test_lognorm_fith  s     




zTestFitMethod.test_lognorm_fitc                 C   s   t g d}tj|\}}t||  t|t | tjj|dd\}}t|d t||  tjj|dd\}}t|d t|d t	t
tjj|dd t	t
tjj|dd d S )N)r  r  r        "@r   r   rS   r  rm   r  )r[   r   r3   r0  r   r   rX  r  r  r0  r   rb  r/   r/   r0   test_uniform_fit|  s    


zTestFitMethod.test_uniform_fitr3  ZMLEZMMc              
   C   sl  d\}}t jj||ddd}t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d
}t||ddd	 t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d}t||ddd	 ttt jj|dd|d ttt jj|dddd|d t jj|ddd|d}	|	\}
}}}t|
||gg d d}t jj|dd}t jj|||d\}
}}t|
| d S )N)r  r  rT   r   r   r  )r   r3  )r  r3  rZ  r  )r  r3  r  )r   r3  )r  r3  )r  r3  r   rX   )r  r   r3  r   r   )r  r   r   r   r3  )r  r   r   r3  )r  r   r   r   )	r3   r  r   r   r   r0  r   r   r  )rc   r3  r-   r.   rR   Zres_1Zres_2Zres_3Zres_4Zres_5ZaaZbbr  ssr   r/   r/   r0   test_fshapes  s.    zTestFitMethod.test_fshapesc                 C   s@   t j}|jddd}tdd}tt|j|fi |d|i d S )NrX   rT   )rc  r   i)Zenikibenikir3  )r3   rb  r   r   r0  r   r   )rc   r3  r9   r   r   r/   r/   r0   test_extra_params  s    
zTestFitMethod.test_extra_paramsN)r   r   r   r   r   r^  r   r   r   r   r_  ra  rc  re  rl  rm  ro  rq  r  rs  rt  r/   r/   r/   r0   r\    s"   

	&7&r\  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )
TestFrozenc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestFrozen.setup_methodc                 C   s  t j}t jddd}|d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| | }|jddd}t|| |	 }|j	ddd}t|| |
 }|j
ddd}t|| | }|jddd}t|| | }|jddd}t|| |d}|jdddd}t|| t|j|j t|j|j d S )Nr  r  rU   r`  r$  rX   )r3   r  rZ   r   ra   r   rT  r   r  r   r  r2  r?   r  r-   r.   )rc   r9   frozenresult_fr  r/   r/   r0   r    sJ    
















zTestFrozen.test_normc                 C   s  d}t j}t |}|d}|d|}t|| |d}|d|}t|| |d}|d|}t|| |d}|d|}t|| |d}|d|}t|| | }||}t|| |	 }|	|}t|| |
 }|
|}t|| | }||}t|| | }||}t|| |d}|d|}t|| t|j|jj t|j|jj d S )Nrm   r`  r$  r  rX   )r3   r  rZ   r   ra   r   rT  r   r  r   r  r2  r?   r  r-   r9   r.   )rc   r-   r9   rv  rw  r  r/   r/   r0   
test_gamma  sL    






















zTestFrozen.test_gammac                 C   s8   t d}|d}|j dd |d}t|| d S )Nr   rX   r  r  )r3   r   r  r   )rc   rv  m1r  r/   r/   r0   test_regression_ticket_1293/  s
    


z&TestFrozen.test_regression_ticket_1293c                 C   sR  d}t j|d}|j|\}}t||gddg d}t jjd|d t|j|dtjg d}t j|d}|j|\}}t||gddg d}t jd| t|jj|jj	ft j| t jdd}t
|j|ju dD ]l}t|}t j|d}|j|j	 }}t|d t
t| td}t j|\}}t||gdd	g qd S )
NrQ  r,  rn   r  rP   r   r&  r'  ri   )r3   r(  r9   r)  r   rZ   r[   r   r-   r.   r   r   r*  r   )rc   rL  r.  r-   r.   Zrv1r/   r/   r0   r+  >  s2    



zTestFrozen.test_abc                 C   s   t ttjd d S )NZ	rv_frozen)r   r,   r3   r4   rf   r/   r/   r0   test_rv_frozen_in_namespacej  s    z&TestFrozen.test_rv_frozen_in_namespacec                 C   sV   t  }tt|d d|_t|j tj	d  tj	d}|j
d|d d S )Nr}   *   r   r  r   )r3   r  r   r,   r}   r   Z	get_stater[   r   r  r   )rc   rv  Zrndmr/   r/   r0   test_random_staten  s    
zTestFrozen.test_random_statec           
      C   s   t dd}t d}t jg dg dfd}|||fD ]}d|_|jdd	 t|}|jdd	}t|}|jdd	}t	|| |
d
|
d
g}	t	|	d |	d  t	||	d ||	d  q8d S )Ngdsz@g@e?r  )r   r   rX   r   r  r  r   r  r   ri   r   r   )r3   r  r9  r<   r}   r   pickledumpsloadsr   r   ra   )
rc   r  Zpoissr  distfnrE   Zr0Z	unpickledr1Zmediansr/   r/   r0   test_pickling|  s$    




zTestFrozen.test_picklingc              
   C   s   dd }t jdddd}tjddd< |j|d	dd
d}t jj|dddd	dd
d}W d    n1 sh0    Y  t|| t jddd}||}t jj|ddd}t|| d S )Nc                 S   s   | S re   r/   r   r/   r/   r0   r     s    z$TestFrozen.test_expect.<locals>.funcrX   r   r   rA  r  )r  divider   T)r   ubconditionalrX   r   rV   rW   r   r  r  rW  )r   r   rV   )r3   r  r[   r$  r   r   r9  )rc   r   ZgmZgm_valZ	gamma_valr-  Zp_valZpoisson_valr/   r/   r0   test_expect  s    $

zTestFrozen.test_expectN)r   r   r   r   r  rx  rz  r+  r{  r}  r  r  r/   r/   r/   r0   ru    s   34,ru  c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )
TestExpectc                 C   s   t jjdd ddd}t|ddd t jjd	d ddd}t|ddd t jjd
ddd}t jjdddd}t jjdd dd||d}t|ddd t jjdd dd||dd}t|ddd d S )Nc                 S   s   | d | d  S )Nrv   r/   r   r/   r/   r0   rF     r;   z&TestExpect.test_norm.<locals>.<lambda>rv   rX   rU   r   r  r  c                 S   s   | S re   r/   r   r/   r/   r0   rF     r;   rm  rc  c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   rV   rW   r   r  r   c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   TrV   rW   r   r  r  r  )r3   r  r   r   r   )rc   r  r  r   r  prob90prob90cr/   r/   r0   r    s    zTestExpect.test_normc              	   C   s   t jjdd dddd}t|ddd	 t jjd
d dddd}t|ddd	 t jjdddddd}t jjdddddd}t jjdd ddd||dd}t|ddd	 t jjdd ddd||dd}t|ddd	 d S )Nc                 S   s   | d | d  S )NUUUUUU@r/   r   r/   r/   r0   rF     r;   z&TestExpect.test_beta.<locals>.<lambda>r  rv   rX   )r   rV   rW   qq?r  r  c                 S   s   | S re   r/   r   r/   r/   r0   rF     r;   r  rm   r  rc  rS   rU   rm  c                 S   s   dS )Nr  r/   r   r/   r/   r0   rF     r;   )rS   rS   Fr  r   c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   Tr  )r3   r  r   r   r   )rc   r  r  r  r   r  r  r/   r/   r0   	test_beta  s     zTestExpect.test_betac           
      C   s&  t jj ddddd\}}t jjdd ddd	}t||d
d t jjdd ddd	}t||dd t jjdd dddd
d}t||dd dt jjdd
gddddd  }t jjdd ddddd}t||d
d t jjdd dddddd}t|ddd t jjdd dddd}	t|	dd
d d S )Nr  rS   r  r  rW  c                 S   s   | S re   r/   r   r/   r/   r0   rF     r;   z+TestExpect.test_hypergeom.<locals>.<lambda>)r  rS   r  r  r  r  c                 S   s   | d d S Nrp  rX   r/   r   r/   r/   r0   rF     r;   r  c                 S   s   | d d S r  r/   r   r/   r/   r0   rF     r;   rv   )r   rV   r   r  r   c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   r  r  c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   T)r   rV   r   r  r  c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   r   )r   r   r  )r3   r  r   r   r  r%  )
rc   Zm_trueZv_truer  r  Zv_boundsZ	prob_trueprob_boundsZprob_bcZprob_br/   r/   r0   test_hypergeom  s2    "zTestExpect.test_hypergeomc                 C   sb   t jjdd dddd}dt jdd }t||d	d
 t jjdd dddd}t|dd	d
 d S )Nc                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   z)TestExpect.test_poisson.<locals>.<lambda>r  r   F)r   r   r  r   rX   r  r  c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   T)r3   r9  r   ra   r   )rc   r  Zprob_b_trueZprob_lbr/   r/   r0   test_poisson  s    zTestExpect.test_poissonc                 C   s<   t j}|jdd}|jdd |jdd}t||dd d S )N)rk  r{  )ri   r  r  )r3   Zgenhalflogisticr   r   )rc   Zhalflogres1r  r/   r/   r0   test_genhalflogistic  s
    zTestExpect.test_genhalflogisticc                 C   sv   t ttjdd t ttjjdd dd t ttjjdd dd t ttjjdd dd d S )	Nr  Gz?c                 S   s   dS r   r/   r   r/   r/   r0   rF     r;   z/TestExpect.test_rice_overflow.<locals>.<lambda>)r  r{  c                 S   s   dS r  r/   r   r/   r/   r0   rF     r;   c                 S   s   dS Nr   r/   r   r/   r/   r0   rF     r;   )r   r[   r  r3   ricerZ   r   rf   r/   r/   r0   test_rice_overflow  s    zTestExpect.test_rice_overflowc                 C   sp   d\}}t jjdd |fd}t|||d  td|  dd t jjdd |f|d	}t||| dd d S )
N)r4  r   c                 S   s   | S re   r/   rO   r/   r/   r0   rF     r;   z(TestExpect.test_logser.<locals>.<lambda>r{  r  rp   r~   c                 S   s   | S re   r/   r  r/   r/   r0   rF     r;   r  )r3   r  r   r   r[   rG  )rc   r-  rV   Zres_0Zres_lr/   r/   r0   test_logser  s    zTestExpect.test_logserc                 C   sh   d\}}t jjdd ||fd}t jjdd ||fd}t||| dd t||d  || dd d S )	N)r  r  c                 S   s   | S re   r/   r   r/   r/   r0   rF     r;   z)TestExpect.test_skellam.<locals>.<lambda>r{  c                 S   s   | d S r  r/   r   r/   r/   r0   rF      r;   rZ  r~   rX   )r3   rz  r   r   )rc   r  p2ry  r  r/   r/   r0   test_skellam  s
    zTestExpect.test_skellamc                 C   sL   d\}}t jdd ||f}t|tdd t||D ||  dd d S )N)r   q   c                 S   s   | S re   r/   r   r/   r/   r0   rF   (  r;   z)TestExpect.test_randint.<locals>.<lambda>c                 s   s   | ]
}|V  qd S re   r/   r8   r   r/   r/   r0   r  *  r;   z*TestExpect.test_randint.<locals>.<genexpr>rp   r~   )r3   r   r   r   r%  r  )rc   lohir   r/   r/   r0   test_randint$  s
     zTestExpect.test_randintc                 C   s   t ttjjdd d d S )Nc                 S   s   | d S r  r/   r   r/   r/   r0   rF   /  r;   z&TestExpect.test_zipf.<locals>.<lambda>r  )r	   r1  r3   r  r   rf   r/   r/   r0   	test_zipf,  s    
zTestExpect.test_zipfc                 C   s@   t jjdd dd}t jjdd ddddd	}t||d
d d S )Nc                 S   s   dS r   r/   r   r/   r/   r0   rF   3  r;   z/TestExpect.test_discrete_kwds.<locals>.<lambda>r  r{  c                 S   s   dS r   r/   r   r/   r/   r0   rF   4  r;   r]      r  )r   Zmaxcount	chunksizeZ	tolerancer  r  )r3   r9  r   r   )rc   Zn0Zn1r/   r/   r0   test_discrete_kwds1  s
    zTestExpect.test_discrete_kwdsc                 C   s6   dd }dD ]$}t jd|}t|||dd qd S )Nc                 S   s0   | d d| d   d| d   d| d   |  S )Nrv   rS   r   r  r   r   rX   r/   r  r/   r/   r0   poiss_moment5;  s    z-TestExpect.test_moment.<locals>.poiss_moment5)rv   rQ  rv   rG  rq   )r3   r9  r  r   )rc   r  r}  Zm5r/   r/   r0   test_moment8  s    zTestExpect.test_momentc                 C   sn   t tjjdddd t tjjdddd t tjjdddd t tjjddd	 t tjjd
dd
 d S )Nr
  r  rU   r  rS   rP   )   r{  r  U   rW  )r   r3   r  r   r  r  rf   r/   r/   r0   test_challenging_cases_gh8928B  s
    z(TestExpect.test_challenging_cases_gh8928c                 C   s   t j}|jddd}t|jddd| t|jddddd| t|jddddd|d	  t|jddddd
d| t|jdddddd t|jdddddd t|jddddd
dd d S )NrS   rv   rU   r  r<  r  rV  r  rD  Tr  r  g433333@g433333r  )r3   r0  r   r   r   )rc   r9   r:  r/   r/   r0   test_lb_ub_gh15855K  s"    zTestExpect.test_lb_ub_gh15855N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s   "
		
	r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestNctc                 C   s@   t dd}t|dd t dd}t|dddd d S )Nrv   r   ri   r   g K?rS   r  )r3   nctr   ra   r   r3  r/   r/   r0   test_nc_parameterb  s    zTestNct.test_nc_parameterc              	   C   sZ   t jdtddd d d f tddd}tg dg dg dg}t||d	d
 d S )Nrv   r   rQ  rP   r   )gMp^j?g6].ftv?gȳ'ς?gu?)g!Y<a?g]d1p?go|?g?)gHdY?g2Ԥg?g}o/u?g .mr?r  rq   )r3   r  rZ   r[   r   r  r   r   )rc   r   rL   r/   r/   r0   test_broadcastingj  s    zTestNct.test_broadcastingc                 C   s   t dd}t| d d S )Nr   r   rm   )r3   r  r   r  r3  r/   r/   r0   test_variance_gh_issue_2401r  s    z#TestNct.test_variance_gh_issue_2401c                 C   s   t jj dddd\}}}}t||||gtjtjtjtjg t jj dddd\}}}}tt| t|||gtjtjtjg t jj dddd\}}}}tt|||g  t|tj d S )Nr   r4  r  )r\  ncr  rU  r  )r3   r  r   r[   r   r   r  r   r  r/   r/   r0   test_nct_inf_momentsz  s    "zTestNct.test_nct_inf_momentsc                 C   s   t jdd}t j dd}ddg}t||d dd t||dd t jdd}t j dd}d	d
g}t||d dd t||dd d S )Nrw   rX   g@ @g*dn?r   rG  rq   r   gqI  @gL) ?r  )r3   r  r   r   )rc   Znct_mean_df_1000Znct_stats_df_1000Zexpected_stats_df_1000Znct_meanZ	nct_statsrC  r/   r/   r0   test_nct_stats_large_df_values  s    
z&TestNct.test_nct_stats_large_df_valuesc                 C   s   t tjddtdd d S )NrX   i   r   )r   r3   r  ra   r   rf   r/   r/   r0   test_cdf_large_nc  s    zTestNct.test_cdf_large_ncN)	r   r   r   r  r  r  r  r  r  r/   r/   r/   r0   r  a  s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRecipInvGaussc                 C   s   t jdd}|dksJ d S )Nr   rD  rn   )r3   recipinvgaussrZ   rB  r/   r/   r0   test_pdf_endpoint  s    z#TestRecipInvGauss.test_pdf_endpointc                 C   s"   t jdd}|tj ksJ d S )Nr   rD  )r3   r  r   r[   r   r  r/   r/   r0   test_logpdf_endpoint  s    z&TestRecipInvGauss.test_logpdf_endpointc                 C   s$   t jdd}d}t||dd d S )Nrm  ri   g9V9s;r  rq   )r3   r  ra   r   rc   r-  rL   r/   r/   r0   test_cdf_small_x  s    z"TestRecipInvGauss.test_cdf_small_xc                 C   s"   t jdd}d}t||d d S )NP   ri   glH<r  )r3   r  r   r   r  r/   r/   r0   test_sf_large_x  s    z!TestRecipInvGauss.test_sf_large_xN)r   r   r   r  r  r  r  r/   r/   r/   r0   r    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestRicec                 C   s   g d}t ttjj|dd  t ttjj|dd  t ttjj|dd  t ttjj	|dd  g d}t ttjj
|dd  tjjddd}t t|  d}ttj|dtj|||dd	 d S )
N)ru  r  r  rn   r.   )rP   rP   ri   r   r   r  r  r  r  )r   r[   r  r3   r  rZ   r   r   ra   rg  r   r   )rc   rR   r5  r  r.   r/   r/   r0   test_rice_zero_b  s    zTestRice.test_rice_zero_bc                 C   s2   t jj}t|ddjd t|dddjd d S )Nr  r  r   )r   rv   )r.   r   )r3   r  r   r   r   r  rT  r/   r/   r0   test_rice_rvs  s    zTestRice.test_rice_rvsc                 C   s   t jtdddtddd}g d}t|| tddd}t jj|ddd}g d	}t|| tj jd
tddd}g d}t|| d S )NrS      )g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?rP   r   g     @_@r   r  )	g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@ri      )gJ-$@g+f4@gce*D>@g$D@gnHGI@grN@g<
uQ@giff T@g9r[V@g3bXQ Y@gqxJ[@g`*DD ^@g@`@gdAa@)r3   r  ra   r[   r   r   r   r2   )rc   ra   Zcdf_expZprobabilitiesr   Zppf_expr/   r/   r0   test_rice_gh9836  s    "

zTestRice.test_rice_gh9836N)r   r   r   r  r  r  r/   r/   r/   r0   r    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
TestErlangc                 C   s   t jd d S r   r   rf   r/   r/   r0   r     s    zTestErlang.setup_methodc              	   C   s   t  j t dt tttjjddddd g d}tjj|dd}tj	j|dd}t
||d	d
 W d    n1 sx0    Y  d S )Nr*  r  r   r   r   r  )ri   r  rm   r  r  r  rq   )r.  r/  r0  r1  r0  r3   erlangr   r   r  r   )rc   r   Zresult_erlangZresult_gammar/   r/   r0   test_erlang_runtimewarning  s    
z%TestErlang.test_erlang_runtimewarningc                 C   s.   t tjjdddgdtjjdddgd d S )Nri   r   r   r  )r   r3   r  rZ   r  rf   r/   r/   r0   test_gh_pr_10949_argcheck#  s    z$TestErlang.test_gh_pr_10949_argcheckN)r   r   r   r   r  r  r/   r/   r/   r0   r    s   r  c                   @   sp   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	ejdddgddggdd Z
dd Zdd ZdS )TestRayleighc                 C   s   t jd d S )Nr  r   rf   r/   r/   r0   r   )  s    zTestRayleigh.setup_methodc                 C   s   t jd}t|d d S )Nr   g)Zx)r3   r   r   r   rc   r  r/   r/   r0   r  -  s    zTestRayleigh.test_logpdfc                 C   s   t jd}t|d d S )Nr   i)r3   r   r  r   r  r/   r/   r0   r  1  s    zTestRayleigh.test_logsfr  )gB)Q?got|?)gS2P?g3?c                 C   s   t jjd||d}dd }|||}t jj||d\}}t|| t|| t jj|dd\}}t|d t j|\}}t|||| d S )Nr  r  c                 S   s"   t | | d dt|   d S )NrX   ri   )r[   r%  r   )r   r   r/   r/   r0   r  :  s    z(TestRayleigh.test_fit.<locals>.scale_mler   rD  r  )r3   r   r   r   r   )rc   r   r  r   r  Zscale_expectrV   rW   r/   r/   r0   r  5  s    



zTestRayleigh.test_fitr  rk   g̡=E?g@1d?c                 C   s"   t jjd||d}tt j| d S )Nr  r  )r3   r   r   r   )rc   r   r  r   r/   r/   r0    test_fit_comparison_super_methodN  s    z-TestRayleigh.test_fit_comparison_super_methodc                 C   s   t tj d S re   )r   r3   r   rf   r/   r/   r0   r!  V  s    zTestRayleigh.test_fit_warningsc           	      C   s   t jd}d\}}}tjj||||d}tj|\}}|t |k sLJ tjj||d\}}|t |k srJ ||ks~J d S )Ni  )r   r  r  r   r  )r[   r   r   r3   r   r   r   rX  )	rc   r   rV   rW   r   r   r   r   r   r/   r/   r0   test_fit_gh17088Y  s    
zTestRayleigh.test_fit_gh17088N)r   r   r   r   r  r  r   r   r   r  r  r!  r  r/   r/   r/   r0   r  (  s   


r  c                   @   sX   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	ejdg ddd Z
dS )TestExponWeibc                 C   sB   d}d}d}t j|||}t j|||}t||gddg d S )NrP   r  r  g:23W+g~`9k)r3   	exponweibrZ   r   r   )rc   rR   r-   rL  r-  r  r/   r/   r0   test_pdf_logpdfh  s    zTestExponWeib.test_pdf_logpdfc                 C   sj   t ddd}d}d}tj|||}tj||}t|| tj|||}tj||}t|| d S )NrJ  r   r   r   rT   )r[   rK  r3   r  rZ   weibull_minr   r   rc   rR   r-   rL  r-  rL   r  r/   r/   r0   test_a_is_1s  s    
zTestExponWeib.test_a_is_1c                 C   sf   t ddd}d}d}tj|||}tj|}t|| tj|||}tj|}t|| d S )Nr  r   rS   )r[   rK  r3   r  rZ   r5  r   r   r  r/   r/   r0   test_a_is_1_c_is_1  s    
z TestExponWeib.test_a_is_1_c_is_1zx, a, c, ref))r   r  r   g=J ?)r   r  r   g$+PR>)r  r  r   g><)r  r  r   ggX.X:)r        ?r   gRy9)r   r  r  g'vR0=)g_QPr  r  gQ:<c                 C   s"   t j|||}t||dd d S r  )r3   r  r   r   )rc   rR   r-   rL  r:  r   r/   r/   r0   rS    s    zTestExponWeib.test_sfzp, a, c, ref))r$  r  r   g;y$(@)gMg<r  r   gdbq^@)rZ  r   rX   gE@)gvIh%L=r  r   g/7@)r  r  r  gTWTOc                 C   s"   t j|||}t||dd d S r  )r3   r  rT  r   )rc   r-  r-   rL  r:  rT  r/   r/   r0   rV    s    	zTestExponWeib.test_isfN)r   r   r   r  r  r  r   r   r   rS  rV  r/   r/   r/   r0   r  f  s   

r  c                   @   s   e Zd Zdd Zdd ZdS )TestFatigueLifec                 C   s    t jdd}t|ddd d S )Nr  r  X9rz   rq   )r3   r   r   r   rR  r/   r/   r0   test_sf_tail  s    zTestFatigueLife.test_sf_tailc                 C   s$   d}t j|d}t|ddd d S )Nr  r  r  rz   rq   )r3   r   rT  r   )rc   r-  r5  r/   r/   r0   test_isf_tail  s    zTestFatigueLife.test_isf_tailN)r   r   r   r  r  r/   r/   r/   r0   r    s   r  c                   @   sX   e Zd Zdd Zdd Zejdddgdd	 Zd
d Z	ejdddgdd Z
dS )TestWeibullc                 C   s   t jdd}t|d d S rA  )r3   r  r   r   r  r/   r/   r0   r    s    zTestWeibull.test_logpdfc           
      C   sP  d}d}d}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|t	
d  t jj|||d}t|tt	
d  t jj|||d}t|td t jj|||d}	t|	d t jjdddd}t|td	 t jjdddd}	t|	d	 d
}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|td t jj|||d}t|d t jj|||d}t|t	
d  t jj|||d}	t|	tt	
d  t jjdddd}t|t	
d  t jjdddd}	t|	tt	
d  d S )Nrk  rm   r  r  rF  r   r   rX   r  ry  g&.gCe )r3   r  rZ   r   r[   r   r   rG  ra   r   r  rg  r   r  Zweibull_max)
rc   rR   r-   r.   r-  r  rL  lcrE   r  r/   r/   r0   test_with_maxima_distrib  sH    


z$TestWeibull.test_with_maxima_distribrW   r  rP   c                 C   s*   t jj|d |d d|d}t|d d S )Nr  r  r   r  g>)r3   r  rX  r   r  r/   r/   r0   rY  @  s    zTestWeibull.test_delta_cdfc                 C   s   t jd}d\}}}t|||}|jd|d}tjj|ddd\}}}	tjj|ddd\}
}}||  krvdks|n J ||
ksJ tjj|ddd	d
\}}}|dksJ t|||}|jdd}t |t|f}t	|| d S )Nl   > )rX   r  ri   rT   r   rk  r   r   r  r1  r2  r4  r  )
r[   r   r   r3   r  r   r   r   r  r   )rc   r   rL  rV   rW   r9   r   c2r9  r:  c3r<  r=  Zc4r>  r?  r@  r   r:  r/   r/   r0   test_fit_minU  s    
zTestWeibull.test_fit_minr  )r   r   r  )rw   r   gq뮕qH)c                 C   s4   t tj|||dd t tj|||dd d S r  )r   r3   r  r   rT  r  r/   r/   r0   r  s  s    zTestWeibull.test_sf_isfN)r   r   r   r  r  r   r   r   rY  r  r  r/   r/   r/   r0   r    s   T

r  c                   @   s   e Zd Zdd Zdd ZdS )TestDweibullc                 C   sR   t jd}d|jddd }tj|}tj|t d }t	||dd d S )N   q>~). rS   rT   r  ri   rp   rq   )
r[   r   r   r  r3   dweibullr?   r  rG  r   )rc   r   rL  r   r:  r/   r/   r0   r)  |  s
    zTestDweibull.test_entropyc                 C   s\   t jd}d|jddd }d|  }tj||}dtj|| }t	||dd d S )Nr  rS   r   r  ri   rp   rq   )
r[   r   r   r  r0  r3   r  r   r  r   )rc   r   rL  rR   r   r:  r/   r/   r0   rS    s    zTestDweibull.test_sfN)r   r   r   r)  rS  r/   r/   r/   r0   r  {  s   r  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestTruncWeibullc                 C   s(   t jddgddd}t|ddg d S )NrP   rm   g)\(?gףp=
?rn   )r3   truncweibull_minrZ   r   r  r/   r/   r0   test_pdf_bounds  s    z TestTruncWeibull.test_pdf_boundsc                 C   s>   t jdddtj}t|d t jdddd}t|d d S )Nrm   r  rn   r  g~?)r3   r  r   r[   r   r   r   r  r/   r/   r0   r    s    
zTestTruncWeibull.test_logpdfc                 C   s(   t jddgddd}t|ddg d S )Nrn   r  rm   rP   )r3   r  r   r   r  r/   r/   r0   test_ppf_bounds  s    z TestTruncWeibull.test_ppf_boundsc                 C   s:   g d}t j|ddd}t j|ddd}t|| d S N)rn   rP   r$  ri   r   r   r  rm   rn   r  )r3   r  r   ra   r   rc   r5  rR   Zq_outr/   r/   r0   test_cdf_to_ppf  s    z TestTruncWeibull.test_cdf_to_ppfc                 C   s:   g d}t j|ddd}t j|ddd}t|| d S r  )r3   r  rT  r   r   r  r/   r/   r0   test_sf_to_isf  s    zTestTruncWeibull.test_sf_to_isfc                    s  dd d fddt jd }t|d t jd }tfdd	 \}}t|| t jd
 }tfdd	 \}}t|| t jd }tfdd	 \}}t|| t jd }	tfdd	 \}
}t|	|
 d S )Nrm   r  r  c                    s   | | t j|   S re   )r3   r  rZ   )rR   r,  rZ  r/   r0   xnpdf  s    z)TestTruncWeibull.test_munp.<locals>.xnpdfr   r   c                    s
    | dS r   r/   r   r  r/   r0   rF     r;   z,TestTruncWeibull.test_munp.<locals>.<lambda>rX   c                    s
    | dS r  r/   r   r  r/   r0   rF     r;   r   c                    s
    | dS r  r/   r   r  r/   r0   rF     r;   r   c                    s
    | dS )Nr   r/   r   r  r/   r0   rF     r;   )r3   r  r  r   r   r   )rc   r  ry  Zm1_expectedr   r  Zm2_expectedZm3Zm3_expectedr  Zm4_expectedr/   )r-   r.   rL  r  r0   	test_munp  s$    



zTestTruncWeibull.test_munpc                 C   s   d}d}d}t dt dt dt d    }tj||||}t|d tj||||}t|t d  tj	d|||}t|| tj
||||}t|d tj||||}	t|	t d  tjd|||}
t|
| d S )Nr  r  rm   r   ri   rR  )r[   r  rG  r   r3   r  ra   r   rg  r   r   r  rT  )rc   r-   r.   rL  Zx_medra   r  r   r   r  rT  r/   r/   r0   test_reference_values  s     *


z&TestTruncWeibull.test_reference_valuesc                 C   s  d}d}d}t j}d}tjj|||d}tjj|||||d}t|| tjj|||d}tjj|||||d}	t||	 tjj|||d}
tjj|||||d}t|
| tjj	|||d}tjj	|||||d}t|| tjj
|||d}tjj
|||||d}t|| tjj|||d}tjj|||||d}t|| tjj
dd||dd}t|t d	 tjjdd||dd}t|d	 d S )
Nrk  rm   rn   r  r  r   rX   r   r  )r[   r   r3   r  rZ   r  r   r   ra   rg  r   r  r   )rc   rR   rL  r-   r.   rW   r-  Zp_truncr  Zlp_truncra   Z	cdf_truncr  Zlc_truncrE   Zs_truncr  Zls_truncr/   r/   r0   test_compare_weibull_min  s6    





z)TestTruncWeibull.test_compare_weibull_minc           
      C   s   d\}}}t ||d}tj||||}tj||||}tj||tj|| }tj||| }tj||tj|| | }	t j|| t j||	 d S )N)r  r$  r  rT   )	r[   r  r3   r  rZ   ra   r  rD  r   )
rc   rL  r-   r.   rR   r  r>  r  r  r@  r/   r/   r0   test_compare_weibull_min2  s    
 z*TestTruncWeibull.test_compare_weibull_min2N)r   r   r   r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s   )r  c                   @   s6   e Zd Zdd Zdd Zejdg ddd Zd	S )
	TestRdistc                 C   s0   t j}g d}t|||dd|dd d S )Nr  g     @rv   r  )r3   rdistr   ra   r   )rc   r  r  r/   r/   r0   test_rdist_cdf_gh1285"  s
    zTestRdist.test_rdist_cdf_gh1285c                 C   sN   t ddd}d}tdt|d |d |d d  t|| d S )NgGzr  rS   g@ri   rX   r   )r[   r  r   r3   r  rZ   r  )rc   rR   rL  r/   r/   r0   test_rdist_beta)  s
    &zTestRdist.test_rdist_betar  ))r^  i  g?)rP      g;|bZ?)ri   i  g79)r   iU  g޻S/c                 C   s   t tj|||dd d S r  )r   r3   r  r   r  r/   r/   r0   test_rdist_sf7  s    
zTestRdist.test_rdist_sfN)	r   r   r   r  r  r   r   r   r  r/   r/   r/   r0   r  !  s   	r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestTrapezoidc                 C   s`   g d}|D ]N}d|dg}t tj|||tj|| t tj|||tj|| qd S )N)r   r4  ri   r   r   r   )r   r3   r   rZ   triangra   )rc   modesmoderR   r/   r/   r0   test_reduces_to_triangE  s    
z$TestTrapezoid.test_reduces_to_triangc                 C   sN   t ddd}ttj|ddtj| ttj|ddtj| d S Nr   r   rS   )r[   r  r   r3   r   rZ   r0  ra   rU  r/   r/   r0   test_reduces_to_uniformN  s    z%TestTrapezoid.test_reduces_to_uniformc                 C   s  t tjdddd t tjdddd t tjdddd t tjdddd t tjd	ddd
 t tjdddd t tjdddd
 t tjd	ddd t tjdddd t tjdddd t tjdddd t tjdddd d S )Nr   rX   r   ri   r   r@  ru  r  rP   g      ?r  r   r  r  g      ?)r   r3   r   rZ   ra   rf   r/   r/   r0   
test_casesS  s     zTestTrapezoid.test_casesc           	         sf  d\              f\}}}}d      fdd}|d}|d|d  }d          t d      }ttj|||||dd ttj|||||dd ttj|||||dd ttjd	d	d
dddd ttjd	dd
dd	dd ttjd	dd
dddd d S )N)ra  r   rX   r   rX   c                    sT   | d  | d     | d   | d        | d  | d  S )NrX   r   r/   )r,  r-   r.   rL  dr(  r/   r0   r  n  s     z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   ri   r  r  r   ra  r  r   r   )r[   rG  r   r3   r   r   r  r?   )	rc   r  r  rV   rW   r  r   r  r?   r/   r  r0   test_moments_and_entropyg  s&    0>z&TestTrapezoid.test_moments_and_entropyc                 C   sb  t g d}t ddgd d d f }t g d}tj|||}t |||\}}}t j|j|jd}t 	|j}	t
|	| | | D ] \}
}}}tj|||||
< qt|||jdd t tjj||dd	}t ||\}}t |jd
f}t 	|j}	t
|	| | D ]"\}
}}tjj||dd	||
< q"t||j|jdd d S )Nr6  ri   rD  )r|  r$  r   r  rp   r~   r  r  r   )r[   r   r3   r   rZ   Zbroadcast_arraysemptyr   r   r   r   ravelr   r  r  r   r  )rc   rL  r  rR   r  ccddrM  r   indr  r  c1Zd1r/   r/   r0   test_trapezoid_vect  s"    &z!TestTrapezoid.test_trapezoid_vectc                 C   s0   t ddd}ttj|ddtj| d S r  )r[   r  r   r3   r@   rZ   r0  rU  r/   r/   r0   
test_trapz  s    zTestTrapezoid.test_trapzN)	r   r   r   r  r  r   r  r
  r  r/   r/   r/   r0   r  D  s   	r  c                   @   s   e Zd Zdd ZdS )
TestTriangc                 C   s$  t jdd  ttjddd ttjddd ttjddd ttjddd ttjddd ttjddd	 ttjddd ttjddd
 ttjddd ttjddd ttjddd ttjddd W d    n1 s0    Y  d S )Nraiser=  r   rm   ri   r  r   rn   rX   r   r$  )r[   r$  r   r3   r  rZ   ra   rf   r/   r/   r0   test_edge_cases  s    zTestTriang.test_edge_casesN)r   r   r   r  r/   r/   r/   r0   r    s   r  c                   @   s@   e Zd Zejdddgdd Zejdg ddd	 Zd
S )TestMaxwellr  )r  gCR5&.)rk   g7q?c                 C   s   t tj||dd d S r  )r   r3   maxwellr   r  r/   r/   r0   rS    s    zTestMaxwell.test_sfr.  ))r  g1!@)g    ?g?)g      <gCuJ!@c                 C   s   t tj||dd d S ro   )r   r3   r  rT  r/  r/   r/   r0   rV    s    zTestMaxwell.test_isfNr  r/   r/   r/   r0   r    s   
r  c                   @   s   e Zd Zdd Zdd ZdS )
TestMielkec                 C   s\   d\}}t t||dtj t t|ddtj ttt|dd d S )N)g rh@gv?r   r  r  )r   r3   mielker  r[   r   r   r  )rc   rO   rE   r/   r/   r0   r    s    zTestMielke.test_momentsc                 C   s@   t ddd}d\}}ttj|||| tj||| d S )Nrk   rT   r   )g@gHzG@)r[   r  r   r3   burrrZ   r  )rc   rR   rO   rE   r/   r/   r0   test_burr_equivalence  s    z TestMielke.test_burr_equivalenceN)r   r   r   r  r  r/   r/   r/   r0   r    s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestBurrc              	   C   s   t jddgt jddgt jddgt jddgt jddgt jddgt jd	d
gg}dd |D }dd |D }t|| dd |D }dd |D }t|| d S )N)r   r   )ri   rX   )r   r   )rX   ri   r  ri   r  )r   rX   rm   c                 S   s&   g | ]\}}}|j |jg|R  qS r/   r  r  r/   r/   r0   r:     r;   z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r/   r/   r  r/   r/   r0   r:     r;   c                 S   s&   g | ]\}}}|j |jg|R  qS r/   )r   r-   r  r/   r/   r0   r:     r;   c                 S   s   g | ]\}}}t |qS r/   )r[   rG  r  r/   r/   r0   r:     r;   )r3   Zfiskr  burr12r   )rc   r   r  r  r/   r/   r0   test_endpoints_7491  s    






	
zTestBurr.test_endpoints_7491c                 C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)r  r   )g4U?g&MI?)r3   r  r   )rc   rL  r  r   varianceZmean_hcZvariance_hcr/   r/   r0   test_burr_stats_9544  s
    
zTestBurr.test_burr_stats_9544c           	      C   sF  d\}}t ||  \}}tt| tt| d\}}t ||  \}}tt| tt| d\}}t jtg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d S )N)ri   r   )rk  r   r  )r  r   )r  r   )r  r   )r3   r  r   r[   r*  r  _munpr   )	rc   rL  r  r   r  e1e2Ze3Ze4r/   r/   r0   test_burr_nan_mean_var_9544  sL    "z$TestBurr.test_burr_nan_mean_var_9544c                 C   s6   d\}}g d}g d}t tj||||dd d S )N)r  r  )rP   rG  r  r  )g+&?gI$_@gKT@gؗVAr  rq   )r   r3   r  rT  )rc   rL  r  r5  r:  r/   r/   r0   test_burr_isf$  s    zTestBurr.test_burr_isfN)r   r   r   r  r  r  r  r/   r/   r/   r0   r    s   *r  c                   @   s.   e Zd Zejdddgdd Zdd ZdS )	
TestBurr12zscale, expected)r  gd~)r  gR톇T c                 C   s(   t jjdddd|d}t||dd d S )Ng     jAg     jAr   r  r  rz   rq   )r3   r  rX  r   )rc   rW   rL   r  r/   r/   r0   rY  1  s    zTestBurr12.test_delta_cdfc           	      C   sp   d\}}t jd }dt jd d  }t jd d|d   }t j}||||g}t||d	}t||d
d d S )Nr  r   r   rX   r<  r   r  rk  r  r  rq   )r[   r\   r   r3   r  r   )	rc   rL  r  r   r  r  r&  r:  r   r/   r/   r0   test_moments_edgeH  s    
zTestBurr12.test_moments_edgeN)r   r   r   r   r   r   rY  r   r/   r/   r/   r0   r  /  s   
r  c                   @   s  e Zd Zg dZg dZg dZeeeefZg dZ	ddddd	ej
gZg d
Zeeee	eeeZddddej
dfddej
dfddej
dfgZdd Zejjdd ZejeZdZeejeeZe !eZ"W d   n1 s0    Y  ej#de"d dd Z$ej#de"d dd Z%ejjej&dej#de"d d d! Z'd"d# Z(ejj)d$d% Z*ej#d&ed'd( Z+ejjej&dd)d* Z,ejj)d+d, Z-d-d. Z.d/d0 Z/d1d2 Z0dS )3TestStudentizedRange)gQ1@g33333F@g
ףp=*K@gHzM@g/$@g~j!@g33333$@g{Gz&@gh|?5	@gQ8@g&1@g|?5@g@gOn@g!rhm@gB`"@r  gʡEs@g|?5^@g/$@gV-@g/$@gF@g?5^I@)gRV@gffffffl@gp@g     r@gʡ @gHzG/@gQ82@gQ3@g!rh@g     @g+@gʡEs @gjt@gB`"[@g@gnJ@gV-@gFx@gsh|?@g+N@g/$@g @g@gGz@)gfffff"@i  i
  i  gHzG2@g(\A@gQC@gfffffE@g @gNbX9"@gHz$@g(\&@g-@gn@@gw/@g=
ףp @gJ+@g-'@gn@gHz@gV-@gnJ@g$@g/ݤ@)rc  r  r>  r   r   rS   r  x   )rX   r  r  r  )rP   r   i)#  gupm1f?)r   rS   rw   g?<-=A?gv"?r   gd暕?ga-A?c                 C   s<   | j D ]0\}}|\}}}tj|||}t||dd qd S )Nr^  rq   )r   r3   studentized_rangera   r   )rc   pvkr5  Z
p_expectedr  rO   Zres_pr/   r/   r0   test_cdf_against_tables  s    
z,TestStudentizedRange.test_cdf_against_tablesc                 C   s<   | j D ]0\}}|\}}}tj|||}t||dd qd S )NMb@?rq   )r   r3   r#  r   r   )rc   r$  Z
q_expectedr-  r  rO   Zres_qr/   r/   r0   test_ppf_against_tables  s    
z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonNcase_resultZcdf_datac                 C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S 	Nsrc_case	mp_resultr5  rO   r  expected_atolexpected_rtolr  )r3   r#  ra   r   rc   r(  r*  r+  Zqkvr   r/   r/   r0   test_cdf_against_mp  s    z(TestStudentizedRange.test_cdf_against_mpZpdf_datac                 C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S r)  )r3   r#  rZ   r   r.  r/   r/   r0   test_pdf_against_mp  s    z(TestStudentizedRange.test_pdf_against_mpz+intermittent RuntimeWarning: invalid value.Zmoment_datac                 C   sz   |d }|d }|d |d |d f}t jdd tjj| }W d    n1 sT0    Y  t|||d |d	 d
 d S )Nr*  r+  r  rO   r  r  r  r,  r-  r  )r[   r$  r3   r#  r  r   )rc   r(  r*  r+  Zmkvr   r/   r/   r0   test_moment_against_mp  s    *z+TestStudentizedRange.test_moment_against_mpc                 C   s4   d\}}t tjjdtj||fd}t|d d d S )Nr   rS   r   r{  r   )r   r3   r#  rZ   r[   r   r   )rc   rO   r  r   r/   r/   r0   test_pdf_integration  s    z)TestStudentizedRange.test_pdf_integrationc                 C   s\   d\}}t jdddd}tj|||dd  }tj|||}t||}t||dd d S )	Nr2  r   rS   rk   )stepr   r^  rq   )r[   r   r3   r#  ra   rZ   r   r   )rc   rO   r  rR   Zy_cdfZ	y_pdf_rawZy_pdf_cumulativer/   r/   r0   test_pdf_against_cdf  s    
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc                 C   sV   |\}}}}t jdd  tj|||}W d    n1 s>0    Y  t|| d S )Nr  r  )r[   r$  r3   r#  ra   r   )rc   r6  r5  rO   r  Zr_resr   r/   r/   r0   test_cdf_against_r  s    .z'TestStudentizedRange.test_cdf_against_rc                 C   s   t jdd, tjddgddgddg}W d    n1 s>0    Y  t|jd	 tjt	d
d( tjdddgg d W d    n1 s0    Y  d S )Nr  r  r   rX   r   rv   rS   rV  r  z...could not be broadcast...r   )rS   rV  r  )
r[   r$  r3   r#  r  r   r  r   r   r   r  r/   r/   r0   test_moment_vectorization  s
    :z.TestStudentizedRange.test_moment_vectorizationc              	   C   s   t  ^}tjdd2 |t tjg d\}}}}W d    n1 sL0    Y  W d    n1 sj0    Y  ttj	|| d S )Nr  r  r   )
r   r[   r$  rI   r   r3   r#  r  r   Z	_argcheck)rc   r0  rO   r\  r   r/   r/   r0   test_fitstart_valid  s    
Tz(TestStudentizedRange.test_fitstart_validc                 C   sh   t jddtj}t jddd}t||ddd t jddtj}t jddd}t||ddd d S )Nr   rS   韆 r^  r  )r3   r#  rZ   r[   r   r   ra   )rc   r   
res_finiter/   r/   r0   test_infinite_df  s    z%TestStudentizedRange.test_infinite_dfc                 C   s   t jddd}t jddd}t jddd}ttt||ddd t||ddd t jddd}t jddd}t jddd}ttt||ddd t||ddd d S )Nr   rS   r   r:  i r  r  )r3   r#  rZ   r0  AssertionErrorr   ra   )rc   r   r;  Z
res_sanityr/   r/   r0   test_df_cutoff  s    

z#TestStudentizedRange.test_df_cutoffc                 C   s8   d\}}}t j|||}t|ddd |dks4J d S )N)gaRA@r   iS  r   rG  r~   )r3   r#  r   r   )rc   r5  rO   r  r-  r/   r/   r0   test_clipping  s    
z"TestStudentizedRange.test_clipping)1r   r   r   Zq05Zq01Zq001r[   r=  qsZpsr   vskslistr   r%   r   Zr_datar%  r   r   r  r'  ospathdirnamer  Zpath_prefixrelative_pathopenr'  filejsonr  Zpregenerated_datar   r/  r0  Zxfail_on_32bitr1  r3  r   r5  r7  r8  r9  r<  r>  r?  r/   r/   r/   r0   r!  W  sT   
(








r!  c                   C   sR   t tjddddd t tjddddd t tjjdd	d
ddddd d S )Ng2g?rS   test_540_567)r  r!  g2gk?g;B.?gͣh?gHŎ*?rU   g.y?)r   r3   r  ra   r/   r/   r/   r0   rK    s    rK  c                   C   s   t tjdddd d S )Nrn   rX   ri   r  r  r/   r/   r/   r0   test_regression_ticket_1326'  s    rL  c               	   C   s  t ddd} t jdd dddt dgdgdggfD ]6}tj| |}t|dk  tt 	|   q:t dgdgd	gg}tj| |}W d    n1 s0    Y  tt 	|   t|d
 dk  t|d dk  t|d dk
  t|d dk
  d S )N      r  rQ   r  r  rn   rP  r'  rm   r   r   rX   )r[   r  r$  r   r3   r(   rZ   r   r   r*  r   )rR   r_  r-  r/   r/   r0   test_regression_tukey_lambda,  s    ",rO  zdocstrings strippedr  c                   C   s$   t dtjjv t dtjjv  d S )Nzpdf(x, mu, loc=0, scale=1)zpmf(x,)r   r3   r9  r\  r/   r/   r/   r0   test_regression_ticket_1421A  s    rP  c                   C   s  t jdd tt tjdt j tt tjdt j tt tj	dt j tt tj
dt j tt tjdt j tt tjdt j tt tjdt j tt tjdt j tt tjt jd tt tjt jd tt tj	t jd tt tj
t jd tt tjt jd tt tjt jd tt tjt jd tt tjt jd W d    n1 s0    Y  d S )Nr  r  r   ri   )r[   r$  r   r*  r3   r  rg  r   ra   r  r   rZ   r   r   rT  rE  r  rd  r/   r/   r/   r0    test_nan_arguments_gh_issue_1362G  s"    rQ  c                  C   sj  t jd t g d} tjj| d | d | d dd}t jdd	& t tjj|d
d}W d    n1 sr0    Y  t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t jd d}d}tj
j|ddd}t tj
j||d}t |t || d  g}t	||dd d S )Ni.  )r$  rn   ri   r   r   rX   rT   r   r  rN  rn   r   r  ri   )r   rV   r$  )r   rV   rd  r   rm   r   )r[   r   r   r   r3   r   r   r$  r   r   r  r  r   )truerR   rE  rV   r   rL   r/   r/   r0   test_frozen_fit_ticket_1536\  s&     4 rS  c                  C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 rT   r   )g
ףp=
?gʡE?r   r  )r[   r   r   r3   r  r   r   r   )r   rE  rL   r/   r/   r0   test_regression_ticket_1530x  s
    rT  c                  C   sV   t jd t jd} dD ]4}tj| | \}}t||dd t|ddd qd S )Nr   r|  )r  g   6Ar  r~   rD  )r[   r   r   r  r3   r  r   r   )rR   offsetrV   rW   r/   r/   r0   test_gh_pr_4806  s    rV  c                  C   s   t jj ddd} dtjd d ddg}t| |dd t jj d	dd} g d
}t| |dd t jj ddd} g d}t| |dd d S )Nr   r  r  rX   r   r  rS   r  g
ףp=
	@)r   gz5v?r   gRTgQ?)r   gNg @r   gJFٻ)r3   r(   r[   r\   r   )r  rL   r/   r/   r0   "test_tukeylambda_stats_ticket_1545  s    rW  c                   C   s   t ttjdd d S )Nrl  r,  )r   r[   r  r3   r9  rd  r/   r/   r/   r0   test_poisson_logpmf_ticket_1436  s    rX  c                  C   s4   ddg} | D ]"\}}t jj |dd}t|| qdS )a  Test the powerlaw stats function.

    This unit test is also a regression test for ticket 1548.

    The exact values are:
    mean:
        mu = a / (a + 1)
    variance:
        sigma**2 = a / ((a + 2) * (a + 1) ** 2)
    skewness:
        One formula (see https://en.wikipedia.org/wiki/Skewness) is
            gamma_1 = (E[X**3] - 3*mu*E[X**2] + 2*mu**3) / sigma**3
        A short calculation shows that E[X**k] is a / (a + k), so gamma_1
        can be implemented as
            n = a/(a+3) - 3*(a/(a+1))*a/(a+2) + 2*(a/(a+1))**3
            d = sqrt(a/((a+2)*(a+1)**2)) ** 3
            gamma_1 = n/d
        Either by simplifying, or by a direct calculation of mu_3 / sigma**3,
        one gets the more concise formula:
            gamma_1 = -2.0 * ((a - 1) / (a + 3)) * sqrt((a + 2) / a)
    kurtosis: (See https://en.wikipedia.org/wiki/Kurtosis)
        The excess kurtosis is
            gamma_2 = mu_4 / sigma**4 - 3
        A bit of calculus and algebra (sympy helps) shows that
            mu_4 = 3*a*(3*a**2 - a + 2) / ((a+1)**4 * (a+2) * (a+3) * (a+4))
        so
            gamma_2 = 3*(3*a**2 - a + 2) * (a+2) / (a*(a+3)*(a+4)) - 3
        which can be rearranged to
            gamma_2 = 6 * (a**3 - a**2 - 6*a + 2) / (a*(a+3)*(a+4))
    )r  )ri   rA  rn   rB  )rm   )gUUUUUU?r  g^cQg333333r  r  N)r3   r  r   )r  r-   Z
exact_mvskr  r/   r/   r0   test_powerlaw_stats  s    rY  c                  C   s   t jdd} t| d d S )Nr   r   rn   )r3   r  r   r   r-  r/   r/   r0   test_powerlaw_edge  s    r[  c                  C   sh   t jdd} t| d t jdg d} t| tjddg t jdg d} t| tjdtj g d S )Nr   r   rn   )r$  r  rk  r  )r3   rx  r   r   rZ   r[   r   rZ  r/   r/   r0   test_exponpow_edge  s    
r\  c                  C   s   t jddd} t| d d S )Nr   r   r  )r3   gengammarZ   r   rZ  r/   r/   r0   test_gengamma_edge  s    r^  za, c, ref, tol))g    `6Ar   g2j!@rp   )r  r   ggA@rp   )ra  r   r  rp   )r  r   g #@rz   )g    `FArK  gI~mrp   )gl$W}Lr	  g.I#Urp   c                 C   s   t tj| |||d d S r  )r   r3   r]  r?   )r-   rL  r:  r  r/   r/   r0   test_gengamma_extreme_entropy  s    r_  c                  C   s@   t jddd} | dksJ t jddd}|tj ks<J d S )Nr   r   r   rn   )r3   r]  rZ   r   r[   r   )r-  r  r/   r/   r0   !test_gengamma_endpoint_with_neg_c  s    r`  c                  C   s8   t jddd} t| d t jddd} t| d d S )Nr   r,  r  g>rS   gqq?)r3   r]  r  r   rZ  r/   r/   r0   test_gengamma_munp  s    
ra  c               	   C   s   t g d} t jddZ t 4}|td |td tj	|  W d    n1 s\0    Y  W d    n1 sz0    Y  d S )N)0g>X*ȿgPix#?g=?g&^?goϿg뵏˿gO_ZQ?g\?g~?g)/?gRܶ?g핚οgH߃[g?gS"gm_ пg7k?g#BF?gKU=?gT?gZg[Qs?g2?g6Hwƭ8?g*-
?ga]?g'?g޻?g?J_ ?g~sw?g0FfͿgg"@ӿg?%:˿g&zM?g?Gg	F?g~,g HgW2ҿgTzy?gwmǿg @gW=ֿg	't?g".v1glg.Hꮿg,?g*˿r  r  z:The maximum number of subdivisions .50. has been achieved.z-floating point number truncated to an integer)
r[   r   r$  r   rI   r   r1  r3   rj  r   )r  r0  r/   r/   r0   test_ksone_fit_freeze  s    rb  c                  C   s   t ttddd } g d}tt | |dd tt | d j|dd tj| d d	 j	}t 
tj| tj|  }t||d	d d S )
Nr   r"  r   )gDB.g8_$g%`OAgjhwHRgWMB@v`g7VY}igۦx\Arg	xg#g/dg3$gegd)gNq{3gيGǓgr4g37'
gfFg?dJgضg2,
gm%gӅJgz;pgɿ{gk2gij<%giVSͶgBR4g
Q/Mr  r~   y        +=y        |=rG  )r[   r   rC  r  r   r3   r  rg  realimagr   r   )rR   rL   ZderivZderiv_expectedr/   r/   r0   test_norm_logcdf  s    	re  c                  C   sT   t g d} t g d}tj| }t||dd tj|}t|| dd d S )N)rw   r  ri   rP   rk   r  )g~V1?r  gba"?g܄4ťY?r  g$%+IrG  rq   rz   )r[   r   r3   r   ra   r   r   )rR   rL   r  rM  r/   r/   r0   test_levy_cdf_ppf6  s    rf  c                  C   s:   t g d} t g d}tj| }t||dd d S )N)r  r  gMraB3Gr  )gep[>g}XEQ=gѭEG<g?_%~:r  rq   )r[   r   r3   r   r   r   rR   rL   r  r/   r/   r0   test_levy_sfN  s    rh  zp, expected_isf))r  gj1e2H)r  g6C)r  gnE@)r  g!^x1?)r>  gZ?)g   ?g:}!Nu?c                 C   s   t j| }t||dd d S )Nr  r~   )r3   r   rT  r   )r-  Zexpected_isfrR   r/   r/   r0   test_levy_isfe  s    ri  c                  C   s:   t g d} t g d}tj| }t||dd d S )N)gMb{Gzg{Gztg~jtX)g#]<gOul2;gޢا6g̅7=!rz   rq   )r[   r   r3   r   r   r   rg  r/   r/   r0   test_levy_l_sfq  s    rk  c                  C   s8   t g d} tj| }tj|}t|| dd d S )N)g [n<r$  r  r  rq   )r[   r   r3   r   rT  r   r   )r-  rR   r5  r/   r/   r0   test_levy_l_isf}  s    rl  c                   C   s|   t tjddddd t tjddddd t tjddddd t tjd	d
d
dd t tjdd
d
dd d S )Nrc  i i  i  )g      c@g     h@g=
ףp=?Gz?)g      c@g     h@r  rT   r  r   )r   r3   r  re  r   r/   r/   r/   r0   test_hypergeom_interval_1802  s    rn  c                  C   sr  t jd t jdddd} tttjj| dddd	 tttjj| ddd
dd	 tttjj| ddd
d tttjj| ddddd tttjj	ddddd tttjj
| ddddd tttjj| ddddd tttjjddddd tttjjddddd tttjj| ddddd tj| dd tj| ddd
 tjdd tjddd
 tjddd
d tj	ddd
d tjtjj	dddd tjj| ddd	 tttjj| ddd
 tttjj| ddd
d	 tttjj| ddd	 tttjj| dd
ddd	 tttjj| dd
ddd tttjj| dd
dddd	 tttjj| dd
ddddd	 tj| dd
ddd d S )Nr   rP   rE  rv   numrX   r   r  rW  r   ri   rU   rm   r  rQ  r   r  r  )r[   r   r   r  r0  r   r3   r  rZ   r   ra   r   r?   r   r  r  r5  r  r]  r   r/   r/   r0   test_distribution_too_many_args  s8    rq  c                  C   sH   t jtddddd} t jtddddd}t| |ddd d S )	Nr  r  ru  rX   gYZ@r  r   r  )r3   ncx2ra   r[   r   Z_cdfvecr   r  r/   r/   r0   test_ncx2_tails_ticket_955  s    rs  c               	   C   s   t  R t dt ttjdt	dddd tj
dt	ddd} W d    n1 s`0    Y  tt|   t  H t dt ttjddd	d ttj
ddd	d
 W d    n1 s0    Y  d S )Nr*  r   iT  i^  rX   r   r^  r   r  gsq6)r.  r/  r0  r1  r   r3   rr  rZ   r[   r   r   r   r2  r   r   )Zlogvalr/   r/   r0   test_ncx2_tails_pdf  s    
6
rt  zmethod, expectedra   gu%>g	;Q=rZ   g<x>gRz\R>r   gʎK$/gԆX1r   gfHu@ge:@c                 C   s,   t tj| dddgdd}t||dd d S )NrP   r   r   rS   )r  r\  rp   r~   )r   r3   rr  r   )r3  rL   r  r/   r/   r0   test_ncx2_zero_nc  s    ru  c                  C   s4   t jjdddd} t jjddd}t| |dd d S )NrS   r   r   )r\  r  r}   )r\  r}   rp   r~   )r3   rr  r   r  r   )r  rL   r/   r/   r0   test_ncx2_zero_nc_rvs  s    rv  c                  C   s,   dt dd } ttjjdd| dd d S )NrS   rv   r  r   r\  r  r   )r[   r   r   r3   rr  ra   )r  r/   r/   r0   test_ncx2_gh12731  s    rx  c                  C   sB   t g d} d\}}tjj| ||d}g d}t||dd d S )N)gю]	@gj%@gb	y/7@g H@gIZ@gXl@g'/2?8@gݰmА@gU@gy]`'@g@g*\@g48c@)r  gh ?8@rw  )r  r  r  r  r  g?gy[qD?rn   rn   rn   rn   rn   rn   rZ  r~   )r[   r   r3   rr  r   r   )rR   nur_  r   Zsf_expectedr/   r/   r0   test_ncx2_gh8665  s
    
rz  c               	   C   sx   d} d}t jtjd| |tjd| |dd}tj|| |}tj|| | t d|  d|  }t||d	d
 d S )Ni,  i  r  r>  r^  ro  rX   r   r^  r~   )	r[   r  r3   rr  r   rZ   r  r  r   )r\  r  rR   Zncx2_pdfZgauss_approxr/   r/   r0   test_ncx2_gh11777   s    &r{  zx, c, expected))rX   r   g|1q?)rX   rX   g~?)r  r   V<3T1=) 7yQCr   u	lY<)r  g   vHGBg^b!*1=)r  r,  gS?c                 C   s   t j| |}t||d d S Nr  )r3   Z
foldcauchyr   r   rR   rL  rL   r   r/   r/   r0   test_foldcauchy_sf/   s    r  r  ))rX   g?)r  r|  )r}  r~  )g6ްPg8R#/c                 C   s   t j| }t||d d S r  )r3   r)  r   r   )rR   rL   r   r/   r/   r0   test_halfcauchy_sf=   s    r  zp, expected))g?g*wӄZ>)333333?gN9?)ri   r  )rk   g8<,O@)r  g:B)gl ׶w/gMb}[Pc                 C   s   t j| }t|| d S re   )r3   r)  rT  r   )r-  rL   rR   r/   r/   r0   test_halfcauchy_isfI   s    r  c                  C   s"   t jddd} t| dd d S )Nr   r   r  )r3   r  r   ra   r  r/   r/   r0   test_foldnorm_zeroU   s    r  ))rX   r   gwo{?)r  r   gGd-P/)rS   r   gof?)r  r   gOul";c                 C   s   t j| |}t||d d S )Nr  )r3   r  r   r   r  r/   r/   r0   test_foldnorm_sfi   s    r  c                  C   s   t j g ddd} t j ddgdd}tdd |D }t||  t j g d} t j dd	g}td
d |D }t||  d S )N)rn   ri   r  r   ri   r  c                 s   s   | ]}t jt j|f V  qd S re   r[   r  r   r  r/   r/   r0   r  x   r;   z-test_stats_shapes_argcheck.<locals>.<genexpr>)rX   r  r   rX   r  c                 s   s   | ]}t j|t jf V  qd S re   r  r  r/   r/   r0   r  ~   r;   )r3   r   tupler   r   )Zmv3Zmv2Zmv2_augmentedr/   r/   r0   test_stats_shapes_argchecks   s    
r  c                   @   s   e Zd Zdd ZdS )
_distr_genc                 C   s   dS Nr|  r/   rc   rR   r-   r/   r/   r0   _pdf   s    z_distr_gen._pdfNr   r   r   r  r/   r/   r/   r0   r     s   r  c                   @   s   e Zd Zdd ZdS )_distr2_genc                 C   s   d| | S r  r/   r  r/   r/   r0   _cdf   s    z_distr2_gen._cdfN)r   r   r   r  r/   r/   r/   r0   r     s   r  c                   @   s   e Zd Zdd Zdd ZdS )_distr3_genc                 C   s   || S re   r/   rc   rR   r-   r.   r/   r/   r0   r     s    z_distr3_gen._pdfc                 C   s   d| | S r  r/   r  r/   r/   r0   r     s    z_distr3_gen._cdfNr   r   r   r  r  r/   r/   r/   r0   r     s   r  c                   @   s   e Zd Zdd Zdd ZdS )_distr6_genc                 C   s   || | S re   r/   r  r/   r/   r0   r     s    z_distr6_gen._pdfc                 C   s   d| | S r  r/   r  r/   r/   r0   r     s    z_distr6_gen._cdfNr  r/   r/   r/   r0   r     s   r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestSubclassingExplicitShapesc                 C   s$   t ddd}t|jdddd d S )Ndummyr-   r  r   r   r  r|  r  r   rZ   rc   dummy_distrr/   r/   r0   test_correct_shapes   s    z1TestSubclassingExplicitShapes.test_correct_shapesc                 C   s,   t ddd}tt|jdfi tdd d S )Nr  Ar  r   r  )r  r0  r   rZ   r   r  r/   r/   r0   test_wrong_shapes_1   s    z1TestSubclassingExplicitShapes.test_wrong_shapes_1c                 C   s4   t ddd}tdddd}tt|jdfi | d S )Nr  za, b, cr  r   rX   r   rZ  )r  r   r0  r   rZ   )rc   r  r   r/   r/   r0   test_wrong_shapes_2   s    z1TestSubclassingExplicitShapes.test_wrong_shapes_2c                 C   s"   t ddd}tttfi | d S )Nr  r|  r  )r   r0  r   r  rc   r   r/   r/   r0   test_shapes_string   s    z0TestSubclassingExplicitShapes.test_shapes_stringc                 C   s"   t ddd}tttfi | d S )Nr  z(!)r  r   r0  SyntaxErrorr  r  r/   r/   r0   test_shapes_identifiers_1   s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c                 C   s"   t ddd}tttfi | d S )Nr  Z4chanr  r  r  r/   r/   r0   test_shapes_identifiers_2   s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c                 C   s"   t ddd}tttfi | d S )Nr  zm(fti)r  r  r  r/   r/   r0   test_shapes_identifiers_3   s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c                 C   s"   t ddd}tttfi | d S )Nr  za=2r  r  r  r/   r/   r0   "test_shapes_identifiers_nodefaults   s    z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc                 C   s"   t ddd}tttfi | d S )Nr  z*argsr  r  r  r/   r/   r0   test_shapes_args   s    z.TestSubclassingExplicitShapes.test_shapes_argsc                 C   s"   t ddd}tttfi | d S )Nr  z**kwargsr  r  r  r/   r/   r0   test_shapes_kwargs   s    z0TestSubclassingExplicitShapes.test_shapes_kwargsc                 C   s"   t ddd}tttfi | d S )Nr  za, b, c, lambdar  r  r  r/   r/   r0   test_shapes_keywords   s    z2TestSubclassingExplicitShapes.test_shapes_keywordsc                 C   s@   G dd dt j}|dd}t|jdddt jdd  d S )Nc                   @   s   e Zd Zdd ZdS )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc                 S   s   t j|| S re   r3   r  r  r  r/   r/   r0   r     s    zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   	_dist_gen   s   r  r-   r   ri   rX   r  r3   r=   r   rZ   r  rc   r  r9   r/   r/   r0   test_shapes_signature   s    
z3TestSubclassingExplicitShapes.test_shapes_signaturec                 C   s>   G dd dt j}|dd}tt|jdfi tddd d S )	Nc                   @   s   e Zd Zdd ZdS )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc                 S   s   t j|| S re   r  r  r/   r/   r0   r     s    zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r     s   r  r  r  ri   r   rX   r  )r3   r=   r0  r   rZ   r   r  r/   r/   r0   "test_shapes_signature_inconsistent   s    
z@TestSubclassingExplicitShapes.test_shapes_signature_inconsistentc                 C   sz   G dd dt j}|dd}t|jdddt jdd  t|ddt jdd  tt|jdfi tdd d S )	Nc                   @   s   e Zd Zdd ZdS )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc                 W   s   |d }t j|| S Nr   r  )rc   rR   r   extra_kwargr/   r/   r0   r     s    zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r     s   r  r  r  ri   !   r  )Zxxx)r3   r=   r   rZ   r  r0  r   r   r  r/   r/   r0   test_star_args   s
    
 z,TestSubclassingExplicitShapes.test_star_argsc                 C   sj   G dd dt j}|dd}t|jddddt jdd d  t|dddt jdd d  d S )	Nc                   @   s   e Zd Zdd ZdS )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc                 W   s   |d }t j|| | S r  r  )rc   rR   rU  r   r  r/   r/   r0   r     s    zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r     s   r  zoffset, extra_kwargr  ri   o   r  )rU  r  r  r  r/   r/   r0   test_star_args_2   s    
z.TestSubclassingExplicitShapes.test_star_args_2c                 C   s<   G dd dt j}|dd}t|jdddt jd d S )Nc                   @   s   e Zd Zdd ZdS )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc                 _   s   | dd}tj|| S )Nr  r   )popr3   r  r  )rc   rR   r   kwargsr  r/   r/   r0   r  	!  s    zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfNr  r/   r/   r/   r0   r  !  s   r  r  r  r   r   r  r  )rc   r  r9   r/   r/   r0   test_extra_kwarg!  s    
z.TestSubclassingExplicitShapes.test_extra_kwargc                 C   s8   G dd dt j}|dd}t|dt jd d S )Nc                   @   s   e Zd Zdd ZdS )zITestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_genc                 S   s   t j|S re   )r3   r  rZ   rU  r/   r/   r0   r  !  s    zNTestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r  !  s   r   r  ri   r  r  r/   r/   r0   test_shapes_empty_string!  s    
z6TestSubclassingExplicitShapes.test_shapes_empty_stringN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r     s"   		r  c                   @   sl   e Zd Zdd Zdd Zejjedddd Z	ejjeddd	d
 Z
dd Zdd Zdd Zdd ZdS )TestSubclassingNoShapesc                 C   s"   t dd}t|jdddd d S )Nr  r  r   r  r|  r  r  r/   r/   r0   test_only__pdf !  s    
z&TestSubclassingNoShapes.test_only__pdfc                 C   s"   t dd}t|jdddd d S )Nr  r  r   r  )r  r   rZ   r  r/   r/   r0   test_only__cdf$!  s    
z&TestSubclassingNoShapes.test_only__cdfdocstring strippedr  c                 C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  r  r   r-   zlogpdf\(x, a, loc=0, scale=1\))	r  r   numargsr   refindallr\  r   r   rc   r  r   r/   r/   r0   test_signature_inspection)!  s    
z1TestSubclassingNoShapes.test_signature_inspectionc                 C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  r  rX   r  z!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r  r   r  r  r\  r   r   r  r/   r/   r0   test_signature_inspection_2args4!  s    
z7TestSubclassingNoShapes.test_signature_inspection_2argsc                 C   s   t ttdd d S )Nr  r  )r0  r   r  rf   r/   r/   r0   0test_signature_inspection_2args_incorrect_shapes>!  s    zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc                 C   s.   G dd dt j}tt|fi tdd d S )Nc                   @   s   e Zd ZdddZdS )z>TestSubclassingNoShapes.test_defaults_raise.<locals>._dist_genr|  c                 S   s   dS r  r/   r  r/   r/   r0   r  E!  s    zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r|  r  r/   r/   r/   r0   r  D!  s   r  r  r  r3   r=   r0  r   r   rc   r  r/   r/   r0   test_defaults_raiseB!  s    z+TestSubclassingNoShapes.test_defaults_raisec                 C   s.   G dd dt j}tt|fi tdd d S )Nc                   @   s   e Zd Zdd ZdS )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc                 W   s   dS r  r/   )rc   rR   r-   r   r/   r/   r0   r  L!  s    zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r  K!  s   r  r  r  r  r  r/   r/   r0   test_starargs_raiseI!  s    z+TestSubclassingNoShapes.test_starargs_raisec                 C   s.   G dd dt j}tt|fi tdd d S )Nc                   @   s   e Zd Zdd ZdS )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc                 [   s   dS r  r/   )rc   rR   r-   r  r/   r/   r0   r  S!  s    zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfNr  r/   r/   r/   r0   r  R!  s   r  r  r  r  r  r/   r/   r0   test_kwargs_raiseP!  s    z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r  r  r   r   r  DOCSTRINGS_STRIPPEDr  r  r  r  r  r  r/   r/   r/   r0   r  !  s   


	r  r  c                  C   sT   g d} t jD ]@}tt |}t|t jt jfr| D ]}tt||j	d u  q2qd S )N)z,\s*,z\(\s*,z^\s*:)
r3   rH   r   r  r<   r=   r   r  searchr\  )Zbadonesdistnamer9   regexr/   r/   r0   rX  X!  s    

rX  c                   C   s4   t tjtjddd t tjtjddd d S )NrS   rV  r   r  rP   r   )r   r3   rz  r   r[   r   rr  r  r/   r/   r/   r0   test_infinite_inputb!  s    r  c                  C   s&   t jt jddd} t| d d S r  )r3   lomaxr   ra   r   rZ  r/   r/   r0   test_lomax_accuracyg!  s    r  c                  C   s&   t jt jddd} t| d d S r  )r3   rv  r   ra   r   rZ  r/   r/   r0   test_truncexpon_accuracym!  s    r  c                  C   s*   t jt jddd} t| ddd d S )Nr  r   rp  r   r  )r3   r   rT  r   r   rZ  r/   r/   r0   test_rayleigh_accuracys!  s    r  c                  C   s   t jddh} t d tjdd tjdd tjdd tjt	j
 d t| }t|d W d   n1 sz0    Y  dS )zregression test for gh-6219T)r)  alwaysri   r   rn   N)r.  r/  r0  r3   rY  ra   rZ   r   r   r[   r   r   r   )r
  Znumber_of_warnings_thrownr/   r/   r0    test_genextreme_give_no_warningsy!  s    
r  c                  C   s   d} t jd}t|d|  d dd t jd}t|| d dd t jd}t|d t jjd	d
d}t|| d td
 d dd t jd
}t|d|  d dd t jd}t|d|  d dd d S )Ngox?rP  rX   r   r  rq   r   r  r'  rS   r  r   r}  r  rV  )r3   rY  r?   r   r   r[   rG  )Zeuler_gammar(  r/   r/   r0   test_genextreme_entropy!  s    
 r  c                  C   s   d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d S )	Nr   r  g'b%4gQ@r  gؗҜ;r   g.l6?)r3   rY  r   r   rT  )rR   rE   r  r/   r/   r0   test_genextreme_sf_isf!  s    




r  c                  C   s"   d} t j| dd}t|d d S )Nr8  rX   r   gH&8>)r3   r  r   r   )Zprobr  r/   r/   r0   test_burr12_ppf_small_arg!  s    	r  c                  C   s6  t ddddd } tjj| ddd}t g d	}t||d
d tjj| ddd}t g d}t||d
d tjj| ddddd}t g d}t||d
d tjj| ddd}t g d}t||d
d tjj| ddd}t g d}t||d
d tjj| ddddd}t g d}t||d
d dS )z
    All values are calculated using the independent implementation of the
    ROOT framework (see https://root.cern.ch/).
    Corresponding ROOT code is given in the comments.
    rM  r  r  Nr   r  rm   )r  r  )gC,d	Ɣ?gH㸘?g5?gM"M#w?gɫs^?g @?gƴ?g@w?ɫs^?|?q ?g C?r  r  gJó?g,BV\ۤ?g;?g#ek?g%ǓE?g(Ȍx?g>J>r  rq   r  )g#{`?gdf?g Jq?gSS){?g'	w?uL? T)?cAJ?GTn?R1#?gA]P?r  r  r  r  gvӢ?gKq?gL?g
	N<!?gAw>ri   )r  r  rV   rW   )g=aO}?gI8?g#T?aW)?ǓI?
J?E?d۳?GTn?8?R1#?kP?g(*T?r  r  r  r  r  r  r  r  )gD
)?g:3P?g9?g?S[?r  gOqx?gD
)?g9?gɫs^?gK?gX?g3<֌?gM+?gyS
c?gI`s?g辜?g{i ?g^0?g?#c?)g%r?gc@v?ghtj}?g(˔^?gHK4U?r  ğ@ _?y}D?焂Rr/?N?YjhG?a0L?4f?<@?@CH?g	ސF?g5+-#?g?g?q ?r  )g}'v?r  g*V?r  gr/0+?r  g[8	?r  gΥ?r  gY?r  g#)a?r  g?̔?r  g]ؚ?r  g|c ?r  )r[   r  r3   crystalballrZ   r   r   ra   )r'  Z
calculatedrL   r/   r/   r0   test_crystalball_function!  s&    r  c                  C   s  t g d} t g d}t g d}tjd| |}t||dd t g d}t dd	t jd
dg}|| }tjd| |}t||dd t t jt jt jddg}|| }tjd| |}	t||	dd t t jt jt jt jdg}|| }
tjd| |}t|
|dd t t jt jt jt jdg}|| }tjd| |}t||dd t t jt jt jt jdg}|| }tjd| |}t||dd dS )zg
    All values are calculated using the pdf formula and the integrate function
    of Mathematica
    )rm   r  r  rm   r  )r  r  rm   r  rp  )r  r  r  r  r  r   r  rq   )gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@rX   g?Җ)r   gMg'#@r   g('UHrv   N)r[   r   r3   r  r  r   r   )r  r  Zexpected_0th_momentZcalculated_0th_momentr  r-   Zexpected_1th_momentZcalculated_1th_momentZexpected_2th_momentZcalculated_2th_momentZexpected_3th_momentZcalculated_3th_momentZexpected_4th_momentZcalculated_4th_momentZexpected_5th_momentZcalculated_5th_momentr/   r/   r0   !test_crystalball_function_moments"  s4    r  c                  C   sR   t dd} |  }d\}}}t|||}tt| ||}t||dd d S )NrX   r   )ir   r"  r  rq   )	r3   r  r?   r[   r  r   r   rZ   r   )cbr  r  r  r  rR   r  r/   r/   r0   test_crystalball_entropyM"  s    
r  c                  C   s\   ddd} t g d}tjj|d| d\}}}t|ddd	 |dksJJ t|d
dd	 dS )a?  
    Test fitting invweibull to data.

    Here is a the same calculation in R:

    > library(evd)
    > library(fitdistrplus)
    > x = c(1, 1.25, 2, 2.5, 2.8,  3, 3.8, 4, 5, 8, 10, 12, 64, 99)
    > result = fitdist(x, 'frechet', control=list(reltol=1e-13),
    +                  fix.arg=list(loc=0), start=list(shape=2, scale=3))
    > result
    Fitting of the distribution ' frechet ' by maximum likelihood
    Parameters:
          estimate Std. Error
    shape 1.048482  0.2261815
    scale 3.099456  0.8292887
    Fixed parameters:
        value
    loc     0

    r/   r   c                 S   s   t | |||dddS )NrZ  )r   dispZxtolZftol)r#   )r   x0r   r  r/   r/   r0   rC  o"  s    z&test_invweibull_fit.<locals>.optimizer)r   r  rX   r  r  r   r  r   rv   r  rS   r  @   c   )r   rC  g`?r  rq   g [@N)r/   r   )r[   r   r3   r   r   r   )rC  rR   rL  rV   rW   r/   r/   r0   test_invweibull_fitX"  s    
r  ))r   rk  g7Ըh?)rx   rk  gz]r>)rx   g     "@goBڱ9)r  rk  g$=cC;c                 C   s    t j| |}t||dd d S ro   )r3   r   r   r   )rR   rL  rL   r  r/   r/   r0   test_invweibull_sfz"  s    r  zp, c, expected)ri   r  g9?)geK<rv   g@c                 C   s    t j| |}t||dd d S ro   )r3   r   rT  r   )r-  rL  rL   r  r/   r/   r0   test_invweibull_isf"  s    r   z	df1,df2,x)r   ru  r  rj  r   rV  rQ  r  r  c                 C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   r  rq   r  )r3   r  ra   r]  r   rZ   )Zdf1Zdf2rR   r  Zexpected_cdfZcalculated_cdfrt   Zcalculated_pdfr/   r/   r0   test_ncf_edge_case"  s    
r  c                  C   s"   t jddd} t| ddd d S )NrX   r  r   g     `E@r  rq   )r3   r]  r  r   )r  r/   r/   r0   test_ncf_variance"  s    r  c                  C   s.   t jdddd} d}t|tj| dd d S )Nr  r  r  gffffff>@g&4I,)?)Zdecimals)r3   r]  ra   r   r[   round)Z	scipy_valZ	check_valr/   r/   r0   test_ncf_cdf_spotcheck"  s    r  r  z(On some 32-bit the warning is not raisedc                     sx   t ddd} d| d< d tt6 tjj| g R  } fdd| D }W d    n1 s`0    Y  t|| d S )Nr   r   r  r8  )rP   rX   rv   r   r   c                    s    g | ]}t jj|g R  qS r/   )r3   r]  r   )r8   xiparr/   r0   r:   "  r;   z,test_ncf_ppf_issue_17026.<locals>.<listcomp>)	r[   r  r   r  r1  r3   r]  r   r   )rR   r5  q0r/   r  r0   test_ncf_ppf_issue_17026"  s    0r	  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestHistogramc                 C   s\   t jd t jg ddd}t|| _tjjddddd	}t j|d
d}t|| _	d S )Nr   )r   rX   rX   r   r   r   r   r   r   r   rv   rv   rv   rv   rv   r  r  r  r  rQ  rQ  rQ  r  r  r  r  binsr  r  r^  {   r!  r   )
r[   r   r   	histogramr3   r>   templater  r   norm_template)rc   r  r   Znorm_histogramr/   r/   r0   r   "  s    
zTestHistogram.setup_methodc                 C   s   t g d}t g d}t| j|| t| jdd t| jdd t| jdd t| jdd t d	d
d}t| j|t	j
j|ddddd d S )Nrn   ri   r  rk  rm   r  r  r  r  r  r        @r^  r  r  r  rR        !@rp  rt  )rn   rn   r  r  {Gz?r  Q?r  {Gz?r  ru  ru  r  r  r  r  r  r  rn   rn   rR  r  r  rp  rn   r  r   rX   rS   r  r  rU   rP   rq   )r[   r   r   r   r  rZ   r   r  r  r3   r  )rc   r  Z
pdf_valuesrR   r/   r/   r0   r  "  s    zTestHistogram.test_pdfc                 C   s   t g d}t g d}t| j|| t| j|dd |dd  t ddd}t| j| j|| t ddd}t| j| j|| t d	dd
}t| j|t	j
j|ddddd d S )Nr  )rn   rn   rn   r  r  r  r  
ףp=
?Q?{Gz?r  ri   rD  (\?RQ?=
ףp=?)\(?rm  r  r  rX   r   r  rp  rT   rn   r   rS   r  rU   rP   rq   )r[   r   r   r   r  ra   r   r  r  r3   r  )rc   r  Z
cdf_valuesrR   r/   r/   r0   rN  "  s    "zTestHistogram.test_cdf_ppfc                 C   s   d}| j j|dd}tt|dk d tt|dkd| dd	 tt|d
kd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|d kd!| dd	 tt|d"kd#| dd	 tt|d$kd%| dd	 tt|d&kd| dd	 tt|d&kd| dd	 tt|d&kd d S )'Nr^  r  r   r  rn   rm   r  ru  rq   r  r  r  r  rP   r  r  r  r  r  r  r  r  rm  r  ri   r^  rD  r  r  r  r  r  r  rR  r  r  rm  rp  )r  r   r   r[   r%  r   )rc   r  r  r/   r/   r0   r	  #  s(    zTestHistogram.test_rvsc                 C   s6   t dD ](}t| j|tdd|dd qd S )Nr   r  r  rm  rq   )r  r   r  r  r3   r  r  r6  r/   r/   r0   r  #  s    zTestHistogram.test_munpc                 C   s$   t | j tjjddddd d S )Nr  r  rU   rm  rq   )r   r  r?   r3   r  rf   r/   r/   r0   r)  !#  s    
zTestHistogram.test_entropyN)	r   r   r   r   r  rN  r	  r  r)  r/   r/   r/   r0   r
  "  s   r
  c                  C   s   ddgg d } }t j| |fdd}tj|ddgddg | dksPJ t j| |fdd}tj|ddgd	 | d
ksJ d}tjt	|d. t | |f}| d
ksJ W d    n1 s0    Y  t | g df}| dksJ d S )Nr   )r   r   r]  F)r?  ri   r,  r&  Tg'^P?g     H@z(Bin widths are not constant. Assuming...r   ra  )
r3   r>   r[   rD  r   rZ   r  r   r  r1  )countsr  r9   r3  r/   r/   r0   test_histogram_non_uniform&#  s    .r  c                   @   s6   e Zd Zdd Zejdddgdd Zdd	 Zd
S )TestLogUniformc                 C   s   t jd}tdd}|jd|d}t jd}tdd}|jd|d}t|| t jt 	|dd\}}d|
   kr|   krd	ksn J t t |d
 dksJ d S )N   0o[ r  r   r^  r   rS   r  rf  iL  rw   )r[   r   r   r3   
loguniformr   Z
reciprocalr   r  log10rX  r  r   r  )rc   r   r.  r   Zrv2r   r  r   r/   r/   r0   
test_alias>#  s    
,zTestLogUniform.test_aliasr3  r6  r1  c                 C   sn   t jd}tjjddd|d}tjj||d\}}}}|dksDJ tjj|d|d\}}}}|dksjJ d S )	Nr!  rP   r   rw   r   r5  rX   r2  )r[   r   r   r3   r"  r   r   )rc   r3  r   r   r-   r.   rV   rW   r/   r/   r0   test_fit_overrideO#  s    z TestLogUniform.test_fit_overridec           
      C   s   t jd}d\}}t||}|jdddd}t|||| |j	dd}t|||| dt 
dd	 }||}t|d d
 |dd   d || t |t |  }	t| |	 d S )Nl   eVi
P )gN~hgZbtir   r   rw   r   r  i8r,  r   rS   )r[   r   r   r3   r"  r0  r   ra   r   r   r   rZ   rG  r   )
rc   r   r-   r.   r9   ra   r   rR   rZ   r   r/   r/   r0   test_overflow\#  s    
zTestLogUniform.test_overflowN)	r   r   r   r$  r   r   r   r%  r&  r/   r/   r/   r0   r   =#  s   
r   c                   @   s  e Zd Zdd Zejdddgddgdd	ggd
d Zejdddgdd Zejdg ddd Z	ejdg ddd Z
ejdg ddd Zejdg ddd  Zejdg d!d"d# Zejdg d$d%d& Zejdg d'd(d) Zd*S )+	TestArgusc                 C   s2   t jjdddd}tt d | dd d S )Nr   r  E  r   r   r  )r3   argusr   r   r   rU  r/   r/   r0   test_argus_rvs_large_chit#  s    z"TestArgus.test_argus_rvs_large_chizchi, random_staterP   r(  r     r     c                 C   s6   t jj|d|d}t |d|f\}}t|dk d S )Nr  r   r)  rm  r3   r)  r   rp  r   )rc   rP  r}   rR   r   r-  r/   r/   r0   r	  y#  s    zTestArgus.test_rvsrP  r  r  c                 C   s6   t jj|ddd}t |dd \}}t|dk d S )Nr  ie r   c                 S   s   dd| d  d  S )Nr   rX   rk  r/   r   r/   r/   r0   rF   #  r;   z.TestArgus.test_rvs_small_chi.<locals>.<lambda>rm  r-  )rc   rP  r<  r   r-  r/   r/   r0   test_rvs_small_chi#  s    zTestArgus.test_rvs_small_chizchi, expected_mean))r   g щi?)rS   g.憃?)r  g\paP?)r  g	?)r  g,6?c                 C   s"   t jj|dd}t||dd d S )Nr   r  rz   rq   )r3   r)  r   r   )rc   rP  Zexpected_meanr  r/   r/   r0   r]  #  s    zTestArgus.test_meanzchi, expected_var, rtol))r   gLH'B?rz   )rS   go$?r  )r  g
=>r  )r  g2W>r  )r  gb~P>r  c                 C   s"   t jj|dd}t|||d d S )Nr   r  rq   )r3   r)  r  r   )rc   rP  Zexpected_varrr   r  r/   r/   r0   rD  #  s    zTestArgus.test_varzchi, expected, rtol))r   gwM?r  )ri   gj?r  )rP   gHEA`!?r  )rk   gcف>rp   )r  gF=r  )r^  g߹Q#B=r  )r  g0ޟ<r  )r  g*W%:rp   c                 C   s   t t|||d d S r  )r   r!   )rc   rP  rL   rr   r/   r/   r0   test_argus_phi_small_chi#  s    
z"TestArgus.test_argus_phi_small_chizchi, expected))ri   )g-\/?g+p7c?g5Ϧ\?)ru  )g
f?gi{?ٸ?gZ@7?)rP   )gB	?g]?gR{?)rk   )glͅw?g,?g[Z=?)r  )gz,?g]?gѪ1?)r^  )g8<?gE-?gI?)r  )g~7?g7B.?g9?)r  )g;?g9B.?g}5?c                 C   s*   t g d}ttj|||dd d S )NrP   ri   r   rz   rq   )r[   r   r   r3   r)  rZ   rc   rP  rL   rR   r/   r/   r0   test_pdf_small_chi#  s    zTestArgus.test_pdf_small_chi))ri   )gQ߹?e?grJ,?g򺗄?)ru  )gΎd?g?gh?)rP   )g|
o?gvb?g+@?)rk   )g̈́On?ge?gC|[3?)r  )g!?m?g{jiH?gu53?)r^  )g~m?g0-.?g3?)r  )g~m?g7;B.?gŗ3?)r  )g~m?g9B.?gŗ3?c                 C   s*   t g d}ttj|||dd d S )Nr0  r  rq   )r[   r   r   r3   r)  r   r1  r/   r/   r0   test_sf_small_chi#  s    zTestArgus.test_sf_small_chi))ri   )g+&?gk?gμm/?)ru  )g?CL\f?g^N?g]AͭR?)rP   )ga>$?g;Lf?gaW?)rk   )gx?g 43n?gwY?)r  )go7🤎?g
+-oGn?gIQ9Y?)r^  )gT?gGn?g@̋Y?)r  )gU?g{Gn?giG͋Y?)r  )gDU?g {Gn?gH͋Y?c                 C   s*   t g d}ttj|||dd d S )Nr0  rZ  rq   )r[   r   r   r3   r)  ra   r1  r/   r/   r0   test_cdf_small_chi#  s    zTestArgus.test_cdf_small_chi))ri   )gQ)?g6{?rZ  )gB`"۹?)g?g8%?r  )rP   )g388?gV%?rz   )rk   )g*j?gRS%?rz   )r  )g!|?gZ%?rz   )r^  )gy[|?gG%?rz   )r  )g"3|?gW%?rz   )r  )g!3|?gW%?rz   c                 C   s"   t jj |dd}t|||d d S )Nr  r  rq   )r3   r)  r   )rc   rP  rL   rr   r  r/   r/   r0   test_stats_small_chi#  s    zTestArgus.test_stats_small_chiN)r   r   r   r*  r   r   r   r	  r.  r]  rD  r/  r2  r3  r4  r5  r/   r/   r/   r0   r'  s#  sR   

	

	







r'  c                   @   s   e Zd Zdd Zdd Zejdg ddd Zejdg d	d
d Z	dd Z
ejdg ddd Zejjddejdg dejdg dejdg ddd Zejdg dejdg ddd ZdS )TestNakagamic                 C   s$   d}d}t j||}t|d d S )Nr  r  gM+)r3   nakagamir   r   )rc   ry  rR   r  r/   r/   r0   r  #  s    zTestNakagami.test_logpdfc                 C   sD   d}d}t j||}t|ddd t j||}t||dd d S )Nr  r  g"S+:rz   rq   )r3   r7  r   r   rT  )rc   ry  r  r   r  r/   r/   r0   r  #  s    zTestNakagami.test_sf_isfzm, ref))rv   g|Bd븿)ri   r_  )rS   g/ۿc                 C   s   t tj||dd d S )Ng^~z=rq   r   r3   r7  r?   rc   r  r:  r/   r/   r0   r)  $  s    zTestNakagami.test_entropy))r	  g}Ô%I)rG  gq_)g    ScAgB4U)g    cAgu1U)r`  gb>%)ra  gWҙ\c                 C   s   t tj|| d S re   r8  r9  r/   r/   r0   test_extreme_nu$$  s    zTestNakagami.test_extreme_nuc                 C   s0   t tjdsJ t tjds,J d S )Nra  r	  )r[   r  r3   r7  Z_entropyrf   r/   r/   r0   test_entropy_overflow+$  s    z"TestNakagami.test_entropy_overflowznu, ref))r`  g2H?)rX  g:U?)rG  g>c                 C   s   t tj||dd d S rY  )r   r3   r7  r   )rc   ry  r:  r/   r/   r0   r]  /$  s    
zTestNakagami.test_meanz+Fit of nakagami not reliable, see gh-10908.r  ry  )r  r  r  rV   )rl   rS   #   rW   )r  rv   r  c           
         s   d t jj |||ddt j\}}}t||dd t||dd t||dd fdd} fdd	} fd
d}	t||||ddd t||||ddd t|	|||ddd d S )NrT   9  r   ry  rV   rW   r}   ru  rq   c                    s<   d|  d t d |   d|  |d  t  |   S )Nr   r   rX   r[   r%  ry  rV   rW   )r  r/   r0   	dlogl_dnuJ$  s    z(TestNakagami.test_fit.<locals>.dlogl_dnuc                    sN    dt |  td|   dt t | |   t | | d  S )Nr   r   rX   )r[   rG  r   r%  r@  r  r  r/   r0   
dlogl_dlocN$  s
    z)TestNakagami.test_fit.<locals>.dlogl_dlocc                    s2   d  |  | d|  |d  t | d   S )Nr   rX   r   r?  r@  rB  r/   r0   dlogl_dscaleS$  s     z+TestNakagami.test_fit.<locals>.dlogl_dscaler   r  r~   )r3   r7  r   r   r   )
rc   ry  rV   rW   nu_estloc_est	scale_estrA  rC  rD  r/   rB  r0   r  ;$  s    zTestNakagami.test_fitc                 C   s   d}d}t jj||||dd}t jj||d\}}}t|}	tt|| d }
t||dd t||	dd t||
dd d S )	Nri   rT   r=  r>  r  rX   r  rq   )	r3   r7  r   r   r[   rX  r  r   r   )rc   rV   rW   ry  r,  r  rE  rF  rG  Zloc_theoZ
scale_theor/   r/   r0   test_fit_nu[$  s    
zTestNakagami.test_fit_nuN)r   r   r   r  r  r   r   r   r)  r:  r;  r]  r  r  rH  r/   r/   r/   r0   r6  #  s.   


r6  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestWrapCauchyc                 C   sr   t ddgddgg}t dgdgg}tj||}|jdksDJ dd	 t ||fD }t| |d
d d S )NQ?r$  ri   r   r  r  r  c                 S   s   g | ]\}}t j||qS r/   )r3   
wrapcauchyra   )r8   r  r	  r/   r/   r0   r:   y$  s   z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>rz   rq   )	r[   r   r3   rK  ra   r  Znditerr   r  )rc   rL  rR   r-  Zscalar_valuesr/   r/   r0   test_cdf_shape_broadcastingq$  s    z*TestWrapCauchy.test_cdf_shape_broadcastingc                 C   s"   t jtjd}t|ddd d S )NrJ  ri   r  rq   )r3   rK  ra   r[   r\   r   rB  r/   r/   r0   test_cdf_center}$  s    zTestWrapCauchy.test_cdf_centerc                 C   s   d}d}d}t j||g|}d| d|  }t|d t|t|d  tj  t|d dt|ttj|d   tj   d S )Nr  r  r   r   r   rX   )r3   rK  ra   r   r[   Zarctantanr\   )rc   r  r  rL  r-  crr/   r/   r0   r  $  s    (zTestWrapCauchy.test_cdfN)r   r   r   rL  rM  r  r/   r/   r/   r0   rI  o$  s   rI  c                  C   sT   G dd dt j} | dd}ttdd |  W d    n1 sF0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z/test_rvs_no_size_error.<locals>.rvs_no_size_genc                 S   s   dS r   r/   rf   r/   r/   r0   _rvs$  s    z4test_rvs_no_size_error.<locals>.rvs_no_size_gen._rvsN)r   r   r   rP  r/   r/   r/   r0   rvs_no_size_gen$  s   rQ  rvs_no_sizer  z_rvs\(\) got (an|\d) unexpectedr   )r3   r=   r0  r   r   )rQ  rR  r/   r/   r0   test_rvs_no_size_error$  s    
rS  zdistname, argsc                 C   s   | t v rtd|  d tt| }t|tjrt|dkrb|j| \}}t	|t
j t	|t
j d\}}|jg |||R  \}}t	|t
j t	|t
j n&|j| \}	}
t	|	t
j t	|
t
j d S )Nz6skipping test for the support method for distribution .r   r5  )$skip_test_support_gh13294_regressionr   r   r   r3   r  r=   r   supportr   r[   r   )r  r   r9   a0b0r  r  a1b1r-   r.   r/   r/   r0   test_support_gh13294_regression$  s"    

r[  c                  C   s\  t jg dg d\} }ttj tj tj tjg}ttjtjtjtjg}t| | t|| | j|jksxJ |j|jksJ t jg g \}}tg tg  }}t|| t|| |j|jksJ |j|jksJ t jg ddg\}}	tdtjg }
tdtjg }t||
 t|	| |j|
jksFJ |	j|jksXJ d S )N)r   r   r   r   )r   r   r   r   r   r   )	r3   r  rV  r[   r   r   r   r   r  )rW  rX  Zex_a0Zex_b0rY  rZ  Zex_a1Zex_b1r8  rk  Zex_a2Zex_b2r/   r/   r0   ,test_support_broadcasting_gh13294_regression$  s(     





r\  c                  C   sn   ddg} dgdgdgg}t tj| |ddgddgddgg td} td}tj| |jdksjJ d S )	Nrn   r  rm   r  r  rp  r6   r  )r   r3   r  r  r[   r  r  rU   r/   r/   r0   *test_stats_broadcasting_gh14953_regression$  s    &

r]  )gn!	g:I"<)gQ	@gE?c                 C   s*   t tj| | t tj|  | d S re   )r   r3   cosinera   r   )rR   rL   r/   r/   r0   test_cosine_cdf_sf$  s    r_  ))r  gkM6O)r  g0ӭ!	)r  g;'u(@c                 C   s*   t tj| | t tj| |  d S re   )r   r3   r^  r   rT  )r-  rL   r/   r/   r0   test_cosine_ppf_isf$  s    r`  c                  C   s$   t jtj tjg} t| d d S )NgrB)r3   r^  r   r[   r\   r
   )r  r/   r/   r0   test_cosine_logpdf_endpoints$  s    ra  c                  C   sT   dd t D } dd tD }| |ks(J dd tD }dd tD }||ksPJ d S )Nc                 S   s   h | ]\}}t |tr|qS r/   )r  rB   r8   r  r   r/   r/   r0   	<setcomp>$  s   
z*test_distr_params_lists.<locals>.<setcomp>c                 S   s   h | ]\}}|qS r/   r/   rb  r/   r/   r0   rc  $  r;   c                 S   s   h | ]\}}|qS r/   r/   rb  r/   r/   r0   rc  $  r;   c                 S   s   h | ]\}}|qS r/   r/   rb  r/   r/   r0   rc  $  r;   )r   r   r   r   )Zdiscrete_distnamesZinvdiscrete_distnamesZcont_distnamesZinvcont_distnamesr/   r/   r0   test_distr_params_lists$  s    rd  c                   C   sB   t jjddd t jjddddks(J t jdddks>J d S )Nr   rO   r  r   )r/  r-   r  )r3   r$  Z_statsr  r  r/   r/   r/   r0   test_moment_order_4$  s    re  c                
   @   s   e Zd Zejdd Zejdg ddd Zejdg dd	d
 Z	ejdej
ddejjdej
ddejjdej
ddejjdgdd ZdS )TestRelativisticBWc                 C   s*   t ttjd }t jj|jdd}|S )a&  Sample data points for pdf computed with CERN's ROOT

        See - https://root.cern/

        Uses ROOT.TMath.BreitWignerRelativistic, available in ROOT
        versions 6.27+

        pdf calculated for Z0 Boson, W Boson, and Higgs Boson for
        x in `np.linspace(0, 200, 401)`.
        z-data/rel_breitwigner_pdf_sample_data_ROOT.npyzx,pdf,rho,gammar  r  r  r/   r/   r0   ROOT_pdf_sample_data%  s    z'TestRelativisticBW.ROOT_pdf_sample_datazrho,gamma,rtol))qVEB@gj+@r  )FC@Gz @r  )ND@_LU?rl  c                 C   sN   ||d |k|d |k@  }|d |d  }}t |tjj|||d|d d S )Nrhor  rR   rZ   r  rq   )r   r3   rel_breitwignerrZ   )rc   rg  rn  r  rr   r   rR   rZ   r/   r/   r0   test_pdf_against_ROOT'%  s    

z(TestRelativisticBW.test_pdf_against_ROOTzrho, Gamma, rtol))rh  ri  rl  )rj  rk  rl  )rl  rm  g&.>c           	      C   s\   dd }t ddd}tjj|||d}tjj|||d}|||| |}t|||d d S )Nc                 S   sx   t |d |d |d   }dt d | | | t jt |d |   }|| d |d  d |d |d    S r  )r[   r  r\   )Er  Gammar  rO   r/   r/   r0   rZ   @%  s
    zFTestRelativisticBW.test_pdf_against_simple_implementation.<locals>.pdfrm  rc  rS   r  rq   )r[   r  r3   ro  r   rZ   r   )	rc   rn  rr  rr   rZ   r-  rR   r   r:  r/   r/   r0   &test_pdf_against_simple_implementation8%  s    z9TestRelativisticBW.test_pdf_against_simple_implementationz	rho,gammarh  ri  r  rj  rk  rl  rm  c                 C   s   d}t j|}tjj||d|d}tjj|dd}t|d |d f||fdd |d	 dksbJ tjj|d|d
}t|d |dd |d	 |d fd|fksJ dS )zpTests fit for cases where floc is set.

        `rel_breitwigner` has special handling for these cases.
        l   s;
rl# rw   )rW   r   r}   r   r   rX   ru  rq   r   r"  rk   N)r[   r   r   r3   ro  r   r   r   )rc   rn  r  r   r   r   r   r/   r/   r0   test_fit_flocL%  s    z TestRelativisticBW.test_fit_flocN)r   r   r   r   r	  rg  r   r   rp  rs  r   r  r   rt  r/   r/   r/   r0   rf  %  s,   






rf  c                   @   s&   e Zd Zejdddgdd ZdS )TestJohnsonSUr~  )rj  r  r  r^  g={?g?5mV>gn?g\}\1@)g`fo@g$ں_@r   r   gvUgN<fj?gwCg~l
@c                 C   s4   t jj |d d ddi}t||dd  dd d S )Nr   r  r  r  rq   )r3   r  r   )rc   r~  r   r/   r/   r0   test_moment_gh18071m%  s    z!TestJohnsonSU.test_moment_gh18071N)r   r   r   r   r   r   rv  r/   r/   r/   r0   ru  l%  s
   ru  c                   @   sd   e Zd Zdd Zejdddgejdddgejdddgejdddgd	d
 ZdS )TestTruncParetoc                 C   sT   d\}}t dd}t|||}t||t|| }t|| d S )N)?333333@rx  ry  )r[   r  r3   truncparetorZ   r  ra   r   )rc   r.   rL  rR   r   r:  r/   r/   r0   r  }%  s
     zTestTruncPareto.test_pdfr   TFr  r  r  c                 C   s   t jd}d\}}}}	tj||||	d}
|
jd|d}i }|rH||d< |rT|	|d< |r`||d< |rl||d	< |r|r|r|rd
}tjt|d$ tjj	|fi | W d    q1 s0    Y  nt
tj|fi | d S )Nl   Z#Lm )rx  ry  r   r  rU   r  r   r   r   r   r   r   r   )r[   r   r   r3   rz  r   r   r   r   r   r   )rc   r   r  r  r  r   r.   rL  rV   rW   r9   r   r   r3  r/   r/   r0   r  %  s$    4zTestTruncPareto.test_fitN)r   r   r   r  r   r   r   r  r/   r/   r/   r0   rw  |%  s   rw  c                   @   s   e Zd Zdd ZdS )
TestKappa3c                 C   s.   dt jdd }t jdd}t|| d S )Nr   ri   g     j@)r3   kappa3ra   r   r   )rc   Zsf0r?  r/   r/   r0   rS  %  s    zTestKappa3.test_sfN)r   r   r   rS  r/   r/   r/   r0   r{  %  s   r{  r~  ))r|  NNNN)r  NNNN)r   NNNN)r  NNNN)r  NNNNc                 C   s   | \}}}}}t d}|pd}|p&d}|p.d}|p6d}tt|}tt| }|| }	t ||}
|	|	|
}t	||
||d dt ||d }
|	|	|
}t	||
||d d S )	Nri   iir   rZ  r  r   r  )
r[   r#  r   r3   r   r   rK  r   rT  r   )r~  r  Zlp1Zlp2r   rr   Zlpmr9   rE  Zdist_frozenr:  r   r/   r/   r0   test_sf_isf_overrides%  s    	

r}  )N)NF(  r\  r.  r  r  r~  pathlibr   rD  rJ  r#  Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r   r0  r  r[   r   r   Znumpy.lib.recfunctionsr   r2   r   Zscipy._lib._utilr   rp  r   r   r   r   Zscipy.statsr3   Z!scipy.stats._distn_infrastructurer   Zscipy.stats.distributionsZscipy.specialr   r   r   Zscipy.stats._distr_paramsr   r   Ztest_discrete_basicr   r   Zscipy.stats._continuous_distnsr    r!   Zscipy.optimizer"   r#   r$   	itertoolsr%   flagsoptimizer  r&  r  rU  r1   r5   rM   rN   r   r   r   r   r   r   r  r@  rD  rH  rO  rb  ri  r  r  r  r  r  r  r  r  r  r  r(  r*  r3  r9  rB  r  r  r  r  r  r  r  r   r  r%  rE  rS  r`  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r\   rG  r#  rH  rS  rZ  r]  rn  ru  rw  ry  r~  r  r  r  r  r  r  r  r  r  rS  rV  r[  r\  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  rK  rL  rO  r  rP  rQ  rS  rT  rV  rW  rX  rY  r[  r\  r^  r_  r`  ra  rb  re  rf  rh  ri  rk  rl  rn  rq  rs  rt  ru  rv  rx  rz  r{  r  r  r  r  r  r  r=   r  r  r  r  r  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r	  r
  r  r   r'  r6  rI  rS  r[  r\  r]  r_  r`  ra  rd  re  rf  ru  rw  r{  r}  r/   r/   r/   r0   <module>   s  0 J"
J	
2H KFD**D">#  @ $[X(% wX?* $ p9W<37+f %-5		$ v22: 3 kS*      5
 p i ;A%E>h  #^U( E	
&
	
(





	x;	,G."


a6y 

Y&