o
    5ήcK                    @   s  d Z ddlZddlZddlZddlZddlmZ ddlZddlZddl	Z	ddl
mZmZmZmZmZmZmZmZmZ 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l/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ej=j>dkZ?ej	dkoe	@ dkZAddgZBdddZCdd ZDdd ZEdd ZFdd  ZGd!d" ZHd#d$ ZId%d& ZJejKLd'g d(d)d* ZMd+d, ZNd-d. ZOd/d0 ZPejKLd1g d2d3d4 ZQG d5d6 d6ZRG d7d8 d8ZSG d9d: d:ZTG d;d< d<ZUG d=d> d>ZVG d?d@ d@ZWG dAdB dBZXG dCdD dDZYG dEdF dFZZG dGdH dHZ[G dIdJ dJZ\G dKdL dLZ]G dMdN dNZ^G dOdP dPZ_G dQdR dRZ`G dSdT dTZaG dUdV dVZbG dWdX dXZcG dYdZ dZZdG d[d\ d\ZeG d]d^ d^ZfG d_d` d`ZgG dadb dbZhG dcdd ddZiG dedf dfZjG dgdh dhZkG didj djZlG dkdl dlZmG dmdn dnZnG dodp dpZoG dqdr drZpG dsdt dtZqG dudv dvZrG dwdx dxZsdydz Ztd{d| Zud}d~ ZvejKLdg dejKLdddgddgddgg dg dgddgddggdgdgggdd ZwejKLdddgddgddgg dg dgddgddggdgdgggdd ZxG dd dZyG dd dZzG dd dZ{G dd dZ|G dd dZ}G dd dZ~G dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZdd ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG ddÄ dÃZG ddń dŃZG ddǄ dǃZG ddɄ deZG dd˄ d˃ZG dd̈́ d̓ZG ddτ dσZG ddф dуZG ddӄ dӃZG ddՄ dՃZddׄ Zddل Zddۄ Zdd݄ ZejKje?ddߍdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd ZejKLddeddgfdeddgfdeddgfdeddgfgdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZG d'd( d(e'jÃZG d)d* d*e'jÃZG d+d, d,e'jÃZG d-d. d.e'jÃZG d/d0 d0ZG d1d2 d2ZejKje?d3dߍ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 Z֐dNdO ZejKLdPdQdQg dRfdSdTg dRfdUdVg dWfgdXdY ZؐdZd[ Zِd\d] ZejKjejېd^kd_dߍd`da ZG dbdc dcZݐddde ZG dfdg dgZG dhdi diZG djdk dkZG dldm dmZdndo ZejKLdpe4e1 dqdr Zdsdt Zdudv ZejKLdwdxdygdzd{ ZejKLd|g d}d~d Zdd Zdd ZejKj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)raises)	typecodesarray)rec_append_fields)special)check_random_state)IntegrationWarningquad	trapezoidcumulative_trapezoid)
argsreduce)xlogy	polygammaentr)distcontinvdistcont   )distdiscreteinvdistdiscrete)FitDataError
_argus_phi)rootfmin)productdarwinx86_64tukeylambdapearson3c                 C   s*   |d u r
d| |f }t t| ||d d S )Nz%s does not have attribute %smsg)r   hasattr)abr)    r-   K/tmp/pip-target-vg8gfxp4/lib/python/scipy/stats/tests/test_distributions.py_assert_hasattr4   s   r/   c                   C   s   t tjjd d S )Nf_gen)r/   scipystatsdistributionsr-   r-   r-   r.   test_api_regression:      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   (rD   c                 C   s@   t j| ||d}t||d ||dtj |  d  d S )Nr6   r   r9   )r2   r:   r   cdfr<   r=   r>   r-   r-   r.   check_vonmises_cdf_periodicD   s   0rF   c                  C   sj   t tjjj} dd tD }dd tD }g d}|| | }t tdd |}| d | |ks3J d S )Nc                 S      g | ]}|d  qS r   r-   .0distr-   r-   r.   
<listcomp>K       z0test_distributions_submodule.<locals>.<listcomp>c                 S   rG   rH   r-   rI   r-   r-   r.   rL   L   rM   )rv_discreterv_continuousrv_histogramentropytrapzc                 S   s   t | d S )N<)str
startswithrA   r-   r-   r.   <lambda>S       z.test_distributions_submodule.<locals>.<lambda>gilbrat)	setr1   r2   r3   __all__r   r   filterremove)actual
continuousdiscreteotherexpectedr-   r-   r.   test_distributions_submoduleI   s   
rc   c                  C   sx   dD ]7} ddt jddfD ],}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=   rD   rF   )r?   rB   r-   r-   r.   test_vonmises_pdf_periodic[   s   rh   c                   C   s&   t tjjtj  t tjjtj d S N)r   r2   vonmises_liner+   npr=   r,   r-   r-   r-   r.   test_vonmises_line_supportg   s   rl   c                  C   s   t d} t| dd d S )N   r         ?)r2   r:   r   rE   )rC   r-   r-   r.   test_vonmises_numericall   s   
ro   zx, kappa, expected_pdf))rd   {Gz?g|65?)rd         9@g?U?)rd   rm   g"?)       @rp   gDfI?)rr   rq   g1<)rr   rm           c                 C   s    t j| |}t||dd d S )NV瞯<rtol)r2   r:   r;   r   )rB   kappaexpected_pdfr;   r-   r-   r.   test_vonmises_pdf{   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 )	Nvon_mises_rvsr   r   r6   )random_stater9   rt   atol)
abshashrk   randomdefault_rngr2   r:   rvsr=   r   )seedrng1rng2rng3rvs1rvs2rvs3r-   r-   r.   test_vonmises_rvs_gh4598   s   r   c                 K   sf   | j |fi |}tt| | j |fi |}|||}|||}||ks/tj||dds1J dS 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.
    rt   ru   N)fitsupertyperk   allclose)rK   datafunckwdsmle_analyticalnumerical_optll_mle_analyticalll_numerical_optr-   r-   r.   _assert_less_or_close_loglike   s   

r   c                 C   s  ddg}| j rt| j d}|g dd | 7 }tt|tt|}g d}tjt	dd | j
|fi | W d    n1 sDw   Y  tjtdd | 
tjg W d    n1 sbw   Y  tjtdd | 
tjg W d    n1 sw   Y  tjtd	d | j
|d
d W d    n1 sw   Y  tjtdd | j
|gdgt|d  R   W d    d S 1 sw   Y  d S )Nflocfscale,)f0f1f2r   r9      z3All parameters fixed. There is nothing to optimize.matchz#The data contains non-finite valueszUnknown keyword arguments:r9   )extra_keywordzToo many positional arguments.r   )shapeslensplitdictziprk   arangepytestr   RuntimeErrorr   
ValueErrornaninf	TypeError)rK   paramnshapes	all_fixedr   r-   r-   r.   assert_fit_warnings   s6   ""r   rK   )alpha	betaprimefatiguelifeinvgammainvgauss
invweibull	johnsonsblevylevy_llognormgibratpowerlognormrayleighwaldc                 C   s   t t}||  }tt| } t| j| jg|R  d t| j| jg|R  t	j
  t| j| jg|R  d t| j| jg|R  t	j
  dS )zgh-6235r   N)r   r   getattrr2   r   r;   r+   r   logpdfrk   r   r,   )rK   dctargsr-   r-   r.   test_support   s   
"r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRandIntc                 C      t jd d S N  rk   r   r   selfr-   r-   r.   setup_method      zTestRandInt.setup_methodc                 C   s   t jjdddd}tt|dk t|dk@  tt|dk t jjdddd}tt|dk t|jj	t
d v  t jdd}t|dk|dk @  tt|tjtt|d	 t ddd
}t|jj	t
d v  d S )N      rg   sizer9   2   
AllInteger   .   r(   r   )r2   randintr   r   r<   allr   shapedtypecharr   
isinstance
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   $   r   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   rg   r   r         ?      @r   rq      decimal)	rk   linspacer<   floorselectr2   r   rE   r   )r   rB   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                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	TestBinomc                 C   r   r   r   r   r-   r-   r.   r      r   zTestBinom.setup_methodc                 C   s   t jjdddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jdd}tt
|t t ddd}tt
|tj t|jjt	d v  d S Nrf         ?r   r   r   r   r   )r2   binomr   r   r<   r   r   r   r   r   r   intndarrayr   r-   r-   r.   r      s    zTestBinom.test_rvsc                 C   sD   t jddd}t jddd}t|dddd t|dddd d S )Nrg   r   r   r   rt   rv   r}   )r2   r   r   r   )r   vals1vals2r-   r-   r.   test_pmf   s   zTestBinom.test_pmfc                 C   s|   t dd}tg d}tt|| }| }t|| t dd}| }t|d t dd}| }t|d d S )Nr9   rn   )      ?rn   r  rs   r   )	r2   r   rk   r   sumr   rQ   r   r   )r   r,   
expected_p
expected_hhr-   r-   r.   test_entropy  s   

zTestBinom.test_entropyc                 C   sj   t  ' t dt ttjddd d ttjddd d W d    d S 1 s.w   Y  d S )Nerrorr9   r   np)	warningscatch_warningssimplefilterRuntimeWarningr   r2   r   meanstdr   r-   r-   r.   test_warns_p0  s
   
"zTestBinom.test_warns_p0N)r   r   r   r   r   r  r  r  r-   r-   r-   r.   r      s    r   c                   @      e Zd Zdd ZdS )TestArcsinec                 C   s&   t jddg}t|tjtjg d S Nr   r   )r2   arcsiner;   r   rk   r   r   r  r-   r-   r.   test_endpoints  s   zTestArcsine.test_endpointsN)r   r   r   r  r-   r-   r-   r.   r        r  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestBernoullic                 C   r   r   r   r   r-   r-   r.   r   %  r   zTestBernoulli.setup_methodc                 C   s   t jjddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r   r   r   r   r   r   )r2   	bernoullir   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r   (  s    zTestBernoulli.test_rvsc                 C   st   t d}dtd dtd  }| }t|| t d}| }t|d t d}| }t|d d S )Nr        пr   rs   r   )r2   r  rk   logrQ   r   r   )r   r,   r  r  r-   r-   r.   r  3  s   




zTestBernoulli.test_entropyN)r   r   r   r   r   r  r-   r-   r-   r.   r  $      r  c                   @   r  )TestBradfordc                 C   s:   d}t dd}tj||}tj||}t|| d S )Nrd   )rk   logspacer2   bradfordrE   ppfr   )r   crB   qxxr-   r-   r.   test_cdf_ppfE  s
   zTestBradford.test_cdf_ppfN)r   r   r   r)  r-   r-   r-   r.   r   C  r  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 )Nrf      rt   ru   )r2   chisfr   CHI_SF_10_4r   rA   r-   r-   r.   test_sfV     zTestChi.test_sfc                 C   s"   t j| jd}t|ddd d S )Nr+  rf   rt   ru   )r2   r,  isfr.  r   r   rB   r-   r-   r.   test_isfZ     zTestChi.test_isfc                 C   s"   t jjdd}t|| jdd d S )N  )df-q=ru   )r2   r,  r  r   CHI_MEAN_1000r3  r-   r-   r.   	test_mean^  r1  zTestChi.test_meanN)r   r   r   r.  r9  r0  r4  r:  r-   r-   r-   r.   r*  M  s    r*  c                   @   r   )

TestNBinomc                 C   r   r   r   r   r-   r-   r.   r   d  r   zTestNBinom.setup_methodc                 C   s   t jjdddd}tt|dk tt|dk t|jjt	d v  t jdd}tt
|t t ddd}tt
|tj t|jjt	d v  d S r   )r2   nbinomr   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r   g  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   rk   expr2   r<  logpmfr   r1   r   )r   r   r-   r-   r.   r  r  s
   zTestNBinom.test_pmfc                 C   s@   t jjg dddd}tt jjg dddd}t|| d S )N)r   r   r   r   333333@?r	  )r2   r<  logcdfrk   r  rE   r   )r   r   refr-   r-   r.   test_logcdf_gh16159z  s   zTestNBinom.test_logcdf_gh16159N)r   r   r   r   r   r  rC  r-   r-   r-   r.   r;  c  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   r   r   r   r   r-   r-   r.   r     r   zTestGenInvGauss.setup_methodc                 C   :   t dd}t |jddd|j\}}t|dkd d S )Nffffff@      ?  r   r   r{   皙?Tr2   geninvgausskstestr   rE   r   r   gig_r  r-   r-   r.   test_rvs_with_mode_shift     z(TestGenInvGauss.test_rvs_with_mode_shiftc                 C   rE  )N?r   rH  r   rI  rJ  TrK  rN  r-   r-   r.   test_rvs_without_mode_shift  rR  z+TestGenInvGauss.test_rvs_without_mode_shiftc                 C   rE  )Nrd   皙?rH  r   rI  rJ  TrK  rN  r-   r-   r.   test_rvs_new_method  rR  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 )NrH  r   rI  r   rJ  )r2   rL  r   rM  rE   )r  r,   rO  r   r-   r-   r.   my_ks_check  s   z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   rU  TrS  rG  )r   )r   rW  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      r9   rf   r   rI  r   rG  )r   r2   rL  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 )NrH        r   r   )r   r  r,   r{   r   r   333333?Trg   rp   rf   )r  r,   r8   )r2   rL  r   r   rM  rk   r   r;   r   r   rE   )r   igmurB   pdf_igcdf_igr-   r-   r.   test_invgauss  s    zTestGenInvGauss.test_invgaussc                 C   s6   t g d}t ddd}t|tj|dd d S )N)
g;g8y8?g\}Z?ghܲ<?g&Khdd?g7!L?g	Cf?g_诱?g>0|?gRq?rp   r   rf   rn   r   )rk   r   r   r   r2   rL  r;   )r   vals_RrB   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   rn   g    >Ar   r9   )r   r2   rL  r;   r   r-   r-   r.   test_pdf_zero  s   zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   r   markslowrQ  rT  rV  rX  rZ  rb  rd  re  r-   r-   r-   r.   rD    s    




rD  c                   @   T   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestGenHyperbolicc                 C   r   r   r   r   r-   r-   r.   r     r   zTestGenHyperbolic.setup_methodc           
      C   l   t g d}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd	 d S )
N)
gF^T=g{X'=gNunƢsy>g7!t?gɫzI?g̸?g?gq6.?gmPZz?g:PgN?r9   r9   r   rn   rG  r6   rf   r   vIh%<=r}   rv   )rk   r   r2   genhyperbolicr   r   r;   
r   rc  lmbdar   betar_  deltar   ghrB   r-   r-   r.   
test_pdf_r     
zTestGenHyperbolic.test_pdf_rc           
      C   rj  )
N)
g=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?rk  rl  r6   rm  rf   r   ư>ro  )rk   r   r2   rp  r   r   rE   rq  r-   r-   r.   
test_cdf_r  rw  zTestGenHyperbolic.test_cdf_rc                    s\   g d}d\}}}d\|| | f  fddt ddD }t||dd	d
 d S )N)g@쐧@g@쐧 @g܊B@gvGăi@rk  rl  c                    s$   g | ]}t j d |qS )r6   )r2   rp  moment)rJ   ir   rt  r_  r-   r.   rL   	  s    z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   r   r   rn  ro  )ranger   )r   rc  rr  r   rs  vals_usr-   r|  r.   test_moments_r  s   	
z TestGenHyperbolic.test_moments_rc           
      C   sd   d\}}}d\}}||| || f}t j|||d}t |jddd|j\}}	t|	dkd d S )	Nrk  rl  r6   rH  r   rI  rJ  T)r2   rp  rM  r   rE   r   )
r   rr  r   rs  r_  rt  r   ru  rP  r  r-   r-   r.   r     s   
zTestGenHyperbolic.test_rvsc           	      C   s   t ddd}t |dt t jj d}}dt |}}| d ||f}tj|||d}t |	d|	dd	d d t j
f }t||tj||dd
d d S )Nr   r   rf   r9   r   r6   rp   Gz?r   rx  ro  )rk   r   float_powerfinfofloat32epssqrtr2   rp  r%  newaxisr   r;   t)	r   r7  r   rs  r_  rt  r   ru  rB   r-   r-   r.   
test_pdf_t  s    (
zTestGenHyperbolic.test_pdf_tc           	      C   s   dt t jjd}}}d\}}|||f}tj|||d}t |d|ddd d t jf }t	|
|tj
|ddd	 d S )
Nr[  r   )r   r   r6   rp   r  r   rx  ro  )rk   r  r  r  r2   rp  r   r%  r  r   r;   cauchy)	r   rr  r   rs  r_  rt  r   ru  rB   r-   r-   r.   test_pdf_cauchy/  s   
(
z!TestGenHyperbolic.test_pdf_cauchyc           	      C   s   t ddd}t t jj}d\}}}||| || f}tj|||d}t dddd d t jf }t|	|tj
j	||ddd	d
d d S )Nrm  rf   )r   r   r   r6   r!     r   r   r   dy=ro  )rk   r   r  r  r  r2   rp  r  r   r;   laplace)	r   r7   rt  rr  r   rs  r   ru  rB   r-   r-   r.   test_pdf_laplace@  s   

z"TestGenHyperbolic.test_pdf_laplacec           	   	   C   s   t dddt dddt dtd t dddt dddf\}}}}d	}||| || f}tj|||d
}t |d|ddd d t jf }t|	|tj
j	|||||dddd d S )Nr   r  rf   r      rg   r[  r6   rp   r  r   )r+   r,   r7   r8   rn  ro  )rk   r   r  r}  r2   rp  r%  r  r   r;   norminvgauss)	r   r   rs  rt  r_  rr  r   ru  rB   r-   r-   r.   test_pdf_norminvgaussU  s   (

z'TestGenHyperbolic.test_pdf_norminvgaussN)r   r   r   r   rv  ry  r  r   r  r  r  r  r-   r-   r-   r.   ri    s    ri  c                   @   s^   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	dd Z
dd Zdd Zdd ZdS )TestNormInvGaussc                 C   r   r   r   r   r-   r-   r.   r   m  r   zTestNormInvGauss.setup_methodc                 C   @   t g d}t g d}tjj|ddd}t||dd d S )N)gp~٧>g @X>g}e?g{)߳?gwH?ir      r   r   rn   r+   r,   &.>r|   )rk   r   r2   r  rE   r   )r   r_cdfx_testvals_cdfr-   r-   r.   
test_cdf_Rp  s   zTestNormInvGauss.test_cdf_Rc                 C   r  )N)gp϶>g\H55$?geСt&?go NiH?g]u>r  r   rn   r  r  r|   )rk   r   r2   r  r;   r   )r   r_pdfr  vals_pdfr-   r-   r.   rd  |  s   zTestNormInvGauss.test_pdf_Rzx, a, b, sf, rtol))r  r   r   !7?rn  )   r   r   ?=-C6?)r   r   rY  gy5`?r8  )rf   r   rY  gMLC9r  c                 C   s@   t j|||}t|||d t j|||}t|||d d S Nru   r2   r  r-  r   r2  )r   rB   r+   r,   r-  rv   rA   r{  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 )Nr  r  r   r   r  r  rn  缉ؗҜ<r   rx  ru   r  )r   rB   r+   r,   r-  rA   r{  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   r  r9   )r2   r  rk   r   r-  r2  r   )r   dstrB   r-  r2  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   rn   r9   r         @r   r+  mvskmoments)rk   r  r   r2   r  )r   r+   r,   gammav_statsr-   r-   r.   
test_stats  s   (zTestNormInvGauss.test_statsc                 C   s@   d\}}t g d}tj|||}t|tj||| d S )Nr  MbP?rn   +?)rk   r   r2   r  r%  r   rE   )r   r+   r,   r  r   r-   r-   r.   test_ppf  s   zTestNormInvGauss.test_ppfN)r   r   r   r   r  rd  r   rf  parametrizer  r  r  r  r  r-   r-   r-   r.   r  l  s    
&r  c                   @   rh  )TestGeomc                 C   r   r   r   r   r-   r-   r.   r     r   zTestGeom.setup_methodc                 C      t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r   r   r   r   r   )r2   geomr   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r        zTestGeom.test_rvsc                 C   sT   t jd}tjjt dd|d}|jt jksJ t 	|t 
t jjks(J d S )Nl   A: ir   rI  )rk   r   r   r2   r  r   r=  r   int64r   iinfoint32max)r   rngr   r-   r-   r.   test_rvs_9313  s    zTestGeom.test_rvs_9313c                 C   s$   t jg dd}t|g d d S )Nr   rn   )rn   r        ?)r2   r  r   r   r   r   r-   r-   r.   r    s   zTestGeom.test_pmfc                 C   sV   t tjg dd}tjg dd}t||ddd tjdd}t|d d S )Nr   rn   rt   r   r   r   rs   )rk   r  r2   r  r   r>  r   r   )r   r   r   r   r-   r-   r.   test_logpmf  s
   zTestGeom.test_logpmfc                 C   sL   t jg dd}t jg dd}tg d}t|| t|d|  d S )Nr   rn   rn   r   g      ?r   )r2   r  rE   r-  r   r   r   r   vals_sfrb   r-   r-   r.   test_cdf_sf  s
   
zTestGeom.test_cdf_sfc                 C   sV   t jg dd}t jg dd}tg d}t|t| t|t|  d S )Nr   rn   r  )	r2   r  rA  logsfr   r   rk   r  log1pr  r-   r-   r.   test_logcdf_logsf  s
   zTestGeom.test_logcdf_logsfc                 C   ,   t jg dd}tg d}t|| d S )Nr  rn   )r   rr   r  )r2   r  r%  r   r   r   r   rb   r-   r-   r.   r       zTestGeom.test_ppfc                 C   s   t tjddddd d S )N#B;r   +=r|   )r   r2   r  r%  r   r-   r-   r.   test_ppf_underflow	  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                   @   r  )
TestPlanckc                 C   r   r   r   r   r-   r-   r.   r     r   zTestPlanck.setup_methodc                 C   r  )Nr   r   )g|dy?g8'\>ggrU!>)r2   planckr-  r   r   r  r-   r-   r.   r0    s   zTestPlanck.test_sfc                 C   r  )N)     @@     @@     p@r  )g    P.g    h>g    TF)r2   r  r  r   r   r  r-   r-   r.   
test_logsf  r  zTestPlanck.test_logsfN)r   r   r   r   r0  r  r-   r-   r-   r.   r    s    r  c                   @   r   )
TestGennormc                 C   0   g d}t j|d}t j|}t|| d S Nr   r   )r2   gennormr;   r  r   r   pointspdf1pdf2r-   r-   r.   test_laplace      zTestGennorm.test_laplacec                 C   4   g d}t j|d}t jj|dd}t|| d S Nr   r9   g;f?r8   )r2   r  r;   normr   r  r-   r-   r.   	test_norm'     zTestGennorm.test_normc                 C   s   t jd td}|jdd}t||jjdksJ td}|jdd}tj	jdd}t
||jdks:J td}|jdd}tjjddd	}t
||jdksXJ d S )
Nr   rn   r6  r   rd   r   r9   g;f?)r8   r   )rk   r   r   r2   r  r   rM  rE   pvaluer  ks_2sampr  )r   rK   r   rvs_laplacervs_normr-   r-   r.   r   .  s   


zTestGennorm.test_rvsc                 C   s   t jd tddgddgg}|jg dd}t|d d ddf tdjd d	ks0J t|d d ddf tdjd d	ksGJ t|d d ddf tdjd d	ks^J t|d d ddf tdjd d	ksuJ d S )
Nr   rn   r   rr   r   )r6  r9   r9   r   r   rd   )rk   r   r   r2   r  r   rM  rE   )r   rK   r   r-   r-   r.   test_rvs_broadcasting?  s   ...2z!TestGennorm.test_rvs_broadcastingN)r   r   r   r  r  r   r  r-   r-   r-   r.   r    s
    r  c                   @   r  )TestHalfgennormc                 C   r  r  )r2   halfgennormr;   exponr   r  r-   r-   r.   
test_exponJ  r  zTestHalfgennorm.test_exponc                 C   r  r  )r2   r  r;   halfnormr   r  r-   r-   r.   test_halfnormQ  r  zTestHalfgennorm.test_halfnormc                 C   s6   g d}t j|d}t j|d}t|d|  d S )Nr   g
(?r9   )r2   r  r;   r  r   r  r-   r-   r.   test_gennormX  s   zTestHalfgennorm.test_gennormN)r   r   r   r  r  r  r-   r-   r-   r.   r  I  s    r  c                   @   r  )TestLaplaceasymmetricc                 C   s6   t g d}tj|d}tj|}t|| d S r  )rk   r   r2   laplace_asymmetricr;   r  r   r  r-   r-   r.   r  a  s   z"TestLaplaceasymmetric.test_laplacec                 C   sL   t g d}d}d| }tj||}tj||d  |}t|| d S )Nr   r9   r   )rk   r   r2   r  r;   r   )r   r  rw   kapinvr  r  r-   r-   r.   test_asymmetric_laplace_pdfh  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   rf   r9   rd   gMbp?rU  gV-?皙?gMb`?)rk   r   r  r2   r  r;   rE   r-  r%  r2  r   concatenate)r   r  rw   r  cdf1sf1r  cdf2sf2ppf1ppf2isf1isf2r-   r-   r.   !test_asymmetric_laplace_log_10_16q  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
d0ddZg dg dg dg ddejddddgej dddddgg dg d g d!g	ZeeZejd"ed#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )1TestTruncnormc                 C   r   r   r   r   r-   r-   r.   r     r   zTestTruncnorm.setup_methodc              	   C   J   t jjg ddddgd dd}ttjdd	dd
dtjg}t|| d S )Nr[  r   r  rn   gH.?r   r9         r   r      r9   r6   r   fO?l@r   )r2   	truncnormr%  rk   r   r   r   r  r-   r-   r.   test_ppf_ticket1131  
   
