???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d
                     @   sj  d ddddddddd	d
ddddddgZ ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ G dd deZdcddZdd Zdd  Zd!d" Zd#d$ Zd%d& Z d'd( Z!ddd*d+Z"d,d Z#d-d Z$d.d Z%d/d Z&d0d Z'd1d	 Z(d2d Z)ded4dZ*d5d
 Z+d6d Z,d7d8d9d:dZ-dfd;d<Z.dgd=dZ/dhd>dZ0did?dZ1djd@dZ2dAdB Z3G dCd  d Z4zddDl5m3Z3 W n e6k
r   Y nX e7dEkrfddFlm8Z8 ddGlm9Z9m:Z:m;Z;m<Z< ddHlm=Z= ddl>Z>e4dIdJZ?e4dKdLZ@dMZAe?BeAZCe@BeAZDe9e:fD ]<ZEeFdNeEj7 dO eFeEe?e@ eFe4GeHeEeCeD qNdPZIe9e:e;e<fD ]@ZEeFdNeEj7 dQ eFeEe?eI eFe4GeHeEeCe=eI qdRZIe9e:e;fD ]@ZEeFdSeEj7 dT eFeEeIe? eFe4GeHeEe=eIeC qdUdV ZJe4dWdXZKe4dYdZZLd[ZMdMZAe4Gd\d] eKBeAD ZNeJeKeM eN e4Gd^d] eKBeAD ZNeJeKeM eN e4Gd_d] eKBeAD ZNeJeKeM eN e4Gd`d] eKBeAD ZNeJeKeM eN e4Gdad] eOeKBeAeLBeAD ZNeJeKeL eN e4Gdbd] eOeKBeAeLBeAD ZNeJeKeL eN eFe>P  dS )k
NormalDistStatisticsErrorfmeangeometric_meanharmonic_meanmeanmedianmedian_groupedmedian_high
median_lowmode	multimodepstdev	pvariance	quantilesstdevvariance    NFraction)Decimal)groupby)bisect_leftbisect_right)hypotsqrtfabsexperftaulogfsum)
itemgetter)Counterc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r&   r&   "/usr/lib64/python3.8/statistics.pyr   u   s   c                 C   s   d}t |\}}||i}|j}ttt|}t| tD ]@\}}	t||}tt |	D ]"\}}|d7 }||d| ||< qRq6d |kr|d  }
ntdd t|	 D }
||
|fS )Nr      c                 s   s   | ]\}}t ||V  qd S Nr   ).0dnr&   r&   r'   	<genexpr>   s     z_sum.<locals>.<genexpr>)
_exact_ratioget_coerceinttyper   mapsumsorteditems)datastartcountr,   r+   ZpartialsZpartials_getTtypvaluestotalr&   r&   r'   _sum{   s    $
r>   c                 C   s.   z
|   W S  tk
r(   t|  Y S X d S r)   )Z	is_finiteAttributeErrormathZisfinite)xr&   r&   r'   	_isfinite   s    
rB   c                 C   s   | |kr| S |t ks|tkr | S | t kr,|S t|| r:|S t| |rH| S t| t rV|S t|t rd| S t| tr|t|tr||S t| trt|tr| S d}t|| j|jf d S )Nz"don't know how to coerce %s and %s)r1   bool
issubclassr   float	TypeErrorr#   )r:   Smsgr&   r&   r'   r0      s(       
 
 
 
 r0   c                 C   s   zrt | tkst | tkr$|  W S z| j| jfW W S  tk
rn   z|  W  Y W S  tk
rh   Y nX Y nX W n  ttfk
r   | d f Y S X d}t	|
t | jd S )Nz0can't convert type '{}' to numerator/denominator)r2   rE   r   as_integer_ratio	numeratordenominatorr?   OverflowError
ValueErrorrF   formatr#   )rA   rH   r&   r&   r'   r.      s    
r.   c                 C   sp   t | |kr| S t|tr(| jdkr(t}z
|| W S  tk
rj   t|trd|| j|| j  Y S  Y nX d S )Nr(   )r2   rD   r1   rK   rE   rF   r   rJ   )valuer:   r&   r&   r'   _convert   s    

rP   c                 C   s.   t | |}|t| kr&| | |kr&|S td S r)   )r   lenrM   )arA   ir&   r&   r'   
_find_lteq  s    
rT   c                 C   s>   t | ||d}|t| d kr6| |d  |kr6|d S td S )N)lor(   )r   rQ   rM   )rR   lrA   rS   r&   r&   r'   
_find_rteq  s     rW   negative valuec                 c   s$   | D ]}|dk rt ||V  qd S )Nr   )r   )r<   errmsgrA   r&   r&   r'   	_fail_neg  s    rZ   c                 C   sH   t | | krt| } t| }|dk r,tdt| \}}}t|| |S )Nr(   z%mean requires at least one data point)iterlistrQ   r   r>   rP   )r7   r,   r:   r=   r9   r&   r&   r'   r   '  s    c                    st   zt |  W n0 tk
r<   d  fdd}t|| }Y n
X t| }z
|  W S  tk
rn   tdd Y nX d S )Nr   c                 3   s    t | ddD ]\ }|V  qd S )Nr(   )r8   )	enumerate)iterablerA   r,   r&   r'   r9   O  s    zfmean.<locals>.countz&fmean requires at least one data point)rQ   rF   r    ZeroDivisionErrorr   )r7   r9   r=   r&   r_   r'   r   A  s    	
c                 C   s8   zt ttt| W S  tk
r2   tdd Y nX d S )NzHgeometric mean requires a non-empty dataset  containing positive numbers)r   r   r3   r   rM   r   )r7   r&   r&   r'   r   \  s    c                 C   s   t | | krt| } d}t| }|dk r2tdn<|dkrn| d }t|tjtfrf|dk rbt||S tdz"t	dd t
| |D \}}}W n tk
r   Y dS X t|| |S )Nz.harmonic mean does not support negative valuesr(   z.harmonic_mean requires at least one data pointr   zunsupported typec                 s   s   | ]}d | V  qdS )r(   Nr&   r*   rA   r&   r&   r'   r-     s     z harmonic_mean.<locals>.<genexpr>)r[   r\   rQ   r   
isinstancenumbersZRealr   rF   r>   rZ   r`   rP   )r7   rY   r,   rA   r:   r=   r9   r&   r&   r'   r   o  s$    
"c                 C   s\   t | } t| }|dkr td|d dkr8| |d  S |d }| |d  | |  d S d S Nr   no median for empty data   r(   r5   rQ   r   )r7   r,   rS   r&   r&   r'   r     s    c                 C   sL   t | } t| }|dkr td|d dkr8| |d  S | |d d  S d S rd   rg   r7   r,   r&   r&   r'   r
     s    c                 C   s,   t | } t| }|dkr td| |d  S )Nr   re   rf   rg   rh   r&   r&   r'   r	     s
    r(   c           
      C   s   t | } t| }|dkr"tdn|dkr2| d S | |d  }||fD ]}t|ttfrFtd| qFz||d  }W n( tk
