o
    ir                    @   s  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; ddl<m=Z= ej>j?dkZ@ej	dkoe	A dkZBddgZCdddZDdd ZEdd ZFG dd dZGddd ZHd!d" ZIejJKd#g d$d%d& ZLG d'd( d(ZMG d)d* d*ZNG d+d, d,ZOG d-d. d.ZPG d/d0 d0ZQG d1d2 d2ZRG d3d4 d4ZSG d5d6 d6ZTG d7d8 d8ZUG d9d: d:ZVG d;d< d<ZWG d=d> d>ZXG d?d@ d@ZYG dAdB dBZZG dCdD dDZ[G dEdF dFZ\G dGdH dHZ]G dIdJ dJZ^G dKdL dLZ_G dMdN dNZ`G dOdP dPZaG dQdR dRZbG dSdT dTZcG dUdV dVZdG dWdX dXZeG dYdZ dZZfG d[d\ d\ZgG d]d^ d^ZhG d_d` d`ZiG dadb dbZjG dcdd ddZkG dedf dfZlG dgdh dhZmG didj djZnG dkdl dlZoG dmdn dnZpG dodp dpZqG dqdr drZrG dsdt dtZsG dudv dvZtG dwdx dxZuG dydz dzZvG d{d| d|ZwG d}d~ d~ZxG dd dZyG dd dZzG dd dZ{dde|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Z~G dd dZG 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 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 dd dZG dd dZG dd dZdd Zdd Zdd  ZejJje@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jJKdg ddd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( ZejJKd)g d*d+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZÐd5d6 ZĐd7d8 ZejJKd9d:ed;d<gfd=ed>d?gfd@edAdBgfdCedDdEgfgdFdG ZƐdHdI ZǐdJdK ZȐdLdM ZɐdNdO ZejJKdPg dQdRdS ZejJKdTg dUdVdW ZejJKdXg dYdZd[ Z͐d\d] ZejJKdPg d^d_d` Zϐdadb ZG dcdd dde(jуZG dedf dfe(jуZG dgdh dhe(jуZG didj dje(jуZG dkdl dlZG dmdn dnZejJje@doddpdq Zؐdrds Zِdtdu Zڐdvdw Zېdxdy Zܐdzd{ Zݐd|d} Zސd~d Zߐdd Zdd Zdd Zdd Zdd ZejJKdPg ddd ZejJKdddgdd ZejJKdddg dfddg dfddg dfgdd Zdd Zdd ZejJje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jJKde5e2 dd Zdd Zdd ZejJKdTddgdd ZejJKdXg ddd Zdd Zdd ZdÐdĄ ZG dŐdƄ dƃZG dǐdȄ dȃZG dɐdʄ dʃZd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)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.   s/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/scipy/stats/tests/test_distributions.py_assert_hasattr4   s   r0   c                   C   s   t tjjd d S )NZf_gen)r0   scipystatsdistributionsr.   r.   r.   r/   test_api_regression:      r4   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      g | ]}|d  qS r   r.   .0distr.   r.   r/   
<listcomp>A       z0test_distributions_submodule.<locals>.<listcomp>c                 S   r6   r7   r.   r8   r.   r.   r/   r;   B   r<   )rv_discreterv_continuousrv_histogramentropytrapzc                 S   s   t | d S )N<)str
startswithsr.   r.   r/   <lambda>I       z.test_distributions_submodule.<locals>.<lambda>)setr1   r2   r3   __all__r   r   filter)actualZ
continuousZdiscreteotherexpectedr.   r.   r/   test_distributions_submodule?   s   rO   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ejd(d)ej dejgejd*g d+d,d- Zd.d/ Zejjejd(d)ej d0ej gd1d2 Zejd3d4dgd5d6 Zd7S )8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   )r2   vonmisesr   pdfnppirQ   LrF   rT   vmr.   r.   r/   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 )NrW   r   rZ   )r2   r[   r   cdfr]   r^   r_   r.   r.   r/   check_vonmises_cdf_periodicV   s   zHTestVonMises.test_vonmises_periodic.<locals>.check_vonmises_cdf_periodicr   r   rU   r.   )selfrQ   rT   rb   rd   r.   r.   r/   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   r2   Zvonmises_liner,   r]   r^   r-   re   r.   r.   r/   test_vonmises_line_supportc   s   z'TestVonMises.test_vonmises_line_supportc                 C   s   t d}t|dd d S )N   r         ?)r2   r[   r   rc   )re   ra   r.   r.   r/   test_vonmises_numericalg   s   
z$TestVonMises.test_vonmises_numericalzx, kappa, expected_pdf))rR   {Gz?g|65?)rR         9@g?U?)rR   rj   g"?)       @rm   gDfI?)ro   rn   g1<)ro   rj           c                 C       t j||}t||dd d S NV瞯<rtol)r2   r[   r\   r   )re   rT   kappaexpected_pdfr\   r.   r.   r/   test_vonmises_pdfu      zTestVonMises.test_vonmises_pdfzkappa, expected_entropy))r   gA	?)   g,eޞ?)rV   gBb9d22)  g
G )  gc                 C   s   t j|}t||dd d S NvIh%<=rt   )r2   r[   r@   r   )re   rv   Zexpected_entropyr@   r.   r.   r/   test_vonmises_entropy   s   z"TestVonMises.test_vonmises_entropyc                 C   s   t t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 )	NZvon_mises_rvsr   r   rW   random_staterZ   rs   atol)
abshashr]   randomdefault_rngr2   r[   rvsr^   r   )re   seedZrng1Zrng2Zrng3Zrvs1rvs2Zrvs3r.   r.   r/   test_vonmises_rvs_gh4598   s   z%TestVonMises.test_vonmises_rvs_gh4598zx, kappa, expected_logpdf))rR   rm   gEJ?)rR   rn   goι?)rR   rj   g0,)ro   rm   gdty)ro   rn   gʹw[A)ro   rj   gc                 C   rq   rr   )r2   r[   logpdfr   )re   rT   rv   Zexpected_logpdfr   r.   r.   r/   test_vonmises_logpdf   ry   z!TestVonMises.test_vonmises_logpdfc                 C   s  t jd}|dd \}}}tj||ddd }t|d t |jt j	s+J ||dt j
  f}tj||djd	d g|R  }t|d t |jt j	sSJ ||dt j
  f}tj||djd
d g|R ddi}tt ||dt j
   t |jt jsJ 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    rU   rX   rv   c                 S      dS Nr   r.   rT   r.   r.   r/   rG          z3TestVonMises.test_vonmises_expect.<locals>.<lambda>r   rZ   c                 S   r   r   r.   r   r.   r.   r/   rG      r   c                 S   s   t d|  S )Ny              ?)r]   expr   r.   r.   r/   rG      s    Zcomplex_funcN)r]   r   r   r2   r[   expectr   
issubdtypedtypeZfloatingr^   angleZcomplexfloating)re   rngrX   rv   lbresZboundsr.   r.   r/   test_vonmises_expect   s"   
 
z!TestVonMises.test_vonmises_expectrvs_locrZ   	rvs_shape)r   rV       חAfix_locTF	fix_shapec                 C   sp   |r	|r	t d tjd}tjj|d||d}ddi}|r#||d< |r)||d< ttj|tjj	fi | d S )	NzNothing to fit.r   r{   )sizerX   r   fscaler   flocf0)
pytestskipr]   r   r   r2   r[   r   _assert_less_or_close_loglikennlf)re   r   r   r   r   r   datakwdsr.   r.   r/   test_fit_MLE_comp_optimizer   s    

z(TestVonMises.test_fit_MLE_comp_optimizerrX         	kappa_tol))rR   皙?)      Y@rm   )g     j@rm   c                 C   s   t jd}|\}}tj||djd|d}tj|\}}}	|	dks%J t t |t 	|g}
t t |t 	|g}t 
|
|}t|d|dd t|||d d S )	Nr   r   順 r   r   r   r   ru   rt   )r]   r   r   r2   r[   r   fitr   cossinZarccosdotr   )re   r   rX   r   rv   tolr   	kappa_fitloc_fit	scale_fitZloc_vecZloc_fit_vecr   r.   r.   r/   test_vonmises_fit_all   s   z"TestVonMises.test_vonmises_fit_allc                 C   sr   t jd}dt j }d}tj||djd|d}tjj||d\}}}||ks*J |dks0J t||d	d
 d S )Nr         ?rU   r   r   r   r   r   rm   rt   )	r]   r   r   r^   r2   r[   r   r   r   )re   r   rX   rv   r   r   r   r   r.   r.   r/   test_vonmises_fit_shape   s   
z$TestVonMises.test_vonmises_fit_shapec                 C   sX   g d}t |}tjj||d\}}}|t tjksJ 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^lsFr   r   )r   r   )
r]   asarrayr2   r[   r   finfofloatZtinyr   r   )re   rX   r   r   r   r   r.   r.   r/   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s@J t j |  k rNt jk sQJ  J d S )	Nr   rk   rU   r   r   r      r   )	r]   r   r   r2   r[   r^   r   r   r   )re   r   r   r   Zshifted_datar   r   r   Zkappa_fit_shiftedZloc_fit_shifted_r.   r.   r/    test_vonmises_fit_unwrapped_data  s   

&z-TestVonMises.test_vonmises_fit_unwrapped_dataN)__name__
__module____qualname__r   markparametrizer]   r^   rf   ri   rl   rx   r   r   r   r   xslowr   r   r   r   r   r.   r.   r.   r/   rP   N   sF    



rP   c                 K   s   |du r| j }| j|fi |}tt| | j|fi |}|||}|||}||ks6tj||dds6J d|v rD|d |d ksDJ d|v rR|d |d ksTJ dS 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.
    Nrs   rt   r   r   r   )r   r   supertyper]   allclose)r:   r   funcr   Zmle_analyticalZnumerical_optZll_mle_analyticalZll_numerical_optr.   r.   r/   r     s   

r   c                 C   s  ddg}| j rt| j d}|g dd | 7 }tt|tt|}g d}tjt	dd | j
|fi | W d    n1 sDw   Y  tjtdd | 
tjg W d    n1 sbw   Y  tjtdd | 
tjg W d    n1 sw   Y  tjtd	d | j
|d
d W d    n1 sw   Y  tjtdd | j
|gdgt|d  R   W d    d S 1 sw   Y  d S )Nr   r   ,)r   f1f2r   rZ   r   3All parameters fixed. There is nothing to optimize.matchz#The data contains non-finite valueszUnknown keyword arguments:rZ   )Zextra_keywordzToo many positional arguments.r   )shapeslensplitdictzipr]   aranger   r   RuntimeErrorr   
ValueErrornaninf	TypeError)r:   paramZnshapesZ	all_fixedr   r.   r.   r/   assert_fit_warnings/  s6   ""r   r:   )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   getattrr2   r   r\   r,   r   r   r]   r   r-   )r:   dctargsr.   r.   r/   test_supportF  s   
"r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRandIntc                 C      t jd d S N  r]   r   r   rh   r.   r.   r/   setup_methodY     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 )Nrz      rV   r   rZ   2   
AllInteger   .   r)   r   )r2   randintr   r   numpyallr   shaper   charr   
isinstanceZ
ScalarTypereprr   re   valsvalr.   r.   r/   test_rvs\  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   $   rz   r  {Gz?)r
  r_wherer2   r	  pmfr   )re   rQ   outr  r.   r.   r/   test_pdfi  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  rV   r  rz         ?      @r   rn      decimal)	r]   linspacer
  floorselectr2   r	  rc   r   )re   rT   rQ   r  r  r.   r.   r/   test_cdfo  s
   
*zTestRandInt.test_cdfN)r   r   r   r   r  r  r#  r.   r.   r.   r/   r   X  s
    r   c                   @   T   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   r   r   r   rh   r.   r.   r/   r   x  r  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 NrU         ?r  r  r   r  r   )r2   binomr   r   r
  r  r  r   r  r   r  intndarrayr  r.   r.   r/   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 )NrV   r   r   r  rs   ru   r   r2   r(  r  r   )re   vals1vals2r.   r.   r/   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 )NrZ   rk   )r   rk   r   rp   r  )	r2   r(  r]   r   sumr   r@   r   r   )re   r-   
expected_p
expected_hhr.   r.   r/   test_entropy  s   

zTestBinom.test_entropyc                 C   sj   t  ' t dt ttjddd d ttjddd d W d    d S 1 s.w   Y  d S )NerrorrZ   r   np)	warningscatch_warningssimplefilterRuntimeWarningr   r2   r(  meanstdrh   r.   r.   r/   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  )qr7  r8  )r2   r(  ppfre   r7  r.   r.   r/   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   r6  缉ؗҜ<r   )r]   r   r2   r(  r  poissonr   )re   r7  r8  rT   r   refr.   r.   r/   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   rE  r   )r2   r(  r  rc   r   )re   r7  r8  rr   rG  r.   r.   r/   test_pmf_cdf  s   zTestBinom.test_pmf_cdfc                 C   s"   t jddd}t|ddd d S )Nr   r|   +?r   rE  r   r,  )re   r   r.   r.   r/   test_pmf_gh15101  s   zTestBinom.test_pmf_gh15101N)r   r   r   r   r  r/  r4  r?  rD  rH  rJ  rL  r.   r.   r.   r/   r%  w  s    		r%  c                   @      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   )r2   Zarcsiner\   r   r]   r   re   r8  r.   r.   r/   test_endpoints  s   zTestArcsine.test_endpointsN)r   r   r   rQ  r.   r.   r.   r/   rN        rN  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestBernoullic                 C   r   r   r   rh   r.   r.   r/   r     r  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   )r2   	bernoullir   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   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'  rp   r  )r2   rU  r]   logr@   r   r   )re   r-   r2  r3  r.   r.   r/   r4    s   




zTestBernoulli.test_entropyN)r   r   r   r   r  r4  r.   r.   r.   r/   rT        rT  c                   @   rM  )TestBradfordc                 C   s:   d}t dd}tj||}tj||}t|| d S )NrR   )r]   logspacer2   Zbradfordrc   rB  r   )re   crT   rA  xxr.   r.   r/   test_cdf_ppf  s
   zTestBradford.test_cdf_ppfN)r   r   r   r_  r.   r.   r.   r/   rY    rR  rY  c                   @   sF   e Zd ZdZdZdd Zdd Z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 )NrU   r   rs   rt   )r2   chisfr   CHI_SF_10_4re   rF   r.   r.   r/   test_sf     zTestChi.test_sfc                 C   s"   t j| jd}t|ddd d S )Nr   rU   rs   rt   )r2   ra  isfrc  r   re   rT   r.   r.   r/   test_isf      zTestChi.test_isfc                 C   s"   t jjdd}t|| jdd d S )Nr{   )df-q=rt   )r2   ra  r=  r   CHI_MEAN_1000rh  r.   r.   r/   	test_mean  rf  zTestChi.test_meandf, ref))-C6?gQ(݂)r   ńjɮ9?)     @@gWr4'?)    _Bgr$h(?)}Ô%ITgs$h(?c                 C      t t| |dd d S rr   )r   r2   ra  r@   re   rk  rG  r.   r.   r/   r4       zTestChi.test_entropyN)r   r   r   rc  rm  re  ri  rn  r   r   r   r4  r.   r.   r.   r/   r`    s    r`  c                   @   r   )

TestNBinomc                 C   r   r   r   rh   r.   r.   r/   r     r  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&  )r2   nbinomr   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r     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   r2   ry  logpmfr  r1   r   )re   r  r.   r.   r/   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   rz   r   rz   333333@?r6  )r2   ry  logcdfr]   rW  rc   r   )re   r  rG  r.   r.   r/   test_logcdf_gh161593  s   zTestNBinom.test_logcdf_gh16159N)r   r   r   r   r  r/  r~  r.   r.   r.   r/   rx    s
    rx  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   r   r   r   rh   r.   r.   r/   r   ;  r  zTestGenInvGauss.setup_methodc                 C   :   t dd}t |jddd|j\}}t|dkd d S )Nffffff@      ?  r   r   r   r   Tr2   geninvgausskstestr   rc   r   re   gigr   r8  r.   r.   r/   test_rvs_with_mode_shift>     z(TestGenInvGauss.test_rvs_with_mode_shiftc                 C   r  )N?r'  r  r   r  r   Tr  r  r.   r.   r/   test_rvs_without_mode_shiftE  r  z+TestGenInvGauss.test_rvs_without_mode_shiftc                 C   r  )NrR   皙?r  r   r  r   Tr  r  r.   r.   r/   test_rvs_new_methodL  r  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 )Nr  r   r  r   r   )r2   r  r   r  rc   )r8  r-   r  r   r.   r.   r/   my_ks_checkU  s   z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   r  Tr  r  )r   )re   r  r.   r.   r/   test_rvs_p_zeroS  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      rZ   rU   r   r  r   r  )r   r2   r  r   rh   r.   r.   r/   test_rvs_negative_p^  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 )Nr  r   r   r   )r   r8  r-   r   r   r   333333?TrV   rm   rU   )r8  r-   rY   )r2   r  r   r   r  r]   r   r\   r   r   rc   )re   ZigmurT   Zpdf_igZcdf_igr.   r.   r/   test_invgaussd  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?rm   rz   rU   rk   r   )r]   r   r   r   r2   r  r\   )re   vals_RrT   r.   r.   r/   
test_pdf_Ro  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   rk   g    >Ar  rZ   )r   r2   r  r\   rh   r.   r.   r/   test_pdf_zeroz  s   zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   r   r   slowr  r  r  r  r  r  r  r  r.   r.   r.   r/   r  :  s    




r  c                   @   s   e Zd Zdd Zdd Zd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   r   r   r   rh   r.   r.   r/   r     r  zTestGenHyperbolic.setup_methodc           
      C   l   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?rZ   rZ   r   rk   r  rW   rU   r   r~   r   )r]   r   r2   genhyperbolicr   r   r\   
re   r  lmbdar   betar  deltar   ghrT   r.   r.   r/   
test_pdf_r     
zTestGenHyperbolic.test_pdf_rc           
      C   r  )
N)
g=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?r  r  rW   r  rU   r   ư>r   )r]   r   r2   r  r   r   rc   r  r.   r.   r/   
test_cdf_r  r  zTestGenHyperbolic.test_cdf_rzx, p, a, b, loc, scale, ref)
)rZ   r   r  rk   r  g8ɹvF(;)r  rU   r  r   r   rz   g[Ϡ?)r  rU   r  g      ?r   r   g ✝`D;)r        ?r  ):?r   r   gdL;)r   r  r  r  r   r   gzK^7?)rz         r  r  r   r   gj?)rz   r  r{     r   r   ga=vG:)   r  r{   r  r   r   g?)(   r  r{   r  r   r   g1bV?)<   r  r{   r  r   r   g?c           	      C   *   t jj||||||d}t||dd d S NrW   dy=rt   )r2   r  rc   r   )	re   rT   r8  r,   r-   rX   rY   rG  rc   r.   r.   r/   test_cdf_mpmath  s   z!TestGenHyperbolic.test_cdf_mpmath))r   r  r  r   r   r   gC!,?)r   r         @      @r   r   g,Ћf?)rZ  r   r  r  r   r   r  )   rZ   r   r  rk   r  gm"چ>),  rU   r  r   r   rz   g:;)r  r  r{   r  r   r   gw=)K   r  r{   r  r   r   g3Z0&K<c           	      C   r  r  )r2   r  rb  r   )	re   rT   r8  r,   r-   rX   rY   rG  rb  r.   r.   r/   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 )rW   )r2   r  moment)r9   ir   r  r  r.   r/   r;     s    z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   rz   r   r~   r   )ranger   )re   r  r  r   r  Zvals_usr.   r  r/   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  rW   r  r   r  r   T)r2   r  r  r   rc   r   )
re   r  r   r  r  r  r   r  r   r8  r.   r.   r/   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  rU   rZ   r   rW   rm   Gz?r  r  r   )r]   r   float_powerr   float32epssqrtr2   r  rB  newaxisr   r\   t)	re   rk  r   r  r  r  r   r  rT   r.   r.   r/   
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   rW   rm   r  r  r  r   )r]   r   r  r  r2   r  r   rB  r  r   r\   cauchy)	re   r  r   r  r  r  r   r  rT   r.   r.   r/   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  rU   )r   r   r   rW   rZ  r  r  r   r   dy=r   )r]   r   r   r  r  r2   r  r  r   r\   laplace)	re   rX   r  r  r   r  r   r  rT   r.   r.   r/   test_pdf_laplace   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  rU   r      r   rV   r   rW   rm   r  r  )r,   r-   rX   rY   r~   r   )r]   r   r  r  r2   r  rB  r  r   r\   norminvgauss)	re   r   r  r  r  r  r   r  rT   r.   r.   r/   test_pdf_norminvgauss5  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.   r/   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   r   r   r   rh   r.   r.   r/   r   M  r  zTestNormInvGauss.setup_methodc                 C   @   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   rk   r,   r-   &.>r   )r]   r   r2   r  rc   r   )re   Zr_cdfx_testvals_cdfr.   r.   r/   
test_cdf_RP  s   zTestNormInvGauss.test_cdf_Rc                 C   r  )N)gp϶>g\H55$?geСt&?go NiH?g]u>r  r   rk   r  r  r   )r]   r   r2   r  r\   r   )re   Zr_pdfr  Zvals_pdfr.   r.   r/   r  \  s   zTestNormInvGauss.test_pdf_Rzx, a, b, sf, rtol))r   r   r   !7?r~   )r  r   r   ?=rp  )r   rz   r  gy5`?rl  )rU   rz   r  gMLC9r  c                 C   s@   t j|||}t|||d t j|||}t|||d d S Nrt   r2   r  rb  r   rg  )re   rT   r,   r-   rb  ru   rF   r  r.   r.   r/   test_sf_isf_mpmathd  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  r~   rE  r+  r  rt   r  )re   rT   r,   r-   rb  rF   r  r.   r.   r/   test_sf_isf_mpmath_vectorizedq  s   z.TestNormInvGauss.test_sf_isf_mpmath_vectorizedc                 C   s<   t dd}tddd}||}||}t|| d S )Nr   r   r  rZ   )r2   r  r]   r   rb  rg  r   )re   dstrT   rb  rg  r.   r.   r/   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   rk   rZ   r         @r   r   mvskmoments)r]   r  r   r2   r  )re   r,   r-   gammaZv_statsr.   r.   r/   
test_stats  s   (zTestNormInvGauss.test_statsc                 C   s@   d\}}t g d}tj|||}t|tj||| d S )Nr  MbP?rk   rK  )r]   r   r2   r  rB  r   rc   )re   r,   r-   r  r  r.   r.   r/   test_ppf  s   zTestNormInvGauss.test_ppfN)r   r   r   r   r  r  r   r   r   r  r  r  r  r  r.   r.   r.   r/   r  L  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   r   r   r   rh   r.   r.   r/   r     r  zTestGeom.setup_methodc                 C      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   )r2   geomr   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r       zTestGeom.test_rvsc                 C   sT   t jd}tjjt dd|d}|jt jksJ t 	|t 
t jjks(J d S )Nl   A: irz   r  )r]   r   r   r2   r  r   r   r   Zint64r  ZiinfoZint32max)re   r   r   r.   r.   r/   test_rvs_9313  s    zTestGeom.test_rvs_9313c                 C   s$   t jg dd}t|g d d S )Nr   rk   )rk   r   r  )r2   r  r  r   re   r  r.   r.   r/   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   rk   rs   r   r+  r   rp   )r]   rW  r2   r  r  rz  r   r   )re   r-  r.  r  r.   r.   r/   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   rk   rk   r'        ?r   )r2   r  rc   rb  r   r   re   r  vals_sfrN   r.   r.   r/   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   rk   r  )	r2   r  r}  logsfr   r   r]   rW  log1pr  r.   r.   r/   test_logcdf_logsf  s
   zTestGeom.test_logcdf_logsfc                 C   ,   t jg dd}tg d}t|| d S )Nr  rk   )r  ro   r  )r2   r  rB  r   r   re   r  rN   r.   r.   r/   r       zTestGeom.test_ppfc                 C   s   t tjddddd d S )N#B;r  +=r   )r   r2   r  rB  rh   r.   r.   r/   test_ppf_underflow  s   zTestGeom.test_ppf_underflowc                 C   s    t d }t|ddd d S )Ng<,Ԛ?g۩@rs   rt   )r2   r  r@   r   )re   r3  r.   r.   r/   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.   r/   r    s    	
