o
    ?HhF                    @   s@  d Z ddlZddlZddlZddlZddlmZ ddlZddlZddl	Z	ddl
mZmZmZmZmZmZmZmZmZmZmZ ddlZddlm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,m-Z- ddl.Zddl/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? ddl@mAZA ejBjCdkZDej	dkoe	E dkZFddgZGdddZHdd ZIdd ZJG dd dZKdd!d"ZLd#d$ ZMejNOd%g d&d'd( ZPG d)d* d*ZQG d+d, d,ZRG d-d. d.ZSG d/d0 d0ZTG d1d2 d2ZUG d3d4 d4ZVG d5d6 d6ZWG d7d8 d8ZXG d9d: d:ZYG d;d< d<ZZG d=d> d>Z[G d?d@ d@Z\G dAdB dBZ]G dCdD dDZ^G dEdF dFZ_G dGdH dHZ`G dIdJ dJZaG dKdL dLZbG dMdN dNZcG dOdP dPZdG dQdR dRZeG dSdT dTZfG dUdV dVZgG dWdX dXZhG dYdZ dZZiG d[d\ d\ZjG d]d^ d^ZkG d_d` d`ZlG dadb dbZmG dcdd ddZnG dedf dfZoG dgdh dhZpG didj djZqG dkdl dlZrG dmdn dnZsG dodp dpZtG dqdr drZuG dsdt dtZvG dudv dvZwG dwdx dxZxG dydz dzZyG d{d| d|ZzG d}d~ d~Z{G dd 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Zddeddej   ddeddej   ddeddej   ddeddej   ddeddej   g	fdeddej  ddeddej   ddeddej   d ddeddej   d ddeddej   d g	fddedej  dddedej   dddedej   dddedej   dddedej   dddedej   dddedej   dgfgZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG ddĄ dăZG ddƄ dƃZG ddȄ dȃZG ddʄ dʃZG dd̄ d̃ZG dd΄ d΃ZG ddЄ dЃZdd҄ ZG ddԄ dԃZG ddք dփZG dd؄ d؃ZG ddڄ dڃZG dd܄ d܃ZG ddބ dރZG dd dZdd ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd  d ZG dd dZG dd dZG dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZdd ZejNjeDdddd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( ZejNOd)g d*d+d, ZÐd-d. ZĐd/d0 ZŐd1d2 ZƐd3d4 Zǐd5d6 ZȐd7d8 Zɐd9d: Zʐd;d< Zːd=d> Z̐d?d@ ZejNOdAdBedCdDgfdEedFdGgfdHedIdJgfdKedLdMgfgdNdO ZΐdPdQ ZϐdRdS ZАdTdU ZѐdVdW ZejNOdXg dYdZd[ ZejNOd\g d]d^d_ ZejNOd`g dadbdc ZՐddde ZejNOdXg dfdgdh Zאdidj ZG dkdl dle)jكZG dmdn dne)jكZG dodp dpe)jكZG dqdr dre)jكZG dsdt dtZG dudv dvZejNjeDdwddxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd ZejNOdXg ddd ZejNOdddgdd ZejNOdddg dfddg dfddg dfgdd Zdd Zdd Zdd ZG dd dZdd ZG dd dZG dd dZG dd dZG dd dZdd ZejNOde8e5 dd Zdd Zdd ZejNOd\ddgdd ZejNOd`g ddd Zdd Zdd ZdÐdĄ ZG dŐdƄ dƃZG dǐdȄ dȃZ G dɐdʄ dʃZG dːd̄ d̃ZG d͐d΄ d΃ZG dϐdЄ dЃZejNOdg dҢdӐdԄ ZdS (  z!
Test functions for stats module
    N)Path)assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_allcloseassert_assert_warnsassert_array_lesssuppress_warningsassert_array_max_ulpIS_PYPY)raises)	typecodesarray)rec_append_fields)special)check_random_state)IntegrationWarningquad	trapezoidcumulative_trapezoid)
argsreduce)_XMAX)xlogy	polygammaentr)distcontinvdistcont   )distdiscreteinvdistdiscrete)FitDataError
_argus_phi)rootfmindifferential_evolution)productdarwinx86_64tukeylambdapearson3c                 C   s,   |d u r|  d| }t t| ||d d S )Nz does not have attribute msg)r   hasattr)abr-    r1   d/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/stats/tests/test_distributions.py_assert_hasattr5   s   r3   c                   C   s   t tjjd d S )Nf_gen)r3   scipystatsdistributionsr1   r1   r1   r2   test_api_regression;      r8   c                  C   s`   t tjjj} dd tD }dd tD }g d}|| | }t tdd |}| |ks.J d S )Nc                 S      g | ]}|d  qS r   r1   .0distr1   r1   r2   
<listcomp>B       z0test_distributions_submodule.<locals>.<listcomp>c                 S   r:   r;   r1   r<   r1   r1   r2   r?   C   r@   )rv_discreterv_continuousrv_histogramentropytrapzc                 S   s   t | d S )N<)str
startswithsr1   r1   r2   <lambda>J       z.test_distributions_submodule.<locals>.<lambda>)setr5   r6   r7   __all__r   r    filter)actual
continuousdiscreteotherexpectedr1   r1   r2   test_distributions_submodule@   s   rU   c                	   @   sH  e Zd Zejdg dejdddejddgdd	 Zd
d Z	dd Z
ejdg ddd Zejdg ddd Zdd Zejdg ddd Zdd Zejjejdddgejd g d!ejd"d#d$gejd%d#d$gd&d' Zejjd(d) Zejd*d+dgd,d- Zd.d/ Zd0d1 Zd2d3 Zd4S )5TestVonMisesk)皙?r   e   xr   r   
   d   c                 C   sh   dd }dd }||dd| ||dd| ||dd| ||dd| ||dd| ||dd| d S )Nc                 S   s8   t j| ||d}t||||dtj |   d S )Nlocscale   )r6   vonmisesr   pdfnppirW   LrJ   rZ   vmr1   r1   r2   check_vonmises_pdf_periodicS   s   (zHTestVonMises.test_vonmises_periodic.<locals>.check_vonmises_pdf_periodicc                 S   s@   t j| ||d}t||d ||dtj |  d  d S )Nr]   r   r`   )r6   ra   r   cdfrc   rd   re   r1   r1   r2   check_vonmises_cdf_periodicW   s   zHTestVonMises.test_vonmises_periodic.<locals>.check_vonmises_cdf_periodicr   r   r[   r1   )selfrW   rZ   rh   rj   r1   r1   r2   test_vonmises_periodicP   s   z#TestVonMises.test_vonmises_periodicc                 C   s&   t tjjtj  t tjjtj d S N)r   r6   vonmises_liner/   rc   rd   r0   rk   r1   r1   r2   test_vonmises_line_supportd   s   z'TestVonMises.test_vonmises_line_supportc                 C   s   t d}t|dd d S )N   r         ?)r6   ra   r   ri   )rk   rg   r1   r1   r2   test_vonmises_numericalh   s   
z$TestVonMises.test_vonmises_numericalzx, kappa, expected_pdf))rX   {Gz?g|65?)rX         9@g?U?)rX   rq   g"?)       @rt   gDfI?)rv   ru   g1<)rv   rq           c                 C       t j||}t||dd d S NV瞯<rtol)r6   ra   rb   r   )rk   rZ   kappaexpected_pdfrb   r1   r1   r2   test_vonmises_pdfv      zTestVonMises.test_vonmises_pdfzkappa, expected_entropy))r   gA	?)   g,eޞ?)r\   gBb9d22)  g
G )  gc                 C      t j|}t||dd d S NvIh%<=r{   )r6   ra   rD   r   )rk   r}   expected_entropyrD   r1   r1   r2   test_vonmises_entropy   s   z"TestVonMises.test_vonmises_entropyc                 C   s   d}t j|}t j|}t j|}tjddddj|d}tjddt j ddj|d}tjdddt j t| d dj|d}t||dd t||dd d S )	Ni@}r   r   r]   random_stater`   rz   atol)	rc   randomdefault_rngr6   ra   rvsrd   absr   )rk   seedrng1rng2rng3rvs1rvs2rvs3r1   r1   r2   test_vonmises_rvs_gh4598   s   z%TestVonMises.test_vonmises_rvs_gh4598zx, kappa, expected_logpdf))rX   rt   gEJ?)rX   ru   goι?)rX   rq   g0,)rv   rt   gdty)rv   ru   gʹw[A)rv   rq   gc                 C   rx   ry   )r6   ra   logpdfr   )rk   rZ   r}   expected_logpdfr   r1   r1   r2   test_vonmises_logpdf   r   z!TestVonMises.test_vonmises_logpdfc                 C   s  t jd}|dd \}}}tj||ddd }t|d t |jt j	s+J ||dt j
  f}tj||djd	d g|R  }t|d t |jt j	sSJ ||dt j
  f}tj||djd
d g|R ddi}tt ||dt j
   t |jt jsJ dS )a   
        Test that the vonmises expectation values are
        computed correctly.  This test checks that the
        numeric integration estimates the correct normalization
        (1) and mean angle (loc).  These expectations are
        independent of the chosen 2pi interval.
           kD +xNn    r[   r^   r}   c                 S      dS Nr   r1   rZ   r1   r1   r2   rK          z3TestVonMises.test_vonmises_expect.<locals>.<lambda>r   r`   c                 S   r   r   r1   r   r1   r1   r2   rK      r   c                 S   s   t d|  S )Ny              ?)rc   expr   r1   r1   r2   rK      s    complex_funcN)rc   r   r   r6   ra   expectr   
issubdtypedtypefloatingrd   anglecomplexfloating)rk   rngr^   r}   lbresboundsr1   r1   r2   test_vonmises_expect   s"   
 
z!TestVonMises.test_vonmises_expectrvs_locr`   	rvs_shape)r   r\       חAfix_locTF	fix_shapec                 C   sp   |r	|r	t d tjd}tjj|d||d}ddi}|r#||d< |r)||d< ttj|tjj	fi | d S )	NzNothing to fit.r   r   )sizer^   r   fscaler   flocf0)
pytestskiprc   r   r   r6   ra   r   _assert_less_or_close_loglikennlf)rk   r   r   r   r   r   datakwdsr1   r1   r2   test_fit_MLE_comp_optimizer   s    

z(TestVonMises.test_fit_MLE_comp_optimizerc                 C   sb   g d}t |}dt j }tjj||d\}}}|t tjks#J t	tj|tjj
d|d d S )N)g!*Kg4,%OԿgZ۵?g
ge_@g-8gPghn?g<t?g.6@gjb?g0]o@g݅ZgSsgx7W?g%H?g65Jg:m2?g@g;,gM^lsF      ࿩r   r   )r   r   )rc   asarrayrd   r6   ra   fitfinfofloattinyr   r   )rk   r   r^   	kappa_fitloc_fit	scale_fitr1   r1   r2   test_vonmises_fit_bad_floc   s   



z'TestVonMises.test_vonmises_fit_bad_flocsignc                 C   s   t jd}tj|d t j ddjd|d}|dt j  }tj|\}}}tj|\}}	}
t||	 t|| |dks@J t j |  k rNt jk sQJ  J d S )	Nr   rr   r[   r   順 r      r   )	rc   r   r   r6   ra   rd   r   r   r   )rk   r   r   r   shifted_datar   r   r   kappa_fit_shiftedloc_fit_shifted_r1   r1   r2    test_vonmises_fit_unwrapped_data   s   

&z-TestVonMises.test_vonmises_fit_unwrapped_datac                 C   s   t d}t|dddtj  dd t|tjd ddd t|tj d ddd t|dtjd dd t|	 ddd	 t|
 ddd	 tt|jd
ddtjks`J d S )Nr   r   r`   rz   r{         ??皙?r   r[     r   r   )r6   ra   r   rb   rc   rd   ri   sfppfmeanr   allr   r   )rk   r>   r1   r1   r2   test_vonmises_kappa_0_gh18166   s   
(z*TestVonMises.test_vonmises_kappa_0_gh18166c                 C   s4   t jdg\}}}|dkr|dkr|dksJ d S )Nr   g 7yACr   )r6   ra   r   )rk   r}   r^   r_   r1   r1   r2   test_vonmises_fit_equal_data  s    z)TestVonMises.test_vonmises_fit_equal_datac                 C   s8   t jjjddgdd t jjjtjd d gdd d S )Nr   gl=c>r   r`   gd?)r5   r6   ra   r   rc   rd   ro   r1   r1   r2   test_vonmises_fit_bounds  s   "z%TestVonMises.test_vonmises_fit_boundsN)__name__
__module____qualname__r   markparametrizerc   rd   rl   rp   rs   r   r   r   r   r   xslowr   slowr   r   r   r   r   r1   r1   r1   r2   rV   O   sB    




rV   Fc           	      K   s   |du r| j }| j|fi |}tt| | j|fi |}|s)t||ks)J |||}|||}||ksAtj||ddsAJ d|v rO|d |d ksOJ d|v r]|d |d ks_J dS dS )a^  
    This utility function checks that the negative log-likelihood function
    (or `func`) of the result computed using dist.fit() is less than or equal
    to the result computed using the generic fit method.  Because of
    normal numerical imprecision, the "equality" check is made using
    `np.allclose` with a relative tolerance of 1e-15.
    Nrz   r{   r   r   r   )r   r   supertyperc   anyallclose)	r>   r   funcmaybe_identicalr   mle_analyticalnumerical_optll_mle_analyticalll_numerical_optr1   r1   r2   r     s"   	

r   c                 C   s  ddg}| j rt| j d}|g dd | 7 }tt|tt|}g d}tjt	dd | j
|fi | W d    n1 sDw   Y  tjtdd | 
tjg W d    n1 sbw   Y  tjtdd | 
tjg W d    n1 sw   Y  tjtd	d | j
|d
d W d    n1 sw   Y  tjtdd | j
|gdgt|d  R   W d    d S 1 sw   Y  d S )Nr   r   ,)r   f1f2r   r`   r   3All parameters fixed. There is nothing to optimize.matchz#The data contains non-finite valueszUnknown keyword arguments:r`   )extra_keywordzToo many positional arguments.r   )shapeslensplitdictziprc   aranger   r   RuntimeErrorr   
ValueErrornaninf	TypeError)r>   paramnshapes	all_fixedr   r1   r1   r2   assert_fit_warnings;  s6   ""r  r>   )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   getattrr6   r   rb   r/   r   r   rc   r  r0   )r>   dctargsr1   r1   r2   test_supportR  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 Nr   rc   r   r   ro   r1   r1   r2   setup_methode     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 )Nr      r\   r   r`   2   
AllInteger   .   r,   r   )r6   randintr   r   rc   r   r   shaper   charr   
isinstance
ScalarTypereprr   rk   valsvalr1   r1   r2   test_rvsh  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?)rc   r_wherer6   r)  pmfr   )rk   rW   outr0  r1   r1   r2   test_pdfu  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   r3  r\   r"  r         ?      @r   ru      decimal)rc   linspacefloorselectr6   r)  ri   r   )rk   rZ   rW   r8  r0  r1   r1   r2   test_cdf{  s
   
*zTestRandInt.test_cdfN)r   r   r   r   r2  r9  rB  r1   r1   r1   r2   r  d  s
    r  c                   @   T   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )	TestBinomc                 C   r  r  r  ro   r1   r1   r2   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 Nr[   r   r$  r#  r   r&  r   )r6   binomr   r   rc   r   r*  r   r+  r   r,  intndarrayr/  r1   r1   r2   r2    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 )Nr\   r   r   r:  rz   r|   r   r6   rF  r7  r   )rk   vals1vals2r1   r1   r2   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 )Nr`   rr   )      ?rr   rN  rw   r:  )	r6   rF  rc   r   sumr   rD   r   r   )rk   r0   
expected_p
expected_hhr1   r1   r2   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errorr`   r   np)	warningscatch_warningssimplefilterRuntimeWarningr   r6   rF  r   stdro   r1   r1   r2   test_warns_p0  s
   
"zTestBinom.test_warns_p0c                 C   s"   d}t jjd|dd|ksJ d S )Nr   333333?r:  )qrV  rW  )r6   rF  r   rk   rV  r1   r1   r2   test_ppf_p1  s   zTestBinom.test_ppf_p1c                 C   sH   d}d}t d}tjj|||d}tj||| }t||dd d S )NglyCgq]\	T3<r   rU  缉ؗҜ<r   )rc   r   r6   rF  r7  poissonr   )rk   rV  rW  rZ   r   refr1   r1   r2   test_pmf_poisson  s   
zTestBinom.test_pmf_poissonc                 C   s>   d}d}d}t j|||}t j|||}t||dd d S )NgJ-DgO
;r   rb  r   )r6   rF  r7  ri   r   )rk   rV  rW  rr   rd  r1   r1   r2   test_pmf_cdf  s   zTestBinom.test_pmf_cdfc                 C   s"   t jddd}t|ddd d S )Nr   r   +?r   rb  r   rJ  )rk   r   r1   r1   r2   test_pmf_gh15101  s   zTestBinom.test_pmf_gh15101N)r   r   r   r   r2  rM  rS  r]  ra  re  rg  ri  r1   r1   r1   r2   rD    s    		rD  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   )r6   arcsinerb   r   rc   r  rk   rW  r1   r1   r2   test_endpoints  s   zTestArcsine.test_endpointsN)r   r   r   ro  r1   r1   r1   r2   rk        rk  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestBernoullic                 C   r  r  r  ro   r1   r1   r2   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   )r6   	bernoullir   r   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2    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 )NrN        пr   rw   r:  )r6   rs  rc   logrD   r   r   )rk   r0   rQ  rR  r1   r1   r2   rS    s   




zTestBernoulli.test_entropyN)r   r   r   r   r2  rS  r1   r1   r1   r2   rr        rr  c                   @   rj  )TestBradfordc                 C   s:   d}t dd}tj||}tj||}t|| d S )NrX   )rc   logspacer6   bradfordri   r   r   )rk   crZ   r_  xxr1   r1   r2   test_cdf_ppf  s
   zTestBradford.test_cdf_ppfN)r   r   r   r~  r1   r1   r1   r2   rw    rp  rw  c                   @   s   e Zd Zdd Zejddddddd	d
dddedfgdd Zejdg dejde	j
jdfe	j
jdfgdd Zejdg ddd Zejdg dejde	j
jdfe	j
jdfgdd ZdS )
TestCauchyc                 C   s   t jd}|dksJ d S )NZbtirw   )r6   cauchyrb   rn  r1   r1   r2   test_pdf_no_overflow_warning     z'TestCauchy.test_pdf_no_overflow_warningx, ref)rw   罡HP)g       r  )gIL8r  )gOd@<r  ):0yU>gHP)Mb@?gP)rX   g*6y)      ?g8@(J)g NgmCg'K@$[U)r  gonьgs32c                 C   s(   t j|| g}t|||gdd d S ry   )r6   r  r   r   )rk   rZ   rd  logpr1   r1   r2   test_logpdf	  s   zTestCauchy.test_logpdf))g 7y1gu	lY<)g^?)r   rN  )r   rr   )r   r   )r   g)nE?)g 7y1C?zmethod, sgnr   r   c                 C   s   ||| }t ||dd d S ry   r   )rk   rZ   rd  methodsgnrW  r1   r1   r2   test_cdf_sf  s   zTestCauchy.test_cdf_sf))gRyXsg!;v+͋)(,* EgjLҳ)      $@g
 )rw   9B.)g      $gCį)g:@sgg>Z)g 5g*\Bc                 C   s:   t j|}t||dd t j| }t||dd d S N+<r{   )r6   r  logcdfr   logsfrk   rZ   rd  r  r  r1   r1   r2   test_logcdf_logsf/  s   	zTestCauchy.test_logcdf_logsfzp, ref))#B;g8)&.>g/)rN        )rr   rw   )r   r:  )!?gqmA)g?gqJRBc                 C   s   ||| }t ||dd d S ry   r  )rk   rW  rd  r  r  rZ   r1   r1   r2   test_ppf_isf>  s   zTestCauchy.test_ppf_isfN)r   r   r   r  r   r   r   r   r  r6   r  ri   r   r  r  r   isfr  r1   r1   r1   r2   r    sX    







r  c                   @   sl   e Zd ZdZdZdd Zdd Zdd Zd	d
 Ze	j
ddefdgdd Ze	j
dg ddd ZdS )TestChignT9;g2 >h?@c                 C   s"   t jdd}t|| jdd d S )Nr[   r   rz   r{   )r6   chir   r   CHI_SF_10_4rk   rJ   r1   r1   r2   test_sfZ     zTestChi.test_sfc                 C   s"   t j| jd}t|ddd d S )Nr   r[   rz   r{   )r6   r  r  r  r   rk   rZ   r1   r1   r2   test_isf^     zTestChi.test_isfc                 C   (   d}d}t j||}t|ddd d S )Nr  r'  gar  r{   )r6   r  r  r   )rk   rZ   dfr  r1   r1   r2   test_logcdfb     zTestChi.test_logcdfc                 C   r  )Nrt   r'  @y`r  r{   )r6   r  r  r   )rk   rZ   r  r  r1   r1   r2   
test_logsfi  r  zTestChi.test_logsfdf, ref     @@)g  ļBgcAc                 C      t tj||dd d S N-q=r{   )r   r6   r  r   rk   r  rd  r1   r1   r2   	test_meanv     zTestChi.test_mean))-C6?gQ(݂)r   ńjɮ9?)r  gWr4'?)    _Bgr$h(?)}Ô%ITgs$h(?c                 C      t t| |dd d S ry   )r   r6   r  rD   r  r1   r1   r2   rS       zTestChi.test_entropyN)r   r   r   r  CHI_MEAN_1000r  r  r  r  r   r   r   r  rS  r1   r1   r1   r2   r  Q  s"    
r  c                   @   F   e Zd Zdd Zdd Zejdg ddd Zd	d
 Z	dd Z
dS )TestCrystalBallc                 C      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 dS )
        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;     Nr   r:  rv   betam)gF6Ɣ?g9nZ丘?g9b?g"i"w?g|^?g>?gG6ƴ?g9b?|^?߈܁r ?gTC?r  r  gm?gFZۤ?g
HB?gTXek?g?bȓE?gLZ;x?gJ>+=r{         @)g2c}`?g>t\f?g˂q?gg'T){?gmw?g>t\?h'T)?7-h	J?u8n?A#?g:Q?r  r  r  r  gZrԢ?g߄q?g)aL?gr'O<!?g99{-w>rr   r  r  r^   r_   )g3c}?g>t\?g˂?f'T)?#n?5-h	J??u8n?vL1??#?||P?g:Q?r  r  r  r  r  r  r  r  )rc   r?  r6   crystalballrb   r   r   rk   X
calculatedrT   r1   r1   r2   r9       


zTestCrystalBall.test_pdfc                 C   r  )r  r  r;  r  Nr   r:  rv   r  )ghQ|
)?gj,,?gd}9?gH6?g|^?gEv?glQ|
)?gd}9?g|^?go[?gsX?g&Ռ?g~M+?gZRc?gtE_s?gi?gB?gEg?gvP
?gx훟?r   r{   r  )g pr?g t\v?ge}?gݠn^?gCȘU?at\?ݠn^?~[n|D?gS4s/?2s?`qfhG?IgL?荩s?rA?IH?guk?ghi"?gP ?g.q?gs?rr   r  )go?r  ge?r  gPU,?r  gjݗ	?r  g?r  g_!Y?r  ga?r  gR?r  g(?r  g܉x?r  )rc   r?  r6   r  ri   r   r   r  r1   r1   r2   rB    r  zTestCrystalBall.test_cdfzx, beta, m, rootref))      (@r:  rv   gI9)      "@      @      ?gy
 <)   rX   gjt?g+,)g      rv   r  gGA*?)g      >rr   r;  g^v'?)gd~Qr  皙?g眭?c                 C   s$   t jj|||d}t||dd d S )Nr  r   r{   )r6   r  r   r   )rk   rZ   r  r  rootrefr   r1   r1   r2   r    s   
zTestCrystalBall.test_sfc                 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 )zs
        All values are calculated using the pdf formula and the integrate function
        of Mathematica
        )rv   r:  r  rv   r  )r  r  rv   r  r  )r:  r:  r:  r:  r:  r   MbP?r{   )gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@r`   g?Җ)r   gMg'#@r   g('UHr   N)rc   r   r6   r  _munpr   r  )rk   r  r  expected_0th_momentcalculated_0th_momentnormr/   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_momentr1   r1   r2   test_moments  s4   zTestCrystalBall.test_momentsc                 C   sR   t dd}| }d\}}}t|||}tt|||}t||dd d S )Nr`   r   )ir"  @ Hz>r{   )	r6   r  rD   rc   r?  r   r   rb   r   )rk   cbres1lohiNrZ   res2r1   r1   r2   rS  L  s   
zTestCrystalBall.test_entropyN)r   r   r   r9  rB  r   r   r   r  r  rS  r1   r1   r1   r2   r    s    >B
	-r  c                   @   r  )

TestNBinomc                 C   r  r  r  ro   r1   r1   r2   r   X  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 rE  )r6   nbinomr   r   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2  [  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   rc   r   r6   r  logpmfr7  r5   r   )rk   r1  r1   r1   r2   rM  f  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@?rU  )r6   r  r  rc   ru  ri   r   rk   r0  rd  r1   r1   r2   test_logcdf_gh16159n  s   zTestNBinom.test_logcdf_gh16159N)r   r   r   r   r2  rM  r  r1   r1   r1   r2   r  W  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  ro   r1   r1   r2   r   v  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r6   geninvgausskstestr   ri   r   rk   gigr   rW  r1   r1   r2   test_rvs_with_mode_shifty     z(TestGenInvGauss.test_rvs_with_mode_shiftc                 C   r  )Nr   r   r  r   r   r  Tr  r  r1   r1   r2   test_rvs_without_mode_shift  r  z+TestGenInvGauss.test_rvs_without_mode_shiftc                 C   r  )NrX   皙?r  r   r   r  Tr  r  r1   r1   r2   test_rvs_new_method  r  z#TestGenInvGauss.test_rvs_new_methodc                 C   s<   dd }t |ddd t |ddd t |ddd d S )Nc                 S   s0   t | |}|jddd}t ||jd dkS )Nr  r   r   r   r  )r6   r  r   r  ri   )rW  r0   r  r   r1   r1   r2   my_ks_check  s   z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   r  Tr   r  )r   )rk   r  r1   r1   r2   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      r`   r[   r   r   r   r  )r   r6   r  r   ro   r1   r1   r2   test_rvs_negative_p  s   z#TestGenInvGauss.test_rvs_negative_pc                 C   s   t jjddddd}tt j|ddgdd dkd	 d
tddd}}t jj|dd| |d}t|t 	|| t jj
|dd| |d}t|t 	|
| d S )Nr  r   r   r   )r   rW  r0   r   r  r  333333?Tr\   rt   r[   )rW  r0   r_   )r6   r  r   r   r  rc   r?  rb   r   r  ri   )rk   igmurZ   pdf_igcdf_igr1   r1   r2   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?rt   r   r[   rr   r   )rc   r   r?  r   r6   r  rb   )rk   vals_RrZ   r1   r1   r2   
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   rr   g    >Ar%  r`   )r   r6   r  rb   ro   r1   r1   r2   test_pdf_zero  s   zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   r   r   r   r  r  r  r  r  r&  r(  r)  r1   r1   r1   r2   r  u  s    




r  c                   @   s   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	ejdg ddd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestGenHyperbolicc                 C   r  r  r  ro   r1   r1   r2   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?r`   r`   r   rr   r  r]   r[   r   r   r   r|   )rc   r   r6   genhyperbolicr?  r   rb   
rk   r'  lmbdar	  r  r#  deltar  ghrZ   r1   r1   r2   
test_pdf_r     
zTestGenHyperbolic.test_pdf_rc           
      C   r+  )
N)
g=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?r,  r-  r]   r.  r[   r   ư>r/  )rc   r   r6   r0  r?  r   ri   r1  r1   r1   r2   
test_cdf_r  r6  zTestGenHyperbolic.test_cdf_rzx, p, a, b, loc, scale, ref)
)r`   r   r  rr   r  g8ɹvF(;)r9  r[   r  rN  r   r   g[Ϡ?)r9  r[   r  g      ?r   r   g ✝`D;)r9        ?r  ):?r   r   gdL;)r   r:  r  r;  r   r   gzK^7?)r         r  r;  r   r   gj?)r   r<  r     r   r   ga=vG:)r  r<  r   r=  r   r   g?)(   r<  r   r=  r   r   g1bV?)<   r<  r   r=  r   r   g?c           	      C   *   t jj||||||d}t||dd d S Nr]   dy=r{   )r6   r0  ri   r   )	rk   rZ   rW  r/   r0   r^   r_   rd  ri   r1   r1   r2   test_cdf_mpmath  s   z!TestGenHyperbolic.test_cdf_mpmath))r   r7  r<  r   r   r   gC!,?)r   r         @      @r   r   g,Ћf?)rx  r   rD  rE  r   r   r:  )   r`   r   r  rr   r  gm"چ>),  r[   r  rN  r   r   g:;)r?  r<  r   r=  r   r   gw=)K   r<  r   r=  r   r   g3Z0&K<c           	      C   r@  rA  )r6   r0  r   r   )	rk   rZ   rW  r/   r0   r^   r_   rd  r   r1   r1   r2   test_sf_mpmath  s   z TestGenHyperbolic.test_sf_mpmathc                    s\   g d}d\}}}d\|| | f  fddt ddD }t||dd	d
 d S )N)g@쐧@g@쐧 @g܊B@gvGăi@r,  r-  c                    s$   g | ]}t j d |qS )r]   )r6   r0  moment)r=   ir  r3  r#  r1   r2   r?   $  s    z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   r   r   r   r/  )ranger   )rk   r'  r2  r	  r  vals_usr1   rL  r2   test_moments_r  s   	
z TestGenHyperbolic.test_moments_rc           
      C   sd   d\}}}d\}}||| || f}t j|||d}t |jddd|j\}}	t|	dkd d S )	Nr,  r-  r]   r  r   r   r  T)r6   r0  r  r   ri   r   )
