U
    Hvfv                    @   sP  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 ZFdd ZGdd  ZHd!d" ZId#d$ ZJd%d& ZKejLMd'd(d)d*d+d,d-gd.d/ ZNejLMd0d1d2d3d4d5gd6d7 ZOd8d9 ZPejLMd:d;d<d=d>d?d@gdAdB ZQdCdD ZRdEdF ZSdGdH ZTejLMdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWgdXdY ZUG dZd[ d[ZVG d\d] d]ZWG d^d_ d_ZXG d`da daZYG dbdc dcZZG ddde deZ[G dfdg dgZ\G dhdi diZ]G djdk dkZ^G dldm dmZ_G dndo doZ`G dpdq dqZaG drds dsZbG dtdu duZcG dvdw dwZdG dxdy dyZeG dzd{ d{ZfG d|d} d}ZgG d~d dZhG dd dZiG dd dZjG dd dZkG dd dZlG dd dZmG dd dZnG dd dZoG dd dZpG dd dZqG dd dZrG dd dZsG dd dZtG dd dZuG dd devZwG dd dZxG dd dZydd Zzdd Z{dd Z|ejLMdddddddgejLMdddgddgddgdddgdddggddgddggdgdgggdd Z}ejLMdddgddgddgdddgdddggddgddggdgdgggdd Z~G dd dZG dd dZddeddej   ddeddej   ddeddej   ddeddej   ddeddej   g	fdeddej  ddeddej   ddeddej   d ddeddej   d ddeddej   d g	fddedej  dddedej   dddedej   dddedej   dddedej   dddedej   dddedej   dgfgZG ddل dكZG ddۄ dۃZG dd݄ d݃ZG dd߄ d߃ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZdd ZG dd dZG d d dZG dd dZG dd dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZG dd dZG dd devZG dd dZG dd dZG dd dZG dd dZG dd dZG d d! d!Zd"d# Zd$d% Zd&d' Zd(d) ZejLje@d*d+d,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZejLMdNdOdPdQdRdSdTgdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ ZejLĐd_d`da ZŐdbdc ZejLMdddededfgfdedgdhgfdedidjgfdedkdlgfgdmdn Zǐdodp ZejLĐd_dqdr ZejLĐd_dsdt Zʐdudv Zːdwdx Z̐dydz ZG d{d| d|e(j΃ZG d}d~ d~e(j΃ZG dd de(j΃ZG dd de(j΃ZG dd dZG dd dZejLje@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 Zߐdd Zdd Zdd ZejLMdddddgdd ZejLMdddgdd ZejLMdddddddgfddddddgfdddddddgfgdd Zdd Zdd ZejLje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jLMde5e2 dҐdӄ ZdԐdՄ Zd֐dׄ ZejLMdؐdِdgdېd܄ ZejLMdݐdސdߐdgdd Zdd Zdd Z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 krd| |f }t t| ||d d S )Nz%s does not have attribute %smsg)r   hasattr)abr*    r.   H/tmp/pip-unpacked-wheel-96ln3f52/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:   s    r4   c                 C   s8   t j| ||d}t||||dtj |   d S )Nlocscale   )r2   vonmisesr   pdfnumpypikLsxvmr.   r.   r/   check_vonmises_pdf_periodic?   s    rC   c                 C   s@   t j| ||d}t||d ||dtj |  d  d S )Nr5   r   r8   )r2   r9   r   cdfr;   r<   r=   r.   r.   r/   check_vonmises_cdf_periodicD   s    rE   c                  C   sp   t tjjj} dd tD }dd tD }dddddg}|| | }t td	d
 |}| d | |kslt	d S )Nc                 S   s   g | ]}|d  qS r   r.   .0distr.   r.   r/   
<listcomp>K   s     z0test_distributions_submodule.<locals>.<listcomp>c                 S   s   g | ]}|d  qS rF   r.   rG   r.   r.   r/   rJ   L   s     rv_discreterv_continuousrv_histogramentropytrapzc                 S   s   t | d S )N<)str
startswithr@   r.   r.   r/   <lambda>S       z.test_distributions_submodule.<locals>.<lambda>Zgilbrat)
setr1   r2   r3   __all__r   r   filterremoveAssertionError)actualZ
continuousZdiscreteotherexpectedr.   r.   r/   test_distributions_submoduleI   s     
r^   c                  C   sx   dD ]n} ddt jddfD ]X}t| dd| t| dd| t| dd| t| dd| t| dd| t| dd| qqd S )N)皙?r   e   r   r   
   d   )r;   r<   rC   rE   )r>   rA   r.   r.   r/   test_vonmises_pdf_periodic[   s    rc   c                   C   s&   t tjjtj  t tjjtj d S N)r   r2   Zvonmises_liner,   npr<   r-   r.   r.   r.   r/   test_vonmises_line_supportg   s    rf   c                  C   s   t d} t| dd d S )N   r         ?)r2   r9   r   rD   )rB   r.   r.   r/   test_vonmises_numericall   s    
ri   zx, kappa, expected_pdf)r_   {Gz?g|65?)r_         9@g?U?)r_   rg   g"?)       @rj   gDfI?)rl   rk   g1<)rl   rg           c                 C   s    t j| |}t||dd d S NV瞯<rtol)r2   r9   r:   r   )rA   kappaexpected_pdfr:   r.   r.   r/   test_vonmises_pdf{   s    rt   zkappa, expected_entropy)r   gA	?)   g,eޞ?)rb   gBb9d22)  g
G )  gc                 C   s   t j| }t||dd d S )NvIh%<=rp   )r2   r9   rN   r   )rr   Zexpected_entropyrN   r.   r.   r/   test_vonmises_entropy   s    ry   c                  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   r5   )random_stater8   ro   atol)
abshashre   randomdefault_rngr2   r9   rvsr<   r   )seedZrng1Zrng2Zrng3Zrvs1rvs2Zrvs3r.   r.   r/   test_vonmises_rvs_gh4598   s    r   zx, kappa, expected_logpdf)r_   rj   gEJ?)r_   rk   goι?)r_   rg   g0,)rl   rj   gdty)rl   rk   gʹw[A)rl   rg   gc                 C   s    t j| |}t||dd d S rn   )r2   r9   logpdfr   )rA   rr   Zexpected_logpdfr   r.   r.   r/   test_vonmises_logpdf   s    r   c                  C   s  t jd} | dd \}}}tj||ddd }t|d t |jt j	sVt
||dt j  f}tj||djd	d f| }t|d t |jt j	st
||dt j  f}tj||djd
d f|ddi}tt ||dt j   t |jt js
t
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.
    l   kD +xNn    ra   )r6   rr   c                 S   s   dS Nr   r.   rA   r.   r.   r/   rT      rU   z&test_vonmises_expect.<locals>.<lambda>r   r8   c                 S   s   dS r   r.   r   r.   r.   r/   rT      rU   c                 S   s   t d|  S )Ny              ?)re   expr   r.   r.   r/   rT      rU   Zcomplex_funcN)re   r   r   r2   r9   expectr   
issubdtypedtypeZfloatingrZ   r<   ZangleZcomplexfloating)rngr6   rr   lbresZboundsr.   r.   r/   test_vonmises_expect   s"    

r   c                 K   sZ   | j |f|}tt| | j |f|}|||}|||}||ksVtj||ddsVtdS )aS  
    This utility function checks that the log-likelihood (computed by
    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.
    ro   rp   N)fitsupertypere   allcloserZ   )rI   datafunckwdsZmle_analyticalZnumerical_optZll_mle_analyticalZll_numerical_optr.   r.   r/   _assert_less_or_close_loglike   s    

r   c              	   C   s2  ddg}| j r4t| j d}|dddgd | 7 }tt|tt|}ddd	g}tjt	d
d | j
|f| W 5 Q R X tjtdd | 
tjg W 5 Q R X tjtdd | 
tjg W 5 Q R X tjtdd | j
|dd W 5 Q R X tjtdd$ | j
|fdgt|d    W 5 Q R X d S )Nflocfscale,f0f1f2r   r8   r   z3All parameters fixed. There is nothing to optimize.matchz#The data contains non-finite valueszUnknown keyword arguments:)Zextra_keywordzToo many positional arguments.)shapeslensplitdictzipre   arangepytestr   RuntimeErrorr   
ValueErrornaninf	TypeError)rI   paramZnshapesZ	all_fixedr   r.   r.   r/   assert_fit_warnings   s,    
r   rI   alpha	betaprimefatiguelifeinvgammainvgauss
invweibullZ	johnsonsblevylevy_llognormZgibratZpowerlognormrayleighZwaldc                 C   s   t t}||  }tt| } t| j| jf| d t| j| jf| t	j
  t| j| jf| d t| j| jf| t	j
  dS )zgh-6235r   N)r   r   getattrr2   r   r:   r,   r   r   re   r   r-   )rI   dctargsr.   r.   r/   test_support   s    
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRandIntc                 C   s   t jd d S N  re   r   r   selfr.   r.   r/   setup_method  s    zTestRandInt.setup_methodc                 C   s   t jjdddd}tt|dk t|dk@  tt|dk t jjdddd}tt|dk t|jj	t
d k 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 k d S )Nru      rb   sizer8   2   
AllInteger   .   r)   r   )r2   randintr   r   r;   allr   shaper   charr   
isinstanceZ
ScalarTypereprr   r   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   $   ru   r   {Gz?)r;   r_wherer2   r   pmfr   )r   r>   outr   r.   r.   r/   test_pdf  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   rb   r   ru         ?      @r   rk      decimal)	re   linspacer;   floorselectr2   r   rD   r   )r   rA   r>   r   r   r.   r.   r/   test_cdf$  s
    
*zTestRandInt.test_cdfN)__name__
__module____qualname__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 )	TestBinomc                 C   s   t jd d S r   r   r   r.   r.   r/   r   -  s    zTestBinom.setup_methodc                 C   s   t jjdddd}tt|dkt|dk@  tt|dk t|jjt	d k t jdd}tt
|t t ddd}tt
|tj t|jjt	d k d S Nra         ?r   r   r   r   r   )r2   binomr   r   r;   r   r   r   r   r   r   intndarrayr   r.   r.   r/   r   0  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 )Nrb   r   r   r   ro   rq   r|   )r2   r   r   r   )r   vals1vals2r.   r.   r/   test_pmf;  s    zTestBinom.test_pmfc                 C   s~   t dd}tdddg}tt|| }| }t|| t dd}| }t|d t dd}| }t|d d S )Nr8   rh         ?rm   r   )	r2   r   re   r   sumr   rN   r   r   )r   r-   
expected_p
expected_hhr.   r.   r/   test_entropyB  s    

zTestBinom.test_entropyc              	   C   sT   t  B t dt ttjddd d ttjddd d W 5 Q R X d S )Nerrorr8   r   np)	warningscatch_warningssimplefilterRuntimeWarningr   r2   r   meanstdr   r.   r.   r/   test_warns_p0R  s    
zTestBinom.test_warns_p0N)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S )TestArcsinec                 C   s&   t jddg}t|tjtjg d S Nr   r   )r2   Zarcsiner:   r   re   r   r   r   r.   r.   r/   test_endpoints\  s    zTestArcsine.test_endpointsN)r   r   r   r  r.   r.   r.   r/   r  Z  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBernoullic                 C   s   t jd d S r   r   r   r.   r.   r/   r   d  s    zTestBernoulli.setup_methodc                 C   s   t jjddd}tt|dkt|dk@  tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k 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   g  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   rm   r   )r2   r
  re   logrN   r   r   )r   r-   r   r   r.   r.   r/   r   r  s    




zTestBernoulli.test_entropyN)r   r   r   r   r   r   r.   r.   r.   r/   r	  c  s   r	  c                   @   s   e Zd Zdd ZdS )TestBradfordc                 C   s:   d}t dd}tj||}tj||}t|| d S )Nr_   )re   logspacer2   ZbradfordrD   ppfr   )r   crA   qxxr.   r.   r/   test_cdf_ppf  s
    zTestBradford.test_cdf_ppfN)r   r   r   r  r.   r.   r.   r/   r    s   r  c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
TestChignT9;g2 >h?@c                 C   s"   t jdd}t|| jdd d S )Nra      ro   rp   )r2   chisfr   CHI_SF_10_4r   r@   r.   r.   r/   test_sf  s    zTestChi.test_sfc                 C   s"   t j| jd}t|ddd d S )Nr  ra   ro   rp   )r2   r  isfr  r   r   rA   r.   r.   r/   test_isf  s    zTestChi.test_isfc                 C   s"   t jjdd}t|| jdd d S )Nrv   )df-q=rp   )r2   r  r  r   CHI_MEAN_1000r  r.   r.   r/   	test_mean  s    zTestChi.test_meanN)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dd Zd	S )

TestNBinomc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestNBinom.setup_methodc                 C   s   t jjdddd}tt|dk tt|dk t|jjt	d k t jdd}tt
|t t ddd}tt
|tj t|jjt	d k 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   re   r   r2   r%  logpmfr   r1   r   )r   r   r.   r.   r/   r     s
    zTestNBinom.test_pmfc                 C   sH   t jjddddgddd}tt jjddddgddd}t|| d S )Nr   ru   333333@?r   )r2   r%  logcdfre   r  rD   r   )r   r   refr.   r.   r/   test_logcdf_gh16159  s     zTestNBinom.test_logcdf_gh16159N)r   r   r   r   r   r   r+  r.   r.   r.   r/   r$    s   r$  c                   @   st   e Zd Zdd Zejjdd Zejjdd Zejjdd Z	ejjd	d
 Z
dd Zdd Zdd Zdd ZdS )TestGenInvGaussc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestGenInvGauss.setup_methodc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )Nffffff@      ?  r   r   rz   皙?Tr2   geninvgausskstestr   rD   r   r   gig_r   r.   r.   r/   test_rvs_with_mode_shift  s    z(TestGenInvGauss.test_rvs_with_mode_shiftc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )N?r   r/  r   r0  r1  Tr2  r5  r.   r.   r/   test_rvs_without_mode_shift  s    z+TestGenInvGauss.test_rvs_without_mode_shiftc                 C   s:   t dd}t |jddd|j\}}t|dkd d S )Nr_   皙?r/  r   r0  r1  Tr2  r5  r.   r.   r/   test_rvs_new_method  s    z#TestGenInvGauss.test_rvs_new_methodc                 C   s<   dd }t |ddd t |ddd t |ddd d S )Nc                 S   s0   t | |}|jddd}t ||jd dkS )Nr/  r   r0  r   r1  )r2   r3  r   r4  rD   )r   r-   r6  r   r.   r.   r/   my_ks_check  s    z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   r;  Tr9  r.  )r   )r   r=  r.   r.   r/   test_rvs_p_zero  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      r8   ra   r   r0  r   r.  )r   r2   r3  r   r   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   r-   rz   r   r   333333?Trb   rj   ra   )r   r-   r7   )r2   r3  r   r   r4  re   r   r:   r   r   rD   )r   ZigmurA   Zpdf_igZcdf_igr.   r.   r/   test_invgauss  s     zTestGenInvGauss.test_invgaussc                 C   sF   t ddddddddd	d
g
}t ddd}t|tj|dd d S )Ng;g8y8?g\}Z?ghܲ<?g&Khdd?g7!L?g	Cf?g_诱?g>0|?gRq?rj   ru   ra   rh   r   )re   r   r   r   r2   r3  r:   )r   vals_RrA   r.   r.   r/   
test_pdf_R  s    
    zTestGenInvGauss.test_pdf_Rc                 C   s0   t tjdddd t tjdddd d S )Nr   rh   g    >Ar   r8   )r   r2   r3  r:   r   r.   r.   r/   test_pdf_zero   s    zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   r   markslowr8  r:  r<  r>  r@  rE  rG  rH  r.   r.   r.   r/   r,    s   




r,  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestGenHyperbolicc                 C   s   t jd d S r   r   r   r.   r.   r/   r   	  s    zTestGenHyperbolic.setup_methodc           
      C   s|   t ddddddddd	d
g
}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd d S )NgF^T=g{X'=gNunƢsy>g7!t?gɫzI?g̸?g?gq6.?gmPZz?g:PgN?r8   r8   r   rh   r.  r5   ra   r   rx   r|   rq   )re   r   r2   genhyperbolicr   r   r:   
r   rF  lmbdar   betarD  deltar   ghrA   r.   r.   r/   
test_pdf_r  s$          
zTestGenHyperbolic.test_pdf_rc           
      C   s|   t ddddddddd	d
g
}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd d S )Ng=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?rL  rM  r5   rN  ra   r   ư>rO  )re   r   r2   rP  r   r   rD   rQ  r.   r.   r/   
test_cdf_r"  s$          
zTestGenHyperbolic.test_cdf_rc                    s`   ddddg}d\}}}d\|| | f  fddt d	d
D }t||ddd d S )Ng@쐧@g@쐧 @g܊B@gvGăi@rL  rM  c                    s$   g | ]}t j d |qS )r5   )r2   rP  moment)rH   ir   rT  rD  r.   r/   rJ   H  s   z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   ru   r   rx   rO  )ranger   )r   rF  rR  r   rS  Zvals_usr.   r[  r/   test_moments_r8  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 )	NrL  rM  r5   r/  r   r0  r1  T)r2   rP  r4  r   rD   r   )
r   rR  r   rS  rD  rT  r   rU  r7  r   r.   r.   r/   r   O  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   ra   r8   r   r5   rj   Gz?r   rW  rO  )re   r   float_powerfinfofloat32epssqrtr2   rP  r  newaxisr   r:   t)	r   r   r   rS  rD  rT  r   rU  rA   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 )
NrA  r   )r   r   r5   rj   r^  r   rW  rO  )re   r`  ra  rb  r2   rP  r   r  rd  r   r:   cauchy)	r   rR  r   rS  rD  rT  r   rU  rA   r.   r.   r/   test_pdf_cauchyn  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 )NrN  ra   )r   r   r   r5   r     r   r   r   dy=rO  )re   r   r`  ra  rb  r2   rP  rd  r   r:   laplace)	r   r6   rT  rR  r   rS  r   rU  rA   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   ri  ra   r      rb   rA  r5   rj   r^  r   )r,   r-   r6   r7   rx   rO  )re   r   r_  r\  r2   rP  r  rd  r   r:   norminvgauss)	r   r   rS  rT  rD  rR  r   rU  rA   r.   r.   r/   test_pdf_norminvgauss  s*    (      z'TestGenHyperbolic.test_pdf_norminvgaussN)r   r   r   r   rV  rX  r]  r   rf  rh  rl  rq  r.   r.   r.   r/   rK    s   rK  c                   @   sb   e Zd Zdd Zdd Zdd Zejddd	d
dgdd Z	dd Z
dd Zdd Zdd ZdS )TestNormInvGaussc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestNormInvGauss.setup_methodc                 C   sL   t dddddg}t dddd	d
g}tjj|ddd}t||dd d S )Ngp~٧>g @X>g}e?g{)߳?gwH?r      r   r   rh   r,   r-   &.>r{   )re   r   r2   rp  rD   r   )r   Zr_cdfx_testvals_cdfr.   r.   r/   
test_cdf_R  s    
 zTestNormInvGauss.test_cdf_Rc                 C   sL   t dddddg}t dddd	d
g}tjj|ddd}t||dd d S )Ngp϶>g\H55$?geСt&?go NiH?g]u>rs  rt  r   ru  r   r   rh   rv  rw  r{   )re   r   r2   rp  r:   r   )r   Zr_pdfrx  Zvals_pdfr.   r.   r/   rG    s    
 zTestNormInvGauss.test_pdf_Rzx, a, b, sf, rtol)rn  r   r   !7?rx   )   r   r   ?=-C6?)r   ru   r?  gy5`?r!  )ra   ru   r?  gMLC9rw  c                 C   s@   t j|||}t|||d t j|||}t|||d d S Nrp   r2   rp  r  r   r  )r   rA   r,   r-   r  rq   r@   rZ  r.   r.   r/   test_sf_isf_mpmath  s    &z#TestNormInvGauss.test_sf_isf_mpmathc                 C   s^   ddg}ddg}d}ddg}t j|||}t||ddd	 t j|||}t||d
d d S )Nrn  r|  r   r   r{  r}  rx   缉ؗҜ<r   rW  rp   r  )r   rA   r,   r-   r  r@   rZ  r.   r.   r/   test_sf_isf_mpmath_vectorized  s    z.TestNormInvGauss.test_sf_isf_mpmath_vectorizedc                 C   s<   t dd}tddd}||}||}t|| d S )Nr   r   ri  r8   )r2   rp  re   r   r  r  r   )r   dstrA   r  r  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   rh   r8   r         @r   r  mvskmoments)re   rc  r   r2   rp  )r   r,   r-   gammaZv_statsr.   r.   r/   
test_stats  s    (zTestNormInvGauss.test_statsc                 C   sB   d\}}t dddg}tj|||}t|tj||| d S )Nr  MbP?rh   +?)re   r   r2   rp  r  r   rD   )r   r,   r-   rx  r   r.   r.   r/   test_ppf  s    zTestNormInvGauss.test_ppfN)r   r   r   r   rz  rG  r   rI  parametrizer  r  r  r  r  r.   r.   r.   r/   rr    s   
&rr  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestGeomc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestGeom.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k 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     s    zTestGeom.test_rvsc                 C   sT   t jd}tjjt dd|d}|jt jks4t	t 
|t t jjksPt	d S )Nl   A: iru   r0  )re   r   r   r2   r  r   r   r   Zint64rZ   r   ZiinfoZint32max)r   r   r   r.   r.   r/   test_rvs_9313  s    zTestGeom.test_rvs_9313c                 C   s(   t jdddgd}t|dddg d S )Nr   r8   r   rh   r         ?)r2   r  r   r   r   r   r.   r.   r/   r   '  s    zTestGeom.test_pmfc                 C   sZ   t tjdddgd}tjdddgd}t||ddd tjdd}t|d d S )	Nr   r8   r   rh   ro   r   r   rm   )re   r  r2   r  r   r&  r   r   )r   r   r   r   r.   r.   r/   test_logpmf+  s
    zTestGeom.test_logpmfc                 C   sR   t jdddgd}t jdddgd}tdddg}t|| t|d|  d S Nr   r8   r   rh   r         ?)r2   r  rD   r  r   r   r   r   vals_sfr]   r.   r.   r/   test_cdf_sf5  s
    
