U e5d ��@sjdddddddddd d d d d dddgZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z ddlm Z mZmZmZmZmZmZmZddlmZddlmZGdd�de�Zdcdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%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�Z3GdCd�d�Z4zddDl5m3Z3Wne6k �r�YnXe7dEk�rfddFlm8Z8ddGlm9Z9m:Z:m;Z;mZ>e4dIdJ�Z?e4dKdL�Z@dMZAe?�BeA�ZCe@�BeA�ZDe9e:fD]�P��dS)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 eZdZdS)rN)�__name__� __module__� __qualname__�r&r&�"/usr/lib64/python3.8/statistics.pyrusc Cs�d}t|�\}}||i}|j}ttt|��}t|t�D]@\}} t||�}tt| �D]"\}}|d7}||d�|||<qRq6d|kr�|d} ntdd�t|� ��D��} || |fS)Nr�css|]\}}t||�VqdS�Nr)�.0�d�nr&r&r'� �sz_sum..) � _exact_ratio�get�_coerce�int�typer�map�sum�sorted�items) �data�start�countr,r+ZpartialsZ partials_get�T�typ�values�totalr&r&r'�_sum{s$  r>cCs.z |��WStk r(t�|�YSXdSr))Z is_finite�AttributeError�mathZisfinite)�xr&r&r'� _isfinite�s rBcCs�||kr |S|tks|tkr |S|tkr,|St||�r:|St||�rH|St|t�rV|St|t�rd|St|t�r|t|t�r||St|t�r�t|t�r�|Sd}t||j|jf��dS)Nz"don't know how to coerce %s and %s)r1�bool� issubclassr�float� TypeErrorr#)r:�S�msgr&r&r'r0�s(     r0c Cs�zrt|�tkst|�tkr$|��WSz|j|jfWWStk rnz|��WYWStk rhYnXYnXWn ttfk r�|dfYSXd}t |� t|�j ���dS)Nz0can't convert type '{}' to numerator/denominator) r2rEr�as_integer_ratio� numerator� denominatorr?� OverflowError� ValueErrorrF�formatr#)rArHr&r&r'r.�s r.cCspt|�|kr|St|t�r(|jdkr(t}z ||�WStk rjt|t�rd||j�||j�YS�YnXdS)Nr()r2rDr1rKrErFrrJ)�valuer:r&r&r'�_convert�s   rPcCs.t||�}|t|�kr&|||kr&|St�dSr))r�lenrM)�arA�ir&r&r'� _find_lteq s rTcCs>t|||d�}|t|�dkr6||d|kr6|dSt�dS)N)�lor()rrQrM)rR�lrArSr&r&r'� _find_rteqs rW�negative valueccs$|D]}|dkrt|��|VqdS)Nr)r)r<�errmsgrAr&r&r'� _fail_negsrZcCsHt|�|krt|�}t|�}|dkr,td��t|�\}}}t|||�S)Nr(z%mean requires at least one data point)�iter�listrQrr>rP)r7r,r:r=r9r&r&r'r's cstz t|��Wn0tk r<d��fdd�}t||��}Yn Xt|�}z |�WStk rntd�d�YnXdS)Nrc3s t|dd�D]\�}|Vq dS)Nr()r8)� enumerate)�iterablerA�r,r&r'r9Oszfmean..countz&fmean requires at least one data point)rQrFr �ZeroDivisionErrorr)r7r9r=r&r_r'rAs    cCs8ztttt|���WStk r2td�d�YnXdS)NzHgeometric mean requires a non-empty dataset containing positive numbers)rrr3rrMr)r7r&r&r'r\s �cCs�t|�|krt|�}d}t|�}|dkr2td��n<|dkrn|d}t|tjtf�rf|dkrbt|��|Std��z"t dd�t ||�D��\}}}Wnt k r�YdSXt |||�S)Nz.harmonic mean does not support negative valuesr(z.harmonic_mean requires at least one data pointrzunsupported typecss|]}d|VqdS)r(Nr&�r*rAr&r&r'r-�sz harmonic_mean..) r[r\rQr� isinstance�numbersZRealrrFr>rZr`rP)r7rYr,rAr:r=r9r&r&r'ros$  "cCs\t|�}t|�}|dkr td��|ddkr8||dS|d}||d||dSdS�Nr�no median for empty data�r(�r5rQr)r7r,rSr&r&r'r�s   cCsLt|�}t|�}|dkr td��|ddkr8||dS||ddSdSrdrg�r7r,r&r&r'r �s   cCs,t|�}t|�}|dkr td��||dS)Nrrerfrgrhr&r&r'r �s r(c Cs�t|�}t|�}|dkr"td��n|dkr2|dS||d}||fD]}t|ttf�rFtd|��qFz||d}Wn(tk r�t|�t|�d}YnXt||�}t |||�}|}||d} |||d|| S)Nrrer(rfzexpected number but got %r) r5rQrrb�str�bytesrFrErTrW) r7Zintervalr,rA�obj�L�l1�l2Zcf�fr&r&r'r�s&      cCsHt|�}t|��d�}z|ddWStk rBtd�d�YnXdS)Nr(rzno mode for empty data)r[r"� most_common� IndexErrorr)r7Zpairsr&r&r'r s cCs@tt|����}tt|td�d�dgf�\}}tttd�|��S)Nr()�keyr)r"r[rp�nextrr!r\r3)r7ZcountsZmaxcountZ mode_itemsr&r&r'r 5s �� exclusive)r,�methodc CsL|dkrtd��t|�}t|�}|dkr0td��|dkr�|d}g}td|�D]N}|||}||||}||||||d||} |�| �qN|S|dk�r:|d}g}td|�D]r}|||}|dkr�dn||dkr�|dn|}||||}||d||||||} |�| �q�|Std|����dS)Nr(zn must be at least 1rfz"must have at least two data pointsZ inclusiveruzUnknown method: )rr5rQ�range�appendrM) r7r,rvZld�m�resultrS�jZdeltaZ interpolatedr&r&r'rls4 $   $$ cs��dk r,t�fdd�|D��\}}}||fSt|��t�fdd�|D��\}}}t�fdd�|D��\}}}||dt|�8}||fS)Nc3s|]}|�dVqdS�rfNr&ra��cr&r'r-�sz_ss..c3s|]}|�dVqdSr|r&rar}r&r'r-�sc3s|]}|�VqdSr)r&rar}r&r'r-�srf)r>rrQ)r7r~r:r=r9�UZtotal2Zcount2r&r}r'�_ss�sr�cCsLt|�|krt|�}t|�}|dkr,td��t||�\}}t||d|�S)Nrfz*variance requires at least two data pointsr(�r[r\rQrr�rP)r7�xbarr,r:�ssr&r&r'r�s& cCsHt|�|krt|�}t|�}|dkr,td��t||�\}}t|||�S)Nr(z*pvariance requires at least one data pointr�)r7�mur,r:r�r&r&r'r�s# cCs8t||�}z |��WStk r2t�|�YSXdSr))rrr?r@)r7r��varr&r&r'rs  cCs8t||�}z |��WStk r2t�|�YSXdSr))rrr?r@)r7r�r�r&r&r'r &s  cCs|d}t|�dkr�d||}d|d|d|d|d|d |d |d |}d |d |d|d|d|d|d|d}||}|||S|dkr�|nd|}tt|� �}|dk�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}||}|dk�r�| }|||S)5N��?g333333�?g��Q��?g^�}o)��@g�E.k�R�@g ��Ul�@g*u��>l�@g�N����@g��"]Ξ@gnC���`@gu�� @giK��~j�@gv��|E�@g��d�|1�@gfR��r��@g��u.2�@g����~y�@g�n8(E@��?�g@g�������?g鬷�ZaI?gg�El�D�?g7\�����?g�uS�S�?g�=�. @gj%b�@g���Hw�@gjR��e��?g�9dh? >g('߿��A?g��~z �?g@�3��?gÉ…3��?g3fR�x��?gI�F��l@g����t��>g*�Y��n�>gESB\T?g�N;A+�?g�UR1���?gE�F���?gP�n��@g&�>���@g����i�g�tcI,\�>g�Å����I?g*F2�v�?g�C4��?g��O�1�?)rrr)�pr��sigma�q�rZnumZdenrAr&r&r'�_normal_dist_inv_cdf9sd  ���������������������������  �������������������������� �������������������������� r�c@s�eZdZddd�Zd7dd�Zedd ��Zd d �d d �Zdd�Zdd�Z dd�Z d8dd�Z dd�Z e dd��Ze dd��Ze dd��Ze dd ��Ze d!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�ZeZd/d0�ZeZd1d2�Zd3d4�Zd5d6�Zd S)9rz(Arithmetic mean of a normal distributionz+Standard deviation of a normal distribution)�_mu�_sigmar�r�cCs(|dkrtd��t|�|_t|�|_dS)Nr�zsigma must be non-negative)rrEr�r�)�selfr�r�r&r&r'�__init__�s zNormalDist.__init__cCs.t|ttf�st|�}t|�}||t||��Sr))rbr\�tuplerr)�clsr7r�r&r&r'� from_samples�szNormalDist.from_samplesN)�seedcsB|dkrtjn t�|�j�|j|j�����fdd�t|�D�S)Ncsg|]}�����qSr&r&�r*rS��gaussr�r�r&r'� �sz&NormalDist.samples..)�randomr�ZRandomr�r�rw)r�r,r�r&r�r'�samples�szNormalDist.samplescCs<|jd}|std��t||jdd|�tt|�S)N�@z$pdf() not defined when sigma is zerog�)r�rrr�rr)r�rArr&r&r'�pdf�s zNormalDist.pdfcCs2|jstd��ddt||j|jtd��S)Nz$cdf() not defined when sigma is zeror�r�r�)r�rrr�r)r�rAr&r&r'�cdf�szNormalDist.cdfcCs:|dks|dkrtd��|jdkr*td��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)rr�r�r�)r�r�r&r&r'�inv_cdf�s  zNormalDist.inv_cdfrtcs��fdd�td��D�S)Ncsg|]}��|���qSr&)r�r��r,r�r&r'r��sz(NormalDist.quantiles..r()rw)r�r,r&r�r'r�s zNormalDist.quantilesc Cst|t�std��||}}|j|jf|j|jfkr>||}}|j|j}}|rT|s\td��||}t|j|j�}|s�dt|d|jt d��S|j||j|}|j|jt |d|t ||��} || |} || |} dt|� | �|� | ��t|� | �|� | ��S)Nz$Expected another NormalDist instancez(overlap() not defined when sigma is zeror�r�) rbrrFr�r�rrrrrrr�) r��other�X�YZX_varZY_varZdvZdmrR�b�x1�x2r&r&r'�overlap�s"   (  zNormalDist.overlapcCs|jSr)�r��r�r&r&r'r�szNormalDist.meancCs|jSr)r�r�r&r&r'r�szNormalDist.mediancCs|jSr)r�r�r&r&r'r �szNormalDist.modecCs|jSr)�r�r�r&r&r'r�szNormalDist.stdevcCs |jdS)Nr�r�r�r&r&r'rszNormalDist.variancecCs8t|t�r&t|j|jt|j|j��St|j||j�Sr)�rbrr�rr��r�r�r&r&r'�__add__ s zNormalDist.__add__cCs8t|t�r&t|j|jt|j|j��St|j||j�Sr)r�r�r&r&r'�__sub__s zNormalDist.__sub__cCst|j||jt|��Sr)�rr�r�rr�r&r&r'�__mul__%szNormalDist.__mul__cCst|j||jt|��Sr)r�r�r&r&r'� __truediv__-szNormalDist.__truediv__cCst|j|j�Sr)�rr�r��r�r&r&r'�__pos__5szNormalDist.__pos__cCst|j |j�Sr)r�r�r&r&r'�__neg__9szNormalDist.__neg__cCs || Sr)r&r�r&r&r'�__rsub__?szNormalDist.__rsub__cCs&t|t�stS|j|jko$|j|jkSr))rbr�NotImplementedr�r�r�r&r&r'�__eq__Es zNormalDist.__eq__cCst|j|jf�Sr))�hashr�r�r�r&r&r'�__hash__KszNormalDist.__hash__cCs t|�j�d|j�d|j�d�S)Nz(mu=z, sigma=�))r2r#r�r�r�r&r&r'�__repr__OszNormalDist.__repr__)r�r�)rt)r#r$r%� __slots__r�� classmethodr�r�r�r�r�rr��propertyrrr rrr�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 �:cCsdSr)r&)�G1�G2r&r&r'� assert_closesr�i�����I��/g`@@cCsg|] }|t�qSr&��srar&r&r'r��sr�cCsg|] }|t�qSr&r�rar&r&r'r��scCsg|] }|t�qSr&r�rar&r&r'r��scCsg|] }|t�qSr&r�rar&r&r'r��scCsg|]\}}||�qSr&r&�r*rA�yr&r&r'r��scCsg|]\}}||�qSr&r&r�r&r&r'r��s)r)rX)r()N)N)N)N)N)Q�__all__r@rcr�Z fractionsrZdecimalr� itertoolsrZbisectrrrrrrrrrr �operatorr!� collectionsr"rMrr>rBr0r.rPrTrWrZrrrrrr r rr r rr�rrrr r�rZ _statistics� ImportErrorr#r�r�r�r�r�r�ZdoctestZg1Zg2r,r�r�r��func�printr�r3Zconstr�r�r�r�rG�zipZtestmodr&r&r&r'�Ts��   (   :  / 779  / ,  JQ          � �