python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_math.cpython-311.opt-1.pyc

e}ddlmZmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
dZedZedZedZe
jjZe
jjZd\ZZeezd	kZed
kre
jdZneZe	j epe	j!Z"e	j#e"dZ$e	j#e"dZ%d
Z&dZ'dZ(dZ)dZ*dZ+dZ,d$dZ-GddZ.Gdde/Z0Gdde1Z2GddZ3Gdd ej4Z5Gd!d"ej4Z6d#Z7ed
krej8dSdS)%)verboserequires_IEEE_754)supportNgh㈵>naninf-inf)7yACg):@g7yAC__main__zmath_testcases.txtzcmath_testcases.txtcztjdtjd|d}|dkr|dz}|S)aConvert 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 native doubles are represented in IEEE 754 binary64 format.

    Note: 0.0 and -0.0 are converted to 0 and -1, respectively.
    z<qz<drl)structunpackpack)xns  B/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_math.pyto_ulpsr's?	
dFKa0011!4A1uugJHc:|rdt||dz
zzndS)zANumber of '1' bits in binary expansion of a nonnnegative integer.r)count_set_bits)rs rrrMs',-41~a!a%i((((14rc|||z
dz	}|sdS|dkr|S||zdz}t||t||zS)zProduct of integers in range(start, stop, 2), computed recursively.
    start and stop should both be odd, with start <= stop.

    r)partial_product)startstop
numfactorsmids    rrrQs\
,1$JHq	qz!Q&uc**_S$-G-GGGrcdx}}tt|D]/}|t||dzz	dzdz||z	dzdzz}||z}0||t	|z
zS)zFactorial of nonnegative integer n, via "Binary Split Factorial Formula"
    described at http://www.luschny.de/math/factorial/binarysplitfact.html

    r)reversedrange
bit_lengthrr)rinnerouteris    rpy_factorialr$_s
EE
eALLNN++
,
,
!q1u*!1A!5Q!|a7GHHH
Q***++rctt|t|z
}t||z
}||ks||krdSd}|||||S)zGiven finite floats `expected` and `got`, check that they're
    approximately equal to within the given number of ulps or the
    given absolute tolerance, whichever is bigger.

    Returns None on success and an error message on failure.
    NzAerror = {:.3g} ({:d} ulps); permitted error = {:.3g} or {:d} ulps)absrformat)expectedgotulp_tolabs_tol	ulp_error	abs_errorfmts       r
ulp_abs_checkr/jspGH%%455IHsN##IGyG33t7zz)YAAArc#Kt|d5}|D]}d|vr|d|d}|s8|d\}}|\}}}|}|d}	|dd}
||t	|t	|	|
fV	ddddS#1swxYwYdS)zParse 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]*

    utf-8encoding--N->rr)openindexstripsplitfloat)fnamefplinelhsrhsidfnarg
rhs_piecesexpflagss           rparse_mtestfilerF|s9
eg	&	&	&:"
	:
	:Dt||-TZZ---.::<<
zz$''HC))++KBCJQ-CqrrNEr5::uSzz599999
	:::::::::::::::::::sB5CCCc
#Kt|d5}|D]}|ds|s,|d\}}|\}}}}|}	|	d|	d}}
|	dd}||t	|t	|t	|
t	||fV	ddddS#1swxYwYdS)	zParse a file with test values

    Empty lines or lines starting with -- are ignored
    yields id, fn, arg_real, arg_imag, exp_real, exp_imag
    r1r2r4r5rrN)r6
startswithr8r9r:)
r;r<r=r>r?r@rAarg_realarg_imagrCexp_realexp_imagrEs
             rparse_testfilerNsO
eg	&	&	&"		Dt$$
DJJLL
zz$''HC),&BHhJ!+A
1
hHqrrNEr??E(OO??E(OO



	sCC00C47C4c||krdSd}t|tr%t|trt|}n9t|tr$t|trt|}t|tr{t|trftj|rtj|rd}n;tj|stj|rnt
||||}|2d}|||}|d|z
}|SdS)aCompare arguments expected and got, as floats, if either
    is a float, using a tolerance expressed in multiples of
    ulp(expected) or absolutely (if given and greater).

    As a convenience, when neither argument is a float, and for
    non-finite floats, exact equality is demanded. Also, nan==nan
    as far as this function is concerned.

    Returns None on success and an error message on failure.
    Nz	not equalzexpected {!r}, got {!r}z ({}))