r  c                   @   rS  )
TestPlanckc                 C   r   r   r   rh   r.   r.   r/   r     r  zTestPlanck.setup_methodc                 C   r  )Nr   r  )g|dy?g8'\>ggrU!>)r2   planckrb  r   r   r   r.   r.   r/   re    s   zTestPlanck.test_sfc                 C   r  )N)rr       @@     p@rr  )g    P.g    h>g    TF)r2   r  r  r   r   r   r.   r.   r/   
test_logsf  r  zTestPlanck.test_logsfN)r   r   r   r   re  r
  r.   r.   r.   r/   r    s    r  c                   @   r   )
TestGennormc                 C   0   g d}t j|d}t j|}t|| d S Nr   r   )r2   gennormr\   r  r   re   pointspdf1pdf2r.   r.   r/   test_laplace     zTestGennorm.test_laplacec                 C   4   g d}t j|d}t jj|dd}t|| d S Nr   rZ   g;f?rY   )r2   r  r\   normr   r  r.   r.   r/   	test_norm     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s:J td}|jdd}tjjddd	}t
||jdksXJ d S )
Nr   rk   r{   r  rR   r   rZ   g;f?rY   r   )r]   r   r   r2   r  r   r  rc   Zpvaluer  Zks_2sampr  )re   r:   r   Zrvs_laplaceZrvs_normr.   r.   r/   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s0J t|d d ddf tdjd d	ksGJ 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suJ d S )
Nr   rk   r  ro   r  )r{   rZ   rZ   r  r   rR   )r]   r   r   r2   r  r   r  rc   )re   r:   r   r.   r.   r/   test_rvs_broadcasting  s   ...2z!TestGennorm.test_rvs_broadcastingN)r   r   r   r  r  r  r  r.   r.   r.   r/   r    s
    r  c                   @   &   e Zd Zejdddgdd ZdS )
TestGibratx, sfx)r  gD.?)  gJ]b<c                 C   0   t tj||dd t tj||dd d S )Ng+=rt   )r   r2   r   rb  rg  re   rT   sfxr.   r.   r/   test_sf_isf     zTestGibrat.test_sf_isfN)r   r   r   r   r   r   r$  r.   r.   r.   r/   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   )r2   gompertzrB  rc   r   rP  r.   r.   r/   test_gompertz_accuracy(     z#TestGompertz.test_gompertz_accuracyz	x, c, sfx))r   r  g|t?)r   r  g(fMr;)r   rz   g[?)g      @rz   gg[<c                 C   4   t tj|||dd t tj|||dd d S Nr  rt   )r   r2   r)  rb  rg  )re   rT   r]  r#  r.   r.   r/   r$  9  s   zTestGompertz.test_sf_isfc, ref))rp  geUT8?)r   gtqq?)r{   gs{)rs  gN*6c                 C      t tj||dd d S r-  )r   r2   r)  r@   re   r]  rG  r.   r.   r/   r4  H     zTestGompertz.test_entropyN)	r   r   r   r*  r   r   r   r$  r4  r.   r.   r.   r/   r&  &  s    
r&  c                   @   r  )TestFoldNorm	x, c, ref)rp  :0yE>g:0N<?)rp  rp  g:?c                 C      t tj|||dd d S rr   )r   r2   foldnormrc   re   rT   r]  rG  r.   r.   r/   r#  W     zTestFoldNorm.test_cdfN)r   r   r   r   r   r   r#  r.   r.   r.   r/   r2  P  s
    
r2  c                   @   @   e Zd Zejdddgdd Zejdg ddd	 Zd
S )TestHalfNormr  )r   |N?)rU   Oul2;c                 C   r!  r-  )r   r2   halfnormrb  rg  r"  r.   r.   r/   r$  k  r%  zTestHalfNorm.test_sf_isfx, ref))gWw'&l7g;G<^͛7)C]r2<gE~o-<)r  g?c                 C   r/  rr   )r   r2   r=  rc   re   rT   rG  r.   r.   r/   r#  x     zTestHalfNorm.test_cdfN)r   r   r   r   r   r   r$  r#  r.   r.   r.   r/   r:  ]  s    

r:  c                   @   r9  )TestHalfLogisticr>  )rV   ]6)   L-c                 C   r/  rr   )r   r2   halflogisticrb  r@  r.   r.   r/   re    s   zTestHalfLogistic.test_sfq, ref))rC  rV   )rE  rD  )gv?g   .!>)g?g      <c                 C   r/  rr   )r   r2   rF  rg  re   rA  rG  r.   r.   r/   ri    r1  zTestHalfLogistic.test_isfNr   r   r   r   r   r   re  ri  r.   r.   r.   r/   rB    s    


rB  c                   @   rS  )TestHalfgennormc                 C   r  r  )r2   halfgennormr\   exponr   r  r.   r.   r/   
test_expon  r  zTestHalfgennorm.test_exponc                 C   r  r  )r2   rK  r\   r=  r   r  r.   r.   r/   test_halfnorm  r  zTestHalfgennorm.test_halfnormc                 C   s6   g d}t j|d}t j|d}t|d|  d S )Nr   g
(?rZ   )r2   rK  r\   r  r   r  r.   r.   r/   test_gennorm  s   zTestHalfgennorm.test_gennormN)r   r   r   rM  rN  rO  r.   r.   r.   r/   rJ    s    rJ  c                   @   rS  )TestLaplaceasymmetricc                 C   s6   t g d}tj|d}tj|}t|| d S r  )r]   r   r2   laplace_asymmetricr\   r  r   r  r.   r.   r/   r    s   z"TestLaplaceasymmetric.test_laplacec                 C   sL   t g d}d}d| }tj||}tj||d  |}t|| d S )Nr   rZ   r   )r]   r   r2   rQ  r\   r   )re   r  rv   Zkapinvr  r  r.   r.   r/   test_asymmetric_laplace_pdf  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   rU   rZ   rR   gMbp?r  gV-?皙?gMb`?)r]   r   rW  r2   rQ  r\   rc   rb  rB  rg  r   concatenate)re   r  rv   r  cdf1Zsf1r  cdf2Zsf2Zppf1Zppf2Zisf1Zisf2r.   r.   r/   !test_asymmetric_laplace_log_10_16  s   z7TestLaplaceasymmetric.test_asymmetric_laplace_log_10_16N)r   r   r   r  rR  rX  r.   r.   r.   r/   rP    s    	rP  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   r   r   r   rh   r.   r.   r/   r     r  zTestTruncnorm.setup_method	a, b, ref))r   rV   rq  )333333?ffffff?gܲl)r  g>g+c                 C   r5  N绽|=rt   r   r2   	truncnormr@   re   r,   r-   rG  r.   r.   r/   r4    s   zTestTruncnorm.test_entropy))r  rs  ghiɮ9?)r(  rt  rq  )g0.+rt  rq  )}Ô%Irt  Z_2?c                 C   r5  r-  r_  ra  r.   r.   r/   test_extreme_entropy  s   z"TestTruncnorm.test_extreme_entropyc              	   C   J   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   rp  rk   H.?r   rZ         r  r      rZ   rW   r   fO?l@rz   )r2   r`  rB  r]   r   r   r   r   r.   r.   r/   test_ppf_ticket1131  
   
z!TestTruncnorm.test_ppf_ticket1131c              	   C   re  )Nrf  rh  r  r   ri  rZ   rW   rz   rk  rj  r   )r2   r`  rg  r]   r   r   r   r   r.   r.   r/   test_isf_ticket1131  rm  z!TestTruncnorm.test_isf_ticket1131c                 C   s   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 oK|   k oK|k  d S    d S )N)ir  r   r   rU   r  )rU      r2   r`  r   r   minr  re   lowhighrT   r.   r.   r/   test_gh_2477_small_values  s   .8z'TestTruncnorm.test_gh_2477_small_valuesc                 C   sH  d\}}t jj||dddd}t||   ko"|   ko"|kn  t|||gf d\}}t jj||dddd}t||   k oO|   k oO|k n   d\}}t jj||dddd}t||   k ou|   k ou|k n   d\}}t jj||dddd}t||   k o|   k o|k  d S    d S )	N)rV   rS   r   r   rU   r  )r{     )'  i'  )i)r2   r`  r   r   rq  r  rC   rr  r.   r.   r/   test_gh_2477_large_values  s   <..8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 rVt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}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  qd S )Nr   r   r[  ro   r   r   r   r   r  r  rp   rp   )r   d._MT
@BKg?r   r   )r   r~  r}  r   r   rZ   rk   r   rk   r  gĖy	@gdv*?g,mj%V?r   )r]   r   r   r2   r`  rc   rb  r\   r   rW  rB  r   )re   rs  rt  xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsr\   r.   r.   r/   test_gh_9403_nontail_values(  sJ   



"z)TestTruncnorm.test_gh_9403_nontail_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 rWt 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  iro   r{  r|  )r   pGC@Ff<r   r   )r   r  r  r   r   rZ   rk   r  gEC@g i?gspXio)>r   ro  r   )r]   r   r   r2   r`  rc   rb  r\   r   rW  rB  r   r   )re   rs  rt  r  r  r  r  r  r  r  r  r  r  r  r\   Zxvals2r.   r.   r/   test_gh_9403_medium_tail_valuesK  sd   




 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   r2   r`  rc   r]   r   rh   r.   r.   r/   test_cdf_tail_15110_14753z  s   z'TestTruncnorm.test_cdf_tail_15110_14753)r  rp   r  rp   rp   )r  rU   rp   r  rp   gLFu)rz  r   rp   gMFmz%?rp   gſ)r   rZ   rp   ghI}?rp   gHNMr   gQ63E?gnl$A?gr1"D?gK8L?gQ63Egr1"D)r   r   gU*? bn?gnA??c3TXʿ)rz  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   )r2   r`  r   )re   r  r,   r-   m0Zv0s0Zk0mvrF   rQ   r.   r.   r/   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?)r2   r`  r]   r   r   )re   r  r  r.   r.   r/   test_9902_moments  s   
zTestTruncnorm.test_9902_momentsc                 C   sV   d\}}t jj||dddd}t||   k o%|   k o%|k  d S    d S )N)rU   r  r   r   rU   r  rp  rr  r.   r.   r/   test_gh_1489_trac_962_rvs  s   8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s=J tt ||j	ddk tt |j
dd|k d S )Nr  rU   r  ir  ro  rz   r  -   r  r   )Zaxis)r]   r   r2   r`  r   r   r  r   r  rq  r  rr  r.   r.   r/   test_gh_11299_rvs  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 d S )Nr   r  r  rz   r  )r+   r]   r   r2   r`  r   r   rh   r.   r.   r/   test_rvs_Generator  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 )NrU   r  )rU         @r  	   r  )gOul"gځ=!gL!g>EG	f g^K[X)r]   r   r   r   r2   r`  r}  r  )re   r,   r-   rT   rN   r.   r.   r/   test_logcdf_gh17064  s    "z!TestTruncnorm.test_logcdf_gh17064c                 C   s$   t ddd}d}t|| d S )Nr   r   rz   gl).0S?)r2   r`  r  r   )re   r   rG  r.   r.   r/   test_moments_gh18634  s   z"TestTruncnorm.test_moments_gh18634N)r   r   r   r   r   r   r   r4  rd  rl  rn  ru  ry  r  r  r  r]   r   Z_truncnorm_stats_datar   r  r  r  r  r  r  r  r.   r.   r.   r/   rY    s\    


#/
#

rY  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
=)rV   gh@X)r{   gh<c                 C   s$   d}t j||}t||dd d S )Nr  r~   rt   )r2   genlogisticr   r   )re   rT   rN   r]  logpr.   r.   r/   test_logpdf  s   zTestGenLogistic.test_logpdfr.  ))r(  gTKEl@)rp  gJk$@)r   gsF<?)rt  7~F<?c                 C   r/  N+<rt   )r   r2   r  r@   r0  r.   r.   r/   r4    r1  zTestGenLogistic.test_entropyr3  )rD  rU   g8.)  r  gpT	oc                 C   r5  r-  )r   r2   r  rb  r7  r.   r.   r/   re    r8  zTestGenLogistic.test_sf	q, c, ref)rm   rD  g^ #@)r  rZ   gGFf@c                 C   r5  NgV瞯<rt   )r   r2   r  rg  re   rA  r]  rG  r.   r.   r/   ri    r8  zTestGenLogistic.test_isf)rk   rD  gİ@)r  r  g1a@c                 C   r5  r  )r   r2   r  rB  r  r.   r.   r/   r    r8  zTestGenLogistic.test_ppf)rV   {Gz?g(?)r  r  g'Tn7c                 C   r5  rr   )r   r2   r  r}  r7  r.   r.   r/   test_logcdf  r8  zTestGenLogistic.test_logcdfN)r   r   r   r   r   r   r  r4  re  ri  r  r  r.   r.   r.   r/   r    s*    








r  c                   @   r$  )TestHypergeomc                 C   r   r   r   rh   r.   r.   r/   r   $  r  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  rU   r   r  r  r   r  )r2   	hypergeomr   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r  '  s   zTestHypergeom.test_rvsc                 C   s6   d}d}d}|}|}t jd|||}t|dd d S )Ni	  r  r  rZ   gkㅒP?ro  )r2   r  r  r   )re   Mr7  NZtotZgoodZhgpmfr.   r.   r/   test_precision3  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   rZ   r   r  ro  rp   )r   r2   r  r  rh   r.   r.   r/   	test_args=  s   zTestHypergeom.test_argsc                 C   s4   t dtjdddd  kodk d S    d S )Nr   r  io i  if0  r  )r   r2   r  rc   rh   r.   r.   r/   test_cdf_above_oneF  s   4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@@rz        @     @c                    s"   g | ]}t j   |qS r.   )r2   r  rb  )r9   ZeatenZorangesZpearsquantiler.   r/   r;   Q  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   r2   r  rb  )re   Zfruits_eatenr   rN   Z	quantilesres2Z	expected2r.   r  r/   test_precision2J  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   rp   )	r2   r  r@   r]   r   r0  r   r   r   )re   hgr3  r1  r2  r.   r.   r/   r4  ]  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  )r2   r  r  r   re   rQ   r  r7  r  resultrN   r.   r.   r/   r
  i  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  )r2   r  r}  r   r]   r   fullr  r.   r.   r/   r    s8   zTestHypergeom.test_logcdfN)r   r   r   r   r  r  r  r  r  r4  r
  r  r.   r.   r.   r/   r  #  s    
	r  c                   @   sj   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
dS )TestLoggammaz	x, c, cdf))r   rZ   g;Y%?)r      gRٲa6_<)gHr  gi|e?)r  g6l?)i+rR   g֬CCf9)ir'  g ֺlc                 C   <   t j||}t||dd t j||}t||dd d S r}   )r2   loggammarc   r   rB  )re   rT   r]  rc   r8  yr.   r.   r/   r_    s   zTestLoggamma.test_cdf_ppfzx, c, sf))r   r  gQOu3;)   rV   g\Z{0)r  r  geɐ?)ig{Gzd?gr0T?c                 C   r  r}   )r2   r  rb  r   rg  )re   rT   r]  rb  rF   r  r.   r.   r/   r$    s   zTestLoggamma.test_sf_isfc                 C       t jdd}t|ddd d S )NrZ   g     @r  rt   )r2   r  r   r   )re   lpr.   r.   r/   r    s   zTestLoggamma.test_logpdfc                 C   sT   t g ddd}|D ]\}}}}}tjj|dd}t|||||gdd qd S )N)rk   g"~jg46<@g oŏ      @r  g	h"lxgQ?gZd;333333@g      (@g{/L@g??gгYҿgh|?5?r   rz   Zmsvkr  r   r  )r]   r   reshaper2   r  r   )re   tabler]  r=  varskewZkurtcomputedr.   r.   r/   r    s   zTestLoggamma.test_statsr]  rR   r  c                 C   sx   t jj|dd}t| sJ t j|}t t||k t	|}|j
dd}|jd  k r7|jk s:J  J d S )Nr   r  rK  )Zconfidence_levelrk   )r2   r  r   r]   isfiniter  medianZ	binomtestZcount_nonzeror   Zproportion_cirs  rt  )re   r]  rT   ZmedZbtestcir.   r.   r/   r    s   $zTestLoggamma.test_rvsN)r   r   r   r   r   r   r_  r$  r  r  r  r.   r.   r.   r/   r    s    

r  c                   @   *   e Zd Zg dZejdedd ZdS )TestJohnsonsu))r  r   r   g?r4  )r|   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  rt   )r   r2   	johnsonsurb  rg  re   r  rT   r,   r-   rb  r   r.   r.   r/   r$  	     zTestJohnsonsu.test_sf_isfNr   r   r   casesr   r   r   r$  r.   r.   r.   r/   r        r  c                   @   r  )TestJohnsonb))rp  r   r   g?Hz>)rg  r   r   g0jA:r  )g!?r   r   gQbF5r  r  c                 C   sF   |\}}}}}t tj||||dd t tj|||||d d S )Nr  rt   r   )r   r2   r   rb  rg  r  r.   r.   r/   r$    r  zTestJohnsonb.test_sf_isfNr  r.   r.   r.   r/   r    r  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   2   t dd}tj|}tj|}t|| d S NrZ  r  )r]   r   r2   logisticrc   rB  r   re   rT   r  r^  r.   r.   r/   r_  (     zTestLogistic.test_cdf_ppfc                 C   r  r  )r]   r   r2   r  rb  rg  r   r  r.   r.   r/   r$  .  r  zTestLogistic.test_sf_isfc                 C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r2   r  rB  rg  )re   r8  Zdesiredr.   r.   r/   test_extreme_values4  s   z TestLogistic.test_extreme_valuesc                 C   s*   t jg d}g d}t||dd d S )N)r  r   rU   )gm\  .g9B.gO& $r~   rt   )r2   r  r   r   )re   r  rN   r.   r.   r/   test_logpdf_basic;  s   zTestLogistic.test_logpdf_basicc                 C   s"   t jddg}t|ddg d S )Nrj   r  )r2   r  r   r   re   r  r.   r.   r/   test_logpdf_extreme_valuesC  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 )NrV   r   rX   rY   c                 S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS Nr   rZ   )r   r]   r0  r   )inputr   r,   r-   r7  x1x2r.   r.   r/   r   O  s   z#TestLogistic.test_fit.<locals>.funcr  gKH9r   )r2   r  r   r"   	_fitstartrT   r   r   )re   loc_rvs	scale_rvsr   r   Zexpected_solutionZ
fit_methodr.   r.   r/   test_fitI  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 )NrV   rk   rZ   r  r   r   r   )r2   r  r   r   re   r   r.   r.   r/   test_fit_comp_optimizera  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)rx  r     r  r  )     g      g%h9fg?~T}%mgCx^&ْV瞯<rt   )r]   r   r2   r  r}  r  r   )re   r	  rT   r  rN   r.   r.   r/   test_logcdfsf_tailsg  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   r2   r  r  r.   r.   r/   test_fit_gh_18176u  s   
zTestLogistic.test_fit_gh_18176N)r   r   r   r_  r$  r  r  r  r   r   r   r  r  r  r  r.   r.   r.   r/   r  &  s    


r  c                   @   r   )

