ó {G_Tc@s«ddlmZmZddlZddlZddlZddlZddlZddlZdZ e dƒZ e dƒZ e dƒZ eje jdƒjdƒd ƒZd d f\ZZeed d kZed krîejdZneZejjeƒp ejZejjedƒZejjedƒZd„Z dd„Z!ddd„Z"d„Z#d„Z$dej%fd„ƒYZ&d„Z'ed kr§e'ƒndS(iÿÿÿÿ(t run_unittesttverboseNgñh㈵øä>tnantinfs-inftdoubletIEEEstest requires IEEE 754 doublesg€à7yÃACgÇ):’Ëÿ@it__main__ismath_testcases.txtscmath_testcases.txtcCs@tjdtjd|ƒƒd}|dkr<|d}n|S(sVConvert a non-NaN float x to an integer, in such a way that adjacent floats are converted to adjacent integers. Then abs(ulps(x) - ulps(y)) gives the difference in ulps between two floats. The results from this function will only make sense on platforms where C doubles are represented in IEEE 754 binary64 format. s||jdƒ }n|jƒsPqn|jdƒ\}}|jƒ\}}}|jƒ}|d} |d} ||t|ƒt| ƒ| fVqWWdQXdS(sÏParse a file with test values -- starts a comment blank lines, or lines containing only a comment, are ignored other lines are expected to have the form id fn arg -> expected [flag]* s--s->iiN(topentindextstriptsplittfloat( tfnametfptlinetlhstrhstidtfntargt rhs_piecestexptflags((s*/usr/local/lib/python2.7/test/test_math.pytparse_mtestfileRs       c csÖt|ƒÄ}xº|D]²}|jdƒs|jƒ r>qn|jdƒ\}}|jƒ\}}}}|jƒ} | d| d} } | d} ||t|ƒt|ƒt| ƒt| ƒ| fVqWWdQXdS(s“Parse a file with test values Empty lines or lines starting with -- are ignored yields id, fn, arg_real, arg_imag, exp_real, exp_imag s--s->iiiN(Rt startswithRR R!( R"R#R$R%R&R'R(targ_realtarg_imagR*texp_realtexp_imagR,((s*/usr/local/lib/python2.7/test/test_math.pytparse_testfileks   t MathTestscBsÊeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z e d „ƒZ d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Ze ejedƒd„ƒƒZd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d „Z%d!„Z&d"„Z'd#„Z(d$„Z)d%„Z*ej+e,d&ƒd'„ƒZ-e d(„ƒZ.ej+e/j0d)ƒj1d*ƒd+ƒd,„ƒZ2RS(-cCs7t||ƒtkr3|jd|||fƒndS(Ns%s returned %r, expected %r(R tepstfail(tselftnametvalueR((s*/usr/local/lib/python2.7/test/test_math.pytftest…s cCs0|jdtjdƒ|jdtjdƒdS(NtpigJØMû! @tegB‡ ¿@(R:RR;R<(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testConstantsŽscCsÀ|jttjƒ|jdtjdƒtjƒ|jdtjdƒtjdƒ|jdtjdƒdƒ|jttjtƒ|jttjtƒ|j tj tjt ƒƒƒdS(Nsacos(-1)iÿÿÿÿsacos(0)iisacos(1)i( t assertRaisest TypeErrorRtacosR:R;t ValueErrortINFtNINFt assertTruetisnantNAN(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestAcos’s#cCsÉ|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jttjdƒ|jttjdƒ|jtjtƒtƒ|jttjtƒ|j tj tjt ƒƒƒdS(Nsacosh(1)iisacosh(2)ig5˜qBõ?iÿÿÿÿ( R>R?RtacoshR:RAt assertEqualRBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testAcosh›scCsÅ|jttjƒ|jdtjdƒtj dƒ|jdtjdƒdƒ|jdtjdƒtjdƒ|jttjtƒ|jttjtƒ|j tj tjt ƒƒƒdS(Nsasin(-1)iÿÿÿÿisasin(0)isasin(1)i( R>R?RtasinR:R;RARBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestAsin¥s$#cCs¼|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒ|jtjtƒtƒ|jtjtƒtƒ|jtj tjt ƒƒƒdS( Nsasinh(0)isasinh(1)ig'Ôya64ì?s asinh(-1)iÿÿÿÿg'Ôya64ì¿( R>R?RtasinhR:RIRBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testAsinh®scCsà|jttjƒ|jdtjdƒtj dƒ|jdtjdƒdƒ|jdtjdƒtjdƒ|jdtjtƒtjd ƒ|jd tjtƒtj d ƒ|jtj tjt ƒƒƒdS( Nsatan(-1)iÿÿÿÿisatan(0)isatan(1)is atan(inf)is atan(-inf)( R>R?RtatanR:R;RBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestAtan·s$##$cCsâ|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒ|jttjd ƒ|jttjd ƒ|jttjtƒ|jttjtƒ|j tj tjt ƒƒƒdS( Nsatanh(0)is atanh(0.5)gà?g ­zê“á?s atanh(-0.5)gà¿g ­zê“á¿iiÿÿÿÿ( R>R?RROR:tatanhRARBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testAtanhÀscCsî|jttjƒ|jdtjddƒtj dƒ|jdtjddƒtj dƒ|jdtjddƒdƒ|jd tjddƒtjdƒ|jd tjddƒtjdƒ|jd tjd tƒtjƒ|jd tjd dƒtjƒ|jdtjd dƒtjƒ|jtjd d ƒd ƒ|jtjd dƒd ƒ|jtjd tƒd ƒ|j tj tjd t ƒƒƒ|jdtjdtƒtj ƒ|jdtjddƒtj ƒ|jdtjddƒtj ƒ|jtjdd ƒdƒ|jtjddƒdƒ|jtjdtƒdƒ|j tj tjdt ƒƒƒ|jdtjttƒtjddƒ|jdtjtdƒtjdƒ|jdtjtdƒtjdƒ|jdtjtd ƒtjdƒ|jdtjtdƒtjdƒ|jdtjttƒtjdƒ|j tj tjtt ƒƒƒ|jdtjttƒtj ddƒ|jdtjtdƒtj dƒ|jdtjtdƒtj dƒ|jdtjtd ƒtj dƒ|jd tjtdƒtj dƒ|jd!tjttƒtj dƒ|j tj tjtt ƒƒƒ|jd"tjdtƒtjƒ|jd#tjddƒtjdƒ|jd$tjdd ƒtjdƒ|jtjdtƒd ƒ|j tj tjdt ƒƒƒ|jd%tjdtƒtj ƒ|jd&tjddƒtj dƒ|jd'tjdd ƒtj dƒ|jtjdtƒdƒ|j tj tjdt ƒƒƒ|j tj tjt tƒƒƒ|j tj tjt dƒƒƒ|j tj tjt dƒƒƒ|j tj tjt d ƒƒƒ|j tj tjt dƒƒƒ|j tj tjt tƒƒƒ|j tj tjt t ƒƒƒdS((Ns atan2(-1, 0)iÿÿÿÿiis atan2(-1, 1)iis atan2(0, 1)s atan2(1, 1)s atan2(1, 0)satan2(0., -inf)gsatan2(0., -2.3)gffffffÀsatan2(0., -0.)g€gffffff@satan2(-0., -inf)satan2(-0., -2.3)satan2(-0., -0.)satan2(inf, -inf)isatan2(inf, -2.3)satan2(inf, -0.)satan2(inf, 0.)satan2(inf, 2.3)satan2(inf, inf)satan2(-inf, -inf)satan2(-inf, -2.3)satan2(-inf, -0.)satan2(-inf, 0.)satan2(-inf, 2.3)satan2(-inf, inf)satan2(2.3, -inf)satan2(2.3, -0.)satan2(2.3, 0.)satan2(-2.3, -inf)satan2(-2.3, -0.)satan2(-2.3, 0.)( R>R?Rtatan2R:R;RCRIRBRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testAtan2Ësf''&&""""###"*&&&&&"+'''''""&&"#''"""""""cCs|jttjƒ|jtttjdƒƒƒ|jtttjdƒƒƒ|jtttjdƒƒƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒd ƒ|jd tjd ƒd ƒ|jd tjdƒdƒ|jdtjdƒdƒ|jtjtƒtƒ|jtjt ƒt ƒ|j tj tjt ƒƒƒdt fd„ƒY}dt fd„ƒY}|jdtj|ƒƒdƒ|jttj|ƒƒ|ƒ}d„|_|jttj|ƒ|jttj|d ƒdS(Nilgð?s ceil(0.5)gà?s ceil(1.0)s ceil(1.5)gø?is ceil(-0.5)gà¿is ceil(-1.0)gð¿iÿÿÿÿs ceil(-1.5)gø¿tTestCeilcBseZd„ZRS(cSsdS(Ngfffff¦D@((R7((s*/usr/local/lib/python2.7/test/test_math.pyt __float__s(t__name__t __module__RV(((s*/usr/local/lib/python2.7/test/test_math.pyRUst TestNoCeilcBseZRS((RWRX(((s*/usr/local/lib/python2.7/test/test_math.pyRYssceil(TestCeil())i*cWs|S(N((targs((s*/usr/local/lib/python2.7/test/test_math.pyt!s(R>R?RtceilRIR!ttypeR:RBRCRDRERFtobjectt__ceil__(R7RURYtt((s*/usr/local/lib/python2.7/test/test_math.pyttestCeils*  cCs¿|jtjddƒdƒ|jtjddƒdƒ|jtjddƒdƒ|jtjddƒdƒ|jtjd d ƒd ƒ|jttjƒ|jtjddƒdƒ|jtjdd ƒdƒ|jtjtdƒtƒ|jtjtd ƒtƒ|jtjtdƒtƒ|jtjtd ƒtƒ|jtjdtƒdƒ|jtjdtƒdƒ|jtjttƒtƒ|jtjttƒtƒ|jtjttƒtƒ|jtjttƒtƒ|jtjtjt dƒƒƒ|jtjtjt tƒƒƒ|jtjtjt tƒƒƒ|jtjtjt t ƒƒƒ|jtj tjtt ƒƒƒ|jt tjd t ƒƒd ƒdS( Nii*gð?giÖÿÿÿgð¿ig@g@g€gÀg@( RIRtcopysignR>R?RBRCRDRERFRR (R7((s*/usr/local/lib/python2.7/test/test_math.pyt testCopysign%s0"""""cCs:|jttjƒ|jdtjtj dƒdƒ|jdtjdƒdƒ|jdtjtjdƒdƒ|jdtjtjƒdƒyB|jtjtjtƒƒƒ|jtjtjt ƒƒƒWn=t k r|jt tjtƒ|jt tjt ƒnX|jtjtjt ƒƒƒdS( Ns cos(-pi/2)iiscos(0)is cos(pi/2)scos(pi)iÿÿÿÿ( R>R?RtcosR:R;RDRERBRCRARF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestCosGs$## cCsµ|jttjƒ|jdtjdƒdƒ|jdtjdƒdtjdƒddƒ|jtjtƒtƒ|jtjtƒtƒ|jtj tjt ƒƒƒdS(Nscosh(0)iiscosh(2)-2*cosh(1)**2iiÿÿÿÿ( R>R?RtcoshR:RIRBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestCoshUs 1cCs}|jttjƒ|jdtjtjƒdƒ|jdtjtjdƒdƒ|jdtjtj dƒdƒdS( Ns degrees(pi)g€f@s degrees(pi/2)ig€V@sdegrees(-pi/4)ig€FÀ(R>R?RtdegreesR:R;(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testDegrees]s#cCsÆ|jttjƒ|jdtjdƒdtjƒ|jdtjdƒdƒ|jdtjdƒtjƒ|jtjtƒtƒ|jtjtƒdƒ|j tj tjt ƒƒƒdS(Nsexp(-1)iÿÿÿÿisexp(0)isexp(1)g( R>R?RR+R:R<RIRBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestExpcs#cCsk|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒdS(Nsfabs(-1)iÿÿÿÿisfabs(0)isfabs(1)(R>R?RtfabsR:(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestFabslsc CsÍd„}tdƒdddg}tj|ƒxh|D]`}xWtttfD]F}|jtj||ƒƒ||ƒ|||ƒtj|ƒfƒqLWq6W|j t tjdƒ|j t tjtj ƒdS(NcSs8d}x+tdt|ƒdƒD]}||9}q W|S(Ni(trangetint(R tresultti((s*/usr/local/lib/python2.7/test/test_math.pytfactss i i2idiôiÿÿÿÿ( RmtrandomtshuffleRntlongR!RIRt factorialR>RAR;(R7RqtvaluesR tcast((s*/usr/local/lib/python2.7/test/test_math.pyt testFactorialrs   HcCsM|jttjƒ|jtttjdƒƒƒ|jtttjdƒƒƒ|jtttjdƒƒƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjd ƒdƒ|jd tjd ƒd ƒ|jd tjdƒd ƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒ|jtjt ƒt ƒ|jtjt ƒt ƒ|j tj tjt ƒƒƒdtfd„ƒY}dtfd„ƒY}|jdtj|ƒƒdƒ|jttj|ƒƒ|ƒ}d„|_|jttj|ƒ|jttj|dƒdS(Nilgð?s floor(0.5)gà?is floor(1.0)s floor(1.5)gø?s floor(-0.5)gà¿iÿÿÿÿs floor(-1.0)gð¿s floor(-1.5)gø¿iþÿÿÿsfloor(1.23e167)g‚àNݯ bsfloor(-1.23e167)g‚àNݯ ât TestFloorcBseZd„ZRS(cSsdS(Ngfffff&E@((R7((s*/usr/local/lib/python2.7/test/test_math.pyRV•s(RWRXRV(((s*/usr/local/lib/python2.7/test/test_math.pyRy”st TestNoFloorcBseZRS((RWRX(((s*/usr/local/lib/python2.7/test/test_math.pyRz—ssfloor(TestFloor())i*cWs|S(N((RZ((s*/usr/local/lib/python2.7/test/test_math.pyR[s(R>R?RtfloorRIR!R]R:R\RBRCRDRERFR^t __floor__(R7RyRzR`((s*/usr/local/lib/python2.7/test/test_math.pyt testFloor€s.  cCsC|jttjƒ|jdtjddƒdƒ|jdtjddƒdƒ|jdtjddƒdƒ|jd tjd dƒdƒ|jd tjd dƒdƒ|jd tjd dƒd ƒ|jtjtjtdƒƒƒ|jtjtjdtƒƒƒ|jtjtjttƒƒƒ|jttjddƒ|jttjt dƒ|jttjt dƒ|jttjt dƒ|j tjdt ƒdƒ|j tjdt ƒdƒ|j tjdt ƒdƒ|j tjdt ƒdƒ|j tjddƒdƒ|j tjdt ƒdƒdS(Ns fmod(10,1)i iis fmod(10,0.5)gà?s fmod(10,1.5)gø?s fmod(-10,1)iöÿÿÿs fmod(-10,0.5)s fmod(-10,1.5)iÿÿÿÿgð?gg@gÀ( R>R?RtfmodR:RDRERFRARBRCRI(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestFmod¡s("""csçˆjttjƒ‡fd†}|dtjdƒd ƒ|dtjdƒd ƒ|dtjdƒdƒ|d tjd ƒdƒˆjtjtƒdtƒˆjtjtƒdtƒˆjtjtjt ƒdƒƒdS(Ncsh||\}}\}}t||ƒtks;||krdˆjd|||f||ffƒndS(Ns%s returned %r, expected %r(R R5R6(R8RoRtmantR+temantteexp(R7(s*/usr/local/lib/python2.7/test/test_math.pyt testfrexpºs" s frexp(-1)iÿÿÿÿgà¿isfrexp(0)isfrexp(1)gà?sfrexp(2)i(gà¿i(ii(gà?i(gà?i( R>R?RtfrexpRIRBRCRDRERF(R7Rƒ((R7s*/usr/local/lib/python2.7/test/test_math.pyt testFrexp·ss2fsum is not exact on machines with double roundingcsRddlm}|j‰|jˆ‰‡‡fd†}gdfdgdfddddd d d gdfd1dd3gd5fd6dd7gd9fd;dd<gd>fd@ddAgdCfgtddƒD]}d|^qÃtjdƒfgtddƒD]}d ||^qõtjdƒfgtdƒD]}d|dd|^q(dEgd fdddgdfdFddGdIddJ gdfgtd d!d"ƒD](}d |d |d#d |d$^q—dLgtjd&ƒfg }x›t|ƒD]\}\}}ytj |ƒ}WnUt k r=|j d'|||fƒn+t k rg|j d(|||fƒnX|j ||ƒqëWdd)lm} m} m} x³tdƒD]¥} d*dd+dd,d-gd.}d/} xEtd0ƒD]7}| d/| ƒƒd*| }| |7} |j|ƒqÚW| |ƒ||ƒ} |j ||ƒtj |ƒƒq¥WdS(MNiÿÿÿÿ(t float_infocs"d\}}x|D]y}tj|ƒ\}}ttj|ˆƒƒ|ˆ}}||krt|||K}|}n|||K}||7}qWtttt|ƒƒƒdˆˆ|ƒ}|dkrd|d>}|d|t||@oþ|d|d@ƒ}||7}ntj||ƒS(sÓFull precision summation. Compute sum(iterable) without any intermediate accumulation of error. Based on the 'lsum' function at http://code.activestate.com/recipes/393090/ iiii(ii( RR„RntldexpRtlentbinR tbool(titerablettmantttexpR R€R+ttailth(tetinytmant_dig(s*/usr/local/lib/python2.7/test/test_math.pytmsumÜs  #  - . gg}Ô%­I²Tgð?g}Ô%­I²Ôg0Žä.ÿ++gšd~ÅQJgð¿gšd~ÅQÊg@i5gà¿iÊÿÿÿiœÿÿÿg$@g(@g@gà?g@iiés0x1.df11f45f4e61ap+2s-0x1.62a2af1bd3624p-1ièg333333û?g€à7yÃACg¼‰Ø—²Òœ       cCs |jttjƒ|jdtjddƒdƒ|jdtjddƒdƒ|jtjttƒtƒ|jtjttƒtƒ|jtjttƒtƒ|jtjttƒtƒ|j tj tjdtƒƒƒ|j tj tjtdƒƒƒdS( Ns hypot(0,0)is hypot(3,4)iiigð?gÀ( R>R?RthypotR:RIRFRBRCRDRE(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testHypot$s"cCs|jttjƒ|jdtjddƒdƒ|jdtjddƒdƒ|jdtjddƒdƒ|jd tjddƒd ƒ|jttjd d ƒ|jttjd d ƒ|jtjd dƒdƒ|jtjd dƒdƒ|jtjtdƒtƒ|jtjtdƒtƒ|j tj tjt dƒƒƒxµddddddgD]›}|jtjt| ƒtƒ|jtjt| ƒtƒ|jtjd | ƒdƒ|jtjd | ƒdƒ|jtjd| ƒdƒ|jtjd| ƒdƒ|j tj tjt | ƒƒƒ|jttjd |ƒ|jttjd |ƒ|jtjd|ƒdƒ|jtjd|ƒdƒ|jtjt|ƒtƒ|jtjt|ƒtƒ|j tj tjt |ƒƒƒqlWdS(Ns ldexp(0,1)iis ldexp(1,1)is ldexp(1,-1)iÿÿÿÿgà?s ldexp(-1,1)iþÿÿÿgð?i@Bgð¿iÀ½ðÿgg€ii+ÿÿÿi il ii(i †l Iä Tld( l Fµx:^Vl «O»z—×pøc( R>R?RR‡R:R™RIRBRCRDRERF(R7R ((s*/usr/local/lib/python2.7/test/test_math.pyt testLdexp/s6"#cCsb|jttjƒ|jdtjdtjƒdƒ|jdtjdƒdƒ|jdtjtjƒdƒ|jdtjdd ƒd ƒ|jd tjdd ƒd ƒ|jdtjddƒd ƒ|jtjtƒtƒ|jttjt ƒ|j tj tjt ƒƒƒx?t ddƒD].}|jtj|ƒtjt|ƒƒƒq,WdS(Nslog(1/e)iiÿÿÿÿslog(1)islog(e)s log(32,2)i iislog(10**40, 10)i i(slog(10**40, 10**20)iièl «O»z—×pøcl «O»z—×pøcl Fµx:^V(R>R?RtlogR:R<RIRBRARCRDRERFRmRt(R7R ((s*/usr/local/lib/python2.7/test/test_math.pyttestLogOs#cCs7|jttjƒ|jdtjdtjdƒdƒ|jdtjdƒdƒ|jdtjtjdƒdƒ|jdtjdƒtjdƒƒ|jtjtƒtƒ|jt tjt ƒ|j tj tjt ƒƒƒd }|jtj|ƒd ƒ|jtj|ƒtjt|ƒƒƒdS( Ns log1p(1/e -1)iiÿÿÿÿslog1p(0)is log1p(e-1)slog1p(1)iiZgxá61O@l(R>R?Rtlog1pR:R<R¦RIRBRARCRDRERFtassertAlmostEqualR!(R7R ((s*/usr/local/lib/python2.7/test/test_math.pyt testLog1p^s'#%cCsû|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒ|jtjtƒtƒ|jttjt ƒ|j tj tjt ƒƒƒx?t dd ƒD].}|jtj|ƒtjt|ƒƒƒqÅWdS( Ns log10(0.1)gš™™™™™¹?iÿÿÿÿslog10(1)iis log10(10)i iè(R>R?Rtlog10R:RIR¦RBRARCRDRERFRmRt(R7R ((s*/usr/local/lib/python2.7/test/test_math.pyt testLog10kscsÙˆjttjƒ‡fd†}|dtjdƒdƒ|dtjdƒdƒˆjtjtƒd tfƒˆjtjtƒd tfƒtjtƒ}ˆjtj |d ƒƒˆjtj |d ƒƒdS(Ncsl||\}}\}}t||ƒtks?t||ƒrhˆjd|||f||ffƒndS(Ns%s returned %r, expected %r(R R5R6(R8RoRtv1tv2te1te2(R7(s*/usr/local/lib/python2.7/test/test_math.pyttestmodfzs& s modf(1.5)gø?gà?gð?s modf(-1.5)gø¿gà¿gð¿gg€ii(gà?gð?(gà¿gð¿( R>R?RtmodfRIRBRCRFRDRE(R7R±tmodf_nan((R7s*/usr/local/lib/python2.7/test/test_math.pyttestModfwscCs |jttjƒ|jdtjddƒdƒ|jdtjddƒdƒ|jdtjddƒdƒ|jdtjddƒd ƒ|jtjtdƒtƒ|jtjtdƒtƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtj tjt dƒƒƒ|jtj tjdt ƒƒƒ|jtj tjdt ƒƒƒ|jtjdt ƒdƒ|jtjd tƒd ƒ|jtjd d ƒd ƒ|jtjd d ƒd ƒ|jtjd dƒd ƒ|jtjd d ƒd ƒ|jtjd dƒd ƒ|jt tjd dƒ|jt tjd dƒ|jt tjd dƒ|jt tjd tƒ|jtj tjd t ƒƒƒ|jtjttƒtƒ|jtjtd ƒtƒ|jtjtd ƒtƒ|jtjtdƒtƒ|jtjtd ƒd ƒ|jtjtdƒd ƒ|jtjtdƒd ƒ|jtjtdƒd ƒ|jtjtdƒd ƒ|jtjttƒd ƒ|jtj tjtt ƒƒƒ|jtjdtƒd ƒ|jtjdd ƒdƒ|jtjdd ƒd ƒ|jtjddƒd ƒ|jtjdd ƒd ƒ|jtjddƒd ƒ|jt tjddƒ|jt tjddƒ|jt tjddƒ|jt tjdtƒ|jtj tjdt ƒƒƒ|jtjttƒtƒ|jtjtd ƒtƒ|jtjtd ƒtƒ|jtjtdƒtƒ|jtjtd ƒd ƒ|jtjtdƒd ƒ|jtjtdƒd ƒ|jtjtdƒd ƒ|jtjtdƒdƒ|jtjttƒd ƒ|jtj tjtt ƒƒƒ|jtjdtƒd ƒ|jtjdd ƒdƒ|jt tjdd ƒ|jtjddƒd ƒ|jtjdd ƒd ƒ|jtjddƒd ƒ|jtjddƒd ƒ|jt tjddƒ|jtjddƒdƒ|jtjdtƒd ƒ|jtj tjdt ƒƒƒ|jtjd tƒd ƒ|jtjd d ƒd ƒ|jtjd d ƒd ƒ|jtjd dƒd ƒ|jtjd d ƒd ƒ|jtjd dƒd ƒ|jtjd dƒd ƒ|jtjd dƒd ƒ|jtjd dƒd ƒ|jtjd tƒd ƒ|jtjd t ƒd ƒ|jtjd d ƒd ƒ|jtjdd ƒd ƒ|jtjt d ƒd ƒ|jtjd dƒd ƒ|jtjddƒd ƒ|jtjt dƒd ƒ|jt tjdd ƒ|jt tjddƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtjdtƒtƒ|jtjdtƒtƒ|jtjdtƒtƒ|jtjdtƒtƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtjdtƒtƒ|jtjdtƒtƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtjdtƒd ƒ|jtjdtƒtƒ|jtjdtƒtƒ|jdtjdd ƒdƒ|jd tjddƒd!ƒ|jd"tjdd ƒdƒ|jd#tjdd ƒd ƒ|jd$tjddƒd ƒ|jd%tjddƒd&ƒ|jd'tjddƒd(ƒ|jd)tjddƒd*ƒ|jt tjdd&ƒ|jt tjdd ƒdS(+Nspow(0,1)iispow(1,0)spow(2,1)is pow(2,-1)iÿÿÿÿgà?gð?gg@gffffff@g@g€gÀgffffffÀgÀgð¿g.ÀgÍÌÌÌÌÌÀgffffffþ?gš™™™™™ñ?gÍÌÌÌÌÌì?gš™™™™™¹?gš™™™™™¹¿gÍÌÌÌÌÌì¿gš™™™™™ñ¿gffffffþ¿s (-2.)**3.g Às (-2.)**2.g@s (-2.)**1.s (-2.)**0.s (-2.)**-0.s (-2.)**-1.gà¿s (-2.)**-2.gÐ?s (-2.)**-3.gÀ¿( R>R?RtpowR:RIRBRCRDRERFRA(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestPowŠsâ""""""""cCs}|jttjƒ|jdtjdƒtjƒ|jdtjdƒtjdƒ|jdtjdƒtj dƒdS( Ns radians(180)i´s radians(90)iZis radians(-45)iÓÿÿÿi(R>R?RtradiansR:R;(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testRadianss#cCs|jttjƒ|jdtjdƒdƒ|jdtjtjdƒdƒ|jdtjtj dƒdƒyB|jtjtjtƒƒƒ|jtjtjt ƒƒƒWn=t k r÷|jt tjtƒ|jt tjt ƒnX|jtjtjt ƒƒƒdS(Nssin(0)is sin(pi/2)iis sin(-pi/2)iÿÿÿÿ( R>R?RtsinR:R;RDRERBRCRARF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestSin%s#$# cCsÞ|jttjƒ|jdtjdƒdƒ|jdtjdƒdtjdƒddƒ|jdtjdƒtjdƒdƒ|jtjtƒtƒ|jtjtƒtƒ|j tj tjt ƒƒƒdS(Nssinh(0)issinh(1)**2-cosh(1)**2iiiÿÿÿÿssinh(1)+sinh(-1)( R>R?RtsinhR:RfRIRBRCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestSinh2s1)cCs¹|jttjƒ|jdtjdƒdƒ|jdtjdƒdƒ|jdtjdƒdƒ|jtjtƒtƒ|jttjtƒ|j tj tjt ƒƒƒdS(Nssqrt(0)issqrt(1)issqrt(4)ii( R>R?RtsqrtR:RIRBRARCRDRERF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestSqrt;scCs|jttjƒ|jdtjdƒdƒ|jdtjtjdƒdƒ|jdtjtj dƒdƒyB|jtjtjtƒƒƒ|jtjtjt ƒƒƒWn3|jt tjtƒ|jt tjt ƒnX|jtjtjt ƒƒƒdS(Nstan(0)is tan(pi/4)iis tan(-pi/4)iÿÿÿÿ( R>R?RttanR:R;RDRERBRCRARF(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestTanDs#$#cCs|jttjƒ|jdtjdƒdƒ|jdtjdƒtjdƒdƒ|jdtjtƒdƒ|jdtjtƒdƒ|jtjtjt ƒƒƒt j dƒj d ƒr|j tjd ƒd ƒ|j tjd tjd ƒƒtjd d ƒƒndS( Nstanh(0)istanh(1)+tanh(-1)iiÿÿÿÿs tanh(inf)s tanh(-inf)RRg€gð?(R>R?RttanhR:RBRCRDRERFR!t __getformat__R.RIRb(R7((s*/usr/local/lib/python2.7/test/test_math.pyttestTanhQs)cCs|jtjdƒdƒ|jtjdƒdƒ|jttjdƒƒtƒ|jttjdƒƒtƒ|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒ|jtjd ƒd ƒd tfd „ƒY}d tfd„ƒY}|jtj|ƒƒdƒ|jttjƒ|jttjddƒ|jttftj|ƒƒdS(Niiÿÿÿÿgø?gø¿gõ…óþÿÿ?gõ…óþÿÿ¿gé !çýÿï¿ig-²ï?YÀiœÿÿÿt TestTrunccBseZd„ZRS(cSsdS(Ni((R7((s*/usr/local/lib/python2.7/test/test_math.pyt __trunc__ks(RWRXRÅ(((s*/usr/local/lib/python2.7/test/test_math.pyRÄjst TestNoTrunccBseZRS((RWRX(((s*/usr/local/lib/python2.7/test/test_math.pyRÆnsii( RIRttruncR]RnR^R>R?tAttributeError(R7RÄRÆ((s*/usr/local/lib/python2.7/test/test_math.pyt test_trunc^s"cCsˆ|jtjtdƒƒƒ|jtjtdƒdƒƒ|jtjtdƒƒƒ|jtjdƒƒ|jtjdƒƒdS(NRRggð?(RDRRER!t assertFalse(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testIsnanxs  cCs°|jtjtdƒƒƒ|jtjtdƒƒƒ|jtjdƒƒ|jtjdƒƒ|jtjtdƒƒƒ|jtjdƒƒ|jtjdƒƒdS(NRs-infgðgðÿRggð?(RDRRR!RÊ(R7((s*/usr/local/lib/python2.7/test/test_math.pyt testIsinfssrequires verbose modecCs²ytjdƒ}Wn|jdƒnX|dkrF|jdƒnytjdƒ}Wntk rlnX|jdƒytjdƒ}Wntk r nX|jdƒdS( Ni6eÄs6underflowing exp() should not have raised an exceptionis)underflowing exp() should have returned 0iÊš;s.overflowing exp() didn't trigger OverflowErrorgð¿s sqrt(-1) didn't raise ValueError(RR+R6R™R½RA(R7R ((s*/usr/local/lib/python2.7/test/test_math.pyttest_exceptionss     c Csx ttƒD]ü\}}}}}}}|dks |dks |rLq n|dkr^q ntt|ƒ}y||ƒ} Wnitk r´dd|||f} |j| ƒn5tk rèdd|||f} |j| ƒnX|jd|||f| |ƒq WdS( NgtrecttpolarsUnexpected ValueError in stest %s:%s(%r) sUnexpected OverflowError in s %s:%s(%r)(RÎRÏ(R3t test_filetgetattrRRAR6R™R:( R7R'R(tartaiterteiR,tfuncRotmessage((s*/usr/local/lib/python2.7/test/test_math.pyt test_testfile­s"(   RRstest requires IEEE 754 doublesc Cs>d}d}g}xttƒD]ô\}}}}}tt|ƒ} d|ks[d|krdd}nd|kryd}ny| |ƒ} Wn-tk r¢d} ntk r¸d} nXd} t| tƒr–t|tƒr–tj |ƒrtj | ƒrqntj |ƒ r–tj | ƒ r–|dkrKt || d d d d ƒ} n3|d krlt || d ƒ} nt || dƒ} | dkr“qq“q–nt| t ƒrÉt|t ƒrÉ| |krÉqqÉn|j ||||| ƒ} | dk r| dj | ƒ7} n|j| ƒqW|r:|jddj|ƒƒndS(Nis${}:{}({!r}): expected {!r}, got {!r}tinvalidsdivide-by-zeroRAtoverflowR™tlgammaRg›+¡†›„ösB               ÿÿÿƒ