z!TestTruncnorm.test_ppf_ticket1131c              	   C   r  )Nr  r  r   r   r	  r9   r6   r   r  r
  r   )r2   r  r2  rk   r   r   r   r  r-   r-   r.   test_isf_ticket1131  r  z!TestTruncnorm.test_isf_ticket1131c                 C   s   d\}}t jj||dddd}t||   k o"|   k o"|k n   d\}}t jj||dddd}t||   k oK|   k oK|k  d S    d S )N)irm  r   r   rf   r   )rf      r2   r  r   r   minr  r   lowhighrB   r-   r-   r.   test_gh_2477_small_values  s   .8z'TestTruncnorm.test_gh_2477_small_valuesc                 C   sH  d\}}t jj||dddd}t||   ko"|   ko"|kn  t|||gf d\}}t jj||dddd}t||   k oO|   k oO|k n   d\}}t jj||dddd}t||   k ou|   k ou|k n   d\}}t jj||dddd}t||   k o|   k o|k  d S    d S )	N)rg   re   r   r   rf   r   )r6    )'  i'  )i)r2   r  r   r   r  r  rT   r  r-   r-   r.   test_gh_2477_large_values  s   <..8z'TestTruncnorm.test_gh_2477_large_valuesc                 C   s  ddgddgfD ]\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t g d}t g d}	t g d}
|d	k rVt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}t|| |d	k rttj|||d ttj|||d nttj|||d ttj|||d tj|||}tt 	||
d  |d d  qd S )Nr   r+  r"  rr   r   r   r   r   r   r   rs   rs   )r   d._MT
@BKg?r   r   )r   r  r  r   r   r9   rn   r   rn   r   gĖy	@gdv*?g,mj%V?r  )rk   r   r   r2   r  rE   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  sJ   



"z)TestTruncnorm.test_gh_9403_nontail_valuesc                 C   s  ddgddgfD ];\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t g d}t g d}	t g d}
|d	k rWt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}t|| tj|||}t|| |d	k rttj|||d ttj|||d nttj|||d ttj|||d tj|||}tt 	||
d  |d d  t ||d}|d d d  }ttj|||tj|| | d d d  ttj|||tj|| | d d d  ttj|||tj|| | d d d  qd S )N'   (   irr   r  r  )r   pGC@Ff<r   r   )r   r2  r1  r   r   r9   rn   r   gEC@g i?gspXio)>r  r  r  )rk   r   r   r2   r  rE   r-  r;   r   r  r%  r!  r   )r   r  r  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r;   xvals2r-   r-   r.   test_gh_9403_medium_tail_values  sd   




 z-TestTruncnorm.test_gh_9403_medium_tail_valuesc                 C   s6   t tdddd t tdtjdd d S )Ng      *@g      .@      ,@g T?r  g @gR?)r   r2   r  rE   rk   r   r   r-   r-   r.   test_cdf_tail_15110_14753  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  ru   r2   r  r   )r   r+   r,   rb   rv   m0v0s0k0mvrA   r?   r-   r-   r.   _test_moments_one_range  s   

z%TestTruncnorm._test_moments_one_range)r   rs   r   rs   rs   )rm  rf   rs   r   rs   gLFu)r  r   rs   gMFmz%?rs   gſ)r9   rs   ghI}?rs   gHNMr   gQ63E?gnl$A?gr1"D?gK8L?gQ63Egr1"D)r  r   gU*? bn?gnA??c3TXʿ)r  r   gU*ҿrB  gnArC  )rm  g"$7"gOxr?gp7`g'>K@casec                 C   sL   |\}}}}}}t jj ||dd\}}	}
}t||	|
|g||||gdd d S )Nr  r  FFg<r|   r8  )r   rE  r+   r,   r9  r:  r;  r<  r=  r>  rA   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  rk   r   r   )r   r=  r>  r-   r-   r.   test_9902_momentsC  s   
zTestTruncnorm.test_9902_momentsc                 C   sV   d\}}t jj||dddd}t||   k o%|   k o%|k  d S    d S )N)rf   r   r   r   rf   r   r  r  r-   r-   r.   test_gh_1489_trac_962_rvsH  s   8z'TestTruncnorm.test_gh_1489_trac_962_rvsc                 C   s   ddt j dt j t j dddddg}dddt jddddd	t jt jg}tjj||dt|fd
}t |dt|fks=J tt ||j	ddk tt |j
dd|k d S )Nrm  rf   r  ir/  r  r   r0  -   r   r   )axis)rk   r   r2   r  r   r   r   r   r   r  r  r  r-   r-   r.   test_gh_11299_rvsN  s   & zTestTruncnorm.test_gh_11299_rvsc                 C   s.   t tjdrtjjdddtj d d S d S )Nr   rm  r  r   rI  )r*   rk   r   r2   r  r   r   r   r-   r-   r.   test_rvs_GeneratorX  s
   
z TestTruncnorm.test_rvs_Generatorc                 C   s   t t j t j dt j dg}t t jt jddt jg}t g d}g d}tt|||| tt| | | | d S )Nrf   r  )rf         @rP  	   r  )gOul"gځ=!gL!g>EG	f g^K[X)rk   r   r   r   r2   r  rA  r  )r   r+   r,   rB   rb   r-   r-   r.   test_logcdf_gh17064^  s    "z!TestTruncnorm.test_logcdf_gh17064N)r7  )r   r   r   r   r  r  r  r  r-  r4  r6  r?  rk   r   _truncnorm_stats_datar   r   rf  r  rG  rI  rJ  rM  rN  rR  r-   r-   r-   r.   r    sL    
#/


#

r  c                   @   s&   e Zd Zejdg ddd ZdS )TestGenLogisticx, expected))ig4`n)ig4	ncg)r   gX
=)rg   gh@X)r6  gh<c                 C   s$   d}t j||}t||dd d S )NrG  rn  ru   )r2   genlogisticr   r   )r   rB   rb   r&  logpr-   r-   r.   test_logpdfm  s   zTestGenLogistic.test_logpdfN)r   r   r   r   rf  r  rX  r-   r-   r-   r.   rT  j  s    rT  c                   @   rh  )TestHypergeomc                 C   r   r   r   r   r-   r-   r.   r   y  r   zTestHypergeom.setup_methodc                 C   s   t jjddddd}tt|dkt|dk@  tt|dk t|jjt	d v  t jddd}tt
|t t dddd}tt
|tj t|jjt	d v  d S )Nr  rf   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     r9   gkㅒP?r  )r2   rZ  r   r   )r   Mr
  Ntotgood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   r9   r   r   r  rs   )r   r2   rZ  r   r   r-   r-   r.   	test_args  s   zTestHypergeom.test_argsc                 C   s4   t dtjdddd  kodk d S    d S )Nr   r   io i  if0  r   )r   r2   rZ  rE   r   r-   r-   r.   test_cdf_above_one  s   4z TestHypergeom.test_cdf_above_onec                    s   d dt g dd }d fdd|D }t g d}t||d	d
d g d}tj|   d}g d}t||d	d
d d S )Ng    +@g     @)r   ffffff@333333@r+  gffffff@g@r        @     @c                    s"   g | ]}t j   |qS r-   )r2   rZ  r-  )rJ   eatenorangespearsquantiler-   r.   rL     s    z1TestHypergeom.test_precision2.<locals>.<listcomp>)r   gpR(g㘍R2gJޱ p9g?Mf=
G?r   r   gƠ>ro  )g     @rg  g     @g     @g     @)r   rm  g)9g"1)rk   r   r   r2   rZ  r-  )r   fruits_eatenresrb   	quantilesres2	expected2r-   ri  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  rs   )	r2   rZ  rQ   rk   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 )Nrf      cA    .A     j@gor   r   r   @  X  ,  g_7	j$r   )r2   rZ  r  r   r   r?   r\  r
  r]  resultrb   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g d}d	}d
}d}t j||||}tdd}t||dd d S )Nr   ru  rv  rw  g)\Ur   r   r/  rx  r   rz  g*@Vr   }      r[  gר)r/  r/  r/  )r2   rZ  rA  r   rk   r   fullr{  r-   r-   r.   test_logcdf  s8   zTestHypergeom.test_logcdfN)r   r   r   r   r   ra  rb  rc  rs  r  r  r  r-   r-   r-   r.   rY  x  s    
	rY  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+  rG  gQOu3;)   rg   g\Z{0c                 C   s<   t j||}t||dd t j||}t||dd d S )Nr8  ru   )r2   loggammar-  r   r2  )r   rB   r&  r-  rA   yr-   r-   r.   test_sf_isf  s   zTestLoggamma.test_sf_isfc                 C       t jdd}t|ddd d S )Nir9   g     @r  ru   )r2   r  r   r   )r   lpr-   r-   r.   rX    s   zTestLoggamma.test_logpdfc                 C   sT   t g ddd}|D ]\}}}}}tjj|dd}t|||||gdd qd S )N)rn   g"~jg46<@g oŏ      @r   g	h"lxgQ?gZd;333333@g      (@g{/L@g??gгYҿgh|?5?r  r   msvkr  r+  r   )rk   r   reshaper2   r  r   )r   tabler&  r  varskewkurtcomputedr-   r-   r.   r    s   zTestLoggamma.test_statsr&  rd   r  c                 C   sx   t jj|dd}t| sJ t j|}t t||k t	|}|j
dd}|jd  k r7|jk s:J  J d S )N順 r   r  )confidence_levelrn   )r2   r  r   rk   isfiniter   median	binomtestcount_nonzeror   proportion_cir  r  )r   r&  rB   medbtestcir-   r-   r.   r   +  s   $zTestLoggamma.test_rvsN)
r   r   r   r   rf  r  r  rX  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ej	
dejdgdd Zej	
dejdgdd Zej	
dddgdd ZdS )TestLogisticc                 C   2   t dd}tj|}tj|}t|| d S Nr!  r  )rk   r   r2   logisticrE   r%  r   r   rB   r  r(  r-   r-   r.   r)  <     zTestLogistic.test_cdf_ppfc                 C   r  r  )rk   r   r2   r  r-  r2  r   r  r-   r-   r.   r  B  r  zTestLogistic.test_sf_isfc                 C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r2   r  r%  r2  )r   r  desiredr-   r-   r.   test_extreme_valuesH  s   z TestLogistic.test_extreme_valuesc                 C   s*   t jg d}g d}t||dd d S )N)ir   rf   )gm\  .g9B.gO& $rn  ru   )r2   r  r   r   )r   rW  rb   r-   r-   r.   test_logpdf_basicO  s   zTestLogistic.test_logpdf_basicc                 C   s"   t jddg}t|ddg d S )Nrm   )r2   r  r   r   r   rW  r-   r-   r.   test_logpdf_extreme_valuesW  s   z'TestLogistic.test_logpdf_extreme_valuesloc_rvs,scale_rvsr9   c                 C   sR   t jjd||d}dd }t|t j||fdj}t j|}t||dd d S )Nrg   r   r7   r8   c                 S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS Nr   r9   )r   rk   r  r=  )inputr   r+   r,   r
  x1x2r-   r-   r.   r   b  s   z#TestLogistic.test_fit.<locals>.funcr\  gKH9r|   )r2   r  r   r!   	_fitstartrB   r   r   )r   loc_rvs	scale_rvsr   r   expected_solution
fit_methodr-   r-   r.   test_fit]  s   
zTestLogistic.test_fitc                 C   H   t jjd||d}|t j|fg}t j|i d }tt j|| d S Nrg   r  r   )r2   r  r   r  _reduce_funcr   )r   r  r  r   r   r   r-   r-   r.   test_fit_comp_optimizert  s   z$TestLogistic.test_fit_comp_optimizer
testlogcdfTFc                 C   sH   t g d}|rtj|}ntj| }g d}t||dd d S )N)r  r     r   r[  )     g      g%h9fg?~T}%mgCx^&ْgV瞯<ru   )rk   r   r2   r  rA  r  r   )r   r  rB   r  rb   r-   r-   r.   test_logcdfsf_tails~  s   z TestLogistic.test_logcdfsf_tailsN)r   r   r   r)  r  r  r  r  r   rf  r  rk   r   randr  r  r  r-   r-   r-   r.   r  :  s    

	r  c                   @   r   )

TestLogserc                 C   r   r   r   r   r-   r-   r.   r     r   zTestLogser.setup_methodc                 C   r  )Nr   r   r   r   r   r   )r2   logserr   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r     r  zTestLogser.test_rvsc                 C   s   t jdd}t|d d S )Nr+  r  g&Y3)r2   r  r   r   r   r=  r-   r-   r.   test_pmf_small_p  s   zTestLogser.test_pmf_small_pc                 C      t jd}t|d d S )N:0yE>gW  ?)r2   r  r  r   r  r-   r-   r.   test_mean_small_p  s   zTestLogser.test_mean_small_pN)r   r   r   r   r   r  r  r-   r-   r-   r.   r    s
    r  c                   @   sp   e Zd Zdd Zejdejej	gejde
jdgdd Zejdejd	fej	d
fgdd ZdS )TestGumbel_r_lc                 C   r   r   r   r   r-   r-   r.   r     r   zTestGumbel_r_l.setup_methodrK   r  r9   c                 C   s@   |j d||d}|||fg}||i d }t||| d S r  )r   r  r  r   )r   rK   r  r  r   r   r   r-   r-   r.   r    s   z&TestGumbel_r_l.test_fit_comp_optimizerz	dist, sgnr   r  c                 C   s@   |t g d }||\}}t||d  t|ddd d S )N)r   r   r   r   r   r   r   gW  @g   @g3qtw>rx  ru   )rk   r   r   r   )r   rK   sgnzr7   r8   r-   r-   r.   r    s   zTestGumbel_r_l.test_fitN)r   r   r   r   r   rf  r  r2   gumbel_rgumbel_lrk   r   r  r  r  r-   r-   r-   r.   r    s    
r  c                   @   s  e Zd Zdd Zdd Zejdddd Zej	d	ej
d
ddgej
dddgej
dddgdd Zej
d
ddgej
dddgej
dddgej
ddd eddgddD ejdddd Zejdddd  Zd!d" Zd#d$ Zd%S )&
TestParetoc                 C   s  t  R t dt tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjd	dd\}}}}t
|d
 t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t