rk   r2  r	  r  r#  r3  r  r4  r   rW  r1   r1   r2   r2  +  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"  r[   r`   r   r]   rt   Gz?r%  r7  r/  )rc   r?  float_powerr   float32epssqrtr6   r0  r   newaxisr   rb   t)	rk   r  r	  r  r#  r3  r  r4  rZ   r1   r1   r2   
test_pdf_t8  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   r]   rt   rP  r%  r7  r/  )rc   r   rR  rS  r6   r0  r?  r   rU  r   rb   r  )	rk   r2  r	  r  r#  r3  r  r4  rZ   r1   r1   r2   test_pdf_cauchyJ  s   
(
z!TestGenHyperbolic.test_pdf_cauchyc           	      C   s   t ddd}t t jj}d\}}}||| || f}tj|||d}t dddd d t jf }t|	|tj
j	||ddd	d
d d S )Nr.  r[   )r   r   r   r]   rx  r  r%  r   r   dy=r/  )rc   r?  r   rR  rS  r6   r0  rU  r   rb   laplace)	rk   r^   r3  r2  r	  r  r  r4  rZ   r1   r1   r2   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  r[   r      r   r\   r   r]   rt   rP  r%  )r/   r0   r^   r_   r   r/  )rc   r?  rQ  rM  r6   r0  r   rU  r   rb   norminvgauss)	rk   r	  r  r3  r#  r2  r  r4  rZ   r1   r1   r2   test_pdf_norminvgaussp  s   (

z'TestGenHyperbolic.test_pdf_norminvgaussN)r   r   r   r   r5  r8  r   r   r   rC  rI  rO  r2  rW  rX  r[  r_  r1   r1   r1   r2   r*    s(    


r*  c                   @   sH   e Zd Zejdddgdd Zejdddgd	d
 Zdd ZdS )TestHypSecantzx, reference)r"  gA0=)r%  g!b;c                 C   r   r  )r6   	hypsecantr   r   )rk   rZ   	referencer   r1   r1   r2   r       zTestHypSecant.test_sfzp, reference)r7  g9bT*@)r  gTW-;@c                 C   r   r  )r6   ra  r  r   )rk   rW  rb  rZ   r1   r1   r2   r    rc  zTestHypSecant.test_isfc                 C   sB   d}d}t j|}t||dd t j| }t||dd d S )N      I@g!br  r{   )r6   ra  r  r   r  r  r1   r1   r2   r    s   zTestHypSecant.test_logcdf_logsfN)	r   r   r   r   r   r   r  r  r  r1   r1   r1   r2   r`    s    

r`  c                   @   s^   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	dd Z
dd Zdd Zdd ZdS )TestNormInvGaussc                 C   r  r  r  ro   r1   r1   r2   r     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'  r   rr   r/   r0   r  r   )rc   r   r6   r^  ri   r   )rk   r_cdfx_testvals_cdfr1   r1   r2   
test_cdf_R  s   zTestNormInvGauss.test_cdf_Rc                 C   rf  )N)gp϶>g\H55$?geСt&?go NiH?g]u>rg  r   rr   ri  r  r   )rc   r   r6   r^  rb   r   )rk   r_pdfrk  vals_pdfr1   r1   r2   r(    s   zTestNormInvGauss.test_pdf_Rzx, a, b, sf, rtol))r   r   r   !7?r   )rF  r   r   ?=r  )r   r   r  gy5`?r  )r[   r   r  gMLC9r  c                 C   s@   t j|||}t|||d t j|||}t|||d d S Nr{   r6   r^  r   r   r  )rk   rZ   r/   r0   r   r|   rJ   rK  r1   r1   r2   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   rF  r   r   rp  rq  r   rb  rI  r7  r{   rs  )rk   rZ   r/   r0   r   rJ   rK  r1   r1   r2   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  r`   )r6   r^  rc   r   r   r  r   )rk   dstrZ   r   r  r1   r1   r2   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   rr   r`   r   r  r   r   mvskmoments)rc   rT  r   r6   r^  )rk   r/   r0   gammav_statsr1   r1   r2   
test_stats  s   (zTestNormInvGauss.test_statsc                 C   s@   d\}}t g d}tj|||}t|tj||| d S )Nrx  r  rr   rh  )rc   r   r6   r^  r   r   ri   )rk   r/   r0   rk  r0  r1   r1   r2   test_ppf  s   zTestNormInvGauss.test_ppfN)r   r   r   r   rm  r(  r   r   r   rt  ru  rw  r~  r  r1   r1   r1   r2   re    s    
re  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestGeomc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestGeom.setup_methodc                 C   s   t jjddd}tt|dk tt|dk t|jjt	d v  t jd}tt
|t t dd}tt
|tj t|jjt	d v  d S )Nr   r$  r#  r   r&  r   )r6   geomr   r   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2       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   r   )rc   r   r   r6   r  r   r   r   int64r   iinfoint32max)rk   r   r   r1   r1   r2   test_rvs_9313  s    zTestGeom.test_rvs_9313c                 C   s$   t jg dd}t|g d d S )Nr   rr   )rr   rN  r:  )r6   r  r7  r   rk   r0  r1   r1   r2   rM    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   rr   rz   r   rI  r   rw   )rc   ru  r6   r  r7  r  r   r   )rk   rK  rL  r1  r1   r1   r2   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   rr   rr   r         ?r   )r6   r  ri   r   r   r   rk   r0  vals_sfrT   r1   r1   r2   r    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   rr   r  )	r6   r  r  r  r   r   rc   ru  log1pr  r1   r1   r2   r    s
   zTestGeom.test_logcdf_logsfc                 C   ,   t jg dd}tg d}t|| d S )Nr  rr   )r:  rv   r  )r6   r  r   r   r   rk   r0  rT   r1   r1   r2   r  !     zTestGeom.test_ppfc                 C   s   t tjddddd d S )Nr  r:  r  r   )r   r6   r  r   ro   r1   r1   r2   test_ppf_underflow&  s   zTestGeom.test_ppf_underflowc                 C   s    t d }t|ddd d S )Ng<,Ԛ?g۩@rz   r{   )r6   r  rD   r   )rk   rR  r1   r1   r2   test_entropy_gh18226*  s   zTestGeom.test_entropy_gh18226c                 C   s.   t jd}tjjdd|ddk sJ d S )NiKH9r[   r   r   )rc   r   RandomStater6   r  r   r   )rk   r   r1   r1   r2   test_rvs_gh183720  s   "zTestGeom.test_rvs_gh18372N)r   r   r   r   r2  r  rM  r  r  r  r  r  r  r  r1   r1   r1   r2   r    s    	
r  c                   @   rq  )
TestPlanckc                 C   r  r  r  ro   r1   r1   r2   r   8  r!  zTestPlanck.setup_methodc                 C   r  )Nr   r;  )g|dy?g8'\>ggrU!>)r6   planckr   r   r   r  r1   r1   r2   r  ;  s   zTestPlanck.test_sfc                 C   r  )N)r       @@     p@r  )g    P.g    h>g    TF)r6   r  r  r   r   r  r1   r1   r2   r  B  r  zTestPlanck.test_logsfN)r   r   r   r   r  r  r1   r1   r1   r2   r  7  s    r  c                   @   r  )
TestGennormc                 C   0   g d}t j|d}t j|}t|| d S Nr   r   )r6   gennormrb   rZ  r   rk   pointspdf1pdf2r1   r1   r2   test_laplaceI     zTestGennorm.test_laplacec                 C   4   g d}t j|d}t jj|dd}t|| d S Nr   r`   g;f?r_   )r6   r  rb   r  r   r  r1   r1   r2   	test_normP     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   rr   r   r#  rX   r   r`   g;f?r_   r   )rc   r   r   r6   r  r   r  ri   pvaluerZ  ks_2sampr  )rk   r>   r   rvs_laplacervs_normr1   r1   r2   r2  W  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   rr   r:  rv   r;  )r   r`   r`   r#  r   rX   )rc   r   r   r6   r  r   r  ri   )rk   r>   r   r1   r1   r2   test_rvs_broadcastingh  s   ...2z!TestGennorm.test_rvs_broadcastingN)r   r   r   r  r  r2  r  r1   r1   r1   r2   r  H  s
    r  c                   @   &   e Zd Zejdddgdd ZdS )
TestGibratx, sfx)r  gD.?)  gJ]b<c                 C   0   t tj||dd t tj||dd d S N+=r{   )r   r6   r  r   r  rk   rZ   sfxr1   r1   r2   test_sf_isf     zTestGibrat.test_sf_isfN)r   r   r   r   r   r   r  r1   r1   r1   r2   r  r  s
    
r  c                   @   sX   e Zd Zdd Zejdg ddd Zdd Zd	d
 Z	ejdg ddd Z
dS )TestGompertzc                 C   s&   t jt jddd}t|d d S N0.++r   )r6   gompertzr   ri   r   rn  r1   r1   r2   test_gompertz_accuracy     z#TestGompertz.test_gompertz_accuracyz	x, c, sfx))r   rD  g|t?)r   rD  g(fMr;)r  r   g[?)      @r   gg[<c                 C   4   t tj|||dd t tj|||dd d S Nr  r{   )r   r6   r  r   r  )rk   rZ   r|  r  r1   r1   r2   r    s   zTestGompertz.test_sf_isfc                 C   ,   d}d}d}t j||}t||dd d S )N       @rX   g_r  r{   )r6   r  r  r   )rk   rZ   r|  rd  r  r1   r1   r2   r    
   zTestGompertz.test_logcdfc                 C   r  )Ng"ul/r<  gH7Wr  r{   )r6   r  r  r   )rk   rZ   r|  rd  r  r1   r1   r2   r    r  zTestGompertz.test_logsfc, ref))r  geUT8?)r   gtqq?)r   gs{)r  gN*6c                 C   r  r  )r   r6   r  rD   rk   r|  rd  r1   r1   r2   rS       zTestGompertz.test_entropyN)r   r   r   r  r   r   r   r  r  r  rS  r1   r1   r1   r2   r    s    
r  c                   @   r  )TestFoldNorm	x, c, ref)r  :0yE>g:0N<?)r  r  g:?c                 C      t tj|||dd d S ry   )r   r6   foldnormri   rk   rZ   r|  rd  r1   r1   r2   rB       zTestFoldNorm.test_cdfN)r   r   r   r   r   r   rB  r1   r1   r1   r2   r    s
    
r  c                   @   s   e Zd Zejdddgdd Zejdg ddd	 Zejd
ddgejdg dejdddgejdddgdd Zdd Z	dS )TestHalfNormr  )r   |N?)r[   Oul2;c                 C   r  r  )r   r6   halfnormr   r  r  r1   r1   r2   r    r  zTestHalfNorm.test_sf_isfr  ))Ww'&l7g;G<^͛7)C]r2<gE~o-<)rh  g?c                 C   r  ry   )r   r6   r  ri   rk   rZ   rd  r1   r1   r2   rB    r  zTestHalfNorm.test_cdfr   h㈵>r  	rvs_scalert   r\   r   r   TF	fix_scalec           	      C   s   t jd}tjj||d|d}|r9|r9d}tjt|d tj	j
|||d W d    d S 1 s2w   Y  d S i }|rA||d< |rG||d< ttj|fi |d	d
i d S Nr   r   r^   r_   r   r   r   r   r   r   r   r   r   T)rc   r   r   r6   r  r   r   r   r   halflogisticr   r   	rk   r   r  r   r  r   r   	error_msgr   r1   r1   r2   r     s(   
z(TestHalfNorm.test_fit_MLE_comp_optimizerc                 C   D   t t tjjg ddd W d    d S 1 sw   Y  d S Nr   r`   r   )r   r   r"   r6   r  r   ro   r1   r1   r2   test_fit_error     "zTestHalfNorm.test_fit_errorN)
r   r   r   r   r   r   r  rB  r   r  r1   r1   r1   r2   r    s    


r  c                   @   sd   e Zd Zejdddgejdddgejddd	gejd
dd	gdd Zdd ZdS )TestHalfCauchyr   r  r  r  rt   r   r   TFr  c           	      C   s   t jd}tjj||d|d}|r9|r9d}tjt|d tj	j
|||d W d    d S 1 s2w   Y  d S i }|rA||d< |rG||d< ttj	|fi | d S )	Nr   r   r  r   r   r  r   r   )rc   r   r   r6   r  r   r   r   r   
halfcauchyr   r   r  r1   r1   r2   r     s$   
z*TestHalfCauchy.test_fit_MLE_comp_optimizerc                 C   r  r  )r   r   r"   r6   r  r   ro   r1   r1   r2   r  .  r  zTestHalfCauchy.test_fit_errorN)r   r   r   r   r   r   r   r  r1   r1   r1   r2   r    s    r  c                   @   s   e Zd Zejdddgdd Zejdg ddd	 Zd
d Zdd Z	ejdddgejdg dejdddgejdddgdd Z
dd ZdS )TestHalfLogisticr  )r\   ]6)   L-c                 C   r  ry   )r   r6   r  r   r  r1   r1   r2   r  <  s   zTestHalfLogistic.test_sfq, ref))r  r\   )r  r  )硏v?g   .!>)g?g      <c                 C   r  ry   )r   r6   r  r  rk   r_  rd  r1   r1   r2   r  H  r  zTestHalfLogistic.test_isfc                 C   &   d}d}t j|}t||dd d S )Ng      >@guVJr  r{   )r6   r  r  r   rk   rZ   rd  r  r1   r1   r2   r  O     zTestHalfLogistic.test_logcdfc                 C   r  )Nr  g+r  r{   )r6   r  r  r   rk   rZ   rd  r  r1   r1   r2   r  V  r  zTestHalfLogistic.test_logsfr   r  r  r  r  r   TFr  c           	      C   s   t jd}tjj||d|d}i }|r;|r;d}tjt|d tjj	|||d W d    d S 1 s4w   Y  d S |rA||d< |rG||d< t
tj|fi |d	d
i d S r  )rc   r   r   r6   r  r   r   r   r   r   r   )	rk   r   r  r   r  r   r   r   r  r1   r1   r2   r   ]  s(   
z,TestHalfLogistic.test_fit_MLE_comp_optimizerc                 C   sJ   d}t t|d tjjg ddd W d    d S 1 sw   Y  d S )Nz; Maximum likelihood estimation with 'halflogistic' requiresr   )r   r`   r   r   r   )assert_raisesr"   r6   r  r   rk   r-   r1   r1   r2   test_fit_bad_flocz  s   "z"TestHalfLogistic.test_fit_bad_flocN)r   r   r   r   r   r   r  r  r  r  r   r  r1   r1   r1   r2   r  4  s    



r  c                   @   rq  )TestHalfgennormc                 C   r  r  )r6   halfgennormrb   exponr   r  r1   r1   r2   
test_expon  r  zTestHalfgennorm.test_exponc                 C   r  r  )r6   r  rb   r  r   r  r1   r1   r2   test_halfnorm  r  zTestHalfgennorm.test_halfnormc                 C   s6   g d}t j|d}t j|d}t|d|  d S )Nr   g
(?r`   )r6   r  rb   r  r   r  r1   r1   r2   test_gennorm  s   zTestHalfgennorm.test_gennormN)r   r   r   r  r  r  r1   r1   r1   r2   r    s    r  c                   @   rq  )TestLaplaceasymmetricc                 C   s6   t g d}tj|d}tj|}t|| d S r  )rc   r   r6   laplace_asymmetricrb   rZ  r   r  r1   r1   r2   r    s   z"TestLaplaceasymmetric.test_laplacec                 C   sL   t g d}d}d| }tj||}tj||d  |}t|| d S )Nr   r`   r   )rc   r   r6   r  rb   r   )rk   r  r}   kapinvr  r  r1   r1   r2   test_asymmetric_laplace_pdf  s   z1TestLaplaceasymmetric.test_asymmetric_laplace_pdfc              	   C   s   t t d t dg}d}tj||}tj||}tj||}t ddg}t ddg}t dd	g}tj||}	|}
tj	||}|}t
t ||||	|ft ||||
|f d S )
N   r[   r`   rX   gMbp?r  V-?r   gMb`?)rc   r   ru  r6   r  rb   ri   r   r   r  r   concatenate)rk   r  r}   r  cdf1sf1r  cdf2sf2ppf1ppf2isf1isf2r1   r1   r2   !test_asymmetric_laplace_log_10_16  s   z7TestLaplaceasymmetric.test_asymmetric_laplace_log_10_16N)r   r   r   r  r   r  r1   r1   r1   r2   r    s    	r  c                   @   s   e Zd Zdd Zejdg ddd Zejdg ddd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zg dg dg dg ddejdddd gej dd!dd"d gg d#g d$g d%g	ZeeZejd&ed'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5S )6TestTruncnormc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestTruncnorm.setup_method	a, b, ref))r   r\   r  )333333?ffffff?gܲl)r7  g>g+c                 C   r  N绽|=r{   r   r6   	truncnormrD   rk   r/   r0   rd  r1   r1   r2   rS    s   zTestTruncnorm.test_entropy))rY  r  ghiɮ9?)r  r  r  )g0.+r  r  )}Ô%Ir  Z_2?c                 C   r  r  r  r  r1   r1   r2   test_extreme_entropy  s   z"TestTruncnorm.test_extreme_entropyc              	   C   J   t jjg ddddgd dd}ttjdd	dd
dtjg}t|| d S )Nr   r   r  rr   H.?r   r`   r  r:  r      r`   r]   r   fO?l@r   )r6   r  r   rc   r   r  r   r  r1   r1   r2   test_ppf_ticket1131  
   
z!TestTruncnorm.test_ppf_ticket1131c              	   C   r  )Nr  r  r:  r   r  r`   r]   r   r  r  r   )r6   r  r  rc   r   r  r   r  r1   r1   r2   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)ir.  r   r   r[   r#  )r[      r6   r  r   r   minr  rk   lowhighrZ   r1   r1   r2   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)r\   rY   r   r   r[   r#  )r     )'  i'  )i)r6   r  r   r   r$  r  rG   r%  r1   r1   r2   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   ry  rv   r   r   r   r   r:  r:  rw   rw   )r   d._MT
@BKg?r   r   )r   r1  r0  r   r   r`   rr   r   rr   r:  gĖy	@gdv*?g,mj%V?rN  )rc   r   r  r6   r  ri   r   rb   r   ru  r   r   )rk   r&  r'  xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsrb   r1   r1   r2   test_gh_9403_nontail_values  sJ   



"z)TestTruncnorm.test_gh_9403_nontail_valuesc                 C   s  ddgddgfD ];\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t g d}t g d}	t g d}
|d	k rWt g d
}
t|| t||	 t||
 tt 	|
d |
d  |d  t g d}tj
|||}t |t |d |g}t|| tj|||}t|| |d	k rttj|||d ttj|||d nttj|||d ttj|||d tj|||}tt 	||
d  |d d  t ||d}|d d d  }ttj|||tj|| | d d d  ttj|||tj|| | d d d  ttj|||tj|| | d d d  qd S )N'   r>  irv   r.  r/  )r   pGC@Ff<r   r   )r   rB  rA  r   r   r`   rr   r2  gEC@g i?gspXio)>rN  r"  r   )rc   r   r  r6   r  ri   r   rb   r   ru  r   r   r?  )rk   r&  r'  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  rb   xvals2r1   r1   r2   test_gh_9403_medium_tail_values0  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 T?rh  g @gR?)r   r6   r  ri   rc   r  ro   r1   r1   r2   test_cdf_tail_15110_14753_  s   z'TestTruncnorm.test_cdf_tail_15110_14753)r"  rw   r:  rw   rw   )r.  r[   rw   r:  rw   gLFu)r-  r   rw   gMFmz%?rw   gſ)r   r`   rw   ghI}?rw   gHNMr   gQ63E?gnl$A?gr1"D?gK8L?gQ63Egr1"D)r   r   gU*? bn?gnA??c3TXʿ)r-  r   gU*ҿrI  gnArJ  )r.  g"$7"gOxr?gp7`g'>K@casec                 C   sL   |\}}}}}}t jj ||dd\}}	}
}t||	|
|g||||gdd d S )Nry  rz  FFg<r   )r6   r  r   )rk   rL  r/   r0   m0v0s0k0r  vrJ   rW   r1   r1   r2   r    s   "zTestTruncnorm.test_momentsc                 C   s0   t jj dtjdd\}}t|d t|d d S )Nr   mvrz  g e3E?g:&A?)r6   r  rc   r  r   )rk   r  rR  r1   r1   r2   test_9902_moments  s   
zTestTruncnorm.test_9902_momentsc                 C   sV   d\}}t jj||dddd}t||   k o%|   k o%|k  d S    d S )N)r[   r'  r   r   r[   r#  r#  r%  r1   r1   r2   test_gh_1489_trac_962_rvs  s   8z'TestTruncnorm.test_gh_1489_trac_962_rvsc                 C   s   ddt j dt j t j dddddg}dddt jddddd	t jt jg}tjj||dt|fd
}t |dt|fks=J tt ||j	ddk tt |j
dd|k d S )Nr.  r[   r  ir>  r"  r   r@  -   r#  r   )axis)rc   r  r6   r  r   r   r*  r   r   r$  r  r%  r1   r1   r2   test_gh_11299_rvs  s   & zTestTruncnorm.test_gh_11299_rvsc                 C   s.   t tjdrtjjdddtj d d S d S )Nr   r.  r  r   r   )r.   rc   r   r6   r  r   r   ro   r1   r1   r2   test_rvs_Generator  s
   
z TestTruncnorm.test_rvs_Generatorc                 C   s   t t j t j dt j dg}t t jt jddt jg}t g d}g d}tt|||| tt| | | | d S )Nr[   rh  )r[         @r[  	   r  )gOul"gځ=!gL!g>EG	f g^K[X)rc   r   r  r   r6   r  r  r  )rk   r/   r0   rZ   rT   r1   r1   r2   test_logcdf_gh17064  s    "z!TestTruncnorm.test_logcdf_gh17064c                 C   s$   t ddd}d}t|| d S )Nr   r   r   gl).0S?)r6   r  rJ  r   )rk   r   rd  r1   r1   r2   test_moments_gh18634  s   z"TestTruncnorm.test_moments_gh18634N)r   r   r   r   r   r   r   rS  r  r  r!  r(  r,  r>  rD  rG  rc   r  _truncnorm_stats_datar   r  rT  rU  rX  rY  r]  r^  r1   r1   r1   r2   r    s\    


#/
#

r  c                   @   s   e Zd Zejdg ddd Zejdg ddd Zejd	d
dgdd Zejdddgdd Z	ejdddgdd Z
ejd	ddgdd ZdS )TestGenLogisticx, expected))ig4`n)ig4	ncg)r   gX
=)r\   gh@X)r   gh<c                 C   s$   d}t j||}t||dd d S )Nr  r   r{   )r6   genlogisticr   r   )rk   rZ   rT   r|  r  r1   r1   r2   r    s   zTestGenLogistic.test_logpdfr  ))r  gTKEl@)r  gJk$@)r   gsF<?)r  7~F<?c                 C   r  r  )r   r6   rb  rD   r  r1   r1   r2   rS    r  zTestGenLogistic.test_entropyr  )r  r[   g8.)  r  gpT	oc                 C   r  r  )r   r6   rb  r   r  r1   r1   r2   r    r  zTestGenLogistic.test_sf	q, c, ref)rt   r  g^ #@)r  r`   gGFf@c                 C   r  NV瞯<r{   )r   r6   rb  r  rk   r_  r|  rd  r1   r1   r2   r    r  zTestGenLogistic.test_isf)rr   r  gİ@)rP  r  g1a@c                 C   r  rf  )r   r6   rb  r   rh  r1   r1   r2   r    r  zTestGenLogistic.test_ppf)r\   {Gz?g(?)r%  r  g'Tn7c                 C   r  ry   )r   r6   rb  r  r  r1   r1   r2   r    r  zTestGenLogistic.test_logcdfN)r   r   r   r   r   r   r  rS  r  r  r  r  r1   r1   r1   r2   r`    s*    








r`  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejjdd ZdS )TestHypergeomc                 C   r  r  r  ro   r1   r1   r2   r   	  r!  zTestHypergeom.setup_methodc                 C   s   t jjddddd}t|dkt|dk@ sJ t|dks#J |jjtd v s-J t jddd}t	|t
s<J t dddd}t	|tjsNJ |jjtd v sXJ d S )Nr  r[   r   r$  r#  r   r&  )r6   	hypergeomr   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2    s    zTestHypergeom.test_rvsc                 C   s6   d}d}d}|}|}t jd|||}t|dd d S )Ni	  r%  rd  r`   gkㅒP?r"  )r6   rk  r7  r   )rk   MrV  r  totgoodhgpmfr1   r1   r2   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   r`   r   r:  r"  rw   )r   r6   rk  r7  ro   r1   r1   r2   	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   r6   rk  ri   ro   r1   r1   r2   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@@r        @     @c                    s"   g | ]}t j   |qS r1   )r6   rk  r   )r=   eatenorangespearsquantiler1   r2   r?   5  s    z1TestHypergeom.test_precision2.<locals>.<listcomp>)r   gpR(g㘍R2gJޱ p9g?Mf=
G?r   r   gƠ>r/  )g     @rw  g     @g     @g     @)r   r}  g)9g"1)rc   r   r   r6   rk  r   )rk   fruits_eatenr   rT   	quantilesr  	expected2r1   ry  r2   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   rN  rw   )	r6   rk  rD   rc   r   rO  r   r   r   )rk   hgrR  rP  rQ  r1   r1   r2   rS  A  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 )Nrv      cA    .A     j@gor   r=  r   @  X  rG  g_7	j$r'  )r6   rk  r  r   rk   rW   rl  rV  r  resultrT   r1   r1   r2   r  M  s   zTestHypergeom.test_logsfc                 C   s   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d}d	}d}d}t j||||}d}t||dd tg d}d	}d
}d}t j||||}tdd}t||dd d S )Nr   r  r  r  g)\Ur   r=  r>  r  r%  rG  g*@Vr'  }      rd  gר)r>  r>  r>  )r6   rk  r  r   rc   r   fullr  r1   r1   r2   r  e  s8   zTestHypergeom.test_logcdfc                 C   s6   d}d}d}t j|||}|| | }t|| d S )Nip iP i.  )r6   rk  r   r   )rk   rl  rV  r  hmrmr1   r1   r2   test_mean_gh18511  s   zTestHypergeom.test_mean_gh18511c                 C   s`   d}d}t dd}d| }tj|d |||}t |dks"J t t |dk s.J d S )Nr[   r   r   r'  r  r   r   )rc   r   r6   rk  r   r   diff)rk   rV  r  rK  population_sizerW  r1   r1   r2   test_sf_gh18506  s   zTestHypergeom.test_sf_gh18506N)r   r   r   r   r2  rp  rq  rr  r  rS  r  r  r  r   r   r   r  r1   r1   r1   r2   rj    s    
	.rj  c                   @   s   e Zd Zejdg ddd Zejdg ddd Zd	d
 Zdd Z	dd Z
dd Zejdddgdd Zejdg ddd ZdS )TestLoggammaz	x, c, cdf))r   r`   g;Y%?)r      gRٲa6_<)gHr  gi|e?)r  g6l?)i+rX   g֬CCf9)ir   g ֺlc                 C   <   t j||}t||dd t j||}t||dd d S r   )r6   loggammari   r   r   )rk   rZ   r|  ri   rW  yr1   r1   r2   r~    s   zTestLoggamma.test_cdf_ppfzx, c, sf))r   r  gQOu3;)   r\   g\Z{0)r  r  geɐ?)ig{Gzd?gr0T?c                 C   r  r   )r6   r  r   r   r  )rk   rZ   r|  r   rJ   r  r1   r1   r2   r    s   zTestLoggamma.test_sf_isfc                 C       t jdd}t|ddd d S )Nr`   g     @r  r{   )r6   r  r   r   )rk   lpr1   r1   r2   r    s   zTestLoggamma.test_logpdfc                 C   ,   d}d}t j||}d}t||dd d S )Nr        @gI.r  r{   )r6   r  r  r   )rk   rZ   r|  r  rd  r1   r1   r2   r    
   zTestLoggamma.test_logcdfc                 C   r  )Ng      9      @g!{1+ҷr  r{   )r6   r  r  r   )rk   rZ   r|  r  rd  r1   r1   r2   r    r  zTestLoggamma.test_logsfc                 C   sT   t g ddd}|D ]\}}}}}tjj|dd}t|||||gdd qd S )N)rr   g"~jg46<@g oŏr  r:  g	h"lxgQ?gZd;333333@r  g{/L@g??gгYҿgh|?5?r   r   msvkrz  r   r=  )rc   r   reshaper6   r  r   )rk   tabler|  r   varskewkurtcomputedr1   r1   r2   r~    s   zTestLoggamma.test_statsr|  rX   r  c                 C   sx   t jj|dd}t| sJ t j|}t t||k t	|}|j
dd}|jd  k r7|jk s:J  J d S )Nr   r#  rh  )confidence_levelrr   )r6   r  r   rc   isfiniter   median	binomtestcount_nonzeror   proportion_cir&  r'  )rk   r|  rZ   medbtestcir1   r1   r2   r2    s   $zTestLoggamma.test_rvsr  ))r  g3H໱k3@)r   rc  )rv  g8,[H^}	)r  g90$)r  gtum\c                 C   r  r  )r   r6   r  rD   r  r1   r1   r2   rS  	     zTestLoggamma.test_entropyN)r   r   r   r   r   r   r~  r  r  r  r  r~  r2  rS  r1   r1   r1   r2   r    s&    