zTestGeom.test_cdf_sfc                 C   s\   t jdddgd}t jdddgd}tdddg}t|t| t|t|  d S r  )	r2   r  r)  logsfr   r   re   r  log1pr  r.   r.   r/   test_logcdf_logsf<  s
    zTestGeom.test_logcdf_logsfc                 C   s0   t jdddgd}tdddg}t|| d S )Nrh   r   r  r   rl   r  )r2   r  r  r   r   r   r   r]   r.   r.   r/   r  C  s    zTestGeom.test_ppfc                 C   s   t tjddddd d S )N#B;r   +=r{   )r   r2   r  r  r   r.   r.   r/   test_ppf_underflowH  s    zTestGeom.test_ppf_underflowN)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dS )
TestPlanckc                 C   s   t jd d S r   r   r   r.   r.   r/   r   N  s    zTestPlanck.setup_methodc                 C   s0   t jdddgd}tdddg}t|| d S )Nr   r8   r   r   g|dy?g8'\>ggrU!>)r2   planckr  r   r   r  r.   r.   r/   r  Q  s    zTestPlanck.test_sfc                 C   s0   t jdddgd}tdddg}t|| d S )N     @@     @@     p@g    P.g    h>g    TF)r2   r  r  r   r   r  r.   r.   r/   
test_logsfX  s    zTestPlanck.test_logsfN)r   r   r   r   r  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d	S )
TestGennormc                 C   s2   dddg}t j|d}t j|}t|| d S Nr   r8   r   )r2   gennormr:   rk  r   r   pointspdf1pdf2r.   r.   r/   test_laplace_  s    
zTestGennorm.test_laplacec                 C   s6   dddg}t j|d}t jj|dd}t|| d S Nr   r8   r   g;f?r7   )r2   r  r:   normr   r  r.   r.   r/   	test_normf  s    
zTestGennorm.test_normc                 C   s   t jd td}|jdd}t||jjdks:t	td}|jdd}tj
jdd}t||jdkstt	td}|jdd}tjjddd	}t||jdkst	d S )
Nr   rh   rv   r   r_   r   r8   g;f?)r7   r   )re   r   r   r2   r  r   r4  rD   ZpvaluerZ   rk  Zks_2sampr  )r   rI   r   Zrvs_laplaceZrvs_normr.   r.   r/   r   m  s    


zTestGennorm.test_rvsc                 C   s   t jd tddgddgg}|jdddgd}t|d d ddf tdjd	 d
ksbtt|d d dd	f tdjd	 d
kstt|d d d	df tdjd	 d
kstt|d d d	d	f tdjd	 d
kstd S )Nr   rh   r   rl   r   rv   r8   r   r   r_   )	re   r   r   r2   r  r   r4  rD   rZ   )r   rI   r   r.   r.   r/   test_rvs_broadcasting~  s    ...z!TestGennorm.test_rvs_broadcastingN)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dS )TestHalfgennormc                 C   s2   dddg}t j|d}t j|}t|| d S r  )r2   halfgennormr:   exponr   r  r.   r.   r/   
test_expon  s    
zTestHalfgennorm.test_exponc                 C   s6   dddg}t j|d}t jj|dd}t|| d S r  )r2   r  r:   Zhalfnormr   r  r.   r.   r/   test_halfnorm  s    
zTestHalfgennorm.test_halfnormc                 C   s8   dddg}t j|d}t j|d}t|d|  d S )Nr   r8   r   g
(?)r2   r  r:   r  r   r  r.   r.   r/   test_gennorm  s    
zTestHalfgennorm.test_gennormN)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dS )TestLaplaceasymmetricc                 C   s8   t dddg}tj|d}tj|}t|| d S r  )re   r   r2   laplace_asymmetricr:   rk  r   r  r.   r.   r/   r    s    z"TestLaplaceasymmetric.test_laplacec                 C   sN   t dddg}d}d| }tj||}tj||d  |}t|| d S r  )re   r   r2   r  r:   r   )r   r  rr   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   ra   r8   r_   gMbp?r;  gV-?皙?gMb`?)re   r   r  r2   r  r:   rD   r  r  r  r   concatenate)r   r  rr   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  r  r  r.   r.   r.   r/   r    s   	r  c                   @   s&  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dEddZddddddgddddddgddddddgdd dd!dd"gd#ejd$d%d&d'gej d#d(d%d)d'gd*dd+d,d-d.gdd/d0d,d1d.gdd2d3d4d5d6gg	ZeeZejd7ed8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDS )FTestTruncnormc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestTruncnorm.setup_methodc              	   C   sT   t jjdddddddgdd	d
gd dd}ttjddd
ddtjg}t|| d S )NrA  r   r~  rh   H.?r   r8         r   r      r5   fO?l@ru   )r2   	truncnormr  re   r   r   r   r  r.   r.   r/   test_ppf_ticket1131  s     z!TestTruncnorm.test_ppf_ticket1131c              	   C   sT   t jjdddddddgdd	d
gd dd}ttjddd
ddtjg}t|| d S )NrA  r   r~  rh   r  r   r8   r  r   r   r  r5   ru   r  r  )r2   r  r  re   r   r   r   r  r.   r.   r/   test_isf_ticket1131  s     z!TestTruncnorm.test_isf_ticket1131c                 C   s   d\}}t jj||dddd}t||   k oD|   k oD|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d S )N)irN  r   r   ra   r   )ra      r2   r  r   r   minr  r   lowhighrA   r.   r.   r/   test_gh_2477_small_values  s    .z'TestTruncnorm.test_gh_2477_small_valuesc                 C   sF  d\}}t jj||dddd}t||   koD|   koD|kn  t|||gf d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o:|   k o:|k n   d S )	N)rb   r`   r   r   ra   r   )rv     )'  i'  )i)r2   r  r   r   r  r  rQ   r  r.   r.   r/   test_gh_2477_large_values  s    <..z'TestTruncnorm.test_gh_2477_large_valuesc                 C   s  ddgddgfD ]\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t ddddg}t ddd	d	g}	t dd
ddg}
|dk rt ddd
dg}
t|| t||	 t||
 tt 	|
d |
d  |d  t dddg}tj
|||}t |t |d |g}t|| |dk rxt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  rl   r   r   r   rm   gd._MT
@gBKg?r8   rh   gĖy	@gdv*?g,mj%V?r   )re   r   r   r2   r  rD   r  r:   r   r  r  sign)r   r  r  xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsr:   r.   r.   r/   test_gh_9403_nontail_values  sH    




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 ddddg}t ddd	d	g}	t dd
ddg}
|dk rt ddd
dg}
t|| t||	 t||
 tt 	|
d |
d  |d  t dddg}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'   (   irl   r   r   r   rm   gpGC@gFf<r8   rh   gEC@g i?gspXio)>r   r  rn  )re   r   r   r2   r  rD   r  r:   r   r  r  r  r   )r   r  r  r  r  r  r  r  r  r  r  r  r  r  r:   Zxvals2r.   r.   r/   test_gh_9403_medium_tail_values  sh     





 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?ru  g @gR?)r   r2   r  rD   re   r   r   r.   r.   r/   test_cdf_tail_15110_14753A  s    z'TestTruncnorm.test_cdf_tail_15110_14753Hz>c                 C   sb   |d d \}}}}t jj ||dd\}	}
}}t|	| t|
| t|||d t|||d d S )Nr  r  r  rp   r2   r  r   )r   r,   r-   r]   rq   m0v0s0k0mvr@   r>   r.   r.   r/   _test_moments_one_rangeK  s    

z%TestTruncnorm._test_moments_one_ranger   rm   r   rN  ra   gLFur  r   gMFmz%?gſr8   ghI}?gHNMr   gQ63E?gnl$A?gr1"D?gK8L?gQ63Egr1"Drn  gU*?g bn?gnA?g?c3TXʿr   gU*ҿgnAg"$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{   r  )r   r  r,   r-   r  r  r  r  r  r  r@   r>   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  re   r   r   )r   r  r  r.   r.   r/   test_9902_moments  s    
zTestTruncnorm.test_9902_momentsc                 C   sP   d\}}t jj||dddd}t||   k oD|   k oD|k n   d S )N)ra   r   r   r   ra   r   r  r  r.   r.   r/   test_gh_1489_trac_962_rvs  s    z'TestTruncnorm.test_gh_1489_trac_962_rvsc                 C   s   ddt j dt j t j dddddg}dddt jddddd	t jt jg}tjj||dt|fd
}t |dt|fkszttt 	||j
ddk tt 	|jdd|k d S )NrN  ra   rt  ir  r  ru   r  -   r   r   )Zaxis)re   r   r2   r  r   r   r   rZ   r   r   r  r  r  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 )Nr   rN  rt  ru   r0  )r+   re   r   r2   r  r   r   r   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 dddddg}ddd	d
dg}tt|||| tt| | | | d S )Nra   ru        @	   ri  gOul"gځ=!gL!g>EG	f g^K[X)re   r   r   r   r2   r  r)  r  )r   r,   r-   rA   r]   r.   r.   r/   test_logcdf_gh17064  s      z!TestTruncnorm.test_logcdf_gh17064N)r  )r   r   r   r   r  r  r  r  r  r  r  r  re   r   Z_truncnorm_stats_datar   r   rI  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ddgdd Zd	S )
TestGenLogisticx, expected)ig4`n)ig4	ncg)r   gX
=)rb   gh@X)rv   gh<c                 C   s$   d}t j||}t||dd d S )Nr.  rx   rp   )r2   Zgenlogisticr   r   )r   rA   r]   r  logpr.   r.   r/   test_logpdf  s    zTestGenLogistic.test_logpdfN)r   r   r   r   rI  r  r
  r.   r.   r.   r/   r    s   
r  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestHypergeomc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestHypergeom.setup_methodc                 C   s   t jjddddd}tt|dkt|dk@  tt|dk t|jjt	d k t jddd}tt
|t t dddd}tt
|tj t|jjt	d k d S )Nri  ra   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     r8   gkㅒP?r  )r2   r  r   r   )r   Mr   NZtotZgoodZhgpmfr.   r.   r/   test_precision  s    zTestHypergeom.test_precisionc                 C   sl   t tjdddddd t tjdddddd t tjdddddd t tjdddddd d S )Nr   r8   r   r   r  rm   )r   r2   r  r   r   r.   r.   r/   	test_args  s    zTestHypergeom.test_argsc                 C   s.   t dtjdddd  ko"dkn   d S )Nr   r   io i  if0  r   )r   r2   r  rD   r   r.   r.   r/   test_cdf_above_one  s    z TestHypergeom.test_cdf_above_onec              	      s   d dt ddddddd	gd
 }d fdd|D }t dddddddg}t||ddd ddddg}tj|   d}ddddg}t||ddd d S )Ng    +@g     @r   ffffff@333333@r  gffffff@g@ru        @g     @c                    s"   g | ]}t j   |qS r.   )r2   r  r  )rH   ZeatenZorangesZpearsquantiler.   r/   rJ     s   z1TestHypergeom.test_precision2.<locals>.<listcomp>r   gpR(g㘍R2gJޱ p9g?Mf=g
G?r   gƠ>rO  g     @g     @g     @g     @g)9g"1)re   r   r   r2   r  r  )r   Zfruits_eatenr   r]   Z	quantilesres2Z	expected2r.   r  r/   test_precision2  s"      zTestHypergeom.test_precision2c                 C   sd   t ddd}| }tddg}tt|| }t|| t ddd}| }t|d d S )Nr  r   r   r   rm   )	r2   r  rN   re   r   r   r   r   r   )r   hgr   r   r   r.   r.   r/   r     s    
zTestHypergeom.test_entropyc                 C   sl   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d S )Nr      cA    .A     j@gor   r   r   @  X  ,  g_7	j$r   )r2   r  r  r   r   r>   r  r   r  resultr]   r.   r.   r/   r    s    zTestHypergeom.test_logsfc                 C   s   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d}d	}d}d}t j||||}d}t||dd tdddg}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ר)r2   r  r)  r   re   r   fullr!  r.   r.   r/   test_logcdf  s8    zTestHypergeom.test_logcdfN)r   r   r   r   r   r  r  r  r  r   r  r&  r.   r.   r.   r/   r    s   
	r  c                   @   sP   e Zd Zejdddgdd Zdd Zdd	 Zejd
ddgdd Z	dS )TestLoggammazx, c, sf)r  r.  gQOu3;)   rb   g\Z{0c                 C   s<   t j||}t||dd t j||}t||dd d S )Nr!  rp   )r2   loggammar  r   r  )r   rA   r  r  r@   yr.   r.   r/   test_sf_isfK  s    zTestLoggamma.test_sf_isfc                 C   s    t jdd}t|ddd d S )Nir8   g     @r  rp   )r2   r)  r   r   )r   lpr.   r.   r/   r
  S  s    zTestLoggamma.test_logpdfc                 C   sn   t ddddddddd	d
dddddgdd}|D ]4\}}}}}tjj|dd}t|||||gdd q4d S )Nrh   g"~jg46<@g oŏ      @r   g	h"lxgQ?gZd;333333@g      (@g{/L@g??gгYҿgh|?5?rn  ru   Zmsvkr  r  r   )re   r   reshaper2   r)  r   )r   tabler  r  varskewZkurtcomputedr.   r.   r/   r  [  s2                 zTestLoggamma.test_statsr  r_   r  c                 C   sv   t jj|dd}t| s"tt j|}t t	||k t
|}|jdd}|jd  k rl|jk srn td S )N順 r   r  )Zconfidence_levelrh   )r2   r)  r   re   isfiniter   rZ   medianZ	binomtestZcount_nonzeror   Zproportion_cir  r  )r   r  rA   ZmedZbtestcir.   r.   r/   r   j  s    zTestLoggamma.test_rvsN)
r   r   r   r   rI  r  r+  r
  r  r   r.   r.   r.   r/   r'  D  s   

r'  c                   @   sp   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S )TestLogisticc                 C   s2   t dd}tj|}tj|}t|| d S Nr  ri  )re   r   r2   logisticrD   r  r   r   rA   r*  r  r.   r.   r/   r  {  s    zTestLogistic.test_cdf_ppfc                 C   s2   t dd}tj|}tj|}t|| d S r9  )re   r   r2   r:  r  r  r   r;  r.   r.   r/   r+    s    zTestLogistic.test_sf_isfc                 C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r2   r:  r  r  )r   r   Zdesiredr.   r.   r/   test_extreme_values  s    z TestLogistic.test_extreme_valuesc                 C   s.   t jdddg}dddg}t||dd d S )	Nir   ra   gm\  .g9B.gO& $rx   rp   )r2   r:  r   r   )r   r	  r]   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 )Nrg   )r2   r:  r   r   r   r	  r.   r.   r/   test_logpdf_extreme_values  s    z'TestLogistic.test_logpdf_extreme_valueszloc_rvs,scale_rvs)g9x&?gi '?)gB"?gs^&?c                 C   sR   t jjd||d}dd }t|t j||fdj}t j|}t||dd d S )Nrb   r   r6   r7   c                 S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS Nr   r8   )r   re   r   r   )inputr   r,   r-   r   x1x2r.   r.   r/   r     s    z#TestLogistic.test_fit.<locals>.funcrB  gKH9r{   )r2   r:  r   r"   	_fitstartrA   r   r   )r   loc_rvs	scale_rvsr   r   Zexpected_solutionZ
fit_methodr.   r.   r/   test_fit  s    

zTestLogistic.test_fitc                 C   sl   t jjdddd}|t j|fg}t j|i d }tt j|| tt j||dd tt j||dd d S )Nrb   rh   r8   rA  r   r   r   )r2   r:  r   rF  _reduce_funcr   )r   r   r   r   r.   r.   r/   test_fit_comp_optimizer  s    z$TestLogistic.test_fit_comp_optimizer
testlogcdfTFc                 C   sT   t dddddg}|r&tj|}ntj| }dddd	d
g}t||dd d S )Nr  r>     r   r       g      g%h9fg?~T}%mgCx^&ْgV瞯<rp   )re   r   r2   r:  r)  r  r   )r   rN  rA   r*  r]   r.   r.   r/   test_logcdfsf_tails  s     z TestLogistic.test_logcdfsf_tailsN)r   r   r   r  r+  r<  r=  r@  r   rI  r  rI  rM  rQ  r.   r.   r.   r/   r8  y  s   

r8  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestLogserc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestLogser.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Nr   r   r   r   r   r   )r2   logserr   r   r;   r   r   r   r   r   r   r   r   r   r.   r.   r/   r     s    zTestLogser.test_rvsc                 C   s   t jdd}t|d d S )Nr  r  g&Y3)r2   rS  r   r   r   r  r.   r.   r/   test_pmf_small_p  s    zTestLogser.test_pmf_small_pc                 C   s   t jd}t|d d S )N:0yE>gW  ?)r2   rS  r  r   rT  r.   r.   r/   test_mean_small_p  s    zTestLogser.test_mean_small_pN)r   r   r   r   r   rU  rW  r.   r.   r.   r/   rR    s   rR  c                	   @   s   e Zd Zejdddd Zejdej	ej
gejdddd	gejd
dd	dg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Zscopec                 C   s   t jdS r   re   r   r   r   r.   r.   r/   r     s    zTestGumbel_r_l.rngrI   rG  rn  r   r   rH  r_   ru   zfix_loc, fix_scaleTFc                 C   sl   |j d|||d}|||fg}||i d }	t }
|rH|d |
d< |rX|d |
d< t|||	f|
 d S )Nrb   )r   r6   r7   rz   r   r8   r   r   )r   rF  rL  r   r   )r   rI   rG  rH  fix_loc	fix_scaler   r   r   r   r   r.   r.   r/   rM    s    
z&TestGumbel_r_l.test_fit_comp_optimizerz	dist, sgnc                 C   sL   |t ddddddddg }||\}}t||d  t|ddd d S )Nr   gW  @g   @g3qtw>rW  rp   )re   r   r   r   )r   rI   Zsgnzr6   r7   r.   r.   r/   rI    s    zTestGumbel_r_l.test_fitN)r   r   r   r   fixturer   rI  r  r2   gumbel_rgumbel_lrM  rI  r.   r.   r.   r/   rX    s   

rX  c                   @   s  e Zd Zdd Zdd Zejdddd Zej	d	ej
d
ddgej
dddgej
dddgdd Zej
d
ddgej
dddgej
dddgej
ddd eddgddD ejdddd Zejdddd  Zd!d" Zd#d$ Zd%S )&
TestParetoc              	   C   s  t   t dt tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjd	dd\}}}}t
|d
 t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t
|d W 5 Q R X d S )Nr   rh   r  r  r   r.  r  rl         @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@)r   r   r   r  r2   paretor   re   r   r   r   rc  r   r  r  r@   r>   r.   r.   r/   r     s^    











zTestPareto.test_statsc                 C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eAr8   r.  r   r5   )r2   rh  r  r   )r   rA   r-   r7   r   r]   r.   r.   r/   r  \  s    zTestPareto.test_sfrY  rZ  c                 C   s   t jdS r   r[  r   r.   r.   r/   r   d  s    zTestPareto.rngz2ignore:invalid value encountered in double_scalars	rvs_shaper   r8   rvs_locr   	rvs_scaleru   c              
   C   s   t jjd||||d}t jj|dddd }t jj|dddd }t jj|dddd }||  krv|  krvdks|n tt jjd|||d |d}t jj|dd	\}	}
}t|d |  |d }|jd }t|	|t	t
||    t|
d d S )
Nrb   r   r-   r7   r6   rz   r   p=
ף?)r   r   )r   fix_b)r   fbr8   rJ  )r2   rh  r   r   rZ   r   r  r   re   r   r  )r   rj  rk  rl  r   r   Zshape_mle_analytical1Zshape_mle_analytical2Zshape_mle_analytical3Zshape_mle_aZ	loc_mle_aZscale_mle_aZ
data_shiftndatar.   r.   r/   rI  h  s0      
zTestPareto.test_fitr_   fix_shape, fix_loc, fix_scalec                 C   s   g | ]}d |kr|qS Fr.   rH   r   r.   r.   r/   rJ     s    zTestPareto.<listcomp>TFr   repeatignoreinvalidc                 C   sx   t jjd||||d}|t j|fg}	t j|	i d }
i }|rJ||d< |rV||d< |rb||d< tt j||
f| d S )Nrb   rm  r   r   r   r   )r2   rh  r   rF  rL  r   r   rj  rk  rl  Z	fix_shaper\  r]  r   r   r   r   r   r.   r.   r/   test_fit_MLE_comp_optimizer  s    	 z&TestPareto.test_fit_MLE_comp_optimizerc                 C   s^   d\}}}t jj|||dtjdd}|t j|fg}t j|i d }tt j|| d S )N)r   r   r   rb   ið& r0  r   )	r2   rh  r   re   r   r   rF  rL  r   )r   r   locationr7   r   r   r   r.   r.   r/   test_fit_known_bad_seed  s    

z"TestPareto.test_fit_known_bad_seedc                 C   sD   t tj tttjjdddgdd tttjjdddgddd d S )Nr   r8   r   rJ  ru   r   r   )r   r2   rh  assert_raisesr    r   r   r.   r.   r/   test_fit_warnings  s
    
zTestPareto.test_fit_warningsc                 C   s.   t jjddd|d}t|d t j|}d S )Ni~r   rb   )r6   r-   r   rz   r   )r2   rh  r   r
   r   )r   r   r   r7  r.   r.   r/   test_negative_data  s    
zTestPareto.test_negative_dataN)r   r   r   r  r  r   r_  r   rI  filterwarningsr  rI  r$   re   errstater{  r}  r  r  r.   r.   r.   r/   rb    s*   <





rb  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ddddgfdddded ejgfdddded  d!gfd"d#d$dd%gfgd&d' Zd(d) Zd*S )+TestGenparetoc                 C   sl   dD ]6}t |}tj|\}}t|d tt | qt d}tj|\}}t||gddg d S )Nr   rm   rm          rh   )	re   asarrayr2   	genpareto_get_supportr   r   isposinfr   )r   r  r,   r-   r.   r.   r/   test_ab  s    


zTestGenpareto.test_abc                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| d S )Nrm   r  r   rf  r   r   ra   )
r2   r  re   r   r   r:   r  rD   r  r  r   rvrA   r  r.   r.   r/   test_c0  s    zTestGenpareto.test_c0c                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| t|
d	d d S )
Nr  r  r   rf  r   rm   r   ra   r   )r2   r  re   r   r   r:   uniformrD   r  r  r   r  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 )Nr_   r  rm   r   r  )
r2   r  r   r:   re   r   rD   r   isneginfr   r   r  r.   r.   r/   
test_x_inf  s    """zTestGenpareto.test_x_infc                 C   s   t ddd}dD ]t}tj||}dD ]$}tj||| }t||dd q(tj||}dD ]$}tj||| }t||dd q`qd S )	Nr   ra   r   r   rn  r  g+r!  r{   )r  r  )re   r   r2   r  r:   r   rD   )r   rA   r  Zpdf0dcZpdfcZcdf0Zcdfcr.   r.   r/   test_c_continuity  s    zTestGenpareto.test_c_continuityc              	   C   s   t jt jddddt jdddddd	t jdddd f }d
D ]<}tj||}dD ]$}tj||| }t||dd qTq>d S Nr!  rj   r_   baser   r   FZendpointr   )rm   r  r  r{   )re   r   r  r   r2   r  r  r   )r   r  r  Zppf0r  Zppfcr.   r.   r/   test_c_continuity_ppf  s    z#TestGenpareto.test_c_continuity_ppfc              	   C   s   t jt jddddt jdddddd	t jdddd f }d
D ]<}tj||}dD ]$}tj||| }t||dd qTq>d S r  )re   r   r  r   r2   r  r  r   )r   r  r  Zisf0r  Zisfcr.   r.   r/   test_c_continuity_isf  s    z#TestGenpareto.test_c_continuity_isfc              	   C   sj   t jt jddddt jdddddd	t jdddd f }d
D ]&}ttjtj||||dd q>d S )Nr!  rj   r_   r  r   r   Fr  r   )rV  gC]r2ro   gV瞯Ҽro   r{   )	re   r   r  r   r   r2   r  rD   r  )r   r  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 )Ng    _Brj   r   r   gpEȜ)r2   r  r  r   r?  r.   r.   r/   r    s    zTestGenpareto.test_logsfzc, expected_statsr   r   r8   r(  r   re  gqq@ra   gqq?g      ?g$I$	?rq?r  gll0@rn  rh   UUUUUU?333333c                 C   s$   t jj |dd}t||ddd d S )Nr  r  rx   ro   r   )r2   r  r   )r   r  expected_statsr"  r.   r.   r/   r  !  s    zTestGenpareto.test_statsc                 C   s   t jd}t|ddd d S )NrV  gvǼ
  ?rx   rp   )r2   r  r1  r   )r   r  r.   r.   r/   test_var+  s    zTestGenpareto.test_varN)r   r   r   r  r  r  r  r  r  r  r  r  r   rI  r  re   rc  r   r  r  r.   r.   r.   r/   r    s&   

	