TestLogserc                 C   r   r   r   rh   r.   r.   r/   r     r  zTestLogser.setup_methodc                 C   r  )Nr'  r  r  r   r  r   )r2   logserr   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r    r  zTestLogser.test_rvsc                 C   s   t jdd}t|d d S )Nr   r  g&Y3)r2   r  r  r   re   r  r.   r.   r/   test_pmf_small_p  s   zTestLogser.test_pmf_small_pc                 C      t jd}t|d d S )Nr4  gW  ?)r2   r  r=  r   r  r.   r.   r/   test_mean_small_p  s   zTestLogser.test_mean_small_pN)r   r   r   r   r  r  r  r.   r.   r.   r/   r  ~  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      t jdS r   r]   r   r   rh   r.   r.   r/   r        zTestGumbel_r_l.rngr:   r  r   r   r   r  rR   r   rz   zfix_loc, fix_scaleTFc           	      C   sN   |j d|||d}t }|r|d |d< |r|d |d< t||fi | d S )NrV   )r   rX   rY   r   rZ   r   r   )r   r   r   )	re   r:   r  r  r   	fix_scaler   r   r   r.   r.   r/   r    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  rt   )r]   r   r   r   )re   r:   ZsgnzrX   rY   r.   r.   r/   r    s   zTestGumbel_r_l.test_fitN)r   r   r   r   fixturer   r   r   r2   gumbel_rgumbel_lr  r  r.   r.   r.   r/   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  R 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    d S 1 s[w   Y  d S )Nr5  rk   r  r  r  r  r  ro   r  g?grq@r'        @gffffff?gK~?g      2@g۶m۶m?r  UUUUUU?gqq?      $@      @g%I$I?gQ?gUUUUUU@grq?g88Nb@)r9  r:  r;  r<  r2   paretor   r]   r   r   r   r  re   r  r  rF   rQ   r.   r.   r/   r    s`   











$zTestPareto.test_statsc                 C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eArZ   r  r   rW   )r2   r0  rb  r   )re   rT   r-   rY   r8  rN   r.   r.   r/   re    s   zTestPareto.test_sfr  r  c                 C   r!  r   r"  rh   r.   r.   r/   r     r#  zTestPareto.rngz2ignore:invalid value encountered in double_scalarsr   r   rZ   r   r   	rvs_scalerz   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r<|  kr<dks?J  J t jjd|||d |d}t jj|dd	\}	}
}t|d |  |d }|jd }t|	|tt	||    t|
d d S )
NrV   r   r-   rY   rX   r   r   p=
ף?)r   r   )r   fix_b)r   fbrZ   r   )
r2   r0  r   r   r   rq  r  r]   r0  rW  )re   r   r   r2  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.   r/   r    s,   
zTestPareto.test_fitrR   fix_shape, fix_loc, fix_scalec                 C      g | ]}d |v r|qS Fr.   r9   r8  r.   r.   r/   r;   4      zTestPareto.<listcomp>TFr   repeatignoreinvalidc           
      C   V   t jjd||||d}i }	|r||	d< |r||	d< |r||	d< tt j|fi |	 d S )NrV   r3  r   r   r   )r2   r0  r   r   
re   r   r   r2  r   r   r&  r   r   r   r.   r.   r/   r   0     	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   rV   ið& r  )r2   r0  r   r]   r   r   r   )re   r  locationrY   r   r.   r.   r/   test_fit_known_bad_seedF  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   rZ   r   )rz   rZ   r   r   r   r   r   )r   r2   r0  assert_raisesr    r   rh   r.   r.   r/   test_fit_warningsP  s
   

zTestPareto.test_fit_warningsc                 C   s.   t jjddd|d}t|d t j|}d S )Ni~r   rV   )rX   r-   r   r   r   )r2   r0  r   r
   r   )re   r   r   r   r.   r.   r/   test_negative_dataX  s   
zTestPareto.test_negative_dataN)r   r   r   r  re  r   r(  r   r   filterwarningsr   r  r$   r]   errstater   rE  rH  rI  r.   r.   r.   r/   r+    s,    <





	r+  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	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 ]}t |}tj|\}}t|d tt | qt d}tj|\}}t||gddg d S )Nr  rp   rp          rk   )	r]   r   r2   	genpareto_get_supportr   r   isposinfr   )re   r]  r,   r-   r.   r.   r/   test_abc  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 )Nrp   r]  r   r.  r  r  rU   )
r2   rO  r]   r   r   r\   rL  rc   rb  rB  re   rvrT   rA  r.   r.   r/   test_c0p  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 )
Nrh  rS  r   r.  r  rp   r  rU   r   )r2   rO  r]   r   r   r\   uniformrc   rb  rB  r   rT  r.   r.   r/   test_cm1|  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 )NrR   rS  rp   r  rh  )
r2   rO  r   r\   r]   r   rc   r   isneginfr   re   rU  r.   r.   r/   
test_x_inf  s   """zTestGenpareto.test_x_infc                 C   s   t ddd}dD ]:}tj||}dD ]}tj||| }t||dd qtj||}dD ]}tj||| }t||dd q0q	d S )	Nr   rU   r  r   r   r  g+rl  r   )r  r  )r]   r   r2   rO  r\   r   rc   )re   rT   r]  Zpdf0dcZpdfcZcdf0Zcdfcr.   r.   r/   test_c_continuity  s   zTestGenpareto.test_c_continuityc              	   C      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 q*qd S Nrl  rm   rR   baser   r  FZendpointr  )rp   rh  r]  r   )r]   r  r\  r   r2   rO  rB  r   )re   rA  r]  Zppf0r^  Zppfcr.   r.   r/   test_c_continuity_ppf     z#TestGenpareto.test_c_continuity_ppfc              	   C   r`  ra  )r]   r  r\  r   r2   rO  rg  r   )re   rA  r]  Zisf0r^  Zisfcr.   r.   r/   test_c_continuity_isf  rf  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 )Nrl  rm   rR   rb  r   r  Frd  r  )r4  gC]r2rs   gV瞯Ҽrs   r   )	r]   r  r\  r   r   r2   rO  rc   rB  )re   rA  r]  r.   r.   r/   test_cdf_ppf_roundtrip  s   z$TestGenpareto.test_cdf_ppf_roundtripc                 C   s    t jdddd}t|d d S )Nrs  rm   r   r   gpEȜ)r2   rO  r  r   r  r.   r.   r/   r
    s   zTestGenpareto.test_logsfzc, expected_statsr   )r   r   rZ   r  r   r-  gqq@rU   rZ   gqq?g      ?g$I$	?rq?ri  gll0@r   )rk   UUUUUU?r   333333c                 C   s$   t jj |dd}t||ddd d S )Nr  r  r~   rs   r+  )r2   rO  r   )re   r]  expected_statsr  r.   r.   r/   r    s   zTestGenpareto.test_statsc                 C   s   t jd}t|ddd d S )Nr4  gvǼ
  ?r~   rt   )r2   rO  r  r   )re   r  r.   r.   r/   test_var  s   zTestGenpareto.test_varN)r   r   r   rR  rV  rX  r[  r_  re  rg  rh  r
  r   r   r   r]   r  r   r  rm  r.   r.   r.   r/   rL  b  s(    

	


rL  c                   @   D   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 )TestPearson3c                 C   r   r   r   rh   r.   r.   r/   r     r  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 )NrR   r  r  ZAllFloatrk   r   )r2   r(   r   r   r
  r  r   r  r   r  r   r*  r   r  r.   r.   r/   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 )NrZ   rp   rR   r  )gtT?g+q?g?r  r   rz  rR   ND}i?rz  r   r   r   r   )rq  gj?gdC?gs?g'M?)r2   r(   r\   r   r]   r   r  r.   r.   r/   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 )NrZ   rp  )grE?gTp]0?g~?r  r   rz  rR   g E&"J?rr  )giZ*J?gh+8w?gcK?g|<x6?gG?)r2   r(   rc   r   r]   r   r  r.   r.   r/   r#    s   

zTestPearson3.test_cdfc                    s@   g d}dd t j|} fdd|D }t|| d S )Nrz  r   r   rk   rk   r  c                    s$   g | ]}t t|j d  qS r7   )r   r2   r(   r\   )r9   r  Zneg_infx_evalr.   r/   r;   	  s    z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r2   r(   rc   r   )re   skewsr  Zint_pdfsr.   rt  r/   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s(J d S )Nr   rZ   r   r  )r2   r(   r  r   r  r]   number)re   r  r.   r.   r/   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 )Nrs  rk   r   r  r   rZ   )r2   r(   rB  rc   r   r]   r   r   r\   rb  rg  )re   rv  ru  r   r  rT   r.   r.   r/   test_ppf_bug_17050	  s   
zTestPearson3.test_ppf_bug_17050N)
r   r   r   r   r  r  r#  rw  ry  rz  r.   r.   r.   r/   ro    s    

ro  c                   @   rn  )
TestKappa4c                 C   sD   g d}d}dD ]}t j|||}t j|| }t|| qd S )N)rp   rR   r  rk   r  )
gffffffrh  r   皙ɿ皙rR   r  rk   r  ffffff?)r2   kappa4rc   rO  r   re   rT   r3  rQ   r  Z	vals_compr.   r.   r/   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  rz   rU   rp   rz  r   )r]   r   r2   r  rc   
genextremer   r  r.   r.   r/   test_cdf_genextreme2	  s   zTestKappa4.test_cdf_genextremec                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   rU   r  rp   )r]   r   r2   r  rc   rL  r   r  r.   r.   r/   test_cdf_expon;	     zTestKappa4.test_cdf_exponc                 C   @   t ddd}d}d}tj|||}tj|}t|| d S )Nr  rz   rU   rp   )r]   r   r2   r  rc   r)  r   r  r.   r.   r/   test_cdf_gumbel_rD	  r  zTestKappa4.test_cdf_gumbel_rc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  rz   rU   rh  rp   )r]   r   r2   r  rc   r  r   r  r.   r.   r/   test_cdf_logisticM	  r  zTestKappa4.test_cdf_logisticc                 C   r  )Nr  rz   rU   r  )r]   r   r2   r  rc   rW  r   r  r.   r.   r/   test_cdf_uniformV	  r  zTestKappa4.test_cdf_uniformc                 C   s   t dd d S r  )r2   r  rh   r.   r.   r/   test_integers_ctor_	  s   zTestKappa4.test_integers_ctorN)
r   r   r   r  r  r  r  r  r  r  r.   r.   r.   r/   r{  &	  s    					r{  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   r   r   r   rh   r.   r.   r/   r   f	  r  zTestPoisson.setup_methodc                 C   s@   t d}tjg d|}d|d |d d g}t|| d S )NrZ   r   r   rZ   rk   r   )r]   rW  r2   rF  r  r   )re   Zln2r  rN   r.   r.   r/   test_pmf_basici	  s   
zTestPoisson.test_pmf_basicc                 C   s@   t jg dd}g d}t|| t jdd}t|d d S )Nr  r   )r   r   r   ffffff?r   r   )r2   rF  r  r   intervalr   )re   r  rN   r  r.   r.   r/   test_mu0p	  s
   
zTestPoisson.test_mu0c                 C   r  )Nrk   r  r  r   r  r   )r2   rF  r   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r  y	  r  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  )rp   r  ro   r   rZ   rk   )r2   rF  r   r]   r  r   r   )re   r  r  rN   r.   r.   r/   r  	  s    &zTestPoisson.test_statsN)r   r   r   r   r  r  r  r  r.   r.   r.   r/   r  e	  s    	r  c                   @   l   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   r   r   r   rh   r.   r.   r/   r   	  r  zTestKSTwo.setup_methodc                 C   s   dD ]W}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   rZ   r   rU   rV   r{   r   rk   r   r  rZ   rp   )r]   r   r1   r   gammalnr   r2   ksonerb  r  kstworc   r   )re   r7  rT   v1lgelgrN   r  r.   r.   r/   r#  	  s   &zTestKSTwo.test_cdfc                 C   s   t ddd}dD ]U}t dd| d| ddd|  dg}d| | }tj|d }|dkr5t |nd}t ddd||  dtj	d| t
d| ddg}tj	||}t|| q	d S )Nr   r   ro  r  rk   r  rZ   )r]   r   r   r1   r   r  r   r2   r  rb  rq  r  r   )re   rT   r7  r  r  r  rN   r  r.   r.   r/   re  	  s   &
zTestKSTwo.test_sfc                 C   s\   t ddddd  }g d}|D ]}|t | }tj||}t |}t|d qd S )Nr   rZ   ro  r   )r  rV   rD  i  r{   r|   r4  )r]   r   r  r2   r  rc   diffr
   )re   rT   nsZ_xxnprobsZdiffsr.   r.   r/   test_cdf_sqrtn	  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   ro  r  )r]   r   r2   r  rc   rb  r   )re   rT   r7  r  r  r.   r.   r/   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 r  )r]   r   r  r2   r  rc   rb  r   )re   rT   r7  r  r  r  r.   r.   r/   test_cdf_sf_sqrtn	  s   zTestKSTwo.test_cdf_sf_sqrtnc                 C   n   t ddd}dD ]+}||d| k }tj||}d|k |dk @ }tj||}t|| || dd q	d S )	Nr   r   ro  r  rk   r  rp  rt   )r]   r   r2   r  rc   rB  r   re   rT   r7  r  r  condr  r.   r.   r/   test_ppf_of_cdf	  s   zTestKSTwo.test_ppf_of_cdfc                 C   r  )	Nr   r   ro  r  rk   r  rp  rt   )r]   r   r2   r  rg  rb  r   )re   rT   r7  r  Zvals_isfr  r  r.   r.   r/   test_isf_of_sf	  s   zTestKSTwo.test_isf_of_sfc                 C   t   t ddd}dD ].}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  q	d S )Nr   r   ro  r  rk   r  )r]   r   r  r2   r  rc   rB  r   r  r.   r.   r/   test_ppf_of_cdf_sqrtn	  s   zTestKSTwo.test_ppf_of_cdf_sqrtnc                 C   r  )Nr   r   ro  r  rk   r  )r]   r   r  r2   r  rb  rg  r   )re   rT   r7  r  r  r  r  r.   r.   r/   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 r  )r]   r   r2   r  rB  rc   r   )re   r  r7  r  r  r.   r.   r/   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 ]%\}}|t d	 t t jd	 |  }tj||}t	||| d
d q&d S )N)rU   r  rV   rD  r  r{   )r   gUUUUUU?rk   r   rZ   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?rZ   h㈵>rt   )
r]   r   	enumeraterW  r  r^   r2   r  rc   r   )re   r  ratiosrN   idxr7  rT   r  r.   r.   r/   test_simard_lecuyer_table1	  s   "z$TestKSTwo.test_simard_lecuyer_table1N)r   r   r   r   r#  re  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   r  	  s    
		
r  c                   @   rS  )TestZipfc                 C   r   r   r   rh   r.   r.   r/   r   "
  r  zTestZipf.setup_methodc                 C   r  )Nr  r  r  r   r  r   )r2   zipfr   r   r
  r  r  r   r  r   r  r)  r*  r  r.   r.   r/   r  %
  r  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,   r{  skr,   r  )r2   r  r   r]   r  r   r   r  r1  r.   r.   r/   r  0
  s
   zTestZipf.test_momentsN)r   r   r   r   r  r  r.   r.   r.   r/   r  !
  rX  r  c                   @   r   )
TestDLaplacec                 C   r   r   r   rh   r.   r.   r/   r   ;
  r  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 )Nr  r  r  r  r   rT  )r2   dlaplacer   r   r
  r  r   r  r   r  r)  r*  r  r.   r.   r/   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   rZ   r   r  r  r  r4  r   )r2   r  r]   r   r  r0  r   r   )re   r,   dlr  r  rF   rQ   r  r^  ppm2m4r.   r.   r/   r  I
  s   

&(zTestDLaplace.test_statsc                 C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Nro   r  )rp   rp   )r        
@)r]   rW  r2   r  r   r   )re   r,   r  r  r  rF   rQ   r.   r.   r/   test_stats2V
  s
   

zTestDLaplace.test_stats2N)r   r   r   r   r  r  r  r.   r.   r.   r/   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   r   r   r   rh   r.   r.   r/   r   _
  r  zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)rZ   r   r   )g
ףp=@g r@gʡE6@c                 C   sB  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rd	ksJ  J d S )NrV   r   r  rX   rY   r   r   rs   r   r   rF  r4  )fmur   )Zfix_mur   )
r2   r   r   r   r]   r=  r   r0  r   r   )re   rvs_mur   r2  r   r  rX   rY   Zmu_temp	scale_mleZmu_mleZ
shape_mle1Z
shape_mle2Z
shape_mle3r.   r.   r/   r  b
  s.   



*zTestInvgauss.test_fit)gX9v>@g	@gGz@c                    s   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sMJ tt j||d d tt j|dd tt j||tj
dd d d S )	NrV   r  r   rZ   )r   r  r   r   rF  )r2   r   r   r   r   r   r   r   r]   r  r   rand)re   r  r   r2  r   Z	super_fitZsuper_fittedZinvgauss_fit	__class__r.   r/   r   
  s"   




z(TestInvgauss.test_fit_MLE_comp_optimizerc                 C   sN   t tj tt tjjg ddd W d    d S 1 s w   Y  d S )Nr   rZ   r   )r   r2   r   r   r   r    r   rh   r.   r.   r/   test_fit_raise_errors
  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̗?rp  gx_;:g!?gٷ
??)r2   r   rc   r   r   rb  )re   r  rN   rL   Z
cdf_actualZ	sf_actualr.   r.   r/   r  
  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 )
Nrp  r  r  giJ.r  gr^ߺr  gpgFgpQ^L)r2   r   r}  r   r  )re   r}  r  r.   r.   r/   r  
  s   	


zTestInvgauss.test_logcdf_logsfzmu, ref))g:0yU>g,9)r  g%!)rm   g40)r   gK'
@)rt  g`p
@c                 C   r/  r  )r   r2   r   r@   )re   r  rG  r.   r.   r/   r4  
     zTestInvgauss.test_entropy)r   r   r   r   r   r   r   r  r   r  r  r  r4  __classcell__r.   r.   r  r/   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   rZ   r2  )r   rZ   r   rU   c                 C   sL  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 )	NrV   r  rs   r   r   r  rZ   rF  )r2   r  r   r]   r  r0  r   r   r   r   r   rG  r   r   r   r   )re   r   r2  r   Zloc_mler  rX   rY   r.   r.   r/   r  
  s*   



zTestLaplace.test_fitrvs_loc,rvs_scale))r  rU   rU   rz   )rk   r  c                    s   t jjd||d}dd }t j|\}}ttt jt j|\}}||||}	||||}
|	|
k s>tj|	|
ddds@J d S d S )Nr{   r  c              	   S   s8   dt | td|  d| tt||     S )Nr   rZ   r   )r   r]   rW  r0  r   )rX   rY   r   r.   r.   r/   ll"  s   z3TestLaplace.test_fit_MLE_comp_optimizer.<locals>.llrs   r   )r2   r  r   r   r   r   r]   r   )re   r   r2  r   r  rX   rY   Zloc_optZ	scale_optZll_mleZll_optr  r.   r/   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         @r  r  r   r   rs   r   r  )r]   r   r2   r  r   r   )re   r   rX   rY   r.   r.   r/   test_fit_simple_non_random_data0  s
   z+TestLaplace.test_fit_simple_non_random_datac                 C   sl   d}t j| }|dksJ t j|}|dksJ t j|}|dks'J t j| }|dks4J d S )Nr{   rp   r  )r2   r  rc   rb  )re   rT   p0p1r.   r.   r/   test_sf_cdf_extremes9  s   z TestLaplace.test_sf_cdf_extremesc                 C   s.   d}t j|}t|t| d dd d S )NrD  rZ   r~   rt   )r2   r  rb  r   r]   r   )re   rT   r8  r.   r.   r/   re  N     zTestLaplace.test_sfc                 C   s.   d}t j|}t|td|  dd d S )Ng}:rZ   r~   rt   )r2   r  rg  r   r]   rW  )re   r8  rT   r.   r.   r/   ri  S  r  zTestLaplace.test_isf)r   r   r   r   r   r   r  r   r  r  re  ri  r  r.   r.   r  r/   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   ro   g      ?)g     ?g      p?gSQ>c                 C   r5  rr   )r   r2   powerlawrb  )re   rT   r,   rb  r.   r.   r/   re  \  s   zTestPowerlaw.test_sfr  r  c                 C   r!  r   r"  rh   r.   r.   r/   r   b  r#  zTestPowerlaw.rngr   )rR   rk   r'  r   rZ   r   r$  r2  r%  r7  c                 C   r8  r9  r.   r:  r.   r.   r/   r;   j  r;  zTestPowerlaw.<listcomp>TFr   r<  c           
      C   sh   t jjd||||d}t }	|r||	d< |r"t| tj |	d< |r(||	d< tt j|fi |	 d S )Nr  )r   r,   rX   rY   r   r   r   r   )	r2   r  r   r   r]   	nextafterrq  r   r   rB  r.   r.   r/   r   f  s   z(TestPowerlaw.test_fit_MLE_comp_optimizerc                 C   sR   d}d}d}t jj|||dtjdd}d| d i}tt j|fi | d S )	Ng`- @rp   grߟA@rV   rz   )r,   rX   rY   r   r   r   rZ   )r2   r  r   r]   r   r   ptpr   )re   r,   rD  rY   r   r   r.   r.   r/   test_problem_casez  s   
zTestPowerlaw.test_problem_casec                 C   sf  t tj d}tt|d tjjg dddd W d    n1 s#w   Y  d}tt|d tjjg ddd W d    n1 sEw   Y  d}tt|d tjjg dd	d W d    n1 sgw   Y  d
}tt|d tjjg ddd W d    n1 sw   Y  d}tt|d tjjg ddd W d    d S 1 sw   Y  d S )Nz7 Maximum likelihood estimation with 'powerlaw' requiresr   r   rZ   r   r   r   rF  rZ   r   r   z$Negative or zero `fscale` is outsiderz  r  z0`fscale` must be greater than the range of data.)r   r2   r  rG  r    r   r   )re   r*   r.   r.   r/   rH    s*   
"zTestPowerlaw.test_fit_warningsc                 C   sJ   g d}t j}tjdd t|| W d    d S 1 sw   Y  d S )N)r   r   rZ   rZ   r   r   r   r   r   r   rz   r  r>  Zover)r2   r  r]   rK  r   )re   r   r:   r.   r.   r/   test_minimum_data_zero_gh17801  s
   "z+TestPowerlaw.test_minimum_data_zero_gh17801N)r   r   r   r   r   r   re  r(  r   r$   r   r  rH  r  r.   r.   r.   r/   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))rV   r  r   ga!R()r  r  r   g;?)r  r  r   gE?)MDr  r   g=c                 C      t tj||||dd d S r}   )r   r2   r   rb  re   rT   r]  rF   rG  r.   r.   r/   re       zTestPowerLogNorm.test_sfzq, c, s, ref)g?r  r   rm   )gR4-r  r   r{   c                 C   r  )Ng|=rt   )r   r2   r   rg  )re   rA  r]  rF   rG  r.   r.   r/   ri    s   zTestPowerLogNorm.test_isf))(,* Er  r   g?)r  r  r   gv6)r  rD  r   g+	94|7)r@  rD  r   g?c                 C   r  )Ngt =rt   )r   r2   r   rc   r  r.   r.   r/   r#    r  zTestPowerLogNorm.test_cdf))r  r  r   gS^Ռe9)@xDr  r   g0g;)g\)c=Hr  r   g7H7c                 C   r  )NgAfc=rt   )r   r2   r   r\   r  r.   r.   r/   r    s   zTestPowerLogNorm.test_pdfN)