isinstancer:intmathisnanisinfr/r')r(r)r*r+failurefail_fmtfail_msgs       rresult_checkrZsAhtG(E""#z#s';';#Cjj	C		#Jx$=$=#??(E""	Ez#u'='=	E:h	EDJsOO	EGG
Z
!
!	ETZ__	E$Hc7GDDG,??8S11GNN7+++trceZdZdZdZdS)	FloatLikec||_dSNvalueselfr`s  r__init__zFloatLike.__init__



rc|jSr^r_rbs r	__float__zFloatLike.__float__
zrN)__name__
__module____qualname__rcrgrrr\r\2rr\ceZdZdS)IntSubclassNrirjrkrlrrrorosDrroceZdZdZdZdS)MyIndexablec||_dSr^r_ras  rrczMyIndexable.__init__rdrc|jSr^r_rfs r	__index__zMyIndexable.__index__rhrNrirjrkrcrurlrrrrrrrmrrrceZdZddZdS)BadDescrNctr^)
ValueError)rbobjobjtypes   r__get__zBadDescr.__get__srr^)rirjrkr}rlrrrxrxs(rrxceZdZdMdZdZdZdZdZdZd	Z	d
Z
dZdZd
Z
edZdZejejdkoejdvddZdZdZdZdZdZdZejdZdZ dZ!dZ"eeje#ddZ$d Z%d!Z&eeje#d"d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.ed+Z/eej0d,dd-Z1d.Z2d/Z3d0Z4d1Z5ed2Z6d3Z7d4Z8d5Z9d6Z:d7Z;ed8Z<d9Z=d:Z>d;Z?d<Z@ed=ZAed>ZBejCeDd?d@ZEedAZFedBZGdCZHdDZIdEZJedFZKedGZLdHZMdIZNdJZOdKZPdLS)N	MathTestsrOrPct||||}|+|d||dSdS)aaCompare arguments expected and got, as floats, if either
        is a float, using a tolerance expressed in multiples of
        ulp(expected) or absolutely, whichever is greater.

        As a convenience, when neither argument is a float, and for
        non-finite floats, exact equality is demanded. Also, nan==nan
        in this function.
        Nz{}: {})rZfailr')rbnamer)r(r*r+rWs       rftestzMathTests.ftestsKxgw??IIhoodG4455555rc|dtjd|dtjd|tjdtjzdS)Npig-DT!	@egiW
@rH)rrTrrassertEqualtaurfs r
testConstantszMathTests.testConstantssX

4"<===

3 :;;;1TW9-----rcT|ttj|dtjdtj|dtjdtjdz|dtjdd|ttjt|ttjt|ttjdtz|ttjdtz
|
tjtjtdS)Nzacos(-1)zacos(0)rrHzacos(1)r)
assertRaises	TypeErrorrTacosrrrzINFNINFeps
assertTruerUNANrfs rtestAcoszMathTests.testAcoss)TY///

:ty}}dg666

9dillDGAI666

9dillA...*di555*di666*diS999*dic:::
49S>>2233333rc|ttj|dtjdd|dtjdd|t
tjd|t
tjd|tjtt|t
tjt|	tj
tjtdS)Nzacosh(1)rrzacosh(2)rHg5qB?r)rrrTacoshrrzrrrrrUrrfs r	testAcoshzMathTests.testAcoshs)TZ000

:tz!}}a000

:tz!}}.@AAA*dj!444*dj"555C#...*dj$777
4:c??3344444rc\|ttj|dtjdtjdz|dtjdd|dtjdtjdz|ttjt|ttjt|ttjdtz|ttjdtz
|
tjtjtdS)Nzasin(-1)rrHzasin(0)rzasin(1)r)
rrrTasinrrrzrrrrrUrrfs rtestAsinzMathTests.testAsins)TY///

:ty}}twhqj999

9dillA...

9dillDGAI666*di555*di666*diS999*dic:::
49S>>2233333rc|ttj|dtjdd|dtjdd|dtjdd|tjtt|tjtt|tj	tjtdS)	Nzasinh(0)rzasinh(1)rg'ya64?z	asinh(-1)rg'ya64)rrrTasinhrrrrrrUrrfs r	testAsinhzMathTests.testAsinh&s)TZ000

:tz!}}a000

:tz!}}.ABBB

;
20DEEEC#...D))4000
4:c??3344444rc|ttj|dtjdtjdz|dtjdd|dtjdtjdz|dtjttjd	z|d
tjttjd	z|tj	tjtdS)Nzatan(-1)rzatan(0)rzatan(1)rz	atan(inf)rHz
atan(-inf))rrrTatanrrrrrrUrrfs rtestAtanzMathTests.testAtan/s)TY///

:ty}}twhqj999

9dillA...

9dillDGAI666

;	#	:::

<447(1*===
49S>>2233333rc|ttj|dtjdd|dtjdd|dtjdd|ttjd	|ttjd
|ttjt|ttjt|	tj
tjtdS)Nzatanh(0)rz
atanh(0.5)?gz?zatanh(-0.5)gzrr)rrrTrratanhrzrrrrUrrfs r	testAtanhzMathTests.testAtanh8s
)TY///

:tz!}}a000

<C2EFFF

=$*T"2"24HIII*dj!444*dj"555*dj#666*dj$777
4:c??3344444rc0|ttj|dtjddtjdz|dtjddtjdz|dtjddd|d	tjddtjdz|d
tjddtjdz|dtjdddtjzdz|d
tjdttj|dtjddtj|dtjddtj|tjddd|tjddd|tjdtd|	tj
tjdt|dtjdttj|dtjddtj|dtjddtj|tjddd|tjddd|tjdtd|	tj
tjdt|dtjtttjdzdz|dtjtdtjdz|dtjtdtjdz|dtjtdtjdz|dtjtdtjdz|dtjtttjdz|	tj
tjtt|dtjtttjdzdz|dtjtdtjdz|dtjtdtjdz|d tjtdtjdz|d!tjtdtjdz|d"tjtttjdz|	tj
tjtt|d#tjdttj|d$tjddtjdz|d%tjddtjdz|tjdtd|	tj
tjdt|d&tjdttj|d'tjddtjdz|d(tjddtjdz|tjdtd|	tj
tjdt|	tj
tjtt|	tj
tjtd|	tj
tjtd|	tj
tjtd|	tj
tjtd|	tj
tjtt|	tj
tjttdS))Nzatan2(-1, 0)rrrHzatan2(-1, 1)rrzatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(1, -1)zatan2(0., -inf)rPzatan2(0., -2.3)ffffffzatan2(0., -0.)ffffff@zatan2(-0., -inf)zatan2(-0., -2.3)zatan2(-0., -0.)zatan2(inf, -inf)zatan2(inf, -2.3)zatan2(inf, -0.)zatan2(inf, 0.)zatan2(inf, 2.3)zatan2(inf, inf)zatan2(-inf, -inf)zatan2(-inf, -2.3)zatan2(-inf, -0.)zatan2(-inf, 0.)zatan2(-inf, 2.3)zatan2(-inf, inf)zatan2(2.3, -inf)zatan2(2.3, -0.)zatan2(2.3, 0.)zatan2(-2.3, -inf)zatan2(-2.3, -0.)zatan2(-2.3, 0.))rrrTatan2rrrrrrrUrrfs r	testAtan2zMathTests.testAtan2Cs)TZ000

>4:b!#4#4twhqjAAA

>4:b!#4#4twhqjAAA

=$*Q"2"2A666

=$*Q"2"2DGAI>>>

=$*Q"2"2DGAI>>>

>4:a#4#4aikBBB	

$djT&:&:DGDDD

$djT&:&:DGDDD

#TZC%8%8$'BBBB++R000B,,b111B,,b111
4:b##6#677888

%tz#t'<'<twhGGG

%tz#t'<'<twhGGG

$djc&:&:TWHEEEC,,c222C--s333C--s333
4:c3#7#788999

%tz#t'<'<dgaikJJJ

%tz#t'<'<dgaiHHH

$djd&;&;TWQYGGG

#TZS%9%94719EEE

$djc&:&:DGAIFFF

$djc&:&:DGAIFFF
4:c3#7#788999

&
4(>(>
1MMM

&
4(>(>
KKK

%tz$'='=xzJJJ

$djs&;&;dgXaZHHH

%tz$'<'<twhqjIII

%tz$'<'<twhqjIII
4:dC#8#899:::

%tz#t'<'<dgFFF

$djc&:&:DGAIFFF

#TZR%8%8$'!)DDDC--r222
4:c3#7#788999

&
4(>(>III

%tz$'<'<twhqjIII

$djr&:&:TWHQJGGGD#..444
4:dC#8#899:::
4:c4#8#899:::
4:c4#8#899:::
4:c3#7#788999
4:c2#6#677888
4:c3#7#788999
4:c3#7#788999
4:c3#7#78899999rc|ttj|dtjdd|dtjdd|dtjdd|dtjd	d	|d
tjdd|dtjd
d|dtjdd|dtjdd|dtjdd|dtjdd|tjtt|tjtt|tj	tjtdS)Nzcbrt(0)rzcbrt(1)rzcbrt(8)rHz	cbrt(0.0)rPz
cbrt(-0.0)rz	cbrt(1.2)g333333?ggAE?z
cbrt(-2.6)ggL]6Hzcbrt(27)rzcbrt(-1)rz	cbrt(-27)i)rrrTcbrtrrrrrrUrrfs rtestCbrtzMathTests.testCbrts)TY///

9dillA...

9dillA...

9dillA...

;	#444

<4$777

;	#0ABBB

<42DEEE

:ty}}a000

:ty}}b111

;	#3333---4$///
49S>>2233333rc,|ttj|t
t
tjd|tjdd|tjdd|tjdd|tjdd|tjdd	|tjd
d	|tjdd|tjddGd
d}Gddt}Gdd}Gdd}|tj|d|tj|d|tjtdd|ttj||ttj||}d|_
|ttj||ttj|d|tjtdd|tjtdddS)Nrr??rHrrrrPrceZdZdZdS)$MathTests.testCeil.<locals>.TestCeilcdSN*rlrfs r__ceil__z-MathTests.testCeil.<locals>.TestCeil.__ceil__rrNrirjrkrrlrrTestCeilr#




rrceZdZdZdS)%MathTests.testCeil.<locals>.FloatCeilcdSrrlrfs rrz.MathTests.testCeil.<locals>.FloatCeil.__ceil__rrNrrlrr	FloatCeilrrrrceZdZdS)&MathTests.testCeil.<locals>.TestNoCeilNrprlrr
TestNoCeilrDrrc"eZdZeZdS)'MathTests.testCeil.<locals>.TestBadCeilN)rirjrkrxrrlrrTestBadCeilrsxzzHHHrrrg@E@+c|Sr^rlargss r<lambda>z$MathTests.testCeil.<locals>.<lambda>s4r)rrrTceilrrStyper:r\rzr)rbrrrrts      rtestCeilzMathTests.testCeils!)TY///d49S>>223333+++3+++3+++4!,,,4"---4"---3+++4!,,,
																									"	"	"	"	"	"	"	"88::..33399;;//4449T??33R888)TY

===*di???JLL''
)TY222)TY15559T??33T:::9T??33T:::::rc	|tjddd|tjddd|tjddd|tjddd|tjd	d
d|ttj|tjddd|tjdd
d|tjt
dt
|tjt
d
t|tjtdt
|tjtd
t|tjdt
d|tjdtd|tjt
t
t
|tjt
tt|tjtt
t
|tjttt|tjtjtd|tjtjtt
|tjtjtt|tjtjtt|tj
tjt
t|ttjdtddS)
NrrrrPirr@@r@)rrTcopysignrrrrrrUrrVr&rfs rtestCopysignzMathTests.testCopysignsVq"--s333r2..444r3//666q"--s333r3//666)T]333r2..333r3//555sB//555sC00$777tR00#666tS114888r3//444r400#666sC00#666sD114888tS113777tT22D999
4=b#9#9::;;;
4=c#:#:;;<<<
4=d#;#;<<===
4=c#:#:;;<<<	

4=c#:#:;;<<<T]2s3344b99999rcv|ttj|dtjtjdzdtjd|dtjdd|dtjtjdzdtjd|dtjtjd		|tjtjt|tjtjtnf#t$rY|ttjt|ttjtYnwxYw|tjtjtdS)
Nz
cos(-pi/2)rHrrr+zcos(0)z	cos(pi/2)zcos(pi)r)
rrrTcosrrulprrUrrrzrrfs rtestCoszMathTests.testCoss)TX...

<47(1*!5!5q$(1++
NNN

8TXa[[!,,,

; 3 3Q
LLL

9dhtw//444	:OODJtx}}55666OODJtx~~667777	:	:	:j$(C888j$(D99999	:	

48C==1122222sA<FA G87G8win32)ARMARM64zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPcn|ttj|dtjdd|dtjddtjddzzz
d|tjtt|tjtt|tj	tjtdS)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2rHr)rrrTcoshrrrrrrUrrfs rtestCoshzMathTests.testCoshs	
)TY///

9dillA...

)49Q<<$)A,,/8I+I2NNN3---4#...
49S>>2233333rc|ttj|dtjtjd|dtjtjdzd|dtjtjdzd|d	tjd
d
dS)Nzdegrees(pi)gf@z
degrees(pi/2)rHgV@zdegrees(-pi/4)rgFz
degrees(0)r)rrrTdegreesrrrfs rtestDegreeszMathTests.testDegreess)T\222

=$,tw"7"7???

?DL$;$;TBBB

#T\47(1*%=%=uEEE

<a!44444rc|ttj|dtjddtjz|dtjdd|dtjdtj|tjtt|tjtd|	tj
tjt|ttjddS)	Nzexp(-1)rrzexp(0)rzexp(1)rP@B)
rrrTrDrrrrrrrUr
OverflowErrorrfs rtestExpzMathTests.testExps)TX...

9dhrllAdfH555

8TXa[[!,,,

8TXa[[$&111#,,,$,,,
48C==11222-7;;;;;rc|ttj|dtjdd|dtjdd|dtjdd|d	tjd
d|tjtt|tjtd|tj	tjt|ttjd
dS)Nzexp2(-1)rrzexp2(0)rrzexp2(1)rHz	exp2(2.3)rg){IJ@rPr)rrrTexp2rrrrrrUrrrfs rtestExp2zMathTests.testExp2s)TY///

:ty}}c222

9dillA...

9dillA...

;	#0ABBB3---4"---
49S>>22333-G<<<<<rcF|ttj|dtjdd|dtjdd|dtjdddS)Nzfabs(-1)rrzfabs(0)rzfabs(1))rrrTfabsrrfs rtestFabszMathTests.testFabssz)TY///

:ty}}a000

9dillA...

9dillA.....rc|tjddd}tddD]d}||z}|tj|||tj|t	|e|ttjd|ttjddzdS)Nrrr
d)rrT	factorialrr$rrz)rbtotalr#s   r
testFactorialzMathTests.testFactorials**A...q$	A	AAQJET^A..666T^A..Q@@@@*dnb999*dnr3wh?????rcb|ttjd|ttjd|ttjd|ttjd|ttjt	jd|ttjt	jd|ttjddS)N@g@r}Ô%I5z5.2)rrrTrdecimalDecimalrfs rtestFactorialNonIntegersz"MathTests.testFactorialNonIntegerss)T^S999)T^S999)T^T:::)T^V<<<)T^W_S5I5IJJJ)T^W_U5K5KLLL)T^S99999rc|ttjddz|ttjddS)Nrr}Ô%IT)rrrTrrrfs rtestFactorialHugeInputsz!MathTests.testFactorialHugeInputs(sB	
-SAAA)T^U;;;;;rc|ttj|t
t
tjd|tjdd|tjdd|tjdd|tjdd|tjdd|tjd	d
Gdd}Gd
dt}Gdd}Gdd}|tj|d|tj|d|tjtdd|ttj||ttj||}d|_
|ttj||ttj|d|tjtdd|tjtdddS)NrrrrrrrrrceZdZdZdS)&MathTests.testFloor.<locals>.TestFloorcdSrrlrfs r	__floor__z0MathTests.testFloor.<locals>.TestFloor.__floor__=rrNrirjrkrrlrr	TestFloorr
<rrrceZdZdZdS)'MathTests.testFloor.<locals>.FloatFloorcdSrrlrfs rrz1MathTests.testFloor.<locals>.FloatFloor.__floor__@rrNr
rlrr
FloatFloorr?rrrceZdZdS)(MathTests.testFloor.<locals>.TestNoFloorNrprlrrTestNoFloorrBrrrc"eZdZeZdS))MathTests.testFloor.<locals>.TestBadFloorN)rirjrkrxrrlrrTestBadFloorrD 

IIIrrrg33333D@)c|Sr^rlrs rrz%MathTests.testFloor.<locals>.<lambda>MsDr)rrrTfloorrrSrr:r\rzr)rbrrrrrs      r	testFloorzMathTests.testFloor/s)TZ000d4:c??33444C!,,,C!,,,C!,,,D))2...D))2...D))2...
																									#	#	#	#	#	#	#	#IIKK00"555JJLL112666IdOO44b999)TZ???*dj,,..AAAKMM(()TZ333)TZA666IdOO44d;;;IdOO44d;;;;;rc|ttj|dtjddd|dtjddd|dtjddd	|d
tjddd|d
tjddd|dtjddd|tjtjtd	|tjtjd	t|tjtjtt|ttjd	d|ttjtd	|ttjtd	|ttjtd|tjdtd|tjdtd|tjdtd|tjdtd|tjddd|tjdtd|ttjttdS)Nzfmod(10, 1)rrrPz
fmod(10, 0.5)rz
fmod(10, 1.5)rrzfmod(-10, 1)rzfmod(-10, 0.5)zfmod(-10, 1.5)rr)rrrTfmodrrrUrrzrrrrfs rtestFmodzMathTests.testFmodTs)TY///

=$)B"2"2C888

?DIb#$6$6<<<

?DIb#$6$6<<<

>49S!#4#4d;;;

#TYsC%8%8$???

#TYsC%8%8$???
49S"#5#566777
49R#5#566777
49S##6#677888*diR888*dib999*dir:::*dib9993,,c2224--t4443--s3334..5553,,c2223--s333*dic:::::rcttjfd}|dtjdd|dtjdd|dtjd	d
|dtjdd
tjt
dt
tjtdttjtjtddS)Nc||c\}}\}}t||z
tks||kr|d|d|dSdSNz
 returned z, expected r&rr)rresultr(mantrDemanteexprbs       r	testfrexpz&MathTests.testFrexp.<locals>.testfrexpnsq)/&KT3%4:$$t		44344444)4rz	frexp(-1)r)rrzfrexp(0)rrrzfrexp(1)r)rrzfrexp(2)rH)rrH)
rrrTfrexprrrrrUr)rbr+s` r	testFrexpzMathTests.testFrexpks)TZ000	4	4	4	4	4		+tz"~~y999	*djmmV444	*djmmX666	*djmmX666C+S111D))!,d333
4:c??1#56677777rz2fsum is not exact on machines with double roundingcddlm}|j|jz
fd}gdfdgdfgddfgddfgdd	fgd
dfgdd
fgddfdt	ddDt
dfdt	ddDt
dfgddfgddfdt	dddDdgzt
dfg
}dt	dD|fd t	d!Dd!gzdft|D]\}\}}	tj
|}nQ#t$r|d"|||fzYn*t$r|d#|||fzYnwxYw|||dd$lm}m}	m}
t	d!D]}gd%d&z}d}t	d'D]6}|	d|d(z|z
}
||
z
}||
7|
|||}|||tj
||tj
d)tjgtj|tjtj
tjd)g|tj
d*t-d)d+dd,t-d-d.gd|ttj
d/d/g|ttj
tjtjg|t0tj
d0g|t0tj
d|ttj
d&d!zgd1}|t2tj
|dS)2Nr)
float_infoc	d\}}|D]^}tj|\}}ttj|	|	z
}}||kr|||z
z}|}n|||z
z}||z
}_t	tt
t|dz
	z