|d W d    d S 1 s[w   Y  d S )Nr  rn   r  r  r   rG  r  rr         @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   rk   r   r   r   r  r   r=  r>  rA   r?   r-   r-   r.   r    s`   











$zTestPareto.test_statsc                 C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eAr9   rG  r   r6   )r2   r  r-  r   )r   rB   r,   r8   r  rb   r-   r-   r.   r0    s   zTestPareto.test_sffunction)scopec                 C   s   t jdS r   )rk   r   r   r   r-   r-   r.   r    s   zTestPareto.rngz2ignore:invalid value encountered in double_scalars	rvs_shaper   r9   rvs_locr   	rvs_scaler   c              
   C   s  t jjd||||d}t jj|dddd }t jj|dddd }t jj|dddd }||  kr<|  kr<dks?J  J t jjd|||d |d}t jj|dd	\}	}
}t|d |  |d }|jd }t|	|tt	||    t|
d d S )
Nrg   r   r,   r8   r7   r{   r   p=
ף?)r   r   )r   fix_b)r   fbr9   r   )
r2   r  r   r   r   r  r   rk   r  r  )r   r  r  r  r  r   shape_mle_analytical1shape_mle_analytical2shape_mle_analytical3shape_mle_a	loc_mle_ascale_mle_a
data_shiftndatar-   r-   r.   r    s,   
zTestPareto.test_fitrd   zfix_shape, fix_loc, fix_scalec                 C   s   g | ]}d |v r|qS )Fr-   )rJ   r  r-   r-   r.   rL   9  s    
zTestPareto.<listcomp>TFr   )repeatignoreinvalidc                 C   s|   t jjd||||d}|t j|fg}	t j|	i d }
i }|r%||d< |r+||d< |r1||d< tt j||
fi | d S )Nrg   r  r   r   r   r   )r2   r  r   r  r  r   )r   r  r  r  	fix_shapefix_loc	fix_scaler  r   r   r   r   r-   r-   r.   test_fit_MLE_comp_optimzer5  s   	z%TestPareto.test_fit_MLE_comp_optimzerc                 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   rg   ið& rI  r   )	r2   r  r   rk   r   r   r  r  r   )r   r   locationr8   r   r   r   r-   r-   r.   test_fit_known_bad_seedM  s   

z"TestPareto.test_fit_known_bad_seedc                 C   s@   t tj tttjjg ddd tttjjg dddd d S )Nr   r9   r  )r   r9   r   r   r   r   r   )r   r2   r  assert_raisesr   r   r   r-   r-   r.   test_fit_warningsY  s
   

zTestPareto.test_fit_warningsc                 C   s.   t jjddd|d}t|d t j|}d S )Ni~r   rg   )r7   r,   r   r{   r   )r2   r  r   r
   r   )r   r  r   rP  r-   r-   r.   test_negative_dataa  s   
zTestPareto.test_negative_dataN)r   r   r   r  r0  r   fixturer  rf  filterwarningsr  r  r#   rk   errstater  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
dd Zejddg dfdddded ejgfdddded d gfd!g d"fgd#d$ Zd%d& Zd'S )(TestGenparetoc                 C   sl   dD ]}t |}tj|\}}t|d tt | qt d}tj|\}}t||gddg d S )Nr   rs   rs          rn   )	rk   asarrayr2   	genpareto_get_supportr   r   isposinfr   )r   r&  r+   r,   r-   r-   r.   test_abl  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 )Nrs   r&  r   r  r   r   rf   )
r2   r  rk   r   r   r;   r  rE   r-  r%  r   rvrB   r'  r-   r-   r.   test_c0y  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   r  r   rs   r   rf   r   )r2   r  rk   r   r   r;   uniformrE   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 )Nrd   r  rs   r   r  )
r2   r  r   r;   rk   r   rE   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j||}dD ]}tj||| }t||dd qtj||}dD ]}tj||| }t||dd q0q	d S )	Nr   rf   r   r   r  r  g+r8  r|   )r  r  )rk   r   r2   r  r;   r   rE   )r   rB   r&  pdf0dcpdfccdf0cdfcr-   r-   r.   test_c_continuity  s   zTestGenpareto.test_c_continuityc              	   C      t jt jddddt jdddddd	t jdddd f }d
D ]}tj||}dD ]}tj||| }t||dd q*qd S Nr8  rp   rd   baser   r   Fendpointr   )rs   r  r  r|   )rk   r   r#  r   r2   r  r%  r   )r   r'  r&  ppf0r  ppfcr-   r-   r.   test_c_continuity_ppf     z#TestGenpareto.test_c_continuity_ppfc              	   C   r  r  )rk   r   r#  r   r2   r  r2  r   )r   r'  r&  isf0r  isfcr-   r-   r.   test_c_continuity_isf  r  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 )Nr8  rp   rd   r  r   r   Fr  r   )r  gC]r2rt   gV瞯Ҽrt   r|   )	rk   r   r#  r   r   r2   r  rE   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    _Brp   r   r   gpEȜ)r2   r  r  r   r  r-   r-   r.   r    s   zTestGenpareto.test_logsfzc, expected_statsr   )r   r   r9   r  r  r  gqq@rf   r9   gqq?g      ?g$I$	?rq?r	  gll0@r  )rn   UUUUUU?r   333333c                 C   s$   t jj |dd}t||ddd d S )Nr  r  rn  rt   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 )Nr  gvǼ
  ?rn  ru   )r2   r  r  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   rf  r  rk   r  r   r  r  r-   r-   r-   r.   r  k  s(    

	


r  c                   @   D   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestPearson3c                 C   r   r   r   r   r-   r-   r.   r     r   zTestPearson3.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd v  t jd}tt	|t
 t dd}tt	|tj t|jjtd v  tt|dk d S )Nrd   r   r   AllFloatrn   r   )r2   r'   r   r   r<   r   r   r   r   r   floatr   r   r   r-   r-   r.   r     s   zTestPearson3.test_rvsc                 C   s|   t jdg d}t|tg ddd t jdd}t|tdgdd t jg d	d}t|tg d
dd d S )Nr9   rs   rd   rU  )gtT?g+q?g?rx  r|   r  rd   ND}i?r  rA  r  r   r   )r$  gj?gdC?gs?g'M?)r2   r'   r;   r   rk   r   r  r-   r-   r.   r     s   
zTestPearson3.test_pdfc                 C   sp   t jdg d}t|tg ddd t jdd}t|dgdd t jg d	d}t|g d
dd d S )Nr9   r#  )grE?gTp]0?g~?rx  r|   r  rd   g E&"J?r%  )giZ*J?gh+8w?gcK?g|<x6?gG?)r2   r'   rE   r   rk   r   r  r-   r-   r.   r     s   

zTestPearson3.test_cdfc                    s@   g d}dd t j|} fdd|D }t|| d S )Nr  r  r   rn   rn   r@  c                    s$   g | ]}t t|j d  qS rH   )r   r2   r'   r;   )rJ   r  neg_infx_evalr-   r.   rL     s    z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r2   r'   rE   r   )r   skewsr$  int_pdfsr-   r'  r.   test_negative_cdf_bug_11186  s   z(TestPearson3.test_negative_cdf_bug_11186c                 C   sP   t jdd}t|d tt|t t jdd}t|d tt|t d S )Nr   r9   r   rx  )r2   r'   rz  r   r   r"  )r   rz  r-   r-   r.   test_return_array_bug_11746  s   

z(TestPearson3.test_return_array_bug_11746c                 C   s   g d}d}t jt j|||}t|| tdgdgg}tdd}tt j||t j| |  tt j||t j	| |  tt j||t j
||   d S )Nr&  rn   r[  rG  rA  r9   )r2   r'   r%  rE   r   rk   r   r   r;   r-  r2  )r   r*  r)  ro  r  rB   r-   r-   r.   test_ppf_bug_17050  s   
zTestPearson3.test_ppf_bug_17050N)
r   r   r   r   r   r   r   r,  r-  r.  r-   r-   r-   r.   r     s    

r   c                   @   r  )
TestKappa4c                 C   sD   g d}d}dD ]}t j|||}t j|| }t|| qd S )N)rs   rd   rU  rn   r   )
gffffffr  r[  皙ɿ皙rd   rU  rn   r   ffffff?)r2   kappa4rE   r  r   r   rB   r  r?   r   	vals_compr-   r-   r.   test_cdf_genpareto0  s   zTestKappa4.test_cdf_genparetoc                 C   sL   t ddd}d}t ddd}tj|||}tj||}t|| d S )Nr  r   rf   rs   r  r   )rk   r   r2   r3  rE   
genextremer   r4  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   rf   r   rs   )rk   r   r2   r3  rE   r  r   r4  r-   r-   r.   test_cdf_exponD     zTestKappa4.test_cdf_exponc                 C   @   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   rf   rs   )rk   r   r2   r3  rE   r  r   r4  r-   r-   r.   test_cdf_gumbel_rM  r:  zTestKappa4.test_cdf_gumbel_rc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   rf   r  rs   )rk   r   r2   r3  rE   r  r   r4  r-   r-   r.   test_cdf_logisticV  r:  zTestKappa4.test_cdf_logisticc                 C   r;  )Nr  r   rf   r   )rk   r   r2   r3  rE   r  r   r4  r-   r-   r.   test_cdf_uniform_  r:  zTestKappa4.test_cdf_uniformc                 C   s   t dd d S r  )r2   r3  r   r-   r-   r.   test_integers_ctorh  s   zTestKappa4.test_integers_ctorN)
r   r   r   r6  r8  r9  r<  r=  r>  r?  r-   r-   r-   r.   r/  /  s    					r/  c                   @   r   )TestPoissonc                 C   r   r   r   r   r-   r-   r.   r   o  r   zTestPoisson.setup_methodc                 C   s@   t d}tjg d|}d|d |d d g}t|| d S )Nr9   r   r   r9   rn   r+  )rk   r  r2   poissonr   r   )r   ln2r   rb   r-   r-   r.   test_pmf_basicr  s   
zTestPoisson.test_pmf_basicc                 C   s@   t jg dd}g d}t|| t jdd}t|d d S )NrA  r   )r   r   r   ffffff?r   r   )r2   rB  r   r   intervalr   )r   r   rb   rG  r-   r-   r.   test_mu0y  s
   
zTestPoisson.test_mu0c                 C   r  )Nrn   r   r   r   r   r   )r2   rB  r   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r     r  zTestPoisson.test_rvsc                 C   s   d}t jj |dd}t|||td| d| g tg d}t jj |dd}||tjddtd gtjddgf}t|| d S )	Ng      0@r  r  r   )rs   r   rr   r   r9   rn   )r2   rB  r   rk   r  r   r   )r   r_  r|  rb   r-   r-   r.   r    s    &zTestPoisson.test_statsN)r   r   r   r   rD  rH  r   r  r-   r-   r-   r.   r@  n  s    	r@  c                   @   l   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )	TestKSTwoc                 C   r   r   r   r   r-   r-   r.   r     r   zTestKSTwo.setup_methodc                 C   s   dD ]W}t dd| d| ddd|  dg}d| | }tj|d }|dkr.t |nd}t dd|| ddtjd|  t	dd|  ddg}tj
||}t|| qd S )Nr   r9   r   rf   rg   r6  r   rn   r   r   r9   rs   )rk   r   r1   r   gammalnr=  r2   ksoner-  r  kstworE   r   )r   r
  rB   v1lgelgrb   r  r-   r-   r.   r     s   &zTestKSTwo.test_cdfc                 C   s   t ddd}dD ]U}t dd| d| ddd|  dg}d| | }tj|d }|dkr5t |nd}t ddd||  dtj	d| t
d| ddg}tj	||}t|| q	d S )Nr   r   r  rK  rn   r   r9   )rk   r   r   r1   r   rL  r=  r2   rM  r-  r  rN  r   )r   rB   r
  rO  rP  rQ  rb   r  r-   r-   r.   r0    s   &
zTestKSTwo.test_sfc                 C   s\   t ddddd  }g d}|D ]}|t | }tj||}t |}t|d qd S )Nr   r9   r  r   )r   rg      i  r6  i  r  )rk   r   r  r2   rN  rE   diffr
   )r   rB   ns_xxnprobs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  rK  )rk   r   r2   rN  rE   r-  r   )r   rB   r
  r  r  r-   r-   r.   r    s   zTestKSTwo.test_cdf_sfc                 C   sT   t ddd}dD ]}|t | }tj||}tj||}t|d|  q	d S rZ  )rk   r   r  r2   rN  rE   r-  r   )r   rB   r
  rV  r  r  r-   r-   r.   test_cdf_sf_sqrtn  s   zTestKSTwo.test_cdf_sf_sqrtnc                 C   n   t ddd}dD ]+}||d| k }tj||}d|k |dk @ }tj||}t|| || dd q	d S )	Nr   r   r  rK  rn   r  r  ru   )rk   r   r2   rN  rE   r%  r   r   rB   r
  rV  r  condr   r-   r-   r.   test_ppf_of_cdf  s   zTestKSTwo.test_ppf_of_cdfc                 C   r\  )	Nr   r   r  rK  rn   r   r  ru   )rk   r   r2   rN  r2  r-  r   )r   rB   r
  rV  vals_isfr^  r   r-   r-   r.   test_isf_of_sf  s   zTestKSTwo.test_isf_of_sfc                 C   t   t ddd}dD ].}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  q	d S )Nr   r   r  rK  rn   r   )rk   r   r  r2   rN  rE   r%  r   r]  r-   r-   r.   test_ppf_of_cdf_sqrtn  s   zTestKSTwo.test_ppf_of_cdf_sqrtnc                 C   rb  )Nr   r   r  rK  rn   rE  )rk   r   r  r2   rN  r-  r2  r   )r   rB   r
  rV  r  r^  r   r-   r-   r.   test_isf_of_sf_sqrtn  s   zTestKSTwo.test_isf_of_sf_sqrtnc                 C   sJ   t ddddd  }dD ]}tj||}tj||}t|| qd S rZ  )rk   r   r2   rN  r%  rE   r   )r   rW  r
  rV  r  r-   r-   r.   r    s   zTestKSTwo.test_ppfc              	   C   s   g d}t g d}t g dg dg dg dg dg dg}t|D ]%\}}|t d	 t t jd	 |  }tj||}t	||| d
d q&d S )N)rf   r   rg   rR  r[  r6  )r  gUUUUUU?rn   r   r9   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?r9   h㈵>ru   )
rk   r   	enumerater  r  r=   r2   rN  rE   r   )r   rT  ratiosrb   idxr
  rB   r  r-   r-   r.   test_simard_lecuyer_table1  s   "z$TestKSTwo.test_simard_lecuyer_table1N)r   r   r   r   r   r0  rY  r  r[  r_  ra  rc  rd  r  ri  r-   r-   r-   r.   rJ    s    
		
rJ  c                   @   r  )TestZipfc                 C   r   r   r   r   r-   r-   r.   r   +  r   zTestZipf.setup_methodc                 C   r  )NrG  r   r   r   r   r   )r2   zipfr   r   r<   r   r   r   r   r   r   r   r   r   r-   r-   r.   r   .  r  zTestZipf.test_rvsc                 C   s\   t jj dd\}}tt| t|tj t jj ddd\}}tt||g   d S )Nffffff@r+   r?  skr+   r  )r2   rk  r   rk   r  r   r   r   r  r-   r-   r.   rG  9  s
   zTestZipf.test_momentsN)r   r   r   r   r   rG  r-   r-   r-   r.   rj  *  r  rj  c                   @   r   )
TestDLaplacec                 C   r   r   r   r   r-   r-   r.   r   D  r   zTestDLaplace.setup_methodc                 C   s   t jjddd}tt|dk t|jjtd v  t jd}tt	|t
 t dd}tt	|tj t|jjtd v  tt jdd u d S )NrG  r   r   r   r   r  )r2   dlaplacer   r   r<   r   r   r   r   r   r   r   r   r-   r-   r.   r   G  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   r9   r+  rF  r  r  r  ro  )r2   rq  rk   r   r   r  r   r   )r   r+   dlr=  r>  rA   r?   r]  r(  ppm2m4r-   r-   r.   r  R  s   

&(zTestDLaplace.test_statsc                 C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Nrr   r  )rs   rs   )r  g      
@)rk   r  r2   rq  r   r   )r   r+   rs  r=  r>  rA   r?   r-   r-   r.   test_stats2_  s
   

zTestDLaplace.test_stats2N)r   r   r   r   r   r  rw  r-   r-   r-   r.   rp  C  s
    rp  c                       s   e Zd Zdd Zejddej	dd gdd Z
ejddej	dd g fd	d
Zdd Zdd Zdd Z  ZS )TestInvgaussc                 C   r   r   r   r   r-   r-   r.   r   h  r   zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)r9   r   r   r   rf   c                 C   sB  t jjd|||d}t jj||d\}}}|| }t|}t|t|d |d   }	||	 }
t|
|ddd t|	|ddd t	|| t jjd|||d}t jj||d |d d\}}}t	|d | t	|d | t jj|d	d
d }t jj|d	dd }t jj|d	dd }||  kr|  krd	ksJ  J d S )Nrg   r   r_  r7   r8   r  r  rt   ro  r   r  r  )fmur   )fix_mur   )
r2   r   r   r   rk   r  r   r  r   r   )r   rvs_mur  r  r   r_  r7   r8   mu_temp	scale_mlemu_mle
shape_mle1
shape_mle2
shape_mle3r-   r-   r.   r  k  s.   



*zTestInvgauss.test_fitc           
         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s`J t	t j||	|d d t	t j||	dd t	t j||	|t
jdd d d S )	Nrg   ry  r   r9   )r   rz  r   r  r  )r2   r   r   r   r   r   r   r  r  r   rk   r   r   r  )
r   r}  r  r  r   	super_fitsuper_fittedinvgauss_fitr   r   	__class__r-   r.   r    s*   




z'TestInvgauss.test_fit_MLE_comp_optimzerc                 C   sN   t tj tt tjjg ddd W d    d S 1 s w   Y  d S )Nr   r9   r  )r   r2   r   r   r   r   r   r   r-   r-   r.   test_fit_raise_errors  s   
"z"TestInvgauss.test_fit_raise_errorsc                 C   s   g d}g d}t jjd|d}t|| t jjddd}t|d t jjddd}t|d	 t jd
d}t|d t jdd}t|d d S )N)g4wT;?gjdV&}?g{i\0>gDV_h?gqacX?)r   r   r   r   r   皙?r_  r  ?gfFn   gr^:g9̗?r  gx_;:g!?gٷ
??)r2   r   rE   r   r   r-  )r   r_  rb   r^   
cdf_actual	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   rA  r   r  )r   rA  r  r-   r-   r.   r    s   	


zTestInvgauss.test_logcdf_logsf)r   r   r   r   r   rf  r  rk   r   r  r  r  r  r  r  __classcell__r-   r-   r  r.   rx  g  s    
&#rx  c                       sz   e Zd Zejdg dejdg ddd Zejdg d fd	d
Zdd Zdd Z	dd Z
dd Z  ZS )TestLaplacer  )r  r   r   r9   r  )r   r9   r   rf   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 )	Nrg   r  rt   ro  r  r   r9   r  )r2   r  r   rk   r  r  r~   r   r   r   r   r  r   r   r   r   )r   r  r  r   loc_mler  r7   r8   r-   r-   r.   r    s*   



zTestLaplace.test_fitzrvs_scale,rvs_loc))rf   r  )r   rf   )rU  rn   c                    s   t jjd||d}dd }t j|\}}ttt jt j|\}}||||}	||||}
|	|
k s>tj|	|
ddds@J d S d S )Nr6  r  c              	   S   s8   dt | td|  d| tt||     S )Nr  r9   r   )r   rk   r  r  r~   )r7   r8   r   r-   r-   r.   ll#	  s   z2TestLaplace.test_fit_MLE_comp_optimzer.<locals>.llrt   ro  )r2   r  r   r   r   r   rk   r   )r   r  r  r   r  r7   r8   loc_opt	scale_optll_mlell_optr  r-   r.   r  	  s   
z&TestLaplace.test_fit_MLE_comp_optimzerc                 C   sZ   t g d}tjj|dd\}}t|dddd tjj|dd\}}t|dddd d S )N)r   r   r  r          @r5  r  r  r+  rt   ro  r  )rk   r   r2   r  r   r   )r   r   r7   r8   r-   r-   r.   test_fit_simple_non_random_data1	  s
   z+TestLaplace.test_fit_simple_non_random_datac                 C   sl   d}t j| }|dksJ t j|}|dksJ t j|}|dks'J t j| }|dks4J d S )Nr6  rs   r   )r2   r  rE   r-  )r   rB   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 )NrR  r9   rn  ru   )r2   r  r-  r   rk   r=  )r   rB   r  r-   r-   r.   r0  O	     zTestLaplace.test_sfc                 C   s.   d}t j|}t|td|  dd d S )Ng}:r9   rn  ru   )r2   r  r2  r   rk   r  )r   r  rB   r-   r-   r.   r4  T	  r  zTestLaplace.test_isf)r   r   r   r   rf  r  r  r  r  r  r0  r4  r  r-   r-   r  r.   r    s    +	r  c                   @   r  )TestInvGammac                 C   s   t  P t dt tjjddd}g d}t|| g d}tjj|dd}g dtjdd	gtj	d
dgtj	tj	dgf}t
||D ]	\}}t|| qBW d    d S 1 sWw   Y  d S )Nr  g(\O3@r  ro  )g~?gCX&?g*7gS?gBqFq @)皙?@gffffff@)r  gEy?gў3oz?g^Yb?g,r?gOD@g2*Z@gFN8@)r  r  r  r  r2   r   r   rk   r   r   r   r   )r   r  rb   r+   rB   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   )rk   r#  r2   r   rE   r%  r   r  r-   r-   r.   r)  n	  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        r9   rg      r   r   ru   )	sysmaxsizerk   r#  r2   r   r-  r2  r   r  r-   r-   r.   r  u	  s   
zTestInvGamma.test_sf_isfN)r   r   r   r  r)  r  r-   r-   r-   r.   r  Z	  s    r  c                   @   r   )
TestFc                 C   s\   t jddgg}|D ]\}}}|j|jg|R  }q	dd |D }dd |D }t|| d S )N)r9   r   r   c                 S   &   g | ]\}}}|j |jg|R  qS r-   r;   r+   rJ   _f_argsrP  r-   r-   r.   rL   	     & z(TestF.test_endpoints.<locals>.<listcomp>c                 S      g | ]\}}}|qS r-   r-   rJ   r  r  	_correct_r-   r-   r.   rL   	      )r2   fr;   r+   r   )r   r   r  r  _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   rk   r  r  r-   r-   r.   test_f_moments	  s
   zTestF.test_f_momentsc                 C   sV   t   t dt tjjdgd g ddd W d    d S 1 s$w   Y  d S )Nr  r  r+  )r9   r+  r  r  r  dfndfdr  )r  r  r  r  r2   r  r   r-   r-   r.   test_moments_warnings	  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  r9   r+  r  r  r      )rk   r   r2   r  r   r  )r   r  r  r=  r>  rA   r?   ru  v2s2k2numk2den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 )Nr   r  g?g?)r   r2   r  r  r-   r-   r-   r.   test_rvgeneric_std	  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  )r7  r  )\(?rs   r9   gGz @g     i@r   rn  gGz@r+  g
ףp=
@)rs   gq    @)r   r2   r  rk   r   r   r-   r-   r-   r.   test_moments_t	  s    r  c                  C   s*   g d} g d}t tj| |dd d S )N)r   r9   r  rg   )g?@gTM]?ggY?gU?rn  ru   )r   r2   r  rQ   )r7  rb   r-   r-   r.   test_t_entropy	  s   r  methname)r;   r   rE   r%  r-  r2  
df_infmask)r   r   r   )r   r   r   c                 C   s   t jd t j|td}t jjdd|jd}t jj|j }t j||< t	j
|ddd}t	j
||  ddd}t	jddd}t|| }t|| }t|| }	||}
t|
| |	||  t|
|  |||   d S )	Nr   r   rf   r   r   r   r7  r7   r8   r6   )rk   r   r   r  boolr  r   randnr   r2   r  r  r   r   )r  r  r7  rB   t_dist
t_dist_ref	norm_distt_meth
t_meth_ref	norm_methro  r-   r-   r.   test_t_inf_df	  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 ]}t|| |  ||  t|| |   ||  q@tj	j|ddd}tj
jddd}tj	j||   ddd}t||  | t||   | d S )Nr   r  rf   r   r   r   r  )r7  r7   r8   r  r7   r8   r  r+  r  r6   )rk   r   r   r  r  r  r   r   r2   r  r  r}  r   rQ   )r  r7  ro  
res_ex_infres_ex_noinfr{  r-   r-   r.   test_t_inf_df_stats_entropy	  s"   
r  c                   @   rI  )TestRvDiscretec                 C   r   r   r   r   r-   r-   r.   r   	  r   zTestRvDiscrete.setup_methodc                 C   s   g d}g d}d}t jd||fd}|j|d}tt|tj t||D ]\}}ttt	||kt
| | dk  q&| }tt|tjsLJ d S )N)r  r   r   r9   r   r+  )rs   333333?r  rs   r  rs   r6  sample)namevaluesr   rJ  )r2   rN   r   r   r   r<   r   r   r~   r  r"  rk   
issubdtyper   integer)r   statesprobabilitysamplesrrB   rA   r  r-   r-   r.   r   	  s   &zTestRvDiscrete.test_rvsc                 C   sr   t g d}tjg d|fd}tt|| }| }t|| tjg dg dfd}| }t|d d S )N)r  r@  r  rA  r  )r   r   r   rs   )	rk   r   r2   rN   r  r   rQ   r   r   )r   r*  r  r  r  r-   r-   r.   r  
  s   
zTestRvDiscrete.test_entropyc                 C   sT   g d}g d}t j||fd}ddgddgg}t||dd	gd
dggdd d S )Nr   r9   r+  rn   r  rU  r  r   r  r  r9   rn   rU  rs   r  r  r|   )r2   rN   r   r   )r   xkpkr  rB   r-   r-   r.   r  
  s   

zTestRvDiscrete.test_pmfc                    d   g d}g d}t j||fd g d}g d}t ||dd t fdd	|D |dd d S )
Nr  r  r  )rA  r   r  rG  rr   r  r+  r   )r   rn   rn   rn   r  r  r   r   r  r|   c                       g | ]}  |qS r-   )rE   )rJ   r(  r  r-   r.   rL   -
  r  z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r2   rN   r   rE   )r   r  r  x_valuesrb   r-   r  r.   r   #
     