r   r   r   r   r   r   re  ri  r#  r  r.   r.   r.   r/   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 )TestPowerNormr3  ))r  r   g| <)r  rZ   ge()rV   r  g%!@6)rD  rm   gT;-c                 C   r5  r}   )r   r2   	powernormrb  r7  r.   r.   r/   re    s   zTestPowerNorm.test_sfr  ))r  r  gĿ)gwJ?rV   g!X)rg  r  g缂U)r   r  gͫ1@)r?  rZ   gD@)Jz5rz   gU!zYr@c                 C   r5  Nr  rt   )r   r2   r  rg  r  r.   r.   r/   ri        zTestPowerNorm.test_isf))ir  g.u	T9)rZ   r  ?)rZ  r  gsK-)r  r  gk8>)rZ  r  g^u1-c                 C   r5  r  )r   r2   r  rc   r7  r.   r.   r/   r#    rw  zTestPowerNorm.test_cdfN)	r   r   r   r   r   r   re  ri  r#  r.   r.   r.   r/   r    s    


r  c                   @   >   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  P 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|| qBW d    d S 1 sWw   Y  d S )Nr5  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@)r9  r:  r;  r<  r2   r   r   r]   r   r   r   r   )re   r  rN   r,   rT   r  r.   r.   r/   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]   r\  r2   r   rc   rB  r   r  r.   r.   r/   r_  /  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        rZ   rV      r   r  rt   )	sysmaxsizer]   r\  r2   r   rb  rg  r   r  r.   r.   r/   r$  6  s   
zTestInvGamma.test_sf_isfa, ref)r   g70K6:)rt  gVMOuc                 C   r/  rr   )r   r2   r   r@   re   r,   rG  r.   r.   r/   test_large_entropyC  s   zTestInvGamma.test_large_entropyN)
r   r   r   r  r_  r$  r   r   r   r  r.   r.   r.   r/   r    s    r  c                   @   r   )
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)rZ   r   r  c                 S   &   g | ]\}}}|j |jg|R  qS r.   r\   r,   r9   _f_argsr   r.   r.   r/   r;   Y     & z(TestF.test_endpoints.<locals>.<listcomp>c                 S      g | ]\}}}|qS r.   r.   r9   r  r  Z	_correct_r.   r.   r/   r;   Z      )r2   fr\   r,   r   )re   r   r  r  Z_correctanscorrectr.   r.   r/   rQ  S  s   zTestF.test_endpointsc                 C   sX   t jj dddd\}}}}tt| tt| tt| tt|  d S )Nro        @r  r  )r2   r  r   r]   r  r1  r.   r.   r/   test_f_moments]  s
   zTestF.test_f_momentsc                 C   sV   t   t dt tjjdgd g ddd W d    d S 1 s$w   Y  d S )Nr5  ro  r   )rZ   r   r  r  r  dfndfdr  )r9  r:  r;  r<  r2   r  rh   r.   r.   r/   test_moments_warningse  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   ro  r  r  r  rZ   r   r  r  rz      )r]   r   r2   r  r   r  )re   r  r	  r  r  rF   rQ   r  Zv2s2Zk2numZk2denZk2r.   r.   r/   test_stats_broadcastk  s"   
0
 
 zTestF.test_stats_broadcastN)r   r   r   rQ  r  r
  r  r.   r.   r.   r/   r  R  s
    
r  c                   @   s   e Zd Zdd Zdd Zdd Z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 )Nrz   r  g?g?)r   r2   r  r>  rh   r.   r.   r/   test_rvgeneric_std~     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  )rk  r  )\(?rp   rZ   gGz @g     i@r   r  gGz@r   g
ףp=
@)rp   gq    @)r   r2   r  r]   r   r   rh   r.   r.   r/   test_moments_t  s    zTestStudentT.test_moments_tc                 C   s*   g d}g d}t tj||dd d S )N)r   rZ   r  rV   )g?@gTM]?ggY?U?r~   rt   r   r2   r  r@   )re   rk  rN   r.   r.   r/   test_t_entropy  s   zTestStudentT.test_t_entropyzv, ref)rV   r  )rt  rc  c                 C   r/  r-  r  )re   r  rG  r.   r.   r/   test_t_extreme_entropy     z#TestStudentT.test_t_extreme_entropymethname)r\   r   rc   rB  rb  rg  
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   rU   r  r   r   rk  rX   rY   rW   )r]   r   r   r   boolrW  r  randnr   r2   r  r  r   r   )re   r  r  rk  rT   Zt_distZ
t_dist_refZ	norm_distZt_methZ
t_meth_refZ	norm_methr   r.   r.   r/   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 ]}t|| | ||  t|| |  ||  q@tj	j|ddd}tj
jddd}tj	j||  ddd}t|| | t||  | d S )Nr   r  rU   r  r   r   r  )rk  rX   rY   r  rX   rY   r  r   r  rW   )r]   r   r   r   r  rW  r  r   r2   r  r  r  r   r@   )re   r  rk  r   Z
res_ex_infZres_ex_noinfr  r.   r.   r/   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   rr  rU   r   )rt  d~QJr  r   )gZ_2g9g!ǟuIgdg)g73?r   gմFhAW;gm0_?rs   rt   r  )r   r2   r  r   r\   )re   rT   rk  Z
logpdf_refZpdf_refr.   r.   r/   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.   r/   r  }  s0    



r  c                   @   r  )TestRvDiscretec                 C   r   r   r   rh   r.   r.   r/   r     r  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  q&| }tt|tjsLJ d S )N)r   r   r   rZ   r   r   )rp   r@  r  rp   r@  rp   r{   sample)namevaluesr  r   )r2   r=   r   r   r  r
  r*  r   r   r0  r   r]   r   r   integer)re   ZstatesZprobabilitysamplesrI  rT   rF   r8  r.   r.   r/   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   r|  r@  r  r&  )r  r   r   rp   )	r]   r   r2   r=   r0  r   r@   r   r   )re   r  r8  r2  r3  r.   r.   r/   r4    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  rk   r@  r  r)  r  r  r  rZ   rk   r  rp   r@  r  r   )r2   r=   r   r  )re   xkpkrU  rT   r.   r.   r/   r/    s   

zTestRvDiscrete.test_pmfc                    d   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  r  ro   r  r   rz   )r   rk   rk   rk   rT  rT  r   r   r  r   c                       g | ]}  |qS r.   )rc   )r9   r^  rU  r.   r/   r;     r  z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r2   r=   r   rc   )re   r+  r,  Zx_valuesrN   r.   r/  r/   r#       
zTestRvDiscrete.test_cdfc                    r-  )
Nr  r*  r)  )rR   rk   r[  rT  r  r  )r   r   rZ   rZ   r   r   r  r   c                    r.  r.   )rB  )r9   rA  r/  r.   r/   r;   $  r  z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r2   r=   r   rB  )re   r+  r,  Zq_valuesrN   r.   r/  r/   r    r0  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   rZ   r   ri  r  )rR   r  r@  r@  rR   r)  r   r4  r   )r2   r=   r   rB  rc   r+  )re   r  rU  r.   r.   r/   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   )rR   rR   r  r   )rR   rR   r   r   r)  r  r   )r]   r   r  r   r2   r=   r   r   r0  r+  r,  re   r+  r,  rU  r.   r.   r/   test_multidimension/  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 S )Nr   rk   r)  )rk   333333?gffffff濩r   rZ   r   r   rz   )r@  r@  r@  r@  r|  )rG  r   r2   r=   r   re   r+  r,  r.   r.   r/   test_bad_input8  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   rZ   rZ   )rZ   r   gUUUUUU?r)  r  r   rZ   r   )r]   r   r  r  rG  r   r2   r=   r   r   r  r6  r.   r.   r/   test_shape_rv_sampleH  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   rZ   r   r  ri  ro  )rR   r  r  r  r  rR   r)  r  r   )r2   r=   r   r   r]   r0  r+  r,  r2  r.   r.   r/   test_expect1W  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      @rr  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:?rp   gF%uk?g:vz?rp   rp   g.nr?g|гY?rp   rp   rp   g @6*? 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?rp   g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?rp   rp   g N@s?g 1w-!_?r=  gൄ|г?rp   gH}}?rp   g
F%u?rp   rp   g ^)ˀ?g v?rp   r)  r  r   c                 s   s    | ]	\}}|| V  qd S rg   r.   r9   r  wr.   r.   r/   	<genexpr>}  s    z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c                 S      | d S NrZ   r.   r   r.   r.   r/   rG         z-TestRvDiscrete.test_expect2.<locals>.<lambda>c                 s   s     | ]\}}|d  | V  qdS )rZ   Nr.   r>  r.   r.   r/   r@        )r2   r=   r   r   r=  r0  r   )re   r  pyrU  r.   r.   r/   test_expect2^  s   
zTestRvDiscrete.test_expect2N)r   r   r   r   r  r4  r/  r#  r  r1  r3  r7  r:  r;  rF  r.   r.   r.   r/   r#    s    	r#  c                   @      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  rz   rV   r   r  )	r]   r   r   r2   
skewcauchyr\   r  rc   rB  rh  r.   r.   r/   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   rU   rZ   r   rz   )
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   r2   rJ  r\   rc   rB  )re   r,   rT   r\   rc   r.   r.   r/   test_skewcauchy_R  s   z TestSkewCauchy.test_skewcauchy_RN)r   r   r   rK  rL  r.   r.   r.   r/   rH    s    	rH  rZ   rz   g@r   gףp=
1@r  gRZ@i   gS㥛Ԋ@rR   rS   g&@iQ i'  i0ybi l   HO1Z i3rz  irU   irV   ikrD  i1r|   i  i4i N  i(  lEI. @ i c                   @   sZ   e Z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S )TestSkewNormc                 C   s   t d| _d S r   )r   r   rh   r.   r.   r/   r        zTestSkewNorm.setup_methodc                 C   s0   t ddd}ttjj|ddtj| d S rI  )r]   r   r   r2   skewnormr\   r  rh  r.   r.   r/   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   rz   r'  )r,   r   r   rz  )r2   rQ  r   r   r   r  )re   r  rT   r.   r.   r/   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  rz   rZ   )r,   r   rX   rY   r   r  )r,   rX   rY   r  r  r[  )r2   rQ  r   r)  r   r]   r=  r  r  Zkurtosisr   )re   XrN   r  r.   r.   r/   r    s   $$zTestSkewNorm.test_momentsc                 C   sF   t jg dd}t|tddd t jdd}t|ddd d S )	N)rU   r  r  r   r   r  rt   r  r  r  )r2   rQ  rc   r   r]   onesrP  r.   r.   r/   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 ]#\}}}t j||}t||dd t j| | }t||dd qd S )N)r  r   gzbLe9)r[  rZ   gn'/2;)r   rz   g::)r  r   g|<)r  r[  r<  r4  rt   )r2   rQ  rc   r   rb  )re   ZcdfvalsrT   r,   Zcdfvalr8  r.   r.   r/   test_cdf_sf_small_values  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  rt   )r  r2   rQ  r  r   )re   r,   r  orderrN   Zmomr.   r.   r/   test_noncentral_moments  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r<dks?J  J ||
ksEJ tjj|ddd	d
\}}}|dksXJ t|||}|jdd}t |t|f}t	|| tj
jdd|d}tj|}t t |sJ tjj|d	d\}}}t |sJ t |t |}}t	|||t dt j    t	||d ddt j    d S )Nl   #ke )r   r,  rk   rV   r  r  r   r   gmmr   methodmsr  r   r\  rZ   )r]   r   r   r2   rQ  r   r   r=  r  r   r0  r  r  isinfr  r  r^   )re   r   r,   rX   rY   r:   r   a2loc2scale2a3loc3scale3Za4loc4scale4dist4r   rG  Za5Zloc5Zscale5r  r  r.   r.   r/   r    s,   

 zTestSkewNorm.test_fitN)r   r   r   r   rR  r  r  rU  rV  r   r   r   _skewnorm_noncentral_momentsrY  r  r.   r.   r.   r/   rO    s    	
rO  c                   @   r   )
	TestExponc                 C   s   t tjdd d S rO  )r   r2   rL  r\   rh   r.   r.   r/   	test_zeroE  s   zTestExpon.test_zeroc                 C   s0   t tjdd t tjtjdd d S )Nr?  r  )r   r2   rL  rc   rg  rb  rh   r.   r.   r/   	test_tailH  s   zTestExpon.test_tailc                 C   ,   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   rG  r   r2   rL  r   rh  r.   r.   r/   test_nan_raises_errorL     zTestExpon.test_nan_raises_errorc                 C   rm  rn  )r]   r   r   rG  r   r2   rL  r   rh  r.   r.   r/   test_inf_raises_errorQ  ru  zTestExpon.test_inf_raises_errorN)r   r   r   rk  rl  rt  rv  r.   r.   r.   r/   rj  D  s
    rj  c                   @   r  )TestNormc                 C   rm  rn  )r]   r   r   rG  r   r2   r  r   rh  r.   r.   r/   rt  X  ru  zTestNorm.test_nan_raises_errorc                 C   rm  rn  )r]   r   r   rG  r   r2   r  r   rh  r.   r.   r/   rv  ]  ru  zTestNorm.test_inf_raises_errorc                 C   s    g d}t ttjj|dd d S )Nr   shrimp)plate)rG  r   r2   r  r   rh  r.   r.   r/   test_bad_keyword_argb  s   zTestNorm.test_bad_keyword_argrX   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.:ro  r  rX   r~   rt   )r2   r  
_delta_cdfr   )re   rX   rN   r  r.   r.   r/   test_delta_cdff  s
    zTestNorm.test_delta_cdfN)
r   r   r   rt  rv  rz  r   r   r   r}  r.   r.   r.   r/   rw  W  s    rw  c                   @   s    e Zd ZdZdd Zdd ZdS )TestUniformgh-10300c                 C   rm  rn  )r]   r   r   rG  r   r2   rW  r   rh  r.   r.   r/   rt  v  ru  z!TestUniform.test_nan_raises_errorc                 C   rm  rn  )r]   r   r   rG  r   r2   rW  r   rh  r.   r.   r/   rv  {  ru  z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__rt  rv  r.   r.   r.   r/   r~  t  s    r~  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   rZ   r   r        @r   r.   )lamsigr  ZopK2Zexp_skewZexp_kurtr.   r.   r/   get_moms  s   $z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   r  r  r  )rz  rZ   rR   )r   r   r   )r  ro  r,  )r2   	exponnormr   )re   r  r  r  r  Kstsr.   r.   r/   r    s"   



zTestExponNorm.test_momentsc                 C   2   t dddddt jg}tttjj|ddd d S 	Nro  rp  rq  rr  rs  r   r   rF  )r]   r   r   rG  r   r2   r  r   rh  r.   r.   r/   rt       z#TestExponNorm.test_nan_raises_errorc                 C   r  r  )r]   r   r   rG  r   r2   r  r   rh  r.   r.   r/   rv    r  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   rp     rm   )r   r2   r  r\   rh   r.   r.   r/   test_extremes_x  s   zTestExponNorm.test_extremes_xzx, K, expected))r  rm   g6
N-)r   rm   g՜n+H?)r   rm   gi?)rZ  rm   gbJI-)rU   r   gI8?)rU   rw  gQ3|-0?c                 C   r5  r  )r   r2   r  r\   )re   rT   r  rN   r.   r.   r/   test_std_pdf  r  zTestExponNorm.test_std_pdfzx, K, scale, expected)r   rm   r   gVAҤ?)r  {Gzt?r   g'^>)r  rm   rV   rp   )r  rm   r{   gbr ;)rz   r  r   gVMe?c                 C   <   t jj|||d}|dkr|dksJ d S t||dd d S )Nr  rp   r~   rt   )r2   r  rc   r   re   rT   r  rY   rN   r8  r.   r.   r/   test_cdf_small_K  s   zTestExponNorm.test_cdf_small_K)rU   rm   r   ghG}$;)rZ   r  r   g]fJ?)rz   r  rk   g31"g#;)rU   r  rk   gf
+-)r  r  rk   rp   )rz  r  r   ga9S?c                 C   r  )Nr  rp   -a=rt   )r2   r  rb  r   r  r.   r.   r/   test_sf_small_K  s   zTestExponNorm.test_sf_small_KN)r   r   r   r  rt  rv  r  r   r   r   r  r  r  r.   r.   r.   r/   r    s8    

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   )simpsrU   rm   rk   ro   )Zdxr   )scipy.integrater  r2   genexponr\   r
  r   r   )re   r  r8  r.   r.   r/   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   rU   rm   rk   ro   r   )r2   r  rc   r
  r   r   r  )re   rc   r.   r.   r/   test_cdf_bounds  s   zTestGenExpon.test_cdf_boundszx, p, a, b, c))r  gM <r   rZ   r  )r   g%DYY?rk   rZ   r   )r   gS4z?      #@rZ   rk   )rm   ga^5?r  r   rk   )r  gs%)?r  r   rk   )r  gdm?r   rz   rk   c                 C   D   t j||||}t||dd t j||||}t||dd d S r-  )r2   r  rb  r   rg  )re   rT   r8  r,   r-   r]  rb  rg  r.   r.   r/   r$    s   zTestGenExpon.test_sf_isf))r   g;\i?rk   rZ   r   )r   gu0?r  rZ   rk   )rm   g-%I?r  r   rk   )r  g]d?r  r   rk   )r  g泩'?r   rz   rk   c                 C   r  r-  )r2   r  rc   r   rB  )re   rT   r8  r,   r-   r]  rc   rB  r.   r.   r/   r_    s   zTestGenExpon.test_cdf_ppfN)
r   r   r   r  r  r   r   r   r$  r_  r.   r.   r.   r/   r    s    
r  c                   @   rM  )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  rV   g_93@gBX@g,M<gǃ@֫5r^  rt   rl  )r   r2   
truncexponrb  rg  )re   r-   rT   rG  r.   r.   r/   r$  *  s
   zTestTruncexpon.test_sf_isfN)r   r   r   r$  r.   r.   r.   r/   r  (  rR  r  c                   @   rM  )TestExponpowc                 C   s6   t tjddd t tjtjdddd d S )Nr^  ro   r  rz   rT  )r   r2   exponpowrc   rg  rb  rh   r.   r.   r/   rl  5  s   zTestExponpow.test_tailN)r   r   r   rl  r.   r.   r.   r/   r  4      r  c                   @   rS  )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   r2   skellamr  )re   rQ   mu1mu2ZskpmfRr.   r.   r/   r/  <     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ñݸ?rz   r  )r
  r   r   r   r2   r  rc   )re   rQ   r  r  ZskcdfRr.   r.   r/   r#  Q  r  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   rE  r   r   )r   r2   r  r  rc   )re   rT   r  r  r.   r.   r/   test_extreme_mu2f  s   
zTestSkellam.test_extreme_mu2N)r   r   r   r/  r#  r  r.   r.   r.   r/   r  ;  s    r  c                   @   s   e Zd Zdd Zdd Z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S )TestLognormc                 C   sZ   t   t dt tjg dd}t|g d W d    d S 1 s&w   Y  d S )Nr5  r   rk   r   r   )rp   g~r?g e3E?)r9  r:  r;  r<  r2   r   r\   r   re   r\   r.   r.   r/   r  n  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?rE   )r   r2   r   rb  r  r]   rW  r  )re   r  r  sigmar.   r.   r/   r  v  s   
zTestLognorm.test_logcdfr  r  c                 C   r!  r   r"  rh   r.   r.   r/   r   ~  r#  zTestLognorm.rngr   rR   rZ   r   )r   r   rZ   r2  )r  r   rz   r7  c                 C   r8  r9  r.   )r9   er.   r.   r/   r;     r;  zTestLognorm.<listcomp>)FTr   r<  r>  r?  c           
      C   rA  )NrV   )r   rF   rY   rX   r   r   r   r   )r2   r   r   r   rB  r.   r.   r/   r     rC  z'TestLognorm.test_fit_MLE_comp_optimizerN)r   r   r   r  r  r   r(  r   r   r   r$   r]   rK  r   r.   r.   r.   r/   r  m  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d S )!TestBetac                 C   s:   t jddd}t|d t jddd}t|tj d S )Nr   r   rk   g;B.)r2   r  r   r   r]   r   re   r   r.   r.   r/   r    s   
zTestBeta.test_logpdfc                 C   sV   d\}}t g d}t||}t|| d t||t || d S )Ni  i  r  rk   r[  gƒ)	r]   r   r2   r  r   r   r0  r\   r   re   r   r  rT   r-   r.   r.   r/   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rR   rk   r[  r   r   rx  )r   r   ry  )rG  r   r2   r  r   rh  r.   r.   r/   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  rk   )fafix_a)rG  r   r2   r  r   rh  r.   r.   r/   #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   r2   r  rB  )re   r8  r,   r-   r.   r.   r/   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?)rU   rV   r{   r  r   r   )r]   r   r2   r  rg  r   rb  )re   Zinv_RZ
count_listr8  invr   r.   r.   r/   test_issue_12794  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   r2   r  rB  rc   r   )	re   Zalpha_2Zcount_ZnobsrA  r,   r-   r  r   r.   r.   r/   test_issue_12796  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   )r  r   r   )r   rz   rz   +ph  )rz   r   r  )r   r2   r  r\   r]   r   )re   r,   r-   r.   r.   r/   rQ    s   zTestBeta.test_endpointszDoes not convert boost warningc                 C   sJ   d\}}}t t tj||| W d    d S 1 sw   Y  d S )N)gףp=
?g   vH7B  @0B)r   warnsr<  r2   r  rB  )re   rA  r,   r-   r.   r.   r/   test_boost_eval_issue_14606  s   
"z$TestBeta.test_boost_eval_issue_14606r\  a, b)r        )@)r  r  c                 C   s,   d}z	|||| W d S  t y   Y d S w )Nr  )OverflowError)re   r\  r,   r-   r8  r.   r.   r/    test_beta_ppf_with_subnormal_a_b  s   z)TestBeta.test_beta_ppf_with_subnormal_a_brZ  ))rk   rk   gο)r  r   g )r   rw  g&׾k )r   r   g*)Mc                 C   s   t t|| | d S rg   )r   r2   r  r@   ra  r.   r.   r/   r4    r  zTestBeta.test_entropyN)r   r   r   r  r  r  r  r   r   skipifMACOS_INTELr  r  r  rQ  xfailr   r  r   r2   r  rB  rg  r  r4  r.   r.   r.   r/   r    s*    



 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  r   r   D>?)rs  r   r   m嗽?)r   r   rR   gPK?)r   r   r   g%p?)r^  r   rR   g#|/?)r^  r  r  gsM