|z
}|dkr3d|dz
z}|d|zzt||zo
|d|zdz
zz}||z
}tj||S)zFull precision summation.  Compute sum(iterable) without any
            intermediate accumulation of error.  Based on the 'lsum' function
            at http://code.activestate.com/recipes/393090/

            r,rHrrr)	rTr-rSldexpmaxlenbinr&bool)
iterabletmanttexprr(rDtailhetinymant_digs
        rmsumz MathTests.testFsum.<locals>.msumsKE4

 JqMM	c
4 : :;;S8^c#::d3h&EDDSX%D

s3s5zz??++A-8%$,GGDaxx$q&M!A#eai.IEAaCEM)J)JJ:eT***rrP)rrr0.++d~QJrd~Qr?)rrrr?r@rrA)@Crgg?C)rBr9g@C)g@CrrCg@C)g?Crg<g?Ccg|]}d|zSrrl.0rs  r
<listcomp>z&MathTests.testFsum.<locals>.<listcomp>s
+
+
+qbd
+
+
+rriz0x1.df11f45f4e61ap+2cg|]
}d|z|zS)rrlrFs  rrHz&MathTests.testFsum.<locals>.<listcomp>s 
1
1
1QsQhqj
1
1
1rz-0x1.62a2af1bd3624p-1)r	rgؗҜ<g7yAC)g7yACg?g7yAgc<g|]}d|zd|dzzz
d|dzzzS)r24rlrFs  rrHz&MathTests.testFsum.<locals>.<listcomp>s6
L
L
L!b!eb1R4j 2":-
L
L
LrirHgz0x1.5555555555555p+970cg|]}d|zS)g333333?rl)rGr#s  rrHz&MathTests.testFsum.<locals>.<listcomp>s---Aa---rc8g|]}|dz|z
Srrl)rGr#termss  rrHz&MathTests.testFsum.<locals>.<listcomp>s*888qU1Q3Z%(
"888rrzDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))randomgaussshuffle)rirgh$.5g#B;rrUrrrr@rrAspamc3KdVt)Nr)ZeroDivisionErrorrlrrbad_iterz$MathTests.testFsum.<locals>.bad_itersIII##r)sysr0r=min_exprr:fromhexappend	enumeraterTfsumrrrzrrRrSrTrrrUrr\rrrZ)rbr0r>test_valuesr#valsr(actualrRrSrTjsvr[r<r=rQs               @@@rtestFsumzMathTests.testFsum}s$	#"""""&"X-	+	+	+	+	+	+8IUCL
<
<
<fE
:
:
:FC
'
'
'5
&
&
&4
+
+
+\:
)
)
);7
+
+E!TNN
+
+
+
]]1
2
2
4
1
1%4..
1
1
1
]]2
3
3
5


 34
=
=
=sC
L
LuUC7K7K
L
L
L[
]]3
4
4
6!,.-t---8888E$KK888U4[L>I
1XI
			
$-[#9#9		/		/Ah
I4 
I
I
I		256$4GHIIIII
I
I
I		256$4GHIIIII
I
VX....1111111111t
	:
	:A8882=DA3ZZ

E!VVXX&&!+a/QAGDMMMT

ATT$ZZ49999C?33TX>>>
49dh_#=#=>>???E9S>>66$()D//5$BCCDJ	L	L	L-VV4DEEE*di$(TXI1FGGG)TY999)TY222-RXJ???	$	$	$	
+TY

CCCCCs#E88%G$GGctj}||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddd	||dd
d	||ddd
d}d}dD]}||z}||z}||||||||||||||||||||||||||||||||||||||||||d||dd||d
d||dddd||dddd|t|d|t|dd|t|dd|t|ddd||tdtdd	dS)NrrrrUxT j9W P)} "o`T"- l8P9cC/
S9bXl	9@{wM275k )	lZ'^%#>;*Q!/61^f^@U@)rTgcdrrrrr)rbrxrycabs       rtestGcdzMathTests.testGcdshQA&&&QA&&&RQ'''QA&&&QQ'''QA&&&QQ'''S"q)))S"r***R+++98::;=	?	?	?
O4V	-	-AAAAASSAYY***SSAYY***SS!QZZ+++SSQBZZ+++SSQBZZ+++SS!QZZ+++SS!aR[[!,,,SS!aR[[!,,,,"""S3'''TC(((S"c**A...S!R!,,,)S%000)S%444)S#t444)S#q$777[--{2??DDDDDrcddlm}ddlm}tj}tjtjt	jdt	j	dt	j
df}tt|dzD]T}|
||d|t	jtd|d|DU||d	d
d||dd
d||ddt	jd||dt!dt	jd|||d|d
d|||dd|d
d|dd||t#dt#dt#dt#dt	jd||ddd||dd||d|dt	jd|d||ddd|ddd|t(5|ddddn#1swxYwY|t(5|ddddddn#1swxYwYdt*jjd
zz}|t0t2f5|d|dddn#1swxYwY||t4t4||dt4t4||dt4t4||d t4t4||t6t4t4||t4t6t4||t8t6t4||t6t8t4||t4t4t4||t4t4t4||dt4t4|t	j|t6|t	j|dt6|t	j|t6d|t	j|dt6|t	j|t6t6|t	j|t6t>d!z}tdD]F}|t	j ||g|z|t	j|zGtdD]A}	tBd|	zz}
|t	jd"|
zd|
zd
|
zB|jt(tjgdgd#zd$RdS)%NrrFractionr@g@rc3 K|]	}|dzV
dS)rHNrl)rGrfs  r	<genexpr>z&MathTests.testHypot.<locals>.<genexpr>%s&55qad555555rg(@r*@rnrO
rrHrrrrrP%%@rrrrr皙?string皙@rrrrrX)"rr	fractionsrrThypotrrsqrtgammasinrr4assertAlmostEqualsumrr\r6rrrr\r0
max_10_exprzrrrrrrU	FLOAT_MAXisclose	FLOAT_MIN)rbrrrrr#int_too_big_for_float	fourthmaxrrDscales           r	testHypotzMathTests.testHypots######&&&&&&
vtw	#
3#Ns4yy{##		A""tBQBx 	#55D!H5555566



	
tS))4000r1r***q"ty||444q)C..1149Q<<@@@wwr{{GGAJJ77<<<xxB//!RAA88BPRCSCSTTTtAwwQa$q''BBDIaLLQQQ	
sC#...ut,,,#&&&M#uuT{{++	
	
	
	
E#sC  E#sC  	
	
	


y
)
)		EAJJJJ															


y
)
)	&	&E#x%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	& "s~'@1'D E



M:
;
;	,	,E!*+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	
sS)))q#,,,r3---sC#...sC#...sC#...tS))3///sD))3///tS))3///tcT**C000rC4#...	

55::..///
55C==11222
55b>>22333
55S>>22333
55c??33444
55::..///O	r	D	DAOODL)Q)@)2TYq\\)ACC
D
D
D
D99	D	DCs
*ETZ%5991U7CCCC)TZEC58EfEEEEEEs6<
MMM:NNN
O00O47O4z7hypot() loses accuracy on machines with double roundingc	Jtj}tj}tjd}dD]\}}t
|}t
|}|||||5tj|5t||dz||dzz	}dddn#1swxYwY|
||||dddn#1swxYwYdS)N)prec))z0x1.10e89518dca48p+29z0x1.1970f7565b7efp+30)z0x1.10106eb4b44a2p+29z0x1.ef0596cdc97f8p+29)z0x1.459c058e20bb7p+30z0x1.993ca009b9178p+29)z0x1.378371ae67c0cp+30z0x1.fbe6619854b4cp+29)z0x1.f4cd0574fb97ap+29z0x1.50fe31669340ep+30)z0x1.494b2cdd3d446p+29z0x1.212a5367b4c7cp+29)z0x1.f84e649f1e46dp+29z0x1.1fa56bef8eec4p+30)z0x1.2e817edd3d6fap+30z0x1.eb0814f1e9602p+29)z0x1.0d3a6e3d04245p+29z0x1.32a62fea52352p+30)z0x1.888e19611bfc5p+29z0x1.52b8e70b24353p+29)z0x1.538816d48a13fp+29z0x1.7967c5ca43e16p+29)z0x1.57b47b7234530p+29z0x1.74e2c7040e772p+29)z0x1.821b685e9b168p+30z0x1.677dc1c1e3dc6p+29)z0x1.9e8247f67097bp+29z0x1.24bd2dc4f4baep+29)z0x1.b73b59e0cb5f9p+29z0x1.da899ab784a97p+28)z0x1.94a8d2842a7cfp+30z0x1.326a51d4d8d8ap+30)z0x1.e930b9cd99035p+29z0x1.5a1030e18dff9p+30)z0x1.1592bbb0e4690p+29z0x1.a9c337b33fb9ap+29)z0x1.1243a50751fd4p+29z0x1.a5a10175622d9p+29)z0x1.57a8596e74722p+30z0x1.42d1af9d04da9p+30)z0x1.ee7dbd9565899p+29z0x1.7ab4d6fc6e4b4p+29)z0x1.5c6bfbec5c4dcp+30z0x1.02511184b4970p+30)z0x1.59dcebba995cap+30z0x1.50ca7e7c38854p+29)z0x1.768cdd94cf5aap+29z0x1.9cfdc5571d38ep+29)z0x1.dcf137d60262ep+29z0x1.1101621990b3ep+30)z0x1.3a2d006e288b0p+30z0x1.e9a240914326cp+29)z0x1.62a32f7f53c61p+29z0x1.47eb6cd72684fp+29)z0x1.d3bcb60748ef2p+29z0x1.3f13c4056312cp+30)z0x1.282bdb82f17f3p+30z0x1.640ba4c4eed3ap+30)z0x1.89d8c423ea0c6p+29z0x1.d35dcfe902bc3p+29)hxhyrryrH)rTrrrContextr:r^subTestlocalcontextrr)	rbrrhigh_precisionrrrryzs	         rtestHypotAccuracyzMathTests.testHypotAccuracyhs
/ c222$
*	1*	1FBJ

b!!A

b!!Aa155
1
1).99FFwwqzz1}wwqzz1}<BBDDEEAFFFFFFFFFFFFFFF  q!a000
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1O*	1*	1s6D=C D C$$D'C$(#DD	D	cBddlm}ddlm}tj}tj}||ddd||dddtd	D]}td
D]}tdt|D}tdt|D}|
||||td
t||D||gdgdd||tgdtgdd||ddd||ddd||tddfdd||dtddfd||dtdfdd||ddd|||d|df|d|df|d|||dd|ddf|dd|ddf|dd||dd|d ||d!d!d"||d#d#d"|d$t	jd$|d%d&|d$t	jd$|d&d%||d'd(|d)d(Gd*d+t}	|||	ddd|t"5|dd,-dddn#1swxYwY|t"5|ddddn#1swxYwY|t"5|dd,d.dddn#1swxYwY|t"5|dddddn#1swxYwY|t"5|d/ddddn#1swxYwY|t$5|d0d1dddn#1swxYwY|t$5|dd2dddn#1swxYwY|t"5|d3d4dddn#1swxYwY|t"5|d5d6dddn#1swxYwYd7t&jjd
zz}
|t$t,f5|d|
fd8dddn#1swxYwY|t$t,f5|d8d|
fdddn#1swxYwY|t"5|d9ddddn#1swxYwY|t"5|dgddddn#1swxYwYGd:d;}|t$5|dg|gdddn#1swxYwYtd<D]Z}t/jt/j}}|||f|ft1||z
[t2d=d>d"d?t4t6g}t9j|d@AD]}t9j|d@AD]}dBt||D}
t=t?tj |
r&||||t4it=t?tj!|
r1|"t	j!|||ŒtFdCz}tdD]}|f|z}d&|z}|"t	j$||||t	j|z|"t	j$||||t	j|ztdD]s}tJd |zz}dD|zd@|zf}dE}|t	j||d
|z|t	j||d
|ztdS)FNrrr)rrr)rrrr)rrHr)rrHr	rOc3@K|]}tjddVdSrONrRuniformrGks  rrz%MathTests.testDist.<locals>.<genexpr>.BBA&.Q//BBBBBBrc3@K|]}tjddVdSrrrs  rrz%MathTests.testDist.<locals>.<genexpr>rrc3,K|]\}}||z
dzVdS)rNrlrGpxqxs   rrz%MathTests.testDist.<locals>.<genexpr>s/FF&"bb2g#-FFFFFFr),@r)rrr)r)rHrrr)rrrr)rHi)rrrHrr)TTFTF)TFTTFr)g*@g)@g
rPrlr)r)rP)rrr)rrr)rrrceZdZdS)MathTests.testDist.<locals>.TNrprlrrTrrrr)rrOru)pq)rUrr)rrr)rrHrr)rOrurU)rrOrurU)rrrrrrrrrrrrrrrrrrX)rrrrrrrrrrrrrrrrrrabcxyzr)rHrrPc"eZdZeZdS)$MathTests.testDist.<locals>.BadFloatN)rirjrkrxrgrlrrBadFloatrrrrrrrr)repeatcg|]
\}}||z
Srlrlrs   rrHz&MathTests.testDist.<locals>.<listcomp>s 999VRb999rrr)rPrP)&rrrrrTdistrrrtuplerrzipiterr\rrrrzr\r0rrrRr&rrr	itertoolsproductanymaprVrUrrrr)rbDFrrr#rerrrrrvaluesdiffsrrrDrs                  rtestDistzMathTests.testDists|((((((++++++yy	
o/?@@#FFFi44c:::q		A1XX

BBqBBBBBBBqBBBBB&&DAJJDFFC1IIFFFFFGG
	
ooo/?/?/?@@#FFFd???33T:J:J:J5K5KLLcRRR	
k;77>>>gw//444y~~q17;;R@@@g	#';<<bAAAr9S>>2G<<bAAAh00"555qquuaaddmaaddAAbEE];;QQrUUCCCqqRyy!!Ar((3aa2hh"b		5JKK2r	$	$	$>>@@c	$	$	$
	
2244				
b"s+++M#ttGV4455	
	
	
	
M#ttFG4455	
	
	
	
D),,D),,	
	
	
								aa	llZ993???

y
)
)	+	+D9	****	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+


y
)
)		DOOO															


y
)
)	2	2DIy111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2


y
)
)		DAJJJ															


y
)
)	2	2D%y111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2


z
*
*	*	*Dy)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*


z
*
*	*	*DL)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*


y
)
)	/	/D$g...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/


y
)
)		D															 "s~'@1'D E



M:
;
;	5	5D!*+V444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5



M:
;
;	5	5D!23444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5


y
)
)		DqMMM															


y
)
)		D!aLLL																#	#	#	#	#	#	#	#

z
*
*	$	$D!xxzzl###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$r	;	;A=??FMOOqATT1$--s1q5zz::::tS$S9"6!444	<	<A&va888
<
<99s1ayy999s4:u--..<$$TT!QZZ5555TZ//00<OODJttAqzz$:$:;;;
<O	r	P	PAq A
AOODLaY15MNNOOOOODLaY15MNNOOOO99	7	7Cs
*E5!E'"AATYq!__ag666TYq!__ag6666	7	7s(RR	R'R??SS$S>>TT#
T<<UU!
U::U>U>
V88V<?V<
W66W:=W:
X44X8;X8
Y22Y69Y65[[[<\\\<
]]]:^^^_))_-0_-c|t5tjddggdddddS#1swxYwYdS)NrrH)rrrO)rrzrTrrfs rtest_math_dist_leakzMathTests.test_math_dist_leak(s


z
*
*	)	)Iq!fiii(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)sAA	ActtdttddzdtddDzddzd	d
zgz}|D]}||5tj|}|t
|t|||z||	||dz|dzzdddn#1swxYwY|
t5tjd
dddn#1swxYwYtjd}|t
|t||dtjd}|t
|t||dGddt}tj|d}|t
|t||d|
t5tj|ddddn#1swxYwYddtjddddg}|D]v}||5|
t 5tj|dddn#1swxYwYdddn#1swxYwYwdS)NriX>i(FcDg|]}tddD]
}d|z|zS)i(rH)r)rGrr#s   rrHz'MathTests.testIsqrt.<locals>.<listcomp>2s5HHHAsBHHAq!taxHHHHr<rVri'rir_rrTFrceZdZdZdZdS)(MathTests.testIsqrt.<locals>.IntegerLikec||_dSr^r_ras  rrcz1MathTests.testIsqrt.<locals>.IntegerLike.__init__Ks
"


rc|jSr^r_rfs rruz2MathTests.testIsqrt.<locals>.IntegerLike.__index__Ns
z!rNrvrlrrIntegerLikerJs2
#
#
#
"
"
"
"
"rrirrrza stringz3.5y@gY@r)listrrrTisqrtassertIsrrSassertLessEqual
assertLessrrzrobjectrrr)rbrbr`rfr
bad_valuess      r	testIsqrtzMathTests.testIsqrt-sU
t5|4455
6HHr3HHH
I$wD!
"	!	4	4EE**
4
4Ju%%

d1ggs+++$$QqS%000!ac{333	
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4

z
*
*		JrNNN															
Jt

d1ggs###AJu

d1ggs###A	"	"	"	"	"&	"	"	"
J{{4(())

d1ggs###B


z
*
*	(	(J{{2'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(

W_U33T4

 	&	&EE**
&
&&&y11&&Ju%%%&&&&&&&&&&&&&&&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&	&	&sm;A5C<<D	D	"EE
E:J$$J(+J(#L6>LL6L##L6&L#'L66L:	=L:	ctj}||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddd||dd	d
||d	dd
||dd
dd}d}dD]}||z}||z}||z|z}||||||||||||||||||||||||||||||||||||||||||d||dd||dd||dd	dd||ddd	d|t|d|t|dd	|t|dd|t|ddd||tdtd	d
dS)NrrrrUrjrkiYrlrmiHrorprql ,`aUx-xB:Vn
Ldblme%Y%l};T^	)rsl|/Kr2rti7rvrw)rTlcmrrrrr)rbrrryrzr{r|ds        rtest_lcmzMathTests.test_lcmbshQA&&&QA&&&RQ'''QA&&&QQ'''QA&&&QQ'''S"s+++S"s+++R,,,98::R	T	T	T
! (	-	-AAAAAA	ASSAYY***SSAYY***SS!QZZ+++SSQBZZ+++SSQBZZ+++SS!QZZ+++SS!aR[[!,,,SS!aR[[!,,,,"""S3'''TC(((S"c**E222S!R!,,,)S%000)S%444)S#t444)S#q$777[--{2??EEEEErc		|ttj|ttjdd|dtjddd|dtjddd|dtjdd	d
|dtjd	dd|t
tjd
d|t
tjdd|tjd
dd|tjddd|tjtdt|tjtdt|	tj
tjtddddddzfD]}|tjt|t|tjt|t|tjd
|d|tjd|d|tjd|d|tjd|d|	tj
tjt||t
tjd
||t
tjd||tjd|d|tjd|d|tjt|t|tjt|t|	tj
tjt|dS)Nrrz
ldexp(0,1)rrz
ldexp(1,1)rHzldexp(1,-1)rrzldexp(-1,1)rrrrirPri+ild(	 Fx:^Vrr)rrrTr2rrrrrrrUrrbrs  r	testLdexpzMathTests.testLdexps)TZ000)TZc:::

<Aa!444

<Aa!444

=$*Qr"2"2C888

=$*R"2"2B777-RAAA-S'BBBB112666C22C888C,,c222D$//666
4:c1#5#566777R0	<	<ATZaR00#666TZqb114888TZQB//444TZaR00#666TZQB//444TZaR00#666OODJtz#r':':;;<<<mTZQ???mTZa@@@TZA..333TZQ//555TZQ//555TZa00$777OODJtz#q'9'9::;;;;	<	<rcH|ttj|ttjddd|dtjdtjzd|dtjdd|dtjtjd|d	tjd
dd|dtjd
dzd
d|dtjd
dzdd|dtjd
dzd|ttjd|ttjd
dz|ttjd
d|ttjt|tjtt|
tjtjtdS)NrrHrzlog(1/e)rzlog(1)rzlog(e)z	log(32,2)rrrOzlog(10**40, 10)rrzlog(10**40, 10**20)rz
log(10**1000)rgO+@rr)
rrrTlogrrrzrrrrrUrrfs rtestLogzMathTests.testLogs)TX...)TXq!Q777

:tx$&112666

8TXa[[!,,,

8TXdf--q111

;A222

$dhr2vr&:&:B???

($(2r66*B*BAFFF

?DHRX$6$6%	'	'	'*dh555*dhT	:::*dhC888*dh555#,,,
48C==1122222rc	|ttjdddzddzfD]I}|tj|tjt|J|ttjd|tjttdS)NrHZi,r)	rrrTlog1prr:rzrrrs  r	testLog1pzMathTests.testLog1ps)TZ000QUAsF#	H	HA""4:a==$*U1XX2F2FGGGG*dj"555C#.....rc`|ttj|tjdd|tjdd|tjdd|tjddzd|tjdd	zd
|tjddzd|t
tjd
|t
tjt|tjtjtdS)NrrPrHrrrig@g@ig@@r)
rrrTlog2rrzrrrUrrfs rtestLog2zMathTests.testLog2sB)TY///	
1s+++1s+++1s+++	
1d7++V4441d7++V4441d7++V444*di666*di666
49S>>2233333rrcdtddD}dtddD}|||dS)Nc\g|])}tjtjd|*SrE)rTrr2rFs  rrHz+MathTests.testLog2Exact.<locals>.<listcomp>s.LLLA$)DJsA..//LLLrrMrc,g|]}t|Srlr:rFs  rrHz+MathTests.testLog2Exact.<locals>.<listcomp>999E!HH999r)rr)rbrdr(s   r
testLog2ExactzMathTests.testLog2Exacts[
MLud9K9KLLL99eE4&8&8999*****rct|ttj|dtjdd|dtjdd|dtjdd|d	tjdd
zd|t
tjd|t
tjdd
z|t
tjt|tjtt|
tjtjtdS)
Nz
log10(0.1)皙?rzlog10(1)rrz	log10(10)rzlog10(10**1000)rg@@r)
rrrTlog10rrzrrrrrrUrrfs r	testLog10zMathTests.testLog10s5)TZ000

<C"555

:tz!}}a000

;
2222

$djT&:&:FCCC*dj$777*dj2t8)<<<*dj$777#,,,
4:c??3344444rcttjfd}|dtjdd|dtjddtjt
dt
ftjtd	tftjt}tj	|d
tj	|ddS)Nc||c\}}\}}t||z
tkst||z
r|d|d|dSdSr%r&)rr'r(v1v2e1e2rbs       rtestmodfz$MathTests.testModf.<locals>.testmodfsy!'HRhr22b5zzC3r"u::		44344444 rz	modf(1.5)r)rrz
modf(-1.5)r)rrrPrrr)
rrrTmodfrrrrrrU)rbrmodf_nans`  rtestModfzMathTests.testModfs)TY///	4	4	4	4	4	dinnj999ty===3#s44444,7779S>>
8A;//000
8A;//00000rc(|ttj|dtjddd|dtjddd|dtjddd|dtjddd	|tjtdt|tjtdt|tjdtd
|tjdtd
|tj	tjtd|tj	tjdt|tj	tjdt|tjdtd|ttjdd|tjdtd|tjdd
d|tjddd|tjddd|tjddd
|tjddd
|ttjdd|ttjdd|ttjdd|tjdtt|tj	tjdt|tjttt|tjtd
t|tjtdt|tjtdt|tjtdd
|tjtdd
|tjtdd|tjtdd|tjtdd|tjttd|tj	tjtt|tjdtd|tjdd
d|tjddd|tjddd|tjddd
|tjddd
|ttjdd|ttjdd|ttjdd|tjdtt|tj	tjdt|tjttt|tjtd
t|tjtdt|tjtdt|tjtdd
|tjtdd
|tjtdd|tjtdd|tjtdd|tjttd|tj	tjtt|tjdtd
|tjdd
d|ttjdd|tjddd
|tjddd
|tjddd
|tjddd
|ttjdd|tjddd|tjdtd
|tj	tjdt|tjd
td
|tjd
d
d
|tjd
dd
|tjd
dd
|tjd
dd
|tjd
dd
|tjd
dd
|tjd
dd
|tjd
dd
|tjd
td
|tjd
td
|tjddd
|tjddd
|tjtdd
|tjddd
|tjddd
|tjtdd
|ttjdd|ttjdd|tjdtd|tjdtd|tjdtt|tjdtt|tjdtt|tjdtt|tjdtd|tjdtd|tjdtt|tjdtt|tjdtd|tjdtd|tjdtd|tjdtd|tjdtt|tjdtt|dtjdd
d |d!tjddd"|d#tjdd
d|d$tjddd
|d%tjddd
|d&tjddd'|d(tjddd)|d*tjddd+|ttjdd'|ttjdd	dS),Nzpow(0,1)rrzpow(1,0)zpow(2,1)rHz	pow(2,-1)rrrrrPrrrrgrr rg.ggffffff?r?rggggffffffz	(-2.)**3.g z	(-2.)**2.rz	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.rz
(-2.)**-2.?z
(-2.)**-3.g)
rrrTpowrrrrrrUrrrzrfs rtestPowzMathTests.testPows)TX...

:tx!}}a000

:tx!}}a000

:tx!}}a000

;2444#q))3///$**D111$(1c**R000$(1d++b111
48C#3#344555
48As#3#344555
48As#3#344555!S))1----66BBB	
"c**B///"b))2..."c**B///"b))2..."b))2..."c**B///*dhC888*dhD999*dhC888"d++S111
48B#4#455666	
#s++S111#r**C000#s++S111#r**C000#r**B///#s++R000#s++R000#t,,b111#s++R000#t,,b111
48C#5#566777	
#s++R000#r**C000#s++R000#r**B///#r**B///#s++R000*dhS999*dhT:::*dhS999#t,,c222
48C#5#566777	
$,,c222$++T222$,,c222$++S111$++R000$,,b111$,,b111$--r222$,,c222$--r222
48D##6#677888	
#s++R000#r**C000*dhS999#r**B///#r**B///#s++R000#s++R000*dhT:::#s++S111#t,,b111
48C#5#566777	
"c**B///"b))2..."c**B///"b))2..."b))2..."c**B///"c**B///"d++R000"c**B///"d++R000"c**B///	
#r**B///$++R000#r**B///#s++R000$,,b111#s++R000	
*dhS999*dhd;;;	
#t,,b111#t,,b111#t,,c222#t,,c222$--s333$--s333$--r222$--r222	
#s++S111#s++S111#s++R000#s++R000$,,b111$,,b111$,,c222$,,c222	

;s 3 3T:::

;s 3 3S999

;s 3 3T:::

;s 3 3S999

<$!5!5s;;;

<$!5!5t<<<

<$!5!5t<<<

<$!5!5v>>>*dhd;;;*dhc:::::rc|ttj|dtjdtj|dtjdtjdz|dtjdtjdz|d	tjd
d
dS)Nzradians(180)zradians(90)rrHzradians(-45)irz
radians(0)r)rrrTradiansrrrfs rtestRadianszMathTests.testRadianss)T\222

>4<#4#4dg>>>

=$,r"2"2DGAI>>>

>4<#4#4twhqjAAA

<a!44444rcfddlmfd}gd}|D]}|5|\}}}t|}t|}t|}	||||	t
j||}
|
	|		dddn#1swxYwYtd}tddD]k}|dkr	||z}td	D]M}
|
|z}t
j||}
||||
t
j||}
||||
Nltd
ddd
ttfD]\}t
jt|t
j|t]dD]^}t
j|t|t
j|t|_td
dd
dtfD])}t 5t
jt|dddn#1swxYwYt 5t
jt|dddn#1swxYwYt 5t
j|d
dddn#1swxYwYt 5t
j|ddddn#1swxYwY+dS)Nrrc|||}}}t|t|dz||z
|z}|t|t|t|dzkr+|dzt|dzdSdS)z
            Check that r matches remainder(x, y) according to the IEEE 754
            specification. Assumes that x, y and r are finite and y is nonzero.
            rHN)rr&rrS)	rryrfxfyfrrrrbs	       r
validate_specz.MathTests.testRemainder.<locals>.validate_specs
"!hhqkk88A;;BB  R#bd))444bBAQA'''2ww#bd))##  1c!A#hh/////$#r)0z-4.0 1 -0.0z-3.8 1  0.8z-3.0 1 -0.0z-2.8 1 -0.8z-2.0 1 -0.0z-1.8 1  0.8z-1.0 1 -0.0z-0.8 1 -0.8z-0.0 1 -0.0z 0.0 1  0.0z 0.8 1  0.8z 1.0 1  0.0z 1.8 1 -0.8z 2.0 1  0.0z 2.8 1  0.8z 3.0 1  0.0z 3.8 1 -0.8z 4.0 1  0.0z&0x0.0p+0 0x1.921fb54442d18p+2 0x0.0p+0z?0x1.921fb54442d18p+0 0x1.921fb54442d18p+2  0x1.921fb54442d18p+0z?0x1.921fb54442d17p+1 0x1.921fb54442d18p+2  0x1.921fb54442d17p+1z?0x1.921fb54442d18p+1 0x1.921fb54442d18p+2  0x1.921fb54442d18p+1z?0x1.921fb54442d19p+1 0x1.921fb54442d18p+2 -0x1.921fb54442d17p+1z?0x1.921fb54442d17p+2 0x1.921fb54442d18p+2 -0x0.0000000000001p+2z00x1.921fb54442d18p+2 0x1.921fb54442d18p+2  0x0p0z?0x1.921fb54442d19p+2 0x1.921fb54442d18p+2  0x0.0000000000001p+2z?0x1.2d97c7f3321d1p+3 0x1.921fb54442d18p+2  0x1.921fb54442d14p+1z?0x1.2d97c7f3321d2p+3 0x1.921fb54442d18p+2 -0x1.921fb54442d18p+1z?0x1.2d97c7f3321d3p+3 0x1.921fb54442d18p+2 -0x1.921fb54442d14p+1z?0x1.921fb54442d17p+3 0x1.921fb54442d18p+2 -0x0.0000000000001p+3z00x1.921fb54442d18p+3 0x1.921fb54442d18p+2  0x0p0z?0x1.921fb54442d19p+3 0x1.921fb54442d18p+2  0x0.0000000000001p+3z?0x1.f6a7a2955385dp+3 0x1.921fb54442d18p+2  0x1.921fb54442d14p+1z?0x1.f6a7a2955385ep+3 0x1.921fb54442d18p+2  0x1.921fb54442d18p+1z?0x1.f6a7a2955385fp+3 0x1.921fb54442d18p+2 -0x1.921fb54442d14p+1z?0x1.1475cc9eedf00p+5 0x1.921fb54442d18p+2  0x1.921fb54442d10p+1z?0x1.1475cc9eedf01p+5 0x1.921fb54442d18p+2 -0x1.921fb54442d10p+1z 1  0.c  0.4z-1  0.c -0.4z 1 -0.c  0.4z-1 -0.c -0.4z 1.4  0.c -0.4z-1.4  0.c  0.4z 1.4 -0.c -0.4z-1.4 -0.c  0.4z$0x1.dp+1023 0x1.4p+1023  0x0.9p+1023z$0x1.ep+1023 0x1.4p+1023 -0x0.ap+1023z$0x1.fp+1023 0x1.4p+1023 -0x0.9p+1023)casez1p-1074irrPrrr)rrrPrr)rrrr9r:r^rT	remainderrhexrrrrassertIsNaNrrz)rbr	testcasesr x_hexy_hexexpected_hexrryr(rdtinyrmr`rs`              @r
testRemainderzMathTests.testRemainders&&&&&&
	0
	0
	0
	0
	0
	0 9
9
9
	v
	?
	?D4((	
?	
?-1ZZ\\*ulMM%((MM%(( ==66
aH---1--  x||~~>>>	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?	
?}}Y''sB		-		-AAvvDA3ZZ
-
-H1--
aF+++A..
qb!V,,,,
-3c4s;	9	9ET^C77888T^E3778888,	A	AET^E377???T^E488%@@@@D$S#6	,	,E"":..
+
+sE***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+"":..
,
,tU+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,"":..
+
+uc***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+"":..
,
,ud+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,	,	,sZCC<<D	D	#K

K	K	/LL	L	;MM!	$M!	N$$N(	+N(	c|ttj|dtjdd|dtjtjdzd|dtjtjdzd	|tjtjt|tjtjtnf#t$rY|ttjt|ttjtYnwxYw|tjtjtdS)Nzsin(0)rz	sin(pi/2)rHrz
sin(-pi/2)r)rrrTrrrrrUrrrzrrfs rtestSinzMathTests.testSin sW)TX...

8TXa[[!,,,

; 3 3Q777

<47(1*!5!5r:::	:OODJtx}}55666OODJtx~~667777	:	:	:j$(C888j$(D99999	:	

48C==1122222s=A<D::A FFc|ttj|dtjdd|dtjddztjddzz
d|dtjdtjdzd|tjtt|tjtt|	tj
tjtdS)Nzsinh(0)rzsinh(1)**2-cosh(1)**2rrHrzsinh(1)+sinh(-1))rrrTsinhrrrrrrrUrrfs rtestSinhzMathTests.testSinh-s)TY///

9dillA...

*DIaLL!ODIaLL!O,KRPPP

%ty||DIbMM'A1EEE3---4$///
49S>>2233333rc|ttj|dtjdd|dtjdd|dtjdd|dtjdd	|d
tjdd|d
tjdd|dtjdd|tjtt|ttjd|ttjt|	tj
tjtdS)Nzsqrt(0)rrPz	sqrt(2.5)g@gS[:XL?z
sqrt(0.25)rrzsqrt(25.25)g@9@g)#L@zsqrt(1)rzsqrt(4)rrHr)rrrTrrrrrzrrrUrrfs rtestSqrtzMathTests.testSqrt6sl)TY///

9dillA...

9dinnc222

;	#0BCCC

<4#666

=$)E"2"24EFFF

9dillA...

9dillA...3---*di444*di666
49S>>2233333rc|ttj|dtjdd|dtjtjdzd|dtjtjdzd	|tjtjt|tjtjtn]#|ttjt|ttjtYnxYw|tjtjtdS)Nztan(0)rz	tan(pi/4)rrz
tan(-pi/4)r)rrrTtanrrrrUrrrzrrfs rtestTanzMathTests.testTanDsC)TX...

8TXa[[!,,,

; 3 3Q777

<47(1*!5!5r:::	:OODJtx}}55666OODJtx~~667777	:j$(C888j$(D99999
48C==1122222s=A<D::AFcz|ttj|dtjdd|dtjdtjdzdtjd|dtjtd|dtjtd|tj	tjtdS)	Nztanh(0)rztanh(1)+tanh(-1)rrrz	tanh(inf)z
tanh(-inf))rrrTtanhrrrrrrUrrfs rtestTanhzMathTests.testTanhQs)TY///

9dillA...

%ty||DIbMM'A18A;;		(	(	(

;	#222

<4"555
49S>>2233333rc|tjdd|tjdtjdtjdddS)Nrr)rrTr7rrfs rtestTanhSignzMathTests.testTanhSignZsi	
3---r49S>>::r3//	1	1	1	1	1rcX|tjdd|tjdd|ttjdt|ttjdt|tjdd|tjdd|tjdd|tjdd|tjdd|tjd	d
Gdd}Gd
dt
}Gdd}Gdd}|tj|d|tj|d|ttj|ttjdd|ttjtd|ttj||ttj|dS)Nrrrrg?gg!rg-?YiceZdZdZdS)'MathTests.test_trunc.<locals>.TestTrunccdSNrlrfs r	__trunc__z1MathTests.test_trunc.<locals>.TestTrunc.__trunc__nrrNrirjrkrArlrr	TestTruncr=mrrrCceZdZdZdS)(MathTests.test_trunc.<locals>.FloatTrunccdSr?rlrfs rrAz2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__qrrNrBrlrr
FloatTruncrEprrrGceZdZdS))MathTests.test_trunc.<locals>.TestNoTruncNrprlrrTestNoTruncrIsrrrJc"eZdZeZdS)*MathTests.test_trunc.<locals>.TestBadTruncN)rirjrkrxrArlrrTestBadTruncrLurrrMr@rHg7@)
rrTtruncrrSr:rrr\rz)rbrCrGrJrMs     r
test_trunczMathTests.test_truncasA***B,,,djmm,,c222djoo..444C!,,,D))2...H--q111I..333I..333H--t444																									#	#	#	#	#	#	#	#	
IIKK00"555JJLL112666)TZ000)TZA666)TZ4AAA)TZ???*dj,,..AAAAArcv|tjd|tjd|tjd|tjd|tjt	d|tjt	d|tjt	ddS)NrPrrrrrr)rrTisfiniteassertFalser:rfs rtestIsfinitezMathTests.testIsfinites
c**+++
d++,,,
c**+++
d++,,,uU||44555uU||44555uV}}5566666rcH|tjtd|tjtd|tjtddz|tjtd|tjd|tjddS)Nrz-nanrrPr)rrTrUr:rRrfs r	testIsnanzMathTests.testIsnans
5<<00111
5==11222
5<<"#455666E%LL11222B(((B(((((rcv|tjtd|tjtd|tjd|tjd|tjtd|tjd|tjddS)NrrggrrPr)rrTrVr:rRrfs r	testIsinfzMathTests.testIsinfs
5<<00111
5==11222
5))***
6**+++E%LL11222B(((B(((((rch|tjtjdSr^)rrTrUrrfs rtest_nan_constantzMathTests.test_nan_constants&
48,,-----rc^|tjtj|tjd|tjt
d|tjt
ddS)NrPrr)rrTrVr
assertGreaterrr:rfs rtest_inf_constantzMathTests.test_inf_constants|
48,,---48S)))5<<000$(E&MM22222rzrequires verbose modec	tjd}n#|dYnxYw|dkr|d	tjd}|dn#t$rYnwxYw	tjd}|ddS#t
$rYdSwxYw)	Ni6ez6underflowing exp() should not have raised an exceptionrz)underflowing exp() should have returned 0iʚ;z.overflowing exp() didn't trigger OverflowErrorrz sqrt(-1) didn't raise ValueError)rTrDrrrrzrbrs  rtest_exceptionszMathTests.test_exceptionss	(%%AA	(
II'
(
(
(
(
(66IIABBB	H$$A
IIFGGGG			D		:	$A
II899999			DD	s,0A99
BB
B55
CCcdh}d}tjdkr`tjd}	tt	t
|d}n#t$rYnwxYwd}g}ttD]\}}}}	}
}}|	dks|dkr|dvr||dkr||vr)tt|}
d	|vsd
|vrd}
nd|vrd
}
	|
|}n#t$rd}Ynt$rd
}YnwxYwd\}}t|
|||}||||||}|||r-|dd|zdSdS)Ntan0064darwinr.{}: {}({!r}): {}rP)rectpolar)rrOinvaliddivide-by-zerorzoverflowrrOrPzFailures in test_testfile:
  
  )r\platformmac_verrrrSr9rzrN	test_filegetattrrTrrZr'r_rjoin)rb
SKIP_ON_TIGERosx_versionversion_txtrXfailuresr@rAaraiereirEfuncr'r*r+rWmsgs                   r
test_testfilezMathTests.test_testfiles#
<8##"*,,Q/K
#C[->->s-C-C$D$DEE



&-;I-F-F"	!"	!)BBBESyyB#II&&&&;+@+@&&4$$DE!!%5%>%>!u$$$
)b
&
&
&% 
)
)
)(
) &GW"2vw@@G//"b"g66COOC    	-II6kk(++,
-
-
-
-
-	-	-s)5A&&
A32A3C**D8DDc<d}g}ttD]\}}}}}tt|}d|vsd|vrd}nd|vrd}	||}	n#t$rd}	Ynt
$rd}	YnwxYwd\}
}|dkrd	}
n)|d
krd}n |dkr|d
kr|dkrd}
n|dkrd}
nd}
t
||	|
|}||||||}
||
|r-|	dd
|zdSdS)NrdrgrhrzrirrjrrlgammagV瞯<erfcrPrr$@rrzFailures in test_mtestfile:
  rk)rFmath_testcasesrorTrzrrZr'r_rrp)rbrXrtr@rArBr(rEryr)r*r+rWrzs              rtest_mtestfilezMathTests.test_mtestfiles%,;N,K,K8	!8	!(BC54$$DE!!%5%>%>'u$$*
&d3ii
#
#
#" 
&
&
&%
& &GWW}}x
 v#**99 GG4ZZ!GG"G"8S'7CCG//"b#w77COOC    	-II7kk(++,
-
-
-
-
-	-	-sAA0"A0/A0cRddlm}tj}||gd||gdd||tt
ddd||ttt
ddd||t
dd	d	d
||gdd||gd
d||gdd||gdd||d|ddgdGdd}|t5|d|gdddn#1swxYwY||gdd||gdtd|t||t|d|t|gd|t|gdd|t|ddgdtdtd g}|t||td|t|dgdgdgg|t|ddig|t|ddigdzddi|t|dgdgdggg||ddgd!d"||ddgddggd#||gddiddi|t5|d	d$gddddn#1swxYwY||gd%d||gd&d||gd'dd:d(}t
dd)}|||||t
d*d+}|||||t
d,d-}|||dd.t
dd-D}|||||d/t
d,d+D}|||||d0t
d,d-D}|
|||
|dddtd1ddg|
|ddtd1ddg|
|dtd1ddg|
|dtd2td1dg|
|dtd3td1dg|
|dtd1td2dg|
|dtd1td3dg||dddtd2d4d5gtd3||dddtd3d4d5gtd2|
|dddtd2d4d5g|
|dddtd3d4d5g|
|dddtd2d4ddg|
|dddtd3d4ddg|t|gd6t|t|gd7t|t|t
dd)t|t|t
dd)dt|t|dt!jd8dd5dd9gt jdS);NrrrrO)rrHriri_7)rrHrrrOrl)rrrrrrv)rrHrrr)rrrrrOrrrceZdZdZdS)(MathTests.test_prod.<locals>.BadMultiplyctr^)RuntimeError)rbothers  r__rmul__z1MathTests.test_prod.<locals>.BadMultiply.__rmul__Ys""rN)rirjrkrrlrrBadMultiplyrXs#
#
#
#
#
#rrr)rrrrr)rrrrrr)r{r|rzacrbababababababab)rrHrrHrrHrrHrrHrrHr)rrrHr)rrrHr)rrHrrc|D]}||z}|Sr^rl)r7relems   r_naive_prodz(MathTests.test_prod.<locals>._naive_prod{s! 


Lri'irirc,g|]}t|SrlrrGrs  rrHz'MathTests.test_prod.<locals>.<listcomp>s555E!HH555rc,g|]}t|Srlrrs  rrHz'MathTests.test_prod.<locals>.<listcomp>s777E!HH777rc,g|]}t|Srlrrs  rrHz'MathTests.test_prod.<locals>.<listcomp>rrrrrrr)rrHrrrOru)rrrrrOrurrurP)rrrTprodrrrrrrr:r	bytearrayr$rrSrr)rbrrrrrr7s       r	test_prodzMathTests.test_prodGs
++++++yb1%%%b***A...d51::..//666d4a

#3#34455t<<<eArll"555w???ooo..44477788%@@@11122E:::33344e<<<r11Q77m,,c222	#	#	#	#	#	#	#	#

|
,
,	'	'D#{{}}%&&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	
11122E:::55566eEEE)T***)T2...)T???;;;)T???"EEE)TD$<sCCCD//9T??3)T63HHH)TQC!qc?;;;)TQqE7333)TQqE719QqEBBB)TQC!qc?"EEE	
q!fD111>BBBq!fQF3335Y5Y5YZZZbA///!A777


y
)
)		D"b1																
lll++Q///lll++Q///lll++Q///				E??hX)>)>???$$hX)>)>???%%h+++65eAtnn555hX)>)>???77eE2&6&6777hX)>)>???99eE4&8&8999h(((	
q!Qea;<<===q!U5\\1a899:::q%,,1566777q%,,eQ?@@AAAq%--ua@AABBBq%,,eQ?@@AAAq%,,f

a@AABBBq!QeR:;;U6]]KKKq!Qf

b;<<eEllKKKq1U5\\2q9::;;;q1U6]]B:;;<<<q!Qeb!Q?@@AAAq!Qf

r1a@AABBB	
dd#5#5#56677===dd#7#7#788995AAAdd5E??3344c:::dd5E??#>>>??GGGddAws';';Q1a#HIIJJ 	*	*	*	*	*s$G;;G?G?Q""Q&)Q&ctj}tj}tdD]y}|dkrt|dzn#|dkrtdntdD]:}|||||||||z
z;ztddD]X}td|D]E}||||||dz
|dz
|z||dz
|zFYtddD]k}|||dd|||d|||||||ltdD]S}||||||||d||T|t|dd	|t|dtjd	|t|dd
|t|dd|t|tjdd|t|dd|t||t|ddd
|t||t|dd|t|ddzd|t|dd|t|dddz||ddd||dddzdddz}|||dd|||d||||d||dz
ztjdr|t|||dD]W\}}||||d|
t|||tX||t!dt!dd||t#dt#ddtd
D]}|
t|t!dt!|t|
t|t#dt#|tdS)NrrrrVrrrrr1r10rrrHrTcpython)TT)TF)FFrO)rTpermrrrrrrrrzrcheck_impl_detailrrrrSrorr)rbrrrrs     rtestPermzMathTests.testPermsyN	s	C	CA&'#ggeAElllC5999USUYY
C
C  a!*11q51A1A!ACCCC
C
q#	V	VA1a[[
V
V  aTT!a%Q-?-?!-Cdd1q5RSnn-TUUUU
Vq#	7	7ATT!QZZ+++TT!QZZ+++TT!QZZ16666r	:	:ATT!WWiill333TT!T]]IIaLL9999	
)T2s333)T2ws/C/CDDD)T2s333)T4333)T7?4+@+@!DDD)T4333)T***)T2q!444)T***	
*dB222*dQWHa888*dAr222*dA4x888	
aQ'''aD))1---
tGaQ'''aQ'''aQ!A#Y///$T222	9mT1a888?	1	1DAqTT!QZZ+++MM$ttAqzz**C0000k!nnk!nn==rBBBk!nnk!nn==rBBBq	K	KAMM$ttKNNKNNCCDDcJJJMM$ttKNNKNNCCDDcJJJJ	K	Krc
tj}tj}tdD]}|dkrt|dzn#|dkrtdntdD]F}|||||||||||z
zzGtddD]U}td|D]B}||||||dz
|dz
||dz
|zCVtdD]B}|||dd||||dCtddD]E}|||d|||||dz
|FtdD]D}t|dzD]/}||||||||z
0E|t|dd	|t|dtjd	|t|dd
|t|dd|t|tjdd|t|dd|t|d|t|ddd
|t||t|dd|t|ddzd|t|dd|t|dddz||ddd||dddzdddz}|||dd|||d||||d||dz
zdz||||d||||dz
|||||dz
||dz
zdztjdr |t|||dzdD]W\}}||||d|
t|||tX||t!dt!dd||t#dt#ddtd
D]}|
t|t!dt!|t|
t|t#dt#|tdS)NrrrrVrrrrHrrrrrrrTrrrO)rTcombrrrrrrrrzrrrrrrSrorr)rbrrrrs     rtestCombzMathTests.testCombs}yN	s	:	:A&'#ggeAElllC5999USUYY
:
:  aYYq\\!	!yyQ'7'77.9::::
:
q#	R	RA1a[[
R
R  aTT!a%Q-?-?$$q1ua..-PQQQQ
Rs	,	,ATT!QZZ+++TT!QZZ++++q#	0	0ATT!QZZ+++TT!QU^^Q////s	=	=A16]]
=
=  aTT!QU^^<<<<
=
	
)T2s333)T2ws/C/CDDD)T2s333)T4333)T7?4+@+@!DDD)T4333)T2...)T2q!444)T***	
*dB222*dQWHa888*dAr222*dA4x888	
aQ'''aD))1---
tGaQ'''aQ'''aQ!A#Y!^444aQ'''a1q)))a1qAaCyA~666$T222	<mT1ad;;;?	1	1DAqTT!QZZ+++MM$ttAqzz**C0000k!nnk!nn==rBBBk!nnk!nn==rBBBq	K	KAMM$ttKNNKNNCCDDcJJJMM$ttKNNKNNCCDDcJJJJ	K	KrcF	|tjdtd|tjdtd|tjddd|tjddd|tjd	ttd
|tjd	ttd|tjddd|tjd
dd|tjdd
d
tjj	tjj
z}|tjdt||tjd
t||tjdt||tjd
t||tj|dd|tj|dd
|tj|d
d|tj|d
d
tjj}|tjtd||tjtd||tj|tt|tj|tt|tjtd	|tjd	t|tjttdS)Ng0Cg/Cg0CgCrPgCggrz0x1.fffffffffffffp-1z0x1.0000000000001p+0rr)rrT	nextafterrr:r^assertEqualSignr\r0minepsilonr3r$r)rbsmallest_subnormallargest_normals   rtest_nextafterzMathTests.test_nextafter3s	
(:SDAA+	-	-	-(:C@@+	-	-	-(=sCC.	0	0	0(>DD/	1	1	1	
cT22'=>>	@	@	@S11'=>>	@	@	@	
S113777T^D$77>>>T^D$77>>>!^/#.2HHc224FGGGc224FGGGsd336H5HIIIsd336H5HIIIT^,>EEtLLLT^-?,?FFMMMT^,>EEtLLLT^-?,?FFMMM+S11>BBBc22^ODDD<<cBBB#>>EEE	
S11222S11222S1122222rcR|tjdtjj|tjdd|tjdd|tjdd|tjdtjjtjjz|tjtttjttz
|tjtt|
tjtjddddtfD]k}||5|tj|tj|dddn#1swxYwYldS)	Nrllrlg@rPr)
rrTrr\r0rrrrrr$rrr^s  rtest_ulpzMathTests.test_ulpas#(>???'**C000'**C000'**F333	
#+cn.DD	F	F	F),,"T^It%D%DD	F	F	F	
#,,,$(++,,,sGWc2	<	<A""
<
<  1"tx{{;;;
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<	<	<s<HH	"H	cDGdd}tjtjtjfD]n}|}|t
5|d|dddn#1swxYwY|t|ddodS)NceZdZdZdS)$MathTests.test_issue39871.<locals>.Fcd|_ddzdS)NTrr)	convertedrfs rrgz.MathTests.test_issue39871.<locals>.F.__float__|s!%!rN)rirjrkrgrlrrrr{s#




rrznot a numberrF)rTrrr"rrrRro)rbrryrys    rtest_issue39871zMathTests.test_issue39871xs								J
t~=	=	=DA""9--
(
(^Q'''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(

WQU;;<<<<	=	=s
A00A4	7A4	c|ttjd|ttjd|ttjdd|ttjdd|ttjd|ttjddddS)NrXrrr)rrrTrDerfrrfs rtest_input_exceptionszMathTests.test_input_exceptionss)TXv666)TXv666)TZ===)TZf===)TZ555)TZc3?????rctj|s*|d|dSdS)NzExpected a NaN, got {!r}.)rTrUrr'ras  rr$zMathTests.assertIsNaNsHz%  	AII188??@@@@@	A	Arc||||tjd|tjd|dS)zSimilar to assertEqual(), but compare also the sign with copysign().

        Function useful to compare signed zeros.
        rN)rrTr)rbrrys   rrzMathTests.assertEqualSignsN
	
AsA..
c10E0EFFFFFrNrj)QrirjrkrrrrrrrrrrrrrrunittestskipIfr\rlmachinerrrrrrrrcpython_onlyrrr"r.HAVE_DOUBLE_ROUNDINGrhr}rrrrrrrrrrrequires_mac_verrrrrrr+r-r0r2r5r8r:rOrSrUrWrYr\
skipUnlessrr_r{rrrrrrrrr$rrlrrrrs6666...	4	4	4555	4	4	4555444	5	5	5<:<:<:|444 %;%;%;N:::B333X_S\W,W1A1A1C1CGW1W[]]44]]4555<<<	=	=	=///@@@:::
<<<#<#<#<J;;;.888$X_)MOOmDmDOOmD^(E(E(ETMFMFMF^X_)NPP:1:1PP:1x777B)))
3&3&3&j*F*F*FX<<<B333$///444"Wb!$$++%$+
5
5
5111&H;H;H;l555~,~,~,@333444444333444111BBB@777))))))...333X"9::::;::>6-6-6-p@-@-@-Dd*d*d*L>K>K>K@DKDKDKL+3+3+3Z<<<,=== @@@AAAGGGGGrrcveZdZejZdZdZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZd
ZdZdZdS)IsCloseTestsc`||j||g|Ri||d|ddS)N and z should be close!rz)rrrbr{r|rkwargss     r
assertIsClosezIsCloseTests.assertIsCloses\Q;D;;;F;;<=AAqqqA		C	C	C	C	Crc`||j||g|Ri||d|ddS)Nrz should not be close!r)rRrrs     rassertIsNotClosezIsCloseTests.assertIsNotCloses^a<T<<<V<<ABAAAF		H	H	H	H	Hrc:|D]\}}|j||g|Ri|dSr^)rrbexamplesrrr{r|s      rassertAllClosezIsCloseTests.assertAllClosesG	6	6DAqDq!5d555f5555	6	6rc:|D]\}}|j||g|Ri|dSr^)rrs      rassertAllNotClosezIsCloseTests.assertAllNotClosesG	9	9DAq!D!!Q88888888	9	9rc2|t5|ddddddn#1swxYwY|t5|ddddddddS#1swxYwYdS)Nrg0.+rel_tolr?g _©rr+)rrzrrfs rtest_negative_tolerancesz%IsCloseTests.test_negative_tolerancess/


z
*
*	6	6q!W555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6


z
*
*	D	Dq!VUCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds#AAA%BBBc>gd}||dddS)N))rr)N@ir);r)i90g@)rPr)NFrrPrr)rbidentical_exampless  rtest_identicalzIsCloseTests.test_identicals8000	
.SIIIIIrcjgd}||d||ddS)N))gחAgחA)g:0yEgnyE)g	ѭ?gfNӭ?:0yE>r&.>rr)rbeight_decimal_places_exampless  rtest_eight_decimal_placesz&IsCloseTests.test_eight_decimal_placessS)C)C)C%	
94HHH<dKKKKKrcjgd}||d||ddS)N))rrP)g&.rP)gu?j/ʠrPrrrr)rr)rbnear_zero_exampless  rtest_near_zerozIsCloseTests.test_near_zerosP...	
13???.=====rc|tt|ttd|tt|ttddS)NrPr)rrrrfs rtest_identical_infinitez$IsCloseTests.test_identical_infinitesj3$$$3S1114&&&4s33333rcttftdfdtfttfttfttftdfdtftdfdtfg
}||ddS)Nr?rrWg?r)rrrr)rbnot_close_exampless  rtest_inf_ninf_nanzIsCloseTests.test_inf_ninf_nanss"Cj"Fm%sm"Cj"Cj"Dk"Cj"Cj"El$cl	,	
1;LMMMMMrcrgd}||dgd}||ddS)N))rr)333333r)YnrrPr))rg?)g?r)gZbtigTbtir)rbzero_tolerance_close_examples!zero_tolerance_not_close_exampless   rtest_zero_tolerancez IsCloseTests.test_zero_tolerancesg)=)=)=%	
93GGG-N-N-N)	
@#NNNNNrc8|ddgddS)N)rr)rrrrrrfs rtest_asymmetryzIsCloseTests.test_asymmetrys&Wg.<<<<<rcjddg}||d||ddS)N))i[i[rrrr)rbinteger_exampless  r
test_integerszIsCloseTests.test_integerssL224	
,d;;;/>>>>>rcddlm}|d|df|d|df|d|df|d	|d
fg}||d||d
dS)Nrrz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20rrr)rrrr)rbrdecimal_exampless   r
test_decimalszIsCloseTests.test_decimals	s######$W\22GGENNC$W%566	8J8JK$W%6779L9LM$W_55wwx7H7HIK	
,d;;;/>>>>>rcddlm}|dddz|df|d|df|dd|ddfg}||d	||d
	dS)Nrrrrrl 	(qe	rrrr)rrrr)rbrfraction_exampless   rtest_fractionszIsCloseTests.test_fractions	s&&&&&&Xa
#
#a
'!5
Xi
 
 ((9"5"56
Xi
(
(((1f*=*=>@	
-t<<<0$?????rN)rirjrkrTrrrrrrrrrrrrrrrrrlrrrrslGCCCHHH666999DDDJJJLLL>>>444
N
N
N
O
O
O===???	?	?	?	@	@	@	@	@rrcNddlm}||d|S)Nr)DocFileSuitezieee754.txt)doctestraddTest)loadertestspatternrs    r
load_testsr	s5$$$$$$	MM,,}--...Lrrj)9test.supportrrtestrrrrrTosrlrRrr\rr:rrrr0r3rrrrryrriargvfile__file__pathdirnamecurdirtest_dirrprrnrrrr$r/rFrNrZr\rSrorrrrxTestCaserrrmainrlrr<module>rs 43333333				











eElleElluV}}N	N	1A)z8A;DDD
7??4  -BIh(<==GLL#899	


L555HHH	,	,	,BBB$:::40++++Z					#			&kGkGkGkGkG!kGkGkG\=x@x@x@x@x@8$x@x@x@v
zHMOOOOOr