r  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestPearson3c                 C   s   t jd d S r   r   r   r.   r.   r/   r   2  s    zTestPearson3.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd k t jd}tt	|t
 t dd}tt	|tj t|jjtd k tt|dk d S )Nr_   r   r   ZAllFloatrh   r   )r2   r(   r   r   r;   r   r   r   r   r   floatr   r   r   r.   r.   r/   r   5  s    zTestPearson3.test_rvsc              	   C   s   t jddddg}t|tdddgdd	 t jd
d}t|tdgdd	 t jd
ddddgd}t|tdddddgdd	 d S )Nr8   rm   r_   r;  gtT?g+q?g?rW  r{   r  gND}i?r  rn  r   r   gj?gdC?gs?g'M?)r2   r(   r:   r   re   r   r  r.   r.   r/   r   @  s     zTestPearson3.test_pdfc                 C   s   t jddddg}t|tdddgdd	 t jd
d}t|dgdd	 t jd
ddddgd}t|dddddgdd	 d S )Nr8   rm   r_   r;  grE?gTp]0?g~?rW  r{   r  g E&"J?r  rn  r   r   giZ*J?gh+8w?gcK?g|<x6?gG?)r2   r(   rD   r   re   r   r  r.   r.   r/   r   J  s    
 zTestPearson3.test_cdfc                    sD   ddddg}dd t j|} fdd|D }t|| d S )Nr  rn  r   rh   r  c                    s$   g | ]}t t|j d  qS rF   )r   r2   r(   r:   )rH   r2  Zneg_infx_evalr.   r/   rJ   [  s   z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r2   r(   rD   r   )r   skewsr  Zint_pdfsr.   r  r/   test_negative_cdf_bug_11186T  s    z(TestPearson3.test_negative_cdf_bug_11186c                 C   sT   t jdd}t|d t|tjs(tt jdd}t|d t|tjsPtd S )Nr   r8   r   rW  )r2   r(   rY  r   r   re   numberrZ   )r   rY  r.   r.   r/   test_return_array_bug_11746_  s    

z(TestPearson3.test_return_array_bug_11746c                 C   s   ddddg}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 )	Nr  rn  r   rh   rA  r.  r  r8   )r2   r(   r  rD   r   re   r   r   r:   r  r  )r   r  r  r   r2  rA   r.   r.   r/   test_ppf_bug_17050j  s    
zTestPearson3.test_ppf_bug_17050N)
r   r   r   r   r   r   r   r  r  r  r.   r.   r.   r/   r  1  s   

r  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
TestKappa4c                 C   sH   ddddg}d}dD ].}t j|||}t j|| }t|| qd S )Nrm   r_   r;  rh   r   )
gffffffr  rA  皙ɿ皙r_   r;  rh   r   ffffff?)r2   kappa4rD   r  r   r   rA   r   r>   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 )Nrt  ru   ra   rm   r  r   )re   r   r2   r  rD   
genextremer   r  r.   r.   r/   test_cdf_genextreme  s    zTestKappa4.test_cdf_genextremec                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   ra   r   rm   )re   r   r2   r  rD   r  r   r  r.   r.   r/   test_cdf_expon  s    zTestKappa4.test_cdf_exponc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nrt  ru   ra   rm   )re   r   r2   r  rD   r`  r   r  r.   r.   r/   test_cdf_gumbel_r  s    zTestKappa4.test_cdf_gumbel_rc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nrt  ru   ra   r  rm   )re   r   r2   r  rD   r:  r   r  r.   r.   r/   test_cdf_logistic  s    zTestKappa4.test_cdf_logisticc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nrt  ru   ra   r   )re   r   r2   r  rD   r  r   r  r.   r.   r/   test_cdf_uniform  s    zTestKappa4.test_cdf_uniformc                 C   s   t dd d S rB  )r2   r  r   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   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestPoisson.setup_methodc                 C   sB   t d}tjdddg|}d|d |d d g}t|| d S )Nr8   r   r   rh   r  )re   r  r2   poissonr   r   )r   Zln2r   r]   r.   r.   r/   test_pmf_basic  s    
zTestPoisson.test_pmf_basicc                 C   sD   t jdddgd}dddg}t|| t jdd}t|d d S )Nr   r   r8   ffffff?r   r   )r2   r  r   r   intervalr   )r   r   r]   r  r.   r.   r/   test_mu0  s
    

zTestPoisson.test_mu0c                 C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Nrh   r   r   r   r   r   )r2   r  r   r   r;   r   r   r   r   r   r   r   r   r   r.   r.   r/   r     s    zTestPoisson.test_rvsc                 C   s   d}t jj |dd}t|||td| d| g tdddg}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   rm   rl   r   r8   rh   )r2   r  r   re   rc  r   r   )r   rD  r"  r]   r.   r.   r/   r    s     &zTestPoisson.test_statsN)r   r   r   r   r  r  r   r  r.   r.   r.   r/   r    s
   	r  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )	TestKSTwoc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestKSTwo.setup_methodc                 C   s   dD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkr\t |nd}t dd|| ddtjd|  t	dd|  ddg}tj
||}t|| qd S )Nr   r8   r   ra   rb   rv   r   rh   r   r   r8   rm   )re   r   r1   r   gammalnr   r2   ksoner  r  kstworD   r   )r   r   rA   v1lgelgr]   ry  r.   r.   r/   r     s    &zTestKSTwo.test_cdfc                 C   s   t ddd}dD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkrjt |nd}t ddd||  dtj	d| t
d| ddg}tj	||}t|| qd S )Nr   r   r  r  rh   r   r8   )re   r   r   r1   r   r  r   r2   r  r  r  r  r   )r   rA   r   r  r  r  r]   r  r.   r.   r/   r    s    &
 zTestKSTwo.test_sfc                 C   sd   t ddddd  }ddddd	d
g}|D ]4}|t | }tj||}t |}t|d q*d S )Nr   r8   r  r   r   rb      i  rv   rw   rV  )re   r   rc  r2   r  rD   Zdiffr
   )r   rA   ns_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   r  r  )re   r   r2   r  rD   r  r   )r   rA   r   ry  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  )re   r   rc  r2   r  rD   r  r   )r   rA   r   r  ry  r  r.   r.   r/   test_cdf_sf_sqrtn"  s    zTestKSTwo.test_cdf_sf_sqrtnc                 C   sn   t ddd}dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qd S )	Nr   r   r  r  rh   r^  r~  rp   )re   r   r2   r  rD   r  r   r   rA   r   r  ry  condr   r.   r.   r/   test_ppf_of_cdf*  s    zTestKSTwo.test_ppf_of_cdfc                 C   sn   t ddd}dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qd S )	Nr   r   r  r  rh   r   r~  rp   )re   r   r2   r  r  r  r   )r   rA   r   r  Zvals_isfr  r   r.   r.   r/   test_isf_of_sf4  s    zTestKSTwo.test_isf_of_sfc                 C   st   t ddd}dD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qd S )Nr   r   r  r  rh   r   )re   r   rc  r2   r  rD   r  r   r  r.   r.   r/   test_ppf_of_cdf_sqrtn=  s    zTestKSTwo.test_ppf_of_cdf_sqrtnc                 C   st   t ddd}dD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qd S )Nr   r   r  r  rh   r  )re   r   rc  r2   r  r  r  r   )r   rA   r   r  r  r  r   r.   r.   r/   test_isf_of_sf_sqrtnF  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  )re   r   r2   r  r  rD   r   )r   r  r   r  ry  r.   r.   r/   r  P  s
    zTestKSTwo.test_ppfc                 C   s   ddddddg}t ddd	d
ddg}t ddddddgddddddgddddddgdd d!d"d#d$gd%d&d'd(d)d*gd+d,d-d.d/d0gg}t|D ]J\}}|t d t t jd |  }tj||}t	||| d1d2 qd S )3Nra   r   rb   r  r  rv   r   gUUUUUU?rh   r   r8   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?h㈵>rp   )
re   r   	enumerater  rc  r<   r2   r  rD   r   )r   r  Zratiosr]   idxr   rA   ry  r.   r.   r/   test_simard_lecuyer_table1W  s@          "z$TestKSTwo.test_simard_lecuyer_table1N)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dS )TestZipfc                 C   s   t jd d S r   r   r   r.   r.   r/   r   z  s    zTestZipf.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Nr.  r   r   r   r   r   )r2   zipfr   r   r;   r   r   r   r   r   r   r   r   r   r.   r.   r/   r   }  s    zTestZipf.test_rvsc                 C   s\   t jj dd\}}tt| t|tj t jj ddd\}}tt||g   d S )Nffffff@r,   r'  skr,   r  )r2   r  r   re   r5  r   r   r   ri  r.   r.   r/   r    s
    zTestZipf.test_momentsN)r   r   r   r   r   r  r.   r.   r.   r/   r  y  s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDLaplacec                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestDLaplace.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd k t jd}tt	|t
 t dd}tt	|tj t|jjtd k tt jdd k	 d S )Nr.  r   r   r   r   r  )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   r8   r  r  r  r  rV  rO  )r2   r  re   r   r   r   r   r   )r   r,   dlr  r  r@   r>   r  r  ppm2m4r.   r.   r/   r    s    

&zTestDLaplace.test_statsc                 C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Nrl   r  )rm   rm   )r-  g      
@)re   r  r2   r  r   r   )r   r,   r  r  r  r@   r>   r.   r.   r/   test_stats2  s
    

zTestDLaplace.test_stats2N)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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  ZS )TestInvgaussc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)r8   r   r   )g
ףp=@g r@gʡE6@c                 C   sF  t jjd|||d}t jj||d\}}}|| }t|}t|t|d |d   }	||	 }
t|
|ddd t|	|ddd t	|| t jjd|||d}t jj||d |d d\}}}t	|d | t	|d | t jj|d	d
d }t jj|d	dd }t jj|d	dd }||  kr<|  kr<d	ksBn t
d S )Nrb   r   rD  r6   r7   rJ  rn  ro   rO  r   r~  rn  )fmur   )Zfix_mur   )r2   r   r   r   re   r  r   r   r   r   rZ   )r   rvs_murk  rl  r   rD  r6   r7   Zmu_temp	scale_mleZmu_mleZ
shape_mle1Z
shape_mle2Z
shape_mle3r.   r.   r/   rI    s2    
 


 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 j|fg}t j|i d }	t	t j||	|d t
||d  dkstt	t j||	|d d t	t j||	dd t	t j||	|t
jdd d d S )	Nrb   r  r   r8   )r   r  r   rJ  r~  )r2   r   r   r   r   r   r   rF  rL  r   re   r   rZ   r   rand)
r   r  rk  rl  r   Z	super_fitZsuper_fittedZinvgauss_fitr   r   	__class__r.   r/   r{    s,    
 


z(TestInvgauss.test_fit_MLE_comp_optimizerc              	   C   s:   t tj tt tjjdddgdd W 5 Q R X d S )Nr   r8   r   rJ  )r   r2   r   r   r   r    r   r   r.   r.   r/   test_fit_raise_errors	  s    
z"TestInvgauss.test_fit_raise_errorsc                 C   s   dddddg}dddddg}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 )Ng4wT;?gjdV&}?g{i\0>gDV_h?gqacX?r   皙?rD  r  ?gfFn   gr^:g9̗?r~  gx_;:g!?gٷ
??)r2   r   rD   r   r   r  )r   rD  r]   r[   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 )
Nr~  r  r  giJ.r  gr^ߺr  gpgFgpQ^L)r2   r   r)  r   r  )r   r)  r  r.   r.   r/   r  *	  s    	


zTestInvgauss.test_logcdf_logsf)r   r   r   r   r   rI  r  rI  r{  r  r  r  __classcell__r.   r.   r  r/   r    s   
&#r  c                       s   e Zd Zejdddddgejdddddgd	d
 Zejddddg fddZdd Zdd Z	dd Z
dd Z  ZS )TestLaplacerk  rt  r   r   r8   rl  r   ra   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 )	Nrb   rA  ro   rO  rJ  rK  r8   r~  )r2   rk  r   re   r6  r   r}   r   r   r   r   r  r   r   r   r   )r   rk  rl  r   Zloc_mler  r6   r7   r.   r.   r/   rI  >	  s*    



zTestLaplace.test_fitzrvs_scale,rvs_loc)ra   rt  )ru   ra   )r;  rh   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|td S )Nrv   rA  c              	   S   s8   dt | td|  d| tt||     S )Nrn  r8   r   )r   re   r  r   r}   )r6   r7   r   r.   r.   r/   llr	  s    z3TestLaplace.test_fit_MLE_comp_optimizer.<locals>.llro   rO  )	r2   rk  r   r   r   r   re   r   rZ   )r   rk  rl  r   r  r6   r7   Zloc_optZ	scale_optZll_mleZll_optr  r.   r/   r{  k	  s    
 z'TestLaplace.test_fit_MLE_comp_optimizerc                 C   sb   t ddddddg}tjj|dd\}}t|dd	d	d
 tjj|dd\}}t|dd	d	d
 d S )Nr   r  r          @r  r(  rJ  r  ro   rO  rK  )re   r   r2   rk  r   r   )r   r   r6   r7   r.   r.   r/   test_fit_simple_non_random_data	  s
    z+TestLaplace.test_fit_simple_non_random_datac                 C   sl   d}t j| }|dkstt j|}|dks6tt j|}|dksNtt j| }|dkshtd S )Nrv   rm   r   )r2   rk  rD   rZ   r  )r   rA   Zp0p1r.   r.   r/   test_sf_cdf_extremes	  s    z TestLaplace.test_sf_cdf_extremesc                 C   s.   d}t j|}t|t| d dd d S )Nr  r8   rx   rp   )r2   rk  r  r   re   r   )r   rA   r   r.   r.   r/   r  	  s    zTestLaplace.test_sfc                 C   s.   d}t j|}t|td|  dd d S )Ng}:r8   rx   rp   )r2   rk  r  r   re   r  )r   r   rA   r.   r.   r/   r  	  s    zTestLaplace.test_isf)r   r   r   r   rI  r  rI  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dddd	d
gejdddd	gejddd	dg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 ) TestPowerlawrY  rZ  c                 C   s   t jdS r   r[  r   r.   r.   r/   r   	  s    zTestPowerlaw.rngrj  r_   rh   r   r   r8   rk  rn  r   rl  ru   rr  c                 C   s   g | ]}d |kr|qS rs  r.   rt  r.   r.   r/   rJ   	  s    zTestPowerlaw.<listcomp>TFr   ru  c                 C   s   t jjd||||d}|t j|fg}	t j|	i d }
t }|rL||d< |rht| tj	 |d< |rt||d< t
t j||
f| d S )Nr$  )r   r,   r6   r7   rz   r   r   r   r   )r2   powerlawr   rF  rL  r   re   Z	nextafterr  r   r   rz  r.   r.   r/   r{  	  s     z(TestPowerlaw.test_fit_MLE_comp_optimizerc                 C   st   d}d}d}t jj|||dtjdd}d| d i}|t j|fg}t j|i d	 }t	t j||f| d S )
Ng`- @rm   grߟA@rb   ru   )r,   r6   r7   r   rz   r   r8   r   )
r2   r  r   re   r   r   ptprF  rL  r   )r   r,   r|  r7   r   r   r   r   r.   r.   r/   test_problem_case	  s    
zTestPowerlaw.test_problem_casec              	   C   s
  t tj d}tt|d tjjdddgddd W 5 Q R X d}tt|d tjjdddgdd	 W 5 Q R X d}tt|d tjjdddgdd	 W 5 Q R X d
}tt|d tjjdddgdd W 5 Q R X d}tt|d tjjdddgdd W 5 Q R X d S )Nz7 Maximum likelihood estimation with 'powerlaw' requiresr   r   r8   r  r   r   r~  rJ  z$Negative or zero `fscale` is outsider  rK  z0`fscale` must be greater than the range of data.)r   r2   r  r  r    r   r   )r   r*   r.   r.   r/   r  	  s     
"   zTestPowerlaw.test_fit_warningsc                 C   sL   ddddddddddddg}t j}tjdd	 t|||j W 5 Q R X d S )
Nr   r   r8   r   r  ru   r(  rw  Zover)r2   r  re   r  r   Znnlf)r   r   rI   r.   r.   r/   test_minimum_data_zero_gh17801	  s    z+TestPowerlaw.test_minimum_data_zero_gh17801N)r   r   r   r   r_  r   rI  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dS )TestInvGammac              	   C   s   t   t dt tjjddd}ddddg}t|| d	d
dg}tjj|dd}dddgtjddgtj	ddgtj	tj	dgf}t
||D ]\}}t|| qW 5 Q R X d S )Nr   g(\O3@r  r  g~?gCX&?g*7gS?gBqFq @皙?@gffffff@rf  gEy?gў3oz?g^Yb?g,r?gOD@g2*Z@gFN8@)r   r   r   r  r2   r   r   re   r   r   r   r   )r   r  r]   r,   rA   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   )re   r  r2   r   rD   r  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        r8   rb      r   r   rp   )	sysmaxsizere   r  r2   r   r  r  r   r;  r.   r.   r/   r+  
  s    
zTestInvGamma.test_sf_isfN)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dd Zd	S )
TestFc                 C   sZ   t jddgg}|D ]\}}}|j|jf| }qdd |D }dd |D }t|| d S )N)r8   r   r   c                 S   s$   g | ]\}}}|j |jf| qS r.   r:   r,   rH   _f_argsr7  r.   r.   r/   rJ   )
  s     z(TestF.test_endpoints.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r.   r.   rH   r  r  Z	_correct_r.   r.   r/   rJ   *
  s     )r2   fr:   r,   r   )r   r   r  r  Z_correctanscorrectr.   r.   r/   r  #
  s    zTestF.test_endpointsc                 C   sX   t jj dddd\}}}}tt| tt| tt| tt|  d S )Nr        @r  r  )r2   r  r   re   r5  ri  r.   r.   r/   test_f_moments-
  s
    zTestF.test_f_momentsc              	   C   sD   t  2 t dt tjjdgd ddddgdd W 5 Q R X d S )	Nr   r  r  r8   r(  ru  r  dfndfdr  )r   r   r   r  r2   r  r   r.   r.   r/   test_moments_warnings5
  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   r  r   r  r  r8   r  ru  r(  ru      )re   r   r2   r  r   rc  )r   r  r  r  r  r@   r>   r  Zv2s2Zk2numZk2denZk2r.   r.   r/   test_stats_broadcast;
  s"    
0
 
 zTestF.test_stats_broadcastN)r   r   r   r  r  r  r  r.   r.   r.   r/   r  "
  s   
r  c                   C   s   t tjddgddg d S )Nru   r(  g?g?)r   r2   re  r  r.   r.   r.   r/   test_rvgeneric_stdM
  s    r   c                   C   s   t tjjdddtjtjtjtjf t tjjddddtjtjtjf t tjjddddtjtjtjf t tjjdddddtjtjf t tjjd	d
dtjtjf t tjjdd
ddtjf t tjjdd
ddtjf t tjjdd
dd d S )Nr   r  )r   r  )\(?rm   r8   gGz @g     i@r   r  gGz@r  g
ףp=
@)rm   gq    @)r   r2   re  re   r   r   r.   r.   r.   r/   test_moments_tR
  s     r"  c                  C   s2   ddddg} ddddg}t tj| |d	d
 d S )Nr   r8   r|  rb   g?@gTM]?ggY?gU?rx   rp   )r   r2   re  rN   )r   r]   r.   r.   r/   test_t_entropyb
  s     r#  methnamer:   r   rD   r  r  r  