<)r^  r   r   $5Є*?)^ 9^;r   rR   gompP?)r  r  r  g7j"!9)r  r   r   z^J?)r(  r   rR   gܷ"+>)r(  r  r  grNs: )r(  r   r   gK>c                 C   sZ   d\}}t g d}t||}tt ||  t|	|t 
|| d S )Nr  r  )r]   r   r2   r   r   r  r   r  r   r\   r   r  r.   r.   r/   r  B  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   r  r@  rp   r  r  c                    s   g | ]
}t j| qS r.   )r2   r   )r9   r  r   r  Zgen_cdfr.   r/   r;   V      z*TestBetaPrime.test_cdf.<locals>.<listcomp>-=r   )r2   r   rc   r   r]   r   r   r  r  r>   Z_cdf_singler   )re   rT   r  Zcdfs_gr.   r  r/   r#  I  s   
zTestBetaPrime.test_cdfzp, a, b, expected))rm         ?r  gV)?)rl  r  r  gWJB9*=)r?  r  r  gOG J<)r  r         @gΣ01)      ?r   r  g8ǘ`?)>q?r   rR   gMDc                 C   "   t j|||}t||dd d S r-  )r2   r   rB  r   )re   r8  r,   r-   rN   rT   r.   r.   r/   r  h  s   
zTestBetaPrime.test_ppfz
x, a, b, pc                 C   s   t tj||||dd d S r-  )r   r2   r   rB  )re   rT   r,   r-   r8  r.   r.   r/   test_ppf_gh_17631u  r  zTestBetaPrime.test_ppf_gh_17631zx, a, b, expected))rs  r  r  r  )rs  r   rR   gV[?)r  r   rR   r  c                 C   r  r-  )r   r2   r   rc   )re   rT   r,   r-   rN   r.   r.   r/   test_cdf_gh_17631y  s   zTestBetaPrime.test_cdf_gh_17631)r!  r   rR   g%?)r!  r   r   goXr?c                 C   s.   t j|||}|dk sJ t||dd d S )Nr  gh㈵>rt   )r2   r   rc   r   )re   rT   r,   r-   rN   r  r.   r.   r/   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)rz   r   rZ   r   r   r   r   r   r   r   r   r   r  r  )r   rZ   r   rR   rR   rR   rR   r   r   r   r   r   r  r  )rs  r  ꌠ9Y>)Fr  r^  r  r(  r  rs  r^  r  r(  rs  r^  )g/:g  U/7gKH9g<![a?gw 4?g)J?g5?r  r  r  r  g%?gsM
<r  rl  rt   )r2   r   rb  r   )re   r,   r-   rT   rG  Z	sf_valuesr.   r.   r/   re    s   zTestBetaPrime.test_sfc                 C   s.   t jjg dddd t jddd d d S )N)rR   r   r@  r4  皙?r   r   rF  r  r  )r2   r   r   rh   r.   r.   r/   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?rZ   r  gffffff@rz   )r]   r   r2   r   r  r   )re   rG  r   r.   r.   r/   test_moment_gh18634  s   
z!TestBetaPrime.test_moment_gh18634N)r   r   r   Zcdf_valsr  r#  r   r   r   r  r  r  r  re  r  r  r.   r.   r.   r/   r  %  s4    
	



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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  r  r  g
CTb?r   rU   gBΖ?)r2   r  r\   r   r  r.   r.   r/   r    s   
zTestGamma.test_pdfc                 C      t jdd}t|d d S rO  )r2   r  r   r   r  r.   r.   r/   r    s   zTestGamma.test_logpdfc                 C   s"   g d}t ttjj|ddd d S )Nr  r   rx  )r   ry  )rG  r   r2   r  r   rh  r.   r.   r/   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  rV   g1}t@r~   )r]   iscloser2   r  rg  rh   r.   r.   r/   ri    s   
zTestGamma.test_isfrY   r  r  c                 C   s.   t jj|d |d d|d}t|ddd d S )N   r  r   r  g>S*r~   rt   )r2   r  r|  r   re   rY   r  r.   r.   r/   r}    s   zTestGamma.test_delta_cdfza, ref, rtol))rp  gt.rs   )rZ   r  rs   )rV   gX>k-־@r~   )r  gwM7@rs   )g NgmCg%og$6@rs   )rt  oܘ#]@rs   c                 C   s   t tj|||d d S r  )r   r2   r  r@   )re   r,   rG  ru   r.   r.   r/   r4    r  zTestGamma.test_entropyN)r   r   r   r  r  r  ri  r   r   r   r}  r4  r.   r.   r.   r/   r    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   sz   t jd}d}|jd|d}|jd|d}tj||}tjt 	||d }t
|| t|}t||| d S )Nl   OP($ rU   r  )rt  r   rZ   )r]   r   r   normalrW  r2   dgammar\   r  r   r   r   )re   r   r   rT   r,   r   rG  r:   r.   r.   r/   r     s   

zTestDgamma.test_pdfzx, a, expected))rZ  r   ggrU>)r  r   g$IC<)irz   g2Wj<)r  g~)A.=)rz   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  )r2   r  rc   r   rB  rb  rg  )re   rT   r,   rN   rc   rB  rb  rg  r.   r.   r/   test_cdf_ppf_sf_isf_tail  s   z#TestDgamma.test_cdf_ppf_sf_isf_tailr  ))r  gmqn @)?g?)r  gx?c                 C   r/  r-  r   r2   r  r@   r  r.   r.   r/   r4  %     zTestDgamma.test_entropy))r(  rb  )r^  g>_)r  g5i)r  go@)  4&kCg4Fa3@)rt  grO]@c                 C   r/  r]  r  r  r.   r.   r/   test_entropy_entreme_values7  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   rz   r  r  )r]   r   r2   r  r@   r  r   )re   rT   r  r  r.   r.   r/   test_entropy_array_inputJ  s
   z#TestDgamma.test_entropy_array_inputN)r   r   r   r  r   r   r   r  r4  r  r  r.   r.   r.   r/   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 )Nr{   gޞw1D?r  r  rV   g6:֜?r   r2   chi2r\   rh   r.   r.   r/   r  S  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 )Nr{  gλm:=6g'bd5 <r^  rt   rk   gQ8@   gܐ؆0guu[9=rR   g8-*@)r2   r  rB  r   )re   rk  rT   r.   r.   r/   r  Y  s   zTestChi2.test_ppfro  ))rp  gܫ>)r   gƯʉ?)rV   gn>@)   g͔v0@)r  g9:3@c                 C   ru  r}   )r   r2   r  r@   rv  r.   r.   r/   r4  q  rw  zTestChi2.test_entropyN)	r   r   r   r  r  r   r   r   r4  r.   r.   r.   r/   r  Q  s    r  c                   @   r  )TestGumbelLc                 C   r  Nr  r[  )r]   r   r2   r*  rc   rB  r   r  r.   r.   r/   r_  }  r  zTestGumbelL.test_cdf_ppfc                 C   sH   t dd}tj|}tj|}t |}t| }t	|| d S r  )
r]   r   r2   r*  r}  r  r   r   expm1r   )re   rT   r  r'  ur  r.   r.   r/   r    s   
zTestGumbelL.test_logcdf_logsfc                 C   r  )NrZ  rz   )r]   r   r2   r*  rb  rg  r   r  r.   r.   r/   r$    r  zTestGumbelL.test_sf_isfrX   r   r   c                 C   s2   t jjd|d}t jj||d\}}t|| d S )NrV   )r   rX   r   )r2   r*  r   r   r   )re   rX   r   Z
fitted_locr   r.   r.   r/   test_fit_fixed_param  s   z TestGumbelL.test_fit_fixed_paramN)
r   r   r   r_  r  r$  r   r   r   r  r.   r.   r.   r/   r  {  s    r  c                   @   rG  )TestGumbelRc                 C      t tjdddd d S )Nr  ?~T}%m;r  rt   )r   r2   r)  rb  rh   r.   r.   r/   re       
zTestGumbelR.test_sfc                 C   r  )Nr  r  r  rt   )r   r2   r)  rg  rh   r.   r.   r/   ri    r   zTestGumbelR.test_isfN)r   r   r   re  ri  r.   r.   r.   r/   r    s    	r  c                   @   s  e Z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 d,g d-ej
g d.g d/g d0ejjd
ej
g d1ed2d3d4ed5dd6ejjd
gd7d8 Zej	d*e
g d+g d,g d-ej
g d.g d/g d0ejjd
ej
g d1ed2d3d4ed5dd6ejjd
gd9d: Zej	d;d<dgej	d=d>d?gd@dA Zej	dBdCdDgdEdDggdFdG Zej	dHdId<ejejejfgdJdKggdLdM Zej	dNg dOej	dPejj dQedRd<dSdTfejj!dQedRd<dSdTfejj dUed<dVdSdQfejj!dUed<dVdSdTfgdWdX Z"dYS )ZTestLevyStablec                 C   ,   t ttjd }t j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,pctnames	r]   loadr   __file__parentcorerecordsZ
fromarraysTr  r.   r.   r/   nolan_pdf_sample_data  s   z$TestLevyStable.nolan_pdf_sample_datac                 C   r  )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.   r/   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.   r/   nolan_loc_scale_sample_data  s   	z*TestLevyStable.nolan_loc_scale_sample_datasample_sizer  r  ZmarksparameterizationZS0ZS1z
alpha,beta))r  r   )r  r   )r  r   )r~  rk   zgamma,deltar   r   r9  c           
      C   sF   |t j_t j||||d}t |j|dd|j\}}	|	dks!J d S )N)r   r  rY   rX   r   r  r   )r2   levy_stabler  r  r   rc   )
re   r  r   r  r  r  r  lsr   r8  r.   r.   r/   r    s   zTestLevyStable.test_rvsr  rk   r   c                 C   sZ   t jd d}d}d}tjj||||dd}tj|d||||fd\}}|d	ks+J d
S )z3Additional test cases for rvs for alpha equal to 1.h:r  rk   r  r   rX   rY   r   r  r  rm   N)r]   r   r   r2   r  r   r  )re   r  r   rX   rY   rT   statr8  r.   r.   r/   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  rp   rp   rp   rp   羼 u?r  r  r  r  67',?r  r  r  r  tA}˜.?r  r  r  r  Gz?r   rm   r+  )\(̿rZ   gۧ1?r   g9]c?)r  r  r  r  r  r   gv?r  )r2   r  r  r   r   r   re   rT   alpha1beta1loc1scale1r  alpha2beta2ra  rb  r.   r.   r/   r  7  s   

zTestLevyStable.test_fitzUnknown problem with fitstart.r  zalpha,beta,delta,gamma)r  r  rZ   r   )r  r  rZ   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.rw  r   rX   rY   r   r   rm   rt   N)r2   r  r'  r   r  r   )re   r   r  r  r  r'  r   r   Z	alpha_obsZbeta_obsZ	delta_obsZ	gamma_obsr.   r.   r/   test_fit_rvsO  s   


zTestLevyStable.test_fit_rvsc           
      C   s~   t g d}tj|\}}}}tj| \}}}}	t|d |dks'J t|| t||  t||  t|	| d S )Nr   r   r   r   rU   rU   rU   r  r  rV   rV   r   r   )r]   r   r2   r  r  r   r   )
re   rT   r!  r"  r#  r$  r%  r&  ra  rb  r.   r.   r/   test_fit_beta_fliph  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   r2   r  r  r   )re   SHIFTrT   r!  r"  r#  r$  r%  r&  ra  rb  r.   r.   r/   test_fit_delta_shiftt  s   

z#TestLevyStable.test_fit_delta_shiftc                 C   s   g d}t j|\}}}}|dk sJ d| |t|k s+J dt| d| g d}t j|\}}}	}
|dksDJ d| |	t|ksVJ dt| d|	 d S )	N)r   r   r   r   rU   rU   rU   r  r     r.  r   zExpected alpha < 1, got zExpected loc < z, got )r   r   r   r   rU   rU   rU   r  r     r/  zExpected alpha > 1, got zExpected loc > )r2   r  r  rq  r  r   r.   r.   r/   test_fit_loc_extrap  s   $(z"TestLevyStable.test_fit_loc_extrapz pct_range,alpha_range,beta_range)rm   rk   r  )rR   r   rZ   )r   r   rT  )rm   r   rk   r  r  )rR   rk   r   r  rZ   )r   r   r   r@  r[  r   )rm   r   rR   r   ffffff?rk   ?r'  r  r  r  rR   rZ   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 ]\}	\}
}}|
tj_	|durs||| n|}t
 v}|td tjj|d |d |d ddd}tjdd( t|g d|t||d  t||d  t|d  g}W d   n1 sw   Y  ||d |kt|B  }t||d |d |	|
||jj|f d!d" W d   n1 sw   Y  q^d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   rk   r  r  r  rm   r  r@  r   r  r  rR   r   r'  )rk   r[  r\  r1  r2  )gٿ333333ӿr@  r  rk   r9  r  rR   r  r@  r  )rT  r  r  r}  r  )r]   isinr   rI  alpha_range
beta_range	pct_ranger.   r/   rG     s   











 
%


*


/


4
9
>
Cz7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	piecewiser  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr8  r   r  r  r  r]   r;  r<  r=  r.   r/   rG        

c                    s:   | d dk @ t | d @ d v @ t | d @ S )Nr   r  r8  r  rB  r<  r>  r?  is_linux_32r@  r.   r/   rG     s   
g&.=c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr8  r   r  r  rB  r<  r=  r.   r/   rG        
fft-simpsonr  c                    s<   | d dkt | d @ t | d  @ t | d @ S )Nr   r~  r8  r  rB  r<  r=  r.   r/   rG     s   
r  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk @ S )Nr8  r   r  r   r~  rB  r<  r=  r.   r/   rG   '  rC  Nz2Density calculations experimental for FFT method.*rT   r   r  r   r   rY   rX   r>  r  calcZabserrrelerrr8  rK  z8pdf test %s failed with method '%s' [platform: %s]
%s
%sFerr_msgverbose)platformunamesystemmachinejoin	processorr  r2   r  pdf_default_methodr   recordr<  r\   r]   rK  r   r   isnanr   r   r  )re   r  r@  r>  r?  r   rP  Zplatform_desctestsixdefault_methodru   filter_funcsubdatasupr8  subdata2failuresr.   rD  r/   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 ]\}\}}	}
|tj_|
durY||
| n|}t u}|td tjj|d |d |d ddd}tj	dd( t
|g d|t||d  t||d  t|d  g}W d   n1 sw   Y  ||d |	kt|B  }t||d |	d|||jj|f dd W d   n1 sw   Y  qDdS ) z4 Test cdf values against Nolan's stablec.exe output.rA  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 	Nr8  r   r  r  )r9  r|  r}  rm   rR   r  r@  r  rB  r<  r=  r.   r/   rG   ~  s$   



z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>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 ra  rB  r<  r=  r.   r/   rG     s"   


	
rG  r  c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr8  r   r  333333?rB  r<  r=  r.   r/   rG     rF  rp  c                    H   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr8  r   r  r  rc  rB  r<  r=  r.   r/   rG     rC  r  c                    rd  )Nr8  r   r  r  r  rB  r<  r=  r.   r/   rG     rC  rm   c                    rd  )Nr8  r   r  r  r  rB  r<  r=  r.   r/   rG     rC  Nz[Cumulative density calculations experimental for FFT method. Use piecewise method instead.*rT   r   r  r   r   rH  r>  r  rI  r8  rK  z)cdf test %s failed with method '%s'
%s
%sFrL  )r  r2   r  cdf_default_methodr   rV  r<  rc   r]   rK  r   r   rW  r   r   r  )re   r  r@  r>  r?  r   rX  rY  rZ  ru   r[  r\  r]  r8  r^  r_  r.   r=  r/   test_cdf_nolan_samplesa  sz   	

N

z%TestLevyStable.test_cdf_nolan_samplesr   r   r  r\   rc   c           
      C   s   t  }|jdkodt  d v }|r|dkrtd |}dtj_dtj_	||d |k }d| tj_
|d	v s;J |dkrCt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
        r4  32bitr   r\   z4Test unstable on some platforms; see gh-17839, 17859rA  r   S)r\   rc   rT   r   r  rZ   r   rH  r  N)rO  rP  rQ  architecturer   r   r2   r  re  rU  r  r\   rc   r   )
re   r  r   r  rP  rE  r   r\  r  r  r.   r.   r/   test_location_scale  s    
z"TestLevyStable.test_location_scalezmethod,decimal_placesr7  r   rA  c              	   C   s   t g d}t g d}t g d}t jddA t %}|jtdd |tj_tjj	|d|dd	d
}t
|||| W d   n1 sGw   Y  W d   dS W d   dS 1 s_w   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   rZ   rZ   rZ   rZ   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   rk   r   r   r   rk   r   r   r   rk   r   r   r   rk   r   r   r   rk   r   r>  r  zDensity calculation unstable.*)categorymessager   r   rH  N)r]   r   rK  r   rK   r<  r2   r  rU  r\   r   )re   r\  Zdecimal_placesZxsdensityZbetasr]  r\   r.   r.   r/   'test_pdf_alpha_equals_one_beta_non_zero  s(   Pz6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zerozparams,expected)r  r  r   r   )rZ   r  rU   r  )rU   r/  r   r   c                 C   s4   t jj |d |d |d |d dd}t|| d S )Nr   r   rZ   r   r  r  )r2   r  r   )re   paramsrN   Zobservedr.   r.   r/   r  :  s
   zTestLevyStable.test_statsr   )r   rk   r'  zfunction,beta,points,expectedr  r  rU   rp   rh  r  c                 C   s@   d|  k rdk sJ  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   )re   r   r  r  r  rN   r.   r.   r/   !test_distribution_outside_supportH  s
   (z0TestLevyStable.test_distribution_outside_supportN)#r   r   r   r   r(  r  r  r  r   r   r   r  r  r  r  r  r)  r+  r-  r0  r]   r   r   r`  rf  rj  ro  r   r   r  r2   r  rc   r\   rq  r.   r.   r.   r/   r    s    
!
+

 B
{ 
 
r  c                   @   rG  )TestArrayArgumentc                 C   r   r   r   rh   r.   r.   r/   r   x  r  zTestArrayArgument.setup_methodc                 C   s.   t jjtdtddd}t|jd d S )Nrz   r  r  )r2   r  r   r]   r   rT  r   r  re   r   r.   r.   r/   test_noexception{  s   z"TestArrayArgument.test_noexceptionN)r   r   r   r   rt  r.   r.   r.   r/   rr  w      rr  c                   @   rG  )TestDocstringc                 C   sH   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 d S )Nr   rU  )r2   r   r  r   lowerrU  rh   r.   r.   r/   test_docstrings  s
   zTestDocstring.test_docstringsc                 C   s   t   t   d S rg   )r2   r>   r=   rh   r.   r.   r/   test_no_name_arg  s   zTestDocstring.test_no_name_argN)r   r   r   rx  ry  r.   r.   r.   r/   rv        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   rZ   r   rZ   r   r   r   rZ   )r   rZ   rZ   r   r   r   )r   r   r   r]   r   r,   r-   r]  r.   r.   r/   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)ncfr  r  c                 C   r   r   r   rh   r.   r.   r/   r     r  zTestFitMethod.setup_method)rL  r  rW  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 deprecatedro  rp  rq  rr  rs  r   r  N)fitSkipNonFiniter   r   r]   r   r   r   r   r2   rG  r   r   )re   r:   r   rT   r  Zdistfuncr.   r.   r/   !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8 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    d S 1 sGw   Y  d S )Ni90  r>  rk  r   rp         4@r  r  rZ   r   rF  r4  r   )r]   r   r   rK  r2   r   r   r  rW  r=  r   r   r   )re   rT   Zexpected_shaper.   r.   r/   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   rZ   r   r  )r]   r   r2   r  r   r   r  r   re   rT   rX   rY   r.   r.   r/   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   rz   r  r  r   r   rZ   rF  )r]   r   rW  r=  r2   r  r   r   r   Zdigammar   )re   rT   Zmeanlogr   r,   rX   rY   rF   r   r   r]  r.   r.   r/   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]   rW  r0  r   psi)r,   r-   rT   r7  s1r  Zpsiabr   r.   r.   r/   mlefunc  s   z0TestFitMethod.test_fix_fit_beta.<locals>.mlefunc)r  r   rk   r   r   rF  r  r   rZ   )r   r   r   r  )r   r   r   rk   r  )r   r   r   )r   r   r   r   )r   r   r   r   )