r   t|t|d  }Y nX t| |}t	| ||}|}|| d }	|||d |  |	  S )Nr   re   r(   rf   zexpected number but got %r)
r5   rQ   r   rb   strbytesrF   rE   rT   rW   )
r7   Zintervalr,   rA   objLl1l2Zcffr&   r&   r'   r     s&    

c                 C   sH   t | } t| d}z|d d W S  tk
rB   tdd Y nX d S )Nr(   r   zno mode for empty data)r[   r"   most_common
IndexErrorr   )r7   Zpairsr&   r&   r'   r     s    c                 C   s@   t t|  }tt|tdddg f\}}tttd|S )Nr(   )keyr   )r"   r[   rp   nextr   r!   r\   r3   )r7   ZcountsZmaxcountZ
mode_itemsr&   r&   r'   r   5  s       	exclusive)r,   methodc          
      C   sL  |dk rt dt| } t| }|dk r0t d|dkr|d }g }td|D ]N}|| | }|| ||  }| | ||  | |d  |  | }	||	 qN|S |dkr:|d }g }td|D ]r}|| | }|dk rdn||d kr|d n|}|| ||  }| |d  ||  | | |  | }	||	 q|S td|d S )Nr(   zn must be at least 1rf   z"must have at least two data pointsZ	inclusiveru   zUnknown method: )r   r5   rQ   rangeappendrM   )
r7   r,   rv   ZldmresultrS   jZdeltaZinterpolatedr&   r&   r'   r   l  s4    $
$$c                    s    d k	r,t  fdd| D \}}}||fS t|  t  fdd| D \}}}t  fdd| D \}}}||d t|  8 }||fS )Nc                 3   s   | ]}|  d  V  qdS rf   Nr&   ra   cr&   r'   r-     s     z_ss.<locals>.<genexpr>c                 3   s   | ]}|  d  V  qdS r|   r&   ra   r}   r&   r'   r-     s     c                 3   s   | ]}|  V  qd S r)   r&   ra   r}   r&   r'   r-     s     rf   )r>   r   rQ   )r7   r~   r:   r=   r9   UZtotal2Zcount2r&   r}   r'   _ss  s    r   c                 C   sL   t | | krt| } t| }|dk r,tdt| |\}}t||d  |S )Nrf   z*variance requires at least two data pointsr(   r[   r\   rQ   r   r   rP   )r7   xbarr,   r:   ssr&   r&   r'   r     s    &c                 C   sH   t | | krt| } t| }|dk r,tdt| |\}}t|| |S )Nr(   z*pvariance requires at least one data pointr   )r7   mur,   r:   r   r&   r&   r'   r     s    #c                 C   s8   t | |}z
| W S  tk
r2   t| Y S X d S r)   )r   r   r?   r@   )r7   r   varr&   r&   r'   r     s
    	