df_infmaskc                 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   ra   r   r   r   r   r6   r7   r5   )re   r   r   r  boolr  r   randnr   r2   re  r  r   r   )r$  r%  r   rA   Zt_distZ
t_dist_refZ	norm_distZt_methZ
t_meth_refZ	norm_methr   r.   r.   r/   test_t_inf_dfj
  s    



r*  c                 C   s  t jd t j| td} t jjdd| jd}t j|| < tj	j|dddd}tj
jdddd	}tj	j||   dddd}td
D ]2}t|| |  ||  t|| |   ||  qtj	j|ddd}tj
jddd}tj	j||   ddd}t||  | t||   | d S )Nr   r&  ra   r   r   r   r  )r   r6   r7   r  r6   r7   r  r  r'  r5   )re   r   r   r  r(  r  r   r   r2   re  r  r\  r   rN   )r%  r   r   Z
res_ex_infZres_ex_noinfrZ  r.   r.   r/   test_t_inf_df_stats_entropy
  s"    
r,  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestRvDiscretec                 C   s   t jd d S r   r   r   r.   r.   r/   r   
  s    zTestRvDiscrete.setup_methodc                 C   s   ddddddg}ddd	dddg}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std S )Nrn  r   r   r8   r   r  rm   333333?r  rv   sample)namevaluesr   r1  )r2   rK   r   r   r   r;   r   r   r}   r   r  re   r   r   integerrZ   )r   ZstatesZprobabilitysamplesrrA   r@   r   r.   r.   r/   r   
  s    &zTestRvDiscrete.test_rvsc                 C   sz   t dddg}tjdddg|fd}tt|| }| }t|| tjdddgdddgfd}| }t|d	 d S )
Nr   r(  r.  r   r   r8   r1  r   rm   )	re   r   r2   rK   r   r   rN   r   r   )r   r  r   r   r   r.   r.   r/   r   
  s    
zTestRvDiscrete.test_entropyc                 C   sX   dddg}dddg}t j||fd}dd	gd
dgg}t||ddgddggdd d S )Nr   r8   r  rh   r.  r;  r5  r   r-  r  rm   r  r{   )r2   rK   r   r   )r   xkpkr  rA   r.   r.   r/   r   
  s    


zTestRvDiscrete.test_pmfc                    s   dddg}dddg}t j||fd dd	d
dddddg}ddddddddg}t ||dd t fdd|D |dd d S )Nr   r8   r  rh   r.  r;  r5  r  r   r  r.  rl   r  ru   r   r  r  r{   c                    s   g | ]}  |qS r.   )rD   )rH   r  r  r.   r/   rJ   
  s     z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r2   rK   r   rD   )r   r6  r7  Zx_valuesr]   r.   r8  r/   r   
  s    

 zTestRvDiscrete.test_cdfc                    sx   dddg}dddg}t j||fd ddd	d
ddg}ddddddg}t ||dd t fdd|D |dd d S )Nr   r8   r  rh   r.  r;  r5  r_   333333?r  r9  r   r  r{   c                    s   g | ]}  |qS r.   )r  )rH   r  r8  r.   r/   rJ   
  s     z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r2   rK   r   r  )r   r6  r7  Zq_valuesr]   r.   r8  r/   r  
  s    

 zTestRvDiscrete.test_ppfc                 C   sZ   dddddgdddddgf}t j|d	}t|||jd d
 d |jdd   d S )Nr   r8   r  r  ru  r_   r;  r.  r5  rn  rV  )r2   rK   r   r  rD   r6  )r   r   r  r.   r.   r/   test_cdf_ppf_next
  s
    z TestRvDiscrete.test_cdf_ppf_nextc                 C   sl   t dd}t ddddgddddgddddgg}tj||fd}t| t |j	|j
 dd d S )	Nr   )r   r  r_   rC  r1  r5  r  r{   )re   r   r/  r   r2   rK   r   r   r   r6  r7  r   r6  r7  r  r.   r.   r/   test_multidimension
  s    

z"TestRvDiscrete.test_multidimensionc                 C   s   dddg}ddg}t ttjft||fd dddg}t ttjft||fd dddg}dddg}t ttjft||fd ddddd	g}d
d
d
d
dg}t ttjft||fd d S )Nr   r8   r   rh   r5  333333?gffffffr  ru   r.  r  )r  r   r2   rK   r   r   r6  r7  r.   r.   r/   test_bad_input
  s    



zTestRvDiscrete.test_bad_inputc                 C   s   t ddt dd }}tttjft||fd t ddt dd }}tttjft||fd t ddt dd }}t	tj||fd
dd d S )	Nr  r8   r8   )r8   r   gUUUUUU?r5  r(  r   r8   r   )re   r   r/  r%  r  r   r2   rK   r   r   r   r>  r.   r.   r/   test_shape_rv_sample
  s    z#TestRvDiscrete.test_shape_rv_samplec                 C   sT   ddddddg}ddddddg}t j||fd	}t| t|j|j d
d d S )Nr   r8   r  r(  r  r  r_   r;  r5  r  r{   )r2   rK   r   r   re   r   r6  r7  r;  r.   r.   r/   test_expect1  s    zTestRvDiscrete.test_expect1c              /   C   s@  ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/g/}d0d1d2d3d1d1d4d5d1d1d1d6d7d8d9d:d;d<d=d>d?d@dAd1dBdCdDdEdFdGdHdId1d1dJdKd7dLd1dMd1dNd1d1dOdPd1g/}t j||fdQ}t| | dRdS t| tdTdU t||D dRdS t|dVdW tdXdU t||D dRdS d S )YNg      i@g     r@g      y@g     @@g     @g     @      @g      @r  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:?rm   gF%uk?g:vz?g.nr?g|гY?g @6*?g 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?g N@s?g 1w-!_?gൄ|г?gH}}?g
F%u?g ^)ˀ?g v?r5  r  r{   c                 s   s   | ]\}}|| V  qd S rd   r.   rH   r  wr.   r.   r/   	<genexpr>2  s     z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c                 S   s   | d S Nr8   r.   r   r.   r.   r/   rT   5  rU   z-TestRvDiscrete.test_expect2.<locals>.<lambda>c                 s   s   | ]\}}|d  | V  qdS )r8   Nr.   rE  r.   r.   r/   rG  6  s     )r2   rK   r   r   r  r   r   )r   r*  pyr  r.   r.   r/   test_expect2  s                                                                  zTestRvDiscrete.test_expect2N)r   r   r   r   r   r   r   r   r  r:  r<  r?  rB  rC  rJ  r.   r.   r.   r/   r-  
  s   	r-  c                   @   s   e Zd Zdd Zdd ZdS )TestSkewCauchyc                 C   sl   t ddd}ttjj|ddtj| ttjj|ddtj| ttjj|ddtj| d S Nrt  ru   rb   r   r  )	re   r   r   r2   
skewcauchyr:   rg  rD   r  r  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 }dddd	d
dddddg
}ddddddddddg
}ttj||| ttj||| ttj	||| d S )Nr   ra   r8   r   ru   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?)
re   r   r   r  r   r2   rM  r:   rD   r  )r   r,   rA   r:   rD   r.   r.   r/   test_skewcauchy_RC  s0            z TestSkewCauchy.test_skewcauchy_RN)r   r   r   rN  rO  r.   r.   r.   r/   rK  9  s   	rK  r8   ru   g@r   gףp=
1@r   gRZ@i   gS㥛Ԋ@r_   r`   g&@iQ i'  i0ybi l   HO1Z i3r  ira   irb   ikr  i1rw   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   r   r.   r.   r/   r     s    zTestSkewNorm.setup_methodc                 C   s0   t ddd}ttjj|ddtj| d S rL  )re   r   r   r2   skewnormr:   r  r  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  ru   r   )r,   r   rz   r  )r2   rS  r   r   r   r   )r   r   rA   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  ru   r8   )r,   r   r6   r7   rz   r  )r,   r6   r7   r  r   r  )r2   rS  r   r   r   re   r  r1  r2  Zkurtosisr   )r   Xr]   r3  r.   r.   r/   r    s    $$zTestSkewNorm.test_momentsc                 C   sH   t jdddgd}t|tddd t jdd	}t|d
dd d S )Nra   ri  r   rn  r   r  rp   r|  rc  r   )r2   rS  rD   r   re   onesr  r.   r.   r/   test_cdf_large_x  s    zTestSkewNorm.test_cdf_large_xc                 C   s|   dddgdddgddd	gd
ddgdddgg}|D ]F\}}}t j||}t||dd t j| | }t||dd q0d S )Nr  r   gzbLe9r  r8   gn'/2;r  ru   g::r  rn  g|<rN  Oul2;rV  rp   )r2   rS  rD   r   r  )r   ZcdfvalsrA   r,   Zcdfvalr   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  rp   )r  r2   rS  rY  r   )r   r,   r  orderr]   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rvdks|n t||
ksttjj|ddd	d
\}}}|dkstt|||}|jdd}t |t	|f}t
|| tjjdd|d}tj|}t t |sttjj|d	d\}}}t |s@tt |t | }}t
|||t dt j    t
||d ddt j    d S )Nl   #ke )r  rd  rh   rb   r0  r?  r   rJ  gmmr   methodmsr  r   r_  r8   )re   r   r   r2   rS  r   r   rZ   r  r2  r   rh  r   r5  isinfr1  rc  r<   )r   r   r,   r6   r7   rI   r   a2loc2scale2a3loc3scale3Za4loc4scale4dist4r   r*  Za5Zloc5Zscale5r  r  r.   r.   r/   rI    s,    

zTestSkewNorm.test_fitN)r   r   r   r   rT  r   r  rW  rY  r   rI  r  _skewnorm_noncentral_momentsr\  rI  r.   r.   r.   r/   rR    s   	
rR  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestExponc                 C   s   t tjdd d S r  )r   r2   r  r:   r   r.   r.   r/   	test_zero  s    zTestExpon.test_zeroc                 C   s0   t tjdd t tjtjdd d S )NgC]r2<r  )r   r2   r  rD   r  r  r   r.   r.   r/   	test_tail  s    zTestExpon.test_tailc                 C   s,   t dddddt jg}tttjj| d S No_?46@yX5ͻ@j+?UX@)re   r   r   r  r   r2   r  r   r  r.   r.   r/   test_nan_raises_error  s    zTestExpon.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rp  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   test_inf_raises_error  s    zTestExpon.test_inf_raises_errorN)r   r   r   rn  ro  rv  rw  r.   r.   r.   r/   rm    s   rm  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestNormc                 C   s,   t dddddt jg}tttjj| d S rp  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rv    s    zTestNorm.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rp  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rw    s    zTestNorm.test_inf_raises_errorc                 C   s"   dddg}t ttjj|dd d S )Nr   r8   r   shrimp)plate)r  r   r2   r  r   r  r.   r.   r/   test_bad_keyword_arg  s    
zTestNorm.test_bad_keyword_argN)r   r   r   rv  rw  r{  r.   r.   r.   r/   rx    s   rx  c                   @   s    e Zd ZdZdd Zdd ZdS )TestUniformgh-10300c                 C   s,   t dddddt jg}tttjj| d S rp  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rv    s    z!TestUniform.test_nan_raises_errorc                 C   s,   t dddddt jg}tttjj| d S rp  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rw  #  s    z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__rv  rw  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ej	d	d
dddddgdd Z
ej	dddddgddddgddddgddddgdd dd!ggd"d# Zej	dd$ddd%gd&ddd'gddd(d)gd$dd(d*gd+dd(dgd,d dd-ggd.d/ Zd0S )1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   r8   r   r?        @r  r.   )lamsigrD  ZopK2Zexp_skewZexp_kurtr.   r.   r/   get_moms,  s    z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   r   r  r+  )r  r8   r_   )r   r   r   )rt  r  rd  )r2   	exponnormr   )r   r  rD  r  r  Kstsr.   r.   r/   r  *  s"    



zTestExponNorm.test_momentsc                 C   s2   t dddddt jg}tttjj|ddd d S 	Nrq  rr  rs  rt  ru  r   r   r~  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rv  E  s    z#TestExponNorm.test_nan_raises_errorc                 C   s2   t dddddt jg}tttjj|ddd d S r  )re   r   r   r  r   r2   r  r   r  r.   r.   r/   rw  J  s    z#TestExponNorm.test_inf_raises_errorc                 C   sT   t tjddd t tjddd t tjddd t tjddd d S )Ni|r   rm     rj   )r   r2   r  r:   r   r.   r.   r/   test_extremes_xO  s    zTestExponNorm.test_extremes_xzx, K, expected)ri  rj   g6
N-)r   rj   g՜n+H?)rn  rj   gi?)r  rj   gbJI-)ra   r   gI8?)ra   r  gQ3|-0?c                 C   s   t tj|||dd d S )Ngdy=rp   )r   r2   r  r:   )r   rA   r  r]   r.   r.   r/   test_std_pdfa  s    zTestExponNorm.test_std_pdfzx, K, scale, expectedr   rj   r   gVAҤ?rt  g{Gzt?g'^>rP  rb   rm   rv   gbr ;ru   r  gVMe?c                 C   s:   t jj|||d}|dkr(|dks6tnt||dd d S )Nr  rm   rx   rp   )r2   r  rD   rZ   r   r   rA   r  r7   r]   r   r.   r.   r/   test_cdf_small_Kw  s    zTestExponNorm.test_cdf_small_Kra   ghG}$;r8   g]fJ?rh   g31"g#;gf
+-ri  r  ga9S?c                 C   s:   t jj|||d}|dkr(|dks6tnt||dd d S )Nr  rm   g-a=rp   )r2   r  r  rZ   r   r  r.   r.   r/   test_sf_small_K  s    zTestExponNorm.test_sf_small_KN)r   r   r   r  rv  rw  r  r   rI  r  r  r  r  r.   r.   r.   r/   r  )  sB   












r  c                   @   s$   e Zd Zdd Zdd Z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   )simpsra   rj   rh   rl   )Zdxr   )scipy.integrater  r2   genexponr:   r;   r   r   )r   r  r   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   ra   rj   rh   rl   r   )r2   r  rD   r;   r   r   r   )r   rD   r.   r.   r/   test_cdf_bounds  s    zTestGenExpon.test_cdf_boundsc                 C   s$   t jdddd}t|ddd d S )Nr   r   r8   r.  gM <rx   rp   )r2   r  r  r   r  r.   r.   r/   test_sf_tail  s    zTestGenExpon.test_sf_tailN)r   r   r   r  r  r  r.   r.   r.   r/   r    s   r  c                   @   s   e Zd Zdd ZdS )TestExponpowc                 C   s6   t tjddd t tjtjdddd d S )N绽|=rl   r  ru   r  )r   r2   exponpowrD   r  r  r   r.   r.   r/   ro    s    zTestExponpow.test_tailN)r   r   r   ro  r.   r.   r.   r/   r    s   r  c                   @   s(   e Zd Zdd Zejddd ZdS )TestSkellamc                 C   sn   t dd}d\}}t dddddd	d
ddddddddddddddddddg}ttj||||dd d S )NrN  r   ra   ru   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   )r   r>   mu1mu2ZskpmfRr.   r.   r/   r     s<               zTestSkellam.test_pmfignore::RuntimeWarningc                 C   sn   t dd}d\}}t dddddd	d
ddddddddddddddddddg}ttj||||dd d S )NrN  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ñݸ?ru   r   )r;   r   r   r   r2   r  rD   )r   r>   r  r  ZskcdfRr.   r.   r/   r     s<               zTestSkellam.test_cdfN)r   r   r   r   r   rI  r  r   r.   r.   r.   r/   r    s   
r  c                   @   s   e Zd Zdd Zdd ZdS )TestLognormc              	   C   sH   t  6 t dt tjdddgd}t|dddg W 5 Q R X d S )Nr   r   rh   r   rm   g~r?g e3E?)r   r   r   r  r2   r   r:   r   r   r:   r.   r.   r/   r     s    
zTestLognorm.test_pdfc                 C   sn   d\}}}t tjj|| |dtjt|| |  t tjj|| |dtjt|| |  d S )N)g(\5i@   gOn?rS   )r   r2   r   r  r  re   r  r  )r   rE  rD  sigmar.   r.   r/   r&    s    
zTestLognorm.test_logcdfN)r   r   r   r   r&  r.   r.   r.   r/   r    s   r  c                   @   s   e Zd Zdd Zdd Zdd Zd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dS )TestBetac                 C   s:   t jddd}t|d t jddd}t|tj d S )Nr   r   rh   g;B.)r2   rS  r   r   re   r   r   r   r.   r.   r/   r
    s    
zTestBeta.test_logpdfc                 C   sX   d\}}t dddg}t||}t|| d t||t || d S )Ni  i  r;  rh   r9  gƒ)	re   r   r2   rS  r   r   r   r:   r   r   r   rS  rA   r-   r.   r.   r/   test_logpdf_ticket_1866  s
    z TestBeta.test_logpdf_ticket_1866c                 C   s&   dddg}t ttjj|dddd d S )Nr_   rh   r9  r   r   ry  )r   r   rz  )r  r   r2   rS  r   r  r.   r.   r/   test_fit_bad_keyword_args  s    
z"TestBeta.test_fit_bad_keyword_argsc                 C   s$   dddg}t ttjj|ddd d S )Nr_   rh   r9  )fafix_a)r  r   r2   rS  r   r  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   rS  r  )r   r   r,   r-   r.   r.   r/   test_issue_12635  s    	
zTestBeta.test_issue_12635c                 C   sl   t dddg}t dddg}d}tj||d d	| }t|| tj||d d	| }t|| d S )
Ng@3@?g^?gNC?ra   rb   rv   rj  r   r4  )re   r   r2   rS  r  r   r  )r   Zinv_RZ
count_listr   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   ri  r4  )re   r   r2   rS  r  rD   r   )	r   Zalpha_2Zcount_Znobsr  r,   r-   r  r   r.   r.   r/   test_issue_127968  s    zTestBeta.test_issue_12796c                 C   sD   d\}}t tjd||tj d\}}t tjd||tj d S )Nr  r   )r;  r   r   )r   r2   rS  r:   re   r   )r   r,   r-   r.   r.   r/   r  D  s    zTestBeta.test_endpointszDoes not convert boost warningc              	   C   s4   d\}}}t t tj||| W 5 Q R X d S )N)gףp=
?g   vH7Bg  @0B)r   warnsr  r2   rS  r  )r   r  r,   r-   r.   r.   r/   test_boost_eval_issue_14606O  s    
z$TestBeta.test_boost_eval_issue_14606r_  a, b)+ph        )@)r  r  c                 C   s.   d}z|||| W n t k
r(   Y nX d S )Nr9  )OverflowError)r   r_  r,   r-   r   r.   r.   r/    test_beta_ppf_with_subnormal_a_bU  s
    z)TestBeta.test_beta_ppf_with_subnormal_a_bN)r   r   r   r
  r  r  r  r   rI  skipifMACOS_INTELr  r  r  r  xfailr   r  r  r2   rS  r  r  r  r.   r.   r.   r/   r     s    



r  c                   @   s   e Zd Zdd Zdd ZdS )TestBetaPrimec                 C   s\   d\}}t dddg}t||}tt ||  t|	|t 
|| d S )Nr  r;  rh   r9  )re   r   r2   r   r   r5  r   r   r   r:   r   r  r.   r.   r/   r
  o  s
    zTestBetaPrime.test_logpdfc                    s   t jddd}t|d d\ tdddg}t j| }tt|  t j	j
 fdd	|D }t||dd
d d S )Nr   r;  r.  rm   r  rh   r9  c                    s   g | ]}t j| qS r.   )r2   r   )rH   r   r   rS  Zgen_cdfr.   r/   rJ     s     z*TestBetaPrime.test_cdf.<locals>.<listcomp>-=rO  )r2   r   rD   r   re   r   r   r5  r   rL   Z_cdf_singler   )r   rA   r  Zcdfs_gr.   r  r/   r   v  s    
zTestBetaPrime.test_cdfN)r   r   r   r
  r   r.   r.   r.   r/   r  n  s   r  c                   @   s,   e Zd Zdd Zdd Zdd Z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   ra   gBΖ?)r2   r  r:   r   r  r.   r.   r/   r     s    
zTestGamma.test_pdfc                 C   s   t jdd}t|d d S r  )r2   r  r   r   r  r.   r.   r/   r
    s    zTestGamma.test_logpdfc                 C   s$   dddg}t ttjj|ddd d S )Nr_   rh   r9  r   ry  )r   rz  )r  r   r2   r  r   r  r.   r.   r/   r    s    
z#TestGamma.test_fit_bad_keyword_argsc                 C   s@   t jtjdddddstt jtjdddd	ds<td S )
Nr  r   gplC@r  r{   gJz5rb   g1}t@rx   )re   iscloser2   r  r  rZ   r   r.   r.   r/   r    s     
 zTestGamma.test_isfN)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S )TestChi2c                 C   s4   t tjddddd t tjddddd d S )Nrv   gޞw1D?   r   rb   g6:֜?r   r2   chi2r:   r   r.   r.   r/   r    s    zTestChi2.test_precisionc                 C   s|   d}t jd|}t|ddd t jd|}t|ddd d}t jd	|}t|d
dd t jd|}t|ddd d S )Nr'  gλm:=6g'bd5 <r  rp   rh   gQ8@   gܐ؆0guu[9=r_   g8-*@)r2   r  r  r   )r   r   rA   r.   r.   r/   r    s    zTestChi2.test_ppfN)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dd	gd
d Z	dS )TestGumbelLc                 C   s2   t dd}tj|}tj|}t|| d S Nro  r  )re   r   r2   ra  rD   r  r   r;  r.   r.   r/   r    s    zTestGumbelL.test_cdf_ppfc                 C   sH   t dd}tj|}tj|}t |}t| }t	|| d S r  )
re   r   r2   ra  r)  r  r   r   expm1r   )r   rA   r*  r^  ur  r.   r.   r/   r    s    
zTestGumbelL.test_logcdf_logsfc                 C   s2   t dd}tj|}tj|}t|| d S )Nr  ru   )re   r   r2   ra  r  r  r   r;  r.   r.   r/   r+    s    zTestGumbelL.test_sf_isfr6   rn  r   c                 C   s2   t jjd|d}t jj||d\}}t|| d S )Nrb   )r   r6   rJ  )r2   ra  r   r   r   )r   r6   r   Z
fitted_locr7  r.   r.   r/   test_fit_fixed_param  s    z TestGumbelL.test_fit_fixed_paramN)
r   r   r   r  r  r+  r   rI  r  r  r.   r.   r.   r/   r    s
   r  c                   @   s   e Zd Zdd Zdd ZdS )TestGumbelRc                 C   s   t tjdddd d S )Nr   g?~T}%m;r  rp   )r   r2   r`  r  r   r.   r.   r/   r    s    zTestGumbelR.test_sfc                 C   s   t tjdddd d S )Nr  r  r  rp   )r   r2   r`  r  r   r.   r.   r/   r    s    zTestGumbelR.test_isfN)r   r   r   r  r  r.   r.   r.   r/   r    s   	r  c                   @   sn  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ddddg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
d.dd/gd0dd1gd2d3d4gej
d.d5dd6d/gd0ddd7d1gd8d9d3d:d;dgejjd
ej
d.d5d0d<d=dd>d?d@d6d/ged0d1dAed2ddBejjd
gdCdD Zej	d-e
d.dd/gd0dd1gd2d3d4gej
d.d5dd6d/gd0ddd7d1gd8d9d3d:d;dgejjd
ej
d.d5d0d<d=dd>d?d@d6d/ged0d1dAed2ddBejjd
gdEdF Zej	dGd3dgej	dHdIdJgdKdL Zej	dMdNdOgdPdOggdQdR Zej	dSdTd3ejejejfgdUdVggdWdX Zej	dYd<dd?gej	dZejj d[ed\d3d]d^fejj!d[ed\d3d]d^fejj d_ed3d`d]d[fejj!d_ed3d`d]d^fgdadb Z"dcS )dTestLevyStablec                 C   s,   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	re   loadr   __file__parentcorerecordsZ
fromarraysTr   r   r.   r.   r/   nolan_pdf_sample_data  s    z$TestLevyStable.nolan_pdf_sample_datac                 C   s,   t ttjd }t jjj|jdd}|S )a#  Sample data points for cdf computed with Nolan's stablec

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

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

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

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

        and the equivalent for the right tail

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

        Typically inputs for stablec:

            stablec.exe <<
            2 # cdf
            1 # Nolan S equivalent to S0 in scipy
            .25,2,.25 # alpha
            -1,-1,0 # beta
            -10,10,1 # x
            1,0 # gamma, delta
            2 # output file
        z.data/levy_stable/stable-Z1-cdf-sample-data.npyr  r  r  r  r.   r.   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)re   r  r   r  r  r  r.   r.   r/   nolan_loc_scale_sample_dataK  s    	z*TestLevyStable.nolan_loc_scale_sample_datasample_sizer   r/  )ZmarksparameterizationZS0ZS1z
alpha,beta)r   r   )r   rA  )r.  r   )r  rh   zgamma,deltar   r   rA  c           
      C   sF   |t j_t j||||d}t |j|dd|j\}}	|	dksBtd S )N)r   rS  r7   r6   r   r0  r1  )r2   levy_stabler  r4  r   rD   rZ   )
r   r  r   rS  r  rT  r  lsr7  r   r.   r.   r/   r   Z  s        zTestLevyStable.test_rvsrS  rh   r   c                 C   sZ   t jd d}d}d}tjj||||dd}tj|d||||fd\}}|d	ksVtd
S )z3Additional test cases for rvs for alpha equal to 1.h:r   rh   r.  i  r6   r7   r   r  rB  rj   N)re   r   r   r2   r  r   r4  rZ   )r   rS  r   r6   r7   rA   statr   r.   r.   r/   test_rvs_alpha1v  s    

zTestLevyStable.test_rvs_alpha1c                 C   s   dddddddddddddddddddddg}t j|\}}}}t|dddd	 t|d
d t|dd t|dd |dddddg }t j|\}}}	}
t|d t|d t|
dd t|	dd d S )Ngwgrm   g u?g67',?gtA}˜.?Gz?r   rj   r   )\(̿r8   gۧ1?r  g9]c?rn  gv?)r2   r  rF  r   r   r   r   rA   alpha1beta1loc1scale1rE  alpha2beta2rd  re  r.   r.   r/   rI    sJ                        

zTestLevyStable.test_fitzUnknown problem with fitstart.r  zalpha,beta,delta,gamma)r.  r  r8   r   )r   r  r8   r   parametrizationc                 C   sZ   |t j_t jj||||ddd}t j|}|\}}	}
}t||||g||	|
|gdd dS )z7Test that fit agrees with rvs for each parametrization.r  r   r6   r7   r   rz   rj   rp   N)r2   r  r  r   rF  r   )r   r   rS  rT  r  r  r   r   Z	alpha_obsZbeta_obsZ	delta_obsZ	gamma_obsr.   r.   r/   test_fit_rvs  s          

zTestLevyStable.test_fit_rvsc           
      C   s   t dddddddddddg}tj|\}}}}tj| \}}}}	t|d |dks`tt|| t||  t||  t|	| d S )Nr   r   ra   r   rb   r   )re   r   r2   r  rF  r   rZ   r   )