zTestRvDiscrete.test_cdfc                    r  )
Nr  r  r  )rd   rn   333333?r  rS  r   )r   r   r9   r9   r+  r+  r  r|   c                    r  r-   )r%  )rJ   r'  r  r-   r.   rL   :
  r  z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r2   rN   r   r%  )r   r  r  q_valuesrb   r-   r  r.   r  0
  r  zTestRvDiscrete.test_ppfc                 C   sN   g dg df}t j|d}t|||jd d d |jdd   d S )N)r   r9   r+  r	  r  )rd   rU  r  r  rd   r  r  r  r   )r2   rN   r   r%  rE   r  )r   r   r  r-   r-   r.   test_cdf_ppf_next=
  s
   z TestRvDiscrete.test_cdf_ppf_nextc                 C   s`   t dd}t g dg dg dg}tj||fd}t| t |j	|j
 dd d S )Nr   )r   r+  )rd   rd   r]  rJ  )rd   rd   rJ  rJ  r  r  r|   )rk   r   r  r   r2   rN   r   expectr  r  r  r   r  r  r  r-   r-   r.   test_multidimensionE
  s   
$z"TestRvDiscrete.test_multidimensionc                 C   s   g d}ddg}t ttjfi t||fd g d}t ttjfi t||fd g d}g d}t ttjfi t||fd g d}g d}t ttjfi t||fd d S )Nr   rn   r  )rn   333333?gffffff濩r   r9   r   r+  r   )r  r  r  r  r0  )r  r   r2   rN   r   r   r  r  r-   r-   r.   test_bad_inputN
  s   "zTestRvDiscrete.test_bad_inputc                 C   s   t ddt dd}}tttjfi t||fd t ddt dd}}tttjfi t||fd t ddt dd}}t	tj||fd
dd d S )	Nr+  r9   r9   )r9   r   gUUUUUU?r  r  r   r9   r   )rk   r   r  r  r  r   r2   rN   r   r   r   r  r-   r-   r.   test_shape_rv_sample^
  s    z#TestRvDiscrete.test_shape_rv_samplec                 C   sD   g d}g d}t j||fd}t| t|j|j dd d S )N)r   r9   r+  r  r	  r  )rd   rU  rU  rU  rU  rd   r  r  r|   )r2   rN   r   r  rk   r  r  r  r  r-   r-   r.   test_expect1m
  s   $zTestRvDiscrete.test_expect1c                 C   s   g d}g d}t j||fd}t| | dd t| tdd t||D dd t|dd	 td
d t||D dd d S )N)/g      i@g     r@g      y@g     @@g     @g     @      @g      @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:?rs   gF%uk?g:vz?rs   rs   g.nr?g|гY?rs   rs   rs   g @6*? 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?rs   g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?rs   rs   g N@s?g 1w-!_?r  gൄ|г?rs   gH}}?rs   g
F%u?rs   rs   g ^)ˀ?g v?rs   r  r  r|   c                 s   s    | ]	\}}|| V  qd S ri   r-   rJ   r>  wr-   r-   r.   	<genexpr>
  s    z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c                 S      | d S Nr9   r-   rB   r-   r-   r.   rW   
      z-TestRvDiscrete.test_expect2.<locals>.<lambda>c                 s   s     | ]\}}|d  | V  qdS )r9   Nr-   r  r-   r-   r.   r  
      )r2   rN   r   r  r  r  r   )r   r  pyr  r-   r-   r.   test_expect2t
  s   
zTestRvDiscrete.test_expect2N)r   r   r   r   r   r  r  r   r  r  r  r  r  r  r  r-   r-   r-   r.   r  	  s    	r  c                   @      e Zd Zdd Zdd ZdS )TestSkewCauchyc                 C   sl   t ddd}ttjj|ddtj| ttjj|ddtj| ttjj|ddtj| d S Nr  r   rg   r   rm  )	rk   r   r   r2   
skewcauchyr;   r  rE   r%  r3  r-   r-   r.   test_cauchy
  s   


zTestSkewCauchy.test_cauchyc                 C   s   t jd t jdd d }t jdd d }g d}g d}ttj||| ttj||| ttj	||| d S )Nr   rf   r9   r   r   )
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?)
rk   r   r   r  r   r2   r
  r;   rE   r%  )r   r+   rB   r;   rE   r-   r-   r.   test_skewcauchy_R
  s   z TestSkewCauchy.test_skewcauchy_RN)r   r   r   r  r  r-   r-   r-   r.   r  
  s    	r  c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSkewNormc                 C   s   t d| _d S r   )r   r  r   r-   r-   r.   r   
     zTestSkewNorm.setup_methodc                 C   s0   t ddd}ttjj|ddtj| d S r	  )rk   r   r   r2   skewnormr;   r  r3  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+  r   r   )r+   r   r{   r  )r2   r  r   r  r   r   )r   r   rB   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+  rv  r   r9   )r+   r   r7   r8   r{   r  )r+   r7   r8   r  r   r"  )r2   r  r   r   r  rk   r  r  r  kurtosisr   )r   Xrb   r  r-   r-   r.   rG  
  s   $$zTestSkewNorm.test_momentsc                 C   sF   t jg dd}t|tddd t jdd}t|ddd d S )	N)rf   r  r   r  r   r  ru   r  r  r   )r2   r  rE   r   rk   onesr  r-   r-   r.   test_cdf_large_x
  s   zTestSkewNorm.test_cdf_large_xc                 C   sr   g dg dg dg dg dg}|D ]#\}}}t j||}t||dd t j| | }t||dd qd S )N)rO  r   gzbLe9)r"  r9   gn'/2;)rA  r   g::)rD  r  g|<)rm  r"  Oul2;r  ru   )r2   r  rE   r   r-  )r   cdfvalsrB   r+   cdfvalr  r-   r-   r.   test_cdf_sf_small_values
  s   z%TestSkewNorm.test_cdf_sf_small_valuesN)	r   r   r   r   r  r   rG  r  r  r-   r-   r-   r.   r  
  s    	r  c                   @   r   )
	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  rE   r2  r-  r   r-   r-   r.   	test_tail  s   zTestExpon.test_tailc                 C   ,   t dddddt jg}tttjj| d S No_?46@yX5ͻ@j+?UX@)rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   test_nan_raises_error	     zTestExpon.test_nan_raises_errorc                 C   r  r  )rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   test_inf_raises_error  r%  zTestExpon.test_inf_raises_errorN)r   r   r   r  r  r$  r&  r-   r-   r-   r.   r    s
    r  c                   @   r  )TestNormc                 C   r  r  )rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   r$    r%  zTestNorm.test_nan_raises_errorc                 C   r  r  )rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   r&    r%  zTestNorm.test_inf_raises_errorc                 C   s    g d}t ttjj|dd d S )Nr   shrimp)plate)r  r   r2   r  r   r3  r-   r-   r.   test_bad_keyword_arg  s   zTestNorm.test_bad_keyword_argN)r   r   r   r$  r&  r*  r-   r-   r-   r.   r'    s    r'  c                   @   s    e Zd ZdZdd Zdd ZdS )TestUniformgh-10300c                 C   r  r  )rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   r$  &  r%  z!TestUniform.test_nan_raises_errorc                 C   r  r  )rk   r   r   r  r   r2   r  r   r3  r-   r-   r.   r&  +  r%  z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__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	d	g d
dd Z
ej	dg dg dg dg dg dgdd Zej	dg dg dg dg dg dg dgdd ZdS )TestExponNormc                 C   s   dd }d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d	\}}}d||  }t jj |||dd}t||||| d S )
Nc                 S   sh   dd| | d   }d| | d  |d  }dd| | d  d  }|d|   || d| |    ||gS )Nr   r   r9   r   rY        @rA  r-   )lamsigr_  opK2exp_skewexp_kurtr-   r-   r.   get_moms4  s   $z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   r   r  r  )r  r9   rd   )r   r   r   )r  r  r  )r2   	exponnormr   )r   r5  r_  r1  r0  Kstsr-   r-   r.   rG  2  s"   



zTestExponNorm.test_momentsc                 C   2   t dddddt jg}tttjj|ddd d S 	Nr  r   r!  r"  r#  r   r   r  )rk   r   r   r  r   r2   r6  r   r3  r-   r-   r.   r$  M     z#TestExponNorm.test_nan_raises_errorc                 C   r9  r:  )rk   r   r   r  r   r2   r6  r   r3  r-   r-   r.   r&  R  r;  z#TestExponNorm.test_inf_raises_errorc                 C   sT   t tjddd t tjddd t tjddd t tjddd d S )Ni|r   rs     rp   )r   r2   r6  r;   r   r-   r-   r.   test_extremes_xW  s   zTestExponNorm.test_extremes_xzx, K, expected))r  rp   g6
N-)r   rp   g՜n+H?)r  rp   gi?)r!  rp   gbJI-)rf   r   gI8?)rf   r  gQ3|-0?c                 C   s   t tj|||dd d S )Ngdy=ru   )r   r2   r6  r;   )r   rB   r7  rb   r-   r-   r.   test_std_pdfi  s   zTestExponNorm.test_std_pdfzx, K, scale, expected)r   rp   r   gVAҤ?)r  {Gzt?r   g'^>)r  rp   rg   rs   )r  rp   r6  gbr ;)r   r  r   gVMe?c                 C   <   t jj|||d}|dkr|dksJ d S t||dd d S )Nr  rs   rn  ru   )r2   r6  rE   r   r   rB   r7  r8   rb   r  r-   r-   r.   test_cdf_small_K  s   zTestExponNorm.test_cdf_small_K)rf   rp   r   ghG}$;)r9   r?  r   g]fJ?)r   r?  rn   g31"g#;)rf   r?  rn   gf
+-)r  r?  rn   rs   )r  r  r   ga9S?c                 C   r@  )Nr  rs   g-a=ru   )r2   r6  r-  r   rA  r-   r-   r.   test_sf_small_K  s   zTestExponNorm.test_sf_small_KN)r   r   r   rG  r$  r&  r=  r   rf  r  r>  rB  rC  r-   r-   r-   r.   r.  1  s8    

r.  c                   @   r  )TestGenExponc                 C   s@   ddl m} tjtdddddd}t||dddd d S )	Nr   )simpsrf   rp   rn   rr   )dxr   )scipy.integraterE  r2   genexponr;   r<   r   r   )r   rE  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   rf   rp   rn   rr   r   )r2   rH  rE   r<   r   r   r   )r   rE   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   r9   rG  gM <rn  ru   )r2   rH  r-  r   r/  r-   r-   r.   test_sf_tail  s   zTestGenExpon.test_sf_tailN)r   r   r   rI  rJ  rK  r-   r-   r-   r.   rD    s    rD  c                   @   r  )TestExponpowc                 C   s6   t tjddd t tjtjdddd d S )N绽|=rr   r  r   r  )r   r2   exponpowrE   r2  r-  r   r-   r-   r.   r    s   zTestExponpow.test_tailN)r   r   r   r  r-   r-   r-   r.   rL        rL  c                   @   r  )TestSkellamc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nrm  r   rf   r   )gYjP'?g$S?gQ`s2?gC/qF?gD<]Y?g/Xj?g86y?g]a¨?g:?g?gQ>?g?g:?g]a¨?g96?g0X?gA<]?gB/q?gQ`s?g$S?gYjP'?gX_?g+rx?gfSr?gJXx~?r   )r<   r   r   r   r2   skellamr   )r   r?   mu1mu2skpmfRr-   r-   r.   r       zTestSkellam.test_pmfc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nrm  r   rQ  )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ñݸ?r   r   )r<   r   r   r   r2   rR  rE   )r   r?   rS  rT  skcdfRr-   r-   r.   r     rV  zTestSkellam.test_cdfN)r   r   r   r  r   r-   r-   r-   r.   rP    s    rP  c                   @   r  )TestLognormc                 C   sZ   t   t dt tjg dd}t|g d W d    d S 1 s&w   Y  d S )Nr  r   rn   r   r   )rs   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?rV   )r   r2   r   r-  r  rk   r  r  )r   r  r_  sigmar-   r-   r.   r    s   
zTestLognorm.test_logcdfN)r   r   r   r   r  r-   r-   r-   r.   rX    s    rX  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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   rn   g;B.)r2   rs  r   r   rk   r   r   r   r-   r-   r.   rX    s   
zTestBeta.test_logpdfc                 C   sV   d\}}t g d}t||}t|| d t||t || d S )Ni  i  rU  rn   r  gƒ)	rk   r   r2   rs  r   r   r  r;   r=  r   r   rs  rB   r,   r-   r-   r.   test_logpdf_ticket_1866  s
    z TestBeta.test_logpdf_ticket_1866c                 C   s$   g d}t ttjj|dddd d S )Nrd   rn   r  r   r   r(  )r   r   r)  )r  r   r2   rs  r   r3  r-   r-   r.   test_fit_bad_keyword_args  s   
z"TestBeta.test_fit_bad_keyword_argsc                 C   s"   g d}t ttjj|ddd d S )Nrc  rn   )fafix_a)r  r   r2   rs  r   r3  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   sh   t g d}t g d}d}tj||d d| }t|| tj||d d| }t|| d S )N)g@3@?g^?gNC?)rf   rg   r6  r  r   r  )rk   r   r2   rs  r2  r   r-  )r   inv_R
count_listr  invro  r-   r-   r.   test_issue_12794-  s   
zTestBeta.test_issue_12794c           	      C   sb   d}t dd}d}d| |d || }}}tj|||}tj|||}t|d|  d S )Nh㈵>r   r  r  )rk   r   r2   rs  r%  rE   r   )	r   alpha_2count_nobsr'  r+   r,   rm  ro  r-   r-   r.   test_issue_12796?  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   )rU  r   r   )r   r2   rs  r;   rk   r   )r   r+   r,   r-   r-   r.   r  K  s   zTestBeta.test_endpointsc                 C   sJ   d\}}}t t tj||| W d    d S 1 sw   Y  d S )N)gףp=
?g   vH7Bg  @0B)r   warnsr  r2   rs  r%  )r   r'  r+   r,   r-   r-   r.   test_boost_eval_issue_14606V  s   
"z$TestBeta.test_boost_eval_issue_14606N)r   r   r   rX  rb  rd  rg  r   rf  skipifMACOS_INTELrj  rn  rs  r  ru  r-   r-   r-   r.   r]    s    


r]  c                   @   r  )TestBetaPrimec                 C   sZ   d\}}t g d}t||}tt ||  t|	|t 
|| d S )Nr_  r`  )rk   r   r2   r   r   r  r   r   r   r;   r=  ra  r-   r-   r.   rX  ]  s
    zTestBetaPrime.test_logpdfc                    s   t jddd}t|d d\ tg d}t j| }tt|  t j	j
 fdd|D }t||dd	d
 d S )Nr   rU  r  rs   r_  r`  c                    s   g | ]
}t j| qS r-   )r2   r   )rJ   r   r   rs  gen_cdfr-   r.   rL   q      z*TestBetaPrime.test_cdf.<locals>.<listcomp>g-=ro  )r2   r   rE   r   rk   r   r   r  r   rO   _cdf_singler   )r   rB   r$  cdfs_gr-   ry  r.   r   d  s   
zTestBetaPrime.test_cdfN)r   r   r   rX  r   r-   r-   r-   r.   rx  \      rx  c                   @   r   )
	TestGammac                 C   s<   t jjdddd}t|d t jjdddd}t|d d S )	NZ   i  rU  r  g
CTb?r   rf   gBΖ?)r2   r  r;   r   rZ  r-   r-   r.   r   v  s   
zTestGamma.test_pdfc                 C      t jdd}t|d d S r  )r2   r  r   r   r^  r-   r-   r.   rX  ~  s   zTestGamma.test_logpdfc                 C   s"   g d}t ttjj|ddd d S )Nrc  r   r(  )r   r)  )r  r   r2   r  r   r3  r-   r-   r.   rd    s   z#TestGamma.test_fit_bad_keyword_argsc                 C   s@   t jtjdddddsJ t jtjdddd	dsJ d S )
NrF  r   gplC@r  r|   gJz5rg   g1}t@rn  )rk   iscloser2   r  r2  r   r-   r-   r.   r4    s   
zTestGamma.test_isfN)r   r   r   r   rX  rd  r4  r-   r-   r-   r.   r  u  s
    r  c                   @   r  )TestChi2c                 C   s4   t tjddddd t tjddddd d S )Nr6  gޞw1D?   r   rg   g6:֜?r   r2   chi2r;   r   r-   r-   r.   ra    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 <rM  ru   rn   gQ8@   gܐ؆0guu[9=rd   g8-*@)r2   r  r%  r   )r   r7  rB   r-   r-   r.   r    s   zTestChi2.test_ppfN)r   r   r   ra  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   r  Nr  r"  )rk   r   r2   r  rE   r%  r   r  r-   r-   r.   r)    r  zTestGumbelL.test_cdf_ppfc                 C   sH   t dd}tj|}tj|}t |}t| }t	|| d S r  )
rk   r   r2   r  rA  r  r=  r   expm1r   )r   rB   r  r  ur>  r-   r-   r.   r    s   
zTestGumbelL.test_logcdf_logsfc                 C   r  )Nr!  r   )rk   r   r2   r  r-  r2  r   r  r-   r-   r.   r    r  zTestGumbelL.test_sf_isfr7   r  r   c                 C   s2   t jjd|d}t jj||d\}}t|| d S )Nrg   )r   r7   r  )r2   r  r   r   r   )r   r7   r   
fitted_locrP  r-   r-   r.   test_fit_fixed_param  s   z TestGumbelL.test_fit_fixed_paramN)
r   r   r   r)  r  r  r   rf  r  r  r-   r-   r-   r.   r    s    r  c                   @   r  )TestGumbelRc                 C      t tjdddd d S )Nr   g?~T}%m;r  ru   )r   r2   r  r-  r   r-   r-   r.   r0       
zTestGumbelR.test_sfc                 C   r  )NrF  r  r  ru   )r   r2   r  r2  r   r-   r-   r.   r4    r  zTestGumbelR.test_isfN)r   r   r   r0  r4  r-   r-   r-   r.   r    s    	r  c                   @   s  e Zd Zejdd Zejdd Zejdd Zej	de
dej
d	ejjd
gej	dddgej	dg dej	dddgdd Zejjej	dddgdd Zdd Zejjddej	ddd gej	d!ddgd"d# Zd$d% Zd&d' Zd(d) Zej	d*e
g d+g d,g d-ej
g d.g d/g d0ejjd
ej
g d1ed2d3d4ed5dd6ejjd
gd7d8 Zej	d*e
g d+g d,g d-ej
g d.g d/g d0ejjd
ej
g d1ed2d3d4ed5dd6ejjd
gd9d: Zej	d;d<dgej	d=d>d?gd@dA Zej	dBdCdDgdEdDggdFdG Zej	dHdId<ejejejfgdJdKggdLdM Zej	dNg dOej	dPejj dQedRd<dSdTfejj!dQedRd<dSdTfejj dUed<dVdSdQfejj!dUed<dVdSdTfgdWdX Z"dYS )ZTestLevyStablec                 C   ,   t ttjd }t jjj|jdd}|S )a  Sample data points for pdf computed with Nolan's stablec

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

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

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

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

        Typically inputs for stablec:

            stablec.exe <<
            1 # pdf
            1 # Nolan S equivalent to S0 in scipy
            .25,2,.25 # alpha
            -1,-1,0 # beta
            -10,10,1 # x
            1,0 # gamma, delta
            2 # output file
        z.data/levy_stable/stable-Z1-pdf-sample-data.npyx,p,alpha,beta,pctnames	rk   loadr   __file__parentcorerecords
fromarraysTr   r   r-   r-   r.   nolan_pdf_sample_data  s   z$TestLevyStable.nolan_pdf_sample_datac                 C   r  )a#  Sample data points for cdf computed with Nolan's stablec

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

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

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

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

        and the equivalent for the right tail

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

        Typically inputs for stablec:

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

        Data extracted in similar way to pdf/cdf above using
        Nolan's stablec but set to an arbitrary location scale of
        (2, 3) for various important parameters alpha, beta and for
        parameterisations S0 and S1.
        z1data/levy_stable/stable-loc-scale-sample-data.npy)rk   r  r   r  r  r  r-   r-   r.   nolan_loc_scale_sample_data9  s   	z*TestLevyStable.nolan_loc_scale_sample_datasample_sizer   rH  )marksparameterizationS0S1z
alpha,beta))r   r   )r   r[  )rG  r   )r2  rn   zgamma,deltar   r   r  c           
      C   sF   |t j_t j||||d}t |j|dd|j\}}	|	dks!J d S )N)r   rs  r8   r7   r   rI  rJ  )r2   levy_stabler  rM  r   rE   )
r   r  r   rs  r  rt  r  lsrP  r  r-   r-   r.   r   H  s   zTestLevyStable.test_rvsrs  rn   r   c                 C   sZ   t jd d}d}d}tjj||||dd}tj|d||||fd\}}|d	ks+J d
S )z3Additional test cases for rvs for alpha equal to 1.h:r   rn   rG  i  r7   r8   r   r  r\  rp   N)rk   r   r   r2   r  r   rM  )r   rs  r   r7   r8   rB   statr  r-   r-   r.   test_rvs_alpha1d  s   

zTestLevyStable.test_rvs_alpha1c                 C   s   g d}t j|\}}}}t|dddd t|dd t|dd	 t|d
d |g d }t j|\}}}	}
t|d t|d t|
dd	 t|	dd	 d S )N)wgr  rs   rs   rs   rs   羼 u?r  r  r  r  67',?r  r  r  r  tA}˜.?r  r  r  r  Gz?r   rp   r   )\(̿r9   gۧ1?r+  g9]c?)r  r  r  r  r  r  gv?r  )r2   r  r  r   r   r   r   rB   alpha1beta1loc1scale1r  alpha2beta2loc2scale2r-   r-   r.   r  r  s   

zTestLevyStable.test_fitzUnknown problem with fitstart.rh  zalpha,beta,delta,gamma)rG  r  r9   r   )r   r  r9   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   r7   r8   r   r{   rp   ru   N)r2   r  r  r   r  r   )r   r   rs  rt  r  r  r   r   	alpha_obsbeta_obs	delta_obs	gamma_obsr-   r-   r.   test_fit_rvs  s   


zTestLevyStable.test_fit_rvsc           
      C   s~   t g d}tj|\}}}}tj| \}}}}	t|d |dks'J t|| t||  t||  t|	| d S )Nr   r   r   r   rf   rf   rf   r   r   rg   rg   r   r   )rk   r   r2   r  r  r   r   )
r   rB   r  r  r  r  r  r  r  r  r-   r-   r.   test_fit_beta_flip  s   

z!TestLevyStable.test_fit_beta_flipc                 C   sr   d}t g d}tj| \}}}}tj| | \}}}	}
t|| t|| t|	||  t|
| d S )Nr   r  )rk   r   r2   r  r  r   )r   SHIFTrB   r  r  r  r  r  r  r  r  r-   r-   r.   test_fit_delta_shift  s   

z#TestLevyStable.test_fit_delta_shiftc                 C   s   g d}t j|\}}}}|dk sJ d| |t|k s+J dt| d| g d}t j|\}}}	}
|dksDJ d| |	t|ksVJ dt| d|	 d S )	N)r   r   r   r   rf   rf   rf   r   r      r  r   zExpected alpha < 1, got zExpected loc < z, got )r   r   r   r   rf   rf   rf   r   r      r  zExpected alpha > 1, got zExpected loc > )r2   r  r  r  r  r  r-   r-   r.   test_fit_loc_extrap  s   $(z"TestLevyStable.test_fit_loc_extrapz pct_range,alpha_range,beta_range)rp   rn   r  )rd   r   r9   )r  r   r  )rp   rJ  rn   rE  r  )rd   rn   r   rG  r9   )gr[  r   r  r  r   )rp   rJ  rd   r  ffffff?rn   ?r   rS  rE  r  rd   r9   r  r     c                    s  |}t  }|jdko|jdkd|j|j|jg}dd fddgdd	 fd
dgdd	 fddgdd fddgdd fddgdd fddgg}t|D ]\}	\}
}}|
tj_	|durs||| n|}t
 v}|td tjj|d |d |d ddd}tjdd( t|g d|t||d  t||d  t|d  g}W d   n1 sw   Y  ||d |kt|B  }t||d |d |	|
||jj|f d!d" W d   n1 sw   Y  q^dS )#z2Test pdf values against Nolan's stablec.exe outputLinuxi686/dnir7  c              	      s  t | d t | d  @ t | d @ | d dk| d dk@ | d dk| d dk@ | d dk@ B | d dkt | d d	d
g@ B | d dkt | d ddg@ B | d dkt | d ddg@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d dg@ t t | d dg@ B | d dkt | d ddg@ t t | d g d@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dkt | d dg@ t t | d g d@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d d	d
g@ t t | d ddg@ B | d dkB  @ S )Npctr   rs  r   rn   rS  皙?r  rp   r  r  rJ  rE  rU  rd   r  r   )rn   r  ffffff?r  r  )gٿ333333ӿr  r  rn   r  r   rd   rU  r  r  )r  rS  r   r1  r  )rk   isinr~   r  alpha_range
beta_range	pct_ranger-   r.   rW     s   











 
%


*


/


4
9
>
Cz7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	piecewiser  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rs  rU  r   rk   r  r  r  r-   r.   rW   <     

c                    s:   | d dk @ t | d @ d v @ t | d @ S )Nr   r   r  rs  r  r  r  r  is_linux_32r  r-   r.   rW   G  s   
g|=c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   rs  rU  r  r  r  r-   r.   rW   Q     
fft-simpsonre  c                    s<   | d dkt | d @ t | d  @ t | d @ S )Nr   r2  r  rs  r  r  r  r-   r.   rW   Z  s   
rx  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk @ S )Nr  r   rs  r   r2  r  r  r  r-   r.   rW   b  r  Nz2Density calculations experimental for FFT method.*rB   r   rs  r   r   r8   r7   r  overcalcabserrrelerrr  r  z8pdf test %s failed with method '%s' [platform: %s]
%s
%sFerr_msgverbose)platformunamesystemmachinejoin	processorrf  r2   r  pdf_default_methodr   recordr  r;   rk   r  r   r~   isnanr   r   r  )r   r  r  r  r  r   r  platform_desctestsixdefault_methodrv   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urY||
| n|}t u}|td tjj|d |d |d ddd}tj	dd( t
|g d|t||d  t||d  t|d  g}W d   n1 sw   Y  ||d |	kt|B  }t||d |	d|||jj|f dd W d   n1 sw   Y  qDdS ) z4 Test cdf values against Nolan's stablec.exe output.r  r8  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ | d dkt | d g d@ | d dk@ B  @ S 	Nr  r   rs  r   )r  r0  r1  rp   rd   rU  r  r  r  r  r  r-   r.   rW     s$   



z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>rJ  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ @ | d dkt | d g d@ | d dk@ B S r  r  r  r  r-   r.   rW     s"   


	
r  re  c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r   rs  333333?r  r  r  r-   r.   rW     r  r  c                    H   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r   rs  rG  r  r  r  r  r-   r.   rW     r  r  c                    r  )Nr  r   rs  ?rG  r  r  r  r-   r.   rW     r  rp   c                    r  )Nr  r   rs  r   r  r  r  r  r-   r.   rW     r  Nz[Cumulative density calculations experimental for FFT method. Use piecewise method instead.*rB   r   rs  r   r   r  r  r  r  r  r  z)cdf test %s failed with method '%s'
%s
%sFr  )rf  r2   r  cdf_default_methodr   r  r  rE   rk   r  r   r~   r  r   r   r  )r   r  r  r  r  r   r  r  r  rv   r  r  r  r  r  r   r-   r  r.   test_cdf_nolan_samples  sz   	

N

z%TestLevyStable.test_cdf_nolan_samplesr   r   rE  r;   rE   c                 C   s   |}dt j_dt j_||d |k }d| t j_|dv sJ |dkr't 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  r   S)r;   rE   r;   rB   r   rs  r9   r   r  re  N)r2   r  r  r  r  r;   rE   r   )r   r  r   rE  r   r  r  rO  r-   r-   r.   test_location_scale,  s   z"TestLevyStable.test_location_scalezmethod,decimal_placesr  r+  r  c              	   C   s   t g d}t g d}t g d}t jddA t %}|jtdd |tj_tjj	|d|dd	d
}t
|||| W d   n1 sGw   Y  W d   dS W d   dS 1 s_w   Y  dS )z sample points extracted from Tables and Graphs of Stable
        Probability Density Functions - Donald R Holt - 1973 - p 187.
        )r   r   r   r   r   r   r   r   r9   r9   r9   r9   r   r   r   r   r+  r+  r+  r+  )gtF_?gܵ|?gQ?g@?gec]?gHP?gPkw?g!rh?gTN?g?gDioɴ?g r?gH?g+?gHPs?gX ?g&?g0*?gv/?ga2U0*?)r   r  rn   r   r   r  rn   r   r   r  rn   r   r   r  rn   r   r   r  rn   r   r  r   zDensity calculation unstable.*)categorymessager   r   r  N)rk   r   r  r   r\   r  r2   r  r  r;   r   )r   methoddecimal_placesxsdensitybetasr  r;   r-   r-   r.   'test_pdf_alpha_equals_one_beta_non_zeroF  s(   Pz6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zerozparams,expected)r  r  r   r   )r9   rS  rf   rG  )rf   r  r   r   c                 C   s4   t jj |d |d |d |d dd}t|| d S )Nr   r   r9   r   r  r  )r2   r  r   )r   paramsrb   observedr-   r-   r.   r  m  s
   zTestLevyStable.test_statsr   )r  rn   r   zfunction,beta,points,expectedr   irf   rs   r  r  c                 C   s@   d|  k rdk sJ  J t ||||dtt|| dS )a\  Ensure the pdf/cdf routines do not return nan outside support.

        This distribution's support becomes truncated in a few special cases:
            support is [mu, infty) if alpha < 1 and beta = 1
            support is (-infty, mu] if alpha < 1 and beta = -1
        Otherwise, the support is all reals. Here, mu is zero by default.
        r   r   )r   rs  N)r   rk   r  r   )r   r   r  rs  r  rb   r-   r-   r.   !test_distribution_outside_support{  s
   (z0TestLevyStable.test_distribution_outside_supportN)#r   r   r   r   r  r  r  r  rf  r  r   rg  r   r  r  xfailr  r  r  r  rk   r   xslowr  r  r
  r  r   NaNr  r2   r  rE   r;   r  r-   r-   r-   r.   r    s    
!
+

 B
{
 
r  c                   @   r  )TestArrayArgumentc                 C   r   r   r   r   r-   r-   r.   r     r   zTestArrayArgument.setup_methodc                 C   s.   t jjtdtddd}t|jd d S )Nr   rQ  r  )r2   r  r   rk   r   r  r   r   r   r   r-   r-   r.   test_noexception  s   z"TestArrayArgument.test_noexceptionN)r   r   r   r   r  r-   r-   r-   r.   r        r  c                   @   r  )TestDocstringc                 C   sH   t jjd urtdt jj v  t jjd ur"tdt jj v  d S d S )Nr   r  )r2   r   r-  r   lowerr  r   r-   r-   r.   test_docstrings  s
   zTestDocstring.test_docstringsc                 C   s   t   t   d S ri   )r2   rO   rN   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    r~  r  c                  C   s   t g d} t| dk| d\}}t|g d t|g d tddk| d\}}t|| d  t|dg t| dk| d\}}t||  t|dgt|   d S )N)r   r   r9   r   r9   r   r   r   r9   )r   r9   r9   r   r   )r9   r9   r9   r9   r9   r   )r   r   r   r<   r   r+   r,   r&  r-   r-   r.   TestArgsreduce  s   
r#  c                   @   s   e Zd Zg dZdd Zg dZejde	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejdddgdd Zejdddgdd ZdS )TestFitMethod)ncfrM  rN  c                 C   r   r   r   r   r-   r-   r.   r     r   zTestFitMethod.setup_method)r  r  r  z	dist,argsc                 C   sz   || j v rtd|  tdddddtjg}tdddddtjg}tt|}t	t
|j|dd t	t
|j|dd d	S )
r,  z"%s fit known to fail or deprecatedr  r   r!  r"  r#  r   r  N)fitSkipNonFiniter   skiprk   r   r   r   r   r2   r  r   r   )r   rK   r   rB   r  distfuncr-   r-   r.   !test_fit_w_non_finite_data_values  s   

z/TestFitMethod.test_fit_w_non_finite_data_valuesc              	   C   s   t jd t jdd8 tjjddddd}t t |t d d	 	 }t
t tjj|d
dd|d
dgdd W d    d S 1 sGw   Y  d S )Ni90  r  r  r  rs         4@r  r   r9   r   r  r  r|   )rk   r   r   r  r2   r   r   r  r  r  r   r   r   )r   rB   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   r9   r  r  )rk   r   r2   r  r   r   r  r   r   rB   r7   r8   r-   r-   r.   test_fix_fit_norm  s   


zTestFitMethod.test_fix_fit_normc                 C   sn  t dd}t | }d}tjj||d\}}}t | | }tt |t	| |dd t
|| t|| | dd d}d}tjj|||d\}}}t
|| t
|| t|| | dd d	}d}tjj|||d\}}}t
|| t
|| t|| | dd d}d	}	tjj|||	d
\}}}t
|| t
||	 |t |	 }
tt	||
 d S )Nr   r  r   r  r   r   r  r   r   r9   r  )rk   r   r  r  r2   r  r   r   r   digammar   )r   rB   meanlogr   r+   r7   r8   rA   r   r   r&  r-   r-   r.   test_fix_fit_gamma  s6   






z TestFitMethod.test_fix_fit_gammac              	   C   s  dd }t g d}tjj|ddd\}}}}t|d t|d t||||ddgdd t g d}tjj|d	ddd
\}}}}t|d	 t|d t|d ||||\}}t|ddd d| }	tjj|	d	ddd\}
}}}t|d	 t|d t|d ||
||	\}}t|ddd t|
| tt	tjj|ddd t g d}tt	tjj|ddd tt	tjj|ddd	d tt	tjj|ddd	d tt	tjj|ddd	dd d S )Nc                 S   sj   t |}t| }td|  }t| | }||| t|    ||| t|   g}|S Nr   )r   rk   r  r  r   psi)r+   r,   rB   r
  s1r  psiabr   r-   r-   r.   mlefunc'  s   z0TestFitMethod.test_fix_fit_beta.<locals>.mlefunc)r  r  rn   r   r   r  rx  r|   r9   )r   r   r   re  )r   r   r   rn   rY  )r   r   r   )r   r   r   r   )r   r   r   r   )
rk   r   r2   rs  r   r   r   r   r  r   )r   r7  rB   r+   r,   r7   r8   dadbr  a2b2r  r  r  r-   r-   r.   test_fix_fit_beta$  s:   









zTestFitMethod.test_fix_fit_betac                 C   s   t g d}tj|\}}t|d t|d tjj|dd\}}t|d t|d tjj|dd\}}t|d t|d d S )N)r9   r9   r+  r+  r+  r+  r+  r  r9   r   r  r   r  r+  )rk   r   r2   r  r   r   r-  r-   r-   r.   test_expon_fit[  s   




zTestFitMethod.test_expon_fitc                 C   s   t g d}t |d }tjj|dd\}}}t|| dd t|d t|t 	|
 dd tjj|ddd\}}}t|t |t d d 
 dd t|d t|d tjj|dd	d
\}}}t|d	 t|d t|t 	|
 dd d S )N)rG  r   rf   r      ;   r   r  r8  ru   r  r  r9   r   )r   fix_s)rk   r   r  r2   r   r   r   r  r   r=  r  r  )r   rB   lnxm1r   r7   r8   r-   r-   r.   test_lognorm_fitj  s    




zTestFitMethod.test_lognorm_fitc                 C   s   t g d}tj|\}}t||  t||  tjj|dd\}}t|d t||  tjj|dd\}}t|d t|d t	t
tjj|dd t	t
tjj|dd d S )N)r   r  r        "@r   r  rf   r  rr   r   )rk   r   r2   r  r   r   r  ptpr  r  r   r-  r-   r-   r.   test_uniform_fit~  s   


zTestFitMethod.test_uniform_fitr  MLEMMc              
   C   sl  d\}}t jj||ddd}t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d
}t||ddd	 t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d}t||ddd	 ttt jj|dd|d ttt jj|dddd|d t jj|ddd|d}	|	\}
}}}t|
||gg d d}t jj|dd}t jj|||d\}
}}t|
| d S )N)r  r  rg   r   rI  r  )r   r  )re  r  r8  ro  )rf  r  r  )r   r  )r  r  )r  r  r   r9   )re  r   r  r   r   )re  r   r   r   r  )re  r   r   r  )r  r   r   r   )	r2   rs  r   r   r   r  r   r   r  )r   r  r+   r,   rB   res_1res_2res_3res_4res_5aabbr  ssr   r-   r-   r.   test_fshapes  s.   zTestFitMethod.test_fshapesc                 C   s@   t j}|jddd}tdd}tt|j|fi |d|i d S )Nr9   rg   )r7  r   i)enikibenikir  )r2   r6  r   r   r  r   r   )r   r  rK   r   r   r-   r-   r.   test_extra_params  s   
"zTestFitMethod.test_extra_paramsN)r   r   r   r'  r   r&  r   rf  r  r   r)  r,  r.  r2  r<  r=  rB  rE  rP  rR  r-   r-   r-   r.   r$    s"    

	&7
&r$  c                   @   rh  )
TestFrozenc                 C   r   r   r   r   r-   r-   r.   r     r   zTestFrozen.setup_methodc                 C   s  t j}t jddd}|d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| | }|jddd}t|| |	 }|j	ddd}t|| |
 }|j
ddd}t|| | }|jddd}t|| | }|jddd}t|| |d}|jdddd}t|| t|j|j t|j|j d S )Nr  r  r6   r*  r  r9   )r2   r  r;   r   rE   r%  r2  r-  r  r  r  r  rQ   rz  r+   r,   )r   rK   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 )Nrr   r*  r  r  r9   )r2   r  r;   r   rE   r%  r2  r-  r  r  r  r  rQ   rz  r+   rK   r,   )r   r+   rK   rT  rU  r|  r-   r-   r.   
test_gamma  sL   






















zTestFrozen.test_gammac                 C   s8   t d}|d}|j dd |d}t|| d S )Nr   r9   r  r  )r2   r   rz  r   )r   rT  m1ru  r-   r-   r.   test_regression_ticket_12930  s
   


z&TestFrozen.test_regression_ticket_1293c                 C   sR  d}t j|d}|j|\}}t||gddg d}t jjd|d t|j|dtjg d}t j|d}|j|\}}t||gddg d}t jd| t|jj|jj	ft j| t jdd}t
|j|ju dD ]6}t|}t j|d}|j|j	}}t|d t
t| td}t j|\}}t||gdd	g qpd S )
Nr1  r  rs   r  rd   r   r  r  rn   )r2   r  rK   r  r   r;   rk   r   r+   r,   r   r  r  r   )r   r&  r  r+   r,   rv1r-   r-   r.   r  ?  s4   



zTestFrozen.test_abc                 C   s   t ttjd d S )N	rv_frozen)r   r*   r2   r3   r   r-   r-   r.   test_rv_frozen_in_namespacek  s   z&TestFrozen.test_rv_frozen_in_namespacec                 C   sV   t  }tt|d d|_t|j tj	d  tj	d}|j
d|d d S )Nr{   *   r   r  rI  )r2   r  r   r*   r{   r   	get_staterk   r   RandomStater   )r   rT  rndmr-   r-   r.   test_random_stateo  s   
zTestFrozen.test_random_statec           
      C   s   t dd}t d}t jg dg dfd}|||fD ]H}d|_|jdd	 t|}|jdd	}t|}|jdd	}t	|| |
d
|
d
g}	t	|	d |	d  t	||	d ||	d  qd S )Ngdsz@g@e?r  )r   r   r9   r   r  r  r   r  r   rn   r   r   )r2   rs  rB  rN   r{   r   pickledumpsloadsr   r%  rE   )
r   rs  poissr  distfnrA   r0	unpickledr1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 |j|d	dd
d}t jj|dddd	dd
d}W d    n1 s4w   Y  t|| t jddd}||}t jj|ddd}t|| d S )Nc                 S      | S ri   r-   r  r-   r-   r.   r        z$TestFrozen.test_expect.<locals>.funcr9   r   r+  )r+   r7   r8   r  )r  divider   T)lbubconditionalr9   r   r7   r8   rn  ro  rp  r7   )r   r   r7   )r2   r  rk   r  r  r   rB  )r   r   gmgm_val	gamma_valr  p_valpoisson_valr-   r-   r.   test_expect  s   

zTestFrozen.test_expectN)r   r   r   r   r  rV  rX  r  r[  r`  rj  rz  r-   r-   r-   r.   rS    s    34,rS  c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )
TestExpectc                 C   s   t jjdd ddd}t|ddd t jjd	d ddd}t|ddd t jjd
ddd}t jjdddd}t jjdd dd||d}t|ddd t jjdd dd||dd}t|ddd d S )Nc                 S      | d | d  S )Nr   r-   r  r-   r-   r.   rW     rX   z&TestExpect.test_norm.<locals>.<lambda>r   r9   r6   r+  r  r   c                 S   rk  ri   r-   r  r-   r-   r.   rW         rJ  rE  c                 S      dS r3  r-   r  r-   r-   r.   rW     r}  r7   r8   rn  ro  rS  c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  Tr7   r8   rn  ro  rp  r   )r2   r  r  r   r%  )r   r>  r=  rn  ro  prob90prob90cr-   r-   r.   r    s   zTestExpect.test_normc              	   C   s   t jjdd dddd}t|ddd	 t jjd
d dddd}t|ddd	 t jjdddddd}t jjdddddd}t jjdd ddd||dd}t|ddd	 t jjdd ddd||dd}t|ddd	 d S )Nc                 S   r|  )NUUUUUU@r-   r  r-   r-   r.   rW     rX   z&TestExpect.test_beta.<locals>.<lambda>rQ  r   r9   )r   r7   r8   qq?r  r   c                 S   rk  ri   r-   r  r-   r-   r.   rW     r}  r   rr   r  rE  rf   r6   rJ  c                 S   r~  )Nr   r-   r  r-   r-   r.   rW     r}  )rf   rf   Frr  rS  c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  Tr   )r2   rs  r  r   r%  )r   r>  r=  ro  rn  r  r  r-   r-   r.   	test_beta  s    zTestExpect.test_betac           
      C   s&  t jj ddddd\}}t jjdd ddd	}t||d