r  c                   @   *   e Zd Zg dZejdedd ZdS )TestJohnsonsu))r  r   r   g?r  )r   r   r   gH';vIh%,=)r   r   r   g?x7r  rL  c                 C   sF   |\}}}}}t tj||||dd t tj|||||d d S Nr  r{   )r   r6   	johnsonsur   r  rk   rL  rZ   r/   r0   r   tolr1   r1   r2   r  %	     zTestJohnsonsu.test_sf_isfNr   r   r   casesr   r   r   r  r1   r1   r1   r2   r  	      r  c                   @   r  )TestJohnsonb))r  r   r   r  r  )r  r   r   g0jA:r  )r  r   r   gQbF5r  rL  c                 C   sF   |\}}}}}t tj||||dd t tj|||||d d S )Nr  r{   r   )r   r6   r  r   r  r  r1   r1   r2   r  ;	  r  zTestJohnsonb.test_sf_isfNr  r1   r1   r1   r2   r  ,	  r  r  c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgdd Zdd Zej	
dddgdd Zdd ZdS )TestLogisticc                 C   2   t dd}tj|}tj|}t|| d S Nrx  r  )rc   r?  r6   logisticri   r   r   rk   rZ   r  r}  r1   r1   r2   r~  D	     zTestLogistic.test_cdf_ppfc                 C   r  r  )rc   r?  r6   r  r   r  r   r  r1   r1   r2   r  J	  r  zTestLogistic.test_sf_isfc                 C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r6   r  r   r  )rk   rW  desiredr1   r1   r2   test_extreme_valuesP	  s   z TestLogistic.test_extreme_valuesc                 C   s*   t jg d}g d}t||dd d S )N)r9  r   r[   )gm\  .g9B.gO& $r   r{   )r6   r  r   r   )rk   r  rT   r1   r1   r2   test_logpdf_basicW	  s   zTestLogistic.test_logpdf_basicc                 C   s"   t jddg}t|ddg d S )Nrq   r  )r6   r  r   r   rk   r  r1   r1   r2   test_logpdf_extreme_values_	  s   z'TestLogistic.test_logpdf_extreme_valueszloc_rvs,scale_rvs)g9x&?gi '?)gB"?gs^&?c                 C   sR   t jjd||d}dd }t|t j||fdj}t j|}t||dd d S )Nr\   r   r^   r_   c                 S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS Nr   r`   )r   rc   rO  r   )inputr   r/   r0   rV  x1x2r1   r1   r2   r   k	  s   z#TestLogistic.test_fit.<locals>.funcr   r  r   )r6   r  r   r$   	_fitstartrZ   r   r   )rk   loc_rvs	scale_rvsr   r   expected_solution
fit_methodr1   r1   r2   test_fite	  s   
zTestLogistic.test_fitc                 C   sB   t jjdddd}tt j| tt j|dd tt j|dd d S )Nr\   rr   r`   r  r   r   r   )r6   r  r   r   rk   r   r1   r1   r2   test_fit_comp_optimizer}	  s   z$TestLogistic.test_fit_comp_optimizer
testlogcdfTFc                 C   sH   t g d}|rtj|}ntj| }g d}t||dd d S )N)r+  r     r%  rd  )     g      g%h9fg?~T}%mgCx^&ْV瞯<r{   )rc   r   r6   r  r  r  r   )rk   r  rZ   r  rT   r1   r1   r2   test_logcdfsf_tails	  s   z TestLogistic.test_logcdfsf_tailsc                 C   s2   t g ddgd  dgd  }ttj| d S )N)	i5%   +   rV  rV  0   6   7   :   ;   r   =   r\  )rc   r   r   r6   r  r  r1   r1   r2   test_fit_gh_18176	  s   
zTestLogistic.test_fit_gh_18176N)r   r   r   r~  r  r  r  r  r   r   r   r  r  r  r  r1   r1   r1   r2   r  B	  s    


r  c                   @   r  )

TestLogserc                 C   r  r  r  ro   r1   r1   r2   r   	  r!  zTestLogser.setup_methodc                 C      t jjddd}t|dksJ t|dksJ |jjtd v s$J t jd}t	|t
s1J t dd}t	|tjsAJ |jjtd v sKJ d S )Nr   r$  r#  r   r&  r   )r6   logserr   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2  	  r  zTestLogser.test_rvsc                 C   s   t jdd}t|d d S )Nr   r  g&Y3)r6   r  r7  r   rk   r  r1   r1   r2   test_pmf_small_p	  s   zTestLogser.test_pmf_small_pc                 C      t jd}t|d d S )Nr  gW  ?)r6   r  r   r   r  r1   r1   r2   test_mean_small_p	  s   zTestLogser.test_mean_small_pN)r   r   r   r   r2  r  r  r1   r1   r1   r2   r  	  s
    r  c                	   @   s   e Zd Zejdddd Zejdej	ej
gejdg dejdg d	ejd
ddgddgfdd Zejdej	dfej
dfgdd ZdS )TestGumbel_r_lfunctionscopec                 C      t jdS r  rc   r   r   ro   r1   r1   r2   r   	     zTestGumbel_r_l.rngr>   r  r   r   r   r  rX   r   r   zfix_loc, fix_scaleTFc           	      C   sN   |j d|||d}t }|r|d |d< |r|d |d< t||fi | d S )Nr\   r   r^   r_   r   r`   r   r   )r   r   r   )	rk   r>   r  r  r   r  r   r   r   r1   r1   r2   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>r7  r{   )rc   r   r   r   )rk   r>   r  zr^   r_   r1   r1   r2   r  	  s   zTestGumbel_r_l.test_fitN)r   r   r   r   fixturer   r   r   r6   gumbel_rgumbel_lr  r  r1   r1   r1   r2   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 )NrT  rr   ry  rz  r:  r  r  rv   rD  g?grq@r   r  gffffff?gK~?g      2@g۶m۶m?r  UUUUUU?gqq?r  r  g%I$I?gQ?gUUUUUU@grq?g88Nb@)rX  rY  rZ  r[  r6   paretor   rc   r  r  r   rT  rk   r  rR  rJ   rW   r1   r1   r2   r~  	  s`   











$zTestPareto.test_statsc                 C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eAr`   r  r   r]   )r6   r  r   r   )rk   rZ   r0   r_   rW  rT   r1   r1   r2   r  $
  s   zTestPareto.test_sfr  r  c                 C   r  r  r  ro   r1   r1   r2   r   ,
  r  zTestPareto.rngz2ignore:invalid value encountered in double_scalarsr   r   r`   r   r   r  r   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 )
Nr\   r   r0   r_   r^   r   r   p=
ף?)r   r   )r   fix_b)r   fbr`   r   )
r6   r  r   r   r   r$  r*  rc   rO  ru  )rk   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ndatar1   r1   r2   r  0
  s,   
zTestPareto.test_fitrX   fix_shape, fix_loc, fix_scalec                 C      g | ]}d |v r|qS Fr1   r=   rW  r1   r1   r2   r?   P
      zTestPareto.<listcomp>TFr   repeatignoreinvalidc           
      C   sV   t jjd||||d}i }	|r||	d< |r||	d< |r||	d< tt j|fi |	 d S )Nr\   r  r   r   r   )r6   r  r   r   
rk   r   r   r  r   r   r  r   r   r   r1   r1   r2   r   L
  s   	z&TestPareto.test_fit_MLE_comp_optimizerc                 C   s8   d\}}}t jj|||dtjdd}tt j| d S )N)r   r   r   r\   ið& r   )r6   r  r   rc   r   r   r   )rk   r*  locationr_   r   r1   r1   r2   test_fit_known_bad_seedb
  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   r`   r   )r   r`   r   r   r   r  )r  r6   r  r  r"   r   ro   r1   r1   r2   test_fit_warningsl
  s
   

zTestPareto.test_fit_warningsc                 C   s.   t jjddd|d}t|d t j|}d S )Ni~r   r\   )r^   r0   r   r   r   )r6   r  r   r
   r   )rk   r   r   r   r1   r1   r2   test_negative_datat
  s   
zTestPareto.test_negative_dataN)r   r   r   r~  r  r   r  r   r   filterwarningsr   r  r'   rc   errstater   r  r  r  r1   r1   r1   r2   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:  rw   rw          rr   )	rc   r   r6   	genpareto_get_supportr   r   isposinfr   )rk   r|  r/   r0   r1   r1   r2   test_ab
  s   


zTestGenpareto.test_abc                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| d S )Nrw   r|  r   r  r"  r:  r[   )
r6   r  rc   r?  r   rb   r  ri   r   r   rk   rvrZ   r_  r1   r1   r2   test_c0
  s   zTestGenpareto.test_c0c                 C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| t|
d	d d S )
Nr  r#  r   r  r"  rw   r:  r[   r   )r6   r  rc   r?  r   rb   uniformri   r   r   r   r$  r1   r1   r2   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 )NrX   r#  rw   r:  r  )
r6   r  r   rb   rc   r  ri   r   isneginfr   rk   r%  r1   r1   r2   
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   r[   r"  r   r   r  g+r  r   )r  r  )rc   r?  r6   r  rb   r   ri   )rk   rZ   r|  pdf0dcpdfccdf0cdfcr1   r1   r2   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 Nr  rt   rX   baser   r"  Fendpointr:  )rw   r  r-  r   )rc   r5  rz  r?  r6   r  r   r   )rk   r_  r|  ppf0r/  ppfcr1   r1   r2   test_c_continuity_ppf
     z#TestGenpareto.test_c_continuity_ppfc              	   C   r4  r5  )rc   r5  rz  r?  r6   r  r  r   )rk   r_  r|  isf0r/  isfcr1   r1   r2   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 )Nr  rt   rX   r6  r   r"  Fr8  r:  )r  gC]r2rz   gV瞯Ҽrz   r   )	rc   r5  rz  r?  r   r6   r  ri   r   )rk   r_  r|  r1   r1   r2   test_cdf_ppf_roundtrip
  s   z$TestGenpareto.test_cdf_ppf_roundtripc                 C   s    t jdddd}t|d d S )Nr  rt   r   r   gpEȜ)r6   r  r  r   r  r1   r1   r2   r  
  s   zTestGenpareto.test_logsfzc, expected_statsr   )r   r   r`   r  rN  r  gqq@r[   r`   gqq?g      ?g$I$	?rq?r  gll0@r   )rr   UUUUUU?r   333333c                 C   s$   t jj |dd}t||ddd d S )Nry  rz  r   rz   rI  )r6   r  r   )rk   r|  expected_statsr  r1   r1   r2   r~  
  s   zTestGenpareto.test_statsc                 C   s   t jd}t|ddd d S )Nr  gvǼ
  ?r   r{   )r6   r  r  r   )rk   rR  r1   r1   r2   test_var
  s   zTestGenpareto.test_varN)r   r   r   r"  r&  r(  r+  r3  r<  r@  rA  r  r   r   r   rc   rT  r  r~  rF  r1   r1   r1   r2   r  ~
  s(    

	


r  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestPearson3c                 C   r  r  r  ro   r1   r1   r2   r   
  r!  zTestPearson3.setup_methodc                 C   s   t jjddd}t|dksJ |jjtd v sJ t jd}t|t	s(J t dd}t|tj
s8J |jjtd v sBJ t|dksJJ d S )NrX   r$  r#  AllFloatrr   r   )r6   r+   r   rc   r*  r   r+  r   r,  r   rH  r   r/  r1   r1   r2   r2  
  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 )Nr`   rw   rX   r  )gtT?g+q?g?r7  r   r-  rX   ND}i?r-  r   r   r   r   )rJ  gj?gdC?gs?g'M?)r6   r+   rb   r   rc   r   r  r1   r1   r2   r9    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 )Nr`   rI  )grE?gTp]0?g~?r7  r   r-  rX   g E&"J?rK  )giZ*J?gh+8w?gcK?g|<x6?gG?)r6   r+   ri   r   rc   r   r  r1   r1   r2   rB    s   

zTestPearson3.test_cdfc                    s@   g d}dd t j|} fdd|D }t|| d S )Nr-  r   r   rr   rr   rH  c                    s$   g | ]}t t|j d  qS r;   )r   r6   r+   rb   )r=   r  neg_infx_evalr1   r2   r?     s    z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r6   r+   ri   r   )rk   skewsr5  int_pdfsr1   rM  r2   test_negative_cdf_bug_11186  s   z(TestPearson3.test_negative_cdf_bug_11186c                 C   sT   t jdd}t|d t|tjsJ t jdd}t|d t|tjs(J d S )Nr   r`   r   r7  )r6   r+   rJ  r   r,  rc   number)rk   rJ  r1   r1   r2   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 )NrL  rr   r   r  r   r`   )r6   r+   r   ri   r   rc   r   r?  rb   r   r  )rk   rP  rO  r   r  rZ   r1   r1   r2   test_ppf_bug_17050.  s   
zTestPearson3.test_ppf_bug_17050c                 C   sT   g d}g d}g d}t tj|||dd t tj|dtj|dd d S )N)rX   rr   r:  皙)r;  r  rd  r  )g7>g~׼=gp'+7g;r  r{   r   )r   r6   r+   r   r  )rk   r  rZ   rd  r1   r1   r2   r  A  s
   $zTestPearson3.test_sfN)r   r   r   r   r2  r9  rB  rR  rT  rU  r  r1   r1   r1   r2   rG  
  s    

rG  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
TestKappa4c                 C   sD   g d}d}dD ]}t j|||}t j|| }t|| qd S )N)rw   rX   r  rr   r:  )
gffffffr  r   皙ɿrV  rX   r  rr   r:  ffffff?)r6   kappa4ri   r  r   rk   rZ   rR  rW   r0  	vals_compr1   r1   r2   test_cdf_genparetoN  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   r[   rw   r-  r   )rc   r?  r6   rZ  ri   
genextremer   r[  r1   r1   r2   test_cdf_genextremeY  s   zTestKappa4.test_cdf_genextremec                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   r[   r:  rw   )rc   r?  r6   rZ  ri   r  r   r[  r1   r1   r2   test_cdf_exponb     zTestKappa4.test_cdf_exponc                 C   @   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   r[   rw   )rc   r?  r6   rZ  ri   r  r   r[  r1   r1   r2   test_cdf_gumbel_rk  ra  zTestKappa4.test_cdf_gumbel_rc                 C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   r[   r  rw   )rc   r?  r6   rZ  ri   r  r   r[  r1   r1   r2   test_cdf_logistict  ra  zTestKappa4.test_cdf_logisticc                 C   rb  )Nr  r   r[   r:  )rc   r?  r6   rZ  ri   r'  r   r[  r1   r1   r2   test_cdf_uniform}  ra  zTestKappa4.test_cdf_uniformc                 C   s   t dd d S r  )r6   rZ  ro   r1   r1   r2   test_integers_ctor  s   zTestKappa4.test_integers_ctorN)
r   r   r   r]  r_  r`  rc  rd  re  rf  r1   r1   r1   r2   rW  M  s    					rW  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestPoissonc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestPoisson.setup_methodc                 C   s@   t d}tjg d|}d|d |d d g}t|| d S )Nr`   r   r   r`   rr   r   )rc   ru  r6   rc  r7  r   )rk   ln2r0  rT   r1   r1   r2   test_pmf_basic  s   
zTestPoisson.test_pmf_basicc                 C   s@   t jg dd}g d}t|| t jdd}t|d d S )Nrh  r   )r   r   r   ffffff?r   r   )r6   rc  r7  r   intervalr   )rk   r0  rT   rm  r1   r1   r2   test_mu0  s
   
zTestPoisson.test_mu0c                 C   r  )Nrr   r$  r#  r   r&  r   )r6   rc  r   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2    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@ry  rz  r:  )rw   r:  rv   r   r`   rr   )r6   rc  r   rc   rT  r   r  )rk   r#  r  rT   r1   r1   r2   r~    s    &zTestPoisson.test_statsN)r   r   r   r   rj  rn  r2  r~  r1   r1   r1   r2   rg    s    	rg  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  ro   r1   r1   r2   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   r`   r   r[   r\   r   r   rr   r   r:  r`   rw   )rc   r   r5   r   gammalnr   r6   ksoner   r  kstwori   r   )rk   rV  rZ   v1lgelgrT   rl  r1   r1   r2   rB    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"  rq  rr   r:  r`   )rc   r?  r   r5   r   rr  r   r6   rs  r   r$  rt  r   )rk   rZ   rV  ru  rv  rw  rT   r  r1   r1   r2   r    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   r`   r"  r   )r%  r\   r  i  r   r   r  )rc   r?  rT  r6   rt  ri   r  r
   )rk   rZ   ns_xxnprobsdiffsr1   r1   r2   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"  rq  )rc   r?  r6   rt  ri   r   r   )rk   rZ   rV  rl  r  r1   r1   r2   r    s   zTestKSTwo.test_cdf_sfc                 C   sT   t ddd}dD ]}|t | }tj||}tj||}t|d|  q	d S r~  )rc   r?  rT  r6   rt  ri   r   r   )rk   rZ   rV  rz  rl  r  r1   r1   r2   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"  rq  rr   rP  r  r{   )rc   r?  r6   rt  ri   r   r   rk   rZ   rV  rz  rl  condr0  r1   r1   r2   test_ppf_of_cdf  s   zTestKSTwo.test_ppf_of_cdfc                 C   r  )	Nr   r   r"  rq  rr   r:  r  r{   )rc   r?  r6   rt  r  r   r   )rk   rZ   rV  rz  vals_isfr  r0  r1   r1   r2   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"  rq  rr   r:  )rc   r?  rT  r6   rt  ri   r   r   r  r1   r1   r2   test_ppf_of_cdf_sqrtn  s   zTestKSTwo.test_ppf_of_cdf_sqrtnc                 C   r  )Nr   r   r"  rq  rr   rk  )rc   r?  rT  r6   rt  r   r  r   )rk   rZ   rV  rz  r  r  r0  r1   r1   r2   test_isf_of_sf_sqrtn  s   zTestKSTwo.test_isf_of_sf_sqrtnc                 C   sJ   t ddddd  }dD ]}tj||}tj||}t|| qd S r~  )rc   r?  r6   rt  r   ri   r   )rk   r{  rV  rz  rl  r1   r1   r2   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)r[   r%  r\   r  rd  r   )rN  gUUUUUU?rr   r   r`   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?r`   r  r{   )
rc   r   	enumerateru  rT  rd   r6   rt  ri   r   )rk   rx  ratiosrT   idxrV  rZ   rl  r1   r1   r2   test_simard_lecuyer_table1&  s   "z$TestKSTwo.test_simard_lecuyer_table1N)r   r   r   r   rB  r  r}  r  r  r  r  r  r  r  r  r1   r1   r1   r2   rp    s    
		
rp  c                   @   rq  )TestZipfc                 C   r  r  r  ro   r1   r1   r2   r   I  r!  zTestZipf.setup_methodc                 C   r  )Nr  r$  r#  r   r&  r   )r6   zipfr   rc   r   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2  L  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{  )r6   r  r   rc   r  r   r  r   r  r1   r1   r2   r  W  s
   zTestZipf.test_momentsN)r   r   r   r   r2  r  r1   r1   r1   r2   r  H  rv  r  c                   @   r  )
TestDLaplacec                 C   r  r  r  ro   r1   r1   r2   r   b  r!  zTestDLaplace.setup_methodc                 C   s   t jjddd}t|dksJ |jjtd v sJ t jd}t|t	s(J t dd}t|tj
s8J |jjtd v sBJ t jdd usLJ d S )Nr  r$  r#  r&  r   r   )r6   dlaplacer   rc   r*  r   r+  r   r,  rG  rH  r/  r1   r1   r2   r2  e  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:  ry  r  r   r`   r   rl  r  r  r  r/  )r6   r  rc   r   r7  rO  r   r   )rk   r/   dlr  rR  rJ   rW   r  r}  ppm2m4r1   r1   r2   r~  p  s   

&(zTestDLaplace.test_statsc                 C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Nrv   ry  )rw   rw   )r        
@)rc   ru  r6   r  r   r   )rk   r/   r  r  rR  rJ   rW   r1   r1   r2   test_stats2}  s
   

zTestDLaplace.test_stats2N)r   r   r   r   r2  r~  r  r1   r1   r1   r2   r  a  s
    r  c                       s   e Zd Zdd Zejdddgdd Zejdddg fd	d
Zdd Z	dd Z
dd Zejdg ddd Z  ZS )TestInvgaussc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)r`   r   r   )g
ףp=@g r@gʡE6@c                 C   sB  t jjd|||d}t jj||d\}}}|| }t|}t|t|d |d   }	||	 }
t|
|ddd t|	|ddd t	|| t jjd|||d}t jj||d |d d\}}}t	|d | t	|d | t jj|d	d
d }t jj|d	dd }t jj|d	dd }||  kr|  krd	ksJ  J d S )Nr\   )r   r#  r^   r_   r   r   rz   r/  r   r  r   )fmur   )fix_mur   )
r6   r  r   r   rc   r   r   rO  r   r   )rk   rvs_mur   r  r   r#  r^   r_   mu_temp	scale_mlemu_mle
shape_mle1
shape_mle2
shape_mle3r1   r1   r2   r    s.   



*zTestInvgauss.test_fit)gX9v>@g	@gGz@c           	         s   t jd}tjjd||||d}tttjtjj}||}tj|}t	|| ||ddd}tjj|ddd}t	|| t
tj||d t ||d  dksTJ t
tj||d d t
tj|dd t
tj||t jdd d	 d S )
Nr   r\   )r   r#  r^   r_   r   r   r`   )r   r  r   r   r  )rc   r   r  r6   r  r   r   r   r   r   r   r   rand)	rk   r  r   r  r   r   	super_fitsuper_fittedinvgauss_fit	__class__r1   r2   r     s$   




z(TestInvgauss.test_fit_MLE_comp_optimizerc                 C   sN   t tj tt tjjg ddd W d    d S 1 s w   Y  d S r  )r  r6   r  r   r   r"   r   ro   r1   r1   r2   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ٷ
??)r6   r  ri   r   r   r   )rk   r#  rT   rP   
cdf_actual	sf_actualr1   r1   r2   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)r6   r  r  r   r  )rk   r  r  r1   r1   r2   r    s   	


zTestInvgauss.test_logcdf_logsfzmu, ref))r  g,9)r  g%!)rt   g40)r   gK'
@)r  g`p
@c                 C   r  r  )r   r6   r  rD   )rk   r#  rd  r1   r1   r2   rS       zTestInvgauss.test_entropy)r   r   r   r   r   r   r   r  r   r  r  r  rS  __classcell__r1   r1   r  r2   r    s    
"#r  c                   @   s.   e Zd Zejdg ddd Zdd ZdS )
TestLandauname)rb   ri   r   r   r  c                 C   sr   |dv rt dddf}nt dddf}ttj|}ttj|}|| }|g |ddR  }t||dd	 d S )
N>   r  r   rX   r   r   r   r[   r   r  r{   )rc   r?  r  r6   landaulevy_stabler   )rk   r  rZ   landau_methodlevy_methodr   rd  r1   r1   r2   test_landau_levy_agreement  s   z%TestLandau.test_landau_levy_agreementc                 C   s4   t tjjddtjfd  t tjdtj d S )Nry  rz  r   r   )r   r6   r  rc   r  rJ  ro   r1   r1   r2   r  &  s   zTestLandau.test_momentsN)r   r   r   r   r   r   r  r  r1   r1   r1   r2   r    s    
r  c                       s   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dd Z  ZS )TestLaplacer   )r  r   r   r`   r  )r   r`   r   r[   c           	      C   sZ  t jd}tjjd|||d}t |}t t || t	| }tj
|\}}t||ddd t||ddd tjj
||d\}}t||ddd tjj
||d\}}t|| |d }t t || t	| }tjj
||d\}}t|| tjj
||d\}}t|| tttjj
|||d	 tttjj
t jg tttjj
t jg d S )
Nr   r\   r  rz   r/  r   r  r`   r  )rc   r   r  r6   rZ  r   r  rO  r   r   r   r   r   r  r   r  r  r  )	rk   r   r  r   r   loc_mler  r^   r_   r1   r1   r2   r  -  s0   



zTestLaplace.test_fitrvs_loc,rvs_scale))r  r[   r[   r   )rr   r  c                    s   t jd}tjjd|||d}dd }tj|\}}tttjtj|\}}	||||}
|||	|}|
|k sEt j	|
|dddsGJ d S d S )Nr   r   r  c              	   S   s8   dt | td|  d| tt||     S )Nr   r`   r   )r   rc   ru  rO  r   )r^   r_   r   r1   r1   r2   lle  s   z3TestLaplace.test_fit_MLE_comp_optimizer.<locals>.llrz   r/  )
rc   r   r  r6   rZ  r   r   r   r   r   )rk   r   r  r   r   r  r^   r_   loc_opt	scale_optll_mlell_optr  r1   r2   r   \  s    
z'TestLaplace.test_fit_MLE_comp_optimizerc                 C   sZ   t g d}tjj|dd\}}t|dddd tjj|dd\}}t|dddd d S )N)r:  r:  r  r;  r  rF  r  r   r   rz   r/  r  )rc   r   r6   rZ  r   r   )rk   r   r^   r_   r1   r1   r2   test_fit_simple_non_random_datas  s
   z+TestLaplace.test_fit_simple_non_random_datac                 C   sl   d}t j| }|dksJ t j|}|dksJ t j|}|dks'J t j| }|dks4J d S )Nr   rw   r:  )r6   rZ  ri   r   )rk   rZ   p0p1r1   r1   r2   test_sf_cdf_extremes|  s   z TestLaplace.test_sf_cdf_extremesc                 C   s.   d}t j|}t|t| d dd d S )Nr  r`   r   r{   )r6   rZ  r   r   rc   r   )rk   rZ   rW  r1   r1   r2   r       zTestLaplace.test_sfc                 C   s.   d}t j|}t|td|  dd d S )Ng}:r`   r   r{   )r6   rZ  r  r   rc   ru  )rk   rW  rZ   r1   r1   r2   r    r  zTestLaplace.test_isfc                 C   s>   d}d}t j|}t|| t j| }t||dd d S )Nr>  g$ICr  r{   )r6   rZ  r  r   r  r  r1   r1   r2   r    s   
zTestLaplace.test_logcdf_logsf)r   r   r   r   r   r   r  r   r  r  r  r  r  r  r1   r1   r  r2   r  ,  s    -	r  c                   @   s   e Zd Zdd Zdd Zejdg ddd Zejd	g d
ejddgejdddgejdddgdd Z	dS )TestLogLaplacec                 C   s@   t g d}t g d}g d}ttj|||dd d S )N)rv   r  r;  )r  r    4&kC)g ?gKH9gXrL0rz   r{   )rc   r   r   r6   
loglaplacer   )rk   r|  rZ   rd  r1   r1   r2   r    s   zTestLogLaplace.test_sfc                 C   0   d}g d}g d}t tj|||dd d S )Nr  )r   rX   r  r  r  )gHhlh#?gH]9@?g"fj#@g11Ags!8wBr  r{   )r   r6   r  r  )rk   r|  r_  rd  r1   r1   r2   r    s   zTestLogLaplace.test_isfrf  r   r`   r   r   c                 C   sX   d|d  }t d|d d}ttj||t j t t tjj||dr*J d S )Nry  r   rr   rz  )	rc   r   r   r6   r  rJ  r  r   r  )rk   rf  momr|  r1   r1   r2   test_moments_stats  s   $z!TestLogLaplace.test_moments_statsr|  )rr   r:  rv   z
loc, scale)rD  g@fix_cTFr  c                 C   s   t jd}tjj|||d|d}d|i}|r||d< |r!||d< dt| }	|	dkrSd	}
tjt	t
f|
d
 tjj|fi | W d    d S 1 sLw   Y  d S ttj|fi | d S )Nr   r\   r  r   fcr   r   r   r   r   )rc   r   r   r6   r  r   r   r   r   r   r  r   r   )rk   r|  r^   r_   r  r  r   r   r   nfreer  r1   r1   r2   test_fit_analytic_mle  s&   
z$TestLogLaplace.test_fit_analytic_mleN)
r   r   r   r  r  r   r   r   r  r  r1   r1   r1   r2   r    s    	

r  c                   @   s   e Zd Zejdddgdd Zejdddd	 Zejd
g dejdg dejdg dejddd e	ddgddD dd Z
dd Zdd Zdd ZdS ) TestPowerlawzx, a, sf)rN  rv   g      ?)g     ?g      p?gSQ>c                 C   r  ry   )r   r6   powerlawr   )rk   rZ   r/   r   r1   r1   r2   r       zTestPowerlaw.test_sfr  r  c                 C   r  r  r  ro   r1   r1   r2   r     r  zTestPowerlaw.rngr   )rX   rr   r   r   r`   r   r  r  r  r  c                 C   r  r  r1   r  r1   r1   r2   r?     r  zTestPowerlaw.<listcomp>TFr   r  c           
      C   sp   t jjd||||d}t }	|r||	d< |r"t| tj |	d< |r(||	d< tt j|fi |	ddi d S )Nr  )r   r/   r^   r_   r   r   r   r   r   T)	r6   r  r   r   rc   	nextafterr$  r  r   r  r1   r1   r2   r     s   z(TestPowerlaw.test_fit_MLE_comp_optimizerc                 C   sT   d}d}d}t jj|||dtjdd}dt|d i}tt j|fi | d S )	Ng`- @rw   grߟA@r\   r   )r/   r^   r_   r   r   r   r`   )r6   r  r   rc   r   r   ptpr   )rk   r/   r  r_   r   r   r1   r1   r2   test_problem_case  s   
zTestPowerlaw.test_problem_casec                 C   sf  t tj d}tt|d tjjg dddd W d    n1 s#w   Y  d}tt|d tjjg ddd W d    n1 sEw   Y  d}tt|d tjjg dd	d W d    n1 sgw   Y  d
}tt|d tjjg ddd W d    n1 sw   Y  d}tt|d tjjg ddd W d    d S 1 sw   Y  d S )Nz7 Maximum likelihood estimation with 'powerlaw' requiresr   r   r`   r   r   r   r  r`   r   r   z$Negative or zero `fscale` is outsider-  r  z0`fscale` must be greater than the range of data.)r  r6   r  r  r"   r   r  r  r1   r1   r2   r    s*   
"zTestPowerlaw.test_fit_warningsc                 C   sJ   g d}t j}tjdd t|| W d    d S 1 sw   Y  d S )N)r   r   r`   r`   r   r   r   r   r   r   r   r  r  over)r6   r  rc   r  r   )rk   r   r>   r1   r1   r2   test_minimum_data_zero_gh17801-  s
   "z+TestPowerlaw.test_minimum_data_zero_gh17801N)r   r   r   r   r   r   r  r  r   r'   r   r  r  r  r1   r1   r1   r2   r    s&    


r  c                   @   st   e Zd Zejdg ddd Zejdddgdd	 Zejdg d
dd Zejdg ddd Z	dS )TestPowerLogNormzx, c, s, ref))r\   r  r   ga!R()r  r  r   g;?)r  ri  r   gE?)MDri  r   g=c                 C      t tj||||dd d S r   )r   r6   r  r   rk   rZ   r|  rJ   rd  r1   r1   r2   r  G     zTestPowerLogNorm.test_sfzq, c, s, ref)g?ri  r   rt   )gR4-r  r   r   c                 C   r  )Ng|=r{   )r   r6   r  r  )rk   r_  r|  rJ   rd  r1   r1   r2   r  Q  s   zTestPowerLogNorm.test_isf))r  ri  r   g?)r7  ri  r   gv6)r7  r  r   g+	94|7)r^  r  r   g?c                 C   r  )Ngt =r{   )r   r6   r  ri   r  r1   r1   r2   rB  W  r  zTestPowerLogNorm.test_cdf))r  ri  r   gS^Ռe9)@xDr  r   g0g;)g\)c=Hr  r   g7H7c                 C   r  )NgAfc=r{   )r   r6   r  rb   r  r1   r1   r2   r9  j  s   zTestPowerLogNorm.test_pdfN)
r   r   r   r   r   r   r  r  rB  r9  r1   r1   r1   r2   r  6  s&    


r  c                   @   sZ   e Zd Zejdg ddd Zejdg ddd Zejdg d	d
d ZdS )TestPowerNormr  ))r\  r   g| <)r  r`   ge()r\   ri  g%!@6)r  rt   gT;-c                 C   r  r   )r   r6   	powernormr   r  r1   r1   r2   r  z  s   zTestPowerNorm.test_sfre  ))r  r  gĿ)gwJ?r\   g!X)r  ri  g缂U)r  ri  gͫ1@)r  r`   gD@)Jz5r   gU!zYr@c                 C   r  NrB  r{   )r   r6   r  r  rh  r1   r1   r2   r       zTestPowerNorm.test_isf))ir\  g.u	T9)r`   r\  ?)rx  r\  gsK-)r  ri  gk8>)rx  ri  g^u1-c                 C   r  r  )r   r6   r  ri   r  r1   r1   r2   rB    r  zTestPowerNorm.test_cdfN)	r   r   r   r   r   r   r  r  rB  r1   r1   r1   r2   r  r  s    