r   rA   r  r  r  r  r  r  rd  re  r.   r.   r/   test_fit_beta_flip  s     

z!TestLevyStable.test_fit_beta_flipc                 C   s   d}t dddddddddddg}tj| \}}}}tj| | \}}}	}
t|| t|| t|	||  t|
| d S )Nr   r   ra   r   rb   )re   r   r2   r  rF  r   )r   ZSHIFTrA   r  r  r  r  r  r  rd  re  r.   r.   r/   test_fit_delta_shift  s     

z#TestLevyStable.test_fit_delta_shiftc                 C   s   dddddddddddg}t j|\}}}}|dk sDtd| |t|k shtdt| d| dddddddddd	d	g}t j|\}}}	}
|dkstd
| |	t|kstdt| d|	 d S )Nr   r   ra   r      zExpected alpha < 1, got zExpected loc < z, got    zExpected alpha > 1, got zExpected loc > )r2   r  rF  rZ   r  r  r  r.   r.   r/   test_fit_loc_extrap  s    $z"TestLevyStable.test_fit_loc_extrapz pct_range,alpha_range,beta_rangerj   r^  r_   r8   rn  r   r  r1  r  r.  grA  r.  r9  r   ffffff??r   r9  ri     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k	r||| n|}t
 }|td tjj|d |d |d ddd}tjddH t|dddg|t||d   t||d   t|d   g}W 5 Q R X ||d |kt|B  }t||d  |d!|	|
||jj|f d"d# W 5 Q R X qdS )$z2Test pdf values against Nolan's stablec.exe outputLinuxi686/dnir  c                    s  t | d t | d  @ t | d @ | d dk| d dk@ | d dk| d dk@ | d dk@ B | d dkt | d d	d
g@ B | d dkt | d ddg@ B | d dkt | d ddg@ B | d dkt | d ddg@ t t | d dddg@ 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 dddddg@ 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 ddddg@ B | d dkt | d ddg@ t t | d dddg@ B | d dkt | d d	d
g@ t t | d ddg@ B | d dkB  @ S )Npctr   rS  r   rh   r9  皙?r  rj   r^  r.  r1  r  r;  r_   r   r   r9  ffffff?r  r  gٿ333333ӿr   r  r  r  )re   isinr}   r4  alpha_range
beta_range	pct_ranger.   r/   rT      s    










 
%


*


/


4
9
>
C
z7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	piecewiserj  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rS  r;  r   re   r  r  r  r.   r/   rT   N  s    

c                    s:   | d dk @ t | d @ d k@ t | d @ S )Nr   r   r  rS  r	  r  r  r  is_linux_32r  r.   r/   rT   Y  s    
g&.=c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   rS  r;  r	  r  r  r.   r/   rT   c  s    
fft-simpsonr  c                    s<   | d dkt | d @ t | d  @ t | d @ S )Nr   r  r  rS  r	  r  r  r.   r/   rT   l  s    
rW  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk @ S )Nr  r   rS  r   r  r	  r  r  r.   r/   rT   t  s    

Nz2Density calculations experimental for FFT method.*rA   r   rS  r   r   r7   r6   rw  r  calcabserrrelerrr   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:   re   r  r   r}   isnanr   r   r  )r   r  r  r  r  r   r  Zplatform_desctestsixdefault_methodrq   filter_funcsubdatasupr   subdata2failuresr.   r
  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k	r||
| n|}t }|td tjj|d |d |d ddd}tj	ddH t
|dddg|t||d  t||d  t|d  g}W 5 Q R X ||d |	kt|B  }t||d |	d|||jj|f dd  W 5 Q R X qdS )!z4 Test cdf values against Nolan's stablec.exe output.r  r  c              	      s   t | d t | d  @ t | d @ | d dkt | d dddg@ | d dk@ | d dkt | d d	d
dg@ | d dk@ B  @ S Nr  r   rS  r   r  r  r  rj   r_   r;  r.  r^  r	  r  r  r.   r/   rT     s$    



z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>r1  c                    s   t | d t | d  @ t | d @ | d dkt | d dddg@ | d dk@ @ | d dkt | d d	d
dg@ | d dk@ B S r&  r	  r  r  r.   r/   rT     s"    

	

r  r  c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   rS  333333?r	  r  r  r.   r/   rT     s    
r~  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rS  r.  r'  r	  r  r  r.   r/   rT     s    

r  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rS  ?r.  r	  r  r  r.   r/   rT     s    

rj   c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rS  r   r(  r	  r  r  r.   r/   rT     s    

Nz[Cumulative density calculations experimental for FFT method. Use piecewise method instead.*rA   r   rS  r   r   r  rw  r  r  r  r  r   z)cdf test %s failed with method '%s'
%s
%sFr  )r  r2   r  cdf_default_methodr   r  r  rD   re   r  r   r}   r  r   r   r  )r   r  r  r  r  r   r  r  r  rq   r   r!  r"  r   r#  r$  r.   r  r/   test_cdf_nolan_samples  s          	  
  
  N	
z%TestLevyStable.test_cdf_nolan_samplesr   r  r:   rD   c           
      C   s   t  }|jdko dt  d k}|r8|dkr8td |}dtj_dtj_	||d |k }d| tj_
|d	ksvt|dkrtjjntjj}||d
 |d |d ddd}	t|	|| d dS )zGTests for pdf and cdf where loc, scale are different from 0, 1
        r  32bitr   r:   z4Test unstable on some platforms; see gh-17839, 17859r  r   S)r:   rD   rA   r   rS  r8   r   r  r  N)r  r  r  architecturer   skipr2   r  r)  r  r  rZ   r:   rD   r   )
r   r  r   r  r  r  r   r!  rY  r  r.   r.   r/   test_location_scale>  s(    
    z"TestLevyStable.test_location_scalezmethod,decimal_placesr  r  r  c                 C   s   t ddddddddddddddddddddg}t dddd	d
dddddddddddddddg}t ddddddddddddddddddddg}t jddR t @}|jtdd |tj_tjj	|d|ddd }t
|||| W 5 Q R X W 5 Q R X d!S )"z sample points extracted from Tables and Graphs of Stable
        Probability Density Functions - Donald R Holt - 1973 - p 187.
        r   r   r8   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   rh   rw  r   zDensity calculation unstable.*)categorymessager  N)re   r   r  r   rX   r  r2   r  r  r:   r   )r   r_  Zdecimal_placesxsdensityZbetasr"  r:   r.   r.   r/   'test_pdf_alpha_equals_one_beta_non_zero`  s|    *                                      z6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zerozparams,expected)r  r  r   r   )r8   r9  ra   r.  )ra   rg  r   r   c                 C   s4   t jj |d |d |d |d dd}t|| d S )Nr   r   r8   r   r  r+  )r2   r  r   )r   paramsr]   Zobservedr.   r.   r/   r    s       zTestLevyStable.test_statsr   zfunction,beta,points,expectedr   ira   rm   r  r|  c                 C   s>   d|  k rdk sn t 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   rS  N)rZ   r   re   r%  r   )r   r   rY  rS  r  r]   r.   r.   r/   !test_distribution_outside_support  s
    (z0TestLevyStable.test_distribution_outside_supportN)#r   r   r   r   r_  r  r  r  rI  r  r   rJ  r   r  rI  r  r  r  r  r  re   r   xslowr%  r*  r/  r5  r   NaNr  r2   r  rD   r:   r7  r.   r.   r.   r/   r    s   
!
+
  
 
 B
{ 
 
r  c                   @   s   e Zd Zdd Zdd ZdS )TestArrayArgumentc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestArrayArgument.setup_methodc                 C   s.   t jjtdtddd}t|jd d S )Nru   r  r  )r2   r  r   re   r   rV  r   r   r   r   r.   r.   r/   test_noexception  s    z"TestArrayArgument.test_noexceptionN)r   r   r   r   r<  r.   r.   r.   r/   r:    s   r:  c                   @   s   e Zd Zdd Zdd ZdS )TestDocstringc                 C   sD   t jjd k	r tdt jj k t jjd k	r@tdt jj k d S )Nr   r
  )r2   r   r~  r   lowerr
  r   r.   r.   r/   test_docstrings  s    zTestDocstring.test_docstringsc                 C   s   t   t   d S rd   )r2   rL   rK   r   r.   r.   r/   test_no_name_arg  s    zTestDocstring.test_no_name_argN)r   r   r   r?  r@  r.   r.   r.   r/   r=    s   r=  c                  C   s   t dddddddg} t| dk| d\}}t|dddddg t|dddddg tddk| d\}}t|| d  t|dg t| dk| d\}}t||  t|dgt|   d S )Nr   r   r8   r   )r   r   r   r;   r   r,   r-   r  r.   r.   r/   TestArgsreduce  s    
rB  c                   @   s   e Zd ZdddgZdd Zdddg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   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestFitMethod.setup_methodr  r  r  z	dist,argsc                 C   sz   || j k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 deprecatedrq  rr  rs  rt  ru  r   rK  N)fitSkipNonFiniter   r.  re   r   r   r   r   r2   r  r   r   )r   rI   r   rA   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d 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 5 Q R X d S )Ni90  rw  r0  r   rm         4@ri  r   r8   r   r~  rV  r{   )re   r   r   r  r2   r   r   rc  r  r  r   r   r   )r   rA   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   r8   rJ  rK  )re   r   r2   r  r   r   rc  r   r   rA   r6   r7   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   rJ  ru   r   ru  r   r   r8   r~  )re   r   r  r  r2   r  r   r   r   Zdigammar   )r   rA   Zmeanlogr   r,   r6   r7   r@   r   r   r  r.   r.   r/   test_fix_fit_gamma  s6    






z TestFitMethod.test_fix_fit_gammac              	   C   s  dd }t dddg}tjj|ddd\}}}}t|d t|d t||||ddgd	d
 t dddg}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 dddg}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   re   r  r   r   psi)r,   r-   rA   r   s1r  Zpsiabr   r.   r.   r/   mlefuncA  s    z0TestFitMethod.test_fix_fit_beta.<locals>.mlefuncr  r   rh   r   r   r~  rW  r{   r8   )r   r   r   r  )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )
re   r   r2   rS  r   r   r   r   r  r   )r   rO  rA   r,   r-   r6   r7   dadbrE  rc  b2rd  re  r*  r.   r.   r/   test_fix_fit_beta>  s<    








 zTestFitMethod.test_fix_fit_betac              
   C   s   t ddddddddg}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 )Nr8   r  ru  r   rK  r   rJ  )re   r   r2   r  r   r   rI  r.   r.   r/   test_expon_fitu  s    




zTestFitMethod.test_expon_fitc                 C   s  t ddddddg}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 )Nr.  r   ra   r      ;   r   rJ  r!  rp   r(  r~  r8   r   )r   Zfix_s)re   r   r  r2   r   r   r   r  r   r   r  rc  )r   rA   Zlnxm1r   r6   r7   r.   r.   r/   test_lognorm_fit  s     




zTestFitMethod.test_lognorm_fitc                 C   s   t ddddg}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 )Nr   r  r=        "@r   rJ  ra   rK  rl   r   )re   r   r2   r  r   r   r  r  r  r  r   rI  r.   r.   r/   test_uniform_fit  s    


zTestFitMethod.test_uniform_fitr_  ZMLEZMMc              
   C   sn  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dddg d}t jj|dd}t jj|||d\}
}}t|
| d S )N)r  r-  rb   r   r0  r  )r   r_  )r  r_  r!  rO  )r  r_  r-  )r   r_  )rp  r_  )ro  r_  r   r8   )r  r   r_  r   r   )r  r   r   r   r_  )r  r   r   r_  r   )	r2   rS  r   r   r   r  r   r   r  )r   r_  r,   r-   rA   Zres_1Zres_2Zres_3Zres_4Zres_5ZaaZbbr  ssr   r.   r.   r/   test_fshapes  s2      zTestFitMethod.test_fshapesc                 C   s<   t j}|jddd}tdd}tt|j|f|d|i d S )Nr8   rb   )r  r   i)Zenikibenikir_  )r2   r  r   r   r  r   r   )r   r_  rI   r   r   r.   r.   r/   test_extra_params  s    
zTestFitMethod.test_extra_paramsN)r   r   r   r.  r   rE  r   rI  r  r   rF  rH  rJ  rL  rS  rT  rW  rY  rJ  r[  r\  r.   r.   r.   r/   rC    s"   



	&7&rC  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )
TestFrozenc                 C   s   t jd d S r   r   r   r.   r.   r/   r     s    zTestFrozen.setup_methodc                 C   s  t j}t jddd}|d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| | }|jddd}t|| |	 }|j	ddd}t|| |
 }|j
ddd}t|| | }|jddd}t|| | }|jddd}t|| |d}|jdddd}t|| t|j|j t|j|j d S )Nrf  r  r5   rG  r   r8   )r2   r  r:   r   rD   r  r  r  r6  r  r1  r  rN   rY  r,   r-   )r   rI   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 )Nrl   rG  r   rf  r8   )r2   r  r:   r   rD   r  r  r  r6  r  r1  r  rN   rY  r,   rI   r-   )r   r,   rI   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   r8   r  r  )r2   r   rY  r   )r   r^  m1r  r.   r.   r/   test_regression_ticket_1293K  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k	 dD ]l}t|}t j|d}|j|j	 }}t|d t
t| td}t j|\}}t||gdd	g qd S )
Nr  r  rm   rf  r_   r   r  r  rh   )r2   r  rI   r  r   r:   re   r   r,   r-   r   r  r  r   )r   r  r  r,   r-   Zrv1r.   r.   r/   r  Z  s2    



zTestFrozen.test_abc                 C   s   t ttjd d S )NZ	rv_frozen)r   r+   r2   r3   r   r.   r.   r/   test_rv_frozen_in_namespace  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 )Nrz   *   r   ru  r0  )r2   r  r   r+   rz   r   Z	get_statere   r   ZRandomStater   )r   r^  Zrndmr.   r.   r/   test_random_state  s    
zTestFrozen.test_random_statec           
      C   s   t dd}t d}t jddddgdd	d
dgfd}|||fD ]}d|_|jdd t|}|jdd}t|}|jdd}t	|| |
d|
dg}	t	|	d |	d  t	||	d ||	d  q@d S )Ngdsz@g@e?r  r   r   r8   r   r_   r;  r.  r  r5  r   ru  r   rh   )r2   rS  r  rK   rz   r   pickledumpsloadsr   r  rD   )
r   rS  Zpoissr/  distfnr@   Zr0Z	unpickledZr1Zmediansr.   r.   r/   test_pickling  s$    




zTestFrozen.test_picklingc              
   C   s   dd }t jdddd}tjddd2 |j|d	dd
d}t jj|dddd	dd
d}W 5 Q R X t|| t jddd}||}t jj|ddd}t|| d S )Nc                 S   s   | S rd   r.   r   r.   r.   r/   r     s    z$TestFrozen.test_expect.<locals>.funcr8   r   r  )r,   r6   r7   rw  )ry  divider   T)r   ubconditionalr8   r   r6   r7   r   rl  rm  r6   )r   r   r6   )r2   r  re   r  r   r   r  )r   r   ZgmZgm_valZ	gamma_valr   Zp_valZpoisson_valr.   r.   r/   test_expect  s      