r]   r   r2   r  r   r   r   r   rG  r   )re   r  rT   r,   r-   rX   rY   dadbr  r`  b2ra  rb  r  r.   r.   r/   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)rZ   rZ   r   r   r   r   r   r  rZ   r   r  r   r   r   )r]   r   r2   rL  r   r   r  r.   r.   r/   test_expon_fit(  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)r  r   rU   r     r  r   r   rl  rt   r  rF  rZ   r'  )r   Zfix_s)r]   r   rW  r2   r   r   r   r>  r   r   r=  r  )re   rT   Zlnxm1r  rX   rY   r.   r.   r/   test_lognorm_fit7  s    




zTestFitMethod.test_lognorm_fitc                 C   s   t g d}tj|\}}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  r4        "@r   r   rU   r  ro   r  )r]   r   r2   rW  r   r   rq  r  r  rG  r   r  r.   r.   r/   test_uniform_fitK  s   


zTestFitMethod.test_uniform_fitr\  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  rV   r   r  r  )r   r\  )r  r\  rl  r   )r  r\  r  )r   r\  )r6  r\  )r5  r\  r   rZ   )r  r   r\  r   r   )r  r   r   r   r\  )r  r   r   r\  )r  r   r   r  )	r2   r  r   r   r   rG  r   r   r  )re   r\  r,   r-   rT   Zres_1Zres_2Zres_3Zres_4Zres_5ZaaZbbr  ssr   r.   r.   r/   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 )NrZ   rV   )r  r   i)Zenikibenikir\  )r2   r  r   r   rG  r   r   )re   r\  r:   r   r   r.   r.   r/   test_extra_params  s   
"zTestFitMethod.test_extra_paramsN)r   r   r   r   r   r  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   r}    s$    

	&7&r}  c                   @   r$  )
TestFrozenc                 C   r   r   r   rh   r.   r.   r/   r     r  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  rW   r  r   rZ   )r2   r  r\   r   rc   rB  rg  rb  r  r=  r  r>  r@   r  r,   r-   )re   r:   frozenresult_fr  r.   r.   r/   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 )Nro   r  r   r.  rZ   )r2   r  r\   r   rc   rB  rg  rb  r  r=  r  r>  r@   r  r,   r:   r-   )re   r,   r:   r  r  r  r.   r.   r/   
test_gamma  sL   






















zTestFrozen.test_gammac                 C   s8   t d}|d}|j dd |d}t|| d S )Nr   rZ   r  r  )r2   r   r  r   )re   r  m1r  r.   r.   r/   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 ]6}t|}t j|d}|j|j	}}t|d t
t| td}t j|\}}t||gdd	g qpd S )
Nr}  rS  rp   r.  rR   r   rM  rN  rk   )r2   rO  r:   rP  r   r\   r]   r   r,   r-   r   r   rQ  r   )re   r]  rU  r,   r-   Zrv1r.   r.   r/   rR    s4   



zTestFrozen.test_abc                 C   s   t ttjd d S )NZ	rv_frozen)r   r+   r2   r3   rh   r.   r.   r/   test_rv_frozen_in_namespace9  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  )r2   r  r   r+   r   r   Z	get_stater]   r   ZRandomStater   )re   r  Zrndmr.   r.   r/   test_random_state=  s   
zTestFrozen.test_random_statec           
      C   s   t dd}t d}t jg dg dfd}|||fD ]H}d|_|jdd	 t|}|jdd	}t|}|jdd	}t	|| |
d
|
d
g}	t	|	d |	d  t	||	d ||	d  qd S )Ngdsz@g@e?r  )r   r   rZ   r   r:  r)  r   r  r  rk   r   r   )r2   r  rF  r=   r   r   pickledumpsloadsr   rB  rc   )
re   r  Zpoissr$  distfnrF   Zr0Z	unpickledr1Zmediansr.   r.   r/   test_picklingK  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 s4w   Y  t|| t jddd}||}t jj|ddd}t|| d S )Nc                 S      | S rg   r.   r   r.   r.   r/   r   f     z$TestFrozen.test_expect.<locals>.funcrZ   r   r   )r,   rX   rY   r>  )r@  divider   T)r   ubconditionalrZ   r   rX   rY   r   r  r  r{  )r   r   rX   )r2   r  r]   rK  r   r   rF  )re   r   ZgmZgm_valZ	gamma_valr8  Zp_valZpoisson_valr.   r.   r/   test_expectc  s   

zTestFrozen.test_expectN)r   r   r   r   r  r  r  rR  r  r  r  r  r.   r.   r.   r/   r    s    34,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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      | d | d  S )Nrz   r.   r   r.   r.   r/   rG   |  rH   z&TestExpect.test_norm.<locals>.<lambda>rz   rZ   rW   r   r  r  c                 S   r  rg   r.   r   r.   r.   r/   rG     r   r   r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   rX   rY   r   r  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   TrX   rY   r   r  r  r  )r2   r  r   r   rB  )re   r  r  r   r  prob90prob90cr.   r.   r/   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   r  )NUUUUUU@r.   r   r.   r.   r/   rG     rH   z&TestExpect.test_beta.<locals>.<lambda>r  rz   rZ   )r   rX   rY   qq?r  r  c                 S   r  rg   r.   r   r.   r.   r/   rG     r   r  ro   r  r  rU   rW   r   c                 S   r   )Nr  r.   r   r.   r.   r/   rG     r   )rU   rU   Fr  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   Tr  )r2   r  r   r   rB  )re   r  r  r  r   r  r  r.   r.   r/   	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  rU   r  r  r{  c                 S   r  rg   r.   r   r.   r.   r/   rG     r   z+TestExpect.test_hypergeom.<locals>.<lambda>)r  rU   r  r  r  r  c                 S      | d d S Nr  rZ   r.   r   r.   r.   r/   rG         r  c                 S   r  r  r.   r   r.   r.   r/   rG     r  rz   )r   rX   r   r  r   c                 S   r   r   r.   r   r.   r.   r/   rG     r   r  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   T)r   rX   r   r  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   r   )r   r   r  )r2   r  r   r   r  r0  )
re   Zm_trueZv_truer  r  Zv_boundsZ	prob_trueprob_boundsZprob_bcZprob_br.   r.   r/   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   r   r   r.   r   r.   r.   r/   rG     r   z)TestExpect.test_poisson.<locals>.<lambda>r  r   F)r   r   r  r   rZ   r  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   T)r2   rF  r   rc   r   )re   r  Zprob_b_trueZprob_lbr.   r.   r/   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)r  r  )rk   r  r  )r2   Zgenhalflogisticr   r   )re   Zhalflogres1r  r.   r.   r/   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   r   r   r.   r   r.   r.   r/   rG     r   z/TestExpect.test_rice_overflow.<locals>.<lambda>)r  r  c                 S   r   rB  r.   r   r.   r.   r/   rG     r   c                 S   r   Nr   r.   r   r.   r.   r/   rG     r   )r   r]   r  r2   ricer\   r   rh   r.   r.   r/   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)r@  r   c                 S   r  rg   r.   rQ   r.   r.   r/   rG     r   z(TestExpect.test_logser.<locals>.<lambda>r  r  rs   r   c                 S   r  rg   r.   r  r.   r.   r/   rG     r   r  )r2   r  r   r   r]   rW  )re   r8  rX   Zres_0Zres_lr.   r.   r/   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   r  rg   r.   r   r.   r.   r/   rG     r   z)TestExpect.test_skellam.<locals>.<lambda>r  c                 S   rA  rB  r.   r   r.   r.   r/   rG     rC  rl  r   rZ   )r2   r  r   r   )re   r  p2r  r  r.   r.   r/   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   r  rg   r.   r   r.   r.   r/   rG     r   z)TestExpect.test_randint.<locals>.<lambda>c                 s   s    | ]}|V  qd S rg   r.   r9   r   r.   r.   r/   r@    s    z*TestExpect.test_randint.<locals>.<genexpr>rs   r   )r2   r	  r   r   r0  r  )re   lohir   r.   r.   r/   test_randint  s
    
zTestExpect.test_randintc                 C   s   t ttjjdd d d S )Nc                 S   rA  rB  r.   r   r.   r.   r/   rG     rC  z&TestExpect.test_zipf.<locals>.<lambda>r  )r	   r<  r2   r  r   rh   r.   r.   r/   	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   r   r   r.   r   r.   r.   r/   rG     r   z/TestExpect.test_discrete_kwds.<locals>.<lambda>r  r  c                 S   r   r   r.   r   r.   r.   r/   rG     r   rv      r4  )r   Zmaxcount	chunksizeZ	tolerancer  r  )r2   rF  r   r   )re   Zn0Zn1r.   r.   r/   test_discrete_kwds   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 )Nrz   rU   r   r  r   r  rZ   r.   r  r.   r.   r/   poiss_moment5
  s   0z-TestExpect.test_moment.<locals>.poiss_moment5)rz   ri  rz   r^  rt   )r2   rF  r  r   )re   r  r  Zm5r.   r.   r/   test_moment  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  rW   r  rU   rR   )   r  r  U   r{  )r   r2   r  r   r  r  rh   r.   r.   r/   test_challenging_cases_gh8928  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 )NrU   rz   rW   r  rS  r  ro  r  r[  Tr  r  g433333@g433333r  )r2   rW  r=  r   r   )re   r:   rG  r.   r.   r/   test_lb_ub_gh15855  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.   r/   r  v  s    "
		
	r  c                   @   <   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 )Nrz   r   rk   r   g K?rU   r  )r2   nctr   rc   r   rZ  r.   r.   r/   test_nc_parameter1  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 )Nrz   r   ri  rR   r   )gMp^j?g6].ftv?gȳ'ς?gu?)g!Y<a?g]d1p?go|?g?)gHdY?g2Ԥg?g}o/u?g .mr?r  rt   )r2   r  r\   r]   r   r   r   r   )re   r   rN   r.   r.   r/   test_broadcasting9  s   zTestNct.test_broadcastingc                 C   s   t dd}t| d d S )Nr   r   ro   )r2   r  r   r  rZ  r.   r.   r/   test_variance_gh_issue_2401A  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  r@  r  )rk  ncr  r~  r  )r2   r  r   r]   r   r   r  r  r1  r.   r.   r/   test_nct_inf_momentsI  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 )Nr{   rZ   g@ @g*dn?r   r^  rt   r   gqI  @gL) ?r  )r2   r  r=  r   )re   Znct_mean_df_1000Znct_stats_df_1000Zexpected_stats_df_1000Znct_meanZ	nct_statsrl  r.   r.   r/   test_nct_stats_large_df_valuesV  s   
z&TestNct.test_nct_stats_large_df_valuesc                 C   s   t tjddtdd d S )NrZ   i   r   )r   r2   r  rc   r   rh   r.   r.   r/   test_cdf_large_ncl  r  zTestNct.test_cdf_large_ncN)	r   r   r   r  r  r  r  r  r  r.   r.   r.   r/   r  0  s    r  c                   @   r   )
TestRecipInvGaussc                 C   s   t jdd}|dksJ d S )Nr   r[  rp   )r2   recipinvgaussr\   rP  r.   r.   r/   test_pdf_endpoints  s   z#TestRecipInvGauss.test_pdf_endpointc                 C   s"   t jdd}|tj ksJ d S )Nr   r[  )r2   r  r   r]   r   r  r.   r.   r/   test_logpdf_endpointw  rf  z&TestRecipInvGauss.test_logpdf_endpointc                 C   s$   t jdd}d}t||dd d S )Nr   rk   g9V9s;r  rt   )r2   r  rc   r   re   r8  rN   r.   r.   r/   test_cdf_small_x{  s   z"TestRecipInvGauss.test_cdf_small_xc                 C   s"   t jdd}d}t||d d S )NP   rk   glH<r  )r2   r  rb  r   r  r.   r.   r/   test_sf_large_x  s   z!TestRecipInvGauss.test_sf_large_xN)r   r   r   r  r  r  r  r.   r.   r.   r/   r  q  s
    r  c                   @   rS  )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)r  r  r  rp   r-   )rR   rR   rk   r  r   r  r  r4  r   )r   r]   r  r2   r  r\   r  r   rc   r}  rB  r   )re   rT   rA  r  r-   r.   r.   r/   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   rz   )r-   r   )r2   r  r   r   r   r  rs  r.   r.   r/   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 )NrU      )g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?rR   r   g     @_@r   r  )	g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@rk      )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@)r2   r  rc   r]   r   r   rB  r1   )re   rc   Zcdf_expZprobabilitiesrB  Zppf_expr.   r.   r/   test_rice_gh9836  s   "

zTestRice.test_rice_gh9836N)r   r   r   r  r  r  r.   r.   r.   r/   r    s    r  c                   @   rS  )
TestErlangc                 C   r   r   r   rh   r.   r.   r/   r     r  zTestErlang.setup_methodc              	   C   s   t  6 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    d S 1 s=w   Y  d S )Nr5  r  r   r   r   r  )rk   r  ro   r  r  r  rt   )r9  r:  r;  r<  rG  r2   erlangr   r   r  r   )re   r   Zresult_erlangZresult_gammar.   r.   r/   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 )Nrk   r   r   r  )r   r2   r  r\   r  rh   r.   r.   r/   test_gh_pr_10949_argcheck  s   z$TestErlang.test_gh_pr_10949_argcheckN)r   r   r   r   r  r  r.   r.   r.   r/   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   r   )Nr  r   rh   r.   r.   r/   r     r  zTestRayleigh.setup_methodc                 C   r  )Nr  g)Zx)r2   r   r   r   re   r  r.   r.   r/   r       zTestRayleigh.test_logpdfc                 C   r  )Nr  i)r2   r   r  r   r  r.   r.   r/   r
     r  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 )NrZ   rk   )r]   r0  r   )r   r   r.   r.   r/   r  	  s   "z(TestRayleigh.test_fit.<locals>.scale_mler   r[  r  )r2   r   r   r   r   )re   r   r2  r   r  Zscale_expectrX   rY   r.   r.   r/   r    s   



zTestRayleigh.test_fitr  rm   g̡=E?g@1d?c                 C   s"   t jjd||d}tt j| d S )Nr  r  )r2   r   r   r   )re   r   r2  r   r.   r.   r/    test_fit_comparison_super_method  s   z-TestRayleigh.test_fit_comparison_super_methodc                 C   s   t tj d S rg   )r   r2   r   rh   r.   r.   r/   rH  %  rP  zTestRayleigh.test_fit_warningsc           	      C   s   t jd}d\}}}tjj||||d}tj|\}}|t |k s&J tjj||d\}}|t |k s9J ||ks?J d S )Ni  )r  r  r  r  r  )r]   r   r   r2   r   r   r   rq  )	re   r   rX   rY   r   r   r   r   r   r.   r.   r/   test_fit_gh17088(  s   
zTestRayleigh.test_fit_gh17088N)r   r   r   r   r  r
  r   r   r   r  r  rH  r  r.   r.   r.   r/   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 )NrR   r  r   g:23W+g~`9k)r2   	exponweibr\   r   r   )re   rT   r,   r]  r8  r  r.   r.   r/   test_pdf_logpdf7  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 )Nr[  r   r   r   rV   )r]   r\  r2   r  r\   weibull_minr   r   re   rT   r,   r]  r8  rN   r  r.   r.   r/   test_a_is_1B  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   rU   )r]   r\  r2   r  r\   rL  r   r   r  r.   r.   r/   test_a_is_1_c_is_1R  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   r  r-  )r2   r  rb  r   )re   rT   r,   r]  rG  rb  r.   r.   r/   re  q     zTestExponWeib.test_sfzp, a, c, ref))r   r  r'  g;y$(@)gMg<r  r'  gdbq^@)rl  r   rZ   gE@)gvIh%L=r  r   g/7@)r  r.  r  gTWTOc                 C   r  r  )r2   r  rg  r   )re   r8  r,   r]  rG  rg  r.   r.   r/   ri    s   	zTestExponWeib.test_isfN)r   r   r   r  r  r  r   r   r   re  ri  r.   r.   r.   r/   r  5  s    

r  c                   @   rG  )TestFatigueLifec                 C   r  )Nr<  r  X9r~   rt   )r2   r   rb  r   rd  r.   r.   r/   test_sf_tail  s   zTestFatigueLife.test_sf_tailc                 C   s$   d}t j|d}t|ddd d S )Nr  r  r<  r~   rt   )r2   r   rg  r   )re   r8  rA  r.   r.   r/   test_isf_tail  s   zTestFatigueLife.test_isf_tailN)r   r   r   r  r  r.   r.   r.   r/   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   r  rO  )r2   r  r   r   r  r.   r.   r/   r       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 )Nr  ro   r  r  rV  r   r  rZ   r  r  g&.gCe )r2   r  r\   r   r]   r   r   rW  rc   r   r  r}  rb  r  Zweibull_max)
re   rT   r,   r-   r8  r  r]  lcrF   r  r.   r.   r/   test_with_maxima_distrib  sH   


z$TestWeibull.test_with_maxima_distribrY   r  rR   c                 C   s*   t jj|d |d d|d}t|d d S )Nr  r  r   r  g>)r2   r  r|  r   r  r.   r.   r/   r}    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r<dks?J  J ||
ksEJ tjj|ddd	d
\}}}|dksXJ t|||}|jdd}t |t|f}t	|| d S )Nl   > )rZ   r,  rk   rV   r  r  r   r   r  rZ  r[  r]  r  )
r]   r   r   r2   r  r   r   r=  r  r   )re   r   r]  rX   rY   r:   r   c2ra  rb  c3rd  re  Zc4rf  rg  rh  r   rG  r.   r.   r/   test_fit_min$  s   
zTestWeibull.test_fit_minr3  )r  r   r  )r{   rT  gq뮕qH)c                 C   r,  r  )r   r2   r  rb  rg  r7  r.   r.   r/   r$  B  s   zTestWeibull.test_sf_isfN)r   r   r   r  r  r   r   r   r}  r  r$  r.   r.   r.   r/   r    s    T

r  c                   @   rG  )TestDweibullc                 C   sR   t jd}d|jddd }tj|}tj|t d }t	||dd d S )N   q>~). rU   rV   r  rk   rs   rt   )
r]   r   r   r  r2   dweibullr@   r  rW  r   )re   r   r]  r   rG  r.   r.   r/   r4  K  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  rU   r   r  rk   rs   rt   )
r]   r   r   r  rW  r2   r  rb  r  r   )re   r   r]  rT   r   rG  r.   r.   r/   re  X  s   zTestDweibull.test_sfN)r   r   r   r4  re  r.   r.   r.   r/   r  J  s    r  c                   @   r$  )TestTruncWeibullc                 C   s(   t jddgddd}t|ddg d S )NrR   ro   g)\(?gףp=
?rp   )r2   truncweibull_minr\   r   r  r.   r.   r/   test_pdf_boundse     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 )Nro   r  rp   r  g~?)r2   r  r   r]   r   r   r   r  r.   r.   r/   r  j  s   
zTestTruncWeibull.test_logpdfc                 C   s(   t jddgddd}t|ddg d S )Nrp   r  ro   rR   )r2   r  rB  r   r  r.   r.   r/   test_ppf_boundsr  r  z TestTruncWeibull.test_ppf_boundsc                 C   :   g d}t j|ddd}t j|ddd}t|| d S N)rp   rR   r   rk   r'  r  r  ro   rp   r  )r2   r  rB  rc   r   re   rA  rT   Zq_outr.   r.   r/   test_cdf_to_ppfw     z TestTruncWeibull.test_cdf_to_ppfc                 C   r  r  )r2   r  rg  rb  r   r  r.   r.   r/   test_sf_to_isf}  r  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 )Nro   r  r  c                    s   | | t j|   S rg   )r2   r  r\   )rT   r7  r{  r.   r/   xnpdf  s   z)TestTruncWeibull.test_munp.<locals>.xnpdfr   r   c                    
    | dS r   r.   r   r  r.   r/   rG        
 z,TestTruncWeibull.test_munp.<locals>.<lambda>rZ   c                    r  rB  r.   r   r  r.   r/   rG     r  r   c                    r  r  r.   r   r  r.   r/   rG     r  r   c                    r  )Nr   r.   r   r  r.   r/   rG     r  )r2   r  r  r   r   r   )re   r  r  Zm1_expectedr   r  Zm2_expectedZm3Zm3_expectedr  Zm4_expectedr.   )r,   r-   r]  r  r/   	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  ro   r   rk   r  )r]   r  rW  r   r2   r  rc   r   r}  rB  rb  r  rg  )re   r,   r-   r]  Zx_medrc   r  rB  rb  r  rg  r.   r.   r/   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 )
Nr  ro   rp   r  r  r  rZ   r   r  )r]   r   r2   r  r\   r  r   r   rc   r}  rb  r  r   )re   rT   r]  r,   r-   rY   r8  Zp_truncr  Zlp_truncrc   Z	cdf_truncr  Zlc_truncrF   Zs_truncr  Zls_truncr.   r.   r/   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  rV   )	r]   r   r2   r  r\   rc   r  testingr   )
re   r]  r,   r-   rT   r  rV  r  r  rW  r.   r.   r/   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.   r/   r  c  s    )r  c                   @   rG  )	TestRdistc                 C   s0   t j}g d}t|||dd|dd d S )Nr  g     @rz   r  )r2   rdistr   rc   rB  )re   r  r&  r.   r.   r/   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  rU   g@rk   rZ   r   )r]   r   r   r2   r  r\   r$  )re   rT   r]  r.   r.   r/   test_rdist_beta  s
   &zTestRdist.test_rdist_betaN)r   r   r   r%  r&  r.   r.   r.   r/   r#    rz  r#  c                   @   r  )TestTrapezoidc                 C   s`   g d}|D ]'}d|dg}t tj|||tj|| t tj|||tj|| qd S )N)r   r@  rk   r   r   r   )r   r2   r   r\   triangrc   )re   modesmoderT   r.   r.   r/   test_reduces_to_triang  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   rU   )r]   r   r   r2   r   r\   rW  rc   rh  r.   r.   r/   test_reduces_to_uniform
  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   rZ   r   rk   rT  ri  r  r  rR   g      ?r  r  r  r  g      ?)r   r2   r   r\   rc   rh   r.   r.   r/   
test_cases  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)rz  r   rZ   r   rZ   c                    sT   | d  | d     | d   | d        | d  | d  S )NrZ   r   r.   )r7  r,   r-   r]  dr3  r.   r/   r  *  s    z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   rk   r  r  r   rz  r  r   r   )r]   rW  r   r2   r   r=  r  r@   )	re   r  r  rX   rY   r  r=  r  r@   r.   r/  r/   test_moments_and_entropy#  s&   0> z&TestTrapezoid.test_moments_and_entropyc                 C   s`  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|||||
< qIt|||jdd t tjj||dd	}t ||\}}t |jd
f}t 	|j}	t
|	| | D ]\}
}}tjj||dd	||
< qt||j|jdd d S )Nrb  rk   r[  )r  r   r  r  rs   r   r  r  r   )r]   r   r2   r   r\   Zbroadcast_arraysemptyr   r   r   r   ravelr   r  r  r   r  )re   r]  r0  rT   r  ccddr^  r   indr  r   c1Zd1r.   r.   r/   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   r2   rA   r\   rW  rh  r.   r.   r/   
test_trapzX  s   "zTestTrapezoid.test_trapzN)	r   r   r   r+  r-  r.  r1  r8  r9  r.   r.   r.   r/   r'     s    	r'  c                   @   rM  )
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    d S 1 sw   Y  d S )Nraiserk  r   ro   rk   r  r   rp   rZ   r'  r   )r]   rK  r   r2   r(  r\   rc   rh   r.   r.   r/   test_edge_cases_  s   "zTestTriang.test_edge_casesN)r   r   r   r<  r.   r.   r.   r/   r:  ^  r  r:  c                   @   r9  )TestMaxwellr>  )r  gCR5&.)rm   g7q?c                 C   r/  r-  )r   r2   maxwellrb  r@  r.   r.   r/   re  w  rA  zTestMaxwell.test_sfrG  ))r  g1!@)g    ?g?)g      <gCuJ!@c                 C   r/  rr   )r   r2   r>  rg  rH  r.   r.   r/   ri    r1  zTestMaxwell.test_isfNrI  r.   r.   r.   r/   r=  r  s    
r=  c                   @   rG  )
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   r2   mielker  r]   r   r   r  )re   rQ   rF   r.   r.   r/   r    s    zTestMielke.test_momentsc                 C   s@   t ddd}d\}}ttj|||| tj||| d S )Nrm   rV   r  )g@gHzG@)r]   r   r   r2   burrr\   r@  )re   rT   rQ   rF   r.   r.   r/   test_burr_equivalence  s   *z TestMielke.test_burr_equivalenceN)r   r   r   r  rB  r.   r.   r.   r/   r?    rz  r?  c                   @   rS  )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   )rk   rZ   )r   r   )rZ   rk   r  rk   r  )r   rZ   ro   c                 S   r  r.   r  r  r.   r.   r/   r;     r  z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c                 S   r  r.   r.   r   r.   r.   r/   r;     r  c                 S   r  r.   )r   r,   r  r.   r.   r/   r;     r  c                 S   s   g | ]
\}}}t |qS r.   )r]   rW  r   r.   r.   r/   r;     r  )r2   ZfiskrA  burr12r   )re   r   r  r  r.   r.   r/   test_endpoints_7491  s   






	
zTestBurr.test_endpoints_7491c                 C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)r  r   )g4U?g&MI?)r2   rA  r   )re   r]  r0  r=  varianceZmean_hcZvariance_hcr.   r.   r/   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)rk   r   )r  r   )r   rZ   r   r   )r  r   )r,  r   )r/  r   )r2   rA  r   r]   rW  r  _munpr   )	re   r]  r0  r=  rF  e1e2Ze3Ze4r.   r.   r/   test_burr_nan_mean_var_9544  sL   "z$TestBurr.test_burr_nan_mean_var_9544N)r   r   r   rE  rG  rK  r.   r.   r.   r/   rC    s    rC  c                   @   r  )
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  r~   rt   )r2   rD  r|  r   )re   rY   rN   r  r.   r.   r/   r}    s   zTestBurr12.test_delta_cdfN)r   r   r   r   r   r   r}  r.   r.   r.   r/   rL    s    rL  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 sww   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/ݤ@)r  r  rK  r   r   rU   r  x   )rZ   r  r  r  )rR   r   i)#  gupm1f?)r   rU   r{   g?<-=A?gv"?r   gd暕?ga-A?c                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )Nrp  rt   )r   r2   studentized_rangerc   r   )re   pvkrA  Z
p_expectedr  rQ   Zres_pr.   r.   r/   test_cdf_against_tables&  s
   