d t jjdd ddd	}t||dd t jjdd dddd
d}t||dd dt jjdd
gddddd  }t jjdd ddddd}t||d
d t jjdd dddddd}t|ddd t jjdd dddd}	t|	dd
d d S )Nr  rf   r  r   rs  c                 S   rk  ri   r-   r  r-   r-   r.   rW     r}  z+TestExpect.test_hypergeom.<locals>.<lambda>)r  rf   r  rt  r  r   c                 S      | d d S NrC  r9   r-   r  r-   r-   r.   rW         r  c                 S   r  r  r-   r  r-   r-   r.   rW     r  r   )r   r7   rn  ro  r   c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  r  r   c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  T)r   r7   rn  ro  rp  c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  r   )r   rn  ro  )r2   rZ  r  r   r   r  )
r   m_truev_truer=  r>  v_bounds	prob_trueprob_boundsprob_bcprob_br-   r-   r.   test_hypergeom  s2   "zTestExpect.test_hypergeomc                 C   sb   t jjdd dddd}dt jdd }t||d	d
 t jjdd dddd}t|dd	d
 d S )Nc                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  z)TestExpect.test_poisson.<locals>.<lambda>rq  r   F)r   rn  rp  r   r9   r  r   c                 S   r~  r3  r-   r  r-   r-   r.   rW     r}  T)r2   rB  r  rE   r   )r   r  prob_b_true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)rG  r\  )rn   r  r   )r2   genhalflogisticr  r   )r   halflogres1rq  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   r~  r3  r-   r  r-   r-   r.   rW     r}  z/TestExpect.test_rice_overflow.<locals>.<lambda>)r  r\  c                 S   r~  r  r-   r  r-   r-   r.   rW     r}  c                 S   r~  Nr   r-   r  r-   r-   r.   rW     r}  )r   rk   r  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   rk  ri   r-   r?   r-   r-   r.   rW     r}  z(TestExpect.test_logser.<locals>.<lambda>r\  r   rt   r|   c                 S   rk  ri   r-   r  r-   r-   r.   rW     r}  rt  )r2   r  r  r   rk   r  )r   r  r7   res_0res_lr-   r-   r.   test_logser  s   zTestExpect.test_logserc                 C   sh   d\}}t jjdd ||fd}t jjdd ||fd}t||| dd t||d  || dd d S )	N)r  r  c                 S   rk  ri   r-   r  r-   r-   r.   rW      r}  z)TestExpect.test_skellam.<locals>.<lambda>r\  c                 S   r   r  r-   r  r-   r-   r.   rW   !  r  r8  r|   r9   )r2   rR  r  r   )r   r  p2rW  ru  r-   r-   r.   test_skellam  s
   zTestExpect.test_skellamc                 C   sL   d\}}t jdd ||f}t|tdd t||D ||  dd d S )N)r   q   c                 S   rk  ri   r-   r  r-   r-   r.   rW   )  r}  z)TestExpect.test_randint.<locals>.<lambda>c                 s   s    | ]}|V  qd S ri   r-   rJ   rP  r-   r-   r.   r  +  s    z*TestExpect.test_randint.<locals>.<genexpr>rt   r|   )r2   r   r  r   r  r}  )r   lohiro  r-   r-   r.   test_randint%  s
    