r  c                   @   sN   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgdd ZdS )TestInvGammac                 C   s   t  P t dt tjjddd}g d}t|| g d}tjj|dd}g dtjdd	gtj	d
dgtj	tj	dgf}t
||D ]	\}}t|| qBW d    d S 1 sWw   Y  d S )NrT  g(\O3@ry  r  )g~?gCX&?g*7gS?gBqFq @)r  @gffffff@)r  gEy?gў3oz?g^Yb?g,r?gOD@g2*Z@gFN8@)rX  rY  rZ  r[  r6   r  r   rc   r  r  r   r   )rk   ry  rT   r/   rZ   r  r1   r1   r2   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   )rc   rz  r6   r  ri   r   r   r  r1   r1   r2   r~    s   zTestInvGamma.test_cdf_ppfc                 C   sR   t jdkrtdd}ntdd}tj|d}tj|d}t||dd d S )Nl        r`   r\      r   r:  r{   )	sysmaxsizerc   rz  r6   r  r   r  r   r  r1   r1   r2   r    s   
zTestInvGamma.test_sf_isfc                 C   r  )Nr  r  gM$r  r{   )r6   r  r  r   rk   rZ   r/   rd  r  r1   r1   r2   r    r  zTestInvGamma.test_logcdfc                 C   r  )Nrt   r  grطr  r{   )r6   r  r  r   rk   rZ   r/   rd  r  r1   r1   r2   r    r  zTestInvGamma.test_logsfa, ref)r   g70K6:)r  gVMOuc                 C   r  ry   )r   r6   r  rD   rk   r/   rd  r1   r1   r2   test_large_entropy  s   zTestInvGamma.test_large_entropyN)r   r   r   r  r~  r  r  r  r   r   r   r  r1   r1   r1   r2   r    s    r  c                   @   r  )
TestFc                 C   s\   t jddgg}|D ]\}}}|j|jg|R  }q	dd |D }dd |D }t|| d S )N)r`   r   r:  c                 S   &   g | ]\}}}|j |jg|R  qS r1   rb   r/   r=   _f_argsr   r1   r1   r2   r?        & z(TestF.test_endpoints.<locals>.<listcomp>c                 S      g | ]\}}}|qS r1   r1   r=   r  r  	_correct_r1   r1   r2   r?         )r6   frb   r/   r   )rk   r   r  r  _correctanscorrectr1   r1   r2   ro    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"        @ry  rz  )r6   r  r   rc   r  r  r1   r1   r2   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 )NrT  r"  r   )r`   r   r  rh  ry  dfndfdr{  )rX  rY  rZ  r[  r6   r  ro   r1   r1   r2   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<  ry  r  r`   r   rh  r  r      )rc   r   r6   r  r   rT  )rk   r  r	  r  rR  rJ   rW   r  v2s2k2numk2denk2r1   r1   r2   test_stats_broadcast  s"   
0
 
 zTestF.test_stats_broadcastN)r   r   r   ro  r  r
  r  r1   r1   r1   r2   r    s
    
r  c                   @   s  e Zd Zdd Zdd Zdd Zejddd	gd
d Z	ejdg dejdddgddgddgg dg dgddgddggdgdgggdd Z
ejdddgddgddgg dg dgddgddggdgdgggdd Zdd Zejdg ddd ZdS )TestStudentTc                 C   s   t tjddgddg d S )Nr   r  g?g?)r   r6   rV  r\  ro   r1   r1   r2   test_rvgeneric_std     zTestStudentT.test_rvgeneric_stdc                 C   s   t tjjdddtjtjtjtjf t tjjddddtjtjtjf t tjjddddtjtjtjf t tjjdddddtjtjf t tjjd	d
dtjtjf t tjjdd
ddtjf t tjjdd
ddtjf t tjjdd
dd d S )Nr   ry  )r  r{  )\(?rw   r`   gGz @g     i@r   r  gGz@r   g
ףp=
@)rw   gq    @)r   r6   rV  rc   r  r  ro   r1   r1   r2   test_moments_t  s    zTestStudentT.test_moments_tc                 C   s*   g d}g d}t tj||dd d S )N)r   r`   rF  r\   )g?@gTM]?ggY?U?r   r{   r   r6   rV  rD   )rk   r  rT   r1   r1   r2   test_t_entropy+  s   zTestStudentT.test_t_entropyzv, ref)r\   r  )r  r  c                 C   r  r  r  )rk   rR  rd  r1   r1   r2   test_t_extreme_entropy2  r  z#TestStudentT.test_t_extreme_entropymethname)rb   r   ri   r   r   r  
df_infmaskr   r   )r   r   r   )r   r   r   c                 C   s   t jd t j|td}t jjdd|jd}t jj|j }t j||< t	j
|ddd}t	j
||  ddd}t	jddd}t||}t||}	t||}
||}t|| |
||  t||  |	||   d S )	Nr   r   r[   r#  r   r   r  r^   r_   r]   )rc   r   r   r   boolr'  r*  randnr  r6   rV  r  r  r   )rk   r  r  r  rZ   t_dist
t_dist_ref	norm_distt_meth
t_meth_ref	norm_methr   r1   r1   r2   test_t_inf_dfC  s   



zTestStudentT.test_t_inf_dfc                 C   s  t jd t j|td}t jjdd|jd}t j||< tj	j|dddd}tj
jdddd	}tj	j||  dddd}td
D ]}t|| | ||  t|| |  ||  q@tj	j|ddd}tj
jddd}tj	j||  ddd}t|| | t||  | d S )Nr   r  r[   r#  r   r   ry  )r  r^   r_   r{  r^   r_   r{  r   r  r]   )rc   r   r   r   r  r'  r*  r  r6   rV  r  rM  r   rD   )rk   r  r  r   
res_ex_infres_ex_noinfrK  r1   r1   r2   test_t_inf_df_stats_entropyY  s"   
z(TestStudentT.test_t_inf_df_stats_entropyc                 C   sT   g d}g d}g d}g d}t tj|||dd t tj|||dd d S )N)r   r  r[   r   )r  d~QJr  r   )gZ_2g9g!ǟuIgdg)g73?r   gմFhAW;gm0_?r  r{   )r   r6   rV  r   rb   )rk   rZ   r  
logpdf_refpdf_refr1   r1   r2   test_logpdf_pdfp  s   zTestStudentT.test_logpdf_pdf
x, df, ref))g     Rr'  guSaG)r   r'  r  )     R@r'  gGn`?c                 C   s>   t j||}t||dd t j| |}t||dd d S r  )r6   rV  r  r   r  )rk   rZ   r  rd  r  r  r1   r1   r2   r  ~  s   zTestStudentT.test_logcdf_logsfN)r   r   r   r  r  r  r   r   r   r  r'  r+  r/  r  r1   r1   r1   r2   r    s8    



r  c                   @   ro  )TestRvDiscretec                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestRvDiscrete.setup_methodc                 C   s   g d}g d}d}t jd||fd}|j|d}t|tjs!J t||D ]\}}tt||kt	| | dk s<J q&| }t
t|tjsLJ d S )N)r   r   r   r`   r   r   )rw   r^  r  rw   r^  rw   r   sample)r  valuesr#  r  )r6   rA   r   r,  rc   rH  r   r   rO  r   r   r   integer)rk   statesprobabilitysamplesrf  rZ   rJ   rW  r1   r1   r2   r2    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)rN  r
  r^  rh  r4  )r:  r   r   rw   )	rc   r   r6   rA   rO  r   rD   r   r   )rk   r;  rW  rQ  rR  r1   r1   r2   rS    s   
zTestRvDiscrete.test_entropyc                 C   sT   g d}g d}t j||fd}ddgddgg}t||dd	gd
dggdd d S )Nr  rr   r^  r  r9  r:  r  r  r`   rr   r  rw   r^  r  r   )r6   rA   r   r7  )rk   xkpkr%  rZ   r1   r1   r2   rM    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:  r9  )r   r:  r  r  rv   r  r   r   )r   rr   rr   rr   r   r   r   r   r  r   c                       g | ]}  |qS r1   )ri   )r=   r}  r%  r1   r2   r?     r   z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r6   rA   r   ri   )rk   r;  r<  x_valuesrT   r1   r?  r2   rB       
zTestRvDiscrete.test_cdfc                    r=  )
Nr  r:  r9  )rX   rr   r  r   r   r:  )r   r   r`   r`   r   r   r  r   c                    r>  r1   )r   )r=   r_  r?  r1   r2   r?     r   z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r6   rA   r   r   )rk   r;  r<  q_valuesrT   r1   r?  r2   r    rA  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   r`   r   r  rh  )rX   r  r^  r^  rX   r9  r   r  r   )r6   rA   r   r   ri   r;  )rk   r0  r%  r1   r1   r2   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   )rX   rX   r!  r  )rX   rX   r  r  r9  r  r   )rc   r   r  r   r6   rA   r   r   rO  r;  r<  rk   r;  r<  r%  r1   r1   r2   test_multidimension  s   
$z"TestRvDiscrete.test_multidimensionc                 C   s   g d}ddg}t ttjfi t||fd g d}t ttjfi t||fd g d}g d}t ttjfi t||fd g d}g d}t ttjfi t||fd ddg}ddg}t ttjfi t||fd d S )Nr   rr   r9  )rr   333333?gffffff濩r   r`   r   r   r   )r^  r^  r^  r^  rX  r   )r  r  r6   rA   r   rk   r;  r<  r1   r1   r2   test_bad_input  s   "zTestRvDiscrete.test_bad_inputc                 C   s   t ddt dd}}tttjfi t||fd t ddt dd}}tttjfi t||fd t ddt dd}}t	tj||fd
dd d S )	Nr   r`   r`   r`   r   gUUUUUU?r9  r  r   r`   r   )rc   r   r  r  r  r  r6   rA   r   r   r7  rH  r1   r1   r2   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   r`   r   r  r  r"  )rX   r  r  r  r  rX   r9  r  r   )r6   rA   r   r   rc   rO  r;  r<  rD  r1   r1   r2   test_expect1  s   $zTestRvDiscrete.test_expect1c                 C   s   g d}g d}t j||fd}t| | dd t| tdd t||D dd t|dd	 td
d t||D dd d S )N)/g      i@g     r@g      y@g     @@g     @g     @      @g      @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:?rw   gF%uk?g:vz?rw   rw   g.nr?g|гY?rw   rw   rw   g @6*? 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?rw   g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?rw   rw   g N@s?g 1w-!_?rP  gൄ|г?rw   gH}}?rw   g
F%u?rw   rw   g ^)ˀ?g v?rw   r9  r  r   c                 s   s    | ]	\}}|| V  qd S rm   r1   r=   rR  wr1   r1   r2   	<genexpr>'  s    z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c                 S      | d S Nr`   r1   r   r1   r1   r2   rK   *      z-TestRvDiscrete.test_expect2.<locals>.<lambda>c                 s   s     | ]\}}|d  | V  qdS )r`   Nr1   rQ  r1   r1   r2   rS  +      )r6   rA   r   r   r   rO  r   )rk   r  pyr%  r1   r1   r2   test_expect2  s   
zTestRvDiscrete.test_expect2N)r   r   r   r   r2  rS  rM  rB  r  rC  rE  rI  rM  rN  rY  r1   r1   r1   r2   r2    s    	r2  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   r\   r   r  )	rc   r?  r   r6   
skewcauchyrb   r  ri   r   r  r1   r1   r2   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   r[   r`   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?)
rc   r   r   r  r   r6   r]  rb   ri   r   )rk   r/   rZ   rb   ri   r1   r1   r2   test_skewcauchy_R8  s   z TestSkewCauchy.test_skewcauchy_RN)r   r   r   r^  r_  r1   r1   r1   r2   r[  .  s    	r[  c                   @   s<   e Zd Zdd Zejdd Zejdg ddd Z	d	S )
TestJFSkewTc                 C   s   d }}|d }g d}g d}t ||}t |}t|||| t|||| t|||| t| d| d d S )Nr   r`   )r  rw   r:  rv   )rw   rX   rN  r   r   r:  ry  )r6   	jf_skew_trV  r   rb   ri   r   )rk   r/   r0   r  rZ   r_  jfrV  r1   r1   r2   test_compare_t\  s   
zTestJFSkewT.test_compare_tc                 C   s$   t ttjd }t jj|ddS )a  Sample data points computed using the `ST5` distribution from the
        GAMLSS package in R. The pdf has been calculated for (a,b)=(2,3),
        (a,b)=(8,4), and (a,b)=(12,13) for x in `np.linspace(-10, 10, 41)`.

        N.B. the `ST5` distribution in R uses an alternative parameterization
        in terms of nu and tau, where:
            - nu = (a - b) / (a * b * (a + b)) ** 0.5
            - tau = 2 / (a + b)
        z"data/jf_skew_t_gamlss_pdf_data.npyz	x,pdf,a,bnames)rc   loadr   __file__parentrec
fromarraysr  r1   r1   r2   gamlss_pdf_datal  s   zTestJFSkewT.gamlss_pdf_dataza,b)rK  )rh  r   )r<     c                 C   sN   ||d |k|d |k@  }|d |d }}t |t|||dd dS )zCompare the pdf with a table of reference values. The table of
        reference values was produced using R, where the Jones and Faddy skew
        t distribution is available in the GAMLSS package as `ST5`.
        r/   r0   rZ   rb   r  r{   N)r   r6   ra  rb   )rk   rk  r/   r0   r   rZ   rb   r1   r1   r2   test_compare_with_gamlss_r|  s
    z&TestJFSkewT.test_compare_with_gamlss_rN)
r   r   r   rc  r   r  rk  r   r   rm  r1   r1   r1   r2   r`  [  s    
r`  r`   r   g@r   gףp=
1@r'  gRZ@i   gS㥛Ԋ@rX   rY   g&@iQ i'  i0ybi l   HO1Z i3r-  ir[   ir\   ikr  i1r   i  i4i N  i(  lEI. r  i c                   @   sr   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdedd Zdd Zdd Zdd ZdS )TestSkewNormc                 C   s   t d| _d S r  )r   r   ro   r1   r1   r2   r        zTestSkewNorm.setup_methodc                 C   s0   t ddd}ttjj|ddtj| d S r\  )rc   r?  r   r6   skewnormrb   r  r  r1   r1   r2   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-  )r6   rq  r   r   r   r*  )rk   r*  rZ   r1   r1   r2   r2    s
   zTestSkewNorm.test_rvsc                 C   s   t jjdtddd| jd}t|t|t |t 	|g}t jj ddddd}t
||dd t jjd	tddd| jd}t|t|t |t 	|g}t jj d	dddd}t
||dd d S )
Nr   r  r   r`   )r/   r   r^   r_   r   ry  )r/   r^   r_   r{  r=  ry  )r6   rq  r   rG  r   rc   r   r  r  kurtosisr   )rk   r  rT   r  r1   r1   r2   r    s   $$zTestSkewNorm.test_momentsc                 C   s^   g dg dg dg dg dg dg dg}|D ]\}}}t j||}t||dd	 qd S )
N)r>  r   gEAV)r>  r   gV|@$a)r>  r   g0rY)r>  rr   Zk)r@  r   rt  )r   r  ļ)r`   g    cru  r  r{   )r6   rq  r   r   )rk   
logpdfvalsrZ   r/   	logpdfvalr  r1   r1   r2   test_pdf_large_x  s   	zTestSkewNorm.test_pdf_large_xc                 C   sF   t jg dd}t|tddd t jdd}t|ddd d S )	N)r[   r  r"  r   r   r  r{   rF  rD  r:  )r6   rq  ri   r   rc   onesrn  r1   r1   r2   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)rZ  r   gzbLe9)ry  r`   gn'/2;)r   r   g::)rK  r   g|<)r.  ry  r  r  r{   )r6   rq  ri   r   r   )rk   cdfvalsrZ   r/   cdfvalrW  r1   r1   r2   test_cdf_sf_small_values  s   z%TestSkewNorm.test_cdf_sf_small_valuesz
a, momentsc                 C   s6   t |ddD ]\}}tj||}t||dd qd S )Nr   )startr  r{   )r  r6   rq  rJ  r   )rk   r/   r{  orderrT   r  r1   r1   r2   test_noncentral_moments  s   z$TestSkewNorm.test_noncentral_momentsc           %      C   s"  t jd}d\}}}t|||}|jd|d}tjj|ddd\}}}	tjj|ddd\}
}}||  kr<dks?J  J ||
ksEJ tjj|ddd	d
\}}}|dksXJ t|||}|jdd}t |t|f}t	|| tj
jdd|d}tj|}t t |sJ tjj|d	d\}}}t |sJ t |t |}}t	|||t dt j    t	||d ddt j    tjj|dd\}}}tjj| dd\}}}t	|||g| | |g tjj|d	d\}} }!tjj| d	d\}"}#}$t	|"|#|$g| |  |!g d S )Nl   #ke )r   r  rr   r\   r   r  r   r   gmmr   r  msrz  r   r  r`   mle)rc   r   r   r6   rq  r   r   r   r  r   r  r   r  isinfr  rT  rd   )%rk   r   r/   r^   r_   r>   r   a2loc2scale2a3loc3scale3a4loc4scale4dist4r   rd  r   a5loc5scale5r  rR  a6ploc6pscale6pa6mloc6mscale6ma7ploc7pscale7pa7mloc7mscale7mr1   r1   r2   r    s8   

zTestSkewNorm.test_fitc           	         s   t g dddg  dg }tj|}tj||}tjj|dd}tj||}||d k s3J t jd d	d
dd} fdd}tjtj|||d}t jj	||j
dd d S )N)r  r   r  r<  r   r   T)superfitrr   l   y
ND )r  r   )r.  r[   )rb  r[   r/   r^   r_   c                    s   t | | dS )Nr   )r&   )funr   r  r1   r2   	optimizerH  rp  z0TestSkewNorm.test_fit_gh19332.<locals>.optimizer)r  r  r{   )rc   r   r6   rq  r   r   r   r   testingr   params)	rk   rZ   r  r   params_superrd  r   r  
fit_resultr1   r  r2   test_fit_gh193323  s   zTestSkewNorm.test_fit_gh19332c                 C   s   t tjddddd d S )Nrt   rd  gi}#%?r   r{   )r   r6   rq  r   ro   r1   r1   r2   r  N  r  zTestSkewNorm.test_ppfN)r   r   r   r   rr  r2  r  rx  rz  r}  r   r   r   _skewnorm_noncentral_momentsr  r  r  r  r1   r1   r1   r2   ro    s    	
0ro  c                   @   r  )
	TestExponc                 C   s   t tjdd d S rl  )r   r6   r  rb   ro   r1   r1   r2   	test_zeroV  s   zTestExpon.test_zeroc                 C   s0   t tjdd t tjtjdd d S )Nr  r>  )r   r6   r  ri   r  r   ro   r1   r1   r2   	test_tailY  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@)rc   r   r  r  r  r6   r  r   r  r1   r1   r2   test_nan_raises_error]     zTestExpon.test_nan_raises_errorc                 C   r  r  )rc   r   r  r  r  r6   r  r   r  r1   r1   r2   test_inf_raises_errorb  r  zTestExpon.test_inf_raises_errorN)r   r   r   r  r  r  r  r1   r1   r1   r2   r  U  s
    r  c                   @   >   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	dS )TestNormc                 C   r  r  )rc   r   r  r  r  r6   r  r   r  r1   r1   r2   r  i  r  zTestNorm.test_nan_raises_errorc                 C   r  r  )rc   r   r  r  r  r6   r  r   r  r1   r1   r2   r  n  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  r6   r  r   r  r1   r1   r2   test_bad_keyword_args  s   zTestNorm.test_bad_keyword_argr^   r   r   c                 C   s^   d}t jjd| d| |d}t||dd t jjd|  d|  | d}t||dd d S )Ngg	{F.:r"  r<  r^   r   r{   )r6   r  
_delta_cdfr   )rk   r^   rT   r3  r1   r1   r2   test_delta_cdfw  s
    zTestNorm.test_delta_cdfN)
r   r   r   r  r  r  r   r   r   r  r1   r1   r1   r2   r  h  s    r  c                   @   s    e Zd ZdZdd Zdd ZdS )TestUniformgh-10300c                 C   r  r  )rc   r   r  r  r  r6   r'  r   r  r1   r1   r2   r    r  z!TestUniform.test_nan_raises_errorc                 C   r  r  )rc   r   r  r  r  r6   r'  r   r  r1   r1   r2   r    r  z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__r  r  r1   r1   r1   r2   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   r`   r   r        @r   r1   )lamsigr#  opK2exp_skewexp_kurtr1   r1   r2   get_moms  s   $z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   r:  ry  r(  )r-  r`   rX   )r   r   r   )r  r"  r  )r6   	exponnormr   )rk   r  r#  r  r  Kstsr1   r1   r2   r    s"   



zTestExponNorm.test_momentsc                 C   2   t dddddt jg}tttjj|ddd d S 	Nr  r  r  r  r  r   r   r  )rc   r   r  r  r  r6   r  r   r  r1   r1   r2   r       z#TestExponNorm.test_nan_raises_errorc                 C   r  r  )rc   r   r  r  r  r6   r  r   r  r1   r1   r2   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   rw     rt   )r   r6   r  rb   ro   r1   r1   r2   test_extremes_x  s   zTestExponNorm.test_extremes_xzx, K, expected))r  rt   g6
N-)r   rt   g՜n+H?)r   rt   gi?)rx  rt   gbJI-)r[   r   gI8?)r[   r*  gQ3|-0?c                 C   r  r  )r   r6   r  rb   )rk   rZ   r  rT   r1   r1   r2   test_std_pdf  r  zTestExponNorm.test_std_pdfzx, K, scale, expected)r   rt   r   gVAҤ?)r  {Gzt?r   g'^>)r  rt   r\   rw   )r  rt   r   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  rw   r   r{   )r6   r  ri   r   rk   rZ   r  r_   rT   rW  r1   r1   r2   test_cdf_small_K  s   zTestExponNorm.test_cdf_small_K)r[   rt   r   ghG}$;)r`   r  r   g]fJ?)r   r  rr   g31"g#;)r[   r  rr   gf
+-)r  r  rr   rw   )r-  r  r   ga9S?c                 C   r  )Nr  rw   -a=r{   )r6   r  r   r   r  r1   r1   r2   test_sf_small_K  s   zTestExponNorm.test_sf_small_KN)r   r   r   r  r  r  r  r   r   r   r  r  r  r1   r1   r1   r2   r    s8    

r  c                   @   sP   e Zd Zdd Zdd Zejdg ddd Zejdg d	d
d Z	dS )TestGenExponc                 C   s@   ddl m} tjtdddddd}t||dddd d S )	Nr   )simpsonr[   rt   rr   rv   )dxr   )scipy.integrater  r6   genexponrb   rc   r   r   )rk   r  rW  r1   r1   r2   test_pdf_unity_area	  s   z TestGenExpon.test_pdf_unity_areac                 C   s:   t jtdddddd}td|k|dk@ sJ d S )Nr   r[   rt   rr   rv   r   )r6   r  ri   rc   r   r   )rk   ri   r1   r1   r2   test_cdf_bounds  s   zTestGenExpon.test_cdf_boundszx, p, a, b, c))r'  gM <r   r`   r  )rN  g%DYY?rr   r`   r   )rN  gS4z?      #@r`   rr   )rt   ga^5?rD  rN  rr   )r  gs%)?rD  rN  rr   )r:  gdm?rN  r   rr   c                 C   D   t j||||}t||dd t j||||}t||dd d S r  )r6   r  r   r   r  )rk   rZ   rW  r/   r0   r|  r   r  r1   r1   r2   r    s   zTestGenExpon.test_sf_isf))rN  g;\i?rr   r`   r   )rN  gu0?r  r`   rr   )rt   g-%I?rD  rN  rr   )r  g]d?rD  rN  rr   )r:  g泩'?rN  r   rr   c                 C   r  r  )r6   r  ri   r   r   )rk   rZ   rW  r/   r0   r|  ri   r   r1   r1   r2   r~  -  s   zTestGenExpon.test_cdf_ppfN)
r   r   r   r  r  r   r   r   r  r~  r1   r1   r1   r2   r    s    
r  c                   @   rj  )TestTruncexponc                 C   sL   ddg}ddg}ddg}t tj|||dd t tj|||d	d d S )
Nr  r\   g_93@gBX@g,M<gǃ@֫5gLa㧝=r{   r  )r   r6   
truncexponr   r  )rk   r0   rZ   rd  r1   r1   r2   r  <  s
   zTestTruncexpon.test_sf_isfN)r   r   r   r  r1   r1   r1   r2   r  :  rp  r  c                   @   rj  )TestExponpowc                 C   s6   t tjddd t tjtjdddd d S )Nr  rv   r  r   r   )r   r6   exponpowri   r  r   ro   r1   r1   r2   r  G  s   zTestExponpow.test_tailN)r   r   r   r  r1   r1   r1   r2   r  F      r  c                   @   rq  )TestSkellamc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nr.  r'  r  )gYjP'?g$S?gQ`s2?gC/qF?gD<]Y?g/Xj?g86y?g]a¨?g:?g?gQ>?g?g:?g]a¨?g96?g0X?gA<]?gB/q?gQ`s?g$S?gYjP'?gX_?g+rx?gfSr?gJXx~?r=  )rc   r   r   r   r6   skellamr7  )rk   rW   mu1mu2skpmfRr1   r1   r2   rM  N     zTestSkellam.test_pmfc                 C   s@   t dd}d\}}t g d}ttj||||dd d S )Nr.  r'  r  )gƃQ?gS`X'?gVy)>?g:	 S?gei.f?gȼJ]x?g)?g{^'+i?gLIg>?gnZ?g?rvͪ?gA?g0?g#J?gqSm
.?g~B?gd?gFBD?gQ9?gmF^?gcMy?gGJq?gC^c?g.){?gñݸ?r   r=  )rc   r   r   r   r6   r  ri   )rk   rW   r  r  skcdfRr1   r1   r2   rB  c  r  zTestSkellam.test_cdfc                 C   sB   d\}}}t tj|||ddd t tj|||ddd d S )N)r   r   gs1Cr   rb  r   r   )r   r6   r  r7  ri   )rk   rZ   r  r  r1   r1   r2   test_extreme_mu2x  s   
zTestSkellam.test_extreme_mu2N)r   r   r   rM  rB  r  r1   r1   r1   r2   r  M  s    r  c                   @   s   e Zd Zdd Zdd Zejdddd Zej	d	d
dgej	dg dej	dg dej	ddd e
dddD ejdddd Zdd ZdS )TestLognormc                 C   sZ   t   t dt tjg dd}t|g d W d    d S 1 s&w   Y  d S )NrT  r   rr   r   r   )rw   g~r?g e3E?)rX  rY  rZ  r[  r6   r  rb   r   rk   rb   r1   r1   r2   r9    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?rI   )r   r6   r  r   r  rc   ru  r  )rk   r  r#  sigmar1   r1   r2   r    s   
zTestLognorm.test_logcdfr  r  c                 C   r  r  r  ro   r1   r1   r2   r     r  zTestLognorm.rngr   rX   r`   r   )r   r   r`   r  )r  r   r   r  c                 C   r  r  r1   )r=   er1   r1   r2   r?     r  zTestLognorm.<listcomp>)FTr   r  r  r  c           
      C   s^   t jjd||||d}i }	|r||	d< |r||	d< |r||	d< tt j|fi |	ddi d S )Nr\   )r   rJ   r_   r^   r   r   r   r   r   T)r6   r  r   r   r  r1   r1   r2   r     s   	z'TestLognorm.test_fit_MLE_comp_optimizerc                 C   r  )NgI+?)rX   绽|=gҶOɃ;gk3;9"7)g?y+@g~K8ax@gƶ@g9]Ar  r{   )r   r6   r  r  )rk   rJ   r_  rd  r1   r1   r2   r    s   zTestLognorm.test_isfN)r   r   r   r9  r  r   r  r   r   r   r'   rc   r  r   r  r1   r1   r1   r2   r    s    


r  c                   @   s0  e Zd Zdd Zdd Zdd Zdd Zejj	e
d	d
dd Zejj	e
d	d
dd Zejj	e
d	d
dd Zdd Zejjedd
dd Zejdejjejjgejdddgdd Zejddd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d-S ).TestBetac                 C   s:   t jddd}t|d t jddd}t|tj d S )Nr   r   rr   g;B.)r6   r  r   r   rc   r  rk   r   r1   r1   r2   r    s   
zTestBeta.test_logpdfc                 C   sV   d\}}t g d}t||}t|| d t||t || d S )Ni  i  r  rr   r  gƒ)	rc   r   r6   r  r   r   rO  rb   r   rk   r	  r  rZ   r0   r1   r1   r2   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rX   rr   r  r   r   r  )r   r   r  )r  r  r6   r  r   r  r1   r1   r2   test_fit_bad_keyword_args  s   
z"TestBeta.test_fit_bad_keyword_argsc                 C   s"   g d}t ttjj|ddd d S )Nr  rr   )fafix_a)r  r  r6   r  r   r  r1   r1   r2   #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?r1  g   0xAgx)>)r   r6   r  r   )rk   rW  r/   r0   r1   r1   r2   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?)r[   r\   r   rY  r   r   )rc   r   r6   r  r  r   r   )rk   inv_R
count_listrW  invr   r1   r1   r2   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   )rc   r   r6   r  r   ri   r   )	rk   alpha_2count_nobsr_  r/   r0   r  r   r1   r1   r2   test_issue_12796  s   zTestBeta.test_issue_12796c                 C   s   d\}}t tjd||tj d\}}t tjd||tj d\}}t tjd||d t tjd||d d\}}t tjd||d t tjd	||d d S )
Nrx  r   )r  r   r   )r   r   r   +ph  )r   r   r:  )r   r6   r  rb   rc   r  )rk   r/   r0   r1   r1   r2   ro    s   zTestBeta.test_endpointszDoes not convert boost warningc                 C   sJ   d\}}}t t tj||| W d    d S 1 sw   Y  d S )N)gףp=
?g   vH7B  @0B)r   warnsr[  r6   r  r   )rk   r_  r/   r0   r1   r1   r2   test_boost_eval_issue_14606  s   
"z$TestBeta.test_boost_eval_issue_14606r  a, b)r        )@)r  r  c                 C   s,   d}z	|||| W d S  t y   Y d S w )Nr   )OverflowError)rk   r  r/   r0   rW  r1   r1   r2    test_beta_ppf_with_subnormal_a_b  s   z)TestBeta.test_beta_ppf_with_subnormal_a_bzx, a, b, ref)rh  r  rD  g>׵NlIq)&.!>r  rD  g'rOc                 C   "   t j|||}t||dd d S r  )r6   r  r  r   rk   rZ   r/   r0   rd  r  r1   r1   r2   r  3     zTestBeta.test_logcdf)r  r  rD  gp}^U)r  r  rD  g
1*c                 C   s    t j|||}t||d d S )Nr  )r6   r  r  r   rk   rZ   r/   r0   rd  r  r1   r1   r2   r  ;  s   zTestBeta.test_logsfr  ))rr   rr   gο)r  r   g )r   r*  g&׾k )r   r   g*)Mc                 C   s   t t|| | d S rm   r   r6   r  rD   r  r1   r1   r2   rS  L  r  zTestBeta.test_entropyza, b, ref, tol))r   r[   gCpr  )r[   r  g8EOr   )g    NAg    NAg(4Fr  )g    SAg   SAg8TAUr  )r  g   _Bg[VVuD&rY  )r,  r,  gR#Lrz   )r`   r  g?r5rY  )r`   r  <Fr  )r`   r,  guRTc\r  )r   r  gL4r  )r   r  6Er  )r   r,  g.fq>\r  )r[   r  gnQc}4r  )r[   r  g{C Er  )r[   r,  %\r  )r  r`   r  r  )r  r   r  r  )r,  r[   r  r  c                 C   s   t t|| ||d d S rr  r  )rk   r/   r0   rd  r  r1   r1   r2   r  T  s   $zTestBeta.test_extreme_entropyN)r   r   r   r  r  r  r  r   r   skipifMACOS_INTELr  r  r  ro  xfailr   r  r   r6   r  r   r  r  r  r  rS  r  r1   r1   r1   r2   r    sL    






r  c                   @   s   e Zd Zg dZdd Zdd Zejdg ddd	 Z	ejd
edd Z
dd Zejdeg d dd Zejdddgdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestBetaPrime))r        Y@r  D>?)r  r#  r  m嗽?)r   r  rX   gPK?)r   r#  r  g%p?)r  r  rX   g#|/?)r  r  r  gsM
<)r  r  r#  $5Є*?)^ 9^;r  rX   gompP?)r'  r  r  g7j"!9)r'  r  r#  z^J?)r  r  rX   gܷ"+>)r  r  r  grNs: )r  r  r#  gK>c                 C   sZ   d\}}t g d}t||}tt ||  t|	|t 
|| d S )Nr  r  )rc   r   r6   r
  r   r  r   r   r   rb   r   r  r1   r1   r2   r    s
    zTestBetaPrime.test_logpdfc                    s   t jddd}t|d d\ tg d}t j| }tt|  t j	j
 fdd|D }t||dd	d
 d S )Nr   r  r^  rw   r  r  c                    s   g | ]
}t j| qS r1   )r6   r
  )r=   r1  r	  r  gen_cdfr1   r2   r?         z*TestBetaPrime.test_cdf.<locals>.<listcomp>-=r/  )r6   r
  ri   r   rc   r   r   r  r   rB   _cdf_singler   )rk   rZ   r5  cdfs_gr1   r)  r2   rB    s   
zTestBetaPrime.test_cdfzp, a, b, expected))rt   r  rD  gV)?)r  r  rD  gWJB9*=)r  r  rD  gOG J<)rM  rN        @gΣ01)      ?rN  r/  g8ǘ`?)>q?r  rX   gMDc                 C   r  r  )r6   r
  r   r   )rk   rW  r/   r0   rT   rZ   r1   r1   r2   r    s   