z,TestStudentizedRange.test_cdf_against_tablesc                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )NMb@?rt   )r   r2   rO  rB  r   )re   rP  Z
q_expectedr8  r  rQ   Zres_qr.   r.   r/   test_ppf_against_tables,  s
   
z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonNcase_resultZcdf_datac                 C   N   |d }|d }|d |d |d f}t jj| }t|||d |d d d S 	Nsrc_case	mp_resultrA  rQ   r  expected_atolexpected_rtolr   )r2   rO  rc   r   re   rT  rW  rX  Zqkvr   r.   r.   r/   test_cdf_against_mp8     
z(TestStudentizedRange.test_cdf_against_mpZpdf_datac                 C   rU  rV  )r2   rO  r\   r   r[  r.   r.   r/   test_pdf_against_mpC  r]  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 s*w   Y  t|||d |d	 d
 d S )NrW  rX  r  rQ   r  r>  r?  rY  rZ  r   )r]   rK  r2   rO  r  r   )re   rT  rW  rX  Zmkvr   r.   r.   r/   test_moment_against_mpN  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   rU   r   r  r   )r   r2   rO  r\   r]   r   r   )re   rQ   r  r   r.   r.   r/   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 )	Nr`  r   rU   rm   )stepr   rp  rt   )r]   r   r2   rO  rc   r\   r   r   )re   rQ   r  rT   Zy_cdfZ	y_pdf_rawZy_pdf_cumulativer.   r.   r/   test_pdf_against_cdfe  s   
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc                 C   sV   |\}}}}t jdd tj|||}W d    n1 sw   Y  t|| d S )Nr>  r?  )r]   rK  r2   rO  rc   r   )re   rd  rA  rQ   r  Zr_resr   r.   r.   r/   test_cdf_against_ru  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w   Y  t|jd	 tjt	d
d tjdddgg d W d    d S 1 sIw   Y  d S )Nr>  r?  r   rZ   r   rz   rU   ro  r  z...could not be broadcast...r   )rU   ro  r  )
r]   rK  r2   rO  rH  r   r  r   r   r   r  r.   r.   r/   test_moment_vectorization}  s   "z.TestStudentizedRange.test_moment_vectorizationc              	   C   s   t  /}tjdd |t tjg d\}}}}W d    n1 s&w   Y  W d    n1 s5w   Y  ttj	|| d S )Nr>  r?  r   )
r   r]   rK  rK   r   r2   rO  r  r   Z	_argcheck)re   r]  rQ   rk  r   r.   r.   r/   test_fitstart_valid  s   
 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   rU   韆 rp  r   )r2   rO  r\   r]   r   r   rc   )re   r   
res_finiter.   r.   r/   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   rU   r   rh  i r  r   )r2   rO  r\   rG  AssertionErrorr   rc   )re   r   ri  Z
res_sanityr.   r.   r/   test_df_cutoff  s   

z#TestStudentizedRange.test_df_cutoffc                 C   s8   d\}}}t j|||}t|ddd |dksJ d S )N)gaRA@r   iS  r   r^  r   )r2   rO  rb  r   )re   rA  rQ   r  r8  r.   r.   r/   test_clipping  s   
z"TestStudentizedRange.test_clipping)1r   r   r   Zq05Zq01Zq001r]   rU  qsZpsr   vskslistr   r$   r   Zr_datarQ  r   r   r  rS  ospathdirnamer  Zpath_prefixZrelative_pathopenrS  filejsonr  Zpregenerated_datar   r\  r^  Zxfail_on_32bitr_  ra  r   rc  re  rf  rg  rj  rl  rm  r.   r.   r.   r/   rM    sX    









rM  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?rU   test_540_567)r  rM  g2gk?g;B.?gͣh?gHŎ*?rW   g.y?)r   r2   r  rc   r.   r.   r.   r/   rx    s   
rx  c                   C   s   t tjdddd d S )Nrp   rZ   rk   r  r  r.   r.   r.   r/   test_regression_ticket_1326  s   ry  c               	   C   s  t ddd} t jddE dddt dgdgdggfD ]}tj| |}t|dk  tt 	|   qt dgdgd	gg}tj| |}W d    n1 sUw   Y  tt 	|   t|d
 dk  t|d dk  t|d dk
  t|d dk
  d S )N      r  rS   r>  r  rp   rh  rN  ro   r   r   rZ   )r]   r   rK  r   r2   r'   r\   r   r  rW  any)rT   r  r8  r.   r.   r/   test_regression_tukey_lambda  s   "	r}  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   r2   rF  r  r.   r.   r.   r/   test_regression_ticket_1421  s   r~  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    d S 1 sw   Y  d S )Nr>  r?  r   rk   )r]   rK  r   rW  r2   r  r}  r   rc   r  rb  r\   r   rB  rg  rU  r  rz  r.   r.   r.   r/    test_nan_arguments_gh_issue_1362  s$   "r  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 s9w   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   rp   rk   r   r   rZ   rV   r  r>  r{  rp   r   r  rk   )r   rX   r   )r   rX   r  r  ro   r   )r]   r   r   r   r2   r   r   rK  r   r   r  r  r=  )truerT   rp  rX   r   rN   r.   r.   r/   test_frozen_fit_ticket_1536   s(     r  c                  C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 rV   r  )g
ףp=
?gʡE?r   r  )r]   r   r   r2   r  r   r   r   )r   rp  rN   r.   r.   r/   test_regression_ticket_1530  s
   r  c                  C   sV   t jd t jd} dD ]}tj| | \}}t||dd t|ddd qd S )Nr   r  )r  g   6Ar  r   r[  )r]   r   r   r  r2   r  r   r   )rT   offsetrX   rY   r.   r.   r/   test_gh_pr_4806%  s   r  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  rZ   r   r4  rU   r  g
ףp=
	@)r   gz5v?r   gRTgQ?)r   gNg @r   gJFٻ)r2   r'   r]   r^   r   )r  rN   r.   r.   r/   "test_tukeylambda_stats_ticket_1545/  s   r  c                   C   s   t ttjdd d S )Nr  rD  )r   r]   r  r2   rF  rz  r.   r.   r.   r/   test_poisson_logpmf_ticket_1436C  s   r  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  )rk   rj  rp   rk  )ro   )gUUUUUU?r  g^cQg333333r  r  N)r2   r  r   )r  r,   Z
exact_mvskr  r.   r.   r/   test_powerlaw_statsG  s   r  c                  C   s   t jdd} t| d d S )Nr   r   rp   )r2   r  r   r   r8  r.   r.   r/   test_powerlaw_edgem  r  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   rp   )r   r  r  r  )r2   r  r   r   r\   r]   r   r  r.   r.   r/   test_exponpow_edges  s   
r  c                  C   s   t jddd} t| d d S )Nr   r   r  )r2   gengammar\   r   r  r.   r.   r/   test_gengamma_edge  s   r  za, c, ref, tol))g    `6Ar   g2j!@rs   )r  r   ggA@rs   )rt  r   r  rs   )r	  r   g #@r~   )g    `FArb  gI~mrs   )gl$W}Lr(  g.I#Urs   c                 C   s   t tj| |||d d S r  )r   r2   r  r@   )r,   r]  rG  r   r.   r.   r/   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   rp   )r2   r  r\   r   r]   r   )r8  r  r.   r.   r/   !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   rD  r  g>rU   gqq?)r2   r  rH  r   r  r.   r.   r/   test_gengamma_munp  s   
r  c               	   C   s   t g d} t jdd6 t }|td |td tj	|  W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   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   rK  r   rK   r   r<  r2   r  r   )r0  r]  r.   r.   r/   test_ksone_fit_freeze  s    "r  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   rN  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/Mr4  r   y        +=y        |=r^  )r]   r   rq  r  r   r2   r  r}  realimagr   r   )rT   rN   ZderivZderiv_expectedr.   r.   r/   test_norm_logcdf  s   	r  c                  C   sT   t g d} t g d}tj| }t||dd tj|}t|| dd d S )N)r{   r  rk   rR   rm   r  )g~V1?r;  gba"?g܄4ťY?r<  g$%+Ir^  rt   r~   )r]   r   r2   r   rc   r   rB  )rT   rN   r  r^  r.   r.   r/   test_levy_cdf_ppf  s   r  c                  C   :   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  rt   )r]   r   r2   r   rb  r   rT   rN   r  r.   r.   r/   test_levy_sf     r  zp, expected_isf))r  gj1e2H)r4  g6C)r  gnE@)r  g!^x1?)rK  gZ?)g   ?g:}!Nu?c                 C   s   t j| }t||dd d S )Nr  r   )r2   r   rg  r   )r8  Zexpected_isfrT   r.   r.   r/   test_levy_isf	  s   r  c                  C   r  )N)gMb{Gzg{Gztg~jtX)g#]<gOul2;gޢا6g̅7=!r~   rt   )r]   r   r2   r   rb  r   r  r.   r.   r/   test_levy_l_sf  r  r  c                  C   s8   t g d} tj| }tj|}t|| dd d S )N)g [n<r   r  r  rt   )r]   r   r2   r   rg  rb  r   )r8  rT   rA  r.   r.   r/   test_levy_l_isf!  s   r  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 )Nr  i i  i  )g      c@g     h@g=
ףp=?Gz?)g      c@g     h@r  rV   r  r   )r   r2   r  r  rB  r.   r.   r.   r/   test_hypergeom_interval_1802)  s   r  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   rR   r\  rz   numrZ   r   r  r{  r   rk   rW   ro   r  ri  r  r  r  )r]   r   r   r   rG  r   r2   r  r\   r   rc   rB  r@   r   r  r  rL  r  r~  r   r.   r.   r/   test_distribution_too_many_args8  s8   r  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  r  rZ   gYZ@r  r   r+  )r2   ncx2rc   r]   r   Z_cdfvecr   r  r.   r.   r/   test_ncx2_tails_ticket_955`  s   r  c               	   C   s   t  ) t dt ttjdt	dddd tj
dt	ddd} W d    n1 s0w   Y  tt|   t  % t dt ttjddd	d ttj
ddd	d
 W d    d S 1 sjw   Y  d S )Nr5  r   iT  i^  rZ   r   rw  r   r  gsq6)r9  r:  r;  r<  r   r2   r  r\   r]   r   r   r   rY  r  r   )Zlogvalr.   r.   r/   test_ncx2_tails_pdfh  s   

"r  zmethod, expectedrc   gu%>g	;Q=r\   g<x>gRz\R>r   gʎK$/gԆX1rB  gfHu@ge:@c                 C   s,   t tj| dddgdd}t||dd d S )NrR   r   r   rU   )r  rk  rs   r   )r   r2   r  r   )r\  rN   r  r.   r.   r/   test_ncx2_zero_ncy  s   r  c                  C   s4   t jjdddd} t jjddd}t| |dd d S )NrU   r   r   )rk  r  r   )rk  r   rs   r   )r2   r  r   r  r   )r  rN   r.   r.   r/   test_ncx2_zero_nc_rvs  s   r  c                  C   s,   dt dd } ttjjdd| dd d S )NrU   rz   r  r   rk  r  r   )r]   r   r   r2   r  rc   )r  r.   r.   r/   test_ncx2_gh12731  s   r  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@r  )r  r  r  r  r  g?gy[qD?rp   rp   rp   rp   rp   rp   rl  r   )r]   r   r2   r  rb  r   )rT   nur  rb  Zsf_expectedr.   r.   r/   test_ncx2_gh8665  s
   
r  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  rK  rw  r  rZ   r   rp  r   )	r]   r   r2   r  rB  r\   r  r  r   )rk  r  rT   Zncx2_pdfZgauss_approxr.   r.   r/   test_ncx2_gh11777  s   &r  zx, c, expected))rZ   r   g|1q?)rZ   rZ   g~?)r  r   V<3T1=) 7yQCr   u	lY<)r  g   vHGBg^b!*1=)r  rD  gS?c                 C      t j| |}t||d d S Nr  )r2   Z
foldcauchyrb  r   rT   r]  rN   rb  r.   r.   r/   test_foldcauchy_sf  s   r  r  ))rZ   g?)r  r  )r  r  )g6ްPg8R#/c                 C   s   t j| }t||d d S r  )r2   
halfcauchyrb  r   )rT   rN   rb  r.   r.   r/   test_halfcauchy_sf  s   r  zp, expected))g?g*wӄZ>)333333?gN9?)rk   r  )rm   g8<,O@)r  g:B)gl ׶w/gMb}[Pc                 C   s   t j| }t|| d S rg   )r2   r  rg  r   )r8  rN   rT   r.   r.   r/   test_halfcauchy_isf  s   r  c                  C   s"   t jddd} t| dd d S )Nr   r   r  )r2   r6  r   rc   r/  r.   r.   r/   test_foldnorm_zero  s   r  ))rZ   r   gwo{?)r  r   gGd-P/)rU   r  gof?)r  r  gOul";c                 C   r  )Nr  )r2   r6  rb  r   r  r.   r.   r/   test_foldnorm_sf  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)rp   rk   r  r   rk   r  c                 s   s     | ]}t jt j|f V  qd S rg   r]   r  r   r  r.   r.   r/   r@    rD  z-test_stats_shapes_argcheck.<locals>.<genexpr>)rZ   r  r   rZ   r  c                 s   s     | ]}t j|t jf V  qd S rg   r  r  r.   r.   r/   r@  "  rD  )r2   r   tupler   r   )Zmv3Zmv2Zmv2_augmentedr.   r.   r/   test_stats_shapes_argcheck  s   
r  c                   @   rM  )
_distr_genc                 C   r   Nr  r.   re   rT   r,   r.   r.   r/   _pdf-  r  z_distr_gen._pdfNr   r   r   r  r.   r.   r.   r/   r  ,  r  r  c                   @   rM  )_distr2_genc                 C      d| | S r  r.   r  r.   r.   r/   _cdf2     z_distr2_gen._cdfN)r   r   r   r  r.   r.   r.   r/   r  1  r  r  c                   @   rG  )_distr3_genc                 C   s   || S rg   r.   re   rT   r,   r-   r.   r.   r/   r  7  s   z_distr3_gen._pdfc                 C   r  r  r.   r  r.   r.   r/   r  :  s   z_distr3_gen._cdfNr   r   r   r  r  r.   r.   r.   r/   r  6  ru  r  c                   @   rG  )_distr6_genc                 C   s   || | S rg   r.   r  r.   r.   r/   r  B  r  z_distr6_gen._pdfc                 C   r  r  r.   r  r.   r.   r/   r  E  r  z_distr6_gen._cdfNr  r.   r.   r.   r/   r  @  s    r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	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   r\   re   dummy_distrr.   r.   r/   test_correct_shapesL  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  rG  r   r\   r   r  r.   r.   r/   test_wrong_shapes_1P  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   rZ   r   r{  )r  r   rG  r   r\   )re   r  r   r.   r.   r/   test_wrong_shapes_2T  s   z1TestSubclassingExplicitShapes.test_wrong_shapes_2c                 C   "   t ddd}tttfi | d S )Nr  r  r  )r   rG  r   r  re   r   r.   r.   r/   test_shapes_stringY     z0TestSubclassingExplicitShapes.test_shapes_stringc                 C   r  )Nr  z(!)r  r   rG  SyntaxErrorr  r  r.   r.   r/   test_shapes_identifiers_1^  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c                 C   r  )Nr  Z4chanr  r  r  r.   r.   r/   test_shapes_identifiers_2c     z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c                 C   r  )Nr  zm(fti)r  r  r  r.   r.   r/   test_shapes_identifiers_3g  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c                 C   r  )Nr  za=2r  r  r  r.   r.   r/   "test_shapes_identifiers_nodefaultsk  r  z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc                 C   r  )Nr  z*argsr  r  r  r.   r.   r/   test_shapes_argso  r  z.TestSubclassingExplicitShapes.test_shapes_argsc                 C   r  )Nr  z**kwargsr  r  r  r.   r.   r/   test_shapes_kwargss  r  z0TestSubclassingExplicitShapes.test_shapes_kwargsc                 C   r  )Nr  za, b, c, lambdar  r  r  r.   r.   r/   test_shapes_keywordsw  r  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                   @   rM  )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc                 S      t j|| S rg   r2   r  r  r  r.   r.   r/   r    r  zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   	_dist_gen~  r  r  r,   r   rk   rZ   r  r2   r>   r   r\   r  re   r  r:   r.   r.   r/   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                   @   rM  )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc                 S   r  rg   r  r  r.   r.   r/   r    r  zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r  r  r  rk   r   rZ   r  )r2   r>   rG  r   r\   r   r  r.   r.   r/   "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                   @   rM  )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc                 W   s   |d }t j|| S Nr   r  )re   rT   r   extra_kwargr.   r.   r/   r    s   zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r  r  r  rk   !   r  )Zxxx)r2   r>   r   r\   r  rG  r   r   r  r.   r.   r/   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                   @   rM  )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc                 W   s   |d }t j|| | S r  r  )re   rT   r  r   r  r.   r.   r/   r    s   zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r  zoffset, extra_kwargr  rk   o   r  )r  r  r  r  r.   r.   r/   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                   @   rM  )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc                 _   s   | dd}tj|| S )Nr  r   )popr2   r  r  )re   rT   r   kwargsr  r.   r.   r/   r    s   zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfNr  r.   r.   r.   r/   r    r  r  r  r  r   r   r  r  )re   r  r:   r.   r.   r/   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                   @   rM  )zITestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_genc                 S   s   t j|S rg   )r2   r  r\   rh  r.   r.   r/   r    r  zNTestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r   r  rk   r  r  r.   r.   r/   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.   r/   r  I  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.   r/   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   r\   r  r.   r.   r/   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   re   r  r   r.   r.   r/   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  rZ   r  z!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r  r   r  r  r  r   r   r  r.   r.   r/   test_signature_inspection_2args  s   
z7TestSubclassingNoShapes.test_signature_inspection_2argsc                 C   s   t ttdd d S )Nr  r  )rG  r   r  rh   r.   r.   r/   0test_signature_inspection_2args_incorrect_shapes  r5   zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc                 C   .   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   r   r  r.   r  r.   r.   r/   r    r  zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r  r  r.   r.   r.   r/   r    s    r  r  r  r2   r>   rG  r   r   re   r  r.   r.   r/   test_defaults_raise     z+TestSubclassingNoShapes.test_defaults_raisec                 C   r  )Nc                   @   rM  )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc                 W   r   r  r.   )re   rT   r,   r   r.   r.   r/   r    r  zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r  r  r  r  r  r.   r.   r/   test_starargs_raise  r  z+TestSubclassingNoShapes.test_starargs_raisec                 C   r  )Nc                   @   rM  )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc                 [   r   r  r.   )re   rT   r,   r  r.   r.   r/   r    r  zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfNr  r.   r.   r.   r/   r    r  r  r  r  r  r  r.   r.   r/   test_kwargs_raise  r  z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r  r  r   r   r  DOCSTRINGS_STRIPPEDr  r  r   r  r  r  r.   r.   r.   r/   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  qqd S )N)z,\s*,z\(\s*,z^\s*:)
r2   rJ   r   r  r=   r>   r   r  searchr  )Zbadonesdistnamer:   regexr.   r.   r/   rx    s   

rx  c                   C   s4   t tjtjddd t tjtjddd d S )NrU   ro  r   r  rR   r   )r   r2   r  rb  r]   r   r  r  r.   r.   r.   r/   test_infinite_input  s   r  c                  C   &   t jt jddd} t| d d S r'  )r2   ZlomaxrB  rc   r   r  r.   r.   r/   test_lomax_accuracy  r+  r  c                  C   r  r'  )r2   r  rB  rc   r   r  r.   r.   r/   test_truncexpon_accuracy  r+  r  c                  C   s*   t jt jddd} t| ddd d S )Nr  r   r  r  r  )r2   r   rg  rb  r   r  r.   r.   r/   test_rayleigh_accuracy  s   r  c                  C   s   t jdd5} t d tjdd tjdd tjdd tjt	j
 d t| }t|d W d   dS 1 s>w   Y  dS )zregression test for gh-6219T)rV  alwaysrk   r   rp   N)r9  r:  r;  r2   r  rc   r\   rB  r   r]   r   r   r   )r?  Znumber_of_warnings_thrownr.   r.   r/    test_genextreme_give_no_warnings  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?rh  rZ   r   r  rt   r   r  rN  rU   r  r   r  r  ro  )r2   r  r@   r   r   r]   rW  )Zeuler_gammar3  r.   r.   r/   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?)r2   r  rb  r   rg  )rT   rF   r  r.   r.   r/   test_genextreme_sf_isfB  s   




r  c                  C   s"   d} t j| dd}t|d d S )NrE  rZ   r   gH&8>)r2   rD  rB  r   )Zprobr  r.   r.   r/   test_burr12_ppf_small_argn  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.
    rz  r  r3  Nr   r  ro   )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  rt   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>rk   )r  r  rX   rY   )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   r2   crystalballr\   r   r   rc   )rS  Z
calculatedrN   r.   r.   r/   test_crystalball_function|  s&   r0  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
    )ro   r  r  ro   r  )r  r  ro   r  r  )r  r  r  r  r  r   r  rt   )gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@rZ   g?Җ)r   gMg'#@r   g('UHrz   N)r]   r   r2   r/  rH  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.   r/   !test_crystalball_function_moments  s4   r1  c                  C   sR   t dd} |  }d\}}}t|||}tt| ||}t||dd d S )NrZ   r   )ir  rN  r  rt   )	r2   r/  r@   r]   r   r   r   r\   r   )cbr  r  r  r  rT   r  r.   r.   r/   test_crystalball_entropy  s   
r3  c                  C   s\   ddd} t g d}tjj|d| d\}}}t|ddd	 |dks%J 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 )Nrl  )r   dispZxtolZftol)r#   )r   x0r   r4  r.   r.   r/   	optimizer   s   z&test_invweibull_fit.<locals>.optimizer)r   r  rZ   r  r  r   r  r   rz   r  rU   r  @   c   )r   r6  g`?r  rt   g [@N)r.   r   )r]   r   r2   r   r   r   )r6  rT   r]  rX   rY   r.   r.   r/   test_invweibull_fit  s   
r9  ))r   r  g7Ըh?)r|   r  gz]r>)r|   g     "@goBڱ9)r  r  g$=cC;c                 C       t j| |}t||dd d S rr   )r2   r   rb  r   )rT   r]  rN   r  r.   r.   r/   test_invweibull_sf   s   r;  zp, c, expected)rk   r  g9?)geK<rz   g@c                 C   r:  rr   )r2   r   rg  r   )r8  r]  rN   r  r.   r.   r/   test_invweibull_isf)   s   r<  z	df1,df2,x)r   r  r  r  r   ro  ri  r
  r5  c                 C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   r  rt   r  )r2   r  rc   r~  r   r\   )Zdf1Zdf2rT   r  Zexpected_cdfZcalculated_cdfrw   Zcalculated_pdfr.   r.   r/   test_ncf_edge_case1   s   