zTestExpect.test_randintc                 C   s   t ttjjdd d d S )Nc                 S   r   r  r-   r  r-   r-   r.   rW   0  r  z&TestExpect.test_zipf.<locals>.<lambda>rq  )r	   r  r2   rk  r  r   r-   r-   r.   	test_zipf-  s   
zTestExpect.test_zipfc                 C   s@   t jjdd dd}t jjdd ddddd	}t||d
d d S )Nc                 S   r~  r3  r-   r  r-   r-   r.   rW   4  r}  z/TestExpect.test_discrete_kwds.<locals>.<lambda>rq  r\  c                 S   r~  r3  r-   r  r-   r-   r.   rW   5  r}  r      r  )r   maxcount	chunksize	tolerancer  r   )r2   rB  r  r   )r   n0n1r-   r-   r.   test_discrete_kwds2  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 )Nr   rf   r+  r  r   r   r9   r-   r  r-   r-   r.   poiss_moment5<  s   0z-TestExpect.test_moment.<locals>.poiss_moment5)r   r	  r   rM  ru   )r2   rB  rz  r   )r   r  r_  m5r-   r-   r.   test_moment9  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   r6   r/  rf   rd   )   r\  r  U   rs  )r   r2   r  r  r  r  r   r-   r-   r.   test_challenging_cases_gh8928C  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 )Nrf   r   r6   rQ  r  r  r  r  r  Tr  r  g433333@g433333r   )r2   r  r  r   r  )r   rK   rB  r-   r-   r.   test_lb_ub_gh15855L  s"   zTestExpect.test_lb_ub_gh15855N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r-   r-   r.   r{    s    "
		
	r{  c                   @   r   )TestNctc                 C   s@   t dd}t|dd t dd}t|dddd d S )Nr   r   rn   r  g K?rf   r   )r2   nctr   rE   r   r  r-   r-   r.   test_nc_parameterc  s   zTestNct.test_nc_parameterc              	   C   sZ   t jdtddd d d f tddd}tg dg dg dg}t||d	d
 d S )Nr   r+  r	  rd   r   )gMp^j?g6].ftv?gȳ'ς?gu?)g!Y<a?g]d1p?go|?g?)gHdY?g2Ԥg?g}o/u?g .mr?re  ru   )r2   r  r;   rk   r   r   r   r   )r   ro  rb   r-   r-   r.   test_broadcastingk  s   zTestNct.test_broadcastingc                 C   s   t dd}t| d d S )Nr+  r   rr   )r2   r  r   r  r  r-   r-   r.   test_variance_gh_issue_2401s  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 )NrS  r  r  )r7  ncr  r2  r  )r2   r  r   rk   r   r   r  r   r  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 )Nr6  r9   g@ @g*dn?r   rM  ru   r  gqI  @gL) ?r  )r2   r  r  r   )r   nct_mean_df_1000nct_stats_df_1000expected_stats_df_1000nct_mean	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  b  s    r  c                   @   r   )
TestRecipInvGaussc                 C   s   t jdd}|dksJ d S )Nr   r  rs   )r2   recipinvgaussr;   r  r-   r-   r.   test_pdf_endpoint  s   z#TestRecipInvGauss.test_pdf_endpointc                 C   s"   t jdd}|tj ksJ d S )Nr   r  )r2   r  r   rk   r   r  r-   r-   r.   test_logpdf_endpoint  r1  z&TestRecipInvGauss.test_logpdf_endpointc                 C   s$   t jdd}d}t||dd d S )NrJ  rn   g9V9s;r  ru   )r2   r  rE   r   r   r  rb   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   rn   glH<g+<)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                   @   r  )TestRicec                 C   s   g d}t ttjj|dd  t ttjj|dd  t ttjj|dd  t ttjj	|dd  g d}t ttjj
|dd  tjjddd}t t|  d}ttj|dtj|||dd	 d S )
N)rU  r   r   rs   r,   )rd   rd   rn   rS  r   r  r  r  ro  )r   rk   r  r2   r  r;   r   r   rE   rA  r%  r   )r   rB   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   r   )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}g d}t|| tddd}t jj|ddd}g d	}t|| tj jd
tddd}g d}t|| d S )Nrf      )g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?rd   r   g     @_@r+  r  )	g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@rn      )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  rE   rk   r   r   r%  r1   )r   rE   cdf_expprobabilitiesr%  ppf_expr-   r-   r.   test_rice_gh9836  s   "

zTestRice.test_rice_gh9836N)r   r   r   r  r  r  r-   r-   r-   r.   r    s    r  c                   @   r  )
TestErlangc                 C   r   r   r   r   r-   r-   r.   r   
  r   zTestErlang.setup_methodc              	   C   s   t  6 t dt tttjjddddd g d}tjj|dd}tj	j|dd}t
||d	d
 W d    d S 1 s=w   Y  d S )Nr  r  r   r   r+  r  )rn   r   rr   r  r|  r  ru   )r  r  r  r  r  r2   erlangr   r   r  r   )r   r   result_erlang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 )Nrn   r   r  rm  )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                   @   sz   e Zd Zdd Zdd Zdd Zejde	j
dgd	d
 Zejdddge	j
dgdd Zdd Zdd ZdS )TestRayleighc                 C   r   )Nr  r   r   r-   r-   r.   r   &  r   zTestRayleigh.setup_methodc                 C   r  )Nr   g)Zx)r2   r   r   r   r   r  r-   r-   r.   rX  *     zTestRayleigh.test_logpdfc                 C   r  )Nr   i)r2   r   r  r   r  r-   r-   r.   r  .  r  zTestRayleigh.test_logsfzrvs_loc,rvs_scaler9   c                 C   s   t jjd||d}dd }|||}t jj||d\}}t|| t|| t jj|dd\}}t|d t j|\}}t|||| d S )Nr~  r  c                 S   s"   t | | d dt|   d S )Nr9   rn   )rk   r  r   )r   r   r-   r-   r.   r  6  s   "z(TestRayleigh.test_fit.<locals>.scale_mler  r  r  )r2   r   r   r   r   )r   r  r  r   r  scale_expectr7   r8   r-   r-   r.   r  2  s   



zTestRayleigh.test_fitr  rp   c                 C   r  )Nr~  r  r   )r2   r   r   r  r  r   )r   r  r  r   r   r   r-   r-   r.    test_fit_comparison_super_methodJ  s   z-TestRayleigh.test_fit_comparison_super_methodc                 C   s   t tj d S ri   )r   r2   r   r   r-   r-   r.   r  W  r  zTestRayleigh.test_fit_warningsc           	      C   s   t jd}d\}}}tjj||||d}tj|\}}|t |k s&J tjj||d\}}|t |k s9J ||ks?J d S )Ni  )r   ry  r[  rI  r  )rk   r   r   r2   r   r   r   r  )	r   r  r7   r8   r   r   loc_fitrP  	scale_fitr-   r-   r.   test_fit_gh17088Z  s   
zTestRayleigh.test_fit_gh17088N)r   r   r   r   rX  r  r   rf  r  rk   r   r  r  r  r  r  r-   r-   r-   r.   r  %  s    


r  c                   @   r  )TestExponWeibc                 C   sB   d}d}d}t j|||}t j|||}t||gddg d S )Nrd   r   g      Y@g:23W+g~`9k)r2   	exponweibr;   r   r   )r   rB   r+   r&  r  rW  r-   r-   r.   test_pdf_logpdfi  s   zTestExponWeib.test_pdf_logpdfc                 C   sj   t ddd}d}d}tj|||}tj||}t|| tj|||}tj||}t|| d S )Nr"  r  r+  r   rg   )rk   r#  r2   r  r;   weibull_minr   r   r   rB   r+   r&  r  rb   rW  r-   r-   r.   test_a_is_1t  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 )NrO  r   rf   )rk   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  g  s    r  c                   @   r  )TestFatigueLifec                 C   r  )Nr  r  X9rn  ru   )r2   r   r-  r   r/  r-   r-   r.   rK    s   zTestFatigueLife.test_sf_tailc                 C   s$   d}t j|d}t|ddd d S )Nr  r  r  rn  ru   )r2   r   r2  r   )r   r  r'  r-   r-   r.   test_isf_tail  s   zTestFatigueLife.test_isf_tailN)r   r   r   rK  r  r-   r-   r-   r.   r    s    r  c                   @   r  )TestWeibullc                 C   r  r  )r2   r  r   r   r  r-   r-   r.   rX       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 )NrG  rr   r  r  r  r   r   r9   r  rY  g&.gCe )r2   r  r;   r   rk   r=  r   r  rE   r   r  rA  r-  r  weibull_max)
r   rB   r+   r,   r  r  r&  lcrA   r  r-   r-   r.   test_with_maxima_distrib  sH   


z$TestWeibull.test_with_maxima_distribN)r   r   r   rX  r  r-   r-   r-   r.   r    s    r  c                   @   rh  )TestTruncWeibullc                 C   s(   t jddgddd}t|ddg d S )Nrd   rr   g)\(?gףp=
?rs   )r2   truncweibull_minr;   r   r  r-   r-   r.   test_pdf_bounds     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 )Nrr   r   rs   r  g~?)r2   r  r   rk   r   r   r   r  r-   r-   r.   rX    s   
zTestTruncWeibull.test_logpdfc                 C   s(   t jddgddd}t|ddg d S )Nrs   r   rr   rd   )r2   r  r%  r   r  r-   r-   r.   test_ppf_bounds  r  z TestTruncWeibull.test_ppf_boundsc                 C   :   g d}t j|ddd}t j|ddd}t|| d S N)rs   rd   r  rn   r   rS  r   rr   rs   r  )r2   r  r%  rE   r   r   r'  rB   q_outr-   r-   r.   test_cdf_to_ppf     z TestTruncWeibull.test_cdf_to_ppfc                 C   r  r  )r2   r  r2  r-  r   r  r-   r-   r.   test_sf_to_isf   r  zTestTruncWeibull.test_sf_to_isfc                    s  dd d fddt jd }t|d t jd }tfdd	 \}}t|| t jd
 }tfdd	 \}}t|| t jd }tfdd	 \}}t|| t jd }	tfdd	 \}
}t|	|
 d S )Nrr   r   r  c                    s   | | t j|   S ri   )r2   r  r;   )rB   r
  r"  r-   r.   xnpdf+  s   z)TestTruncWeibull.test_munp.<locals>.xnpdfr   r   c                    
    | dS r3  r-   r  r  r-   r.   rW   2     
 z,TestTruncWeibull.test_munp.<locals>.<lambda>r9   c                    r  r  r-   r  r   r-   r.   rW   6  r  r   c                    r  r  r-   r  r   r-   r.   rW   :  r  r+  c                    r  )Nr+  r-   r  r   r-   r.   rW   >  r  )r2   r  rz  r   r   r   )r   r9  rW  m1_expectedrP  ru  m2_expectedm3m3_expectedrv  m4_expectedr-   )r+   r,   r&  r  r.   	test_munp&  s$   



zTestTruncWeibull.test_munpc                 C   s   d}d}d}t dt dt dt d    }tj||||}t|d tj||||}t|t d  tj	d|||}t|| tj
||||}t|d tj||||}	t|	t d  tjd|||}
t|
| d S )Nr   r  rr   r   rn   r  )rk   r  r  r=  r2   r  rE   r   rA  r%  r-  r  r2  )r   r+   r,   r&  x_medrE   r  r%  r-  r  r2  r-   r-   r.   test_reference_valuesA  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 )
NrG  rr   rs   r  r  r   r9   r   r  )rk   r   r2   r  r;   r  r   r   rE   rA  r-  r  r=  )r   rB   r&  r+   r,   r8   r  p_truncr  lp_truncrE   	cdf_truncr  lc_truncrA   s_truncr  ls_truncr-   r-   r.   test_compare_weibull_minY  s6   





z)TestTruncWeibull.test_compare_weibull_minc           
      C   s   d\}}}t ||d}tj||||}tj||||}tj||tj|| }tj||| }tj||tj|| | }	t j|| t j||	 d S )N)r  r        ?rg   )	rk   r   r2   r  r;   rE   r  testingr   )
r   r&  r+   r,   rB   r  r  r  r  r  r-   r-   r.   test_compare_weibull_min2  s   
 z*TestTruncWeibull.test_compare_weibull_min2N)r   r   r   r  rX  r  r  r  r  r	  r  r  r-   r-   r-   r.   r    s    )r  c                   @   r  )	TestRdistc                 C   s0   t j}g d}t|||dd|dd d S )Nr  g     @r   r   )r2   rdistr   rE   r%  )r   re  r  r-   r-   r.   test_rdist_cdf_gh1285  s
   
zTestRdist.test_rdist_cdf_gh1285c                 C   sN   t ddd}d}tdt|d |d |d d  t|| d S )NgGzr  rf   g@rn   r9   r   )rk   r   r   r2   rs  r;   r  )r   rB   r&  r-   r-   r.   test_rdist_beta  s
   &zTestRdist.test_rdist_betaN)r   r   r   r  r  r-   r-   r-   r.   r    r~  r  c                   @   r  )TestTrapezoidc                 C   s`   g d}|D ]'}d|dg}t tj|||tj|| t tj|||tj|| qd S )N)r   r  rn   r   r   r   )r   r2   r   r;   triangrE   )r   modesmoderB   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   rf   )rk   r   r   r2   r   r;   r  rE   r3  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   r9   r   rn   r  r  rU  r   rd   g      ?r  rS  g      ?r  g      ?)r   r2   r   r;   rE   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  r  r9   r   r9   c                    sT   | d  | d     | d   | d        | d  | d  S )Nr9   r   r-   )r
  r+   r,   r&  dr  r-   r.   rz    s    z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   rn   r  r   r   r  r  r  r   )rk   r  r   r2   r   r  r  rQ   )	r   r  r  r7   r8   rz  r  r  rQ   r-   r   r.   test_moments_and_entropy  s&   0> z&TestTrapezoid.test_moments_and_entropyc                 C   s`  t g d}t ddgd d d f }t g d}tj|||}t |||\}}}t j|j|jd}t 	|j}	t
|	| | | D ]\}
}}}tj|||||
< qIt|||jdd t tjj||dd	}t ||\}}t |jd
f}t 	|j}	t
|	| | D ]\}
}}tjj||dd	||
< qt||j|jdd d S )Nr  rn   r  )r]  r  rS  r  rt   r|   r  r  r+  )rk   r   r2   r   r;   broadcast_arraysemptyr   r   r   r   ravelr   r  r   r  r  )r   r&  r!  rB   r>  ccddr(  ro  indr{  r  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  )rk   r   r   r2   rR   r;   r  r3  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                   @   r  )
TestTriangc                 C   s"  t jdd ttjddd ttjddd ttjddd ttjddd ttjddd ttjddd	 ttjddd ttjddd
 ttjddd ttjddd ttjddd ttjddd W d    d S 1 sw   Y  d S )Nraiser  r   rr   rn   r   r   rs   r9   r   r  )rk   r  r   r2   r  r;   rE   r   r-   r-   r.   test_edge_cases  s   "zTestTriang.test_edge_casesN)r   r   r   r/  r-   r-   r-   r.   r-    rO  r-  c                   @   r  )
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   mielkerz  rk   r   r   r  )r   r?   rA   r-   r-   r.   rG    s    zTestMielke.test_momentsc                 C   s@   t ddd}d\}}ttj|||| tj||| d S )Nrp   rg   r   )g@gHzG@)rk   r   r   r2   burrr;   r1  )r   rB   r?   rA   r-   r-   r.   test_burr_equivalence  s   *z TestMielke.test_burr_equivalenceN)r   r   r   rG  r3  r-   r-   r-   r.   r0    r~  r0  c                   @   r  )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   )rn   r9   )r   r   )r9   rn   r  rn   r   )r   r9   rr   c                 S   r  r-   r  r  r-   r-   r.   rL   0  r  z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c                 S   r  r-   r-   r  r-   r-   r.   rL   1  r  c                 S   r  r-   )r   r+   r  r-   r-   r.   rL   4  r  c                 S   s   g | ]
\}}}t |qS r-   )rk   r  r  r-   r-   r.   rL   5  r{  )r2   fiskr2  burr12r   )r   r   r  r  r-   r-   r.   test_endpoints_7491$  s   






	
zTestBurr.test_endpoints_7491c                 C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)r   r   )g4U?g&MI?)r2   r2  r   )r   r&  r!  r  variancemean_hcvariance_hcr-   r-   r.   test_burr_stats_95448  s
   
zTestBurr.test_burr_stats_9544c           	      C   sF  d\}}t ||  \}}tt| tt| d\}}t ||  \}}tt| tt| d\}}t jtg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d S )N)rn   r   )rG  r   )r   r9   r   r+  )r  r   )r  r   )r  r   )r2   r2  r   rk   r  r  _munpr   )	r   r&  r!  r  r8  e1e2e3e4r-   r-   r.   test_burr_nan_mean_var_9544C  sL   "z$TestBurr.test_burr_nan_mean_var_9544N)r   r   r   r7  r;  rA  r-   r-   r-   r.   r4  #  s    r4  c                   @   s  e Zd Zg dZg dZg dZeeeefZg dZ	ddddd	ej
gZg d
Zeeee	eeeZddddej
dfddej
dfddej
dfgZdd Zejjdd ZejeZdZeejeedZe !eZ"W d   n1 sxw   Y  ej#de"d dd Z$ej#de"d dd Z%ejjej&dej#de"d  d!d" Z'd#d$ Z(ejj)d%d& Z*ej#d'ed(d) Z+ejjej&dd*d+ Z,ejj)d,d- Z-d.d/ Z.dS )0TestStudentizedRange)gQ1@g33333F@g
ףp=*K@gHzM@g/$@g~j!@g33333$@g{Gz&@gh|?5	@gQ8@g&1@g|?5@g@gOn@g!rhm@gB`"@rl  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/ݤ@)rE  r  r  r   r   rf   r  x   )r9   r  r  r  )rd   r   i)#  gupm1f?)r   rf   r6  g?<-=A?gv"?r+  gd暕?ga-A?c                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )Nr  ru   )r   r2   studentized_rangerE   r   )r   pvkr'  
p_expectedr>  r?   res_pr-   r-   r.   test_cdf_against_tables  s
   
z,TestStudentizedRange.test_cdf_against_tablesc                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )NMb@?ru   )r   r2   rD  r%  r   )r   rE  
q_expectedr  r>  r?   res_qr-   r-   r.   test_ppf_against_tables  s
   
z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonr  Ncase_resultcdf_datac                 C   N   |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   rD  rE   r   r   rM  rQ  rR  qkvro  r-   r-   r.   test_cdf_against_mp     
z(TestStudentizedRange.test_cdf_against_mppdf_datac                 C   rO  rP  )r2   rD  r;   r   rV  r-   r-   r.   test_pdf_against_mp  rY  z(TestStudentizedRange.test_pdf_against_mpz+intermittent RuntimeWarning: invalid value.moment_datac                 C   rO  )	NrQ  rR  r=  r?   r>  rS  rT  ro  )r2   rD  rz  r   )r   rM  rQ  rR  mkvro  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   rf   r   r\  r   )r   r2   rD  r;   rk   r   r   )r   r?   r>  ro  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   rf   rp   )stepr   r  ru   )rk   r   r2   rD  rE   r;   r   r   )r   r?   r>  rB   y_cdf	y_pdf_rawy_pdf_cumulativer-   r-   r.   test_pdf_against_cdf  s   
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc                 C   s*   |\}}}}t j|||}t|| d S ri   rU  )r   rf  r'  r?   r>  r_resro  r-   r-   r.   test_cdf_against_r  s   z'TestStudentizedRange.test_cdf_against_rc                 C   st   t jddgddgddg}t|jd tjtdd	 t jdddgg d
 W d    d S 1 s3w   Y  d S )Nr   r9   r+  r   rf   r  rq  z...could not be broadcast...r   )rf   r  r   )r2   rD  r<  r   r   r   r   r   r  r-   r-   r.   test_moment_vectorization  s
   "z.TestStudentizedRange.test_moment_vectorizationc              	   C   s   t  /}tjdd |t tjg d\}}}}W d    n1 s&w   Y  W d    n1 s5w   Y  ttj	|| d S )Nr  r  r   )
r   rk   r  r\   r   r2   rD  r  r   	_argcheck)r   r  r?   r7  rP  r-   r-   r.   test_fitstart_valid  s   
 z(TestStudentizedRange.test_fitstart_validc                 C   s8   d\}}}t j|||}t|ddd |dksJ d S )N)gaRA@r   iS  r   rM  r|   )r2   rD  r-  r   )r   r'  r?   r>  r  r-   r-   r.   test_clipping  s   
z"TestStudentizedRange.test_clipping)/r   r   r   q05q01q001rk   r  qspsr   vskslistr   r#   r   r_datarH  r   rf  rg  rL  ospathdirnamer  path_prefixrelative_pathopenr  filejsonr  pregenerated_datar  rX  r[  xfail_on_32bitr^  r`  r  re  rh  ri  rk  rl  r-   r-   r-   r.   rB  n  sT    









	
rB  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?rf   test_540_567)r   r  g2gk?g;B.?gͣh?gHŎ*?r6   g.y?)r   r2   r  rE   r-   r-   r-   r.   r    s   
r  c                   C   s   t jjdd d S )Nr  r  )r2   _continuous_distns	gamma_genr-   r-   r-   r.   test_regression_ticket_1316  s   r  c                   C   s   t tjdddd d S )Nrs   r9   rn   r  r  r-   r-   r-   r.   test_regression_ticket_1326  s   r  c               	   C   s  t ddd} t jddE dddt dgdgdggfD ]}tj| |}t|dk  tt 	|   qt dgdgd	gg}tj| |}W d    n1 sUw   Y  tt 	|   t|d
 dk  t|d dk  t|d dk
  t|d dk
  d S )N      r   re   r  rm  rs   r  r  rr   r   r   r9   )rk   r   r  r   r2   r&   r;   r   r   r  any)rB   r0  r  r-   r-   r.   test_regression_tukey_lambda  s   "	r  zdocstrings strippedrh  c                   C   s$   t dtjjv t dtjjv  d S )Nzpdf(x, mu, loc=0, scale=1)zpmf(x,)r   r2   rB  r-  r-   r-   r-   r.   test_regression_ticket_14214  s   r  c                   C   s  t jdd tt tjdt j tt tjdt j tt tj	dt j tt tj