zTestFrozen.test_expectN)r   r   r   r   r  r`  rb  r  rc  re  rj  rr  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	e
jddd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )
TestExpectc                 C   s   t jjdd ddd}t|ddd t jjd	d ddd}t|ddd t jjd
ddd}t jjdddd}t jjdd dd||d}t|ddd t jjdd dd||dd}t|ddd d S )Nc                 S   s   | d | d  S )Nru   r.   r   r.   r.   r/   rT     rU   z&TestExpect.test_norm.<locals>.<lambda>ru   r8   r5   r  r  r   c                 S   s   | S rd   r.   r   r.   r.   r/   rT     rU   r1  r  c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   r6   r7   r   rl  r9  c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   Tr6   r7   r   rl  rm  r   )r2   r  r   r   r  )r   r  r  r   rl  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   s   | d | d  S )NUUUUUU@r.   r   r.   r.   r/   rT     rU   z&TestExpect.test_beta.<locals>.<lambda>r  ru   r8   )r   r6   r7   qq?r  r   c                 S   s   | S rd   r.   r   r.   r.   r/   rT     rU   r   rl   rx  r  ra   r5   r1  c                 S   s   dS )Nr   r.   r   r.   r.   r/   rT     rU   )ra   ra   Fro  r9  c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   Tr   )r2   rS  r   r   r  )r   r  r  rl  r   rv  rw  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 )Nri  ra   ru  r   rp  c                 S   s   | S rd   r.   r   r.   r.   r/   rT     rU   z+TestExpect.test_hypergeom.<locals>.<lambda>)ri  ra   ru  rq  r  r   c                 S   s   | d d S NrX  r8   r.   r   r.   r.   r/   rT     rU   r  c                 S   s   | d d S r{  r.   r   r.   r.   r/   rT     rU   ru   )r   r6   r   rl  r   c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   r(  r   c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   T)r   r6   r   rl  rm  c                 S   s   dS r   r.   r   r.   r.   r/   rT   	  rU   r   )r   r   rl  )r2   r  r   r   r   r   )
r   Zm_trueZv_truer  r  Zv_boundsZ	prob_trueprob_boundsZprob_bcZprob_br.   r.   r/   test_hypergeom  s@      "     zTestExpect.test_hypergeomc                 C   sb   t jjdd dddd}dt jdd }t||d	d
 t jjdd dddd}t|dd	d
 d S )Nc                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   z)TestExpect.test_poisson.<locals>.<lambda>rn  r   F)r   r   rm  r   r8   r  r   c                 S   s   dS r   r.   r   r.   r.   r/   rT     rU   T)r2   r  r   rD   r   )r   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.  rB  )rh   r  r   )r2   Zgenhalflogisticr   r   )r   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 )	Ni  Gz?c                 S   s   dS r   r.   r   r.   r.   r/   rT   '  rU   z/TestExpect.test_rice_overflow.<locals>.<lambda>)r  rB  c                 S   s   dS rH  r.   r   r.   r.   r/   rT   (  rU   c                 S   s   dS Nr   r.   r   r.   r.   r/   rT   )  rU   )r   re   r5  r2   ricer:   r   r   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   s   | S rd   r.   r>   r.   r.   r/   rT   .  rU   z(TestExpect.test_logser.<locals>.<lambda>rB  r   ro   r{   c                 S   s   | S rd   r.   r  r.   r.   r/   rT   4  rU   rq  )r2   rS  r   r   re   r  )r   r   r6   Zres_0Zres_lr.   r.   r/   test_logser+  s     zTestExpect.test_logserr  c                 C   sh   d\}}t jjdd ||fd}t jjdd ||fd}t||| dd t||d  || dd d S )	N)r  r  c                 S   s   | S rd   r.   r   r.   r.   r/   rT   <  rU   z)TestExpect.test_skellam.<locals>.<lambda>rB  c                 S   s   | d S rH  r.   r   r.   r.   r/   rT   =  rU   r!  r{   r8   )r2   r  r   r   )r   r  p2ra  r  r.   r.   r/   test_skellam7  s
    zTestExpect.test_skellamc                 C   sL   d\}}t jdd ||f}t|tdd t||D ||  dd d S )N)r   q   c                 S   s   | S rd   r.   r   r.   r.   r/   rT   E  rU   z)TestExpect.test_randint.<locals>.<lambda>c                 s   s   | ]
}|V  qd S rd   r.   rH   r7  r.   r.   r/   rG  G  s     z*TestExpect.test_randint.<locals>.<genexpr>ro   r{   )r2   r   r   r   r   r\  )r   lohir   r.   r.   r/   test_randintA  s     zTestExpect.test_randintc                 C   s   t ttjjdd d d S )Nc                 S   s   | d S rH  r.   r   r.   r.   r/   rT   L  rU   z&TestExpect.test_zipf.<locals>.<lambda>rn  )r	   r  r2   r  r   r   r.   r.   r/   	test_zipfI  s    
 zTestExpect.test_zipfc                 C   s@   t jjdd dd}t jjdd ddddd	}t||d
d d S )Nc                 S   s   dS r   r.   r   r.   r.   r/   rT   P  rU   z/TestExpect.test_discrete_kwds.<locals>.<lambda>rn  rB  c                 S   s   dS r   r.   r   r.   r.   r/   rT   Q  rU   r      rV  )r   Zmaxcount	chunksizeZ	tolerancer  r   )r2   r  r   r   )r   Zn0Zn1r.   r.   r/   test_discrete_kwdsN  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 )Nru   ra   r  r|  r   r   r8   r.   r  r.   r.   r/   poiss_moment5X  s    z-TestExpect.test_moment.<locals>.poiss_moment5)ru   r  ru   r  rp   )r2   r  rY  r   )r   r  rD  Zm5r.   r.   r/   test_momentU  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   r5   r  ra   r_   )   rB  r  U   rp  )r   r2   r  r   r  r:  r   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 )Nra   ru   r5   r  r  rt  r  r  r9  Tru  r  g433333@g433333r   )r2   r  r  r   r   )r   rI   r*  r.   r.   r/   test_lb_ub_gh15855h  s"    zTestExpect.test_lb_ub_gh15855N)r   r   r   r  rz  r}  r~  r  r  r  r   rI  r  r  r  r  r  r  r  r  r.   r.   r.   r/   rs    s   "
	

	
	rs  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNctc                 C   s@   t dd}t|dd t dd}t|dddd d S )Nru   r   rh   rn  g K?ra   r   )r2   nctr   rD   r   r  r.   r.   r/   test_nc_parameter  s    zTestNct.test_nc_parameterc              	   C   sf   t jdtddd d d f tddd}tdddd	gd
dddgddddgg}t||dd d S )Nru   r  r  r_   r   gMp^j?g6].ftv?gȳ'ς?gu?g!Y<a?g]d1p?go|?g?gHdY?g2Ԥg?g}o/u?g .mr?r  rp   )r2   r  r:   re   r   r   r   r   )r   r   r]   r.   r.   r/   test_broadcasting  s    

zTestNct.test_broadcastingc                 C   s   t dd}t| d d S )Nr  r   rl   )r2   r  r   r1  r  r.   r.   r/   test_variance_gh_issue_2401  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 )Nr9  r.  r  )r   ncr  r  r  )r2   r  r   re   r   r   r5  r   ri  r.   r.   r/   test_nct_inf_moments  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 )Nrv   r8   g@ @g*dn?r   r  rp   r4  gqI  @gL) ?rw  )r2   r  r  r   )r   Znct_mean_df_1000Znct_stats_df_1000Zexpected_stats_df_1000Znct_meanZ	nct_statsr  r.   r.   r/   test_nct_stats_large_df_values  s    
z&TestNct.test_nct_stats_large_df_valuesN)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dd Zd	S )
TestRecipInvGaussc                 C   s   t jdd}|dkstd S )Nr   r9  rm   )r2   recipinvgaussr:   rZ   r  r.   r.   r/   test_pdf_endpoint  s    z#TestRecipInvGauss.test_pdf_endpointc                 C   s"   t jdd}|tj kstd S )Nr   r9  )r2   r  r   re   r   rZ   r?  r.   r.   r/   test_logpdf_endpoint  s    z&TestRecipInvGauss.test_logpdf_endpointc                 C   s$   t jdd}d}t||dd d S )Nr1  rh   g9V9s;r  rp   )r2   r  rD   r   r   r   r]   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   rh   glH<+<)r2   r  r  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    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestRicec                 C   s   dddg}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  ddddg}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 )Nr;  r   r   rm   r-   r_   rh   r9  r   r  r  rV  rO  )r   re   r5  r2   r  r:   r   r   rD   r)  r  r   )r   rA   r  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   ru   )r-   r   )r2   r  r   r   r   r   r;  r.   r.   r/   test_rice_rvs  s    zTestRice.test_rice_rvsc                 C   s   t jtdddtddd}ddddddd	d
dddddddg}t|| tddd}t jj|ddd}dddddddddg	}t|| tj jd tdd!d}d"d#d$d%d&d'd(d)d*d+d,d-d.d/g}t|| d S )0Nra      g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?r_   r   g     @_@r  r  g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@rh      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  rD   re   r   r   r  r1   )r   rD   Zcdf_expZprobabilitiesr  Zppf_expr.   r.   r/   test_rice_gh9836  sT    "        
    
       zTestRice.test_rice_gh9836N)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dS )
TestErlangc                 C   s   t jd d S r   r   r   r.   r.   r/   r   &  s    zTestErlang.setup_methodc              	   C   sv   t  d t dt tttjjddddd ddd	d
g}tjj|dd}tj	j|dd}t
||dd W 5 Q R X d S )Nr   r(  r   r   r  r  rh   r   rl   r-  r  r  rp   )r   r   r   r  r  r2   erlangr   r   r  r   )r   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 )Nrh   r   rn  r  )r   r2   r  r:   r  r   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   s   t jd d S )Nr  r   r   r.   r.   r/   r   B  s    zTestRayleigh.setup_methodc                 C   s   t jd}t|d d S )Nr   g)Zx)r2   r   r   r   r   r*  r.   r.   r/   r
  F  s    zTestRayleigh.test_logpdfc                 C   s   t jd}t|d d S )Nr   i)r2   r   r  r   r  r.   r.   r/   r  J  s    zTestRayleigh.test_logsfzrvs_loc,rvs_scale)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$  rA  c                 S   s"   t | | d dt|   d S )Nr8   rh   )re   r   r   )r   r   r.   r.   r/   r  S  s    z(TestRayleigh.test_fit.<locals>.scale_mlerJ  r9  rK  )r2   r   r   r   r   )r   rk  rl  r   r  Zscale_expectr6   r7   r.   r.   r/   rI  N  s    



zTestRayleigh.test_fitr  rj   g̡=E?g@1d?c                 C   sH   t jjd||d}|t j|fg}t j|i d }tt j|| d S )Nr$  rA  r   )r2   r   r   rF  rL  r   )r   rk  rl  r   r   r   r.   r.   r/    test_fit_comparison_super_methodg  s    z-TestRayleigh.test_fit_comparison_super_methodc                 C   s   t tj d S rd   )r   r2   r   r   r.   r.   r/   r  t  s    zTestRayleigh.test_fit_warningsc           	      C   s   t jd}d\}}}tjj||||d}tj|\}}|t |k sLttjj||d\}}|t |k srt||ks~td S )Ni  )r   r  r  r0  rK  )	re   r   r   r2   r   r   r   r  rZ   )	r   r   r6   r7   r   r   Zloc_fitr7  Z	scale_fitr.   r.   r/   test_fit_gh17088w  s    
zTestRayleigh.test_fit_gh17088N)r   r   r   r   r
  r  r   rI  r  rI  r  r  r  r.   r.   r.   r/   r  A  s   


r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestExponWeibc                 C   sB   d}d}d}t j|||}t j|||}t||gddg d S )Nr_   r   g      Y@g:23W+g~`9k)r2   	exponweibr:   r   r   )r   rA   r,   r  r   r	  r.   r.   r/   test_pdf_logpdf  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  rn  r  r   rb   )re   r  r2   r  r:   weibull_minr   r   r   rA   r,   r  r   r]   r	  r.   r.   r/   test_a_is_1  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   ra   )re   r  r2   r  r:   r  r   r   r  r.   r.   r/   test_a_is_1_c_is_1  s    
z TestExponWeib.test_a_is_1_c_is_1N)r   r   r   r  r  r  r.   r.   r.   r/   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )TestFatigueLifec                 C   s    t jdd}t|ddd d S )NrD  rc  X9rx   rp   )r2   r   r  r   r  r.   r.   r/   r    s    zTestFatigueLife.test_sf_tailc                 C   s$   d}t j|d}t|ddd d S )Nr  rc  rD  rx   rp   )r2   r   r  r   )r   r   r  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                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestWeibullc                 C   s   t jdd}t|d d S r  )r2   r  r   r   r  r.   r.   r/   r
    s    zTestWeibull.test_logpdfc           
      C   sP  d}d}d}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|t	
d  t jj|||d}t|tt	
d  t jj|||d}t|td t jj|||d}	t|	d t jjdddd}t|td	 t jjdddd}	t|	d	 d
}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|td t jj|||d}t|d t jj|||d}t|t	
d  t jj|||d}	t|	tt	
d  t jjdddd}t|t	
d  t jjdddd}	t|	tt	
d  d S )Nr.  rl   r  r  r  r   r   r8   ro  r?  g&.gCe )r2   r  r:   r   re   r   r   r  rD   r   r  r)  r  r  Zweibull_max)
r   rA   r,   r-   r   r,  r  lcr@   r  r.   r.   r/   test_with_maxima_distrib  sH    


z$TestWeibull.test_with_maxima_distribc                 C   s   t jd}d\}}}t|||}|jd|d}tjj|ddd\}}}	tjj|ddd\}
}}||  krvdks|n t||
ksttjj|ddd	d
\}}}|dkstt|||}|jdd}t |t	|f}t
|| d S )Nl   > )r8   rd  rh   rb   r0  r.  r   rJ  r  r]  r^  r`  r  )re   r   r   r2   r  r   r   rZ   r  r2  r   )r   r   r  r6   r7   rI   r   c2rd  re  c3rg  rh  Zc4ri  rj  rk  r   r*  r.   r.   r/   test_fit_min"  s    
zTestWeibull.test_fit_minN)r   r   r   r
  r  r  r.   r.   r.   r/   r    s   Tr  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestTruncWeibullc                 C   s(   t jddgddd}t|ddg d S )Nr_   rl   g)\(?gףp=
?rm   )r2   truncweibull_minr:   r   r  r.   r.   r/   test_pdf_bounds<  s    z TestTruncWeibull.test_pdf_boundsc                 C   s>   t jdddtj}t|d t jdddd}t|d d S )Nrl   r   rm   r-  g~?)r2   r  r   re   r   r   r   r  r.   r.   r/   r
  A  s    
zTestTruncWeibull.test_logpdfc                 C   s(   t jddgddd}t|ddg d S )Nrm   r   rl   r_   )r2   r  r  r   r  r.   r.   r/   test_ppf_boundsI  s    z TestTruncWeibull.test_ppf_boundsc                 C   sD   dddddddg}t j|ddd	}t j|ddd	}t|| d S 
Nrm   r_   r   rh   r   r9  r   rl   r  )r2   r  r  rD   r   r   r  rA   Zq_outr.   r.   r/   test_cdf_to_ppfN  s    z TestTruncWeibull.test_cdf_to_ppfc                 C   sD   dddddddg}t j|ddd	}t j|ddd	}t|| d S r  )r2   r  r  r  r   r  r.   r.   r/   test_sf_to_isfT  s    zTestTruncWeibull.test_sf_to_isfc                    s  dd d fddt jd }t|d t jd }tfdd	 \}}t|| t jd
 }tfdd	 \}}t|| t jd }tfdd	 \}}t|| t jd }	tfdd	 \}
}t|	|
 d S )Nrl   r   r  c                    s   | | t j|   S rd   )r2   r  r:   )rA   r   rA  r.   r/   xnpdf_  s    z)TestTruncWeibull.test_munp.<locals>.xnpdfr   r   c                    s
    | dS r   r.   r   r  r.   r/   rT   f  rU   z,TestTruncWeibull.test_munp.<locals>.<lambda>r8   c                    s
    | dS rH  r.   r   r  r.   r/   rT   j  rU   r   c                    s
    | dS r  r.   r   r  r.   r/   rT   n  rU   r  c                    s
    | dS )Nr  r.   r   r  r.   r/   rT   r  rU   )r2   r  rY  r   r   r   )r   r  ra  Zm1_expectedr7  r  Zm2_expectedZm3Zm3_expectedr  Zm4_expectedr.   )r,   r-   r  r  r/   	test_munpZ  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  rl   r   rh   r  )re   rc  r  r   r2   r  rD   r   r)  r  r  r  r  )r   r,   r-   r  Zx_medrD   r  r  r  r  r  r.   r.   r/   test_reference_valuesu  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.  rl   rm   r  r  r   r8   r   ro  )re   r   r2   r  r:   r  r   r   rD   r)  r  r  r   )r   rA   r  r,   r-   r7   r   Zp_truncr,  Zlp_truncrD   Z	cdf_truncr  Zlc_truncr@   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)rc  r         ?rb   )	re   r   r2   r  r:   rD   r  testingr   )
r   r  r,   r-   rA   r  r  r  r  r  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  :  s   )r  c                   @   s   e Zd Zdd Zdd ZdS )	TestRdistc                 C   s2   t j}dddg}t|||dd|dd d S )Nr  rh   r  g     @ru   r   )r2   rdistr   rD   r  )r   ri  r1  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^  ra   g@rh   r8   r   )re   r   r   r2   rS  r:   r  )r   rA   r  r.   r.   r/   test_rdist_beta  s
    &zTestRdist.test_rdist_betaN)r   r   r   r  r  r.   r.   r.   r/   r    s   r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestTrapezoidc                 C   sd   ddddg}|D ]N}d|dg}t tj|||tj|| t tj|||tj|| qd S )Nr   r.  rh   r   )r   r2   r   r:   triangrD   )r   modesmoderA   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   ra   )re   r   r   r2   r   r:   r  rD   r  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   r8   r   rh   r  r  r;  r   r_   g      ?r  r9  g      ?r  g      ?)r   r2   r   r:   rD   r   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)r  rn  r8   r   r8   c                    sT   | d  | d     | d   | d        | d  | d  S )Nr8   r   r.   )r   r,   r-   r  dr   r.   r/   rY    s     z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   rh   r  r   r   r  r(  rn  r   )re   r  r   r2   r   r  r1  rN   )	r   r  r  r6   r7   rY  r  r1  rN   r.   r  r/   test_moments_and_entropy  s,    0>   z&TestTrapezoid.test_moments_and_entropyc                 C   sf  t dddg}t ddgd d d f }t dddg}tj|||}t |||\}}}t j|j|jd	}t 	|j}	t
|	| | | D ] \}
}}}tj|||||
< qt|||jd
d t tjj||dd}t ||\}}t |jdf}t 	|j}	t
|	| | D ]"\}
}}tjj||dd||
< q&t||j|jd
d d S )Nr_   r;  r.  rh   r9  rC  r   r9  r&  ro   r{   r  r  r  )re   r   r2   r   r:   Zbroadcast_arraysemptyr   r   r   r   ravelr   r/  r   r  r  )r   r  r  rA   r  ccddr  r   indrZ  rD  c1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  )re   r   r   r2   rO   r:   r  r  r.   r.   r/   
test_trapz/  s    zTestTrapezoid.test_trapzN)	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S )
TestTriangc              	   C   s  t jdd ttjddd ttjddd ttjddd ttjddd ttjddd ttjddd	 ttjddd ttjddd
 ttjddd ttjddd ttjddd ttjddd W 5 Q R X d S )Nraiser0  r   rl   rh   r   r   rm   r8   r   r   )re   r  r   r2   r  r:   rD   r   r.   r.   r/   test_edge_cases6  s    zTestTriang.test_edge_casesN)r   r   r   r  r.   r.   r.   r/   r  5  s   r  c                   @   s   e Zd Zdd Zdd ZdS )
TestMielkec                 C   s\   d\}}t t||dtj t t|ddtj ttt|dd d S )N)g rh@gv?r   r   r!  )r   r2   mielkerY  re   r   r   r5  )r   r>   r@   r.   r.   r/   r  J  s    zTestMielke.test_momentsc                 C   s@   t ddd}d\}}ttj|||| tj||| d S )Nrj   rb   r   )g@gHzG@)re   r   r   r2   burrr:   r  )r   rA   r>   r@   r.   r.   r/   test_burr_equivalenceQ  s    z TestMielke.test_burr_equivalenceN)r   r   r   r  r  r.   r.   r.   r/   r  I  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBurrc              	   C   s   t jddgt jddgt jddgt jddgt jddgt jddgt jd	d
gg}dd |D }dd |D }t|| dd |D }dd |D }t|| d S )N)r   r   )rh   r8   )r   r   )r8   rh   r  rh   r   )r   r8   rl   c                 S   s$   g | ]\}}}|j |jf| qS r.   r  r  r.   r.   r/   rJ   d  s     z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r.   r.   r  r.   r.   r/   rJ   e  s     c                 S   s$   g | ]\}}}|j |jf| qS r.   )r   r,   r  r.   r.   r/   rJ   h  s     c                 S   s   g | ]\}}}t |qS r.   )re   r  r  r.   r.   r/   rJ   i  s     )r2   Zfiskr  burr12r   )r   r   r  r  r.   r.   r/   test_endpoints_7491X  s    






	
zTestBurr.test_endpoints_7491c                 C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)r   r   )g4U?g&MI?)r2   r  r   )r   r  r  r  varianceZmean_hcZvariance_hcr.   r.   r/   test_burr_stats_9544l  s
    
zTestBurr.test_burr_stats_9544c           	      C   sZ  d\}}t ||  \}}tt| tt| d\}}t ||  \}}tt| tt| d\}}t jtddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d	\}}t jddddg||\}}}}tt| tt| tt| tt| d S )
N)rh   r   )r.  r   r   r8   r   r  )rc  r   )rd  r   )rg  r   )r2   r  r   re   r  r5  _munpr   )	r   r  r  r  r  e1e2Ze3Ze4r.   r.   r/   test_burr_nan_mean_var_9544w  sL    &    z$TestBurr.test_burr_nan_mean_var_9544N)r   r   r   r  r  r  r.   r.   r.   r/   r  W  s   r  c                   @   sH  e Zd Zddddddddd	d
ddddddddddddddgZdddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0gZd1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHgZeeeefZdIdJdKgZ	dLdMdNdOdPej
gZdQdRdSdOgZeeee	eeeZdTdUdLdMej
dVfdWdMej
dXfdLdNej
dYfgZdZd[ Zejjd\d] ZejeZd^Zeejeed_Ze !eZ"W 5 Q R X ej#d`e"da dbdc Z$ej#d`e"dd dedf Z%ejjej&dgej#d`e"dh didj Z'dkdl Z(ejj)dmdn Z*ej#doedpdq Z+ejjej&dgdrds Z,ejj)dtdu Z-dvdw Z.dxdy Z/dzd{ Z0d|S )}TestStudentizedRangeg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^  r  r   r   ra   ri  x   r8   ru  r  )r_   r   i)#  gupm1f?)r   ra   rv   g?<-=A?gv"?r  gd暕?ga-A?c                 C   s<   | j D ]0\}}|\}}}tj|||}t||dd qd S )Nr~  rp   )r   r2   studentized_rangerD   r   )r   pvkr  Z
p_expectedr  r>   Zres_pr.   r.   r/   test_cdf_against_tables  s    
z,TestStudentizedRange.test_cdf_against_tablesc                 C   s<   | j D ]0\}}|\}}}tj|||}t||dd qd S )NMb@?rp   )r   r2   r  r  r   )r   r  Z
q_expectedr   r  r>   Zres_qr.   r.   r/   test_ppf_against_tables  s    
z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonr4  case_resultZcdf_datac                 C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S 	Nsrc_case	mp_resultr  r>   r  expected_atolexpected_rtolrO  )r2   r  rD   r   r   r  r	  r
  Zqkvr   r.   r.   r/   test_cdf_against_mp  s    z(TestStudentizedRange.test_cdf_against_mpZpdf_datac                 C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S r  )r2   r  r:   r   r  r.   r.   r/   test_pdf_against_mp  s    z(TestStudentizedRange.test_pdf_against_mpz+intermittent RuntimeWarning: invalid value.Zmoment_datac              	   C   sf   |d }|d }|d |d |d f}t jdd tjj| }W 5 Q R X t|||d |d	 d
 d S )Nr	  r
  r  r>   r  rw  rx  r  r  rO  )re   r  r2   r  rY  r   )r   r  r	  r
  Zmkvr   r.   r.   r/   test_moment_against_mp  s    z+TestStudentizedRange.test_moment_against_mpc                 C   s4   d\}}t tjjdtj||fd}t|d d d S )Nr   ra   r   rB  r   )r   r2   r  r:   re   r   r   )r   r>   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   ra   rj   )stepr   r~  rp   )re   r   r2   r  rD   r:   r   r   )r   r>   r  rA   Zy_cdfZ	y_pdf_rawZy_pdf_cumulativer.   r.   r/   test_pdf_against_cdf  s    
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc              	   C   sB   |\}}}}t jdd tj|||}W 5 Q R X t|| d S )Nrw  rx  )re   r  r2   r  rD   r   )r   r  r  r>   r  Zr_resr   r.   r.   r/   test_cdf_against_r  s    z'TestStudentizedRange.test_cdf_against_rc              	   C   sx   t jdd" tjddgddgddg}W 5 Q R X t|jd	 tjt	d
d  tjdddgdddg W 5 Q R X d S )Nrw  rx  r   r8   r  ru   ra   r  rn  z...could not be broadcast...r   r   )
re   r  r2   r  r  r   r   r   r   r   rT  r.   r.   r/   test_moment_vectorization$  s
    &z.TestStudentizedRange.test_moment_vectorizationc              
   C   sd   t  B}tjdd* |t tjdddg\}}}}W 5 Q R X W 5 Q R X ttj	|| d S )Nrw  rx  r   r8   r   )