zTestBetaPrime.test_ppfz
x, a, b, pc                 C   s   t tj||||dd d S r  )r   r6   r
  r   )rk   rZ   r/   r0   rW  r1   r1   r2   test_ppf_gh_17631  r  zTestBetaPrime.test_ppf_gh_17631c                 C   s<   t d}t d}t d}ttj|||ddd d S )Nr:  rr   rg  r{   )rc   r   r   r6   r
  _ppf)rk   r/   r0   rW  r1   r1   r2   	test__ppf  s   


zTestBetaPrime.test__ppfzx, a, b, expected))r  r  r  r  )r  r  rX   gV[?)r  r  rX   r1  c                 C   r  r  )r   r6   r
  ri   )rk   rZ   r/   r0   rT   r1   r1   r2   test_cdf_gh_17631  s   zTestBetaPrime.test_cdf_gh_17631)r,  r  rX   g%?)r,  r#  r  goXr?c                 C   s.   t j|||}|dk sJ t||dd d S )Nr:  gh㈵>r{   )r6   r
  ri   r   )rk   rZ   r/   r0   rT   r  r1   r1   r2   test_cdf_extreme_tails  s   z$TestBetaPrime.test_cdf_extreme_tailsc                 C   sB   g d}g d}g d}g d}t j|||}t||dd d S )N)r   r   r`   r  r  r  r  r#  r#  r  r  r  r  r  )r   r`   r   rX   rX   rX   rX   r  r  r#  r#  r#  r  r  )r  r  ꌠ9Y>)Fr  r  r'  r  r  r  r  r'  r  r  r  )g/:g  U/7gKH9g<![a?gw 4?g)J?g5?r(  r&  r%  r$  g%?gsM
<r  r  r{   )r6   r
  r   r   )rk   r/   r0   rZ   rd  	sf_valuesr1   r1   r2   r    s   zTestBetaPrime.test_sfc                 C   2   d}d}d}d}t j|||}t||dd d S )Nrq   rr   r;  gg%`ʼr  r{   )r6   r
  r  r   r  r1   r1   r2   r        zTestBetaPrime.test_logcdfc                 C   r9  )Nr  r  rr   g9;ЋVr  r{   )r6   r
  r  r   r  r1   r1   r2   r    r:  zTestBetaPrime.test_logsfc                 C   s.   t jjg dddd t jddd d d S )N)rX   rN  r^  rF  皙?r   r   r  ri  ry  )r6   r
  r   ro   r1   r1   r2   test_fit_stats_gh18274  s   z$TestBetaPrime.test_fit_stats_gh18274c                 C   s.   t jdg}tdddgd}t|| d S )NgooB?r`   ru  gffffff@r   )rc   r  r6   r
  rJ  r   )rk   rd  r   r1   r1   r2   test_moment_gh18634  s   
z!TestBetaPrime.test_moment_gh18634N)r   r   r   cdf_valsr  rB  r   r   r   r  r2  r4  r5  r6  r  r  r  r<  r=  r1   r1   r1   r2   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e	j
dddgdd Ze	j
dg ddd Ze	j
dg de	j
dg de	j
dg de	j
dddge	j
dddge	j
dddgdd  Zd!S )"	TestGammac                 C   s<   t jjdddd}t|d t jjdddd}t|d d S )	NZ   i  r  r  g
CTb?r   r[   gBΖ?)r6   r|  rb   r   r  r1   r1   r2   r9  %  s   
zTestGamma.test_pdfc                 C      t jdd}t|d d S rl  )r6   r|  r   r   r  r1   r1   r2   r  -  s   zTestGamma.test_logpdfc                 C   s"   g d}t ttjj|ddd d S )Nr  r   r  )r   r  )r  r  r6   r|  r   r  r1   r1   r2   r  3  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 )
NrM  r   gplC@r  r   r  r\   g1}t@r   )rc   iscloser6   r|  r  ro   r1   r1   r2   r  7  s   
zTestGamma.test_isfc                 C   r  )NP   r  gޟ򑁺r  r{   )r6   r|  r  r   r  r1   r1   r2   r  M  
   zTestGamma.test_logcdfc                 C   r  )Nr  r  gDmr  r{   )r6   r|  r  r   r  r1   r1   r2   r  T  rE  zTestGamma.test_logsfr_   r:  r;  c                 C   s.   t jj|d |d d|d}t|ddd d S )N   r  r   r  g>S*r   r{   )r6   r|  r  r   rk   r_   r3  r1   r1   r2   r  [  s   zTestGamma.test_delta_cdfza, ref, rtol))r  gt.rz   )r`   rc  rz   )r\   gX>k-־@r   )rv  gwM7@rz   )g NgmCg%og$6@rz   )r  oܘ#]@rz   c                 C   s   t tj|||d d S rr  )r   r6   r|  rD   )rk   r/   rd  r|   r1   r1   r2   rS  i  r  zTestGamma.test_entropyr/   )rt   r   r#  r^   )rt   r   r#  r   TFr   r  c                 C   s8  t jd}tjj|||d|d}i }	|r||	d< |r||	d< |r%||	d< dt|	 }
|
dkrWd	}tjt	|d
 tjj
|fddi|	 W d    d S 1 sPw   Y  d S tjj
|fddi|	}tj| }|
dkrvt| t | |
dkrt|dt |d  |
dkrt|dt |d  d S d S )Nr   r\   r  r  r   r   r   r   r   r   r  r  r   r`   )rc   r   r   r6   r|  r   r   r   r   r  r   r   r   rJ  )rk   r/   r^   r_   r   r   r  r   r   r   r  r  thetar>   r1   r1   r2   test_fit_mmz  s:   

zTestGamma.test_fit_mmN)r   r   r   r9  r  r  r  r  r  r   r   r   r  rS  rJ  r1   r1   r1   r2   r?  $  s(    


r?  c                  C   s:   d} t jd| d  d| d  ddd}t|dd d S )	Nr  g;f?r`   r   r   r]   r:  gV{q@)r6   r^  r   rb   )jitterZr1   r1   r2   test_pdf_overflow_gh19616  s   "rM  c                   @   sj   e Zd Zdd Zejdg ddd Zejdg dd	d
 Zejdg ddd Z	dd Z
dS )
TestDgammac                 C   s~   t jd}d}|jd|d}|jd|d}tj||}tjt 	||d }t
|| t|}t
|||dd d S )Nl   OP($ r[   r  )r'  r   r`   rg  r{   )rc   r   r   normalr'  r6   dgammarb   r|  r   r   )rk   r   r   rZ   r/   r   rd  r>   r1   r1   r2   r9    s   

zTestDgamma.test_pdfzx, a, expected))rx  r   ggrU>)r@  r   g$IC<)ir   g2Wj<)r:  g~)A.=)r   r   gf?c                 C   sx   t j||}t||dd t j||}t||dd t j| |}t||dd t j||}t|| dd d S r  )r6   rP  ri   r   r   r   r  )rk   rZ   r/   rT   ri   r   r   r  r1   r1   r2   test_cdf_ppf_sf_isf_tail  s   z#TestDgamma.test_cdf_ppf_sf_isf_tailr  ))r  gmqn @)?g?)r  gx?c                 C   r  r  r   r6   rP  rD   r  r1   r1   r2   rS       zTestDgamma.test_entropy))r  r  )r  g>_)r  g5i)rv  go@)r  g4Fa3@)r  grO]@c                 C   r  r  rT  r  r1   r1   r2   test_entropy_entreme_values  s   z&TestDgamma.test_entropy_entreme_valuesc                 C   sL   t g d}tj|}tt|D ]}|| tj|| ks#J qd S )N)r   r   r  r  )rc   r   r6   rP  rD   rM  r   )rk   rZ   r  rK  r1   r1   r2   test_entropy_array_input  s
   z#TestDgamma.test_entropy_array_inputN)r   r   r   r9  r   r   r   rR  rS  rV  rW  r1   r1   r1   r2   rN    s    



rN  c                   @   sr   e Zd Zdd Zejdg ddd Zejdg ddd	 Zd
d Z	ejdg ddd Z
dd ZdS )TestChi2c                 C   s4   t tjddddd t tjddddd d S )Nr   gޞw1D?r  r=  r\   g6:֜?r   r6   chi2rb   ro   r1   r1   r2   rp     s   
zTestChi2.test_precisionr0  ))g     p@r   g~#e)g      ^@r'  gtA)rE  rl  gzĀ׿c                 C   rx   r  )r6   rZ  r  r   )rk   rZ   r  rd  r  r1   r1   r2   r       zTestChi2.test_logcdf))r  r'  r  )r  r>  gc)r  r[   g]3c                 C   rx   r  )r6   rZ  r  r   )rk   rZ   r  rd  r  r1   r1   r2   r    r[  zTestChi2.test_logsfc                 C   s|   d}t jd|}t|ddd t jd|}t|ddd d}t jd	|}t|d
dd t jd|}t|ddd d S )Nr	  gλm:=6g'bd5 <r  r{   rr   gQ8@rl  gܐ؆0guu[9=rX   g8-*@)r6   rZ  r   r   )rk   r  rZ   r1   r1   r2   r    s   zTestChi2.test_ppfr  ))r  gܫ>)r   gƯʉ?)r\   gn>@)   g͔v0@)r  g9:3@c                 C   r  r   )r   r6   rZ  rD   r  r1   r1   r2   rS  4  r  zTestChi2.test_entropyc                 C   s   t tjdddd d S )Nrw   r`   rr   r  rY  ro   r1   r1   r2   test_regression_ticket_1326=  s   z$TestChi2.test_regression_ticket_1326N)r   r   r   rp  r   r   r   r  r  r  rS  r]  r1   r1   r1   r2   rX    s$    


rX  c                   @   r  )TestGumbelLc                 C   r  Nr]  ry  )rc   r?  r6   r  ri   r   r   r  r1   r1   r2   r~  D  r  zTestGumbelL.test_cdf_ppfc                 C   sH   t dd}tj|}tj|}t |}t| }t	|| d S r_  )
rc   r?  r6   r  r  r  r   r   expm1r   )rk   rZ   r  r  urR  r1   r1   r2   r  J  s   
zTestGumbelL.test_logcdf_logsfc                 C   r  )Nrx  r   )rc   r?  r6   r  r   r  r   r  r1   r1   r2   r  R  r  zTestGumbelL.test_sf_isfr^   r   r   c                 C   s2   t jjd|d}t jj||d\}}t|| d S )Nr\   )r   r^   r   )r6   r  r   r   r   )rk   r^   r   
fitted_locr   r1   r1   r2   test_fit_fixed_paramX  s   z TestGumbelL.test_fit_fixed_paramN)
r   r   r   r~  r  r  r   r   r   rc  r1   r1   r1   r2   r^  B  s    r^  c                   @   rZ  )TestGumbelRc                 C      t tjdddd d S )Nr%  ?~T}%m;r  r{   )r   r6   r  r   ro   r1   r1   r2   r  c     
zTestGumbelR.test_sfc                 C   re  )NrM  rB  r  r{   )r   r6   r  r  ro   r1   r1   r2   r  l  rg  zTestGumbelR.test_isfN)r   r   r   r  r  r1   r1   r1   r2   rd  a  s    	rd  c                   @   s  e Zd Zejdddd Zejdd Zejdd Zejd	d
 Zej	j
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	j
ej	d.eg d/g d0g d1ejg d2g d3g d4ej	j
dejg d5ed6d7d8ed9dd:ej	jdgd;d< Zej	d.eg d/g d0g d1ejg d2g d3g d4ej	j
dejg d5ed6d7d8ed9dd:ej	jdgd=d> Zej	d?d@dgej	dAdBdCgdDdE Zej	dFdGdHgdIdHggdJdK Zej	dLdMd@ejejejfgdNdOggdPdQ Zej	dRg dSej	dTej j!dUedVd@dWdXfej j"dUedVd@dWdXfej j!dYed@dZdWdUfej j"dYed@dZdWdXfgd[d\ Z#ej	d]g d^d_d` Z$ej	jej	d]g dadbdc Z%ddde Z&dfdg Z'dhS )iTestLevyStableT)autousec                 C   s(   dt j_dt j_dt j_t jjt j_dS )z2Setup default parameters for levy_stable generatorS1	piecewiseN)r6   r  parameterizationcdf_default_methodpdf_default_method_levy_stable	_QUAD_EPSquad_epsro   r1   r1   r2   reset_levy_stable_paramsw  s   z'TestLevyStable.reset_levy_stable_paramsc                 C   *   t ttjd }t jj|jdd}|S )a  Sample data points for pdf computed with Nolan's stablec

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

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

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

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

        Typically inputs for stablec:

            stablec.exe <<
            1 # pdf
            1 # Nolan S equivalent to S0 in scipy
            .25,2,.25 # alpha
            -1,-1,0 # beta
            -10,10,1 # x
            1,0 # gamma, delta
            2 # output file
        z.data/levy_stable/stable-Z1-pdf-sample-data.npyx,p,alpha,beta,pctrd  rc   rf  r   rg  rh  ri  rj  Tr  r1   r1   r2   nolan_pdf_sample_data  s   z$TestLevyStable.nolan_pdf_sample_datac                 C   rs  )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.npyrt  rd  ru  r  r1   r1   r2   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)rc   rf  r   rg  rh  r  r1   r1   r2   nolan_loc_scale_sample_data  s   	z*TestLevyStable.nolan_loc_scale_sample_datasample_sizer%  r  marksrl  S0rj  z
alpha,beta))r:  r   )r:  r   )r  r   )rY  rr   zgamma,deltar   r   rL  c           
      C   sF   |t j_t j||||d}t |j|dd|j\}}	|	dks!J d S )N)r	  r  r_   r^   r   r   r  )r6   r  rl  r  r   ri   )
rk   rl  r	  r  r|  r3  rz  lsr   rW  r1   r1   r2   r2    s   zTestLevyStable.test_rvsr  rr   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:  rr   r  r  r^   r_   r   r  r   rt   N)rc   r   r   r6   r  r   r  )rk   r  r	  r^   r_   rZ   statrW  r1   r1   r2   test_rvs_alpha1  s   

zTestLevyStable.test_rvs_alpha1c                 C   s   g d}t j|\}}}}t|dddd t|dd t|dd	 t|d
d |g d }t j|\}}}	}
t|d t|d t|
dd	 t|	dd	 d S )N)wgr  rw   rw   rw   rw   羼 u?r  r  r  r  67',?r  r  r  r  tA}˜.?r  r  r  r  Gz?r   rt   rI  )\(̿r`   gۧ1?r   g9]c?)r  r  r  r  r  r   gv?r  )r6   r  r  r   r   r   rk   rZ   alpha1beta1loc1scale1r  alpha2beta2r  r  r1   r1   r2   r    s   

zTestLevyStable.test_fitzUnknown problem with fitstart.r  zalpha,beta,delta,gamma)r  r  r`   r   )r:  r  r`   r   parametrizationc                 C   sZ   |t j_t jj||||ddd}t j|}|\}}	}
}t||||g||	|
|gdd dS )z7Test that fit agrees with rvs for each parametrization.r*  r   r  rt   r{   N)r6   r  r  r   r  r   )rk   r	  r  r3  r|  r  r   r   	alpha_obsbeta_obs	delta_obs	gamma_obsr1   r1   r2   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   r[   r[   r[   r"  r"  r\   r\   r   r   )rc   r   r6   r  r  r   r   )
rk   rZ   r  r  r  r  r  r  r  r  r1   r1   r2   test_fit_beta_flip8  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  )rc   r   r6   r  r  r   )rk   SHIFTrZ   r  r  r  r  r  r  r  r  r1   r1   r2   test_fit_delta_shiftD  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   r[   r[   r[   r"  r"     r  r   zExpected alpha < 1, got zExpected loc < z, got )r   r   r   r   r[   r[   r[   r"  r"     r  zExpected alpha > 1, got zExpected loc > )r6   r  r  r$  r  r  r1   r1   r2   test_fit_loc_extrapO  s   $(z"TestLevyStable.test_fit_loc_extrapz pct_range,alpha_range,beta_range)rt   rr   rP  )rX   r   r`   )r   r   r   )rt   r  rr   rk  rP  )rX   rr   r   r  r`   )gr   r   r^  r  r   )rt   r  rX   rN  ffffff?rr   ?r   r   rk  rP  rX   r`   r  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
 }|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  }d |	 d!|
 d"| d#|jj d$| 
}t||d ||d%d& W d   n1 sw   Y  q^dS )'z2Test pdf values against Nolan's stablec.exe outputLinuxi686/dnir  c              	      s  t | d t | d  @ t | d @ | d dk| d dk@ | d dk| d dk@ | d dk@ B | d dkt | d d	d
g@ B | d dkt | d ddg@ B | d dkt | d ddg@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d dg@ t t | d dg@ B | d dkt | d ddg@ t t | d g d@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dk| d dk@ | d dk@ B | d dkt | d dg@ t t | d g d@ B | d dkt | d ddg@ t t | d g d@ B | d dkt | d d	d
g@ t t | d ddg@ B | d dkB  @ S )Npctr	  r  r   rr   r   r;  r  rt   rP  r^  r  rk  r  rX   rN  r   )rr   r  r  r  r  )gٿ333333ӿr^  r  rr   r  r:  rX   r  r^  r  )r   r   r:  rV  r  )rc   isinr   rf  alpha_range
beta_range	pct_ranger1   r2   rK     s   











 
%


*


/


4
9
>
Cz7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>rk  rY  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r	  r  r  r:  rc   r  r  r  r1   r2   rK        

c                    s:   | d dk @ t | d @ d v @ t | d @ S )Nr	  r:  r  r  r  r  r  r  is_linux_32r  r1   r2   rK     s   
g&.=c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r	  r  r  r  r  r  r1   r2   rK        
fft-simpsonr  c                    s<   | d dkt | d @ t | d  @ t | d @ S )Nr	  rY  r  r  r  r  r  r1   r2   rK     s   
r7  c                    sH   t | d t | d  @ t | d @ | d dk@ | d dk @ S )Nr  r	  r  r   rY  r  r  r  r1   r2   rK     r  Nz2Density calculations experimental for FFT method.*rZ   r	  r  r   r   r_   r^   r  r  calcabserrrelerrrW  r  z	pdf test  failed with method 'z' [platform: z]

Ferr_msgverbose)platformunamesystemmachinejoin	processorr  r6   r  rn  r   recordr[  rb   rc   r  r   r   isnanr   re  r   )rk   rw  r  r  r  r   r  platform_desctestsixdefault_methodr|   filter_funcsubdatasuprW  subdata2failuresmessager1   r  r2   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 }}|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  }d| d| d|jj d | }t||d |	|d!d" W d   n1 sw   Y  qDdS )#z4 Test cdf values against Nolan's stablec.exe output.rk  r,  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ | d dkt | d g d@ | d dk@ B  @ S 	Nr  r	  r  r:  )r  rX  rV  rt   rX   r  r^  rP  r  r  r  r1   r2   rK   P  s$   



z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>r  c                    s   t | d t | d  @ t | d @ | d dkt | d g d@ | d dk@ @ | d dkt | d g d@ | d dk@ B S r  r  r  r  r1   r2   rK   e  s"   


	
r  r  c                    s<   t | d t | d  @ t | d @ | d dk@ S )Nr  r	  r  333333?r  r  r  r1   r2   rK   w  r  r  c                    H   t | d t | d  @ t | d @ | d dk@ | d dk@ S )Nr  r	  r  r  r  r  r  r  r1   r2   rK     r  r  c                    r  )Nr  r	  r  rS  r  r  r  r  r1   r2   rK     r  rt   c                    r  )Nr  r	  r  r:  rS  r  r  r  r1   r2   rK     r  Nz[Cumulative density calculations experimental for FFT method. Use piecewise method instead.*rZ   r	  r  r   r   r  r  r  r  rW  r  z	cdf test r  z'
r  Fr  )r  r6   r  rm  r   r  r[  ri   rc   r  r   r   r  r   re  r   )rk   rx  r  r  r  r   r  r  r  r|   r  r  r  rW  r  r  r  r1   r  r2   test_cdf_nolan_samples3  s   	

N

z%TestLevyStable.test_cdf_nolan_samplesr  r   rL  rb   ri   c           
      C   s   t  }|jdkodt  d v }|r|dkrtd |}dtj_dtj_	||d |k }d| tj_
|d	v s;J |dkrCtjjntjj}||d
 |d |d ddd}	t|	|| d dS )zGTests for pdf and cdf where loc, scale are different from 0, 1
        r  32bitr   rb   z4Test unstable on some platforms; see gh-17839, 17859rk  r  S)rb   ri   rZ   r	  r  r`   r   r  r  N)r  r  r  architecturer   r   r6   r  rm  rn  rl  rb   ri   r   )
rk   ry  r  rL  r  r  r   r  r  ru  r1   r1   r2   test_location_scale  s    
z"TestLevyStable.test_location_scalezmethod,decimal_placesr  r   rk  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   r`   r`   r`   r`   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   rN  rr   r   r   rN  rr   r   r   rN  rr   r   r   rN  rr   r   r   rN  rr   r   r  r   zDensity calculation unstable.*)categoryr  r   r   r  N)rc   r   r  r   rO   r[  r6   r  rn  rb   r   )rk   r  decimal_placesxsdensitybetasr  rb   r1   r1   r2   'test_pdf_alpha_equals_one_beta_non_zero  s(   Pz6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zerozparams,expected)r  r  r   r   )r`   r   r[   r  )r[   r  r   r   c                 C   s4   t jj |d |d |d |d dd}t|| d S )Nr   r   r`   r   ry  r(  )r6   r  r   )rk   r  rT   observedr1   r1   r2   r~    s
   zTestLevyStable.test_statsr	  )rN  rr   r   zfunction,beta,points,expectedr:  rQ  r[   rw   r  rF  c                 C   s@   d|  k rdk sJ  J t ||||dtt|| dS )a\  Ensure the pdf/cdf routines do not return nan outside support.

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

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

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

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

        Reference values taken from MATLAB
        https://www.mathworks.com/help/stats/stable-distribution.html
        Afc=r  Nr6   r  rq  r   rb   rk   rZ   r	  r  rT   r1   r1   r2   test_x_equal_zetaI  s
   -z TestLevyStable.test_x_equal_zeta)
)r  r  r  gz¶?)r  r  r  gV?)r  r  r  gRE)3\?)r  r  r  gB?)r  r  r  g/^?)-C6r  r  gH?)r  r  r  gn?)r  r  r  gx\?)r  r  r  gVM%?)r  r  r  gm?c                 C   r  )a  Test pdf for x near zeta.

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

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

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

        Reference values taken from MATLAB
        https://www.mathworks.com/help/stats/stable-distribution.html
        r  r  Nr  r  r1   r1   r2   test_x_near_zeta}  s
   "zTestLevyStable.test_x_near_zetac           	      C   s   t jj}tddddd}tj}tjdi |}d|_d|_|jdi |d|d	d
}|jd|d	d
}t ||kr>J d|_d|_|jdi |d|d	d
}|jd|d	d
}t	|| t	|| d S )NrY  rX   rw   r:  r	  r  r^   r_   r}  rj  r[   
r   r1   )
rc   r   r   r   r6   r  rl  r   r   r   	rk   r   r   unfrozenfrozen
unfrozen_afrozen_a
unfrozen_bfrozen_br1   r1   r2   $test_frozen_parameterization_gh20821  s   
z3TestLevyStable.test_frozen_parameterization_gh20821c           	      C   s   t jj}tddddd}tj}d|_tjdi |}|jdi |d|dd	}|jd|dd	}t|| d
|_tjdi |}|jdi |d|dd	}|jd|dd	}t|| d S )NrY  rX   rw   r:  r  r}  r[   r  r   rj  r1   )	rc   r   r   r   r6   r  rl  r   r   r  r1   r1   r2   %test_frozen_parameterization_gh20821b  s   
z4TestLevyStable.test_frozen_parameterization_gh20821bN)(r   r   r   r   r  rr  rw  rx  ry  r   r   r   r  r2  r   r  r  r!  r  r  r  r  rc   r?  r  r  r  r  r  r  r~  r6   r  ri   rb   r  r  r  r  r  r1   r1   r1   r2   rh  v  s   


!
+
 C
| 
 

rh  c                   @   rZ  )TestArrayArgumentc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestArrayArgument.setup_methodc                 C   s.   t jjtdtddd}t|jd d S )Nr   r  r  )r6   r  r   rc   r   ry  r   r*  rk   r   r1   r1   r2   test_noexception  s   z"TestArrayArgument.test_noexceptionN)r   r   r   r   r  r1   r1   r1   r2   r        r  c                   @   rZ  )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  rs  )r6   r  r  r   lowerrs  ro   r1   r1   r2   test_docstrings  s
   zTestDocstring.test_docstringsc                 C   s   t   t   d S rm   )r6   rB   rA   ro   r1   r1   r2   test_no_name_arg  s   zTestDocstring.test_no_name_argN)r   r   r   r  r  r1   r1   r1   r2   r        r  c                  C   s   t g d} t| dk| d\}}t|g d t|dg tddk| d\}}t||  t|dgt|   t| dk| d\}}t||  t|dgt|   d S )N)r   r   r`   r   r`   r   r   r   r`   )r   r`   r`   r   r   r   )r   r   r   rc   r   r/   r0   r|  r1   r1   r2   test_args_reduce  s   

r	  c                   @   s   e Zd Zg dZdd Zg dZejde	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejjejdddgdd Zejdddgdd ZdS )TestFitMethod)ncfrs  rt  	irwinhallc                 C   r  r  r  ro   r1   r1   r2   r     r!  zTestFitMethod.setup_method)r  r  r'  r  z	dist,argsc                 C   s|   || 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  fit known to fail or deprecatedr  r  r  r  r  r   r  N)fitSkipNonFiniter   r   rc   r   r  r  r  r6   r  r  r   )rk   r>   r  rZ   r  distfuncr1   r1   r2   !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  rN  rw         4@r  r#  r`   r   r  r  r   )rc   r   r   r  r6   r  r   rT  ru  r   r   r   r   )rk   rZ   expected_shaper1   r1   r2   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   r`   r   r  )rc   r   r6   r  r   r   rT  r   rk   rZ   r^   r_   r1   r1   r2   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=  rh  r   r   r`   r  )rc   r   ru  r   r6   r|  r   r   r   digammar   )rk   rZ   meanlogr   r/   r^   r_   rJ   r   r   r|  r1   r1   r2   test_fix_fit_gamma%  s6   