dt j tt tjdt j tt tjdt j tt tjdt j tt tjdt j tt tjt jd tt tjt jd tt tj	t jd tt tj
t jd tt tjt jd tt tjt jd tt tjt jd tt tjt jd W d    d S 1 sw   Y  d S )Nr  r  r   rn   )rk   r  r   r  r2   r  rA  r   rE   r  r-  r;   r   r%  r2  r  r   r>  r-   r-   r-   r.    test_nan_arguments_gh_issue_1362:  s$   "r  c                  C   sj  t jd t g d} tjj| d | d | d dd}t jdd	 t tjj|d
d}W d    n1 s9w   Y  t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t jd d}d}tj
j|ddd}t tj
j||d}t |t || d  g}t	||dd d S )Ni.  )r  rs   rn   r   r   r9   rg   r   r  r  rs   r  r   rn   )r   r7   r  )r   r7   r/  rS  rr   r+  )rk   r   r   r   r2   r   r   r  r   r   r  r  r  )truerB   r  r7   r   rb   r-   r-   r.   test_frozen_fit_ticket_1536O  s(     r  c                  C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 rg   r   )g
ףp=
?gʡE?r   r   )rk   r   r   r2   r  r   r   r   )r   r  rb   r-   r-   r.   test_regression_ticket_1530k  s
   r  c                  C   sV   t jd t jd} dD ]}tj| | \}}t||dd t|ddd qd S )Nr   r\  )rf  g   6Ar   r|   r  )rk   r   r   r  r2   r  r   r   )rB   offsetr7   r8   r-   r-   r.   test_gh_pr_4806t  s   r  c                  C   s   t jj ddd} dtjd d ddg}t| |dd t jj d	dd} g d
}t| |dd t jj ddd} g d}t| |dd d S )Nr   r  r  r9   r   r  rf   r   g
ףp=
	@)r   gz5v?r   gRTgQ?)r   gNg @r   gJFٻ)r2   r&   rk   r=   r   )rH  rb   r-   r-   r.   "test_tukeylambda_stats_ticket_1545~  s   r  c                   C   s   t ttjdd d S )NrH  rR  )r   rk   r  r2   rB  r>  r-   r-   r-   r.   test_poisson_logpmf_ticket_1436  s   r  c                  C   s4   ddg} | D ]\}}t jj |dd}t|| qdS )a  Test the powerlaw stats function.

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

    The exact values are:
    mean:
        mu = a / (a + 1)
    variance:
        sigma**2 = a / ((a + 2) * (a + 1) ** 2)
    skewness:
        One formula (see https://en.wikipedia.org/wiki/Skewness) is
            gamma_1 = (E[X**3] - 3*mu*E[X**2] + 2*mu**3) / sigma**3
        A short calculation shows that E[X**k] is a / (a + k), so gamma_1
        can be implemented as
            n = a/(a+3) - 3*(a/(a+1))*a/(a+2) + 2*(a/(a+1))**3
            d = sqrt(a/((a+2)*(a+1)**2)) ** 3
            gamma_1 = n/d
        Either by simplifying, or by a direct calculation of mu_3 / sigma**3,
        one gets the more concise formula:
            gamma_1 = -2.0 * ((a - 1) / (a + 3)) * sqrt((a + 2) / a)
    kurtosis: (See https://en.wikipedia.org/wiki/Kurtosis)
        The excess kurtosis is
            gamma_2 = mu_4 / sigma**4 - 3
        A bit of calculus and algebra (sympy helps) shows that
            mu_4 = 3*a*(3*a**2 - a + 2) / ((a+1)**4 * (a+2) * (a+3) * (a+4))
        so
            gamma_2 = 3*(3*a**2 - a + 2) * (a+2) / (a*(a+3)*(a+4)) - 3
        which can be rearranged to
            gamma_2 = 6 * (a**3 - a**2 - 6*a + 2) / (a*(a+3)*(a+4))
    )r   )rn   r  rs   r  )rr   )gUUUUUU?r  g^cQg333333r  r  N)r2   powerlawr   )casesr+   
exact_mvskr  r-   r-   r.   test_powerlaw_stats  s   r  c                  C   s   t jdd} t| d d S )Nr   r   rs   )r2   r  r   r   r  r-   r-   r.   test_powerlaw_edge  r  r  c                  C   sh   t jdd} t| d t jdg d} t| tjddg t jdg d} t| tjdtj g d S )Nr   r   rs   )r  r   rG  r   )r2   rN  r   r   r;   rk   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J t jddd}|tj ksJ d S )Nr   r   r  rs   )r2   r  r;   r   rk   r   )r  rW  r-   r-   r.   !test_gengamma_endpoint_with_neg_c  s   r  c                  C   s8   t jddd} t| d t jddd} t| d d S )NrA  rR  r   g>rf   gqq?)r2   r  r<  r   r  r-   r-   r.   test_gengamma_munp  s   
r  c               	   C   s   t g d} t jdd6 t }|td |td tj	|  W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   Y  d S )N)0g>X*ȿgPix#?g=?g&^?goϿg뵏˿gO_ZQ?g\?g~?g)/?gRܶ?g핚οgH߃[g?gS"gm_ пg7k?g#BF?gKU=?gT?gZg[Qs?g2?g6Hwƭ8?g*-
?ga]?g'?g޻?g?J_ ?g~sw?g0FfͿgg"@ӿg?%:˿g&zM?g?Gg	F?g~,g HgW2ҿgTzy?gwmǿg @gW=ֿg	't?g".v1glg.Hꮿg,?g*˿r  r  z:The maximum number of subdivisions .50. has been achieved.z-floating point number truncated to an integer)
rk   r   r  r   r\   r   r  r2   rM  r   )r!  r  r-   r-   r.   test_ksone_fit_freeze  s    "r  c                  C   s   t ttddd } g d}tt | |dd tt | d j|dd tj| d d	 j	}t 
tj| tj|  }t||d	d d S )
Nr   rC  r+  )gDB.g8_$g%`OAgjhwHRgWMB@v`g7VY}igۦx\Arg	xg#g/dg3$gegd)gNq{3gيGǓgr4g37'
gfFg?dJgضg2,
gm%gӅJgz;pgɿ{gk2gij<%giVSͶgBR4g
Q/Mr  r|   y        +=y        |=rM  )rk   r  rt  r}  r   r2   r  rA  realimagr=  r   )rB   rb   derivderiv_expectedr-   r-   r.   test_norm_logcdf  s   	r  c                  C   sT   t g d} t g d}tj| }t||dd tj|}t|| dd d S )N)r6  r   rn   rd   rp   r  )g~V1?g|N?gba"?g܄4ťY?r  g$%+IrM  ru   rn  )rk   r   r2   r   rE   r   r%  )rB   rb   r  r(  r-   r-   r.   test_levy_cdf_ppf  s   r  c                  C   :   t g d} t g d}tj| }t||dd d S )N)g  4&kCg(,* EgMraB3Ggd~QJ)gep[>g}XEQ=gѭEG<g?_%~:r  ru   )rk   r   r2   r   r-  r   rB   rb   r  r-   r-   r.   test_levy_sf-     r  c                  C   r  )N)gMbg{Gzg{Gztg~jtX)g#]<gOul2;gޢا6g̅7=!rn  ru   )rk   r   r2   r   r-  r   r  r-   r-   r.   test_levy_l_sf9  r  r  c                  C   s8   t g d} tj| }tj|}t|| dd d S )N)g [n<r  r  gvIh%,=ru   )rk   r   r2   r   r2  r-  r   )r  rB   r'  r-   r-   r.   test_levy_l_isfE  s   r  c                   C   s|   t tjddddd t tjddddd t tjddddd t tjd	d
d
dd t tjdd
d
dd d S )NrE  i i  i  )g      c@g     h@g=
ףp=?Gz?)g      c@g     h@{Gz?rg   r  r   )r   r2   rZ  rG  r%  r-   r-   r-   r.   test_hypergeom_interval_1802M  s   r  c                  C   sr  t jd t jdddd} tttjj| dddd	 tttjj| ddd
dd	 tttjj| ddd
d tttjj| ddddd tttjj	ddddd tttjj
| ddddd tttjj| ddddd tttjjddddd tttjjddddd tttjj| ddddd tj| dd tj| ddd
 tjdd tjddd
 tjddd
d tj	ddd
d tjtjj	dddd tjj| ddd	 tttjj| ddd
 tttjj| ddd
d	 tttjj| ddd	 tttjj| dd
ddd	 tttjj| dd
ddd tttjj| dd
dddd	 tttjj| dd
ddddd	 tj| dd
ddd d S )Nr   rd   r  r   )numr9   r   r   rs  r+  rn   r6   rr   rH  r	  r   r  r  )rk   r   r   r   r  r   r2   r  r;   r   rE   r%  rQ   r   r  r   r  r  r%  r  r-   r-   r.   test_distribution_too_many_args\  s8   r  c                  C   sH   t jtddddd} t jtddddd}t| |ddd d S )	Nr  r  rU  r9   gYZ@r  r   r   )r2   ncx2rE   rk   r   _cdfvecr   r  r-   r-   r.   test_ncx2_tails_ticket_955  s   r  c               	   C   s   t  ) t dt ttjdt	dddd tj
dt	ddd} W d    n1 s0w   Y  tt|   t  % t dt ttjddd	d ttj
ddd	d
 W d    d S 1 sjw   Y  d S )Nr  r   iT  i^  r9   r   r  r   r   gsq6)r  r  r  r  r   r2   r  r;   rk   r   r   r   r  r   r   )logvalr-   r-   r.   test_ncx2_tails_pdf  s   

"r  zmethod, expectedrE   gu%>g	;Q=r;   g<x>gRz\R>r   gʎK$/gԆX1r%  gfHu@ge:@c                 C   s,   t tj| dddgdd}t||dd d S )Nrd   r   r+  rf   )r  r7  rt   r|   )r   r2   r  r   )r  rb   r|  r-   r-   r.   test_ncx2_zero_nc  s   r  c                  C   s4   t jjdddd} t jjddd}t| |dd d S )Nrf   r   r   )r7  r  r{   )r7  r{   rt   r|   )r2   r  r   r  r   )r|  rb   r-   r-   r.   test_ncx2_zero_nc_rvs  s   r  c                  C   s,   dt dd } ttjjdd| dd d S )Nrf   r   rf  r   r7  r  r   )rk   r   r   r2   r  rE   )r  r-   r-   r.   test_ncx2_gh12731  s   r  c                  C   sB   t g d} d\}}tjj| ||d}g d}t||dd d S )N)gю]	@gj%@gb	y/7@g H@gIZ@gXl@g'/2?8@gݰmА@gU@gy]`'@g@g*\@g48c@)r  gh ?8@r  )r   r   r   r   r   g?gy[qD?rs   rs   rs   rs   rs   rs   r8  r|   )rk   r   r2   r  r-  r   )rB   nur0  r-  sf_expectedr-   r-   r.   test_ncx2_gh8665  s
   
r  c                  C   s"   t jddd} t| dd d S )Nr   r   r  )r2   foldnormr   rE   r  r-   r-   r.   test_foldnorm_zero  s   r  c                  C   s   t j g ddd} t j ddgdd}tdd |D }t||  t j g d} t j dd	g}td
d |D }t||  d S )N)rs   rn   r   r   rn   r   c                 s   s     | ]}t jt j|f V  qd S ri   rk   r   r   r  r-   r-   r.   r    r  z-test_stats_shapes_argcheck.<locals>.<genexpr>)r9   r  r  r9   r  c                 s   s     | ]}t j|t jf V  qd S ri   r  r  r-   r-   r.   r    r  )r2   r   tupler   r   )mv3mv2mv2_augmentedr-   r-   r.   test_stats_shapes_argcheck  s   
r  c                   @   r  )
_distr_genc                 C   r~  Nr\  r-   r   rB   r+   r-   r-   r.   _pdf  rl  z_distr_gen._pdfNr   r   r   r  r-   r-   r-   r.   r    rO  r  c                   @   r  )_distr2_genc                 C      d| | S r  r-   r  r-   r-   r.   _cdf     z_distr2_gen._cdfN)r   r   r   r  r-   r-   r-   r.   r    rO  r  c                   @   r  )_distr3_genc                 C   s   || S ri   r-   r   rB   r+   r,   r-   r-   r.   r     s   z_distr3_gen._pdfc                 C   r  r  r-   r  r-   r-   r.   r    s   z_distr3_gen._cdfNr   r   r   r  r  r-   r-   r-   r.   r    r  r  c                   @   r  )_distr6_genc                 C   s   || | S ri   r-   r  r-   r-   r.   r    r  z_distr6_gen._pdfc                 C   r  r  r-   r  r-   r-   r.   r    r  z_distr6_gen._cdfNr  r-   r-   r-   r.   r  	  s    r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestSubclassingExplicitShapesc                 C   s$   t ddd}t|jdddd d S )Ndummyr+   r  r   r   rm  r\  r  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i tdd d S )Nr  Ar  r   rm  )r  r  r   r;   r   r  r-   r-   r.   test_wrong_shapes_1  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_1c                 C   s4   t ddd}tdddd}tt|jdfi | d S )Nr  za, b, cr  r   r9   r   r"  )r  r   r  r   r;   )r   r  r   r-   r-   r.   test_wrong_shapes_2  s   z1TestSubclassingExplicitShapes.test_wrong_shapes_2c                 C   "   t ddd}tttfi | d S )Nr  r\  r  )r   r  r   r  r   r   r-   r-   r.   test_shapes_string"     z0TestSubclassingExplicitShapes.test_shapes_stringc                 C   r  )Nr  z(!)r  r   r  SyntaxErrorr  r  r-   r-   r.   test_shapes_identifiers_1'  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c                 C   r  )Nr  4chanr  r  r  r-   r-   r.   test_shapes_identifiers_2,     z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c                 C   r  )Nr  zm(fti)r  r  r  r-   r-   r.   test_shapes_identifiers_30  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c                 C   r  )Nr  za=2r  r  r  r-   r-   r.   "test_shapes_identifiers_nodefaults4  r  z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc                 C   r  )Nr  z*argsr  r  r  r-   r-   r.   test_shapes_args8  r  z.TestSubclassingExplicitShapes.test_shapes_argsc                 C   r  )Nr  z**kwargsr  r  r  r-   r-   r.   test_shapes_kwargs<  r  z0TestSubclassingExplicitShapes.test_shapes_kwargsc                 C   r  )Nr  za, b, c, lambdar  r  r  r-   r-   r.   test_shapes_keywords@  r  z2TestSubclassingExplicitShapes.test_shapes_keywordsc                 C   s@   G dd dt j}|dd}t|jdddt jdd  d S )Nc                   @   r  )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc                 S      t j|| S ri   r2   r  r  r  r-   r-   r.   r  H  r   zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   	_dist_genG  rO  r  r+   r   rn   r9   rm  r2   rO   r   r;   r  r   r  rK   r-   r-   r.   test_shapes_signatureE  s   
$z3TestSubclassingExplicitShapes.test_shapes_signaturec                 C   s>   G dd dt j}|dd}tt|jdfi tddd d S )	Nc                   @   r  )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc                 S   r  ri   r  r  r-   r-   r.   r  Q  r   zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r  P  rO  r  a, br  rn   r   r9   r  )r2   rO   r  r   r;   r   r  r-   r-   r.   "test_shapes_signature_inconsistentN  s   
"z@TestSubclassingExplicitShapes.test_shapes_signature_inconsistentc                 C   sz   G dd dt j}|dd}t|jdddt jdd  t|ddt jdd  tt|jdfi tdd d S )	Nc                   @   r  )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc                 W   s   |d }t j|| S Nr   r  )r   rB   r   extra_kwargr-   r-   r.   r  [  s   zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r  Z  rO  r  r  r  rn   !   r  )xxx)r2   rO   r   r;   r  r  r   r   r  r-   r-   r.   test_star_argsW  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                   @   r  )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc                 W   s   |d }t j|| | S r  r  )r   rB   r  r   r  r-   r-   r.   r  h  s   zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r  g  rO  r  zoffset, extra_kwargr  rn   o   r  )r  r  r  r  r-   r-   r.   test_star_args_2d  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                   @   r  )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc                 _   s   | dd}tj|| S )Nr  r   )popr2   r  r  )r   rB   r   kwargsr  r-   r-   r.   r  v  s   zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfNr  r-   r-   r-   r.   r  u  rO  r  r  r  r   r   r  r  )r   r  rK   r-   r-   r.   test_extra_kwargr  s   
 z.TestSubclassingExplicitShapes.test_extra_kwargc                 C   s8   G dd dt j}|dd}t|dt jd d S )Nc                   @   r  )zDTestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_genc                 S   s   t j|S ri   )r2   r  r;   r3  r-   r-   r.   r    r  zITestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r    rO  r   r  rn   r  r  r-   r-   r.   shapes_empty_string  s   
z1TestSubclassingExplicitShapes.shapes_empty_stringN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r-   r-   r.   r    s$    		r  c                   @   sl   e Zd Zdd Zdd Zejjedddd Z	ejjeddd	d
 Z
dd Zdd Zdd Zdd ZdS )TestSubclassingNoShapesc                 C   s"   t dd}t|jdddd d S )Nr  r  r   rm  r\  r  r  r-   r-   r.   test_only__pdf  s   
z&TestSubclassingNoShapes.test_only__pdfc                 C   s"   t dd}t|jdddd d S )Nr  r  r   rm  )r  r   r;   r  r-   r-   r.   test_only__cdf  s   
z&TestSubclassingNoShapes.test_only__cdfdocstring strippedrh  c                 C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  r  r   r+   zlogpdf\(x, a, loc=0, scale=1\))	r  r   numargsr   refindallr-  r   r   r   r  ro  r-   r-   r.   test_signature_inspection  s   
z1TestSubclassingNoShapes.test_signature_inspectionc                 C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  r  r9   r  z!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r  r   r  r  r-  r   r   r  r-   r-   r.   test_signature_inspection_2args  s   
z7TestSubclassingNoShapes.test_signature_inspection_2argsc                 C   s   t ttdd d S )Nr  r  )r  r   r  r   r-   r-   r.   0test_signature_inspection_2args_incorrect_shapes  r5   zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc                 C   .   G dd dt j}tt|fi tdd d S )Nc                   @   s   e Zd ZdddZdS )z>TestSubclassingNoShapes.test_defaults_raise.<locals>._dist_genr\  c                 S   r~  r  r-   r  r-   r-   r.   r    rl  zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r\  r  r-   r-   r-   r.   r    s    r  r  r  r2   rO   r  r   r   r   r  r-   r-   r.   test_defaults_raise     z+TestSubclassingNoShapes.test_defaults_raisec                 C   r  )Nc                   @   r  )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc                 W   r~  r  r-   )r   rB   r+   r   r-   r-   r.   r    rl  zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r    rO  r  r  r  r  r  r-   r-   r.   test_starargs_raise  r  z+TestSubclassingNoShapes.test_starargs_raisec                 C   r  )Nc                   @   r  )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc                 [   r~  r  r-   )r   rB   r+   r  r-   r-   r.   r    rl  zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfNr  r-   r-   r-   r.   r    rO  r  r  r  r  r  r-   r-   r.   test_kwargs_raise  r  z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r  r  r   rf  rv  DOCSTRINGS_STRIPPEDr  r	  r
  r  r  r  r-   r-   r-   r.   r     s    


	r   r  c                  C   sT   g d} t jD ] }tt |}t|t jt jfr'| D ]}tt||j	d u  qqd S )N)z,\s*,z\(\s*,z^\s*:)
r2   r[   r   r   rN   rO   r   r  searchr-  )badonesdistnamerK   regexr-   r-   r.   r     s   

r   c                   C   s4   t tjtjddd t tjtjddd d S )Nrf   r  r   r  rd   r   )r   r2   rR  r-  rk   r   r  r  r-   r-   r-   r.   test_infinite_input  s   r  c                  C   &   t jt jddd} t| d d S Ng0.++r   )r2   lomaxr%  rE   r   r  r-   r-   r.   test_lomax_accuracy     r  c                  C   r  r  )r2   gompertzr%  rE   r   r  r-   r-   r.   test_gompertz_accuracy  r  r  c                  C   r  r  )r2   
truncexponr%  rE   r   r  r-   r-   r.   test_truncexpon_accuracy  r  r   c                  C   s*   t jt jddd} t| ddd d S )NrQ  r   rC  r   r   )r2   r   r2  r-  r   r  r-   r-   r.   test_rayleigh_accuracy  s   r!  c                  C   s   t jdd5} t d tjdd tjdd tjdd tjt	j
 d t| }t|d W d   dS 1 s>w   Y  dS )zregression test for gh-6219T)r  alwaysrn   r   rs   N)r  r  r  r2   r7  rE   r;   r%  r   rk   r   r   r   )r  number_of_warnings_thrownr-   r-   r.    test_genextreme_give_no_warnings  s   
"r$  c                  C   s   d} t jd}t|d|  d dd t jd}t|| d dd t jd}t|d t jjd	d
d}t|| d td
 d dd t jd
}t|d|  d dd t jd}t|d|  d dd d S )Ngox?r  r9   r   r  ru   r   r   r  rf   r  r   rD  rm  r  )r2   r7  rQ   r   r   rk   r  )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   r7  r-  r   r2  )rB   rA   r  r-   r-   r.   test_genextreme_sf_isf  s   