r=  c                  C   s"   t jddd} t| ddd d S )NrZ   r  r   g     `E@r  rt   )r2   r~  r  r   )r  r.   r.   r/   test_ncf_varianceG      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)r2   r~  rc   r   r]   round)Z	scipy_valZ	check_valr.   r.   r/   test_ncf_cdf_spotcheckR   s   rA  r  z(On some 32-bit the warning is not raisedc                     sx   t ddd} d| d< d tt tjj| g R  } fdd| D }W d    n1 s0w   Y  t|| d S )Nr   r   r  rE  )rR   rZ   rz   r   r   c                    s    g | ]}t jj|g R  qS r.   )r2   r~  rB  )r9   xiparr.   r/   r;   e   s     z,test_ncf_ppf_issue_17026.<locals>.<listcomp>)	r]   r   r   r  r<  r2   r~  rB  r   )rT   rA  q0r.   rC  r/   test_ncf_ppf_issue_17026\   s   rF  c                   @   r  )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   rZ   rZ   r   r   r   r   r   r   r   rz   rz   rz   rz   rz   r  r  r  r  ri  ri  ri  r  r  r  r  binsr  r  rw  {   r(  r  )
r]   r   r   	histogramr2   r?   templater  r   norm_template)re   rK  r   Znorm_histogramr.   r.   r/   r   j   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rp   rk   r  r  ro   r  r  r,  r  r/  r        @r  r  r  r  r        !@r  r  )rp   rp   r  r  {Gz?rQ  Q?rR  {Gz?rS  r  r  rS  rS  rR  rR  rR  rR  rp   rp   r  rR  rP  r  rp   r.  r   rZ   rU   r  r  rW   rR   rt   )r]   r   r   r   rL  r\   r   r   rM  r2   r  )re   r&  Z
pdf_valuesrT   r.   r.   r/   r  z   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 )NrN  )rp   rp   rp   r  r  rQ  rR  
ףp=
?Q?{Gz?r  rk   r[  (\?RQ?=
ףp=?)\(?r  r  r  rZ   r   r  r  rV   rp   r   rU   r  rW   rR   rt   )r]   r   r   r   rL  rc   rB  r   rM  r2   r  )re   r&  Z
cdf_valuesrT   r.   r.   r/   r_     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 )'Nrw  rJ  r  r  rp   ro   r  r  rt   r  rQ  r  rR  rR   r,  rT  r  rU  r/  rV  r  r  r   rO  rk   r  r[  r  rW  r  rX  r  rY  r  rZ  rP  r  r  )rL  r   r   r]   r0  r   )re   r  r$  r.   r.   r/   r     s(   zTestHistogram.test_rvsc                 C   s6   t dD ]}t| j|tdd|dd qd S )Nr   r  r  r   rt   )r  r   rM  rH  r2   r  r  rC  r.   r.   r/   r     s
   zTestHistogram.test_munpc                 C   s$   t | j tjjddddd d S )Nr  r  rW   r   rt   )r   rM  r@   r2   r  rh   r.   r.   r/   r4     s   

zTestHistogram.test_entropyN)	r   r   r   r   r  r_  r  r  r4  r.   r.   r.   r/   rG  i   s    rG  c                  C   s   ddgg d} }t j| |fdd}tj|ddgddg | dks(J t j| |fdd}tj|ddgd	 | d
ksEJ d}tt|d t | |f}| d
ks]J W d    n1 sgw   Y  t | g df}| dks}J d S )Nr   )r   r   rv  F)rn  rk   rD  rR  Tg'^P?g     H@z(Bin widths are not constant. Assuming...r   r  )	r2   r?   r]   r!  r   r\   r  r	   r<  )countsrI  r:   rm  r.   r.   r/   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rK|   krKd	ksNJ  J t t |d
 dks\J d S )N   0o[ r  r   rw  r  rU   rH  r  iL  r{   )r]   r   r   r2   
loguniformr   Z
reciprocalr   rK  log10rq  r  r   r  )re   r   rU  r   Zrv2r   r  r   r.   r.   r/   
test_alias   s   
. zTestLogUniform.test_aliasr\  ZmlerZ  c                 C   sn   t jd}tjjddd|d}tjj||d\}}}}|dks"J tjj|d|d\}}}}|dks5J d S )	Nr^  rR   r   r{   r  r^  rZ   r[  )r]   r   r   r2   r_  r   r   )re   r\  r   r   r,   r-   rX   rY   r.   r.   r/   test_fit_override   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   r{   r  r.  i8rD  r   rU   )r]   r   r   r2   r_  rW  r   rc   rB  r   r   r\   rW  r=  )
re   r   r,   r-   r:   rc   r   rT   r\   r=  r.   r.   r/   test_overflow !  s   
zTestLogUniform.test_overflowN)	r   r   r   ra  r   r   r   rb  rc  r.   r.   r.   r/   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  )r2   argusr   r   r=  rh  r.   r.   r/   test_argus_rvs_large_chi!  s    z"TestArgus.test_argus_rvs_large_chizchi, random_staterR   re  r     r,     c                 C   s6   t jj|d|d}t |d|f\}}t|dk d S )Nr  r  rf  r   r2   rf  r   r  r   )re   ra  r   rT   r   r8  r.   r.   r/   r  !  s   zTestArgus.test_rvsra  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   rZ   r  r.   r   r.   r.   r/   rG   -!  r<   z.TestArgus.test_rvs_small_chi.<locals>.<lambda>r   rj  )re   ra  rI  r   r8  r.   r.   r/   test_rvs_small_chi'!  s   zTestArgus.test_rvs_small_chizchi, expected_mean))r   g щi?)rU   g.憃?)r  g\paP?)r  g	?)r8  g,6?c                 C   s"   t jj|dd}t||dd d S )Nr   r  r~   rt   )r2   rf  r=  r   )re   ra  Zexpected_meanr  r.   r.   r/   rn  1!  r?  zTestArgus.test_meanzchi, expected_var, rtol))r   gLH'B?r~   )rU   go$?r  )r  g
=>r4  )r  g2W>r4  )r8  gb~P>r4  c                 C   s"   t jj|dd}t|||d d S )Nr   r  rt   )r2   rf  r  r   )re   ra  Zexpected_varru   r  r.   r.   r/   rm  <!  r?  zTestArgus.test_varzchi, expected, rtol))r  gwM?r  )rk   gj?r  )rR   gHEA`!?r  )rm   gcف>rs   )r  gF=r  )rp  g߹Q#B=r  )r  g0ޟ<r  )r  g*W%:rs   c                 C   s   t t|||d d S r  )r   r!   )re   ra  rN   ru   r.   r.   r/   test_argus_phi_small_chiG!  s   
z"TestArgus.test_argus_phi_small_chizchi, expected))rk   )g-\/?g+p7c?g5Ϧ\?)r  )g
f?gi{?ٸ?gZ@7?)rR   )gB	?g]?gR{?)rm   )glͅw?g,?g[Z=?)r  )gz,?g]?gѪ1?)rp  )g8<?gE-?gI?)r  )g~7?g7B.?g9?)r  )g;?g9B.?g}5?c                 C   *   t g d}ttj|||dd d S )NrR   rk   r  r~   rt   )r]   r   r   r2   rf  r\   re   ra  rN   rT   r.   r.   r/   test_pdf_small_chiT!     zTestArgus.test_pdf_small_chi))rk   )gQ߹?e?grJ,?g򺗄?)r  )gΎd?g?gh?)rR   )g|
o?gvb?g+@?)rm   )g̈́On?ge?gC|[3?)r  )g!?m?g{jiH?gu53?)rp  )g~m?g0-.?g3?)r  )g~m?g7;B.?gŗ3?)r  )g~m?g9B.?gŗ3?c                 C   rm  )Nrn  r  rt   )r]   r   r   r2   rf  rb  ro  r.   r.   r/   test_sf_small_chic!  rq  zTestArgus.test_sf_small_chi))rk   )g+&?gk?gμm/?)r  )g?CL\f?g^N?g]AͭR?)rR   )ga>$?g;Lf?gaW?)rm   )gx?g 43n?gwY?)r  )go7🤎?g
+-oGn?gIQ9Y?)rp  )gT?gGn?g@̋Y?)r  )gU?g{Gn?giG͋Y?)r  )gDU?g {Gn?gH͋Y?c                 C   rm  )Nrn  rl  rt   )r]   r   r   r2   rf  rc   ro  r.   r.   r/   test_cdf_small_chir!  rq  zTestArgus.test_cdf_small_chi))rk   )gQ)?g6{?rl  )gB`"۹?)g?g8%?r  )rR   )g388?gV%?r~   )rm   )g*j?gRS%?r~   )r  )g!|?gZ%?r~   )rp  )gy[|?gG%?r~   )r  )g"3|?gW%?r~   )r  )g!3|?gW%?r~   c                 C   s"   t jj |dd}t|||d d S )Nr  r  rt   )r2   rf  r   )re   ra  rN   ru   r  r.   r.   r/   test_stats_small_chi!  r   zTestArgus.test_stats_small_chiN)r   r   r   rg  r   r   r   r  rk  rn  rm  rl  rp  rr  rs  rt  r.   r.   r.   r/   rd  !  sT    

	


	






rd  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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+)r2   nakagamir   r   )re   r  rT   r  r.   r.   r/   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+:r~   rt   )r2   rv  rb  r   rg  )re   r  r5  rb  r   r.   r.   r/   r$  !  s   zTestNakagami.test_sf_isfzm, ref))rz   g|Bd븿)rk   rq  )rU   g/ۿc                 C   r/  )Ng^~z=rt   r   r2   rv  r@   re   r  rG  r.   r.   r/   r4  !  r  zTestNakagami.test_entropy))r(  g}Ô%I)r^  gq_)g    ScAgB4U)g    cAgu1U)rs  gb>%)rt  gWҙ\c                 C   s   t tj|| d S rg   rw  rx  r.   r.   r/   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 )Nrt  r(  )r]   r  r2   rv  Z_entropyrh   r.   r.   r/   test_entropy_overflow!  s   z"TestNakagami.test_entropy_overflowz+Fit of nakagami not reliable, see gh-10908.r  r  )r  r  r  rX   )rn   rU   #   rY   )r  rz   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 )NrV   9  r   r  rX   rY   r   r  rt   c                    s<   d|  d t d |   d|  |d  t  |   S )Nr   r   rZ   r]   r0  r  rX   rY   )r(  r.   r/   	dlogl_dnu!  s   z(TestNakagami.test_fit.<locals>.dlogl_dnuc                    sN    dt |  td|   dt t | |   t | | d  S )Nr   r   rZ   )r]   rW  r   r0  r  r  r(  r.   r/   
dlogl_dloc!  s
   z)TestNakagami.test_fit.<locals>.dlogl_dlocc                    s2   d  |  | d|  |d  t | d   S )Nr   rZ   r   r~  r  r  r.   r/   dlogl_dscale!  s    z+TestNakagami.test_fit.<locals>.dlogl_dscaler   r  r   )r2   rv  r   r   r   )
re   r  rX   rY   nu_estloc_est	scale_estr  r  r  r.   r  r/   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 )	Nrk   rV   r|  r}  r  rZ   r  rt   )	r2   rv  r   r   r]   rq  r  r=  r   )re   rX   rY   r  r7  r(  r  r  r  Zloc_theoZ
scale_theor.   r.   r/   test_fit_nu!  s   
zTestNakagami.test_fit_nuN)r   r   r   r  r$  r   r   r   r4  ry  rz  r  r  r  r.   r.   r.   r/   ru  !  s(    

ru  c                   @   rS  )TestWrapCauchyc                 C   sr   t ddgddgg}t dgdgg}tj||}|jdks"J dd	 t ||fD }t| |d
d d S )NQ?r   rk   r'  r  r  r8  c                 S   s   g | ]\}}t j||qS r.   )r2   
wrapcauchyrc   )r9   r   r7  r.   r.   r/   r;   "  s    z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>r~   rt   )	r]   r   r2   r  rc   r  Znditerr   r3  )re   r]  rT   r8  Zscalar_valuesr.   r.   r/   test_cdf_shape_broadcasting	"  s   z*TestWrapCauchy.test_cdf_shape_broadcastingc                 C   s"   t jtjd}t|ddd d S )Nr  rk   r  rt   )r2   r  rc   r]   r^   r   rP  r.   r.   r/   test_cdf_center"  rj  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   rZ   )r2   r  rc   r   r]   Zarctantanr^   )re   r   r  r]  r8  crr.   r.   r/   r#  "  s   (6zTestWrapCauchy.test_cdfN)r   r   r   r  r  r#  r.   r.   r.   r/   r  "  s    r  c                  C   sV   G dd dt j} | dd}ttdd |  W d    d S 1 s$w   Y  d S )Nc                   @   rM  )z/test_rvs_no_size_error.<locals>.rvs_no_size_genc                 S   r   r   r.   rh   r.   r.   r/   _rvs&"  r  z4test_rvs_no_size_error.<locals>.rvs_no_size_gen._rvsN)r   r   r   r  r.   r.   r.   r/   rvs_no_size_gen%"  r  r  rvs_no_sizer  z_rvs\(\) got (an|\d) unexpectedr   )r2   r>   rG  r   r   )r  r  r.   r.   r/   test_rvs_no_size_error#"  s
   

"r  zdistname, argsc                 C   s   | t v rtd|  d tt| }t|tjrQt|dkr1|j| \}}t	|t
j t	|t
j d\}}|jg |||R  \}}t	|t
j t	|t
j d S |j| \}	}
t	|	t
j t	|
t
j d S )Nz6skipping test for the support method for distribution .r   r\  )$skip_test_support_gh13294_regressionr   r   r   r2   r  r>   r   supportr   r]   r   )r
  r   r:   a0b0r#  r$  a1b1r,   r-   r.   r.   r/   test_support_gh13294_regression/"  s"   

r  c                  C   sX  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s<J |j|jksDJ t jg g \}}tg tg }}t|| t|| |j|jksjJ |j|jksrJ t jg ddg\}}	tdtjg }
tdtjg }t||
 t|	| |j|
jksJ |	j|jksJ d S )N)r   r   r   r   )r   r   r   r   r   r   )	r2   r  r  r]   r   r   r   r   r  )r  r  Zex_a0Zex_b0r  r  Zex_a1Zex_b1r`  r  Zex_a2Zex_b2r.   r.   r/   ,test_support_broadcasting_gh13294_regressionJ"  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s5J d S )	Nrp   r  ro   r  r  r  r7   r  )r   r2   r  r  r]   r2  r  rW   r.   r.   r/   *test_stats_broadcasting_gh14953_regressionc"  s   &

r  )gn!	g:I"<)gQ	@gE?c                 C   s*   t tj| | t tj|  | d S rg   )r   r2   cosinerc   rb  )rT   rN   r.   r.   r/   test_cosine_cdf_sfq"  s   r  ))r  gkM6O)r  g0ӭ!	)r  g;'u(@c                 C   s*   t tj| | t tj| |  d S rg   )r   r2   r  rB  rg  )r8  rN   r.   r.   r/   test_cosine_ppf_isfy"  s   r  c                  C   s$   t jtj tjg} t| d d S )NgrB)r2   r  r   r]   r^   r
   )r  r.   r.   r/   test_cosine_logpdf_endpoints"  s   r  c                  C   sT   dd t D } dd tD }| |ksJ dd tD }dd tD }||ks(J d S )Nc                 S   s   h | ]\}}t |tr|qS r.   )r  rC   r9   r%  r   r.   r.   r/   	<setcomp>"  s    
z*test_distr_params_lists.<locals>.<setcomp>c                 S      h | ]\}}|qS r.   r.   r  r.   r.   r/   r  "  r<   c                 S   r  r.   r.   r  r.   r.   r/   r  "  r<   c                 S   r  r.   r.   r  r.   r.   r/   r  "  r<   )r   r   r   r   )Zdiscrete_distnamesZinvdiscrete_distnamesZcont_distnamesZinvcont_distnamesr.   r.   r/   test_distr_params_lists"  s   r  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   rQ   r  r   )rX  r,   r  )r2   rQ  Z_statsr  rH  r.   r.   r.   r/   test_moment_order_4"  s   r  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   r  )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.   r/   ROOT_pdf_sample_data"  s   z'TestRelativisticBW.ROOT_pdf_sample_datazrho,gamma,rtol))qVEB@gj+@r  )FC@Gz @r  )ND@_LU?r  c                 C   sN   ||d |k|d |k@  }|d |d }}t |tjj|||d|d d S )Nrhor  rT   r\   r  rt   )r   r2   rel_breitwignerr\   )re   r  r  r  ru   r   rT   r\   r.   r.   r/   test_pdf_against_ROOT"  s   


z(TestRelativisticBW.test_pdf_against_ROOTzrho, Gamma, rtol))r  r  r  )r  r  r  )r  r  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 rB  )r]   r  r^   )Er  Gammar  rQ   r.   r.   r/   r\   "  s
   (zFTestRelativisticBW.test_pdf_against_simple_implementation.<locals>.pdfr   r  rU   r  rt   )r]   r   r2   r  rB  r\   r   )	re   r  r  ru   r\   r8  rT   r   rG  r.   r.   r/   &test_pdf_against_simple_implementation"  s   z9TestRelativisticBW.test_pdf_against_simple_implementationz	rho,gammar  r  r  r  r  r  r  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s1J tjj|d|d
}t|d |dd |d	 |d fd|fksQJ dS )zpTests fit for cases where floc is set.

        `rel_breitwigner` has special handling for these cases.
        l   s;
rl# r{   )rY   r   r   r   r   rZ   r  rt   r   rF  rm   N)r]   r   r   r2   r  r   r   r   )re   r  r  r   r   r   r   r.   r.   r/   test_fit_floc"  s    z TestRelativisticBW.test_fit_flocN)r   r   r   r   r(  r  r   r   r  r  r   r  r   r  r.   r.   r.   r/   r  "  s.    






r  c                   @   r  )TestJohnsonSUr  )r  r  r  rp  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  rt   )r2   r  r   )re   r  r   r.   r.   r/   test_moment_gh18071#  s   z!TestJohnsonSU.test_moment_gh18071N)r   r   r   r   r   r   r  r.   r.   r.   r/   r  #  s    r  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@r  r  )r]   r   r2   truncparetor\   r0  rc   r   )re   r-   r]  rT   r   rG  r.   r.   r/   r  #  s
    zTestTruncPareto.test_pdfr   TFr&  r5  fix_cc                 C   s   t jd}d\}}}}	tj||||	d}
|
jd|d}i }|r$||d< |r*|	|d< |r0||d< |r6||d	< |rd|rd|rd|rdd
}tjt|d tjj	|fi | W d    d S 1 s]w   Y  d S t
tj|fi | d S )Nl   Z#Lm )r  r  r   r  rW   r  r  r   r   r   r   r   r   )r]   r   r   r2   r  r   r   r   r   r   r   )re   r   r&  r5  r  r   r-   r]  rX   rY   r:   r   r   rm  r.   r.   r/   r  #  s&   "zTestTruncPareto.test_fitN)r   r   r   r  r   r   r   r  r.   r.   r.   r/   r  #  s    r  rg   )r  r9  r  r  r  pathlibr   rr  rw  rO  Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r   rG  r
  r]   r   r   Znumpy.lib.recfunctionsr   r1   r   Zscipy._lib._utilr   r  r   r   r   r   Zscipy.statsr2   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#   	itertoolsr$   flagsoptimizer  rR  r  r  r0   r4   rO   rP   r   r   r   r   r   r   r%  rN  rT  rY  r`  rx  r  r  r  r  r  r  r  r&  r2  r:  rB  rJ  rP  rY  r  r  r  r  r  r  r  r  r+  rL  ro  r{  r  r  r  r  r  r  r  r  r  r  r  r  r#  rH  r  r^   ri  rO  rj  rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rr  rv  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r:  r=  r?  rC  rL  rM  rx  ry  r}  r  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r>   r  r  r  r  r  r  rx  r  r  r  r  r  r  r  r  r0  r1  r3  r9  r;  r<  r=  r>  rA  r  rF  rG  r\  r]  rd  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   <module>   s   0 H
J	
)H KFD**"#  @ JX(% wM?* $ lS<37+g !5		$hv12,  IR*     M
 p i ;A%E>h  ^K E
	
&
	
(





	x;	,G.
"

a6yw

Y