z TestFitMethod.test_fix_fit_gammac              	   C   s  dd }t g d}tjj|ddd\}}}}t|d t|d t||||ddgdd t g d}tjj|d	ddd
\}}}}t|d	 t|d t|d ||||\}}t|ddd d| }	tjj|	d	ddd\}
}}}t|d	 t|d t|d ||
||	\}}t|ddd t|
| tt	tjj|ddd t g d}tt	tjj|ddd tt	tjj|ddd	d tt	tjj|ddd	d tt	tjj|ddd	dd d S )Nc                 S   sj   t |}t| }td|  }t| | }||| t|    ||| t|   g}|S r   )r   rc   ru  rO  r   psi)r/   r0   rZ   rV  s1r  psiabr   r1   r1   r2   mlefuncN  s   z0TestFitMethod.test_fix_fit_beta.<locals>.mlefunc)r:  rN  rr   r   r   r  r7  r   r`   )r   r   r   r  )r   r   r   rr   r  )r   r   r   )r   r   r   r   )r   r   r   r   )
rc   r   r6   r  r   r   r   r   r  r  )rk   r  rZ   r/   r0   r^   r_   dadbr  r  b2r  r  r  r1   r1   r2   test_fix_fit_betaK  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)r`   r`   r   r   r   r   r   rh  r`   r   r  r   r   r   )rc   r   r6   r  r   r   r  r1   r1   r2   test_expon_fit  s   




zTestFitMethod.test_expon_fitc                 C   s   t g d}t |d }tjj|dd\}}}t|| dd t|d t|t 	|
 dd tjj|ddd\}}}t|t |t d d 
 dd t|d t|d tjj|dd	d
\}}}t|d	 t|d t|t 	|
 dd d S )N)r  r   r[   r'     r  r   r   r  r{   r  r  r`   r   )r   fix_s)rc   r   ru  r6   r  r   r   r\  r   r   r   rT  )rk   rZ   lnxm1r*  r^   r_   r1   r1   r2   test_lognorm_fit  s    




zTestFitMethod.test_lognorm_fitc                 C   s   t g d}tj|\}}t||  t|t | tjj|dd\}}t|d t||  tjj|dd\}}t|d t|d t	t
tjj|dd t	t
tjj|dd d S )N)r:  r  rF  r  r   r   r[   r  rv   r;  )rc   r   r6   r'  r   r   r$  r  r  r  r  r  r1   r1   r2   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  r\   r   r   r  )r   r  )r  r  r  r/  )r   r  r  )r   r  )r  r  )r  r  r   r`   )r  r   r  r   r   )r  r   r   r   r  )r  r   r   r  )r  r   r   r#  )	r6   r  r   r   r   r  r  r   r|  )rk   r  r/   r0   rZ   res_1res_2res_3res_4res_5aabbr  ssr   r1   r1   r2   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 )Nr`   r\   )r  r   i)enikibenikir  )r6   r  r   r   r  r  r   )rk   r  r>   r   r  r1   r1   r2   test_extra_params  s   
"zTestFitMethod.test_extra_paramsN)r   r   r   r   r   r  r   r   r   r   r  r  r  r  r   r!  r%  r&  r   r1  r3  r1   r1   r1   r2   r
    s$    

	&7&r
  c                   @   rC  )
TestFrozenc                 C   r  r  r  ro   r1   r1   r2   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  r]   r  rN  r`   )r6   r  rb   r   ri   r   r  r   r  r   r  r\  rD   rJ  r/   r0   )rk   r>   r  result_fr  r1   r1   r2   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 )Nrv   r  rN  r  r`   )r6   r|  rb   r   ri   r   r  r   r  r   r  r\  rD   rJ  r/   r>   r0   )rk   r/   r>   r  r5  r  r1   r1   r2   
test_gamma$  sL   






















zTestFrozen.test_gammac                 C   s8   t d}|d}|j dd |d}t|| d S )Nr   r`   ry  rz  )r6   r  rJ  r   )rk   r  m1r  r1   r1   r2   test_regression_ticket_1293X  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 )
NrV  r#  rw   r  rX   r   r  r  rr   )r6   r  r>   r   r   rb   rc   r  r/   r0   r   r   r!  r   )rk   r|  r%  r/   r0   rv1r1   r1   r2   r"  g  s4   



zTestFrozen.test_abc                 C   s   t ttjd d S )N	rv_frozen)r   r.   r6   r7   ro   r1   r1   r2   test_rv_frozen_in_namespace  s   z&TestFrozen.test_rv_frozen_in_namespacec                 C   sV   t  }tt|d d|_t|j tj	d  tj	d}|j
d|d d S )Nr   *   r   rh  r   )r6   r  r   r.   r   r   	get_staterc   r   r  r   )rk   r  rndmr1   r1   r2   test_random_state  s   
zTestFrozen.test_random_statec           
      C   s   t dd}t d}t jg dg dfd}|||fD ]H}d|_|jdd	 t|}|jdd	}t|}|jdd	}t	|| |
d
|
d
g}	t	|	d |	d  t	||	d ||	d  qd S )Ngdsz@g@e?r  )r   r   r`   r   r  r9  r   rh  r#  rr   r   r   )r6   r  rc  rA   r   r   pickledumpsloadsr   r   ri   )
rk   r  poissr3  distfnrJ   r0	unpickledr1mediansr1   r1   r2   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 rm   r1   r   r1   r1   r2   r        z$TestFrozen.test_expect.<locals>.funcr`   r   r   r  r  )r  divider   T)r   ubconditionalr`   r  r^   r_   r   rM  rN  r  )r   r  r^   )r6   r|  rc   r  r   r   rc  )rk   r   gmgm_val	gamma_valrW  p_valpoisson_valr1   r1   r2   test_expect  s   

zTestFrozen.test_expectN)r   r   r   r   r  r6  r8  r"  r;  r?  rI  rW  r1   r1   r1   r2   r4    s    34,r4  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   r1   r   r1   r1   r2   rK     rL   z&TestExpect.test_norm.<locals>.<lambda>r   r`   r]   r   r  r=  c                 S   rJ  rm   r1   r   r1   r1   r2   rK     r   r  rk  c                 S   r   r   r1   r   r1   r1   r2   rK     r   r^   r_   r   rM  r   c                 S   r   r   r1   r   r1   r1   r2   rK     r   Tr^   r_   r   rM  rN  r:  )r6   r  r   r   r   )rk   rR  r  r   rM  prob90prob90cr1   r1   r2   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   rY  )NUUUUUU@r1   r   r1   r1   r2   rK     rL   z&TestExpect.test_beta.<locals>.<lambda>r  r   r`   )r  r^   r_   qq?rl  r=  c                 S   rJ  rm   r1   r   r1   r1   r2   rK     r   r;  rv   r^  rk  r[   r]   r  c                 S   r   )Nr:  r1   r   r1   r1   r2   rK     r   )r[   r[   FrP  r   c                 S   r   r   r1   r   r1   r1   r2   rK     r   Tr:  )r6   r  r   r   r   )rk   rR  r  rM  r   r\  r]  r1   r1   r2   	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  r[   rh  r;  r  c                 S   rJ  rm   r1   r   r1   r1   r2   rK     r   z+TestExpect.test_hypergeom.<locals>.<lambda>)r  r[   rh  rQ  rl  r=  c                 S      | d d S Nr  r`   r1   r   r1   r1   r2   rK          r  c                 S   ra  rb  r1   r   r1   r1   r2   rK     rc  r   )r  r^   r   rM  r   c                 S   r   r   r1   r   r1   r1   r2   rK     r   r  r<  c                 S   r   r   r1   r   r1   r1   r2   rK     r   T)r  r^   r   rM  rN  c                 S   r   r   r1   r   r1   r1   r2   rK     r   r   )r  r   rM  )r6   rk  r   r   r7  rO  )
rk   m_truev_truer  rR  v_bounds	prob_trueprob_boundsprob_bcprob_br1   r1   r2   test_hypergeom  s2   "zTestExpect.test_hypergeomc                 C   sb   t jjdd dddd}dt jdd }t||d	d
 t jjdd dddd}t|dd	d
 d S )Nc                 S   r   r   r1   r   r1   r1   r2   rK     r   z)TestExpect.test_poisson.<locals>.<lambda>rO  r   F)r  r   rN  r   r`   r  r=  c                 S   r   r   r1   r   r1   r1   r2   rK   !  r   T)r6   rc  r   ri   r   )rk   rh  prob_b_trueprob_lbr1   r1   r2   test_poisson  s   zTestExpect.test_poissonc                 C   s<   t j}|jdd}|jdd |jdd}t||dd d S )N)r  r   )rr   r  r=  )r6   genhalflogisticr   r   )rk   halflogr  r  r1   r1   r2   test_genhalflogistic%  s
   zTestExpect.test_genhalflogisticc                 C   sv   t ttjdd t ttjjdd dd t ttjjdd dd t ttjjdd dd d S )	Nr=  Gz?c                 S   r   r   r1   r   r1   r1   r2   rK   4  r   z/TestExpect.test_rice_overflow.<locals>.<lambda>)rr  r   c                 S   r   rU  r1   r   r1   r1   r2   rK   5  r   c                 S   r   Nr   r1   r   r1   r1   r2   rK   6  r   )r   rc   r  r6   ricerb   r   ro   r1   r1   r2   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   rJ  rm   r1   rW   r1   r1   r2   rK   ;  r   z(TestExpect.test_logser.<locals>.<lambda>r   r:  rz   r   c                 S   rJ  rm   r1   rv  r1   r1   r2   rK   A  r   rQ  )r6   r  r   r   rc   ru  )rk   rW  r^   res_0res_lr1   r1   r2   test_logser8  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   rJ  rm   r1   r   r1   r1   r2   rK   H  r   z)TestExpect.test_skellam.<locals>.<lambda>r   c                 S   rT  rU  r1   r   r1   r1   r2   rK   I  rV  r  r   r`   )r6   r  r   r   )rk   r  p2r7  r  r1   r1   r2   test_skellamD  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   rJ  rm   r1   r   r1   r1   r2   rK   Q  r   z)TestExpect.test_randint.<locals>.<lambda>c                 s   s    | ]}|V  qd S rm   r1   r=   r   r1   r1   r2   rS  S  s    z*TestExpect.test_randint.<locals>.<genexpr>rz   r   )r6   r)  r   r   rO  rM  )rk   r  r  r   r1   r1   r2   test_randintM  s
    
zTestExpect.test_randintc                 C   s   t ttjjdd d d S )Nc                 S   rT  rU  r1   r   r1   r1   r2   rK   X  rV  z&TestExpect.test_zipf.<locals>.<lambda>rO  )r	   r[  r6   r  r   ro   r1   r1   r2   	test_zipfU  s   
zTestExpect.test_zipfc                 C   s@   t jjdd dd}t jjdd ddddd	}t||d
d d S )Nc                 S   r   r   r1   r   r1   r1   r2   rK   \  r   z/TestExpect.test_discrete_kwds.<locals>.<lambda>rO  r   c                 S   r   r   r1   r   r1   r1   r2   rK   ]  r   r)      r  )r  maxcount	chunksize	tolerancer  r=  )r6   rc  r   r   )rk   n0n1r1   r1   r2   test_discrete_kwdsZ  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   r[   r   rF  r   r'  r`   r1   r  r1   r1   r2   poiss_moment5d  s   0z-TestExpect.test_moment.<locals>.poiss_moment5)r   r  r   r  r{   )r6   rc  rJ  r   )rk   r  r#  m5r1   r1   r2   test_momenta  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 )Nr3  r:  r]   r>  r[   rX   )   r   r  U   r  )r   r6   r  r   r|  r  ro   r1   r1   r2   test_challenging_cases_gh8928k  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 )Nr[   r   r]   r\  r  rZ  r"  r  r  Tr[  rl  g433333@g433333r<  )r6   r'  r   r   r   )rk   r>   rd  r1   r1   r2   test_lb_ub_gh15855t  s"   zTestExpect.test_lb_ub_gh15855N)r   r   r   r  r`  rk  rn  rq  ru  ry  r{  r~  r  r  r  r  r  r1   r1   r1   r2   rX    s    "
		
	rX  c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dddgdd ZdS )TestNctc                 C   s@   t dd}t|dd t dd}t|dddd d S )Nr   r   rr   r   g K?r[   r=  )r6   nctr   ri   r   r*  r1   r1   r2   test_nc_parameter  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  rX   r   )gMp^j?g6].ftv?gȳ'ς?gu?)g!Y<a?g]d1p?go|?g?)gHdY?g2Ԥg?g}o/u?g .mr?r  r{   )r6   r  rb   rc   r   r?  r   r   )rk   r   rT   r1   r1   r2   test_broadcasting  s   zTestNct.test_broadcastingc                 C   s   t dd}t| d d S )Nr   r   rv   )r6   r  r   r  r*  r1   r1   r2   test_variance_gh_issue_2401  s   z#TestNct.test_variance_gh_issue_2401c                 C   s   t jj dddd\}}}}t||||gtjtjtjtjg t jj dddd\}}}}tt| t|||gtjtjtjg t jj dddd\}}}}tt|||g  t|tj d S )Nr   r^  ry  )r  ncr{  rY  r  )r6   r  r   rc   r  r   r  r   r  r1   r1   r2   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 )Nr   r`   g@ @g*dn?r   r  r{   r   gqI  @gL) ?r  )r6   r  r   r   )rk   nct_mean_df_1000nct_stats_df_1000expected_stats_df_1000nct_mean	nct_statsrE  r1   r1   r2   test_nct_stats_large_df_values  s   
z&TestNct.test_nct_stats_large_df_valuesc                 C   s   t tjddtdd d S )Nr`   i   r   )r   r6   r  ri   r   ro   r1   r1   r2   test_cdf_large_nc  r  zTestNct.test_cdf_large_nczx, df, nc, expected)r*  r[   r  gAs69)r.  rh  r  gV1c                 C   r  r  )r   r6   r  rb   )rk   rZ   r  r  rT   r1   r1   r2   test_pdf_large_nc  r  zTestNct.test_pdf_large_ncN)r   r   r   r  r  r  r  r  r  r   r   r   r  r1   r1   r1   r2   r    s    r  c                   @   r  )
TestRecipInvGaussc                 C   s   t jdd}|dksJ d S )Nr   r  rw   )r6   recipinvgaussrb   rn  r1   r1   r2   test_pdf_endpoint  s   z#TestRecipInvGauss.test_pdf_endpointc                 C   s"   t jdd}|tj ksJ d S )Nr   r  )r6   r  r   rc   r  r  r1   r1   r2   test_logpdf_endpoint  r  z&TestRecipInvGauss.test_logpdf_endpointc                 C   s$   t jdd}d}t||dd d S )Nr  rr   g9V9s;r  r{   )r6   r  ri   r   rk   rW  rT   r1   r1   r2   test_cdf_small_x  s   z"TestRecipInvGauss.test_cdf_small_xc                 C   s"   t jdd}d}t||d d S )NrD  rr   glH<r  )r6   r  r   r   r  r1   r1   r2   test_sf_large_x  s   z!TestRecipInvGauss.test_sf_large_xN)r   r   r   r  r  r  r  r1   r1   r1   r2   r    s
    r  c                   @   rq  )TestRicec                 C   s   g d}t ttjj|dd  t ttjj|dd  t ttjj|dd  t ttjj	|dd  g d}t ttjj
|dd  tjjddd}t t|  d}ttj|dtj|||dd	 d S )
N)r  r:  r;  rw   r0   )rX   rX   rr   r   r   ry  rz  r  r/  )r   rc   r  r6   rt  rb   r   r   ri   r  r   r   )rk   rZ   r_  ry  r0   r1   r1   r2   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   )r0   r   )r6   rt  r   r   r   r*  r   r1   r1   r2   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 )Nr[      )g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?rX   r   g     @_@r   r  )	g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@rr      )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@)r6   rt  ri   rc   r   r   r   r5   )rk   ri   cdf_expprobabilitiesr   ppf_expr1   r1   r2   test_rice_gh9836*  s   "

zTestRice.test_rice_gh9836N)r   r   r   r  r  r  r1   r1   r1   r2   r    s    r  c                   @   rq  )
TestErlangc                 C   r  r  r  ro   r1   r1   r2   r   U  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 )NrT  rS  r   r   r   r  )rr   r:  rv   r  r  r  r{   )rX  rY  rZ  r[  r  r6   erlangr   r   r|  r   )rk   r   result_erlangresult_gammar1   r1   r2   test_erlang_runtimewarningX  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 )Nrr   r   r   r  )r   r6   r  rb   r|  ro   r1   r1   r2   test_gh_pr_10949_argcheckk  s   z$TestErlang.test_gh_pr_10949_argcheckN)r   r   r   r   r  r  r1   r1   r1   r2   r  T  s    r  c                   @   sp   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	ejdddgddggdd Z
dd Zdd ZdS )TestRayleighc                 C   r  )Nr  r  ro   r1   r1   r2   r   q  r!  zTestRayleigh.setup_methodc                 C   r  )Nr%  g)Zx)r6   r  r   r   rk   r  r1   r1   r2   r  u     zTestRayleigh.test_logpdfc                 C   r  )Nr%  i)r6   r  r  r   r  r1   r1   r2   r  y  r  zTestRayleigh.test_logsfr  )gB)Q?got|?)gS2P?g3?c                 C   s   t jjd||d}dd }|||}t jj||d\}}t|| t|| t jj|dd\}}t|d t j|\}}t|||| d S )Nr  r  c                 S   s"   t | | d dt|   d S )Nr`   rr   )rc   rO  r   )r   r   r1   r1   r2   r    s   "z(TestRayleigh.test_fit.<locals>.scale_mler   r  r  )r6   r  r   r   r   )rk   r   r  r   r  scale_expectr^   r_   r1   r1   r2   r  }  s   



zTestRayleigh.test_fitrr  rt   g̡=E?g@1d?c                 C   s"   t jjd||d}tt j| d S )Nr  r  )r6   r  r   r   )rk   r   r  r   r1   r1   r2    test_fit_comparison_super_method  s   z-TestRayleigh.test_fit_comparison_super_methodc                 C   s   t tj d S rm   )r  r6   r  ro   r1   r1   r2   r    rp  zTestRayleigh.test_fit_warningsc           	      C   s   t jd}d\}}}tjj||||d}tj|\}}|t |k s&J tjj||d\}}|t |k s9J ||ks?J d S )Ni  )r%  r  rd  r   r  )rc   r   r   r6   r  r   r   r$  )	rk   r   r^   r_   r   r   r   r   r   r1   r1   r2   test_fit_gh17088  s   
zTestRayleigh.test_fit_gh17088N)r   r   r   r   r  r  r   r   r   r  r  r  r  r1   r1   r1   r2   r  p  s    


r  c                   @   s   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	ejdg ddd Z
ejdddgdd Zejdddgdd ZdS )TestExponWeibc                 C   sB   d}d}d}t j|||}t j|||}t||gddg d S )NrX   r:  r#  g:23W+g~`9k)r6   	exponweibrb   r   r   )rk   rZ   r/   r|  rW  r  r1   r1   r2   test_pdf_logpdf  s   zTestExponWeib.test_pdf_logpdfc                 C   sj   t ddd}d}d}tj|||}tj||}t|| tj|||}tj||}t|| d S )Nry  r   r   r   r\   )rc   rz  r6   r  rb   weibull_minr   r   rk   rZ   r/   r|  rW  rT   r  r1   r1   r2   test_a_is_1  s   
zTestExponWeib.test_a_is_1c                 C   sf   t ddd}d}d}tj|||}tj|}t|| tj|||}tj|}t|| d S )NrZ  r   r[   )rc   rz  r6   r  rb   r  r   r   r  r1   r1   r2   test_a_is_1_c_is_1  s   
z TestExponWeib.test_a_is_1_c_is_1zx, a, c, ref))r   rD  r   g=J ?)r%  rD  r   g$+PR>)r  rD  r   g><)r  rD  r   ggX.X:)r        ?r   gRy9)r   r  r  g'vR0=)g_QPr  ri  gQ:<c                 C   r  r  )r6   r  r   r   )rk   rZ   r/   r|  rd  r   r1   r1   r2   r       zTestExponWeib.test_sfzp, a, c, ref))rN  rD  r   g;y$(@)gMg<rD  r   gdbq^@)r  r   r`   gE@)gvIh%L=r  r   g/7@)r  r  ri  gTWTOc                 C   r  r  )r6   r  r  r   )rk   rW  r/   r|  rd  r  r1   r1   r2   r  	  s   	zTestExponWeib.test_isf)r`   r   rh  g)r   rr   r   gl̇կc                 C   r  r  )r6   r  r  r   )rk   rZ   r/   r|  rd  r  r1   r1   r2   r    r  zTestExponWeib.test_logcdf)gR]jp2r  r  gr)r  r`   r[   gN~c                 C   r  r  )r6   r  r  r   )rk   rZ   r/   r|  rd  r  r1   r1   r2   r    r  zTestExponWeib.test_logsfN)r   r   r   r  r  r  r   r   r   r  r  r  r  r1   r1   r1   r2   r    s4    



r  c                   @   rZ  )TestFatigueLifec                 C   r  )NrO  rD  X9r   r{   )r6   r  r   r   r  r1   r1   r2   test_sf_tail(  s   zTestFatigueLife.test_sf_tailc                 C   s$   d}t j|d}t|ddd d S )Nr  rD  rO  r   r{   )r6   r  r  r   )rk   rW  r_  r1   r1   r2   test_isf_tail6  s   zTestFatigueLife.test_isf_tailN)r   r   r   r  r  r1   r1   r1   r2   r  &  s    r  c                   @   sX   e Zd Zdd Zdd Zejdddgdd	 Zd
d Z	ejdddgdd Z
dS )TestWeibullc                 C   rA  rl  )r6   r  r   r   r  r1   r1   r2   r  ?     zTestWeibull.test_logpdfc           
      C   sP  d}d}d}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|t	
d  t jj|||d}t|tt	
d  t jj|||d}t|td t jj|||d}	t|	d t jjdddd}t|td	 t jjdddd}	t|	d	 d
}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|td t jj|||d}t|d t jj|||d}t|t	
d  t jj|||d}	t|	tt	
d  t jjdddd}t|t	
d  t jjdddd}	t|	tt	
d  d S )Nr  rv   r  r  rt  r   r"  r`   r]  r  g&.gCe )r6   r  rb   r   rc   r   r   ru  ri   r   r`  r  r   r  weibull_max)
rk   rZ   r/   r0   rW  r  r|  lcrJ   r  r1   r1   r2   test_with_maxima_distribD  sH   


z$TestWeibull.test_with_maxima_distribr_   r:  rX   c                 C   s*   t jj|d |d d|d}t|d d S )Nr[  rh  r   r  g>)r6   r  r  r   rG  r1   r1   r2   r    s   zTestWeibull.test_delta_cdfc                 C   s   t jd}d\}}}t|||}|jd|d}tjj|ddd\}}}	tjj|ddd\}
}}||  kr<dks?J  J ||
ksEJ tjj|ddd	d
\}}}|dksXJ t|||}|jdd}t |t|f}t	|| d S )Nl   > )r`   r  rr   r\   r   r  r   r   r;  r  r  r  rz  )
rc   r   r   r6   r  r   r   r   r  r   )rk   r   r|  r^   r_   r>   r   c2r  r  c3r  r  c4r  r  r  r   rd  r1   r1   r2   test_fit_min  s   
zTestWeibull.test_fit_minr  )r%  r   rf  )r   r   gq뮕qH)c                 C   r  r  )r   r6   r  r   r  r  r1   r1   r2   r    s   zTestWeibull.test_sf_isfN)r   r   r   r  r  r   r   r   r  r  r  r1   r1   r1   r2   r  =  s    T

r  c                   @   rZ  )TestDweibullc                 C   sR   t jd}d|jddd }tj|}tj|t d }t	||dd d S )N   q>~). r[   r\   r  rr   rz   r{   )
rc   r   r   rO  r6   dweibullrD   r  ru  r   )rk   r   r|  r   rd  r1   r1   r2   rS    s
   zTestDweibull.test_entropyc                 C   s\   t jd}d|jddd }d|  }tj||}dtj|| }t	||dd d S )Nr  r[   r   r  rr   rz   r{   )
rc   r   r   rO  r'  r6   r  r   r  r   )rk   r   r|  rZ   r   rd  r1   r1   r2   r    s   zTestDweibull.test_sfN)r   r   r   rS  r  r1   r1   r1   r2   r    s    r  c                   @   rC  )TestTruncWeibullc                 C   s(   t jddgddd}t|ddg d S )NrX   rv   g)\(?gףp=
?rw   )r6   truncweibull_minrb   r   r  r1   r1   r2   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 )Nrv   r:  rw   r  g~?)r6   r  r   rc   r  r   r   r  r1   r1   r2   r    s   
zTestTruncWeibull.test_logpdfc                 C   s(   t jddgddd}t|ddg d S )Nrw   r:  rv   rX   )r6   r  r   r   r  r1   r1   r2   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)rw   rX   rN  rr   r   r   r:  rv   rw   r  )r6   r  r   ri   r   rk   r_  rZ   q_outr1   r1   r2   test_cdf_to_ppf      z TestTruncWeibull.test_cdf_to_ppfc                 C   r  r  )r6   r  r  r   r   r  r1   r1   r2   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 )Nrv   r:  r  c                    s   | | t j|   S rm   )r6   r  rb   )rZ   rV  r  r1   r2   xnpdf  s   z)TestTruncWeibull.test_munp.<locals>.xnpdfr   r   c                    
    | dS r   r1   r   r  r1   r2   rK        
 z,TestTruncWeibull.test_munp.<locals>.<lambda>r`   c                    r  rU  r1   r   r  r1   r2   rK     r  r   c                    r  rs  r1   r   r  r1   r2   rK      r  r   c                    r  )Nr   r1   r   r  r1   r2   rK   $  r  )r6   r  rJ  r   r   r   )rk   rN  r7  m1_expectedr   r  m2_expectedm3m3_expectedr  m4_expectedr1   )r/   r0   r|  r  r2   	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  rv   r   rr   r  )rc   rT  ru  r   r6   r  ri   r   r  r   r   r  r  )rk   r/   r0   r|  x_medri   r  r   r   r  r  r1   r1   r2   test_reference_values'  s    *


z&TestTruncWeibull.test_reference_valuesc                 C   s  d}d}d}t j}d}tjj|||d}tjj|||||d}t|| tjj|||d}tjj|||||d}	t||	 tjj|||d}
tjj|||||d}t|
| tjj	|||d}tjj	|||||d}t|| tjj
|||d}tjj
|||||d}t|| tjj|||d}tjj|||||d}t|| tjj
dd||dd}t|t d	 tjjdd||dd}t|d	 d S )
Nr  rv   rw   r  r  r"  r`   r   r]  )rc   r  r6   r  rb   r  r   r   ri   r  r   r  r   )rk   rZ   r|  r/   r0   r_   rW  p_truncr  lp_truncri   	cdf_truncr  lc_truncrJ   s_truncr  ls_truncr1   r1   r2   test_compare_weibull_min?  s6   





z)TestTruncWeibull.test_compare_weibull_minc           
      C   s   d\}}}t ||d}tj||||}tj||||}tj||tj|| }tj||| }tj||tj|| | }	t j|| t j||	 d S )N)rD  rN  r  r\   )	rc   r?  r6   r  rb   ri   r  r  r   )
rk   r|  r/   r0   rZ   r  r  r  r  r  r1   r1   r2   test_compare_weibull_min2h  s   
 z*TestTruncWeibull.test_compare_weibull_min2N)r   r   r   r  r  r  r  r  r  r  r  r  r1   r1   r1   r2   r    s    )r  c                   @   s6   e Zd Zdd Zdd Zejdg ddd Zd	S )
	TestRdistc                 C   s0   t j}g d}t|||dd|dd d S )Nr  g     @r   r=  )r6   rdistr   ri   r   )rk   rD  r4  r1   r1   r2   test_rdist_cdf_gh1285z  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rP  r[   g@rr   r`   r   )rc   r?  r   r6   r  rb   r  )rk   rZ   r|  r1   r1   r2   test_rdist_beta  s
   &zTestRdist.test_rdist_betar  ))r  i  g?)rX      g;|bZ?)rr   i  g79)r   iU  g޻S/c                 C   r  r  )r   r6   r  r   r  r1   r1   r2   test_rdist_sf  s   
zTestRdist.test_rdist_sfN)	r   r   r   r  r  r   r   r   r  r1   r1   r1   r2   r  y  s    	r  c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dg ddd ZdS )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^  rr   r   r   r   )r   r6   r   rb   triangri   )rk   modesmoderZ   r1   r1   r2   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   r[   )rc   r?  r   r6   r   rb   r'  ri   r  r1   r1   r2   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   r`   r   rr   r   rB  r  r:  rX   g      ?r  r   r  r:  g      ?)r   r6   r   rb   ri   ro   r1   r1   r2   
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   r`   r   r`   c                    sT   | d  | d     | d   | d        | d  | d  S )Nr`   r   r1   )rV  r/   r0   r|  drR  r1   r2   rJ    s    z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   rr   rl  r=  r   r-  r  r   r   )rc   ru  r   r6   r   r   r  rD   )	rk   r  rz  r^   r_   rJ  r   r  rD   r1   r   r2   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  rr   r  )r!  rN  r   r  rz   r   ry  rz  r   )rc   r   r6   r   rb   broadcast_arraysemptyr   r   r   r   ravelr   r  r*  r   rv  )rk   r|  r  rZ   rR  ccddr}  r   indrK  r  c1d1r1   r1   r2   test_trapezoid_vect  s"   &z!TestTrapezoid.test_trapezoid_vectc                 C   s`   t ddd}tjdd tj|dd}W d    n1 s w   Y  t|tj| d S )Nr   r   r[   z`trapz.pdf` is deprecatedr   )	rc   r?  r   deprecated_callr6   rE   rb   r   r'  )rk   rZ   r  r1   r1   r2   
test_trapz  s
   zTestTrapezoid.test_trapzr  )rb   r   ri   r  r   r  r   r  c                 C   st   d\}}t tj|d||}tjd| dd t tj|d||}W d    n1 s-w   Y  ||ks8J d S )N)r  r   r   z`trapz.z` is deprecatedr   )r  r6   r   r   r  rE   )rk   r  r|  r  rT   r  r1   r1   r2   test_trapz_deprecation  s   