r'  c                  C   s"   d} t j| dd}t|d d S )Nr  r9   r   gH&8>)r2   r6  r%  r   )probrl  r-   r-   r.   test_burr12_ppf_small_arg=  s   	r)  c                  C   s6  t ddddd } tjj| ddd}t g d	}t||d
d tjj| ddd}t g d}t||d
d tjj| ddddd}t g d}t||d
d tjj| ddd}t g d}t||d
d tjj| ddd}t g d}t||d
d tjj| ddddd}t g d}t||d
d dS )z
    All values are calculated using the independent implementation of the
    ROOT framework (see https://root.cern.ch/).
    Corresponding ROOT code is given in the comments.
    r  r   r  Nr  r   rr   )rs  r=  )gC,d	Ɣ?gH㸘?g5?gM"M#w?gɫs^?g @?gƴ?g@w?ɫs^?|?q ?g C?r+  r*  gJó?g,BV\ۤ?g;?g#ek?g%ǓE?g(Ȍx?g>J>r  ru   r  )g#{`?gdf?g Jq?gSS){?g'	w?uL? T)?cAJ?GTn?R1#?gA]P?r0  r/  r.  r-  gvӢ?gKq?gL?g
	N<!?gAw>rn   )rs  r=  r7   r8   )g=aO}?gI8?g#T?aW)?ǓI?
J?E?d۳?GTn?8?R1#?kP?g(*T?r8  r7  r6  r5  r4  r3  r2  r1  )gD
)?g:3P?g9?g?S[?r*  gOqx?gD
)?g9?gɫs^?gK?gX?g3<֌?gM+?gyS
c?gI`s?g辜?g{i ?g^0?g?#c?)g%r?gc@v?ghtj}?g(˔^?gHK4U?r,  ğ@ _?y}D?焂Rr/?N?YjhG?a0L?4f?<@?@CH?g	ސF?g5+-#?g?g?q ?r9  )g}'v?r,  g*V?r:  gr/0+?r;  g[8	?r<  gΥ?r=  gY?r>  g#)a?r?  g?̔?r@  g]ؚ?rA  g|c ?rB  )rk   r   r2   crystalballr;   r   r   rE   )r  
calculatedrb   r-   r-   r.   test_crystalball_functionK  s&   rE  c                  C   s  t g d} t g d}t g d}tjd| |}t||dd t g d}t dd	t jd
dg}|| }tjd| |}t||dd t t jt jt jddg}|| }tjd| |}	t||	dd t t jt jt jt jdg}|| }
tjd| |}t|
|dd t t jt jt jt jdg}|| }tjd| |}t||dd t t jt jt jt jdg}|| }tjd| |}t||dd dS )zg
    All values are calculated using the pdf formula and the integrate function
    of Mathematica
    )rr   r   r  rr   r  )r  r  rr   r  rC  )r   r   r   r   r   r   r  ru   )gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@r9   g?Җ)r   gMg'#@r+  g('UHr   N)rk   r   r2   rC  r<  r   r   )rs  r=  expected_0th_momentcalculated_0th_momentr  r+   expected_1th_momentcalculated_1th_momentexpected_2th_momentcalculated_2th_momentexpected_3th_momentcalculated_3th_momentexpected_4th_momentcalculated_4th_momentexpected_5th_momentcalculated_5th_momentr-   r-   r.   !test_crystalball_function_moments  s4   rR  c                  C   sR   t dd} |  }d\}}}t|||}tt| ||}t||dd d S )Nr9   r   )ir   i@ r7  ru   )	r2   rC  rQ   rk   r   r   r   r;   r   )cbr  r  r  r]  rB   rq  r-   r-   r.   test_crystalball_entropy  s   
rT  c                  C   s\   ddd} t g d}tjj|d| d\}}}t|ddd	 |dks%J t|d
dd	 dS )a?  
    Test fitting invweibull to data.

    Here is a the same calculation in R:

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

    r-   r   c                 S   s   t | |||dddS )Nr8  )r   dispxtolftol)r"   )r   x0r   rU  r-   r-   r.   	optimizer  s   z"test_invweibull.<locals>.optimizer)r   r  r9   r  rl  r   rd  r+  r   r  rf   r   @   c   )r   rY  g`?ro  ru   g [@N)r-   r   )rk   r   r2   r   r   r   )rY  rB   r&  r7   r8   r-   r-   r.   test_invweibull  s   
r\  z	df1,df2,xr9   )r[  rU  r   rF  r+  r  r	  r  r  c                 C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   r  ru   rx  )r2   r  rE   r%  r   r;   )df1df2rB   r  expected_cdfcalculated_cdfrx   calculated_pdfr-   r-   r.   test_ncf_edge_case  s   
rb  c                  C   s"   t jddd} t| ddd d S )Nr9   r  r+  g     `E@r  ru   )r2   r%  r  r   )r>  r-   r-   r.   test_ncf_variance     rc  c                  C   s.   t jdddd} d}t|tj| dd d S )Nr  r  r  gffffff>@g&4I,)?)decimals)r2   r%  rE   r   rk   round)	scipy_val	check_valr-   r-   r.   test_ncf_cdf_spotcheck  s   ri  r  z(On some 32-bit the warning is not raisedc                     sx   t ddd} d| d< d tt tjj| g R  } fdd| D }W d    n1 s0w   Y  t|| d S )Nr   r   ry  r  )rd   r9   r   r   r   c                    s    g | ]}t jj|g R  qS r-   )r2   r%  r%  )rJ   xiparr-   r.   rL      s     z,test_ncf_ppf_issue_17026.<locals>.<listcomp>)	rk   r   r   rt  r  r2   r%  r%  r   )rB   r'  q0r-   rk  r.   test_ncf_ppf_issue_17026  s   rn  c                   @   r  )TestHistogramc                 C   s\   t jd t jg ddd}t|| _tjjddddd	}t j|d
d}t|| _	d S )Nr   )r   r9   r9   r   r   r   r+  r+  r+  r+  r   r   r   r   r   r  r  r  r  r	  r	  r	  r  r  rQ  r  binsr   r  r  {   r  r   )
rk   r   r   	histogramr2   rP   templater  r   norm_template)r   rs  r   norm_histogramr-   r-   r.   r   %  s   
zTestHistogram.setup_methodc                 C   s   t g d}t g d}t| j|| t| jdd t| jdd t| jdd t| jdd t d	d
d}t| j|t	j
j|ddddd d S )Nrs   rn   r   rG  rr   r  r  r  r  r  r         @r/  r        @rP  r        !@rC  g      #@)rs   rs   r   r   {Gz?r{  Q?r|  {Gz?r}  rU  rU  r}  r}  r|  r|  r|  r|  rs   rs   r  r|  rz  rC  rs   r  rA  r9   rf   r   r  r6   rd   ru   )rk   r   r  r   rt  r;   r   r   ru  r2   r  )r   r  
pdf_valuesrB   r-   r-   r.   r   5  s   
zTestHistogram.test_pdfc                 C   s   t g d}t g d}t| j|| t| j|dd |dd  t ddd}t| j| j|| t ddd}t| j| j|| t d	dd
}t| j|t	j
j|ddddd d S )Nrw  )rs   rs   rs   r  r   r{  r|  
ףp=
?Q?{Gz?r  rn   r  (\?RQ?=
ףp=?)\(?r  r   r   r9   r  r   rC  rg   rs   rA  rf   r  r6   rd   ru   )rk   r   r  r   rt  rE   r%  r   ru  r2   r  )r   r  
cdf_valuesrB   r-   r-   r.   r)  O  s   "
zTestHistogram.test_cdf_ppfc                 C   s   d}| j j|dd}tt|dk d tt|dkd| dd	 tt|d
kd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|d kd!| dd	 tt|d"kd#| dd	 tt|d$kd%| dd	 tt|d&kd| dd	 tt|d&kd| dd	 tt|d&kd d S )'Nr  rr  rI  r   rs   rr   r   rU  ru   r  r{  r  r|  rd   r  r  r  r  r  r  r   r  rJ  rx  rn   r/  r  r  r  ry  r  rP  r  r  r  rz  r  rC  )rt  r   r   rk   r  r   )r   r]  r  r-   r-   r.   r   e  s(   zTestHistogram.test_rvsc                 C   s6   t dD ]}t| j|tdd|dd qd S )Nr+  r   r  rJ  ru   )r}  r   ru  r<  r2   r  rz  )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   r  r6   rJ  ru   )r   ru  rQ   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.   ro  $  s    ro  c                  C   s   ddgg d} }t j| |fdd}tj|ddgddg | dks(J t j| |fdd}tj|ddgd	 | d
ksEJ d}tt|d t | |f}| d
ks]J W d    n1 sgw   Y  t | g df}| dks}J d S )Nr   )r   r   r  F)r  rn   rR  rI  Tg'^P?g     H@z(Bin widths are not constant. Assuming...r   rA  )	r2   rP   rk   r  r   r;   r  r	   r  )countsrq  rK   r  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rK|   krKd	ksNJ  J t t |d
 dks\J d S )N   0o[ r  r   r  rI  rf   rp  r<  iL  r6  )rk   r   r   r2   
loguniformr   
reciprocalr   rs  log10r  r  r~   r  )r   r  r  r   rv2r   r   rP  r-   r-   r.   
test_alias  s   
. zTestLogUniform.test_aliasr  mlemmc                 C   sn   t jd}tjjddd|d}tjj||d\}}}}|dks"J tjj|d|d\}}}}|dks5J d S )	Nr  rd   r   r6  rI  )r  r9   )r   r  )rk   r   r   r2   r  r   r   )r   r  r  r   r+   r,   r7   r8   r-   r-   r.   test_fit_override  s   z TestLogUniform.test_fit_overrideN)r   r   r   r  r   rf  r  r  r-   r-   r-   r.   r    s    r  c                   @   s  e Zd Zdd Zejdddgddgdd	ggd
d Zejdddgdd Zejdg ddd Z	ejdg ddd Z
ejdg ddd Zejdg ddd  Zejdg d!d"d# Zejdg d$d%d& Zejdg d'd(d) Zd*S )+	TestArgusc                 C   s2   t jjdddd}tt d | dd d S )Nr   r[  E  rI  r+  r   )r2   argusr   r   r  r3  r-   r-   r.   test_argus_rvs_large_chi  s    z"TestArgus.test_argus_rvs_large_chizchi, random_staterd   r  r     r     c                 C   s6   t jj|d|d}t |d|f\}}t|dk d S )Nr[  rI  r  rJ  r2   r  r   rM  r   )r   r,  r{   rB   rP  r  r-   r-   r.   r     s   zTestArgus.test_rvsr,  r  rx  c                 C   s6   t jj|ddd}t |dd \}}t|dk d S )Nr[  ie rI  c                 S   s   dd| d  d  S )Nr   r9   rG  r-   r  r-   r-   r.   rW     rM   z.TestArgus.test_rvs_small_chi.<locals>.<lambda>rJ  r  )r   r,  r  rP  r  r-   r-   r.   test_rvs_small_chi  s   zTestArgus.test_rvs_small_chizchi, expected_mean))r   g щi?)rf   g.憃?)r/  g\paP?)<   g	?)r[  g,6?c                 C   s"   t jj|dd}t||dd d S )Nr   r  rn  ru   )r2   r  r  r   )r   r,  expected_meanr=  r-   r-   r.   r:    rd  zTestArgus.test_meanzchi, expected_var, rtol))r   gLH'B?rn  )rf   go$?r  )r/  g
=>r  )r  g2W>r  )r[  gb~P>r  c                 C   s"   t jj|dd}t|||d d S )Nr   r  ru   )r2   r  r  r   )r   r,  expected_varrv   r>  r-   r-   r.   r    rd  zTestArgus.test_varzchi, expected, rtol))rS  gwM?r  )rn   gj?r  )rd   gHEA`!?r  )rp   gcف>rt   )r  gF=r  )r  g߹Q#B=r  )rx  g0ޟ<r  )r  g*W%:rt   c                 C   s   t t|||d d S r  )r   r    )r   r,  rb   rv   r-   r-   r.   test_argus_phi_small_chi  s   
z"TestArgus.test_argus_phi_small_chizchi, expected))rn   )g-\/?g+p7c?g5Ϧ\?)rU  )g
f?gi{?ٸ?gZ@7?)rd   )gB	?g]?gR{?)rp   )glͅw?g,?g[Z=?)r  )gz,?g]?gѪ1?)r  )g8<?gE-?gI?)rx  )g~7?g7B.?g9?)r  )g;?g9B.?g}5?c                 C   *   t g d}ttj|||dd d S )Nrd   rn   rS  rn  ru   )rk   r   r   r2   r  r;   r   r,  rb   rB   r-   r-   r.   test_pdf_small_chi     zTestArgus.test_pdf_small_chi))rn   )gQ߹?e?grJ,?g򺗄?)rU  )gΎd?g?gh?)rd   )g|
o?gvb?g+@?)rp   )g̈́On?ge?gC|[3?)r  )g!?m?g{jiH?gu53?)r  )g~m?g0-.?g3?)rx  )g~m?g7;B.?gŗ3?)r  )g~m?g9B.?gŗ3?c                 C   r  )Nr  r  ru   )rk   r   r   r2   r  r-  r  r-   r-   r.   test_sf_small_chi  r  zTestArgus.test_sf_small_chi))rn   )g+&?gk?gμm/?)rU  )g?CL\f?g^N?g]AͭR?)rd   )ga>$?g;Lf?gaW?)rp   )gx?g 43n?gwY?)r  )go7🤎?g
+-oGn?gIQ9Y?)r  )gT?gGn?g@̋Y?)rx  )gU?g{Gn?giG͋Y?)r  )gDU?g {Gn?gH͋Y?c                 C   r  )Nr  r8  ru   )rk   r   r   r2   r  rE   r  r-   r-   r.   test_cdf_small_chi  r  zTestArgus.test_cdf_small_chi))rn   )gQ)?g6{?r8  )gB`"۹?)g?g8%?r  )rd   )g388?gV%?rn  )rp   )g*j?gRS%?rn  )r  )g!|?gZ%?rn  )r  )gy[|?gG%?rn  )rx  )g"3|?gW%?rn  )r  )g!3|?gW%?rn  c                 C   s"   t jj |dd}t|||d d S )NrH  r  ru   )r2   r  r   )r   r,  rb   rv   r   r-   r-   r.   test_stats_small_chi&  s   zTestArgus.test_stats_small_chiN)r   r   r   r  r   rf  r  r   r  r:  r  r  r  r  r  r  r-   r-   r-   r.   r    sT    

	


	






r  c                   @   s   e Zd Zdd Zdd Zejjddejdg dejd	g d
ejdg ddd Z	ejd	g d
ejdg ddd Z
dS )TestNakagamic                 C   s$   d}d}t j||}t|d d S )Nr  r  gM+)r2   nakagamir   r   )r   r  rB   rW  r-   r-   r.   rX  7  s   zTestNakagami.test_logpdfc                 C   sD   d}d}t j||}t|ddd t j||}t||dd d S )Nr  r   g"S+:rn  ru   )r2   r  r-  r   r2  )r   r  rX  r-  r  r-   r-   r.   r  H  s   zTestNakagami.test_sf_isfz+Fit of nakagami not reliable, see gh-10908.rh  r  )r  r  re  r7   )rq   rf   #   r8   )r  r   r  c           
         s   d t jj |||ddt j\}}}t||dd t||dd t||dd fdd} fdd	} fd
d}	t||||ddd t||||ddd t|	|||ddd d S )Nrg   9  r   r  r7   r8   r{   rU  ru   c                    s<   d|  d t d |   d|  |d  t  |   S )NrA  r   r9   rk   r  r  r7   r8   )r  r-   r.   	dlogl_dnuj  s   z(TestNakagami.test_fit.<locals>.dlogl_dnuc                    sN    dt |  td|   dt t | |   t | | d  S )Nr   r   r9   )rk   r  r   r  r  r]  r  r-   r.   
dlogl_dlocn  s
   z)TestNakagami.test_fit.<locals>.dlogl_dlocc                    s2   d  |  | d|  |d  t | d   S )NrA  r9   r   r  r  r  r-   r.   dlogl_dscales  s    z+TestNakagami.test_fit.<locals>.dlogl_dscaler   r  r|   )r2   r  r   r   r   )
r   r  r7   r8   nu_estloc_est	scale_estr  r  r  r-   r  r.   r  [  s   zTestNakagami.test_fitc                 C   s   d}d}t jj||||dd}t jj||d\}}}t|}	tt|| d }
t||dd t||	dd t||
dd d S )	Nrn   rg   r  r  r|  r9   r7  ru   )	r2   r  r   r   rk   r  r  r  r   )r   r7   r8   r  r
  r  r  r  r  loc_theo
scale_theor-   r-   r.   test_fit_nu{  s   
zTestNakagami.test_fit_nuN)r   r   r   rX  r  r   rf  r  r  r  r  r-   r-   r-   r.   r  5  s    r  c                   @   r  )TestWrapCauchyc                 C   sr   t ddgddgg}t dgdgg}tj||}|jdks"J dd	 t ||fD }t| |d
d d S )NQ?r  rn   r   r   r  r  c                 S   s   g | ]\}}t j||qS r-   )r2   
wrapcauchyrE   )rJ   r  r)  r-   r-   r.   rL     s    z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>rn  ru   )	rk   r   r2   r  rE   r   nditerr   r%  )r   r&  rB   r  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  rn   r  ru   )r2   r  rE   rk   r=   r   r  r-   r-   r.   test_cdf_center  r5  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   r9   )r2   r  rE   r   rk   arctantanr=   )r   r  r  r&  r  crr-   r-   r.   r     s   (6zTestWrapCauchy.test_cdfN)r   r   r   r  r  r   r-   r-   r-   r.   r    s    r  c                  C   s\   G dd dt j} | dd}tttdd |  W d    d S 1 s'w   Y  d S )Nc                   @   r  )z/test_rvs_no_size_error.<locals>.rvs_no_size_genc                 S   r~  r3  r-   r   r-   r-   r.   _rvs  rl  z4test_rvs_no_size_error.<locals>.rvs_no_size_gen._rvsN)r   r   r   r  r-   r-   r-   r.   rvs_no_size_gen  rO  r  rvs_no_sizer  z_rvs() got an unexpectedr   )r2   rO   r  r   r  escaper   )r  r  r-   r-   r.   test_rvs_no_size_error  s
   

"r  zdistname, argsc                 C   s   | t v rtd|  d tt| }t|tjrQt|dkr1|j| \}}t	|t
j t	|t
j d\}}|jg |||R  \}}t	|t
j t	|t
j d S |j| \}	}
t	|	t
j t	|
t
j d S )Nz6skipping test for the support method for distribution .r   r  )$skip_test_support_gh13294_regressionr   r'  r   r2   r   rO   r   supportr   rk   r   )r  r   rK   a0b0r  r  a1b1r+   r,   r-   r-   r.   test_support_gh13294_regression  s"   

r  c                  C   sX  t jg dg d\} }ttj tj tj tjg}ttjtjtjtjg}t| | t|| | j|jks<J |j|jksDJ t jg g \}}tg tg }}t|| t|| |j|jksjJ |j|jksrJ t jg ddg\}}	tdtjg }
tdtjg }t||
 t|	| |j|
jksJ |	j|jksJ d S )N)r   r   r   r   )r   r   r   r  r  r+  )	r2   r  r  rk   r   r   r   r   r   )r  r  ex_a0ex_b0r  r  ex_a1ex_b1r:  r;  ex_a2ex_b2r-   r-   r.   ,test_support_broadcasting_gh13294_regression  s(    





r  c                  C   sn   ddg} dgdgdgg}t tj| |ddgddgddgg td} td}tj| |jdks5J d S )	Nrs   r   rr   r  r  rC  rH   r  )r   r2   r  r  rk   r$  r   r6   r-   r-   r.   *test_stats_broadcasting_gh14953_regression  s   &

r  rU  )gn!	g:I"<)gQ	@gE?c                 C   s*   t tj| | t tj|  | d S ri   )r   r2   cosinerE   r-  )rB   rb   r-   r-   r.   test_cosine_cdf_sf  s   r  zp, expected))rx  gkM6O)rF  g0ӭ!	)g333333?g;'u(@c                 C   s*   t tj| | t tj| |  d S ri   )r   r2   r  r%  r2  )r  rb   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 ri   )r2   r  r   rk   r=   r   r   )rW  r-   r-   r.   test_cosine_logpdf_endpoints
  s   r  c                  C   sT   dd t D } dd tD }| |ksJ dd tD }dd tD }||ks(J d S )Nc                 S   s   h | ]\}}t |tr|qS r-   )r   rT   rJ   r  rP  r-   r-   r.   	<setcomp>  s    
z*test_distr_params_lists.<locals>.<setcomp>c                 S      h | ]\}}|qS r-   r-   r  r-   r-   r.   r    rM   c                 S   r  r-   r-   r  r-   r-   r.   r    rM   c                 S   r  r-   r-   r  r-   r-   r.   r    rM   )r   r   r   r   )discrete_distnamesinvdiscrete_distnamescont_distnamesinvcont_distnamesr-   r-   r.   test_distr_params_lists  s   r  c                   C   sB   t jjddd t jjddddksJ t jdddksJ d S )Nr   r?   ro  r+  )orderr+   r  )r2   r  _statsrz  r<  r-   r-   r-   r.   test_moment_order_4  s   	r  ri   )r-  r  r  r  ra  pathlibr   rv  r}  r  numpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r  r<   rk   r   r   numpy.lib.recfunctionsr   r1   r   scipy._lib._utilr   rG  r   r   r   r   scipy.statsr2   !scipy.stats._distn_infrastructurer   scipy.stats.distributionsscipy.specialr   r   r   scipy.stats._distr_paramsr   r   test_discrete_basicr   r   scipy.stats._continuous_distnsr   r    scipy.optimizer!   r"   	itertoolsr#   flagsoptimizer  r  rw  r  r/   r4   rD   rF   rc   rh   rl   ro   rf  r  ry   r   r   r   r   r   r   r  r  r   r*  r;  rD  ri  r  r  r  r  r  r  r  rT  rY  r  r  r  r  r  r  r   r/  r@  rJ  rj  rp  rx  r  r  r  r  r  r  r  r  r  r  r  r  r'  r+  r.  rD  rL  rP  rX  r]  rx  r  r  r  r  r  r  r  r#  r$  rS  r{  r  r  r  r  r  r  r  r  objectr  r  r  r-  r0  r4  rB  r  r  r  r  rv  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  rO   r  r  r  r  r  r   r   r  r  r  r   r!  r$  r&  r'  r)  rE  rR  rT  r\  rb  rc  ri  r  rn  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r-   r-   r.   <module>   s    ,

.	
H $d>*# h 5S( wM?* $ l)+


 !-:v,U*     E
 o i ;=%EB,\ ^K 
	
&	(

	x;	,G.!
a yZ

