B t `hã @södddddddddd g Zd d lZd d lZd d lZd d lmZd d lmZyd dlmZWnddd„ZYnXdd„Zye dd„Z Wndd„Z YnXdd„Z dd„Z dd„Z dd„ZejdkrÖd dlmZn d dlmZdd„Zdd „Zd S)ÚiscloseÚ approx_equalÚ as_numberÚisintÚargmaxÚargminÚmeanÚmedianÚ factorialÚperméN)Úzip)Úxrange)rç•Ö&è .>çcCs(t||ƒt|tt|ƒt|ƒƒ|ƒkS)N)ÚabsÚmax)ÚaÚbZrel_tolZabs_tol©rú6/tmp/pip-unpacked-wheel-cqckmaqz/pyutilib/math/util.pyrscCsx|dkr d}|dkrd}t ||¡|kr.dSt |¡t |¡krVt |||¡}nt |||¡}||krtdSdS)Ng:Œ0âŽyE>TF)ÚmathÚfabs)ÚAÚBZabstolZreltolZrelErrorrrrrscCsŒt|ƒtttgkr|St|tjƒrˆy t|ƒ}|Stk rBYnXy t|ƒ}|Stk rdYnXy t|ƒ}|Stk r†YnX|S)N)ÚtypeÚintÚfloatÚlongÚ isinstanceÚsixÚ string_typesÚ ValueError)ÚvalueÚtmprrrr.s& cCsht|ƒttgkr|St|tjƒrdy t|ƒ}|Stk r@YnXy t|ƒ}|Stk rbYnX|S)N)rrrrrr r!)r"r#rrrrDs cCsjt|ƒtkrdSt|ƒtkr,t|ƒ}||kSt|tjƒrfyt|ƒ}t|ƒ}||kStk rddSXdS)z4 Returns true if the argument is an integer TF)rrrrrr r!)Úargr#ÚnumrrrrUs   cCstt|tt|ƒƒƒƒdS)z5 Return the index to the maximum element of an array é)rr r Úlen)ÚarrayrrrrhscCstt|tt|ƒƒƒƒdS)z5 Return the index to the maximum element of an array r&)Úminr r r')r(rrrrmscCs,dt|ƒ}t|ƒ}|dkr$tdƒ‚||S)z* Returns the mean value of a list gð?gz4Attempting to compute the mean of a zero-length list)Úsumr'ÚArithmeticError)ZmylistÚtotalÚlengthrrrrrs  )ér )rcCs0|dkrtdƒ‚|dkrdS|t|dƒSdS)z Computes z! r z1Cannot compute the factorial of a negative numberr&N)r+r )Úzrrrr „s cCs8d}x"t|d|dƒD] }||}qW|t||ƒS)z Computes 'x choose y' r&)Úranger )ÚxÚyÚwÚirrrr ‘s )rr)Ú__all__rÚsysrZ six.movesr r rrrrrrrrÚ version_infoZpyutilib.math.median2rZpyutilib.math.median3r r rrrrÚ s2