z$TestTrapezoid.test_trapz_deprecationN)r   r   r   r  r  r  r  r  r  r   r   r   r  r1   r1   r1   r2   r    s    	r  c                   @   rj  )
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   rv   rr   r:  r   rw   r`   r   rN  )rc   r  r   r6   r  rb   ri   ro   r1   r1   r2   test_edge_cases  s   "zTestTriang.test_edge_casesN)r   r   r   r  r1   r1   r1   r2   r    r  r  c                   @   sP   e Zd Zejdddgdd Zejdg ddd	 Zd
d Zdd Z	dS )TestMaxwellr  )r  gCR5&.)rt   g7q?c                 C   r  r  )r   r6   maxwellr   r  r1   r1   r2   r     r  zTestMaxwell.test_sfr  ))r  g1!@)g    ?g?)g      <gCuJ!@c                 C   r  ry   )r   r6   r  r  r  r1   r1   r2   r  )  r  zTestMaxwell.test_isfc                 C   "   d}t jd}t||dd d S )Ngi6ur\  r  r{   )r6   r  r  r   )rk   rd  r  r1   r1   r2   r  0     zTestMaxwell.test_logcdfc                 C   r  )Ng_OԺr  r  r{   )r6   r  r  r   )rk   rd  r  r1   r1   r2   r  6  r  zTestMaxwell.test_logsfN)
r   r   r   r   r   r   r  r  r  r  r1   r1   r1   r2   r    s    

r  c                   @   rZ  )
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   r6   mielkerJ  rc   r  r   r  )rk   rW   rJ   r1   r1   r2   r  >  s    zTestMielke.test_momentsc                 C   s@   t ddd}d\}}ttj|||| tj||| d S )Nrt   r\   r%  )g@gHzG@)rc   r?  r   r6   burrrb   r  )rk   rZ   rW   rJ   r1   r1   r2   test_burr_equivalenceE  s   *z TestMielke.test_burr_equivalenceN)r   r   r   r  r  r1   r1   r1   r2   r  =  r  r  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   )rr   r`   )r   r   )r`   rr   rx  rr   r:  )r   r`   rv   c                 S   r  r1   r  r  r1   r1   r2   r?   X  r  z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c                 S   r  r1   r1   r  r1   r1   r2   r?   Y  r   c                 S   r  r1   )r   r/   r  r1   r1   r2   r?   \  r  c                 S   s   g | ]
\}}}t |qS r1   )rc   ru  r  r1   r1   r2   r?   ]  r+  )r6   fiskr  burr12r   )rk   r   r  r  r1   r1   r2   test_endpoints_7491L  s   






	
zTestBurr.test_endpoints_7491c                 C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)r;  r   )g4U?g&MI?)r6   r  r   )rk   r|  r  r   variancemean_hcvariance_hcr1   r1   r2   test_burr_stats_9544`  s
   
zTestBurr.test_burr_stats_9544c           	      C   sF  d\}}t ||  \}}tt| tt| d\}}t ||  \}}tt| tt| d\}}t jtg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d\}}t jg d||\}}}}tt| tt| tt| tt| d S )N)rr   r   )r  r   r  )rD  r   )r  r   )r  r   )r6   r  r   rc   r  r  r  r   )	rk   r|  r  r   r  e1e2e3e4r1   r1   r2   test_burr_nan_mean_var_9544k  sL   "z$TestBurr.test_burr_nan_mean_var_9544c                 C   s6   d\}}g d}g d}t tj||||dd d S )N)r;  r  )rX   r  r  r  )g+&?gI$_@gKT@gؗVAr  r{   )r   r6   r  r  )rk   r|  r  r_  rd  r1   r1   r2   test_burr_isf  s   zTestBurr.test_burr_isfN)r   r   r   r  r"  r'  r(  r1   r1   r1   r2   r  K  s
    *r  c                   @   sH   e Zd Zejdddgdd Zdd Zejdg d	d
d ZdS )
TestBurr12zscale, expected)r:  gd~)r  gR톇T c                 C   s(   t jjdddd|d}t||dd d S )Ng     jAg     jAr   rh  r  r   r{   )r6   r  r  r   )rk   r_   rT   r3  r1   r1   r2   r    s   zTestBurr12.test_delta_cdfc           	      C   sp   d\}}t jd }dt jd d  }t jd d|d   }t j}||||g}t||d	}t||d
d d S )NrJ  r   r   r`   r  r   r  r  ry  r  r{   )rc   rd   r  r6   r  r   )	rk   r|  r  r   r  r  rs  rd  r   r1   r1   r2   test_moments_edge  s   
zTestBurr12.test_moments_edgezp, c, d, ref))r  r  rr   ggx4/@)gҶOɃ;r  rr   gI8aS@)r  rN  #   gj\/ @)g#aMR/rN  r+  g!GAc                 C   r  r  )r6   r  r  r   )rk   rW  r|  r  rd  rZ   r1   r1   r2   test_isf_near_zero  s   zTestBurr12.test_isf_near_zeroN)	r   r   r   r   r   r   r  r*  r,  r1   r1   r1   r2   r)    s    
r)  c                   @   s  e Zd Zg dZg dZg dZeeeefZg dZ	ddddd	ej
gZg d
Zeeee	eeeZddddej
dfddej
dfddej
dfgZejjdd Zejjdd ZejeZdZeejeeZ e!"e Z#W d   n1 s{w   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(ejjd"d# Z)ejjd$d% Z*ej$d&ed'd( Z+ejjej'dd)d* Z,ejjd+d, Z-d-d. Z.d/d0 Z/d1d2 Z0dS )3TestStudentizedRange)gQ1@g33333F@g
ףp=*K@gHzM@g/$@g~j!@g33333$@g{Gz&@gh|?5	@gQ8@g&1@g|?5@g@gOn@g!rhm@gB`"@r  gʡEs@g|?5^@g/$@gV-@g/$@gF@g?5^I@)gRV@gffffffl@gp@g     r@gʡ @gHzG/@gQ82@gQ3@g!rh@g     @g+@gʡEs @gjt@gB`"[@g@gnJ@gV-@gFx@gsh|?@g+N@g/$@g @g@gGz@)gfffff"@i  i
  i  gHzG2@g(\A@gQC@gfffffE@g @gNbX9"@gHz$@g(\&@g-@gn@@gw/@g=
ףp @gJ+@g-'@gn@gHz@gV-@gnJ@g$@g/ݤ@)rk  rP  rh  r   r   r[   r  x   )r`   rh  r  r  )rX   r   i)#  gupm1f?)r   r[   r   g?<-=A?gv"?r   gd暕?ga-A?c                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )Nr  r{   )r   r6   studentized_rangeri   r   )rk   pvkr_  
p_expectedrR  rW   res_pr1   r1   r2   test_cdf_against_tables    
   
z,TestStudentizedRange.test_cdf_against_tablesc                 C   s<   | j D ]\}}|\}}}tj|||}t||dd qd S )Nr  r{   )r   r6   r/  r   r   )rk   r0  
q_expectedrW  rR  rW   res_qr1   r1   r2   test_ppf_against_tables   r4  z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonN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_  rW   rR  expected_atolexpected_rtolr/  )r6   r/  ri   r   rk   r8  r<  r=  qkvr   r1   r1   r2   test_cdf_against_mp      
z(TestStudentizedRange.test_cdf_against_mppdf_datac                 C   r:  r;  )r6   r/  rb   r   r@  r1   r1   r2   test_pdf_against_mp   rC  z(TestStudentizedRange.test_pdf_against_mpz+intermittent RuntimeWarning: invalid value.moment_datac                 C   sz   |d }|d }|d |d |d f}t jdd tjj| }W d    n1 s*w   Y  t|||d |d	 d
 d S )Nr<  r=  r  rW   rR  r  r  r>  r?  r/  )rc   r  r6   r/  rJ  r   )rk   r8  r<  r=  mkvr   r1   r1   r2   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   r[   r   r   r   )r   r6   r/  rb   rc   r  r   )rk   rW   rR  r   r1   r1   r2   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 )	NrI  r   r[   rt   )stepr   r  r{   )rc   r   r6   r/  ri   rb   r   r   )rk   rW   rR  rZ   y_cdf	y_pdf_rawy_pdf_cumulativer1   r1   r2   test_pdf_against_cdfA   s   
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc                 C   sV   |\}}}}t jdd tj|||}W d    n1 sw   Y  t|| d S )Nr  r  )rc   r  r6   r/  ri   r   )rk   rP  r_  rW   rR  r_resr   r1   r1   r2   test_cdf_against_rQ   s
   z'TestStudentizedRange.test_cdf_against_rc                 C   s   t jdd tjddgddgddg}W d    n1 sw   Y  t|jd	 tjt	d
d tjdddgg d W d    d S 1 sIw   Y  d S )Nr  r  r   r`   r   r   r[   r"  rO  z...could not be broadcast...r   )r[   r"  r<  )
rc   r  r6   r/  r  r   r*  r   r   r  r  r1   r1   r2   test_moment_vectorizationY   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   rc   r  rO   r   r6   r/  r  r   	_argcheck)rk   r  rW   r  r   r1   r1   r2   test_fitstart_validi   s   
 z(TestStudentizedRange.test_fitstart_validc                 C   sh   t jddtj}t jddd}t||ddd t jddtj}t jddd}t||ddd d S )Nr   r[   韆 r  r/  )r6   r/  rb   rc   r  r   ri   )rk   r   
res_finiter1   r1   r2   test_infinite_dfq   s   z%TestStudentizedRange.test_infinite_dfc                 C   s   t jddd}t jddd}t jddd}ttt||ddd t||ddd t jddd}t jddd}t jddd}ttt||ddd t||ddd d S )Nr   r[   r   rV  i r7  r/  )r6   r/  rb   r  AssertionErrorr   ri   )rk   r   rW  
res_sanityr1   r1   r2   test_df_cutoff|   s   

z#TestStudentizedRange.test_df_cutoffc                 C   s8   d\}}}t j|||}t|ddd |dksJ d S )N)gaRA@r   iS  r   r  r   )r6   r/  r   r   )rk   r_  rW   rR  rW  r1   r1   r2   test_clipping   s   
z"TestStudentizedRange.test_clipping)1r   r   r   q05q01q001rc   r  qspsr  vskslistr   r'   r   r_datar   r   r   r3  r   r7  ospathdirnamerg  path_prefixrelative_pathopenr  filejsonrf  pregenerated_datar   rB  rE  xfail_on_32bitrH  rJ  rO  rR  rS  rU  rX  r[  r\  r1   r1   r1   r2   r-    s\    











r-  c                   @   s\   e Zd Zejddddedgdgdgggdd Zdd Z	d	d
 Z
dd Zdd ZdS )TestTukeyLambdar  rw   r  r  c                 C   sB   t ddd}tj||}t | sJ |dk sJ d S )Nr  r;  rY   rw   )rc   r?  r6   r*   rb   r  r   )rk   r  rZ   rW  r1   r1   r2   test_pdf_nonpositive_lambda   s   	z+TestTukeyLambda.test_pdf_nonpositive_lambdac                 C   s   t ddd}t dgdgdgg}tj||}t | s"J |d d dk s.J |d dk s8J |d dk sBJ d S )Nr  r;  rY   r  rw   rv   r`   )	rc   r?  r   r6   r*   rb   r  r   r   )rk   rZ   r  rW  r1   r1   r2   test_pdf_mixed_lambda   s   z%TestTukeyLambda.test_pdf_mixed_lambdac                 C   sT   t g d}tj|\}}t t jt jt jdddg}t|| t||  d S )N)g      r   rw   rN  rr   rv   r   r`   rr   )rc   r   r6   r*   supportr  r   )rk   r  r/   r0   
expected_br1   r1   r2   r     s
   
zTestTukeyLambda.test_supportc                 C   s$   t jddgd}t|ddg d S )Nr  rv   rr   rw   )r6   r*   rb   r   rn  r1   r1   r2   test_pdf_support_boundary   s   z)TestTukeyLambda.test_pdf_support_boundaryc                 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   ry  rz  r`   r   rF  r[   r=  g
ףp=
	@)r   gz5v?r   gRTgQ?)r   gNg @r   gJFٻ)r6   r*   rc   rd   r   )rk   rS  rT   r1   r1   r2   "test_tukeylambda_stats_ticket_1545   s   z2TestTukeyLambda.test_tukeylambda_stats_ticket_1545N)r   r   r   r   r   r   rc   r   rq  rr  r  ru  rv  r1   r1   r1   r2   rp     s    

rp  c                   @   r  )TestLevyc                 C   sT   t g d}t g d}tj|}t||dd tj|}t||dd d S )N)r   r:  rr   rX   rt   r  )g~V1?r  gba"?g܄4ťY?r  g$%+Ir  r{   r   )rc   r   r6   r  ri   r   r   )rk   rZ   rT   r  r}  r1   r1   r2   test_levy_cdf_ppf   s   zTestLevy.test_levy_cdf_ppfc                 C   s:   t g d}t g d}tj|}t||dd d S )N)r  r  gMraB3Gr,  )gep[>g}XEQ=gѭEG<g?_%~:r  r{   )rc   r   r6   r  r   r   )rk   rZ   rT   r  r1   r1   r2   test_levy_sf      zTestLevy.test_levy_sfzp, expected_isf))r  gj1e2H)r  g6C)r0  gnE@)r  g!^x1?)rh  gZ?)g   ?g:}!Nu?c                 C   r   )Nr  r   )r6   r  r  r   )rk   rW  expected_isfrZ   r1   r1   r2   test_levy_isf!  s   zTestLevy.test_levy_isfc                 C   r  )Nr,  g?_%~r  r{   )r6   r  r  r   r  r1   r1   r2   test_levy_logcdf!     zTestLevy.test_levy_logcdfc                 C   r  )Nr  gޢاr  r{   )r6   r  r  r   r  r1   r1   r2   test_levy_logsf!  r~  zTestLevy.test_levy_logsfN)r   r   r   rx  ry  r   r   r   r|  r}  r  r1   r1   r1   r2   rw     s    
rw  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?r[   test_540_567)r>  r  g2gk?g;B.?gͣh?gHŎ*?r]   g.y?)r   r6   r  ri   r1   r1   r1   r2   r  #!  s   
r  zdocstrings strippedr  c                   C   s$   t dtjjv t dtjjv  d S )Nzpdf(x, mu, loc=0, scale=1)zpmf(x,)r   r6   rc  r  r1   r1   r1   r2   test_regression_ticket_1421/!  s   r  c                   C   s  t jdd tt tjdt j tt tjdt j tt tj	dt j tt tj
dt j tt tjdt j tt tjdt j tt tjdt j tt tjdt j tt tjt jd tt tjt jd tt tj	t jd tt tj
t jd tt tjt jd tt tjt jd tt tjt jd tt tjt jd W d    d S 1 sw   Y  d S )Nr  r  r   rr   )rc   r  r   r  r6   rV  r  r  ri   r  r   rb   r   r   r  rs  r7  r  r1   r1   r1   r2    test_nan_arguments_gh_issue_13625!  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.  )rN  rw   rr   r   r   r`   r\   r#  r  )rL  rw   r   r=  rr   )r   r^   rN  )r   r^   r  r   rv   r   )rc   r   r   r   r6   r  r   r  r   r   r  rT  r   )truerZ   r  r^   r   rT   r1   r1   r2   test_frozen_fit_ticket_1536J!  s(     r  c                  C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 r\   r#  )g
ףp=
?gʡE?r   r=  )rc   r   r   r6   r  r   r   r   )r   r  rT   r1   r1   r2   test_regression_ticket_1530f!  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<  )rv  g   6Ar:  r   r  )rc   r   r   r   r6   r  r   r   )rZ   offsetr^   r_   r1   r1   r2   test_gh_pr_4806o!  s   r  c                   C   s   t ttjdd d S )Nr  r  )r   rc   r  r6   rc  r  r1   r1   r1   r2   test_poisson_logpmf_ticket_1436y!  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:  )rr   rC  rw   rD  )rv   )gUUUUUU?r_  g^cQg333333ry  rz  N)r6   r  r   )r  r/   
exact_mvskry  r1   r1   r2   test_powerlaw_stats}!  s   r  c                  C   s   t jdd} t| d d S )Nr   r   rw   )r6   r  r   r   rW  r1   r1   r2   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   rw   )rN  r:  r  r:  )r6   r  r   r   rb   rc   r  r  r1   r1   r2   test_exponpow_edge!  s   
r  c                  C   s   t jddd} t| d d S )Nr   r   r:  )r6   gengammarb   r   r  r1   r1   r2   test_gengamma_edge!  s   r  za, c, ref, tol))g    `6Ar   g2j!@rz   )r7  r   ggA@rz   )r  r   rH  rz   )r  r   g #@r   )g    `FAr  gI~mrz   )gl$W}Lr  g.I#Urz   c                 C   s   t tj| |||d d S rr  )r   r6   r  rD   )r/   r|  rd  r  r1   r1   r2   test_gengamma_extreme_entropy!  s   r  c                  C   s@   t jddd} | dksJ t jddd}|tj ksJ d S )Nr   r   r   rw   )r6   r  rb   r   rc   r  )rW  r  r1   r1   r2   !test_gengamma_endpoint_with_neg_c!  s   r  c                  C   s8   t jddd} t| d t jddd} t| d d S )Nr   r  r:  g>r[   gqq?)r6   r  r  r   r  r1   r1   r2   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)
rc   r   r  r   rO   r   r[  r6   rs  r   )r  r  r1   r1   r2   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   r.  r   )gDB.g8_$g%`OAgjhwHRgWMB@v`g7VY}igۦx\Arg	xg#g/dg3$gegd)gNq{3gيGǓgr4g37'
gfFg?dJgضg2,
gm%gӅJgz;pgɿ{gk2gij<%giVSͶgBR4g
Q/Mr  r   y        +=y        |=r  )rc   r   rd  rM  r   r6   r  r  realimagr   r   )rZ   rT   derivderiv_expectedr1   r1   r2   test_norm_logcdf!  s   	r  c                  C   s:   t g d} t g d}tj| }t||dd d S )N)gMb{Gzg{Gztg~jtX)g#]<gOul2;gޢا6g̅7=!r   r{   )rc   r   r6   r  r   r   )rZ   rT   r  r1   r1   r2   test_levy_l_sf"  rz  r  c                  C   s8   t g d} tj| }tj|}t|| dd d S )N)g [n<rN  rP  r  r{   )rc   r   r6   r  r  r   r   )rW  rZ   r_  r1   r1   r2   test_levy_l_isf"  s   r  c                   C   s|   t tjddddd t tjddddd t tjddddd t tjd	d
d
dd t tjdd
d
dd d S )Nrk  i i  i  )g      c@g     h@g=
ףp=?Gz?)g      c@g     h@ri  r\   rh  r   )r   r6   rk  rm  r   r1   r1   r1   r2   test_hypergeom_interval_1802$"  s   r  c                  C   sr  t jd t jdddd} tttjj| dddd	 tttjj| ddd
dd	 tttjj| ddd
d tttjj| ddddd tttjj	ddddd tttjj
| ddddd tttjj| ddddd tttjjddddd tttjjddddd tttjj| ddddd tj| dd tj| ddd
 tjdd tjddd
 tjddd
d tj	ddd
d tjtjj	dddd tjj| ddd	 tttjj| ddd
 tttjj| ddd
d	 tttjj| ddd	 tttjj| dd
ddd	 tttjj| dd
ddd tttjj| dd
dddd	 tttjj| dd
ddddd	 tj| dd
ddd d S )Nr   rX   r  r   numr`   r   r:  r  r   rr   r]   rv   rS  r  r#  r  r  )rc   r   r   r?  r  r  r6   r|  rb   r   ri   r   rD   r   r  r7  r  r  r  r   r1   r1   r2   test_distribution_too_many_args3"  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  rF  r  r`   gYZ@r  r   rI  )r6   ncx2ri   rc   r   _cdfvecr   ri  r1   r1   r2   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 )NrT  r   iT  i^  r`   r   r*  r   r<  gsq6)rX  rY  rZ  r[  r   r6   r  rb   rc   r   r   r   r)  r   r   )logvalr1   r1   r2   test_ncx2_tails_pdfc"  s   

"r  zmethod, expectedri   gu%>g	;Q=rb   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 )NrX   r   r   r[   )r  r  rz   r   )r  r6   r  r   )r  rT   r  r1   r1   r2   test_ncx2_zero_nct"  s   r  c                  C   s4   t jjdddd} t jjddd}t| |dd d S )Nr[   r   r   )r  r  r   )r  r   rz   r   )r6   r  r   rZ  r   )r  rT   r1   r1   r2   test_ncx2_zero_nc_rvs"  s   r  c                  C   s,   dt dd } ttjjdd| dd d S )Nr[   r   rv  r   r  r  r   )rc   r   r   r6   r  ri   )r  r1   r1   r2   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?rw   rw   rw   rw   rw   rw   r  r   )rc   r   r6   r  r   r   )rZ   nur  r   sf_expectedr1   r1   r2   test_ncx2_gh8665"  s
   
r  c               	   C   sx   d} d}t jtjd| |tjd| |dd}tj|| |}tj|| | t d|  d|  }t||d	d
 d S )Ni,  i  r  rh  r*  r  r`   r   r  r   )	rc   r?  r6   r  r   rb   r  rT  r   )r  r  rZ   ncx2_pdfgauss_approxr1   r1   r2   test_ncx2_gh11777"  s   &r  zx, c, expected))r`   r   g|1q?)r`   r`   g~?)r  r   V<3T1=) 7yQCr   u	lY<)r  g   vHGBg^b!*1=)r:  r  gS?c                 C      t j| |}t||d d S Nr  )r6   
foldcauchyr   r   rZ   r|  rT   r   r1   r1   r2   test_foldcauchy_sf"  s   r  ra  ))r`   g?)r  r  )r  r  )g6ްPg8R#/c                 C   s   t j| }t||d d S r  )r6   r  r   r   )rZ   rT   r   r1   r1   r2   test_halfcauchy_sf"  s   r  zp, expected))g?g*wӄZ>)333333?gN9?)rr   r:  )rt   g8<,O@)r  g:B)gl ׶w/gMb}[Pc                 C   s   t j| }t|| d S rm   )r6   r  r  r   )rW  rT   rZ   r1   r1   r2   test_halfcauchy_isf"  s   r  c                  C   s"   t jddd} t| dd d S )Nr   r   r  )r6   r  r   ri   r?  r1   r1   r2   test_foldnorm_zero"  s   r  ))r`   r   gwo{?)r  r   gGd-P/)r[   r'  gof?)rF  r'  gOul";c                 C   r  )Nr  )r6   r  r   r   r  r1   r1   r2   test_foldnorm_sf#  s   r  c                  C   s   t j g ddd} t j ddgdd}tdd |D }t||  t j g d} t j dd	g}td
d |D }t||  d S )N)rw   rr   r:  r   rr   r:  c                 s   s     | ]}t jt j|f V  qd S rm   rc   r5  r  r}  r1   r1   r2   rS  #  rW  z-test_stats_shapes_argcheck.<locals>.<genexpr>)r`   r  r   r`   r  c                 s   s     | ]}t j|t jf V  qd S rm   r  r}  r1   r1   r2   rS  #  rW  )r6   r  tupler   r  )mv3mv2mv2_augmentedr1   r1   r2   test_stats_shapes_argcheck#  s   
r  c                   @   rj  )
_distr_genc                 C   r   Nr<  r1   rk   rZ   r/   r1   r1   r2   _pdf(#  rK  z_distr_gen._pdfNr   r   r   r  r1   r1   r1   r2   r  '#  r  r  c                   @   rj  )_distr2_genc                 C      d| | S r  r1   r  r1   r1   r2   _cdf-#     z_distr2_gen._cdfN)r   r   r   r  r1   r1   r1   r2   r  ,#  r  r  c                   @   rZ  )_distr3_genc                 C   s   || S rm   r1   rk   rZ   r/   r0   r1   r1   r2   r  2#  s   z_distr3_gen._pdfc                 C   r  r  r1   r  r1   r1   r2   r  5#  s   z_distr3_gen._cdfNr   r   r   r  r  r1   r1   r1   r2   r  1#  r  r  c                   @   rZ  )_distr6_genc                 C   s   || | S rm   r1   r  r1   r1   r2   r  =#  r  z_distr6_gen._pdfc                 C   r  r  r1   r  r1   r1   r2   r  @#  r  z_distr6_gen._cdfNr  r1   r1   r1   r2   r  ;#  s    r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestSubclassingExplicitShapesc                 C   s$   t ddd}t|jdddd d S )Ndummyr/   r  r   r   r  r<  r  r   rb   rk   dummy_distrr1   r1   r2   test_correct_shapesG#  s   z1TestSubclassingExplicitShapes.test_correct_shapesc                 C   s,   t ddd}tt|jdfi tdd d S )Nr  Ar  r   r  )r  r  r  rb   r   r  r1   r1   r2   test_wrong_shapes_1K#  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   r`   r   r  )r  r   r  r  rb   )rk   r  r  r1   r1   r2   test_wrong_shapes_2O#  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  rk   r  r1   r1   r2   test_shapes_stringT#     z0TestSubclassingExplicitShapes.test_shapes_stringc                 C   r  )Nr  z(!)r  r   r  SyntaxErrorr  r  r1   r1   r2   test_shapes_identifiers_1Y#  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c                 C   r  )Nr  4chanr  r  r  r1   r1   r2   test_shapes_identifiers_2^#     z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c                 C   r  )Nr  zm(fti)r  r  r  r1   r1   r2   test_shapes_identifiers_3b#  r  z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c                 C   r  )Nr  za=2r  r  r  r1   r1   r2   "test_shapes_identifiers_nodefaultsf#  r  z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc                 C   r  )Nr  z*argsr  r  r  r1   r1   r2   test_shapes_argsj#  r  z.TestSubclassingExplicitShapes.test_shapes_argsc                 C   r  )Nr  z**kwargsr  r  r  r1   r1   r2   test_shapes_kwargsn#  r  z0TestSubclassingExplicitShapes.test_shapes_kwargsc                 C   r  )Nr  za, b, c, lambdar  r  r  r1   r1   r2   test_shapes_keywordsr#  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                   @   rj  )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc                 S      t j|| S rm   r6   r  r  r  r1   r1   r2   r  z#  r!  zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   	_dist_geny#  r  r  r/   r   rr   r`   r  r6   rB   r   rb   r  rk   r  r>   r1   r1   r2   test_shapes_signaturew#  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                   @   rj  )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc                 S   r  rm   r  r  r1   r1   r2   r  #  r!  zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  r  r  rr   r   r`   ri  )r6   rB   r  r  rb   r   r  r1   r1   r2   "test_shapes_signature_inconsistent#  s   
"z@TestSubclassingExplicitShapes.test_shapes_signature_inconsistentc                 C   sz   G dd dt j}|dd}t|jdddt jdd  t|ddt jdd  tt|jdfi tdd d S )	Nc                   @   rj  )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc                 W   s   |d }t j|| S Nr   r  )rk   rZ   r  extra_kwargr1   r1   r2   r  #  s   zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  r  r  rr   !   r  )xxx)r6   rB   r   rb   r  r  r  r   r  r1   r1   r2   test_star_args#  s
   
  z,TestSubclassingExplicitShapes.test_star_argsc                 C   sj   G dd dt j}|dd}t|jddddt jdd d  t|dddt jdd d  d S )	Nc                   @   rj  )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc                 W   s   |d }t j|| | S r  r  )rk   rZ   r  r  r  r1   r1   r2   r  #  s   zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  zoffset, extra_kwargr  rr   o   r  )r  r  r  r  r1   r1   r2   test_star_args_2#  s   
z.TestSubclassingExplicitShapes.test_star_args_2c                 C   s<   G dd dt j}|dd}t|jdddt jd d S )Nc                   @   rj  )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc                 _   s   | dd}tj|| S )Nr  r   )popr6   r  r  )rk   rZ   r  kwargsr  r1   r1   r2   r  #  r  zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  r  r  r   r   r  r  )rk   r  r>   r1   r1   r2   test_extra_kwarg#  s   
 z.TestSubclassingExplicitShapes.test_extra_kwargc                 C   s8   G dd dt j}|dd}t|dt jd d S )Nc                   @   rj  )zITestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_genc                 S   s   t j|S rm   )r6   r  rb   r  r1   r1   r2   r  #  r  zNTestSubclassingExplicitShapes.test_shapes_empty_string.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r   r  rr   r  r  r1   r1   r2   test_shapes_empty_string#  s   
z6TestSubclassingExplicitShapes.test_shapes_empty_stringN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1   r1   r1   r2   r  D#  s$    		r  c                   @   sl   e Zd Zdd Zdd Zejjedddd Z	ejjeddd	d
 Z
dd Zdd Zdd Zdd ZdS )TestSubclassingNoShapesc                 C   s"   t dd}t|jdddd d S )Nr  r  r   r  r<  r  r  r1   r1   r2   test_only__pdf#  s   
z&TestSubclassingNoShapes.test_only__pdfc                 C   s"   t dd}t|jdddd d S )Nr  r  r   r  )r  r   rb   r  r1   r1   r2   test_only__cdf#  s   
z&TestSubclassingNoShapes.test_only__cdfdocstring strippedr  c                 C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  r  r   r/   zlogpdf\(x, a, loc=0, scale=1\))	r  r   numargsr   refindallr  r   r   rk   r  r   r1   r1   r2   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  r`   r  z!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r	  r   r	  r	  r  r   r   r	  r1   r1   r2   test_signature_inspection_2args#  s   
z7TestSubclassingNoShapes.test_signature_inspection_2argsc                 C   s   t ttdd d S )Nr  r  )r  r  r  ro   r1   r1   r2   0test_signature_inspection_2args_incorrect_shapes#  r9   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  r1   r  r1   r1   r2   r  #  rK  zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r<  r  r1   r1   r1   r2   r  #  s    r  r  r  r6   rB   r  r  r   rk   r  r1   r1   r2   test_defaults_raise#     z+TestSubclassingNoShapes.test_defaults_raisec                 C   r
	  )Nc                   @   rj  )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc                 W   r   r  r1   )rk   rZ   r/   r  r1   r1   r2   r  #  rK  zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  r  r  r	  r	  r1   r1   r2   test_starargs_raise#  r	  z+TestSubclassingNoShapes.test_starargs_raisec                 C   r
	  )Nc                   @   rj  )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc                 [   r   r  r1   )rk   rZ   r/   r  r1   r1   r2   r  #  rK  zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfNr  r1   r1   r1   r2   r  #  r  r  r  r  r	  r	  r1   r1   r2   test_kwargs_raise#  r	  z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r 	  r	  r   r   r  DOCSTRINGS_STRIPPEDr	  r	  r		  r	  r	  r	  r1   r1   r1   r2   r  #  s    


	r  r	  c                  C   sT   g d} t jD ] }tt |}t|t jt jB r'| D ]}tt||j	d u  qqd S )N)z,\s*,z\(\s*,z^\s*:)
r6   rN   r  r,  rA   rB   r   r	  searchr  )badonesdistnamer>   regexr1   r1   r2   r  #  s   

r  c                   C   s4   t tjtjddd t tjtjddd d S )Nr[   r"  r   rh  rX   r   )r   r6   r  r   rc   r  r  r  r1   r1   r1   r2   test_infinite_input$  s   r	  c                  C   &   t jt jddd} t| d d S r  )r6   lomaxr   ri   r   r  r1   r1   r2   test_lomax_accuracy$  r  r	  c                  C   r	  r  )r6   r  r   ri   r   r  r1   r1   r2   test_truncexpon_accuracy$  r  r	  c                  C   s*   t jt jddd} t| ddd d S )Nr\  r   r  r'  r=  )r6   r  r  r   r   r  r1   r1   r2   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  alwaysrr   r   rw   N)rX  rY  rZ  r6   r^  ri   rb   r   r   rc   r  r   r   )rR  number_of_warnings_thrownr1   r1   r2    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  r`   r   r  r{   r   r:  r  r[   r  r   rK  r.  r"  )r6   r^  rD   r   r   rc   ru  )euler_gammarR  r1   r1   r2   test_genextreme_entropy&$  s   
 r 	  c                  C   s   d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d S )	Nr   r<  g'b%4gQ@r:  gؗҜ;r   g.l6?)r6   r^  r   r   r  )rZ   rJ   r  r1   r1   r2   test_genextreme_sf_isf=$  s   




r!	  c                  C   s"   d} t j| dd}t|d d S )Nrb  r`   r   gH&8>)r6   r  r   r   )probr|  r1   r1   r2   test_burr12_ppf_small_argi$  s   	r#	  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

    r1   r   c                 S   s   t | |||dddS )Nr  )r  dispxtolftol)r%   )r   x0r  r$	  r1   r1   r2   r  $  s   z&test_invweibull_fit.<locals>.optimizer)r   r  r`   rD  r  r   rs  r   r   rh  r[   r<  @   c   )r   r  g`?r	  r{   g [@N)r1   r   )rc   r   r6   r  r   r   )r  rZ   r|  r^   r_   r1   r1   r2   test_invweibull_fitw$  s   