r   re   r  rX   r   r2   r  rF  r   Z	_argcheck)r   r"  r>   r   r7  r.   r.   r/   test_fitstart_valid4  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   ra   韆 r~  rO  )r2   r  r:   re   r   r   rD   )r   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   ra   r4  r  i rW  rO  )r2   r  r:   r  rZ   r   rD   )r   r   r  Z
res_sanityr.   r.   r/   test_df_cutoffG  s     
 
 z#TestStudentizedRange.test_df_cutoffc                 C   s8   d\}}}t j|||}t|ddd |dks4td S )N)gaRA@r   iS  r   r  r{   )r2   r  r  r   rZ   )r   r  r>   r  r   r.   r.   r/   test_clipping\  s    
z"TestStudentizedRange.test_clippingN)1r   r   r   Zq05Zq01Zq001re   r  qsZpsr   vskslistr   r$   r   Zr_datar  r   rI  rJ  r  ospathdirnamer  Zpath_prefixrelative_pathopenr  filejsonr  Zpregenerated_datar  r  r  Zxfail_on_32bitr  r  r8  r  r  r  r  r  r  r  r.   r.   r.   r/   r     s                                                










r   c                   C   sR   t tjddddd t tjddddd t tjjdd	d
ddddd d S )Ng2g?ra   test_540_567)r   r  g2gk?g;B.?gͣh?gHŎ*?r5   g.y?)r   r2   r  rD   r.   r.   r.   r/   r)  f  s       r)  c                   C   s   t jjdd d S )Nr  r0  )r2   Z_continuous_distnsZ	gamma_genr.   r.   r.   r/   test_regression_ticket_1316r  s    r+  c                   C   s   t tjdddd d S )Nrm   r8   rh   r  r  r.   r.   r.   r/   test_regression_ticket_1326x  s    r,  c               	   C   s  t ddd} t jdd dddt dgdgdggfD ]6}tj| |}t|dk  tt 	|   q:t dgdgd	gg}tj| |}W 5 Q R X tt 	|   t|d
 dk  t|d dk  t|d dk
  t|d dk
  d S )N      r   r`   rw  rk  rm   r  r  rl   r   r   r8   )re   r   r  r   r2   r'   r:   r   r   r  any)rA   r  r   r.   r.   r/   test_regression_tukey_lambda}  s    "r0  zdocstrings strippedr  c                   C   s$   t dtjjk t dtjjk d S )Nzpdf(x, mu, loc=0, scale=1)zpmf(x,)r   r2   r  r~  r.   r.   r.   r/   test_regression_ticket_1421  s    r1  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 5 Q R X d S )Nrw  rx  r   rh   )re   r  r   r  r2   re  r)  r   rD   r  r  r:   r   r  r  r
  r   r&  r.   r.   r.   r/    test_nan_arguments_gh_issue_1362  s"    r2  c               	   C   sX  t jd t dddg} tjj| d | d | d dd	}t jd
d t tjj|dd}W 5 Q R X 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   rm   rh   r   r   r8   rb   r   rw  r.  rJ  r   )r   r6   )r   r6   rK  r9  rl   r  )re   r   r   r   r2   r   r   r  r   r   r  rc  r  )truerA   r6  r6   r   r]   r.   r.   r/   test_frozen_fit_ticket_1536  s&       r4  c                  C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 rb   r   )g
ףp=
?gʡE?r   r   )re   r   r   r2   rg  r   r   r   )r   r6  r]   r.   r.   r/   test_regression_ticket_1530  s
    r5  c                  C   sV   t jd t jd} dD ]4}tj| | \}}t||dd t|ddd qd S )Nr   rd  )r  g   6Ar   r{   r9  )re   r   r   r)  r2   rg  r   r   )rA   offsetr6   r7   r.   r.   r/   test_gh_pr_4806  s    r7  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} dd
ddg}t| |dd t jj ddd} ddddg}t| |dd d S )Nr   r  r  r8   r   r=  ra   r   g
ףp=
	@gz5v?gRTgQ?gNg @gJFٻ)r2   r'   re   r<   r   )r  r]   r.   r.   r/   "test_tukeylambda_stats_ticket_1545  s    r8  c                   C   s   t ttjdd d S )Nr/  r  )r   re   r5  r2   r  r&  r.   r.   r.   r/   test_poisson_logpmf_ticket_1436  s    r9  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   )rh   r  rm   r  )rl   )gUUUUUU?ry  g^cQg333333r  r  N)r2   r  r   )Zcasesr,   Z
exact_mvskr  r.   r.   r/   test_powerlaw_stats  s    r:  c                  C   s   t jdd} t| d d S )Nr   r   rm   )r2   r  r   r   r   r.   r.   r/   test_powerlaw_edge  s    r<  c                  C   sl   t jdd} t| d t jddddg} t| tjddg t jddddg} t| tjdtj g d S )Nr   r   rm   r   r   r.  )r2   r  r   r   r:   re   r   r;  r.   r.   r/   test_exponpow_edge   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?  c                  C   s@   t jddd} | dkstt jddd}|tj ks<td S )Nr   r   rn  rm   )r2   r>  r:   rZ   r   re   r   )r   r	  r.   r.   r/   !test_gengamma_endpoint_with_neg_c2  s    r@  c                  C   s8   t jddd} t| d t jddd} t| d d S )Nr  r  r   g>ra   gqq?)r2   r>  r  r   r;  r.   r.   r/   test_gengamma_munp9  s    
rA  c               2   C   s   t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g0} t jd1d2< t *}|td3 |td4 tj	|  W 5 Q R X W 5 Q R X d S )5Ng>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*˿rw  rx  z:The maximum number of subdivisions .50. has been achieved.z-floating point number truncated to an integer)
re   r   r  r   rX   r   r  r2   r  r   )r  r"  r.   r.   r/   test_ksone_fit_freezeB  sp    
                                  rB  c                  C   s   t ttddd } dddddd	d
dddddddddddddddddddddd d!g}tt | |d"d# tt | d$ j|d"d# tj| d% d& j	}t 
tj| tj|  }t||d&d# d S )'Nr   r  r  gDB.g8_$g%`OAgjhwHRgWMB@v`g7VY}igۦx\Arg	xg#g/dg3$gegd)gNq{3gيGǓgr4g37'
gfFg?dJgضg2,
gm%gӅJgz;pgɿ{gk2gij<%giVSͶgBR4g
Q/MrV  r{   y        +=y        |=r  )re   r  r!  r\  r   r2   r  r)  realimagr   r   )rA   r]   ZderivZderiv_expectedr.   r.   r/   test_norm_logcdfZ  sD                       	rE  c                  C   sd   t ddddddg} t ddd	d
ddg}tj| }t||dd tj|}t|| dd d S )Nrv   r   rh   r_   rj   r  g~V1?g|N?gba"?g܄4ťY?rX  g$%+Ir  rp   rx   )re   r   r2   r   rD   r   r  )rA   r]   r*  r  r.   r.   r/   test_levy_cdf_ppfs  s    rF  c                  C   sB   t ddddg} t ddddg}tj| }t||d	d
 d S )N  4&kCg(,* EgMraB3Ggd~QJgep[>g}XEQ=gѭEG<g?_%~:r  rp   )re   r   r2   r   r  r   rA   r]   r*  r.   r.   r/   test_levy_sf  s    rI  zp, expected_isf)r  gj1e2H)rV  g6C)g      ?gnE@)r  g!^x1?)r  gZ?)g   ?g:}!Nu?c                 C   s   t j| }t||dd d S )Nr  r{   )r2   r   r  r   )r   Zexpected_isfrA   r.   r.   r/   test_levy_isf  s    rJ  c                  C   sB   t ddddg} t ddddg}tj| }t||d	d
 d S )NgMbg{Gzg{Gztg~jtXg#]<gOul2;gޢا6g̅7=!rx   rp   )re   r   r2   r   r  r   rH  r.   r.   r/   test_levy_l_sf  s    rK  c                  C   s:   t dddg} tj| }tj|}t|| dd d S )Ng [n<r   r^  gvIh%,=rp   )re   r   r2   r   r  r  r   )r   rA   r  r.   r.   r/   test_levy_l_isf  s    rL  c                   C   s|   t tjddddd t tjddddd t tjddddd t tjd	d
d
dd t tjdd
d
dd d S )Nr  i i  i  )g      c@g     h@g=
ףp=?Gz?)g      c@g     h@{Gz?rb   ru  r   )r   r2   r  r  r  r.   r.   r.   r/   test_hypergeom_interval_1802  s    rO  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   r_   r   ru   numr8   r   r   rp  r  rh   r5   rl   r  r  r   r(  r  )re   r   r   r   r  r   r2   r  r:   r   rD   r  rN   r   r  r   r  r  rD  r   r.   r.   r/   test_distribution_too_many_args  s8    rR  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 )	Nri  r|  r;  r8   gYZ@r  r   r   )r2   ncx2rD   re   r   Z_cdfvecr   rv  r.   r.   r/   test_ncx2_tails_ticket_955  s    rT  c               	   C   s   t  H t dt ttjdt	dddd tj
dt	ddd} W 5 Q R X tt|   t  > t dt ttjddd	d ttj
ddd	d
 W 5 Q R X d S )Nr   r   iT  i^  r8   r   r  r   r   gsq6)r   r   r   r  r   r2   rS  r:   re   r   r   r   r  r   r   )Zlogvalr.   r.   r/   test_ncx2_tails_pdf  s    
"
rU  zmethod, expectedgu%>g	;Q=g<x>gRz\R>gʎK$/gԆX1gfHu@ge:@c                 C   s,   t tj| dddgdd}t||dd d S )Nr_   r   r  ra   )r  r   ro   r{   )r   r2   rS  r   )r_  r]   r"  r.   r.   r/   test_ncx2_zero_nc  s    rV  c                  C   s4   t jjdddd} t jjddd}t| |dd d S )Nra   r   r   )r   r  rz   )r   rz   ro   r{   )r2   rS  r   r  r   )r"  r]   r.   r.   r/   test_ncx2_zero_nc_rvs'  s    rW  c                  C   s,   dt dd } ttjjdd| dd d S )Nra   ru   r  r   r   r  r   )re   r   r   r2   rS  rD   )r  r.   r.   r/   test_ncx2_gh12731/  s    rY  c                  C   sn   t ddddddddd	d
dddg} d\}}tjj| ||d}dddddddddddddg}t||dd d S )Ngю]	@gj%@gb	y/7@g H@gIZ@gXl@g'/2?8@gݰmА@gU@gy]`'@g@g*\@g48c@)ri  gh ?8@rX  r   g?gy[qD?rm   r!  r{   )re   r   r2   rS  r  r   )rA   nur  r  Zsf_expectedr.   r.   r/   test_ncx2_gh86656  s6    
      
      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  r  r  rP  r8   r  r~  r{   )	re   r   r2   rS  r  r:   r  rc  r   )r   r  rA   Zncx2_pdfZgauss_approxr.   r.   r/   test_ncx2_gh11777R  s     &r\  c                  C   s"   t jddd} t| dd d S )Nr   r   r  )r2   Zfoldnormr   rD   r8  r.   r.   r/   test_foldnorm_zeroa  s    r]  c                  C   s   t j dddgdd} t j ddgdd}tdd |D }t||  t j ddd	g} t j ddg}td
d |D }t||  d S )Nrm   rh   r   r   c                 s   s   | ]}t jt j|f V  qd S rd   re   r   r   r  r.   r.   r/   rG  l  s     z-test_stats_shapes_argcheck.<locals>.<genexpr>r8   r.  rn  c                 s   s   | ]}t j|t jf V  qd S rd   r^  r  r.   r.   r/   rG  r  s     )r2   r   tupler   r   )Zmv3Zmv2Zmv2_augmentedr.   r.   r/   test_stats_shapes_argcheckg  s    
r`  c                   @   s   e Zd Zdd ZdS )
_distr_genc                 C   s   dS Nrd  r.   r   rA   r,   r.   r.   r/   _pdf}  s    z_distr_gen._pdfNr   r   r   rd  r.   r.   r.   r/   ra  |  s   ra  c                   @   s   e Zd Zdd ZdS )_distr2_genc                 C   s   d| | S rb  r.   rc  r.   r.   r/   _cdf  s    z_distr2_gen._cdfN)r   r   r   rg  r.   r.   r.   r/   rf    s   rf  c                   @   s   e Zd Zdd Zdd ZdS )_distr3_genc                 C   s   || S rd   r.   r   rA   r,   r-   r.   r.   r/   rd    s    z_distr3_gen._pdfc                 C   s   d| | S rb  r.   rc  r.   r.   r/   rg    s    z_distr3_gen._cdfNr   r   r   rd  rg  r.   r.   r.   r/   rh    s   rh  c                   @   s   e Zd Zdd Zdd ZdS )_distr6_genc                 C   s   || | S rd   r.   ri  r.   r.   r/   rd    s    z_distr6_gen._pdfc                 C   s   d| | S rb  r.   ri  r.   r.   r/   rg    s    z_distr6_gen._cdfNrj  r.   r.   r.   r/   rk    s   rk  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,   r0  r   r   r  rd  ra  r   r:   r   dummy_distrr.   r.   r/   test_correct_shapes  s    z1TestSubclassingExplicitShapes.test_correct_shapesc                 C   s(   t ddd}tt|jdftdd d S )Nrm  Arn  r   r  )ra  r  r   r:   r   rp  r.   r.   r/   test_wrong_shapes_1  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_1c                 C   s0   t ddd}tdddd}tt|jdf| d S )Nrm  za, b, crn  r   r8   r   rA  )ra  r   r  r   r:   )r   rq  r   r.   r.   r/   test_wrong_shapes_2  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_2c                 C   s   t ddd}tttf| d S )Nrm  rd  rn  )r   r  r   ra  r   r   r.   r.   r/   test_shapes_string  s    z0TestSubclassingExplicitShapes.test_shapes_stringc                 C   s   t ddd}tttf| d S )Nrm  z(!)rn  r   r  SyntaxErrorra  rv  r.   r.   r/   test_shapes_identifiers_1  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c                 C   s   t ddd}tttf| d S )Nrm  Z4chanrn  rx  rv  r.   r.   r/   test_shapes_identifiers_2  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c                 C   s   t ddd}tttf| d S )Nrm  zm(fti)rn  rx  rv  r.   r.   r/   test_shapes_identifiers_3  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c                 C   s   t ddd}tttf| d S )Nrm  za=2rn  rx  rv  r.   r.   r/   "test_shapes_identifiers_nodefaults  s    z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc                 C   s   t ddd}tttf| d S )Nrm  z*argsrn  rx  rv  r.   r.   r/   test_shapes_args  s    z.TestSubclassingExplicitShapes.test_shapes_argsc                 C   s   t ddd}tttf| d S )Nrm  z**kwargsrn  rx  rv  r.   r.   r/   test_shapes_kwargs  s    z0TestSubclassingExplicitShapes.test_shapes_kwargsc                 C   s   t ddd}tttf| d S )Nrm  za, b, c, lambdarn  rx  rv  r.   r.   r/   test_shapes_keywords  s    z2TestSubclassingExplicitShapes.test_shapes_keywordsc                 C   s@   G dd dt j}|dd}t|jdddt jdd  d S )Nc                   @   s   e Zd Zdd ZdS )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc                 S   s   t j|| S rd   r2   r  rd  rc  r.   r.   r/   rd    s    zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   	_dist_gen  s   r  r,   r   rh   r8   r  r2   rL   r   r:   r  r   r  rI   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tddd d S )	Nc                   @   s   e Zd Zdd ZdS )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc                 S   s   t j|| S rd   r  rc  r.   r.   r/   rd    s    zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r    s   r  r  r  rh   r   r8   rv  )r2   rL   r  r   r:   r   r  r.   r.   r/   "test_shapes_signature_inconsistent  s    
z@TestSubclassingExplicitShapes.test_shapes_signature_inconsistentc                 C   sv   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tdd d S )	Nc                   @   s   e Zd Zdd ZdS )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc                 W   s   |d }t j|| S Nr   r  )r   rA   r   extra_kwargr.   r.   r/   rd    s    zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r    s   r  r  r  rh   !   r  )Zxxx)r2   rL   r   r:   r  r  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                   @   s   e Zd Zdd ZdS )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc                 W   s   |d }t j|| | S r  r  )r   rA   r6  r   r  r.   r.   r/   rd    s    zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r    s   r  zoffset, extra_kwargr  rh   o   r  )r6  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                   @   s   e Zd Zdd ZdS )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc                 _   s   | dd}tj|| S )Nr  r   )popr2   r  rd  )r   rA   r   kwargsr  r.   r.   r/   rd    s    zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfNre  r.   r.   r.   r/   ra    s   ra  r  r  r   r   r  r  )r   ra  rI   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                   @   s   e Zd Zdd ZdS )zDTestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_genc                 S   s   t j|S rd   )r2   r  r:   r  r.   r.   r/   rd  
  s    zITestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r  	  s   r   r  rh   r  r  r.   r.   r/   shapes_empty_string  s    
z1TestSubclassingExplicitShapes.shapes_empty_stringN)r   r   r   rr  rt  ru  rw  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r.   r.   r.   r/   rl    s"   		rl  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 )Nrm  r*  r   r  rd  ro  rp  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 )Nrm  r*  r   r  )rf  r   r:   rp  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 )Nrm  r*  r   r,   zlogpdf\(x, a, loc=0, scale=1\))	ra  r   numargsr   refindallr~  r   r   r   rq  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 )Nrm  r*  r8   r  z!logpdf\(x, a, b, loc=0, scale=1\)r   )	rk  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 )Nrm  r*  )r  r   rh  r   r.   r.   r/   0test_signature_inspection_2args_incorrect_shapes2  s    zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc                 C   s*   G dd dt j}tt|ftdd d S )Nc                   @   s   e Zd ZdddZdS )z>TestSubclassingNoShapes.test_defaults_raise.<locals>._dist_genrd  c                 S   s   dS rb  r.   rc  r.   r.   r/   rd  9  s    zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)rd  re  r.   r.   r.   r/   r  8  s   r  rm  r*  r2   rL   r  r   r   r   r  r.   r.   r/   test_defaults_raise6  s    z+TestSubclassingNoShapes.test_defaults_raisec                 C   s*   G dd dt j}tt|ftdd d S )Nc                   @   s   e Zd Zdd ZdS )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc                 W   s   dS rb  r.   )r   rA   r,   r   r.   r.   r/   rd  @  s    zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r  ?  s   r  rm  r*  r  r  r.   r.   r/   test_starargs_raise=  s    z+TestSubclassingNoShapes.test_starargs_raisec                 C   s*   G dd dt j}tt|ftdd d S )Nc                   @   s   e Zd Zdd ZdS )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc                 [   s   dS rb  r.   )r   rA   r,   r  r.   r.   r/   rd  G  s    zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfNre  r.   r.   r.   r/   r  F  s   r  rm  r*  r  r  r.   r.   r/   test_kwargs_raiseD  s    z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r  r  r   rI  r  DOCSTRINGS_STRIPPEDr  r  r  r  r  r  r.   r.   r.   r/   r    s   


	r  r  c                  C   sV   dddg} t jD ]@}tt |}t|t jt jfr| D ]}tt||j	d k q4qd S )Nz,\s*,z\(\s*,z^\s*:)
r2   rW   r   r   rK   rL   r   r  searchr~  )ZbadonesdistnamerI   regexr.   r.   r/   r?  L  s    


r?  c                   C   s4   t tjtjddd t tjtjddd d S )Nra   r  r   ru  r_   r   )r   r2   r  r  re   r   rS  rg  r.   r.   r.   r/   test_infinite_inputV  s    r  c                  C   s&   t jt jddd} t| d d S Ng0.++r   )r2   Zlomaxr  rD   r   r;  r.   r.   r/   test_lomax_accuracy[  s    r  c                  C   s&   t jt jddd} t| d d S r  )r2   Zgompertzr  rD   r   r;  r.   r.   r/   test_gompertz_accuracya  s    r  c                  C   s&   t jt jddd} t| d d S r  )r2   Z
truncexponr  rD   r   r;  r.   r.   r/   test_truncexpon_accuracyg  s    r  c                  C   s*   t jt jddd} t| ddd d S )Nr  r   rX  r   r   )r2   r   r  r  r   r;  r.   r.   r/   test_rayleigh_accuracym  s    r  c               	   C   st   t jdd^} t d tjdd tjdd tjdd tjt	j
 d t| }t|d W 5 Q R X dS )zregression test for gh-6219T)r  alwaysrh   r   rm   N)r   r   r   r2   r  rD   r:   r  r   re   r   r   r   )rF  Znumber_of_warnings_thrownr.   r.   r/    test_genextreme_give_no_warningss  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?r  r8   r   r  rp   r   r   r  ra   r  r   r  rN  r  )r2   r  rN   r   r   re   r  )Zeuler_gammar   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 )	Ng    חAg      g'b%4gQ@r  gؗҜ;r   g.l6?)r2   r  r  r   r  )rA   r@   rE  r.   r.   r/   test_genextreme_sf_isf  s    




r  c                  C   s"   d} t j| dd}t|d d S )Nr  r8   r   gH&8>)r2   r  r  r   )Zprobr  r.   r.   r/   test_burr12_ppf_small_arg  s    	r  c                  C   s  t ddddd } tjj| ddd}t d	d
ddddddddddddddddddg}t||dd tjj| ddd}t ddd d!d"d#d$d%d&d'd(d'd&d%d$d)d*d+d,d-g}t||dd tjj| ddd.dd/}t d0d1d2d3d4d5d6d7d8d9d:d;d:d9d8d7d6d5d4d3g}t||dd tjj| ddd}t d<d=d>d?dd@dAdBdCdDdEdFdGdHdIdJdKdLdMdNg}t||dd tjj| ddd}t dOdPdQdRdSd#dTdUdVdWdXdYdZd[d\d]d^d_d`dNg}t||dd tjj| ddd.dd/}t dad#dbdTdcdUdddVdedWdfdXdgdYdhdZdid[djd\g}t||dd dS )kz
    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.
    r-  r   r  Nrn  r   rl   )rS  r  gC,d	Ɣ?gH㸘?g5?gM"M#w?gɫs^?g @?gƴ?g@w?gɫs^?g|?q ?g C?gJó?g,BV\ۤ?g;?g#ek?g%ǓE?g(Ȍx?g>J>r  rp   r  g#{`?gdf?g Jq?gSS){?g'	w?guL?g T)?gcAJ?gGTn?gR1#?gA]P?gvӢ?gKq?gL?g
	N<!?gAw>rh   )rS  r  r6   r7   g=aO}?gI8?g#T?gaW)?gǓI?g