c                 C   s8   t | |}z
| W S  tk
r2   t| Y S X d S r)   )r   r   r?   r@   )r7   r   r   r&   r&   r'   r   &  s
    	

c                 C   s  | d }t |dkrd||  }d| d | d | d | d | d	 | d
 | d | }d| d | d | d | d | d | d | d }|| }|||  S |dkr| nd|  }tt| }|dkr^|d }d| d | d | d | d | d | d | d }d| d  | d! | d" | d# | d$ | d% | d }n|d }d&| d' | d( | d) | d* | d+ | d, | d- }d.| d/ | d0 | d1 | d2 | d3 | d4 | d }|| }|dk r| }|||  S )5N      ?g333333?gQ?g^}o)@gE.kR@g Ul@g*u>l@gN@g"]Ξ@gnC`@gu@giK~j@gv|E@gd|1@gfRr@gu.2@g~y@gn8(E@      ?        g      @g?g鬷ZaI?ggElD?g7\?guSS?g=.@gj%b@gHw@gjRe?g9dh?>g('߿A?g~z ?g@3?gɅ3?g3fRx?gIFl @gt>g*Yn>gESB\T?gN;A+?gUR1?gEF?gPn@g&>@gi<g@F>gtcI,\>gŝI?g*F2v?gC4?gO1?)r   r   r   )pr   sigmaqrZnumZdenrA   r&   r&   r'   _normal_dist_inv_cdf9  sd   
	
r   c                   @   s   e Zd ZdddZd7ddZedd	 Zd
dddZdd Zdd Z	dd Z
d8ddZdd Zedd Zedd Zedd Zedd  Zed!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZeZd/d0 ZeZd1d2 Zd3d4 Zd5d6 Zd
S )9r   z(Arithmetic mean of a normal distributionz+Standard deviation of a normal distribution)_mu_sigmar   r   c                 C   s(   |dk rt dt|| _t|| _d S )Nr   zsigma must be non-negative)r   rE   r   r   )selfr   r   r&   r&   r'   __init__  s    
zNormalDist.__init__c                 C   s.   t |ttfst|}t|}| |t||S r)   )rb   r\   tupler   r   )clsr7   r   r&   r&   r'   from_samples  s    zNormalDist.from_samplesN)seedc                   sB   |d krt jn
t |j | j| j  fddt|D S )Nc                    s   g | ]} qS r&   r&   r*   rS   gaussr   r   r&   r'   
<listcomp>  s     z&NormalDist.samples.<locals>.<listcomp>)randomr   ZRandomr   r   rw   )r   r,   r   r&   r   r'   samples  s    zNormalDist.samplesc                 C   s<   | j d }|stdt|| j d d|  tt|  S )N       @z$pdf() not defined when sigma is zerog       )r   r   r   r   r   r   )r   rA   r   r&   r&   r'   pdf  s    
zNormalDist.pdfc                 C   s2   | j stdddt|| j | j td    S )Nz$cdf() not defined when sigma is zeror   r   r   )r   r   r   r   r   )r   rA   r&   r&   r'   cdf  s    zNormalDist.cdfc                 C   s:   |dks|dkrt d| jdkr*t dt|| j| jS )Nr   r   z$p must be in the range 0.0 < p < 1.0z-cdf() not defined when sigma at or below zero)r   r   r   r   )r   r   r&   r&   r'   inv_cdf  s
    

zNormalDist.inv_cdfrt   c                    s    fddt d D S )Nc                    s   g | ]} |  qS r&   )r   r   r,   r   r&   r'   r     s     z(NormalDist.quantiles.<locals>.<listcomp>r(   )rw   )r   r,   r&   r   r'   r     s    	zNormalDist.quantilesc                 C   s  t |tstd| | }}|j|jf|j|jfk r>|| }}|j|j }}|rT|s\td|| }t|j|j }|sdt|d|j t	d   S |j| |j|  }|j|j t	|d |t
||    }	||	 | }
||	 | }dt||
||
 t||||   S )Nz$Expected another NormalDist instancez(overlap() not defined when sigma is zeror   r   )rb   r   rF   r   r   r   r   r   r   r   r   r   )r   otherXYZX_varZY_varZdvZdmrR   bx1x2r&   r&   r'   overlap  s"    


(zNormalDist.overlapc                 C   s   | j S r)   r   r   r&   r&   r'   r     s    zNormalDist.meanc                 C   s   | j S r)   r   r   r&   r&   r'   r     s    zNormalDist.medianc                 C   s   | j S r)   r   r   r&   r&   r'   r     s    zNormalDist.modec                 C   s   | j S r)   r   r   r&   r&   r'   r     s    zNormalDist.stdevc                 C   s
   | j d S )Nr   r   r   r&   r&   r'   r     s    zNormalDist.variancec                 C   s8   t |tr&t| j|j t| j|jS t| j| | jS r)   rb   r   r   r   r   r   r   r&   r&   r'   __add__	  s    

zNormalDist.__add__c                 C   s8   t |tr&t| j|j t| j|jS t| j| | jS r)   r   r   r&   r&   r'   __sub__  s    

zNormalDist.__sub__c                 C   s   t | j| | jt| S r)   r   r   r   r   r   r&   r&   r'   __mul__%  s    zNormalDist.__mul__c                 C   s   t | j| | jt| S r)   r   r   r&   r&   r'   __truediv__-  s    zNormalDist.__truediv__c                 C   s   t | j| jS r)   r   r   r   r   r&   r&   r'   __pos__5  s    zNormalDist.__pos__c                 C   s   t | j | jS r)   r   r   r&   r&   r'   __neg__9  s    zNormalDist.__neg__c                 C   s
   | |  S r)   r&   r   r&   r&   r'   __rsub__?  s    zNormalDist.__rsub__c                 C   s&   t |tstS | j|jko$| j|jkS r)   )rb   r   NotImplementedr   r   r   r&   r&   r'   __eq__E  s    
zNormalDist.__eq__c                 C   s   t | j| jfS r)   )hashr   r   r   r&   r&   r'   __hash__K  s    zNormalDist.__hash__c                 C   s    t | j d| jd| jdS )Nz(mu=z, sigma=))r2   r#   r   r   r   r&   r&   r'   __repr__O  s    zNormalDist.__repr__)r   r   )rt   )r#   r$   r%   	__slots__r   classmethodr   r   r   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r   r   __radd__r   __rmul__r   r   r   r&   r&   r&   r'   r     sD   


"




)r   __main__)isclose)addsubmultruediv)repeat
         i z
Test z with another NormalDist:   z with a constant:   z
Test constant with :c                 C   s   d S r)   r&   )G1G2r&   r&   r'   assert_close  s    r   iI      /   g     `@@c                 C   s   g | ]}|t  qS r&   sra   r&   r&   r'   r     s     r   c                 C   s   g | ]}|t  qS r&   r   ra   r&   r&   r'   r     s     c                 C   s   g | ]}|t  qS r&   r   ra   r&   r&   r'   r     s     c                 C   s   g | ]}|t  qS r&   r   ra   r&   r&   r'   r     s     c                 C   s   g | ]\}}|| qS r&   r&   r*   rA   yr&   r&   r'   r     s     c                 C   s   g | ]\}}|| qS r&   r&   r   r&   r&   r'   r     s     )r   )rX   )r(   )N)N)N)N)N)Q__all__r@   rc   r   Z	fractionsr   Zdecimalr   	itertoolsr   Zbisectr   r   r   r   r   r   r   r   r   r    operatorr!   collectionsr"   rM   r   r>   rB   r0   r.   rP   rT   rW   rZ   r   r   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   Z_statisticsImportErrorr#   r   r   r   r   r   r   ZdoctestZg1Zg2r,   r   r   r   funcprintr   r3   Zconstr   r   r   r   rG   zipZtestmodr&   r&   r&   r'   <module>T   s   (
: 

/
779

/
,

J Q