r*	  ))r   r  g7Ըh?)r   r  gz]r>)r   g     "@goBڱ9)r  r  g$=cC;c                 C       t j| |}t||dd d S ry   )r6   r  r   r   )rZ   r|  rT   r  r1   r1   r2   test_invweibull_sf$  s   r,	  zp, c, expected)rr   rD  g9?)geK<r   g@c                 C   r+	  ry   )r6   r  r  r   )rW  r|  rT   r  r1   r1   r2   test_invweibull_isf$  s   r-	  z	df1,df2,x)r   r  r:  r  r   r"  r  r  rG  c                 C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   r  r{   r7  )r6   r  ri   r  r   rb   )df1df2rZ   r  expected_cdfcalculated_cdfr~   calculated_pdfr1   r1   r2   test_ncf_edge_case$  s   
r3	  c                  C   s"   t jddd} t| ddd d S )Nr`   r  r   g     `E@r  r{   )r6   r  r  r   )rR  r1   r1   r2   test_ncf_variance$     r4	  c                  C   s.   t jdddd} d}t|tj| dd d S )Nr  r  r  gffffff>@g&4I,)?)decimals)r6   r  ri   r   rc   round)	scipy_val	check_valr1   r1   r2   test_ncf_cdf_spotcheck$  s   r:	  c                     sN   t ddd} d| d< d tjj| g R  } fdd| D }t|| d S )Nr   r   r  rb  )rX   r`   r   r   r   c                    s    g | ]}t jj|g R  qS r1   )r6   r  r   )r=   xiparr1   r2   r?   $  s     z,test_ncf_ppf_issue_17026.<locals>.<listcomp>)rc   r?  r6   r  r   r   )rZ   r_  q0r1   r<	  r2   test_ncf_ppf_issue_17026$  s   r?	  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestHistogramc                 C   s\   t jd t jg ddd}t|| _tjjddddd	}t j|d
d}t|| _	d S )Nr   )r   r`   r`   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  rh  rh  r\  rh  binsr:  rD  r*  {   r  r%  )
rc   r   r   	histogramr6   rC   templater  r   norm_template)rk   rD	  r   norm_histogramr1   r1   r2   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rw   rr   r:  r  rv   rD  r  r  r  r  r;        @r  r  r/  r[  r        !@r  r  )rw   rw   r4  r4  {Gz?rK	  Q?rL	  {Gz?rM	  r  r  rM	  rM	  rL	  rL	  rL	  rL	  rw   rw   r  rL	  rJ	  r  rw   r  r   r`   r[   r:  rD  r]   rX   r{   )rc   r   r   r   rE	  rb   r   r?  rF	  r6   r  )rk   r4  
pdf_valuesrZ   r1   r1   r2   r9  $  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 )NrH	  )rw   rw   rw   ri  r4  rK	  rL	  
ףp=
?Q?{Gz?r  rr   r  (\?RQ?=
ףp=?)\(?r  r:  r:  r`   r   r:  r  r\   rw   r   r[   rD  r]   rX   r{   )rc   r   r   r   rE	  ri   r   r?  rF	  r6   r  )rk   r4  
cdf_valuesrZ   r1   r1   r2   r~  %  s   "
zTestHistogram.test_cdf_ppfc                 C   s   d}| j j|dd}tt|dk d tt|dkd| dd	 tt|d
kd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|d kd!| dd	 tt|d"kd#| dd	 tt|d$kd%| dd	 tt|d&kd| dd	 tt|d&kd| dd	 tt|d&kd d S )'Nr*  rC	  r   r:  rw   rv   r4  r  r{   rD  rK	  r  rL	  rX   r  rO	  r  rP	  r  rQ	  r;  r  r  rI	  rr   r  r  r  rR	  r/  rS	  r[  rT	  r  rU	  rJ	  r  r  )rE	  r   r   rc   rO  r   )rk   r  r3  r1   r1   r2   r2  "%  s(   zTestHistogram.test_rvsc                 C   s6   t dD ]}t| j|tdd|dd qd S )Nr   r:  rD  r  r{   )rM  r   rF	  r  r6   r  rJ  r`  r1   r1   r2   r  8%  s
   zTestHistogram.test_munpc                 C   s$   t | j tjjddddd d S )Nr:  rD  r]   r  r{   )r   rF	  rD   r6   r  ro   r1   r1   r2   rS  =%  s   

zTestHistogram.test_entropyN)	r   r   r   r   r9  r~  r2  r  rS  r1   r1   r1   r2   r@	  $  s    r@	  c                  C   s   ddgg d} }t j| |fdd}tj|ddgddg | dks(J t j| |fdd}tj|ddgd	 | d
ksEJ d}tjt	|d t | |f}| d
ks^J W d    n1 shw   Y  t | g df}| dks~J d S )Nr   )r   r   r)  F)r  rr   r  r  Tg'^P?g     H@z(Bin widths are not constant. Assuming...r   rh  )
r6   rC   rc   r  r   rb   r  r   r  r[  )countsrB	  r>   r  r1   r1   r2   test_histogram_non_uniformB%  s   rX	  c                   @   s6   e Zd Zdd Zejdddgdd Zdd	 Zd
S )TestLogUniformc                 C   s   t jd}tdd}|jd|d}t jd}tdd}|jd|d}t|| t jt 	|dd\}}d|
   krK|   krKd	ksNJ  J t t |d
 dks\J d S )N   0o[ r  r   r*  r   r[   rA	  r  iL  r   )rc   r   r   r6   
loguniformr   
reciprocalr   rD	  log10r$  r  r   r  )rk   r   r%  r   rv2r   r0  r   r1   r1   r2   
test_aliasZ%  s   
. zTestLogUniform.test_aliasr  r  r  c                 C   sn   t jd}tjjddd|d}tjj||d\}}}}|dks"J tjj|d|d\}}}}|dks5J d S )	NrZ	  rX   r   r   r   r  r`   r  )rc   r   r   r6   r[	  r   r   )rk   r  r   r   r/   r0   r^   r_   r1   r1   r2   test_fit_overridek%  s   z TestLogUniform.test_fit_overridec           
      C   s   t jd}d\}}t||}|jdddd}t|||| |j	dd}t|||| dt 
dd	 }||}t|d d
 |dd   d || t |t |  }	t| |	 d S )Nl   eVi
P )gN~hr  r   r   r   r#  r  i8r  r   r[   )rc   r   r   r6   r[	  r'  r   ri   r   r   r   rb   ru  r   )
rk   r   r/   r0   r>   ri   r   rZ   rb   r   r1   r1   r2   test_overflowx%  s   
zTestLogUniform.test_overflowN)	r   r   r   r_	  r   r   r   r`	  ra	  r1   r1   r1   r2   rY	  Y%  s
    
rY	  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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%  rd  E  r   r   r=  )r6   argusr   r   r   r  r1   r1   r2   test_argus_rvs_large_chi%  s    z"TestArgus.test_argus_rvs_large_chizchi, random_staterX   rc	  rS     r     c                 C   s6   t jj|d|d}t |d|f\}}t|dk d S )Nrd  r   rd	  r  r6   rd	  r   r  r   )rk   r  r   rZ   r   rW  r1   r1   r2   r2  %  s   zTestArgus.test_rvsr  r  r7  c                 C   s6   t jj|ddd}t |dd \}}t|dk d S )Nrd  ie r   c                 S   s   dd| d  d  S )Nr   r`   r  r1   r   r1   r1   r2   rK   %  r@   z.TestArgus.test_rvs_small_chi.<locals>.<lambda>r  rh	  )rk   r  rf  r   rW  r1   r1   r2   test_rvs_small_chi%  s   zTestArgus.test_rvs_small_chizchi, expected_mean))r   g щi?)r[   g.憃?)r>  g\paP?)r?  g	?)r)	  g,6?c                 C   s"   t jj|dd}t||dd d S )Nr   r  r   r{   )r6   rd	  r   r   )rk   r  expected_meanr  r1   r1   r2   r  %  r5	  zTestArgus.test_meanzchi, expected_var, rtol))r   gLH'B?r   )r[   go$?rY  )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  r{   )r6   rd	  r  r   )rk   r  expected_varr|   rR  r1   r1   r2   rF  %  r5	  zTestArgus.test_varzchi, expected, rtol))r   gwM?r  )rr   gj?r  )rX   gHEA`!?r  )rt   gcف>rz   )r  gF=r  )r  g߹Q#B=r  )r7  g0ޟ<r  )r  g*W%:rz   c                 C   s   t t|||d d S rr  )r   r#   )rk   r  rT   r|   r1   r1   r2   test_argus_phi_small_chi%  s   
z"TestArgus.test_argus_phi_small_chizchi, expected))rr   )g-\/?g+p7c?g5Ϧ\?)r  )g
f?gi{?ٸ?gZ@7?)rX   )gB	?g]?gR{?)rt   )glͅw?g,?g[Z=?)r  )gz,?g]?gѪ1?)r  )g8<?gE-?gI?)r7  )g~7?g7B.?g9?)r  )g;?g9B.?g}5?c                 C   *   t g d}ttj|||dd d S )NrX   rr   r   r   r{   )rc   r   r   r6   rd	  rb   rk   r  rT   rZ   r1   r1   r2   test_pdf_small_chi%     zTestArgus.test_pdf_small_chi))rr   )gQ߹?e?grJ,?g򺗄?)r  )gΎd?g?gh?)rX   )g|
o?gvb?g+@?)rt   )g̈́On?ge?gC|[3?)r  )g!?m?g{jiH?gu53?)r  )g~m?g0-.?g3?)r7  )g~m?g7;B.?gŗ3?)r  )g~m?g9B.?gŗ3?c                 C   rm	  )Nrn	  r  r{   )rc   r   r   r6   rd	  r   ro	  r1   r1   r2   test_sf_small_chi%  rq	  zTestArgus.test_sf_small_chizx, chi, expected))P?rN  g;=)rs	  r  g[$7>)r  rD  g=~L]=)r  r  gD,G
'=c                 C   rx   r  )r6   rd	  r   r   )rk   rZ   r  rT   r   r1   r1   r2   test_sf_near_1%  r[  zTestArgus.test_sf_near_1))rr   )g+&?gk?gμm/?)r  )g?CL\f?g^N?g]AͭR?)rX   )ga>$?g;Lf?gaW?)rt   )gx?g 43n?gwY?)r  )go7🤎?g
+-oGn?gIQ9Y?)r  )gT?gGn?g@̋Y?)r7  )gU?g{Gn?giG͋Y?)r  )gDU?g {Gn?gH͋Y?c                 C   rm	  )Nrn	  r  r{   )rc   r   r   r6   rd	  ri   ro	  r1   r1   r2   test_cdf_small_chi%  rq	  zTestArgus.test_cdf_small_chi))rr   )gQ)?g6{?r  )gB`"۹?)g?g8%?rY  )rX   )g388?gV%?r   )rt   )g*j?gRS%?r   )r  )g!|?gZ%?r   )r  )gy[|?gG%?r   )r7  )g"3|?gW%?r   )r  )g!3|?gW%?r   c                 C   s"   t jj |dd}t|||d d S )NrS  rz  r{   )r6   rd	  r   )rk   r  rT   r|   r1  r1   r1   r2   test_stats_small_chi&  r  zTestArgus.test_stats_small_chiN)r   r   r   re	  r   r   r   r2  ri	  r  rF  rl	  rp	  rr	  rt	  ru	  rv	  r1   r1   r1   r2   rb	  %  s^    

	


	



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


rb	  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dd Zdd Zej	dg ddd Zejjddej	dg dej	dg dej	dg ddd Zej	dg dej	dg dd d! Zd"S )#TestNakagamic                 C   s$   d}d}t j||}t|d d S )NrD  rF  gM+)r6   nakagamir   r   )rk   r  rZ   r  r1   r1   r2   r  &  s   zTestNakagami.test_logpdfc                 C   sD   d}d}t j||}t|ddd t j||}t||dd d S )NrD  r;  g"S+:r   r{   )r6   rx	  r   r   r  )rk   r  r'	  r   r  r1   r1   r2   r  &&  s   zTestNakagami.test_sf_isfc                 C   r  )Nrh  rr   gUiּr  r{   )r6   rx	  r  r   )rk   rZ   r  rd  r  r1   r1   r2   r  9&  r  zTestNakagami.test_logcdfc                 C   r  )Nr  r<  gD&`Ur  r{   )r6   rx	  r  r   )rk   rZ   r  rd  r  r1   r1   r2   r  A&  r  zTestNakagami.test_logsfzm, ref))r   g|Bd븿)rr   r  )r[   g/ۿc                 C   r  )Ng^~z=r{   r   r6   rx	  rD   rk   r  rd  r1   r1   r2   rS  I&  rU  zTestNakagami.test_entropy))r  g}Ô%I)r  gq_)g    ScAgB4U)g    cAgu1U)r  gb>%)r  gWҙ\c                 C   s   t tj|| d S rm   ry	  rz	  r1   r1   r2   test_extreme_nu[&  s   zTestNakagami.test_extreme_nuc                 C   s0   t tjdsJ t tjdsJ d S )Nr  r  )rc   r  r6   rx	  _entropyro   r1   r1   r2   test_entropy_overflowb&  s   z"TestNakagami.test_entropy_overflowznu, ref))r  g2H?)r  g:U?)r  g>c                 C   r  r  )r   r6   rx	  r   )rk   r  rd  r1   r1   r2   r  f&  s   
zTestNakagami.test_meanz+Fit of nakagami not reliable, see gh-10908.r  r  )r;  rD  rt  r^   )ru   r[   r+  r_   )rl  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 )Nr\   9  r   r  r^   r_   r   r  r{   c                    s<   d|  d t d |   d|  |d  t  |   S )Nr   r   r`   rc   rO  r  r^   r_   )r8  r1   r2   	dlogl_dnu&  s   z(TestNakagami.test_fit.<locals>.dlogl_dnuc                    sN    dt |  td|   dt t | |   t | | d  S )Nr   r   r`   )rc   ru  r   rO  r	  r  r8  r1   r2   
dlogl_dloc&  s
   z)TestNakagami.test_fit.<locals>.dlogl_dlocc                    s2   d  |  | d|  |d  t | d   S )Nr   r`   r   r	  r	  r	  r1   r2   dlogl_dscale&  s    z+TestNakagami.test_fit.<locals>.dlogl_dscaler   r  r   )r6   rx	  r   r   r   )
rk   r  r^   r_   nu_estloc_est	scale_estr	  r	  r	  r1   r	  r2   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 )	Nrr   r\   r~	  r	  r  r`   r  r{   )	r6   rx	  r   r   rc   r$  rT  r   r   )rk   r^   r_   r  rV  r8  r	  r	  r	  loc_theo
scale_theor1   r1   r2   test_fit_nu&  s   
zTestNakagami.test_fit_nuN)r   r   r   r  r  r  r  r   r   r   rS  r{	  r}	  r  r!  r  r	  r1   r1   r1   r2   rw	  &  s4    


rw	  c                   @   rq  )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?rN  rr   r   r:  r  rJ  c                 S   s   g | ]\}}t j||qS r1   )r6   
wrapcauchyri   )r=   r  r	  r1   r1   r2   r?   &  s    z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>r   r{   )	rc   r   r6   r	  ri   r*  nditerr   r  )rk   r|  rZ   rW  scalar_valuesr1   r1   r2   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	  rr   r  r{   )r6   r	  ri   rc   rd   r   rn  r1   r1   r2   test_cdf_center&  r  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   r`   )r6   r	  ri   r   rc   arctantanrd   )rk   r  r  r|  rW  crr1   r1   r2   rB  &  s   (6zTestWrapCauchy.test_cdfN)r   r   r   r	  r	  rB  r1   r1   r1   r2   r	  &  s    r	  c                  C   sV   G dd dt j} | dd}ttdd |  W d    d S 1 s$w   Y  d S )Nc                   @   rj  )z/test_rvs_no_size_error.<locals>.rvs_no_size_genc                 S   r   r   r1   ro   r1   r1   r2   _rvs&  rK  z4test_rvs_no_size_error.<locals>.rvs_no_size_gen._rvsN)r   r   r   r	  r1   r1   r1   r2   rvs_no_size_gen&  r  r	  rvs_no_sizer  z_rvs\(\) got (an|\d) unexpectedr   )r6   rB   r  r  r   )r	  r	  r1   r1   r2   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  r6   r,  rB   r   rs  r   rc   r  )r	  r  r>   a0b0r  r  a1b1r/   r0   r1   r1   r2   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   )	r6   r  rs  rc   r   r  r  r   r*  )r	  r	  ex_a0ex_b0r	  r	  ex_a1ex_b1r  r  ex_a2ex_b2r1   r1   r2   ,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 )	Nrw   r:  rv   r  r  r  r;   r~  )r   r6   r  r  rc   r  r*  r]   r1   r1   r2   *test_stats_broadcasting_gh14953_regression'  s   &

r	  )gn!	g:I"<)gQ	@gE?c                 C   s*   t tj| | t tj|  | d S rm   )r   r6   cosineri   r   )rZ   rT   r1   r1   r2   test_cosine_cdf_sf'  s   r	  ))r7  gkM6O)rM  g0ӭ!	)r  g;'u(@c                 C   s*   t tj| | t tj| |  d S rm   )r   r6   r	  r   r  )rW  rT   r1   r1   r2   test_cosine_ppf_isf'  s   r	  c                  C   s$   t jtj tjg} t| d d S )NgrB)r6   r	  r   rc   rd   r
   )r  r1   r1   r2   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 r1   )r,  rG   r=   r  r   r1   r1   r2   	<setcomp>,'  s    
z*test_distr_params_lists.<locals>.<setcomp>c                 S      h | ]\}}|qS r1   r1   r	  r1   r1   r2   r	  .'  r@   c                 S   r	  r1   r1   r	  r1   r1   r2   r	  1'  r@   c                 S   r	  r1   r1   r	  r1   r1   r2   r	  2'  r@   )r    r!   r   r   )discrete_distnamesinvdiscrete_distnamescont_distnamesinvcont_distnamesr1   r1   r2   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   rW   r  r   )r  r/   r  )r6   rq  _statsrJ  r  r1   r1   r1   r2   test_moment_order_46'  s   r	  c                   @   s   e Zd Zejdd Zejdg ddd Zejdg dd	d
 Z	ejj
ejdejddejjdejddejj
dejddejj
dgdd ZdS )TestRelativisticBWc                 C   rs  )a&  Sample data points for pdf computed with CERN's ROOT

        See - https://root.cern/

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

        pdf calculated for Z0 Boson, W Boson, and Higgs Boson for
        x in `np.linspace(0, 200, 401)`.
        z-data/rel_breitwigner_pdf_sample_data_ROOT.npyzx,pdf,rho,gammard  ru  r  r1   r1   r2   ROOT_pdf_sample_dataK'  s   z'TestRelativisticBW.ROOT_pdf_sample_datazrho,gamma,rtol))qVEB@gj+@r  )FC@Gz @r  )ND@_LU?r  c                 C   sN   ||d |k|d |k@  }|d |d }}t |tjj|||d|d d S )Nrhor|  rZ   rb   r  r{   )r   r6   rel_breitwignerrb   )rk   r	  r	  r|  r|   r   rZ   rb   r1   r1   r2   test_pdf_against_ROOT^'  s   


z(TestRelativisticBW.test_pdf_against_ROOTzrho, Gamma, rtol))r	  r	  r  )r	  r	  r  )r	  r	  g&.>c           	      C   s\   dd }t ddd}tjj|||d}tjj|||d}|||| |}t|||d d S )Nc                 S   sx   t |d |d |d   }dt d | | | t jt |d |   }|| d |d  d |d |d    S rU  )rc   rT  rd   )Erl  Gammar|  rW   r1   r1   r2   rb   w'  s
   (zFTestRelativisticBW.test_pdf_against_simple_implementation.<locals>.pdfr  rk  r[   r  r{   )rc   r?  r6   r	  r   rb   r   )	rk   r	  r	  r|   rb   rW  rZ   r   rd  r1   r1   r2   &test_pdf_against_simple_implementationo'  s   z9TestRelativisticBW.test_pdf_against_simple_implementationz	rho,gammar	  r	  r{  r	  r	  r	  r	  c                 C   s   d}t j|}tjj||d|d}tjj|dd}t|d |d f||fdd |d	 dks1J tjj|d|d
}t|d |dd |d	 |d fd|fksQJ dS )zpTests fit for cases where floc is set.

        `rel_breitwigner` has special handling for these cases.
        l   s;
rl# r   )r_   r   r   r   r   r`   r  r{   r   r  rt   N)rc   r   r   r6   r	  r   r   r   )rk   r	  r|  r   r   r   r   r1   r1   r2   test_fit_floc'  s    z TestRelativisticBW.test_fit_flocN)r   r   r   r   r  r	  r   r   r	  r	  r   r  r   r	  r1   r1   r1   r2   r	  J'  s0    






r	  c                   @   r  )TestJohnsonSUrL  )r  r  ri  r  g={?g?5mV>gn?g\}\1@)g`fo@g$ں_@r   r   gvUgN<fj?gwCg~l
@c                 C   s4   t jj |d d ddi}t||dd  dd d S )Nr   r{  ry  r  r{   )r6   r  r   )rk   rL  r   r1   r1   r2   test_moment_gh18071'  s   z!TestJohnsonSU.test_moment_gh18071N)r   r   r   r   r   r   r	  r1   r1   r1   r2   r	  '  s    r	  c                   @   sd   e Zd Zdd Zejdddgejdddgejdddgejdddgd	d
 ZdS )TestTruncParetoc                 C   sT   d\}}t dd}t|||}t||t|| }t|| d S )N)?333333@r	  r	  )rc   r?  r6   truncparetorb   r  ri   r   )rk   r0   r|  rZ   r   rd  r1   r1   r2   r9  '  s
    zTestTruncPareto.test_pdfr   TFr  r  r  c                 C   s   t jd}d\}}}}	tj||||	d}
|
jd|d}i }|r$||d< |r*|	|d< |r0||d< |r6||d	< |rd|rd|rd|rdd
}tjt|d tjj	|fi | W d    d S 1 s]w   Y  d S t
tj|fi | d S )Nl   Z#Lm )r	  r	  r   rD  r]   rd  r   r   r   r   r   r   r   )rc   r   r   r6   r	  r   r   r   r   r   r   )rk   r   r  r  r  r   r0   r|  r^   r_   r>   r   r   r  r1   r1   r2   r  '  s&   "zTestTruncPareto.test_fitN)r   r   r   r9  r   r   r   r  r1   r1   r1   r2   r	  '  s    r	  c                   @   rj  )
TestKappa3c                 C   s.   dt jdd }t jdd}t|| d S )Nr   rr   g     j@)r6   kappa3ri   r   r   )rk   sf0r  r1   r1   r2   r  '  s   zTestKappa3.test_sfN)r   r   r   r  r1   r1   r1   r2   r	  '  r  r	  c                   @   st   e Zd ZeddZedZe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 )TestIrwinHallr   r   r[   c                 C   s   t | jdd d S )Nry  )r   g?r   gQ)r   ih10r6   ro   r1   r1   r2   test_stats_ih10'  s   zTestIrwinHall.test_stats_ih10c                    sJ   g d} fddt t|D }t||  jd}d}t|| d S )N)	r   gUUUUU9@g     0a@i  gx@gn۶mˠ@g    :PAg8)Ag   SAc                    s   g | ]
} j |d  qS r  )r	  rJ  )r=   rV  ro   r1   r2   r?   '  r+  z3TestIrwinHall.test_moments_ih10.<locals>.<listcomp>r%  g2⍚H)rM  r   r   r	  rJ  )rk   r0  r{  m50	m50_exactr1   ro   r2   test_moments_ih10'  s   
zTestIrwinHall.test_moments_ih10c                 C   8   t ddd}| j|}| j|}t||dd d S Nr   r   r\   r[   maxulp)rc   r?  unifrb   ih1r   )rk   ptspdf_unifpdf_ih1r1   r1   r2   test_pdf_ih1_unif'  s   zTestIrwinHall.test_pdf_ih1_unifc                 C   sn   t d}d}tdd|}tdd|}d||d d d   ||d d d < ||}t||dd d S )Nr`   rY   r   r   r[   r	  )r6   r  rc   r?  rb   r   )rk   ih2nptsr	  rT   pdf_ih2r1   r1   r2   test_pdf_ih2_triangle	(  s   
(
z#TestIrwinHall.test_pdf_ih2_trianglec                 C   r	  r	  )rc   r?  r	  ri   r	  r   )rk   r	  cdf_unifcdf_ih1r1   r1   r2   test_cdf_ih1_unif(  s   zTestIrwinHall.test_cdf_ih1_unifc                 C   sF   t dd}t|}||d }t dt|}t||dd d S )Nr   r[   r`   rr   r	  )rc   r   r6   r  ri   r  r   r   )rk   rV  ihih_cdfexactr1   r1   r2   rB  (  s
   
zTestIrwinHall.test_cdfc                 C   sX   g d}t | jtd|dd t | jdddd d}t | jd|dd d S )	N)r   g\xO~>g-P2?g8ʝi?gg{Ȇ?rr   g&M?g׈Y?gB?gDl?r   r"  r[   r	  rX   g+|<r:  g#@)r   r	  ri   rc   r   r  r1   r1   r2   test_cdf_ih10_exact$(  s
   z!TestIrwinHall.test_cdf_ih10_exactc                 C   s@   g d}|dg|d d d  7 }t | jtd|dd d S )N)r   g4V>gP3NV?g*8f?gNgX?gjS?r   r"  r[   r	  )r   r	  rb   rc   r   r  r1   r1   r2   test_pdf_ih10_exact4(  s    z!TestIrwinHall.test_pdf_ih10_exactc                 C   sH   t | jtdd| jtd  d}t| jd|dd d S )Nr"  r   r:  rX   r[   r	  )r   r	  r   rc   r   ri   r   )rk   rd  r1   r1   r2   test_sf_ih10_exact;(  s   *z TestIrwinHall.test_sf_ih10_exactN)r   r   r   r6   r'  r	  r  r	  r	  r	  r	  r	  r	  r	  rB  r	  r	  r	  r1   r1   r1   r2   r	  '  s    


	r	  c                   @   rj  )TestDParetoLognormc                 C   sJ   d\}}}}}t ||||}tj||d tj||d d S )N)r  r   rF  r  r`   g6Z?g@#
?)r6   dpareto_lognormrc   r  r   rb   ri   )rk   rZ   r  rJ   r/   r0   r>   r1   r1   r2   test_against_RE(  s   z!TestDParetoLognorm.test_against_RN)r   r   r   r	  r1   r1   r1   r2   r	  D(  r  r	  rL  ))r	  NNNN)r  NNNN)r  NNNN)r	  NNNN)r  NNNNc                 C   s   | \}}}}}t d}|pd}|pd}|pd}|pd}tt|}tt| }|| }	t ||}
|	|	|
}t	||
||d dt ||d }
|	|	|
}t	||
||d d S )	Nrr   iir   r  r/  r   r  )
rc   r]	  r  r6   r   r   rz  r   r  r   )rL  r	  lp1lp2r   r|   lpmr>   r  dist_frozenrd  r   r1   r1   r2   test_sf_isf_overridesY(  s   	

r	  rm   )NF(  r  rX  r	  r  r@  pathlibr   rf  rm  r  numpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r  numpyrc   r   r   numpy.lib.recfunctionsr   r5   r   scipy._lib._utilr   r  r   r   r   r   scipy.statsr6   !scipy.stats._distn_infrastructurer   scipy.stats._constantsr   scipy.stats.distributionsscipy.specialr   r   r   scipy.stats._distr_paramsr   r   test_discrete_basicr    r!   scipy.stats._continuous_distnsr"   r#   scipy.optimizer$   r%   r&   	itertoolsr'   flagsoptimizer	  r  r   r	  r3   r8   rU   rV   r   r  r   r   r  r  rD  rk  rr  rw  r  r  r  r  r  r*  r`  re  r  r  r  r  r  r  r  r  r  r  r  r  r`  rj  r  r  r  r  r  r  r  r  rG  rW  rg  rp  r  r  r  r  r  r  r  r  r  r  r  r  r2  r[  r`  rT  rd   r  ro  r  r  r  r  r  r  r  r  r  r  r"  r?  rM  rN  rX  r^  rd  rh  r  r  r	  r
  r4  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r-  rp  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB   r  r  r  r  r  r  r  r	  r	  r	  r	  r	  r 	  r!	  r#	  r*	  r,	  r-	  r3	  r4	  r:	  r?	  r@	  rX	  rY	  rb	  rw	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r1   r1   r1   r2   <module>   s   4 K"
J	
R? HH K FJ*:D"L#  @ $kX(% wX?* $ y:W<3G+s %-6		$ "v22: C *zSE      `
 q i ;`%E>x  #k"U5 GAG	
&
	(





	x;	,
"


a6  

Z&
`