J?gE?d۳?gGTn?g8?gR1#?gkP?g(*T?gD
)?g:3P?g9?g?S[?gOqx?gD
)?g9?gɫs^?gK?gX?g3<֌?gM+?gyS
c?gI`s?g辜?g{i ?g^0?g?g#c?g%r?gc@v?ghtj}?g(˔^?gHK4U?gğ@ _?gy}D?gRr/?gN?gYjhG?ga0L?g4f?g<@?g@CH?g	ސF?g5+-#?g?g?q ?g}'v?g*V?gr/0+?g[8	?gΥ?gY?g#)a?g?̔?g]ؚ?g|c ?)re   r   r2   crystalballr:   r   r   rD   )rU  Z
calculatedr]   r.   r.   r/   test_crystalball_function  s                                                                           r  c                  C   s  t dddddg} t dddddg}t dddddg}tjd| |}t||dd t d	d
dddg}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
    rl   r   r  r-  rX  r   r  rp   gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@r8   g?Җ)r   gMg'#@r  g('UHru   N)re   r   r2   r  r  r   r   )rS  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    r  c                  C   sR   t dd} |  }d\}}}t|||}tt| ||}t||dd d S )Nr8   r   )ir   rQ  r  rp   )	r2   r  rN   re   r   r   r   r:   r   )cbr  r  r  r  rA   r  r.   r.   r/   test_crystalball_entropyG  s    
r  c                  C   st   ddd} t ddddd	d
ddddddddg}tjj|d| d\}}}t|ddd |dksbt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 )Nr!  )r   dispZxtolZftol)r#   )r   x0r   r  r.   r.   r/   	optimizeri  s    z&test_invweibull_fit.<locals>.optimizerr   r  r8   rc  r  r   r  r  ru   ru  ra   r   @   c   )r   r  g`?r  rp   g [@N)r.   r   )re   r   r2   r   r   r   rZ   )r  rA   r  r6   r7   r.   r.   r/   test_invweibull_fitR  s    
&r  zx, c, expected)r   r.  g7Ըh?)rw   r.  gz]r>)rw   g     "@goBڱ9)rG  r.  g$=cC;c                 C   s    t j| |}t||dd d S rn   )r2   r   r  r   )rA   r  r]   r3  r.   r.   r/   test_invweibull_sft  s    r  zp, c, expected)rh   rc  g9?)geK<ru   g@c                 C   s    t j| |}t||dd d S rn   )r2   r   r  r   )r   r  r]   r3  r.   r.   r/   test_invweibull_isf  s    r  z	df1,df2,xrA  r;  r   r-  r  r  r  rO  c                 C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   r  rp   rW  )r2   r  rD   rD  r   r:   )Zdf1Zdf2rA   r  Zexpected_cdfZcalculated_cdfrs   Zcalculated_pdfr.   r.   r/   test_ncf_edge_case  s    
r  c                  C   s"   t jddd} t| ddd d S )Nr8   r(  r  g     `E@r  rp   )r2   rD  r1  r   )r  r.   r.   r/   test_ncf_variance  s    r  c                  C   s.   t jdddd} d}t|tj| dd d S )Nri  r(  r  gffffff>@g&4I,)?)Zdecimals)r2   rD  rD   r   re   round)Z	scipy_valZ	check_valr.   r.   r/   test_ncf_cdf_spotcheck  s    r  r
  z(On some 32-bit the warning is not raisedc               	      sb   t ddd} d| d< d tt* tjj| f  } fdd| D }W 5 Q R X t|| d S )Nr   r   r  r  )r_   r8   ru   r   r   c                    s   g | ]}t jj|f  qS r.   )r2   rD  r  )rH   xiparr.   r/   rJ     s     z,test_ncf_ppf_issue_17026.<locals>.<listcomp>)	re   r   r   r  r  r2   rD  r  r   )rA   r  Zq0r.   r  r/   test_ncf_ppf_issue_17026  s    r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestHistogramc                 C   s   t jd t jddddddddddddddddddddddd	d	d
gd	d}t|| _tjjddddd}t j|dd}t|| _	d S )Nr   r   r8   r   r  ru   r(  r  ru  r  binsr   rc  r  {   r  r   )
re   r   r   	histogramr2   rM   templater  r   norm_template)r   r  r   Znorm_histogramr.   r.   r/   r     s&    "         zTestHistogram.setup_methodc                 C   s   t ddddddddd	d
ddddddddddg}t ddddddddddddddddddddg}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 )!Nrm   rh   r   r.  rl   rc  r  rd  r-  rg  r         @r  r        @r  r        !@rX        #@r   {Gz?Q?g{Gz?r;  rf  r  r8   ra   r5   r_   rp   )re   r   r  r   r  r:   r   r   r  r2   r  )r   r1  Z
pdf_valuesrA   r.   r.   r/   r     sP                          zTestHistogram.test_pdfc                 C   s  t ddddddddd	d
ddddddddddg}t dddddddddddddddd d!d"ddg}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 )+Nrm   rh   r   r.  rl   rc  r  rd  r-  rg  r   r  r  r  r  r  r  r  rX  r  rN  r   r  r  
ףp=
?Q?{Gz?r  r9  (\?RQ?=
ףp=?)\(?rM  r8   rn  rb   r  ra   r5   r_   rp   )re   r   r  r   r  rD   r  r   r  r2   r  )r   r1  Z
cdf_valuesrA   r.   r.   r/   r    sR                         " zTestHistogram.test_cdf_ppfc                 C   s   d}| j j|dd}tt|dk d tt|dkd| dd	 tt|d
kd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|d kd!| dd	 tt|d"kd#| dd	 tt|d$kd%| dd	 tt|d&kd| dd	 tt|d&kd| dd	 tt|d&kd d S )'Nr  r  r0  r   rm   rl   r   r;  rp   rc  r  r  r  r_   rd  r  r-  r  rg  r  r   r  r1  r  rh   r  r9  r  r  r  r  r  r  r  r  r  rM  rX  )r  r   r   re   r   r   )r   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   rc  r1  rp   )r\  r   r  r  r2   r  rY  )r   r   r.   r.   r/   r    s
     zTestHistogram.test_munpc                 C   s$   t | j tjjddddd d S )Nr   rc  r5   r1  rp   )r   r  rN   r2   r  r   r.   r.   r/   r     s    
 zTestHistogram.test_entropyN)	r   r   r   r   r   r  r   r  r   r.   r.   r.   r/   r    s   r  c               	   C   s   ddgdddg } }t j| |fdd}tj|ddgddg | dksRtt j| |fd	d}tj|ddgd
 | dkstd}tt	|d$ t | |f}| dkstW 5 Q R X t | dddgf}| dkstd S )Nr   r   r  F)r4  rh   r  r  Tg'^P?g     H@z(Bin widths are not constant. Assuming...r   r8   )
r2   rM   re   r  r   r:   r6  rZ   r	   r  )countsr  rI   r2  r.   r.   r/   test_histogram_non_uniform   s    r  c                   @   s.   e Zd Zdd Zejdddgdd ZdS )	TestLogUniformc                 C   s   t jd}tdd}|jd|d}t jd}tdd}|jd|d}t|| t jt 	|dd\}}d|
   kr|   krd	ksn tt t |d
 dkstd S )N   0o[ r  r   r  r0  ra   r  r  iL  rv   )re   r   r   r2   
loguniformr   Z
reciprocalr   r  log10r  r  rZ   r}   r6  )r   r   r  r   Zrv2r   r   r7  r.   r.   r/   
test_alias8  s    
,zTestLogUniform.test_aliasr_  Zmler]  c                 C   sn   t jd}tjjddd|d}tjj||d\}}}}|dksDttjj|d|d\}}}}|dksjtd S )	Nr  r_   r   rv   r0  ra  r8   r^  )re   r   r   r2   r  r   r   rZ   )r   r_  r   r   r,   r-   r6   r7   r.   r.   r/   test_fit_overrideI  s    z TestLogUniform.test_fit_overrideN)r   r   r   r  r   rI  r  r  r.   r.   r.   r/   r  7  s   r  c                   @   sT  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dddddgdd Z	ejddddddgdd  Z
ejd!d"d#d$d%d&d'd(d)gd*d+ Zejd,d-d.d/d0d1d2d3d4gd5d6 Zejd,d7d8d9d:d;d<d=d>gd?d@ Zejd,dAdBdCdDdEdFdGdHgdIdJ Zejd!dKdLdMdNdOdPdQdRgdSdT ZdUS )V	TestArgusc                 C   s2   t jjdddd}tt d | dd d S )Nr   r  E  r0  r  r   )r2   argusr   r   r  r  r.   r.   r/   test_argus_rvs_large_chiX  s    z"TestArgus.test_argus_rvs_large_chizchi, random_stater_   r  r(     rd     c                 C   s6   t jj|d|d}t |d|f\}}t|dk d S )Nr  r0  r  r1  r2   r  r   r4  r   )r   r  rz   rA   r7  r   r.   r.   r/   r   ]  s    zTestArgus.test_rvsr  rw  rW  c                 C   s6   t jj|ddd}t |dd \}}t|dk d S )Nr  ie r0  c                 S   s   dd| d  d  S )Nr   r8   r.  r.   r   r.   r.   r/   rT   m  rU   z.TestArgus.test_rvs_small_chi.<locals>.<lambda>r1  r  )r   r  r4  r7  r   r.   r.   r/   test_rvs_small_chig  s    zTestArgus.test_rvs_small_chizchi, expected_mean)r   g щi?)ra   g.憃?)r  g\paP?)<   g	?)r  g,6?c                 C   s"   t jj|dd}t||dd d S )Nr   r  rx   rp   )r2   r  r  r   )r   r  Zexpected_meanr  r.   r.   r/   r#  q  s    zTestArgus.test_meanzchi, expected_var, rtol)r   gLH'B?rx   )ra   go$?rj  )r  g
=>rV  )r  g2W>rV  )r  gb~P>rV  c                 C   s"   t jj|dd}t|||d d S )Nr   r  rp   )r2   r  r1  r   )r   r  Zexpected_varrq   r  r.   r.   r/   r  |  s    zTestArgus.test_varzchi, expected, rtol)r9  gwM?r  )rh   gj?r  )r_   gHEA`!?r  )rj   gcف>ro   )r  gF=r  )r~  g߹Q#B=r  )rW  g0ޟ<r  )rw  g*W%:ro   c                 C   s   t t|||d d S r  )r   r!   )r   r  r]   rq   r.   r.   r/   test_argus_phi_small_chi  s    
z"TestArgus.test_argus_phi_small_chizchi, expected)rh   )g-\/?g+p7c?g5Ϧ\?)r;  )g
f?gi{?ٸ?gZ@7?)r_   )gB	?g]?gR{?)rj   )glͅw?g,?g[Z=?)r  )gz,?g]?gѪ1?)r~  )g8<?gE-?gI?)rW  )g~7?g7B.?g9?)rw  )g;?g9B.?g}5?c                 C   s,   t dddg}ttj|||dd d S )Nr_   rh   r9  rx   rp   )re   r   r   r2   r  r:   r   r  r]   rA   r.   r.   r/   test_pdf_small_chi  s    zTestArgus.test_pdf_small_chi)rh   )gQ߹?e?grJ,?g򺗄?)r;  )gΎd?g?gh?)r_   )g|
o?gvb?g+@?)rj   )g̈́On?ge?gC|[3?)r  )g!?m?g{jiH?gu53?)r~  )g~m?g0-.?g3?)rW  )g~m?g7;B.?gŗ3?)rw  )g~m?g9B.?gŗ3?c                 C   s,   t dddg}ttj|||dd d S )Nr_   rh   r9  r  rp   )re   r   r   r2   r  r  r  r.   r.   r/   test_sf_small_chi  s    zTestArgus.test_sf_small_chi)rh   )g+&?gk?gμm/?)r;  )g?CL\f?g^N?g]AͭR?)r_   )ga>$?g;Lf?gaW?)rj   )gx?g 43n?gwY?)r  )go7🤎?g
+-oGn?gIQ9Y?)r~  )gT?gGn?g@̋Y?)rW  )gU?g{Gn?giG͋Y?)rw  )gDU?g {Gn?gH͋Y?c                 C   s,   t dddg}ttj|||dd d S )Nr_   rh   r9  r!  rp   )re   r   r   r2   r  rD   r  r.   r.   r/   test_cdf_small_chi  s    zTestArgus.test_cdf_small_chi)rh   )gQ)?g6{?r!  )gB`"۹?)g?g8%?rj  )r_   )g388?gV%?rx   )rj   )g*j?gRS%?rx   )r  )g!|?gZ%?rx   )r~  )gy[|?gG%?rx   )rW  )g"3|?gW%?rx   )rw  )g!3|?gW%?rx   c                 C   s"   t jj |dd}t|||d d S )Nr  r  rp   )r2   r  r   )r   r  r]   rq   r   r.   r.   r/   test_stats_small_chi  s    zTestArgus.test_stats_small_chiN)r   r   r   r  r   rI  r  r   r  r#  r  r  r  r  r  r  r.   r.   r.   r/   r  W  s   

	

	







r  c                	   @   s   e Zd Zdd Zdd Zejjddejddd	d
gejddddgejddddgdd Z	ejddddgejddddgdd Z
dS )TestNakagamic                 C   s$   d}d}t j||}t|d d S )Nrc  r|  gM+)r2   nakagamir   r   )r   rZ  rA   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 )Nrc  r   g"S+:rx   rp   )r2   r  r  r   r  )r   rZ  r  r  rD  r.   r.   r/   r+    s    zTestNakagami.test_sf_isfz+Fit of nakagami not reliable, see gh-10908.r  rZ  r  rc  r  r6   rk   ra   #   r7   r  ru   ri  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 )Nrb   9  r   rZ  r6   r7   rz   r;  rp   c                    s<   d|  d t d |   d|  |d  t  |   S )Nr  r   r8   re   r   rZ  r6   r7   )r3  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   r8   )re   r  r   r   r  r  r3  r.   r/   
dlogl_dloc	  s
    z)TestNakagami.test_fit.<locals>.dlogl_dlocc                    s2   d  |  | d|  |d  t | d   S )Nr  r8   r   r  r  r  r.   r/   dlogl_dscale  s     z+TestNakagami.test_fit.<locals>.dlogl_dscaler   r  r{   )r2   r  r   r   r   )
r   rZ  r6   r7   nu_estloc_est	scale_estr  r  r  r.   r  r/   rI    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 )	Nrh   rb   r  r  r  r8   r  rp   )	r2   r  r   r   re   r  rc  r  r   )r   r6   r7   rZ  r   r3  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   rI  r  r  rI  r  r.   r.   r.   r/   r    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestWrapCauchyc                 C   sr   t ddgddgg}t dgdgg}tj||}|jdksDtdd	 t ||fD }t|	 |d
d d S )NQ?r   rh   r   r   r-  r@  c                 S   s   g | ]\}}t j||qS r.   )r2   
wrapcauchyrD   )rH   rD  r  r.   r.   r/   rJ   4  s   z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>rx   rp   )
re   r   r2   r  rD   r   rZ   Znditerr   r  )r   r  rA   r   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  rh   r  rp   )r2   r  rD   re   r<   r   r  r.   r.   r/   test_cdf_center8  s    zTestWrapCauchy.test_cdf_centerc                 C   s   d}d}d}t j||g|}d| d|  }t|d t|t|d  tj  t|d dt|ttj|d   tj   d S )Nr   r-  r   r   r   r8   )r2   r  rD   r   re   Zarctantanr<   )r   rD  rE  r  r   Zcrr.   r.   r/   r   <  s    (zTestWrapCauchy.test_cdfN)r   r   r   r  r  r   r.   r.   r.   r/   r  *  s   r  c               	   C   s@   G dd dt j} | dd}ttdd |  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z/test_rvs_no_size_error.<locals>.rvs_no_size_genc                 S   s   dS r   r.   r   r.   r.   r/   _rvsI  s    z4test_rvs_no_size_error.<locals>.rvs_no_size_gen._rvsN)r   r   r   r  r.   r.   r.   r/   rvs_no_size_genH  s   r	  rvs_no_sizer*  z_rvs\(\) got (an|\d) unexpectedr   )r2   rL   r  r   r   )r	  r
  r.   r.   r/   test_rvs_no_size_errorF  s    
r  zdistname, argsc                 C   s   | t krtd|  d tt| }t|tjrt|dkrb|j| \}}t	|t
j t	|t
j d\}}|j|||f \}}t	|t
j t	|t
j n&|j| \}	}
t	|	t
j t	|
t
j d S )Nz6skipping test for the support method for distribution .r   r  )$skip_test_support_gh13294_regressionr   r.  r   r2   r   rL   r   supportr   re   r   )r  r   rI   a0b0r  r  a1b1r,   r-   r.   r.   r/   test_support_gh13294_regressionR  s    
r  c                  C   sh  t jddddgddddg\} }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st	|j|jkst	t jg g \}}tg tg  }}t|| t|| |j|jkst	|j|jkst	t jddddgdg\}}	tdtjg }
tdtjg }t||
 t|	| |j|
jksRt	|	j|jksdt	d S )Nr   r   rn  r  )
r2   r  r  re   r   r   r   r   r   rZ   )r  r  Zex_a0Zex_b0r  r  Zex_a1Zex_b1rc  rR  Zex_a2Zex_b2r.   r.   r/   ,test_support_broadcasting_gh13294_regressionm  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sjtd S )	Nrm   r   rl   r  r-  rX  rF   r  )r   r2   r  r1  re   r  r   rZ   r5   r.   r.   r/   *test_stats_broadcasting_gh14953_regression  s    &

r  r  )gn!	g:I"<)gQ	@gE?c                 C   s*   t tj| | t tj|  | d S rd   )r   r2   cosinerD   r  )rA   r]   r.   r.   r/   test_cosine_cdf_sf  s    r  zp, expected)rW  gkM6O)r  g0ӭ!	)g333333?g;'u(@c                 C   s*   t tj| | t tj| |  d S rd   )r   r2   r  r  r  )r   r]   r.   r.   r/   test_cosine_ppf_isf  s    r  c                  C   s0   t jtj tjg} t| tj tj g d S rd   )r2   r  r   re   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(tdd tD }dd tD }||ksPtd S )Nc                 S   s   h | ]\}}t |tr|qS r.   )r   rQ   rH   r0  r7  r.   r.   r/   	<setcomp>  s    
z*test_distr_params_lists.<locals>.<setcomp>c                 S   s   h | ]\}}|qS r.   r.   r  r.   r.   r/   r    s     c                 S   s   h | ]\}}|qS r.   r.   r  r.   r.   r/   r    s     c                 S   s   h | ]\}}|qS r.   r.   r  r.   r.   r/   r    s     )r   r   rZ   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(tt jdddks>td S )Nr   r>   r  r  )r[  r,   r  )r2   rS  Z_statsrY  rZ   r  r.   r.   r.   r/   test_moment_order_4  s    r  )N)r~  r   r  r  rf  pathlibr   r"  r(  r  Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r   r  r;   re   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  r  r  r  r0   r4   rC   rE   r^   rc   rf   ri   rI  r  rt   ry   r   r   r   r   r   r   r   r   r  r	  r  r  r$  r,  rK  rr  r  r  r  r  r  r  r  r  r'  r8  rR  rX  rb  r  r  r  r  r  r  r  r  r  objectr   r  r  r   r"  r#  r*  r,  r-  rK  rc  r<   rl  rR  rm  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r:  r=  rB  rC  r]  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r)  r+  r,  r0  r  r1  r2  r4  r5  r7  r8  r9  r:  r<  r=  r?  r@  rA  rB  rE  rF  rI  rJ  rK  rL  rO  rR  r  rT  rU  rV  rW  rY  r[  r\  r]  r`  rL   ra  rf  rh  rk  rl  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/   <module>   s  0


         
.	
H $d>*# h 5U() wM?* $ lP)+  


 !5		$hv-n*     M
 p i <=%EC,s ^K E	
&	
(

	x;	,G."


a yZ

