+
    Bi                    l   ^ RI HtHt ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RItRt]! R4      t]! R4      t]! R4      t]P(                  P*                  t]P(                  P.                  tRR	utt]],           R%8H  t]R
8X  d   ]P:                  ^ ,          tM]t]
P@                  PC                  ]4      ;'       g    ]
PD                  t#]
P@                  PI                  ]#RR4      t%]
P@                  PI                  ]#RR4      t&R t'R t(R t)R t*R t+R t,R t-R&R lt. ! R R4      t/ ! R R]04      t1 ! R R]24      t3 ! R R4      t4 ! R R]Pj                  4      t6 ! R  R!]Pj                  4      t7 ! R" R#]Pj                  4      t8R$ t9]R
8X  d   ]Pt                  ! 4        R# R# )'    )verboserequires_IEEE_754)supportNgh㈵>naninf-inf 7yACg):@__main__mathdatazmath_testcases.txtzcmath_testcases.txtc                    \         P                  ! R\         P                  ! RV 4      4      ^ ,          pV^ 8  d   VR,           ( pV# )a  Convert 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<dl            )structunpackpack)xns   & %/usr/lib/python3.14/test/test_math.pyto_ulpsr   (   s;     	dFKKa01!4A1ugJH    c                T    V '       d    ^\        W ^,
          ,          4      ,           # ^ # )zANumber of '1' bits in binary expansion of a nonnnegative integer.)count_set_bits)r   s   &r   r   r   N   s    ,-1~aa%i((414r   c                    W,
          ^,	          pV'       g   ^# V^8X  d   V # W,           ^,          p\        W4      \        W14      ,          # )z|Product of integers in range(start, stop, 2), computed recursively.
start and stop should both be odd, with start <= stop.

)partial_product)startstop
numfactorsmids   &&  r   r   r   R   sD    
 ,1$J	q!Q&u*_S-GGGr   c                   ^;r\        \        V P                  4       4      4       FM  pV\        W^,           ,	          ^,           ^,          W,	          ^,           ^,          4      ,          pW!,          pKO  	  W \	        V 4      ,
          ,          # )zFactorial of nonnegative integer n, via "Binary Split Factorial Formula"
described at http://www.luschny.de/math/factorial/binarysplitfact.html

)reversedrange
bit_lengthr   r   )r   innerouteris   &   r   py_factorialr$   `   sn    
 EeALLN+,!1u*!1A!5!|a7GHH - **++r   c                    \        \        V 4      \        V4      ,
          4      p\        W,
          4      pWS8:  g   WB8:  d   R# RpVP                  WTW24      # )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)absr   format)expectedgotulp_tolabs_tol	ulp_error	abs_errorfmts   &&&&   r   ulp_abs_checkr/   k   sP     GH%45IHN#I y37zz)AAr   c           	   #    "   \        V RR7      ;_uu_ 4       pV F  pRV9   d   VRVP                  R4       pVP                  4       '       g   K6  VP                  R4      w  r4VP                  4       w  rVpVP                  4       pV^ ,          p	VR,          p
WV\	        V4      \	        V	4      V
3x  K  	  RRR4       R#   + '       g   i     R# ; i5i)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-8encoding--N->:   NN)openindexstripsplitfloat)fnamefplinelhsrhsidfnarg
rhs_piecesexpflagss   &          r   parse_mtestfilerG   }   s      
eg	&	&"Dt|-TZZ-.::<<zz$'HC))+KBCJQ-CrNE5:uSz599  
'	&	&	&s#   C6CA(C7
CC		Cc              #    "   \        V RR7      ;_uu_ 4       pV F  pVP                  R4      '       g   VP                  4       '       g   K2  VP                  R4      w  r4VP                  4       w  rVrxVP                  4       p	V	^ ,          V	^,          rV	R,          pWV\	        V4      \	        V4      \	        V
4      \	        V4      V3x  K  	  RRR4       R#   + '       g   i     R# ; i5i)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
r1   r2   r4   r5   :   NNN)r7   
startswithr9   r:   r;   )r<   r=   r>   r?   r@   rA   rB   arg_realarg_imagrD   exp_realexp_imagrF   s   &            r   parse_testfilerO      s      
eg	&	&"Dt$$DJJLLzz$'HC),&BHJ!+A
1hrNE?E(O?E(O   
'	&	&	&s#   C-2CBC
C-C*	$	C-c                F   W8X  dM   V'       gC   V '       g;   \         P                  ! ^V4      \         P                  ! ^V 4      8w  d
   RV  RV R2# R# Rp\        V \        4      '       d#   \        V\        4      '       d   \        V4      pM7\        V\        4      '       d"   \        V \        4      '       d   \        V 4      p \        V \        4      '       d   \        V\        4      '       d   \         P
                  ! V 4      '       d    \         P
                  ! V4      '       d   RpME\         P                  ! V 4      '       g   \         P                  ! V4      '       d   M\        WW#4      pVe.   RpVP                  W4      pVRP                  V4      ,          pV# R# )a  Compare 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.
z	expected z, got z (zero has wrong sign)Nz	not equalzexpected {!r}, got {!r}z ({}))	mathcopysign
isinstancer;   intisnanisinfr/   r'   )r(   r)   r*   r+   failurefail_fmtfail_msgs   &&&&   r   result_checkrZ      s+    8}}Q$a(BB"8*F3%7MNNG (E""z#s';';Cj	C		Jx$=$=?(E""z#u'='=::hDJJsOOGZZ!!TZZ__ $H7DG ,??81GNN7++r   c                   ,   a  ] tR t^t o R tR tRtV tR# )	FloatLikec                    Wn         R # Nvalueselfr`   s   &&r   __init__FloatLike.__init__       
r   c                    V P                   # r^   r_   rb   s   &r   	__float__FloatLike.__float__       zzr   r_   N)__name__
__module____qualname____firstlineno__rc   rh   __static_attributes____classdictcell____classdict__s   @r   r\   r\            r   r\   c                       ] tR t^tRtR# )IntSubclass Nrk   rl   rm   rn   ro   rv   r   r   ru   ru      s    r   ru   c                   ,   a  ] tR t^t o R tR tRtV tR# )MyIndexablec                    Wn         R # r^   r_   ra   s   &&r   rc   MyIndexable.__init__   re   r   c                    V P                   # r^   r_   rg   s   &r   	__index__MyIndexable.__index__   rj   r   r_   Nrk   rl   rm   rn   rc   r}   ro   rp   rq   s   @r   ry   ry      rs   r   ry   c                   *   a  ] tR t^t o RR ltRtV tR# )BadDescrNc                    \         hr^   )
ValueError)rb   objobjtypes   &&&r   __get__BadDescr.__get__   s    r   rv   r^   )rk   rl   rm   rn   r   ro   rp   rq   s   @r   r   r      s      r   r   c                     a  ] tR t^t o RWR ltR tR tR tR tR t	R t
R tR	 tR
 tR t]R 4       tR t]P&                  ! ]P*                  R8H  ;'       d    ]P,                  ! 4       RX9   R4      R 4       tR tR tR tR tR tR t]P>                  R 4       t R t!R t"R t#]]P&                  ! ]$R4      R 4       4       t%R t&R t']]P&                  ! ]$R4      R  4       4       t(R! t)R" t*R# t+]PX                  ! RYR$R%7      R& 4       t-R' t.R( t/]R) 4       t0R* t1R+ t2]R, 4       t3]]Ph                  ! ^
^4      R- 4       4       t5R. t6]PX                  ! RYR/R%7      R0 4       t7R1 t8]]P&                  ! ]$R24      ]P>                  R3 4       4       4       t9]Pt                  ! R44      R5 4       t;]]P&                  ! ]$R24      ]P>                  ]Pt                  ! R44      R6 4       4       4       4       t<R7 t=R8 t>R9 t?]R: 4       t@R; tAR< tBR= tCR> tDR? tE]R@ 4       tFRA tGRB tHRC tIRD tJRE tKRF tL]P                  ! ]NRG4      RH 4       tO]RI 4       tP]RJ 4       tQRK tRRL tSRM tT]RN 4       tU]RO 4       tVRP tWRQ tXRR tYRS tZRT t[RUt\V t]RV# )Z	MathTestsc                j    \        W2WE4      pVe#   V P                  RP                  W4      4       R# R# )a1  Compare 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{}: {})rZ   failr'   )rb   namer)   r(   r*   r+   rW   s   &&&&&& r   ftestMathTests.ftest   s0     xg?IIhood45 r   c                    V P                  R \        P                  R4       V P                  R\        P                  R4       V P	                  \        P
                  ^\        P                  ,          4       R# )pig-DT!	@egiW
@N)r   rQ   r   r   assertEqualtaurg   s   &r   testConstantsMathTests.testConstants  sH    

4"<=

3 :;1TWW9-r   c                \   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      \        P
                  4       V P	                  R\        P                  ! ^ 4      \        P
                  ^,          4       V P	                  R\        P                  ! ^4      ^ 4       V P                  \        \        P                  \        4       V P                  \        \        P                  \        4       V P                  \        \        P                  ^\        ,           4       V P                  \        \        P                  R\        ,
          4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zacos(-1)zacos(0)zacos(1)N)assertRaises	TypeErrorrQ   acosr   r   r   INFNINFeps
assertTruerU   NANrg   s   &r   testAcosMathTests.testAcos
  s    )TYY/

:tyy}dgg6

9diilDGGAI6

9diilA.*dii5*dii6*diiS9*diic:

499S>23r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^4      ^ 4       V P	                  R\        P                  ! ^4      R4       V P                  \
        \        P                  ^ 4       V P                  \
        \        P                  R4       V P                  \        P                  ! \        4      \        4       V P                  \
        \        P                  \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zacosh(1)zacosh(2)g5qB?Nr   )r   r   rQ   acoshr   r   r   r   r   r   rU   r   rg   s   &r   	testAcoshMathTests.testAcosh  s    )TZZ0

:tzz!}a0

:tzz!}.@A*djj!4*djj"5C#.*djj$7

4::c?34r   c                l   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      \        P
                  ) ^,          4       V P	                  R\        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      \        P
                  ^,          4       V P                  \        \        P                  \        4       V P                  \        \        P                  \        4       V P                  \        \        P                  ^\        ,           4       V P                  \        \        P                  R\        ,
          4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zasin(-1)zasin(0)zasin(1)Nr   )r   r   rQ   asinr   r   r   r   r   r   r   rU   r   rg   s   &r   testAsinMathTests.testAsin  s    )TYY/

:tyy}twwhqj9

9diilA.

9diilDGGAI6*dii5*dii6*diiS9*diic:

499S>23r   c                j   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      R4       V P	                  R\        P                  ! R4      R4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zasinh(0)zasinh(1)g'ya64?z	asinh(-1)Nr   g'ya64)r   r   rQ   asinhr   r   r   r   r   rU   r   rg   s   &r   	testAsinhMathTests.testAsinh*  s    )TZZ0

:tzz!}a0

:tzz!}.AB

;

20DEC#.D)40

4::c?34r   c                
   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      \        P
                  ) ^,          4       V P	                  R\        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      \        P
                  ^,          4       V P	                  R\        P                  ! \        4      \        P
                  ^,          4       V P	                  R\        P                  ! \        4      \        P
                  ) ^,          4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zatan(-1)zatan(0)zatan(1)z	atan(inf)z
atan(-inf)Nr   )r   r   rQ   atanr   r   r   r   r   rU   r   rg   s   &r   testAtanMathTests.testAtan3  s    )TYY/

:tyy}twwhqj9

9diilA.

9diilDGGAI6

;		#	:

<4477(1*=

499S>23r   c                   V P                  \        \        P                  4       V P	                  R \        P
                  ! ^ 4      ^ 4       V P	                  R\        P
                  ! R4      R4       V P	                  R\        P
                  ! R4      R4       V P                  \        \        P
                  ^4       V P                  \        \        P
                  R4       V P                  \        \        P
                  \        4       V P                  \        \        P
                  \        4       V P                  \        P                  ! \        P
                  ! \        4      4      4       R# )	zatanh(0)z
atanh(0.5)      ?gz?zatanh(-0.5)N      gzr   )r   r   rQ   r   r   atanhr   r   r   r   rU   r   rg   s   &r   	testAtanhMathTests.testAtanh<  s    )TYY/

:tzz!}a0

<C2EF

=$**T"24HI*djj!4*djj"5*djj#6*djj$7

4::c?34r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! R!^ 4      \        P
                  ) ^,          4       V P	                  R\        P                  ! R!^4      \        P
                  ) ^,          4       V P	                  R\        P                  ! ^ ^4      ^ 4       V P	                  R\        P                  ! ^^4      \        P
                  ^,          4       V P	                  R\        P                  ! ^^ 4      \        P
                  ^,          4       V P	                  R\        P                  ! ^R!4      ^\        P
                  ,          ^,          4       V P	                  R\        P                  ! R\        4      \        P
                  4       V P	                  R\        P                  ! RR"4      \        P
                  4       V P	                  R
\        P                  ! RR#4      \        P
                  4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR	4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! \        P                  ! R\        4      4      4       V P	                  R\        P                  ! R#\        4      \        P
                  ) 4       V P	                  R\        P                  ! R#R"4      \        P
                  ) 4       V P	                  R\        P                  ! R#R#4      \        P
                  ) 4       V P                  \        P                  ! R#R4      R#4       V P                  \        P                  ! R#R	4      R#4       V P                  \        P                  ! R#\        4      R#4       V P                  \        P                  ! \        P                  ! R#\        4      4      4       V P	                  R\        P                  ! \        \        4      \        P
                  ^,          ^,          4       V P	                  R\        P                  ! \        R"4      \        P
                  ^,          4       V P	                  R\        P                  ! \        R#4      \        P
                  ^,          4       V P	                  R\        P                  ! \        R4      \        P
                  ^,          4       V P	                  R\        P                  ! \        R	4      \        P
                  ^,          4       V P	                  R\        P                  ! \        \        4      \        P
                  ^,          4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P	                  R\        P                  ! \        \        4      \        P
                  ) ^,          ^,          4       V P	                  R\        P                  ! \        R"4      \        P
                  ) ^,          4       V P	                  R\        P                  ! \        R#4      \        P
                  ) ^,          4       V P	                  R\        P                  ! \        R4      \        P
                  ) ^,          4       V P	                  R\        P                  ! \        R	4      \        P
                  ) ^,          4       V P	                  R\        P                  ! \        \        4      \        P
                  ) ^,          4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P	                  R\        P                  ! R	\        4      \        P
                  4       V P	                  R\        P                  ! R	R#4      \        P
                  ^,          4       V P	                  R\        P                  ! R	R4      \        P
                  ^,          4       V P                  \        P                  ! R	\        4      R4       V P                  \        P                  ! \        P                  ! R	\        4      4      4       V P	                  R\        P                  ! R"\        4      \        P
                  ) 4       V P	                  R\        P                  ! R"R#4      \        P
                  ) ^,          4       V P	                  R\        P                  ! R"R4      \        P
                  ) ^,          4       V P                  \        P                  ! R"\        4      R#4       V P                  \        P                  ! \        P                  ! R"\        4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! \        P                  ! \        R"4      4      4       V P                  \        P                  ! \        P                  ! \        R#4      4      4       V P                  \        P                  ! \        P                  ! \        R4      4      4       V P                  \        P                  ! \        P                  ! \        R	4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       R # )$zatan2(-1, 0)zatan2(-1, 1)zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(1, -1)zatan2(0., -inf)        zatan2(0., -2.3)ffffff@zatan2(0., -0.)zatan2(-0., -inf)zatan2(-0., -2.3)zatan2(-0., -0.)zatan2(inf, -inf)zatan2(inf, -2.3)zatan2(inf, -0.)zatan2(inf, 0.)zatan2(inf, 2.3)zatan2(inf, inf)zatan2(-inf, -inf)zatan2(-inf, -2.3)zatan2(-inf, -0.)zatan2(-inf, 0.)zatan2(-inf, 2.3)zatan2(-inf, inf)zatan2(2.3, -inf)zatan2(2.3, -0.)zatan2(2.3, 0.)zatan2(-2.3, -inf)zatan2(-2.3, -0.)zatan2(-2.3, 0.)Nr   ffffff       )r   r   rQ   atan2r   r   r   r   r   r   rU   r   rg   s   &r   	testAtan2MathTests.testAtan2G  s   )TZZ0

>4::b!#4twwhqjA

>4::b!#4twwhqjA

=$**Q"2A6

=$**Q"2DGGAI>

=$**Q"2DGGAI>

>4::a#4aikB 	

$djjT&:DGGD

$djjT&:DGGD

#TZZC%8$''BB+R0B,b1B,b1

4::b##678

%tzz#t'<twwhG

%tzz#t'<twwhG

$djjc&:TWWHEC,c2C-s3C-s3

4::c3#789

%tzz#t'<dggaikJ

%tzz#t'<dggaiH

$djjd&;TWWQYG

#TZZS%947719E

$djjc&:DGGAIF

$djjc&:DGGAIF

4::c3#789

&

4(>
1M

&

4(>
K

%tzz$'=xzJ

$djjs&;dggXaZH

%tzz$'<twwhqjI

%tzz$'<twwhqjI

4::dC#89:

%tzz#t'<dggF

$djjc&:DGGAIF

#TZZR%8$''!)DC-r2

4::c3#789

&

4(>I

%tzz$'<twwhqjI

$djjr&:TWWHQJGD#.4

4::dC#89:

4::c4#89:

4::c4#89:

4::c3#789

4::c2#678

4::c3#789

4::c3#789

4::c3#789r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      ^4       V P	                  R\        P                  ! ^4      ^4       V P	                  R\        P                  ! R4      R4       V P	                  R\        P                  ! R4      R4       V P	                  R\        P                  ! R4      R4       V P	                  R	\        P                  ! R4      R4       V P	                  R
\        P                  ! ^4      ^4       V P	                  R\        P                  ! R4      R4       V P	                  R\        P                  ! R4      R4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zcbrt(0)zcbrt(1)zcbrt(8)z	cbrt(0.0)r   z
cbrt(-0.0)z	cbrt(1.2)g333333?ggAE ?z
cbrt(-2.6)zcbrt(27)zcbrt(-1)z	cbrt(-27)Nr   ggL]6H r   i)r   r   rQ   cbrtr   r   r   r   r   rU   r   rg   s   &r   testCbrtMathTests.testCbrt  sU   )TYY/

9diilA.

9diilA.

9diilA.

;		#4

<4$7

;		#0AB

<42DE

:tyy}a0

:tyy}b1

;		#33-4$/

499S>23r   c                   V P                  \        \        P                  4       V P	                  \
        \        \        P                  ! R 4      4      4       V P	                  \        P                  ! R 4      ^4       V P	                  \        P                  ! R4      ^4       V P	                  \        P                  ! R4      ^4       V P	                  \        P                  ! R4      ^ 4       V P	                  \        P                  ! R4      R4       V P	                  \        P                  ! R4      R4       V P	                  \        P                  ! R4      ^ 4       V P	                  \        P                  ! R4      ^ 4        ! R R4      p ! R R\        4      p ! R R	4      p ! R
 R4      pV P	                  \        P                  ! V! 4       4      ^*4       V P	                  \        P                  ! V! 4       4      ^*4       V P	                  \        P                  ! \        R4      4      ^+4       V P                  \        \        P                  V! 4       4       V P                  \        \        P                  V! 4       4       V! 4       pR Vn
        V P                  \        \        P                  V4       V P                  \        \        P                  V^ 4       V P	                  \        P                  ! \        R4      4      R4       V P	                  \        P                  ! \        R4      4      R4       R# )r         ?      ?r   c                   &   a  ] tR tRt o R tRtV tR# )$MathTests.testCeil.<locals>.TestCeili  c                    ^*# *   rv   rg   s   &r   __ceil__-MathTests.testCeil.<locals>.TestCeil.__ceil__      r   rv   Nrk   rl   rm   rn   r   ro   rp   rq   s   @r   TestCeilr           r   r   c                   &   a  ] tR tRt o R tRtV tR# )%MathTests.testCeil.<locals>.FloatCeili  c                    ^*# r   rv   rg   s   &r   r   .MathTests.testCeil.<locals>.FloatCeil.__ceil__  r   r   rv   Nr   rq   s   @r   	FloatCeilr     r   r   r   c                       ] tR tRtRtR# )&MathTests.testCeil.<locals>.TestNoCeili  rv   Nrw   rv   r   r   
TestNoCeilr         r   r   c                   $    ] tR tRt]! 4       tRtR# )'MathTests.testCeil.<locals>.TestBadCeili  rv   N)rk   rl   rm   rn   r   r   ro   rv   r   r   TestBadCeilr     s	    zHr   r   g     @E@c                      V # r^   rv   argss   *r   <lambda>$MathTests.testCeil.<locals>.<lambda>  s    4r   Nr         r         r   )r   r   rQ   ceilr   rT   typer;   r\   r   r   )rb   r   r   r   r   ts   &     r   testCeilMathTests.testCeil  s   )TYY/d499S>233+3+3+4!,4"-4"-3+4!,
	 		 		 		" 	"8:.39;/49T?3R8)TYY
=*dii?L'
)TYY2)TYY159T?3T:9T?3T:r   c                 	   V P                  \        P                  ! ^^*4      R4       V P                  \        P                  ! R^*4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! ^R4      R4       V P                  \        P                  ! RR	4      R
4       V P                  \        \        P                  4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR	4      R4       V P                  \        P                  ! \
        R4      \
        4       V P                  \        P                  ! \
        R	4      \        4       V P                  \        P                  ! \        R4      \
        4       V P                  \        P                  ! \        R	4      \        4       V P                  \        P                  ! R\
        4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! \
        \
        4      \
        4       V P                  \        P                  ! \
        \        4      \        4       V P                  \        P                  ! \        \
        4      \
        4       V P                  \        P                  ! \        \        4      \        4       V P                  \        P                  ! \        P                  ! \        R4      4      4       V P                  \        P                  ! \        P                  ! \        \
        4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! \        P                  ! \
        \        4      4      4       V P                  \        \        P                  ! R\        4      4      R4       R# )r6   r   r         @      @       @Nir   r         )r   rQ   rR   r   r   r   r   r   rU   r   rV   r&   rg   s   &r   testCopysignMathTests.testCopysign  s   q"-s3r2.4r3/6q"-s3r3/6)T]]3r2.3r3/5sB/5sC0$7tR0#6tS148r3/4r40#6sC0#6sD148tS137tT2D9

4==b#9:;

4==c#:;<

4==d#;<=

4==c#:;< 	

4==c#:;<T]]2s34b9r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! \        P
                  ) ^,          4      ^ \        P                  ! ^4      R7       V P	                  R\        P                  ! ^ 4      ^4       V P	                  R\        P                  ! \        P
                  ^,          4      ^ \        P                  ! ^4      R7       V P	                  R\        P                  ! \        P
                  4      R4        V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       R#   \         dV    T P                  \        \        P                  \        4       T P                  \        \        P                  \        4        Li ; i)z
cos(-pi/2)r+   zcos(0)z	cos(pi/2)zcos(pi)Nr   )r   r   rQ   cosr   r   ulpr   rU   r   r   r   r   rg   s   &r   testCosMathTests.testCos  sB   )TXX.

<477(1*!5q$((1+
N

8TXXa[!,

; 3Q
L

9dhhtww/4	:OODJJtxx}56OODJJtxx~67 	

488C=12  	:j$((C8j$((D9	:s   'A:G   AI ?I win32zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPc                n   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^4       V P	                  R\        P                  ! ^4      ^\        P                  ! ^4      ^,          ,          ,
          R4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zcosh(0)zcosh(2)-2*cosh(1)**2Nr   )r   r   rQ   coshr   r   r   r   r   rU   r   rg   s   &r   testCoshMathTests.testCosh  s     	)TYY/

9diilA.

)499Q<$))A,/8I+I2N3-4#.

499S>23r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! \        P
                  4      R4       V P	                  R\        P                  ! \        P
                  ^,          4      R4       V P	                  R\        P                  ! \        P
                  ) ^,          4      R4       V P	                  R\        P                  ! ^ 4      ^ 4       R# )zdegrees(pi)g     f@zdegrees(pi/2)g     V@zdegrees(-pi/4)z
degrees(0)Ng     F)r   r   rQ   degreesr   r   rg   s   &r   testDegreesMathTests.testDegrees  s    )T\\2

=$,,tww"7?

?DLL$;TB

#T\\477(1*%=uE

<a!4r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      ^\        P
                  ,          4       V P	                  R\        P                  ! ^ 4      ^4       V P	                  R\        P                  ! ^4      \        P
                  4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      R4       V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        \        P                  R4       R# )zexp(-1)zexp(0)zexp(1)r   @B Nr   )r   r   rQ   rE   r   r   r   r   r   r   rU   r   OverflowErrorrg   s   &r   testExpMathTests.testExp  s    )TXX.

9dhhrlAdffH5

8TXXa[!,

8TXXa[$&&1#,$,

488C=12-7;r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! R
4      R4       V P	                  R\        P                  ! ^ 4      ^4       V P	                  R\        P                  ! ^4      ^4       V P	                  R\        P                  ! R4      R4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      R4       V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        \        P                  R4       R	# )zexp2(-1)r   zexp2(0)zexp2(1)z	exp2(2.3)r   g){Ĳ@r   r  Nr   )r   r   rQ   exp2r   r   r   r   r   rU   r   r  rg   s   &r   testExp2MathTests.testExp2  s    )TYY/

:tyy}c2

9diilA.

9diilA.

;		#0AB3-4"-

499S>23-G<r   c                8   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      ^4       V P	                  R\        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      ^4       R# )zfabs(-1)zfabs(0)zfabs(1)Nr   )r   r   rQ   fabsr   rg   s   &r   testFabsMathTests.testFabs  s^    )TYY/

:tyy}a0

9diilA.

9diilA.r   c                   V P                  \        P                  ! ^ 4      ^4       ^p\        ^R4       F`  pW,          pV P                  \        P                  ! V4      V4       V P                  \        P                  ! V4      \	        V4      4       Kb  	  V P                  \        \        P                  R4       V P                  \        \        P                  ^
^d,          ) 4       R# )r     Nr   )r   rQ   	factorialr   r$   r   r   )rb   totalr#   s   &  r   testFactorialMathTests.testFactorial  s    *A.q$AJET^^A.6T^^A.Q@   	*dnnb9*dnnr3wh?r   c                \   V P                  \        \        P                  R 4       V P                  \        \        P                  R4       V P                  \        \        P                  R4       V P                  \        \        P                  R4       V P                  \        \        P                  \        P
                  ! R4      4       V P                  \        \        P                  \        P
                  ! R4      4       V P                  \        \        P                  R4       R# )      @g@5z5.2Nr   }Ô%I)r   r   rQ   r  decimalDecimalrg   s   &r   testFactorialNonIntegers"MathTests.testFactorialNonIntegers"  s    )T^^S9)T^^S9)T^^T:)T^^V<)T^^W__S5IJ)T^^W__U5KL)T^^S9r   c                    V P                  \        \        P                  ^
^d,          4       V P                  \        \        P                  R4       R# )
   }Ô%ITN)r   r  rQ   r  r   rg   s   &r   testFactorialHugeInputs!MathTests.testFactorialHugeInputs,  s4     	-SA)T^^U;r   c                l   V P                  \        \        P                  4       V P	                  \
        \        \        P                  ! R 4      4      4       V P	                  \        P                  ! R 4      ^ 4       V P	                  \        P                  ! R4      ^4       V P	                  \        P                  ! R4      ^4       V P	                  \        P                  ! R4      R4       V P	                  \        P                  ! R4      R4       V P	                  \        P                  ! R4      R4        ! R R\        4      p ! R R4      p ! R R\        4      p ! R	 R
4      p ! R R4      pV P	                  \        P                  ! V! 4       4      ^*4       V P	                  \        P                  ! V! 4       4      ^*4       V P	                  \        P                  ! \        R4      4      ^)4       V P                  \        \        P                  V! 4       4       V P                  \        \        P                  V! 4       4       V P                  \        \        P                  V! R4      4       V! 4       pR Vn
        V P                  \        \        P                  V4       V P                  \        \        P                  V^ 4       V P	                  \        P                  ! \        R4      4      R4       V P	                  \        P                  ! \        R4      4      R4       R# )r   r   r   c                       ] tR tRtRtRtR# ),MathTests.testFloor.<locals>.TestFloorIsNonei@  Nrv   )rk   rl   rm   rn   	__floor__ro   rv   r   r   TestFloorIsNoner#  @  s    Ir   r%  c                   &   a  ] tR tRt o R tRtV tR# )&MathTests.testFloor.<locals>.TestFlooriB  c                    ^*# r   rv   rg   s   &r   r$  0MathTests.testFloor.<locals>.TestFloor.__floor__C  r   r   rv   Nrk   rl   rm   rn   r$  ro   rp   rq   s   @r   	TestFloorr'  B  r   r   r+  c                   &   a  ] tR tRt o R tRtV tR# )'MathTests.testFloor.<locals>.FloatFlooriE  c                    ^*# r   rv   rg   s   &r   r$  1MathTests.testFloor.<locals>.FloatFloor.__floor__F  r   r   rv   Nr*  rq   s   @r   
FloatFloorr-  E  r   r   r0  c                       ] tR tRtRtR# )(MathTests.testFloor.<locals>.TestNoFlooriH  rv   Nrw   rv   r   r   TestNoFloorr2  H  r   r   r3  c                   $    ] tR tRt]! 4       tRtR# ))MathTests.testFloor.<locals>.TestBadFlooriJ  rv   N)rk   rl   rm   rn   r   r$  ro   rv   r   r   TestBadFloorr5  J  	     
Ir   r6  g33333D@      @c                      V # r^   rv   r   s   *r   r   %MathTests.testFloor.<locals>.<lambda>T  s    Dr   Nr   r   r   r   )r   r   rQ   floorr   rT   r   r;   r\   r   r$  )rb   r%  r+  r0  r3  r6  r   s   &      r   	testFloorMathTests.testFloor3  s   )TZZ0d4::c?34C!,C!,C!,D)2.D)2.D)2.
	e 		 		 		 		# 	#IK0"5JL126IdO4b9)TZZ?*djj,.A)TZZ1EFM()TZZ3)TZZA6IdO4d;IdO4d;r   c                J   V P                  \        \        P                  4       V P	                  R \        P                  ! ^
^4      R4       V P	                  R\        P                  ! ^
R4      R4       V P	                  R\        P                  ! ^
R4      R4       V P	                  R\        P                  ! R^4      R4       V P	                  R\        P                  ! RR4      R4       V P	                  R	\        P                  ! RR4      R4       V P                  \        P                  ! \        P                  ! \        R4      4      4       V P                  \        P                  ! \        P                  ! R\        4      4      4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        \        P                  RR4       V P                  \        \        P                  \        R4       V P                  \        \        P                  \        R4       V P                  \        \        P                  \        R4       V P                  \        P                  ! R
\        4      R
4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R
\        4      R
4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        \        P                  \        \        4       R# )zfmod(10, 1)r   zfmod(10, 0.5)r   zfmod(10, 1.5)r   r   zfmod(-10, 1)zfmod(-10, 0.5)zfmod(-10, 1.5)r   Nr   r         )r   r   rQ   fmodr   r   rU   r   r   r   r   r   rg   s   &r   testFmodMathTests.testFmod[  s4   )TYY/

=$))B"2C8

?DIIb#$6<

?DIIb#$6<

>499S!#4d;

#TYYsC%8$?

#TYYsC%8$?

499S"#567

499R#567

499S##678*diiR8*diib9*diir:*diib93,c24-t43-s34.53,c23-s3*diic:r   c                  a  S P                  \        \        P                  4       V 3R  lpV! R\        P                  ! R4      R4       V! R\        P                  ! ^ 4      R4       V! R\        P                  ! ^4      R	4       V! R\        P                  ! ^4      R
4       S P	                  \        P                  ! \
        4      ^ ,          \
        4       S P	                  \        P                  ! \        4      ^ ,          \        4       S P                  \        P                  ! \        P                  ! \        4      ^ ,          4      4       R# )c                    < Wuw  r4w  rV\        W5,
          4      \        8  g   WF8w  d   SP                  V : R V: RV: 24       R# R# z
 returned z, expected Nr&   r   r   )r   resultr(   mantrE   emanteexprb   s   &&&    r   	testfrexp&MathTests.testFrexp.<locals>.testfrexpu  s@    )/&KT%4:$		3 4 )4r   z	frexp(-1)zfrexp(0)zfrexp(1)zfrexp(2)Nr   )r   r6   )r   r   )r   r6   )r   rI   )
r   r   rQ   frexpr   r   r   r   rU   r   )rb   rM  s   f r   	testFrexpMathTests.testFrexpr  s    )TZZ0	4 	+tzz"~y9*djjmV4*djjmX6*djjmX6C+S1D)!,d3

4::c?1#567r   z2fsum is not exact on machines with double roundingc                	  aa ^ RI Hp VP                  oVP                  S,
          oVV3R lp. R3R.R3. ROR3. ROR3. ROR3. ROR 3. R!OR"3. R#OR$3\	        ^R	4       Uu. uF  pRV,          NK  	  up\
        P                  R
4      3\	        ^R	4       Uu. uF  pRV,          V,          NK  	  up\
        P                  R4      3. R%OR3. R&OR3\	        R'R^4       Uu. uF6  pRV,          RV^2,           ,          ,
          RV^4,           ,          ,           NK8  	  upR(.,           \
        P                  R4      3.p\	        R	4       Uu. uF  pRV,          NK  	  ppTP                  \	        R4       Uu. uF  qVV^,           ,          We,          ,
          NK!  	  upVR,          ) .,           V^ ,          ) 34       \        V4       F1  w  pw  rx \        P                  ! V4      p	V P                  X	V4       K3  	  ^ RIHp
HpHp \	        R4       F  p. R)O^
,          p^ p\	        ^4       F8  pV! ^ V
! 4       4      ^,          V,
          pW,          pVP                  V4       K:  	  V! V4       V! V4      pV P                  V! V4      \        P                  ! V4      4       K  	  V P                  \        P                  ! R\        P$                  .4      \        P$                  4       V P'                  \        P(                  ! \        P                  ! \        P*                  R.4      4      4       V P                  \        P                  ! R\-        R4      RRR\-        R4      R.4      R4       V P/                  \        \        P                  RR.4       V P/                  \        \        P                  \        P$                  \        P$                  ) .4       V P/                  \0        \        P                  R.4       V P/                  \0        \        P                  ^4       V P/                  \        \        P                  ^
R,          .4       R pV P/                  \2        \        P                  V! 4       4       R# u upi u upi u upi u upi u upi   \         d    T P                  RYXT3,          4        EL\         d    T P                  RYXT3,          4        ELi ; i)*r   )
float_infoc           	     f  < ^ ^ r!V  Fr  p\         P                  ! V4      w  rE\        \         P                  ! VS	4      4      VS	,
          rTW%8  d   WV,
          ,          pTpMWEV,
          ,          pW,          pKt  	  \	        \        \        \        V4      4      4      ^,
          S	,
          SV,
          4      pV^ 8  d^   ^V^,
          ,          pV^V,          ,          \        W,          ;'       d    V^V,          ^,
          ,          4      ,           pW&,          p\         P                  ! W4      # )zFull precision summation.  Compute sum(iterable) without any
intermediate accumulation of error.  Based on the 'lsum' function
at https://code.activestate.com/recipes/393090-binary-floating-point-summation-accurate-to-full-p/

)	rQ   rO  rT   ldexpmaxlenbinr&   bool)
iterabletmanttexpr   rJ  rE   tailhetinymant_digs
   &       r   msum MathTests.testFsum.<locals>.msum  s     Q4 JJqM	

4 :;S8^c:3h&EDX%D  s3s5z?+A-8%$,GDax$q&M!A#ei.I.IEAaCEM)JJ::e**r   r   r  r   0.++d~QJr     z0x1.df11f45f4e61ap+2z-0x1.62a2af1bd3624p-1g7yACi  z0x1.5555555555555p+970g333333?r  zDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))randomgaussshufflespamc               3      "   R x  \         h5i)r   )ZeroDivisionErrorrv   r   r   bad_iter$MathTests.testFsum.<locals>.bad_iter  s     I##s   Nr  r   d~Q)r  r   r  rc  rd  r   ro  )r  r   r  rc  rd  r   ro  )      @Cr   g      g?C)rp  r         9g     @C)g     @Cr   rq  g     @C)g?Cr   g      <g?C)r	   r   缉ؗҜ<)g7yACg?g7yAgg      )   r  ir  gh$.5g#B;)sysrS  r`  min_expr   r;   fromhexappend	enumeraterQ   fsumr  r   r   r   rf  rg  rh  r   r   rU   r   r\   r   r   rl  )rb   rS  ra  r   test_valuesr#   termsvalsr(   actualrf  rg  rh  jsvrm  r_  r`  s   &                @@r   testFsumMathTests.testFsum  s    	#&&""X-	+8 IUCL<fE:FC'5&4+\:);7!!TN+NqbddN+]]124"'4.1.QsQhqjj.1]]235 34=sC7<UC7KL7K!b!eb1R4j 2":--7KL[]]346!, "'t-Aa-,1$K8Kq1Q3Z%(""K8U4[L>I1XI
 	
 $-[#9AI4 VX. $: 	21tA82=DA3Z!VX&!+a/A   DMT
AT$Z49  	C?3TXX>

499dhh_#=>?E9S>66$()D/5$B CDJ	L-VV4DE*dii$((TXXI1FG)TYY9)TYY2-RXJ?	$ 	+TYY
Cs ,1
 M .8 ! I		 256$4GH I I		 256$4GH IIs<   "RR"<RR8%RR!!%S1	S1S10S1c                *   \         P                  pV P                  V! ^ ^ 4      ^ 4       V P                  V! ^^ 4      ^4       V P                  V! R^ 4      ^4       V P                  V! ^ ^4      ^4       V P                  V! ^ R4      ^4       V P                  V! ^^4      ^4       V P                  V! ^R4      ^4       V P                  V! R	^4      ^4       V P                  V! ^x^T4      ^4       V P                  V! ^TR
4      ^4       V P                  V! RR4      ^ 4       RpRpR F  pW$,          pW4,          pV P                  V! WV4      V4       V P                  V! We4      V4       V P                  V! V) V4      V4       V P                  V! We) 4      V4       V P                  V! WV) 4      V4       V P                  V! V) V4      V4       V P                  V! V) V) 4      V4       V P                  V! V) V) 4      V4       K  	  V P                  V! 4       ^ 4       V P                  V! ^x4      ^x4       V P                  V! R
4      ^x4       V P                  V! ^x^T^f4      ^4       V P                  V! ^x^^T4      ^4       V P                  \        VR4       V P                  \        VR^T4       V P                  \        V^xR4       V P                  \        V^x^R4       V P                  V! \        ^x4      \        ^T4      4      ^4       R# )r       j9W    P)}    "o  `T"-l   8P9cC/[N
S9bXl	   9@{wM275k       ^@      U@Nr   )	 l   Z'^%#>;*Q!/61^)rQ   gcdr   r   r   ry   )rb   r  r   ycabs   &      r   testGcdMathTests.testGcd  s   hhQA&QA&RQ'QA&QQ'QA&QQ'S"q)S"r*R+98:;=	? O4VAAASY*SY*S!QZ+SBZ+SBZ+S!QZ+S!aR[!,S!aR[!,V 	"S3'TC(S"c*A.S!R!,)S%0)S%4)S#t4)S#q$7[-{2?Dr   c                Z   ^ RI Hp ^ RIHp \        P
                  p\        P                  \        P                  \        P                  ! R4      \        P                  ! R4      \        P                  ! R4      3p\        \        V4      ^,           4       FC  pV P                  V! VRV !  \        P                  ! \        R VRV  4       4      4      4       KE  	  V P                  V! RR	4      R
4       V P                  V! ^^4      ^4       V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! R\!        R4      4      R4       V P                  V! \!        R4      R4      R4       V P                  V! V! ^4      V! ^4      4      ^4       V P                  V! V! ^^ 4      V! ^^ 4      4      V! ^^ 4      4       V P                  V! RRRRR4      R4       V P                  V! RR4      R4       V P                  V! R4      R4       V P                  V! 4       R4       V P                  R\        P"                  ! RV! R4      4      4       V P                  V! RRR4      V! RRR4      4       V P%                  \&        4      ;_uu_ 4        V! ^R7       RRR4       V P%                  \&        4      ;_uu_ 4        V! RRR4       RRR4       ^
\(        P*                  P,                  ^,           ,          pV P%                  \.        \0        34      ;_uu_ 4        V! ^V4       RRR4       V P                  V! \2        4      \2        4       V P                  V! ^ \2        4      \2        4       V P                  V! ^
\2        4      \2        4       V P                  V! R\2        4      \2        4       V P                  V! \4        \2        4      \2        4       V P                  V! \2        \4        4      \2        4       V P                  V! \6        \4        4      \2        4       V P                  V! \4        \6        4      \2        4       V P                  V! \2        ) \2        4      \2        4       V P                  V! \2        ) \2        ) 4      \2        4       V P                  V! ^
\2        ) 4      \2        4       V P9                  \        P:                  ! V! \4        4      4      4       V P9                  \        P:                  ! V! ^ \4        4      4      4       V P9                  \        P:                  ! V! \4        ^
4      4      4       V P9                  \        P:                  ! V! ^
\4        4      4      4       V P9                  \        P:                  ! V! \4        \4        4      4      4       V P9                  \        P:                  ! V! \4        4      4      4       \<        R,          p\        ^ 4       FP  pV P9                  \        P>                  ! V! V.V,          !  V\        P                  ! V4      ,          4      4       KR  	  \        ^ 4       FS  p	\@        RV	,          ,          p
V P                  \        P
                  ! ^V
,          ^V
,          4      ^V
,          4       KU  	  V P$                  ! \&        \        P
                  .R.^,          ORN5!   R#   + '       g   i     ELG; i  + '       g   i     EL+; i  + '       g   i     EL; i)r   r  Fractionr   r8  g @Nc              3   2   "   T F  q^,          x  K  	  R# 5i)rI   Nrv   ).0r  s   & r   	<genexpr>&MathTests.testHypot.<locals>.<genexpr>,  s     5HqddHs   g      (@r        *@g      ?g      ?r   TFr         %@r   r   r   皙?string皙@r   rj  r   r         %r   r@  )!r  r  	fractionsr  rQ   hypotr   r   sqrtgammasinr   rW  assertAlmostEqualsumr   r\   rR   r   r   ru  rS  
max_10_expr   r  r   r   r   r   rU   	FLOAT_MAXisclose	FLOAT_MIN)rb   r  r  r  r   r#   int_too_big_for_float	fourthmaxr   rE   scales   &          r   	testHypotMathTests.testHypot   s   #&

 vvtww		#

3#Ns4y{#A""tBQx 		#5D!H556 $ 	tS)40r1r*tR$/r4$/tYs^4d;y~t4d;wr{GAJ7<xB/!RA8BPRCSTtUD$=sC 	sC#.ut,#&MM#uT{+	
 	#sC #sC 	
 y))AJ *y))#x% * "s~~'@'@1'D E
M:;;!*+ < 	sS)q#,r3-sC#.sC#.sC#.tS)3/sD)3/tS)3/tcT*C0rC4#. 	

5:./

5C=12

5b>23

5S>23

5c?34

5:./ O	rAOODLL)Q)@)2TYYq\)AC D 
 9Cs
*ETZZ%591U7C  	)TZZEC58EfEQ *))))) <;;s$   )
[1\6
\1\	\	\*	z7hypot() loses accuracy on machines with double roundingc                f   \         P                  p\        P                  p\        P                  ! R R7      pR F  w  rE\
        P                  V4      p\
        P                  V4      pV P                  WEWgR7      ;_uu_ 4        \        P                  ! V4      ;_uu_ 4        \        V! V4      ^,          V! V4      ^,          ,           P                  4       4      pRRR4       V P                  V! Wg4      X4       RRR4       K  	  R#   + '       g   i     L6; i  + '       g   i     K  ; i)  )prec)hxhyr   r  N))z0x1.10e89518dca48p+29z0x1.1970f7565b7efp+30)z0x1.10106eb4b44a2p+29z0x1.ef0596cdc97f8p+29)z0x1.459c058e20bb7p+30z0x1.993ca009b9178p+29)z0x1.378371ae67c0cp+30z0x1.fbe6619854b4cp+29)z0x1.f4cd0574fb97ap+29z0x1.50fe31669340ep+30)z0x1.494b2cdd3d446p+29z0x1.212a5367b4c7cp+29)z0x1.f84e649f1e46dp+29z0x1.1fa56bef8eec4p+30)z0x1.2e817edd3d6fap+30z0x1.eb0814f1e9602p+29)z0x1.0d3a6e3d04245p+29z0x1.32a62fea52352p+30)z0x1.888e19611bfc5p+29z0x1.52b8e70b24353p+29)z0x1.538816d48a13fp+29z0x1.7967c5ca43e16p+29)z0x1.57b47b7234530p+29z0x1.74e2c7040e772p+29)z0x1.821b685e9b168p+30z0x1.677dc1c1e3dc6p+29)z0x1.9e8247f67097bp+29z0x1.24bd2dc4f4baep+29)z0x1.b73b59e0cb5f9p+29z0x1.da899ab784a97p+28)z0x1.94a8d2842a7cfp+30z0x1.326a51d4d8d8ap+30)z0x1.e930b9cd99035p+29z0x1.5a1030e18dff9p+30)z0x1.1592bbb0e4690p+29z0x1.a9c337b33fb9ap+29)z0x1.1243a50751fd4p+29z0x1.a5a10175622d9p+29)z0x1.57a8596e74722p+30z0x1.42d1af9d04da9p+30)z0x1.ee7dbd9565899p+29z0x1.7ab4d6fc6e4b4p+29)z0x1.5c6bfbec5c4dcp+30z0x1.02511184b4970p+30)z0x1.59dcebba995cap+30z0x1.50ca7e7c38854p+29)z0x1.768cdd94cf5aap+29z0x1.9cfdc5571d38ep+29)z0x1.dcf137d60262ep+29z0x1.1101621990b3ep+30)z0x1.3a2d006e288b0p+30z0x1.e9a240914326cp+29)z0x1.62a32f7f53c61p+29z0x1.47eb6cd72684fp+29)z0x1.d3bcb60748ef2p+29z0x1.3f13c4056312cp+30)z0x1.282bdb82f17f3p+30z0x1.640ba4c4eed3ap+30)z0x1.89d8c423ea0c6p+29z0x1.d35dcfe902bc3p+29)rQ   r  r  r  Contextr;   rw  subTestlocalcontextr  r   )	rb   r  r  high_precisionr  r  r   r  zs	   &        r   testHypotAccuracyMathTests.testHypotAccuracyq  s     

// c2$
FBJ b!Ab!Aa55)).99wqz1}wqz1}<BBDEA :  qa0 65O$
P :9 655s$   D#;D DDDD0c                   ^ RI Hp ^ RIHp \        P
                  p\        P                  pV P                  V! RR4      R4       V P                  V! RR4      R4       \        ^	4       F  p\        ^4       F  p\        ;QJ d    . R \        V4       4       F  NK  	  5M! R \        V4       4       4      p\        ;QJ d    . R \        V4       4       F  NK  	  5M! R \        V4       4       4      pV P                  V! Wx4      V! \        R	 \        Wx4       4       4      4      4       K  	  K  	  V P                  V! . RO. RO4      R4       V P                  V! \        . RO4      \        . RO4      4      R4       V P                  V! RR4      R4       V P                  V! RR 4      ^4       V P                  V! \        R
4      ^3R 4      ^4       V P                  V! R!\        R4      R34      ^4       V P                  V! ^\        R4      3R"4      ^4       V P                  V! R#R"4      ^4       V P                  V! V! ^4      V! ^4      3V! ^4      V! R4      34      V! ^4      4       V P                  V! V! ^^ 4      V! ^^ 4      3V! ^^ 4      V! R^ 4      34      V! ^^ 4      4       V P                  V! R$R%4      R4       V P                  V! R&R&4      R4       V P                  V! R'R'4      R4       V P                  R\        P                  ! RV! R)R*4      4      4       V P                  R\        P                  ! RV! R*R)4      4      4       V P                  V! R+R,4      V! R-R,4      4        ! R R\        4      p	V P                  V! V	! R4      R4      R4       V P!                  \"        4      ;_uu_ 4        V! RR.R7       RRR4       V P!                  \"        4      ;_uu_ 4        V! R4       RRR4       V P!                  \"        4      ;_uu_ 4        V! RR.R/4       RRR4       V P!                  \"        4      ;_uu_ 4        V! ^^4       RRR4       V P!                  \"        4      ;_uu_ 4        V! R0R4       RRR4       V P!                  \$        4      ;_uu_ 4        V! R1R24       RRR4       V P!                  \$        4      ;_uu_ 4        V! RR34       RRR4       V P!                  \"        4      ;_uu_ 4        V! R5R64       RRR4       V P!                  \"        4      ;_uu_ 4        V! RR4       RRR4       ^
\&        P(                  P*                  ^,           ,          p
V P!                  \$        \,        34      ;_uu_ 4        V! ^V
3R74       RRR4       V P!                  \$        \,        34      ;_uu_ 4        V! R7^V
34       RRR4       V P!                  \"        4      ;_uu_ 4        V! R4^4       RRR4       V P!                  \"        4      ;_uu_ 4        V! ^.^4       RRR4        ! R R4      pV P!                  \$        4      ;_uu_ 4        V! ^.V! 4       .4       RRR4       \        ^4       FV  p\.        P.                  ! 4       \.        P.                  ! 4       rV P                  V! V3V34      \1        Wx,
          4      4       KX  	  \2        R8R(RR\4        \6        .p\8        P:                  ! V^R7       F  p\8        P:                  ! V^R7       F  p\        Wx4       UUu. uF  w  rW,
          NK  	  ppp\=        \?        \        P@                  V4      4      '       d   V P                  V! Wx4      \4        4       Kn  \=        \?        \        PB                  V4      4      '       g   K  V PE                  \        PB                  ! V! Wx4      4      4       K  	  K  	  \F        R,          p\        ^ 4       F  pV3V,          pR*V,          pV PE                  \        PH                  ! V! Wx4      V\        P                  ! V4      ,          4      4       V PE                  \        PH                  ! V! W4      V\        P                  ! V4      ,          4      4       K  	  \        ^ 4       F  p\J        RV,          ,          p^V,          ^V,          3pR9pV P                  \        P
                  ! Wx4      ^V,          4       V P                  \        P
                  ! W4      ^V,          4       K  	  R#   + '       g   i     EL; i  + '       g   i     ELs; i  + '       g   i     ELW; i  + '       g   i     EL<; i  + '       g   i     EL!; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELj; i  + '       g   i     ELG; i  + '       g   i     EL,; i  + '       g   i     EL; i  + '       g   i     EL; iu uppi ):r   r  r  r   r   r   r  c              3   P   "   T F  p\         P                  ! R^4      x  K  	  R# 5i   Nrf  uniformr  ks   & r   r  %MathTests.testDist.<locals>.<genexpr>       BA&..Q//   $&c              3   P   "   T F  p\         P                  ! R^4      x  K  	  R# 5ir  r  r  s   & r   r  r    r  r  c              3   D   "   T F  w  rW,
          R ,          x  K  	  R# 5i)r   Nrv   )r  pxqxs   &  r   r  r    s     FI&"bg#--Is          ,@r  r   c                       ] tR tRtRtR# )MathTests.testDist.<locals>.Tre  rv   Nrw   rv   r   r   Tr    r   r   r  pqNabcxyzc                   $    ] tR tRt]! 4       tRtR# )$MathTests.testDist.<locals>.BadFloati
  rv   N)rk   rl   rm   rn   r   rh   ro   rv   r   r   BadFloatr  
  r7  r   r  r  repeat)r   r   r   r   )r   r   r   r6   rI      )   rI   r   )r  r   )r   r   )   r6   )rI   r  )   r6   )rI   i)r  r   )TTFFTT)TFTFFF)     *@g      )@      
rv   r   )r   )r   )r   r   r   )r   r   r   )r   r   r   )r  r     )rt     	   )r  r  r  )r6   rI   r  r  )r  r  rt  )r  r  r  rt  r6   )r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   rj  )r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   )rI   r  r  )r   r   )&r  r  r  r  rQ   distr  r   r   tupler  r  zipiterr\   rR   r   r   r   ru  rS  r  r  rf  r&   r   r   r   	itertoolsproductanymaprV   rU   r   r  r  r  )rb   DFr  r  r#   r  r  r  r  r  r  valuesr  r  diffsr  r   rE   r  s   &                   r   testDistMathTests.testDist  s   (+yyyy 	o/?@#Fi4c: qA1XEBqBEEBqBBEBqBEEBqBB&&JFCIFFG   	o/?@#Fd?3T:J5KLcR 	k;7>gw/4y~q17;R@g	#';<bAr9S>2G<bAh0"5quadmadAbE];QrUCqRy!Ar(3a2h"b	5JK2r	$DFH	
 	224	 	b"s+MM#tGV45	
 	MM#tFG45	
 	),),	
	 	a	lZ93? y))9	* *y))O *y))Iy1 *y))AJ *y))%y1 *z**y) +z**L) +y))$g. *y)) * "s~~'@'@1'D E
M:;;!*+V4 <
M:;;!234 <y))qM *y))!aL *	# 	# z**!xzl# + rA==?FMMOqT1$-s15z: 
 tS$S9""6!4A&&va8/21y9yVRy9s4::u-..$$T!Z5TZZ/00OODJJtAz$:; 9 5 O	rAq A
AOODLLaY15MNOOODLLaY15MNO	  9Cs
*E5!E'"AATYYq_ag6TYYq_ag6 y *))))))))))))))******)))))) <;;;;;)))))) +** :s   e6	e)$e=
f
f%2
f9!
g
g!?
g5h	h
h13i-ii-
e&	)e:	=f	f"	%f6	9g
	g	!g2	5h		h	h.	1i	i	i*	c                    V P                  \        4      ;_uu_ 4        \        P                  ! ^^.. RO4       RRR4       R#   + '       g   i     R# ; i)r6   N)r  r  r  )r   r   rQ   r  rg   s   &r   test_math_dist_leakMathTests.test_math_dist_leak1  s4    z**IIq!fi( +***s   AA	c           
         \        \        R 4      4      \        \        RR4      4      ,           \        ^<^4       UUu. uF&  p\        R^(4       F  p^V,          V,           NK  	  K(  	  upp,           ^R,          ^
R,          .,           pV F  pV P                  VR7      ;_uu_ 4        \        P                  ! V4      pV P                  \        V4      \        4       V P                  WU,          V4       V P                  WE^,           V^,           ,          4       RRR4       K  	  V P                  \        4      ;_uu_ 4        \        P                  ! R4       RRR4       \        P                  ! R4      pV P                  \        V4      \        4       V P                  V^4       \        P                  ! R4      pV P                  \        V4      \        4       V P                  V^ 4        ! R R\        4      p\        P                  ! V! R	4      4      pV P                  \        V4      \        4       V P                  V^)4       V P                  \        4      ;_uu_ 4        \        P                  ! V! R4      4       RRR4       R
R\        P                  ! R4      RRR.pV Fb  pV P                  VR7      ;_uu_ 4        V P                  \         4      ;_uu_ 4        \        P                  ! V4       RRR4       RRR4       Kd  	  R# u uppi   + '       g   i     EK  ; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L`; i  + '       g   i     K  ; i)r  i'  i  r_   NTFc                   ,   a  ] tR tRt o R tR tRtV tR# )(MathTests.testIsqrt.<locals>.IntegerLikeiS  c                    Wn         R # r^   r_   ra   s   &&r   rc   1MathTests.testIsqrt.<locals>.IntegerLike.__init__T  s    "
r   c                    V P                   # r^   r_   rg   s   &r   r}   2MathTests.testIsqrt.<locals>.IntegerLike.__index__W  s    zz!r   r_   Nr   rq   s   @r   IntegerLiker  S  s     #" "r   r   i  r8  za stringz3.5y              @g      Y@iX> i(F ir   r   r   )listr   r  rQ   isqrtassertIsr   rT   assertLessEqual
assertLessr   r   r   objectr  r  r   )rb   r   r#   r{  r`   r  r   
bad_valuess   &       r   	testIsqrtMathTests.testIsqrt6  sw    t5|456!&r3HAsBAq!taxxxHI $wD!" 	 !EE**JJu%d1gs+$$QS%0!ac{3	 +* ! z**JJrN + JJtd1gs#AJJud1gs#A	"& 	" JJ{4()d1gs#Bz**JJ{2' +
 W__U3T4

  EE**&&y11JJu% 2 +*  W I
 +** +**. +* 21 +**sN   ,L)A4LL2,MM,*MM,L/2M	M	M)$M,,M=g333333?)memusec                   V^,          '       d
   V^,          p^V,          p\         P                  ! V4      pV P                  VP                  4       V^,          ^,           4       V P                  VP	                  4       ^4       R# )r6   N)rQ   r  r   r    	bit_count)rb   sizer  ws   &&  r   test_isqrt_hugeMathTests.test_isqrt_hugek  s^    !88AIDIJJqMQ7*r   c                H   \         P                  pV P                  V! ^ ^ 4      ^ 4       V P                  V! ^^ 4      ^ 4       V P                  V! R^ 4      ^ 4       V P                  V! ^ ^4      ^ 4       V P                  V! ^ R4      ^ 4       V P                  V! ^^4      ^4       V P                  V! ^R4      ^4       V P                  V! R^4      R4       V P                  V! ^x^T4      R4       V P                  V! ^TR4      R4       V P                  V! RR4      R4       RpRpR F  pW$,          pW4,          pW#,          V,          pV P                  V! WV4      V4       V P                  V! We4      V4       V P                  V! V) V4      V4       V P                  V! We) 4      V4       V P                  V! WV) 4      V4       V P                  V! V) V4      V4       V P                  V! V) V) 4      V4       V P                  V! V) V) 4      V4       K  	  V P                  V! 4       ^4       V P                  V! ^x4      ^x4       V P                  V! R4      ^x4       V P                  V! ^x^T^f4      R4       V P                  V! ^x^ ^T4      ^ 4       V P                  \        VR	4       V P                  \        VR	^T4       V P                  \        V^xR
4       V P                  \        V^x^ R
4       V P                  V! \        ^x4      \        ^T4      4      R4       R# )r   iY  iH  r  r  l    ,`aUx-xB:Vn
Ldbl   me%Y% l   };T^	 i7  r  r  Nr   r  r  )r  l   |/Kr2 )rQ   lcmr   r   r   ry   )rb   r  r   r  r  r  r  ds   &       r   test_lcmMathTests.test_lcmt  s   hhQA&QA&RQ'QA&QQ'QA&QQ'S"s+S"s+R,98:R	T ! (AAA	ASY*SY*S!QZ+SBZ+SBZ+S!QZ+S!aR[!,S!aR[!,( 	"S3'TC(S"c*E2S!R!,)S%0)S%4)S#t4)S#q$7[-{2?Er   c           	     \	   V P                  \        \        P                  4       V P                  \        \        P                  R R4       V P	                  R\        P                  ! ^ ^4      ^ 4       V P	                  R\        P                  ! ^^4      ^4       V P	                  R\        P                  ! ^R4      R4       V P	                  R\        P                  ! R^4      R4       V P                  \
        \        P                  RR4       V P                  \
        \        P                  RR4       V P                  \        P                  ! RR4      R	4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! \        ^4      \        4       V P                  \        P                  ! \        R4      \        4       V P                  \        P                  ! \        P                  ! \        ^ 4      4      4       RRR^
^(,          3 EFy  pV P                  \        P                  ! \        V) 4      \        4       V P                  \        P                  ! \        V) 4      \        4       V P                  \        P                  ! RV) 4      R	4       V P                  \        P                  ! RV) 4      R4       V P                  \        P                  ! R	V) 4      R	4       V P                  \        P                  ! RV) 4      R4       V P                  \        P                  ! \        P                  ! \        V) 4      4      4       V P                  \
        \        P                  RV4       V P                  \
        \        P                  RV4       V P                  \        P                  ! R	V4      R	4       V P                  \        P                  ! RV4      R4       V P                  \        P                  ! \        V4      \        4       V P                  \        P                  ! \        V4      \        4       V P                  \        P                  ! \        P                  ! \        V4      4      4       EK|  	  R
# )r   r  z
ldexp(0,1)z
ldexp(1,1)zldexp(1,-1)r   zldexp(-1,1)r   r  r   Nr   r;  r   ir   i+順     d(	       Fx:^V )r   r   rQ   rU  r   r  r   r   r   r   rU   r   rb   r   s   & r   	testLdexpMathTests.testLdexp  s   )TZZ0)TZZc:

<Aa!4

<Aa!4

=$**Qr"2C8

=$**R"2B7-RA-S'BB126C2C8C,c2D$/6

4::c1#567 R0ATZZaR0#6TZZqb148TZZQB/4TZZaR0#6TZZQB/4TZZaR0#6OODJJtzz#r':;<mTZZQ?mTZZa@TZZA.3TZZQ/5TZZQ/5TZZa0$7OODJJtzz#q'9:; 1r   c                T    V P                  \        P                  ! R R4      R4       R# )l   s@ba g       Ni)r   rQ   rU  rg   s   &r   testLdexp_denormalMathTests.testLdexp_denormal  s      	$4e<fEr   c                L   V P                  \        \        P                  4       V P                  \        \        P                  ^^^4       V P	                  R\        P                  ! ^\        P
                  ,          4      R4       V P	                  R\        P                  ! ^4      ^ 4       V P	                  R\        P                  ! \        P
                  4      ^4       V P	                  R\        P                  ! ^ ^4      ^4       V P	                  R\        P                  ! ^
^(,          ^
4      ^(4       V P	                  R\        P                  ! ^
^(,          R4      ^4       V P	                  R\        P                  ! ^
R,          4      R	4       V P                  \        \        P                  R4       V P                  \        \        P                  ^
R,          ) 4       V P                  \        \        P                  ^
R4       V P                  \        \        P                  \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R
# )r6   zlog(1/e)zlog(1)zlog(e)z	log(32,2)zlog(10**40, 10)zlog(10**40, 10**20)zlog(10**1000)r  gO+@Nr   r  r   r@  )r   r   rQ   logr   r   r   r   r   r   r   rU   r   rg   s   &r   testLogMathTests.testLog  s   )TXX.)TXXq!Q7

:txx$&&126

8TXXa[!,

8TXXdff-q1

;A2

$dhhr2vr&:B?

($((2r66*BAF

?DHHRX$6%	'*dhh5*dhhT	:*dhhC8*dhh5#,

488C=12r   c           	        V P                  \        \        P                  4       ^^^Z,          ^R,          3 FF  pV P	                  \        P                  ! V4      \        P                  ! \        V4      4      4       KH  	  V P                  \        \        P                  R4       V P                  \        P                  ! \        4      \        4       R# )rI   i,  Nr   )	r   r   rQ   log1pr  r;   r   r   r   r  s   & r   	testLog1pMathTests.testLog1p  s    )TZZ0QUAsF#A""4::a=$**U1X2FG $*djj"5C#.r   c                V   V P                  \        \        P                  4       V P	                  \        P                  ! ^4      R4       V P	                  \        P                  ! ^4      R4       V P	                  \        P                  ! ^4      R4       V P	                  \        P                  ! ^R,          4      R4       V P	                  \        P                  ! ^R,          4      R4       V P	                  \        P                  ! ^R,          4      R	4       V P                  \
        \        P                  R4       V P                  \
        \        P                  \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R
# )r6   r   r   r   i  g     @   g      @i  g     @@Nr   )
r   r   rQ   log2r   r   r   r   rU   r   rg   s   &r   testLog2MathTests.testLog2  s   )TYY/ 	1s+1s+1s+ 	1d7+V41d7+V41d7+V4*dii6*dii6

499S>23r   c           	        \        RR4       Uu. uF.  p\        P                  ! \        P                  ! RV4      4      NK0  	  pp\        RR4       Uu. uF  p\	        V4      NK  	  ppV P                  W#4       R# u upi u upi )i2  r)  r   Nrs  )r   rQ   r*  rU  r;   r   )rb   r   r~  r(   s   &   r   testLog2ExactMathTests.testLog2Exact  sm    
 :?ud9KL9KA$))DJJsA./9KL&+E4&89&8E!H&89* M9s   4A<Bc                `   V P                  \        \        P                  4       V P	                  R \        P                  ! R4      R4       V P	                  R\        P                  ! ^4      ^ 4       V P	                  R\        P                  ! ^
4      ^4       V P	                  R\        P                  ! ^
R,          4      R4       V P                  \
        \        P                  R	4       V P                  \
        \        P                  ^
R,          ) 4       V P                  \
        \        P                  \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )
z
log10(0.1)皙?zlog10(1)z	log10(10)zlog10(10**1000)r  g     @@Nr   r   )r   r   rQ   log10r   r   r   r   r!  r   r   rU   r   rg   s   &r   	testLog10MathTests.testLog10  s    )TZZ0

<C"5

:tzz!}a0

;

22

$djjT&:FC*djj$7*djj2t8)<*djj$7#,

4::c?34r   g?c                   ^V,          pV P                  \        P                  ! V4      V4       V P                  \        P                  ! V4      VR,          4       V P                  \        P                  ! V4      VR,          4       R# )r6   g9B.?gyPD?N)r  rQ   r*  r!  r2  )rb   r  r  s   && r   test_log_huge_integerMathTests.test_log_huge_integer  s_    Ityy|T2txx{D3E,EFtzz!}d5G.GHr   c                f   \         P                  p\        P                  p\        P
                  pV P                  V! \        . RO4      R4      ^4       V P                  V! RR.RR.4      R4       V P                  V! . . 4      ^ 4       V P                  V! R.R.4      R4       V P                  V! R.R.4      R4       RRV! ^^4      V! ^^4      3V! R4      V! R4      3RRV! ^^4      3^V! ^^4      3^V! R4      33 F  pWD3WDRRR1,          33 F  w  rVV P                  WVR7      ;_uu_ 4        \        R	 \        WVR
R7       4       4      pV! WV4      pV P                  Wx4       V P                  \        V4      \        V4      4       RRR4       K  	  K  	  V P                  \        V4       V P                  \        V. 4       V P                  \        V. . . 4       V P                  \        VR^
.4       V P                  \        V^
.R4       V P                  \        VR.R.4       V P                  \        V^
^.^.4       V P                  \        V^
.^^.4       V P                  V! R.^.4      R4       V P                  V! ^.R.4      R4       V P                  V! R.R.4      R4       V P                  V! R.R ,          R.R ,          4      R!4       V P                  \        V^
R,          .R.4       V P                  \        VR.^
R,          .4       R p	V P                  \         4      ;_uu_ 4        V! \#        ^
4      V	! ^4      4       RRR4       V P                  \         4      ;_uu_ 4        V! V	! ^4      \#        ^
4      4       RRR4       ^ RIHp
 V P                  V! V
! ^4      ^.4      ^ 4       V P                  V! ^.V
! ^4      4      ^ 4        ! R R4      pV P                  \         4      ;_uu_ 4        V! ^
V! 4       ^.. RO4       RRR4       V P                  \         4      ;_uu_ 4        V! . RO^
V! 4       ^.4       RRR4       V P                  \        4      ;_uu_ 4        V! R^.^^
.4       RRR4       V P                  \        4      ;_uu_ 4        V! ^^
.R^.4       RRR4       V P                  V! R\         P(                  .RR.4      \         P(                  4       V P                  V! R\         P(                  .\         P(                  R.4      \         P(                  4       V P                  V! R\         P(                  .\         P(                  \         P(                  .4      \         P(                  4       V P                  V! R\         P(                  ) .RR.4      \         P(                  ) 4       V P+                  \         P,                  ! V! R\         P(                  .\         P(                  ) \         P(                  .4      4      4       V P+                  \         P,                  ! V! R\         P.                  .RR.4      4      4       V P+                  \         P,                  ! V! R\         P(                  .\         P.                  R.4      4      4       V P+                  \         P,                  ! V! R\         P(                  .R\         P.                  .4      4      4       R"pV P                  V! V!  R4       R#   + '       g   i     EK"  ; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELH; i  + '       g   i     EL#; i  + '       g   i     EL; i  + '       g   i     EL; i)#r  r         @r8  g      @g     0@r   Nr  c              3   6   "   T F  w  rW,          x  K  	  R # 5ir^   rv   )r  p_iq_is   &  r   r  (MathTests.testSumProd.<locals>.<genexpr>'  s     "T=S399=Ss   Tstrictr   r  c              3   B   "   \        V 4       F  pVx  K	  	  \        h5ir^   )r   RuntimeError)r   r#   s   & r   raise_after*MathTests.testSumProd.<locals>.raise_afterA  s     1X s   )BasicIterClassc                   ,   a  ] tR tRt o R tR tRtV tR# )*MathTests.testSumProd.<locals>.BadMultiplyiP  c                    \         hr^   rA  rb   others   &&r   __mul__2MathTests.testSumProd.<locals>.BadMultiply.__mul__Q      ""r   c                    \         hr^   rH  rI  s   &&r   __rmul__3MathTests.testSumProd.<locals>.BadMultiply.__rmul__S  rM  r   rv   N)rk   rl   rm   rn   rK  rO  ro   rp   rq   s   @r   BadMultiplyrF  P  s     ## #r   rQ  r  g333333$@g3333334@gL>@gL4@r   )r        r  r   )r   g      )r9  r  r  r  i r  l     9V ))r  r  r  )r                           )rQ   sumprodr  r  r  r  r   r  r  r  r  r   r   r   r   r  rA  r   test.test_iterrD  r   r   rU   r   )rb   rV  r  r  r  r  r  r(   r~  rB  rD  rQ  r   s   &            r   testSumProdMathTests.testSumProd  s   ,,//%% 	l!3Y?E#sc3Z8$?R!,"t,b1"t,b1 a^Xa^,S\73<((1a.!!Q 	
A !ttW.\\A\++""TSd=S"TTH$Q]F$$X6$$T(^T&\B	 ,+ /	
$ 	)W-)Wb1)Wb"b9)WdRD9)WrdD9)WsecU; 	*gBx">*gtb"X> 	&A3/8!vh/8&F84f=%>G-2t8*seD-3%"d(D	 |,,E"I{1~. -|,,KNE"I. - 	2!2QC8!<!nQ&78!<	# 	#
 |,,R+Y7 -|,,IKM267 - y))UAJB( *y))QGeQZ( * 	$!1D$<@$((K$!1DHHd3CDdhhO$!1DHHdhh3GH$((S$	!2T4LADHH9M

7D$((+;txxi=R#STU

7D$((+;dD\#JKL

7D$((+;dhh=M#NOP

7D$((+;dDHH=M#NOP O$-M ,++> -,,,,, -,,,,, *)))))sU   5A\&	\;]]#	]7^5^&\8;]	] 	#]4	7^	^	^0	zBsumprod() accuracy not guaranteed on machines with double roundingc                f   \         P                  pV P                  V! R .^
,          ^.^
,          4      R4       V P                  V! R .^,          RR.^
,          4      R4       V P                  V! RR.^
,          R .^,          4      R4       V P                  V! . ROR.^,          4      R4       R# )r1  r   TFr   N)r   g\nTr   g\n)rQ   rV  r   )rb   rV  s   & r   test_sumprod_accuracyMathTests.test_sumprod_accuracyo  s    
 ,,#aSV4c:#dE]R-?@#F$!3cURZ@#F!<seAgFLr   cpuc                  a \         P                  p\        P                  p\        P
                  p\        P                  p ! V3R  lR\        4      o ! V3R lR\        4      pR pR pR^
R R!R"R#R$^^P,          RS! ^4      3
R%R&^R	,          ,          ^^R
,          ,          R'^R,          ,          R(RR)R*^^R,          3	RRR+\        R4      \        R4      ) \        R4      ^^	R,V! ^4      R3RR-V! R4      V! R4      V! ^^4      V! R.^4      R/^aR0S! ^4      3
V! R4      V! R4      V! R4      V! ^ 4      V! R4      V! R4      ) V! R4      ^R3	R1^^R
,          ,          ^^R2R3R4R53R6RR7R8RRR^S! ^4      3.	pV F[  p	\        ^4       FI  p
V! WR7       F9  pV! WR7       F)  pW3pV P                  V! V.VO5!  V! V.VO5!  V4       K+  	  K;  	  KK  	  K]  	  R# )9c                   H   <a  ] tR tRt o V3R ltV3R lt]t]tR tRt	V t
R# )*MathTests.test_sumprod_stress.<locals>.Inti  c                F   < S! \        V 4      \        V4      ,           4      # r^   rT   rb   rJ  Ints   &&r   __add__2MathTests.test_sumprod_stress.<locals>.Int.__add__      3t9s5z122r   c                F   < S! \        V 4      \        V4      ,          4      # r^   rb  rc  s   &&r   rK  2MathTests.test_sumprod_stress.<locals>.Int.__mul__  rg  r   c                     R \        V 4       R2# )zInt()rb  rg   s   &r   __repr__3MathTests.test_sumprod_stress.<locals>.Int.__repr__      c$i[**r   rv   Nrk   rl   rm   rn   re  rK  __radd__rO  rl  ro   rp   rr   rd  s   @r   rd  r`    #     33HH+ +r   rd  c                   H   <a  ] tR tRt o V3R ltV3R lt]t]tR tRt	V t
R# )*MathTests.test_sumprod_stress.<locals>.Flti  c                F   < S! \        V 4      \        V4      ,           4      # r^   rb  rc  s   &&r   re  2MathTests.test_sumprod_stress.<locals>.Flt.__add__  rg  r   c                F   < S! \        V 4      \        V4      ,          4      # r^   rb  rc  s   &&r   rK  2MathTests.test_sumprod_stress.<locals>.Flt.__mul__  rg  r   c                     R \        V 4       R2# )zFlt(rk  rb  rg   s   &r   rl  3MathTests.test_sumprod_stress.<locals>.Flt.__repr__  rn  r   rv   Nro  rq  s   @r   Fltrt    rr  r   r{  c                T    ^ p\        WRR7       F  w  r4W#V,          ,          pK  	  V# )zThis defines the target behavior including exceptions and special values.
However, it is subject to rounding errors, so float inputs should be exactly
representable with only a few bits.
Tr>  )r  )r  r  r  r;  r<  s   &&   r   baseline_sumprod7MathTests.test_sumprod_stress.<locals>.baseline_sumprod  s-    
 ET2s" 3Lr   c                     V ! V!  pR\        T4      \	        T4      3#   \         \        3 d    h \         d   p\        T4      RR3u Rp?# Rp?ii ; i)zHMake comparing functions easier. Returns error status, type, and result.NNone)AssertionError	NameError	Exceptionr   repr)funcr   rI  r   s   &*  r   run*MathTests.test_sumprod_stress.<locals>.run  sZ    -t
 ftF|33	 #I.  -Awf,,-s    AAAAAr         @     &@r  r  i  i  g      @r9  r   NaNr   r  z10.5z-2.25z6.125z12.375z-2.75Infg      +@g     `7@TFr  Nr  i  l        l        rU  rT  )	r  g      g      @r  g     y@g      ?      ?r   g            3r   i:,  r  g      8r   y      @      @g      iy      @      ?ig      pl     g      pg      `g      )g      <g         r  g      g      g      )rQ   rV  r  r  r  r  r  r  rT   r;   r   r   )rb   rV  r  r  r  r{  r}  r  poolspoolr  args1args2r   rd  s   &             @r   test_sumprod_stressMathTests.test_sumprod_stressz  s   ,,##//%%	+# 	+	+% 	+		4 VUE5%BSVLM1c6\2ag:r!T'z8UNQ383eElU5\M5<4R#'E76?GG,<hr1o#r"M2sCFDWwx0''2BGAJ'%.'%."dLBq$wJ1iZAE6643q6B
" Da$T7E!(!; %~(( 0848/$/  "< 8 ! r   c           	     `  aaaaa	a
aaaaaaaaaaaa ^ RI o^ RIHo ^ RIHo ^ RIHp ^ RIHoH	oH
o ^ RIHoHoHo ^ RIHp V! RR4      oVVV3R	 loV3R
 loR oVVVVVVVVV3	R lo	VV3R lo
V	V
3R loRp^oRoV! VVV3R l\#        V4       4       4      pV P%                  VR4       R# )r   Nr  )starmap)
namedtuple)r*  r  r  )choicesr  rh  )median
DotExamplec                    < \        SV 4      p\        SV4      p\        S! SP                  \        W#R R7      4      4      # )Tr>  )r  r  mulr  )r   r  vec1vec2r  operatorr  s   &&  r   DotExactDMathTests.test_sumprod_extended_precision_accuracy.<locals>.DotExact  s8    x#Dx#Dwx||SD-IJKKr   c                    < R S! \        \        V 4      \        \        V4      4      ,          \        S! W4      4      ,          # )r   )r  r&   )r   r  r  s   &&r   	ConditionEMathTests.test_sumprod_extended_precision_accuracy.<locals>.Condition  s/    #c1+s3{;;c(1.>QQQr   c                     W,
          V^,
          ,          p\        V4       Uu. uF  q@W4,          ,           NK  	  up# u upi r  )r   )lohir   widthr#   s   &&&  r   linspaceDMathTests.test_sumprod_extended_precision_accuracy.<locals>.linspace  s4    WQ'E,1!H5HqNNH555s   >c                P  <	 V ^,          pR.V ,          pR.V ,          pS! V4      pS! \        \        V^,          4      4      VR7      p\        V^,          4      ^,           V^ &   RVR&   V Uu. uF  pS! RR4      S! V4      ,          NK  	  upVRV% V Uu. uF  pS! RR4      S! V4      ,          NK  	  upVRV% \        \        \        S! V^,          RW,
          4      4      4      p\        W 4       Fg  pS! RR4      S! WhV,
          ,          4      ,          W8&   S! RR4      S! WhV,
          ,          4      ,          S! W44      ,
          W8,          ,          WH&   Ki  	  \        \        W44      4      p	S! V	4       \        V	!  w  r4S! W4S! W44      S
! W44      4      # u upi u upi )aH  Algorithm 6.1 (GenDot) works as follows. The condition number (5.7) of
the dot product xT y is proportional to the degree of cancellation. In
order to achieve a prescribed cancellation, we generate the first half of
the vectors x and y randomly within a large exponent range. This range is
chosen according to the anticipated condition number. The second half of x
and y is then constructed choosing xi randomly with decreasing exponent,
and calculating yi such that some cancellation occurs. Finally, we permute
the vectors x, y randomly and calculate the achieved condition number.
r   )r  r   Nr   r   )r   rT   r  r  roundr  )r   r  n2r   r  r  r   r  r#   pairsr  r  r  r  r  r  r*  rh  r  s   &&        r   GenDotBMathTests.test_sumprod_extended_precision_accuracy.<locals>.GenDot  s{    aB	A	AQA c!A#h2.Aq1u:>AaDAbE<=>AqgdC(4722A>AcrF<=>AqgdC(4722A>AcrF S1cAD 9:;A2\tS)Dr6O;c*T!F)_<x~MQRQUU "
 QOEEN;DAaHQNIaODD ?>s   /FF#c                    < Vw  r#rES! \        V4      V ) .,           \        V4      ^.,           4      pS! Wd,          4      # r  )r  )	resexr   r  target_sumprod	conditionr   r  r  s	   &&     r   RelativeErrorIMathTests.test_sumprod_extended_precision_accuracy.<locals>.RelativeError  s>    .0+A.aSD6)47aS=9A*++r   c                 `   < S! ^
V4      pV ! VP                   VP                  4      pS! WC4      # )r  )r   r  )dotfuncr  r   r  r  r  r  s   &&&  r   TrialAMathTests.test_sumprod_extended_precision_accuracy.<locals>.Trial  s-    AB"$$%C ))r   r  gꌠ9Y>)Fc              3   T   <"   T F  pS! \         P                  SS4      x  K  	  R # 5ir^   )rQ   rV  )r  r#   r  r  r   s   & r   r  EMathTests.test_sumprod_extended_precision_accuracy.<locals>.<genexpr>  s!     NAeDLL!Q77s   %(rr  )r   r  r  r  )r  r  r  r  r  collectionsr  rQ   r*  r  r  rf  r  r  rh  
statisticsr  r   r  )rb   r  r  timesrelative_errr  r  r  r  r  r  r  r  r  r  r  r  r*  r   r  rh  r  r  s   &    @@@@@@@@@@@@@@@@@@r   (test_sumprod_extended_precision_accuracy2MathTests.test_sumprod_extended_precision_accuracy  s     	&%*))44%.WX
	L
	R	6$	E $	EL	,
	*
  NuNNe,r   c                x  a  S P                  \        \        P                  4       V 3R  lpV! R\        P                  ! R4      R4       V! R\        P                  ! R4      R4       S P	                  \        P                  ! \
        4      R\
        34       S P	                  \        P                  ! \        4      R	\        34       \        P                  ! \        4      pS P                  \        P                  ! V^ ,          4      4       S P                  \        P                  ! V^,          4      4       R# )
c                    < Wuw  r4w  rV\        W5,
          4      \        8  g   \        WF,
          4      '       d   SP                  V : R V: RV: 24       R# R# rG  rH  )r   rI  r(   v1v2e1e2rb   s   &&&    r   testmodf$MathTests.testModf.<locals>.testmodf   sF    !'HRhr25zC3ru::		3 4 $.r   z	modf(1.5)r   z
modf(-1.5)r   N)r   r   r   )r   r   r   )
r   r   rQ   modfr   r   r   r   r   rU   )rb   r  modf_nans   f  r   testModfMathTests.testModf  s    )TYY/	4 	diinj9tyy=3#s444,799S>

8A;/0

8A;/0r   c                &   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ ^4      ^ 4       V P	                  R\        P                  ! ^^ 4      ^4       V P	                  R\        P                  ! ^^4      ^4       V P	                  R\        P                  ! ^R4      R4       V P                  \        P                  ! \        ^4      \        4       V P                  \        P                  ! \        ^4      \        4       V P                  \        P                  ! ^\        4      R4       V P                  \        P                  ! ^\        4      R4       V P                  \        P                  ! \        P                  ! \        ^4      4      4       V P                  \        P                  ! \        P                  ! ^\        4      4      4       V P                  \        P                  ! \        P                  ! ^ \        4      4      4       V P                  \        P                  ! ^\        4      ^4       V P                  \        \        P                  RR4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR	4      R4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! \        P                  ! R\        4      4      4       V P                  \        P                  ! \        \        4      \        4       V P                  \        P                  ! \        R4      \        4       V P                  \        P                  ! \        R	4      \        4       V P                  \        P                  ! \        R
4      \        4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        \        4      R4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR	4      R4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! \        P                  ! R\        4      4      4       V P                  \        P                  ! \        \        4      \        4       V P                  \        P                  ! \        R4      \        4       V P                  \        P                  ! \        R	4      \        4       V P                  \        P                  ! \        R
4      \        4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! \        \        4      R4       V P                  \        P                  ! \        P                  ! \        \        4      4      4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! RR4      R4       V P                  \        \        P                  RR	4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        \        P                  RR4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! \        P                  ! R\        4      4      4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR	4      R4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R	R4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        P                  ! R	R4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! \        R4      R4       V P                  \        \        P                  RR	4       V P                  \        \        P                  R R!4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! R"\        4      \        4       V P                  \        P                  ! R#\        4      \        4       V P                  \        P                  ! R$\        4      R4       V P                  \        P                  ! R%\        4      R4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! R\        4      \        4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R\        4      R4       V P                  \        P                  ! R"\        4      R4       V P                  \        P                  ! R#\        4      R4       V P                  \        P                  ! R$\        4      \        4       V P                  \        P                  ! R%\        4      \        4       V P	                  R\        P                  ! RR4      R&4       V P	                  R\        P                  ! RR
4      R4       V P	                  R\        P                  ! RR4      R4       V P	                  R\        P                  ! RR4      R4       V P	                  R\        P                  ! RR4      R4       V P	                  R\        P                  ! RR4      R'4       V P	                  R\        P                  ! RR4      R4       V P	                  R\        P                  ! RR4      R(4       V P                  \        \        P                  RR'4       V P                  \        \        P                  RR4       R# ))zpow(0,1)zpow(1,0)zpow(2,1)z	pow(2,-1)r   r   r  r   r   r   r   gffffff?r  ?r1  z	(-2.)**3.z	(-2.)**2.r   z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.z
(-2.)**-2.r  z
(-2.)**-3.Nr   r          r   rA  r   g      .ggg皙gffffffg       r   g      )r   r   rQ   powr   r   r   r   r   rU   r   r  r   rg   s   &r   testPowMathTests.testPow0  s   )TXX.

:txx!}a0

:txx!}a0

:txx!}a0

;24#q)3/$*D1$((1c*R0$((1d+b1

488C#345

488As#345

488As#345!S)1--66B 	"c*B/"b)2."c*B/"b)2."b)2."c*B/*dhhC8*dhhD9*dhhC8"d+S1

488B#456 	#s+S1#r*C0#s+S1#r*C0#r*B/#s+R0#s+R0#t,b1#s+R0#t,b1

488C#567 	#s+R0#r*C0#s+R0#r*B/#r*B/#s+R0*dhhS9*dhhT:*dhhS9#t,c2

488C#567 	$,c2$+T2$,c2$+S1$+R0$,b1$,b1$-r2$,c2$-r2

488D##678 	#s+R0#r*C0*dhhS9#r*B/#r*B/#s+R0#s+R0*dhhT:#s+S1#t,b1

488C#567 	"c*B/"b)2."c*B/"b)2."b)2."c*B/"c*B/"d+R0"c*B/"d+R0"c*B/ 	#r*B/$+R0#r*B/#s+R0$,b1#s+R0 	*dhhS9*dhhd; 	#t,b1#t,b1#t,c2#t,c2$-s3$-s3$-r2$-r2 	#s+S1#s+S1#s+R0#s+R0$,b1$,b1$,c2$,c2 	

;s 3T:

;s 3S9

;s 3T:

;s 3S9

<$!5s;

<$!5t<

<$!5t<

<$!5v>*dhhd;*dhhc:r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^4      \        P
                  4       V P	                  R\        P                  ! ^Z4      \        P
                  ^,          4       V P	                  R\        P                  ! R4      \        P
                  ) ^,          4       V P	                  R\        P                  ! ^ 4      ^ 4       R# )zradians(180)zradians(90)zradians(-45)z
radians(0)Ni)r   r   rQ   radiansr   r   rg   s   &r   testRadiansMathTests.testRadians  s    )T\\2

>4<<#4dgg>

=$,,r"2DGGAI>

>4<<#4twwhqjA

<a!4r   c                4  a a ^ RI Ho VV 3R lp. RNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NpV F  pS P                  VR37      ;_uu_ 4        VP                  4       w  rEp\        P                  V4      p\        P                  V4      p\        P                  V4      p	V! WxV	4       \        P                  ! Wx4      p
S P                  V
P                  4       V	P                  4       4       R4R4R44       K  	  \        P                  R54      p\        R9^4       Fo  pV^ 8X  d   K  W,          p\        ^d4       FL  pW,          p\        P                  ! Wx4      p
V! WxV
4       \        P                  ! V) V4      p
V! V) W4       KN  	  Kq  	  \        R6R:R7R;\        \        3 FW  pS P                  \        P                  ! \        V4      4       S P                  \        P                  ! V\        4      4       KY  	  R< FY  pS P                  \        P                  ! V\        4      V4       S P                  \        P                  ! V\        4      V4       K[  	  \        R;R:R6R8\        3 EF   pS P                  \         4      ;_uu_ 4        \        P                  ! \        V4       R4R4R44       S P                  \         4      ;_uu_ 4        \        P                  ! \        V4       R4R4R44       S P                  \         4      ;_uu_ 4        \        P                  ! VR64       R4R4R44       S P                  \         4      ;_uu_ 4        \        P                  ! VR:4       R4R4R44       EK  	  R4#   + '       g   i     EKU  ; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     EKg  ; i)=r   r  c                v  < S! V 4      S! V4      S! V4      rTpSP                  \        V4      \        V^,          4      4       W5,
          V,          pSP                  V\        V4      4       \        V4      \        V^,          4      8X  d,   SP                  V^,          \        V^,          4      4       R# R# )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.
N)r  r&   r   rT   )	r   r  rfxfyfrr   r  rb   s	   &&&    r   validate_spec.MathTests.testRemainder.<locals>.validate_spec  s    
 "!hqk8A;BB  R#bd)4BAQA'2w#bd)#  1c!A#h/ $r   z-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)caseNz1p-1074r   r   r   ir   r   )r   r   r   r   )r  r  r  r:   r;   rw  rQ   	remainderr   hexr   r   r   r   assertIsNaNr   r   )rb   r  	testcasesr  x_hexy_hexexpected_hexr   r  r(   r~  tinyr   mr`   r  s   f              @r   testRemainderMathTests.testRemainder  s   &	0 9
9
 9
 	9

 9
 9
 9
 9
 9
 9
 9
 9
 9
 9
 9
  !9
" #9
$ %9
& '9
, 5-9
. N/9
0 N19
2 N39
4 N59
6 N79
8 ?99
: N;9
< N=9
> N?9
@ NA9
B NC9
D ?E9
F NG9
H NI9
J NK9
L NM9
N NO9
P NQ9
V W9
X Y9
Z [9
\ ]9
^ _9
` a9
b c9
d e9
l 3m9
n 3o9
p 3q9
	v D4((-1ZZ\*lMM%(MM%( ==6aH--   x||~> )(  }}Y'sBAAvA3ZH-aF+A.qb!,  	   3c4s;ET^^C78T^^E378 <
 ,ET^^E37?T^^E48%@ , D$S#6E"":..sE* /"":..tU+ /"":..uc* /"":..ud+ /. 7O )((P /........s=   B N7OOO2P7O	OO/2PPc                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! \        P
                  ^,          4      ^4       V P	                  R\        P                  ! \        P
                  ) ^,          4      R4        V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       R#   \         dV    T P                  \        \        P                  \        4       T P                  \        \        P                  \        4        Li ; i)zsin(0)z	sin(pi/2)z
sin(-pi/2)Nr   )r   r   rQ   r  r   r   r   rU   r   r   r   r   rg   s   &r   testSinMathTests.testSinN     )TXX.

8TXXa[!,

; 3Q7

<477(1*!5r:	:OODJJtxx}56OODJJtxx~67 	

488C=12  	:j$((C8j$((D9	:   A:E? ?AGGc                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      ^,          \        P
                  ! ^4      ^,          ,
          R4       V P	                  R\        P                  ! ^4      \        P                  ! R4      ,           ^ 4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zsinh(0)zsinh(1)**2-cosh(1)**2zsinh(1)+sinh(-1)Nr   )r   r   rQ   sinhr   r   r   r   r   r   rU   r   rg   s   &r   testSinhMathTests.testSinh[  s    )TYY/

9diilA.

*DIIaL!ODIIaL!O,KRP

%tyy|DIIbM'A1E3-4$/

499S>23r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R \        P                  ! R4      R4       V P	                  R\        P                  ! R4      R4       V P	                  R\        P                  ! R4      R4       V P	                  R\        P                  ! R	4      R
4       V P	                  R\        P                  ! ^4      ^4       V P	                  R\        P                  ! ^4      ^4       V P                  \        P                  ! \        4      \        4       V P                  \        \        P                  R4       V P                  \        \        P                  \        4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )zsqrt(0)r   z	sqrt(2.5)r9  gS[:XL?z
sqrt(0.25)r  r   zsqrt(25.25)g     @9@g)#L@zsqrt(1)zsqrt(4)Nr   )r   r   rQ   r  r   r   r   r   r   r   rU   r   rg   s   &r   testSqrtMathTests.testSqrtd  s"   )TYY/

9diilA.

9diinc2

;		#0BC

<4#6

=$))E"24EF

9diilA.

9diilA.3-*dii4*dii6

499S>23r   c                   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! \        P
                  ^,          4      ^4       V P	                  R\        P                  ! \        P
                  ) ^,          4      R4        V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       V P                  \        P                  ! \        P                  ! \        4      4      4       R#   \         dV    T P                  \        \        P                  \        4       T P                  \        \        P                  \        4        Li ; i)ztan(0)z	tan(pi/4)z
tan(-pi/4)Nr   )r   r   rQ   tanr   r   r   rU   r   r   r   r   rg   s   &r   testTanMathTests.testTanr  r  r  c                r   V P                  \        \        P                  4       V P	                  R \        P                  ! ^ 4      ^ 4       V P	                  R\        P                  ! ^4      \        P                  ! R4      ,           ^ \        P
                  ! ^4      R7       V P	                  R\        P                  ! \        4      ^4       V P	                  R\        P                  ! \        4      R4       V P                  \        P                  ! \        P                  ! \        4      4      4       R# )ztanh(0)ztanh(1)+tanh(-1)r   z	tanh(inf)z
tanh(-inf)Nr   )r   r   rQ   tanhr   r   r   r   r   rU   r   rg   s   &r   testTanhMathTests.testTanh  s    )TYY/

9diilA.

%tyy|DIIbM'A188A; 	 	(

;		#2

<4"5

499S>23r   c                    V P                  \        P                  ! R4      R4       V P                  \        P                  ! R\        P                  ! R4      4      \        P                  ! RR4      4       R# )r   r   Nr   )r   rQ   r   rR   rg   s   &r   testTanhSignMathTests.testTanhSign  sM     	3-r499S>:r3/	1r   c                   V P                  \        P                  ! ^4      ^4       V P                  \        P                  ! R4      R4       V P                  \        \        P                  ! ^4      4      \        4       V P                  \        \        P                  ! R4      4      \        4       V P                  \        P                  ! R4      ^4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      ^4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      ^ 4       V P                  \        P                  ! R4      R4        ! R R4      p ! R R\
        4      p ! R R4      p ! R	 R
4      pV P                  \        P                  ! V! 4       4      ^4       V P                  \        P                  ! V! 4       4      ^4       V P                  \        \        P                  4       V P                  \        \        P                  ^^4       V P                  \        \        P                  \        R4      4       V P                  \        \        P                  V! 4       4       V P                  \        \        P                  V! 4       4       R# )r6   r   g?c                   &   a  ] tR tRt o R tRtV tR# )'MathTests.test_trunc.<locals>.TestTrunci  c                    ^#    rv   rg   s   &r   	__trunc__1MathTests.test_trunc.<locals>.TestTrunc.__trunc__  r   r   rv   Nrk   rl   rm   rn   r  ro   rp   rq   s   @r   	TestTruncr    r   r   r  c                   &   a  ] tR tRt o R tRtV tR# )(MathTests.test_trunc.<locals>.FloatTrunci  c                    ^# r
  rv   rg   s   &r   r  2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__  r   r   rv   Nr  rq   s   @r   
FloatTruncr    r   r   r  c                       ] tR tRtRtR# ))MathTests.test_trunc.<locals>.TestNoTrunci  rv   Nrw   rv   r   r   TestNoTruncr    r   r   r  c                   $    ] tR tRt]! 4       tRtR# )*MathTests.test_trunc.<locals>.TestBadTrunci  rv   N)rk   rl   rm   rn   r   r  ro   rv   r   r   TestBadTruncr    r7  r   r  g     7@Nr   r   gg!g-?Yi)
r   rQ   truncr   rT   r;   r   r   r\   r   )rb   r  r  r  r  s   &    r   
test_truncMathTests.test_trunc  s   A*B,djjm,c2djjo.4C!,D)2.H-q1I.3I.3H-t4	 		 		 		# 	# 	IK0"5JL126)TZZ0)TZZA6)TZZ4A)TZZ?*djj,.Ar   c                B   V P                  \        P                  ! R 4      4       V P                  \        P                  ! R4      4       V P                  \        P                  ! R4      4       V P                  \        P                  ! R4      4       V P                  \        P                  ! \	        R4      4      4       V P                  \        P                  ! \	        R4      4      4       V P                  \        P                  ! \	        R4      4      4       R# )r   r   r   r   r   Nr   r   )r   rQ   isfiniteassertFalser;   rg   s   &r   testIsfiniteMathTests.testIsfinite  s    c*+d+,c*+d+,uU|45uU|45uV}56r   c                   V P                  \        P                  ! \        R 4      4      4       V P                  \        P                  ! \        R4      4      4       V P                  \        P                  ! \        R4      R,          4      4       V P	                  \        P                  ! \        R4      4      4       V P	                  \        P                  ! R4      4       V P	                  \        P                  ! R4      4       R# )r   z-nanr   r   r   N)r   rQ   rU   r;   r   rg   s   &r   	testIsnanMathTests.testIsnan  s    

5<01

5=12

5<"#456E%L12B(B(r   c                B   V P                  \        P                  ! \        R 4      4      4       V P                  \        P                  ! \        R4      4      4       V P                  \        P                  ! R4      4       V P                  \        P                  ! R4      4       V P	                  \        P                  ! \        R4      4      4       V P	                  \        P                  ! R4      4       V P	                  \        P                  ! R4      4       R# )r   r   g      r   r   r   Ng      )r   rQ   rV   r;   r   rg   s   &r   	testIsinfMathTests.testIsinf  s    

5<01

5=12

5)*

6*+E%L12B(B(r   c                    V P                  \        P                  ! \        P                  4      4       V P	                  \        P
                  ! R \        P                  4      R 4       R# )r   N)r   rQ   rU   r   r   rR   rg   s   &r   test_nan_constantMathTests.test_nan_constant  s:    

488,-r4884b9r   c                R   V P                  \        P                  ! \        P                  4      4       V P	                  \        P                  R 4       V P                  \        P                  \        R4      4       V P                  \        P                  ) \        R4      4       R# )r   r   r   N)r   rQ   rV   r   assertGreaterr   r;   rg   s   &r   test_inf_constantMathTests.test_inf_constant  sa    

488,-488S)5<0$((E&M2r   zrequires verbose modec                z    \         P                  ! R4      pX^ 8w  d   T P                  R4        \         P                  ! R 4      pT P                  R4        \         P                  ! R4      pT P                  R4       R#    T P                  R4        L; i  \         d     LOi ; i  \
         d     R# i ; i)i ʚ;z6underflowing exp() should not have raised an exceptionz)underflowing exp() should have returned 0z.overflowing exp() didn't trigger OverflowErrorz sqrt(-1) didn't raise ValueErrorNi 6er   )rQ   rE   r   r  r  r   rb   r   s   & r   test_exceptionsMathTests.test_exceptions  s    	(%A 6IIAB	H$A IIFG	:		$A II895	( II ' (  		  		s.   B B B+ BB('B(+B:9B:c                8   R 0pRp\         P                  R8X  dF   \        P                  ! 4       ^ ,          p \        \	        \
        VP                  R4      4      4      pRp. p\        \        4       F  w  rgrrpV	R8w  g   VR8w  d   K  VR9   d   K!  Ve   VR8  d	   Wa9   d   K4  \        \        V4      pRV9   g   RV9   d   Rp
M	R	V9   d   R
p
 V! V4      pVR9   d   \        P                  ! W4      p
^Rpp\        WVV4      pVf   K  VP                  WgVV4      pVP!                  V4       K  	  V'       d*   V P#                  RRP%                  V4      ,           4       R# R#   \         d     ELi ; i  \         d    Rp L\         d    R
p Li ; i)tan0064Ndarwin.{}: {}({!r}): {}r   invaliddivide-by-zeror   overflowr  zFailures in test_testfile:
  
  )rectpolar)r  r  )sqrt0002sqrt0003sqrt1001sqrt1023)ru  platformmac_verr  r  rT   r:   r   rO   	test_filegetattrrQ   r  rR   rZ   r'   rx  r   join)rb   SKIP_ON_TIGERosx_versionversion_txtrX   failuresrA   rB   araiereirF   r  rI  r*   r+   rW   msgs   &                  r   test_testfileMathTests.test_testfile  s    #<<8#"**,Q/K#C[->->s-C$DE &-;I-F)BBBESyB#I&&&;+@&4$DE!%5%>!u$$)b EE]]2*  !#WG"2w@G//""g6COOC S .GV II6kk(+, - c  6  &%  )()s/   (E) E;)E87E8;F
FFFc                ,   R p. p\        \        4       F  w  r4rVp\        \        V4      pRV9   g   RV9   d   RpM	RV9   d   Rp V! V4      p	^RrVR8X  d   ^p
M.VR8X  d   R	pM$VR
8X  d   VR8  d   VR8  d   ^
p
MVR8  d   ^dp
MRp
\        WiW4      pVf   K  VP                  W4W\4      pVP                  V4       K  	  V'       d*   V P                  RRP                  V4      ,           4       R# R#   \         d    Rp	 L\
         d    Rp	 Li ; i)r8  r9  r:  r   r;  r  r   r  lgammagV瞯<erfcr         $@r  NzFailures in test_mtestfile:
  r<  )rG   math_testcasesrF  rQ   r   r  rZ   r'   rx  r   rG  )rb   rX   rK  rA   rB   rC   r(   rF   r  r)   r*   r+   rW   rP  s   &             r   test_mtestfileMathTests.test_mtestfile9  s2   %,;N,K(BC54$DE!%5%>'u$*&3i  !#W W} x
  v#* 9 G4Z!G"G"8'CG//"#7COOC q -Lt II7kk(+, - a  #"  &%&s   C55DDDDc                   ^ RI Hp \        P                  pV P	                  V! . 4      ^4       V P	                  V! . ^R7      ^4       V P	                  V! \        \        ^^4      4      4      R4       V P	                  V! \        \        \        ^^4      4      4      4      R4       V P	                  V! \        ^^
4      ^
R7      R4       V P	                  V! . RO4      ^x4       V P	                  V! . RO4      R4       V P	                  V! . RO4      R4       V P	                  V! . RO4      R4       V P	                  V! RV! ^^4      .4      R4        ! R	 R
4      pV P                  \        4      ;_uu_ 4        V! RV! 4       .4       RRR4       V P	                  V! . RO4      R4       V P	                  V! . R O4      \        R4      4       V P                  \        V4       V P                  \        V^*4       V P                  \        V. R!O4       V P                  \        V. R!ORR7       V P                  \        VRR.RR7       \        R4      \        R4      .pV P                  \        W$\        R4      R7       V P                  \        V^.^.^..4       V P                  \        V^^/.4       V P                  \        V^^/.^,          ^^/R7       V P                  \        V^.^.^... R7       V P	                  V! ^^.RR7      R4       V P	                  V! ^^.^^.R7      . R"O4       V P	                  V! . ^^/R7      ^^/4       V P                  \        4      ;_uu_ 4        V! ^
^.^4       RRR4       V P	                  V! . R#O4      ^ 4       V P	                  V! . R$O4      ^ 4       V P	                  V! . R%O4      ^ 4       R&R lp\        ^R4      pV P	                  V! V4      V! V4      4       \        R'R(4      pV P	                  V! V4      V! V4      4       \        R)R4      pV P	                  V! V4      ^ 4       \        ^R4       Uu. uF  p\        V4      NK  	  ppV P	                  V! V4      V! V4      4       \        R)R(4       Uu. uF  p\        V4      NK  	  ppV P	                  V! V4      V! V4      4       \        R)R4       Uu. uF  p\        V4      NK  	  ppV P                  V! V4      4       V P                  V! ^^^\        R4      ^^.4      4       V P                  V! ^^ \        R4      ^^.4      4       V P                  V! ^\        R4      ^ ^.4      4       V P                  V! ^\        R4      \        R4      ^.4      4       V P                  V! ^\        R4      \        R4      ^.4      4       V P                  V! ^\        R4      \        R4      ^.4      4       V P                  V! ^\        R4      \        R4      ^.4      4       V P	                  V! ^^^\        R4      R*^.4      \        R4      4       V P	                  V! ^^^\        R4      R*^.4      \        R4      4       V P                  V! ^^^ \        R4      R*^.4      4       V P                  V! ^^^ \        R4      R*^.4      4       V P                  V! ^^^\        R4      R*^ ^.4      4       V P                  V! ^^^\        R4      R*^ ^.4      4       V P	                  \        V! . R+O4      4      \        4       V P	                  \        V! . R,O4      4      \        4       V P	                  \        V! \        ^R4      4      4      \        4       V P	                  \        V! \        ^R4      RR7      4      \        4       V P	                  \        V! ^\         P"                  ! R4      ^^^^.4      4      \         P"                  4       R#   + '       g   i     EL; i  + '       g   i     EL; iu upi u upi u upi )-r   r  )r   i  i _7 r   r   r  r   c                   &   a  ] tR tRt o R tRtV tR# )(MathTests.test_prod.<locals>.BadMultiplyi  c                    \         hr^   rH  rI  s   &&r   rO  1MathTests.test_prod.<locals>.BadMultiply.__rmul__  rM  r   rv   N)rk   rl   rm   rn   rO  ro   rp   rq   s   @r   rQ  r\    s     # #r   rQ  rV  N    a   cr      babababababababc                 (    V  F  pW,          pK  	  V# r^   rv   )rZ  r   elems   && r   _naive_prod(MathTests.test_prod.<locals>._naive_prod  s      !Lr   i'  r  r   r   r   )r6   rI   r  r  r  )r   r   r   r   r  )r6   rI   r  r   r  )r   r   r   r  r          )r6   r6   ri  r6   r6   )r   r   ri  r6   r6   )r  r  r  )r6   rI   r6   rI   r6   rI   r6   rI   r6   rI   r6   rI   )r   r6   rI   r  )r6   r   rI   r  )r6   rI   r  r   r  ir   ir   )r6   rI   r  r  r  r  )r6   r   r  r  r  r  )r  r  rQ   prodr   r  r   r  r   rA  r;   r   	bytearrayr  r   rT   r  r  )rb   r  rj  rQ  r  rg  rZ  r   s   &       r   	test_prodMathTests.test_prod|  s   +yyb1%b*A.d51:./6d4a
#345t<eArl"5w?o.478%@12E:34e<r1Q7m,c2	# 	# |,,#{}%& - 	12E:56eE)T*)T2.)T?;)T?"E)TD$<sCD/9T?3)T3H)TQC!qc?;)TQqE73)TQqE719QqEB)TQC!qc?"E 	q!fD1>Bq!fQF35YZbA/!A7y))"b1 * 	l+Q/l+Q/l+Q/	 E?hX)>?$hX)>?%h+ ',Atn5nE!Hn5hX)>?&+E2&67&6E!H&67hX)>?&+E4&89&8E!H&89h( 	q!Qea;<=q!U5\1a89:q%,1567q%,eQ?@Aq%-ua@ABq%,eQ?@Aq%,fa@ABq!QeR:;U6]Kq!Qfb;<eElKq1U5\2q9:;q1U6]B:;<q!Qeb!Q?@Aq!Qfr1a@AB 	d#567=d#7895Ad5E?34c:d5E?#>?GdAws';Q1a#HIJ 	*_ -,,2 *)). 679s*   <`*6`>#a%a'a*`;	>a	c                >
   \         P                  p\         P                  p\        R 4       Fq  pV^d8  d   \        V^,           4      MV^8  d   \        ^4      M
\        ^
4       F4  pV P	                  V! W44      V! V4      V! W4,
          4      ,          4       K6  	  Ks  	  \        ^^d4       F_  p\        ^V4       FL  pV P	                  V! W44      V! V^,
          V^,
          4      V,          V! V^,
          V4      ,           4       KN  	  Ka  	  \        ^^d4       FS  pV P	                  V! V^ 4      ^4       V P	                  V! V^4      V4       V P	                  V! W34      V! V4      4       KU  	  \        ^4       F@  pV P	                  V! V4      V! V4      4       V P	                  V! VR4      V! V4      4       KB  	  V P                  \        V^
R4       V P                  \        V^
\        P                  ! R4      4       V P                  \        V^
R4       V P                  \        VR^4       V P                  \        V\        P                  ! R4      ^4       V P                  \        VR^4       V P                  \        V4       V P                  \        V^
^^4       V P                  \        V4       V P                  \        VR	^4       V P                  \        V^R,          ) ^4       V P                  \        V^R	4       V P                  \        V^^R,          ) 4       V P	                  V! ^^4      ^ 4       V P	                  V! ^^R,          4      ^ 4       ^R,          pV P	                  V! V^ 4      ^4       V P	                  V! V^4      V4       V P	                  V! V^4      W3^,
          ,          4       \        P                  ! RR7      '       d   V P                  \        WV4       R
 FB  w  r4V P	                  V! W44      ^4       V P                  \        V! W44      4      \        4       KD  	  V P	                  V! \!        ^4      \!        ^4      4      ^4       V P	                  V! \#        ^4      \#        ^4      4      ^4       \        ^4       Fs  pV P                  \        V! \!        ^4      \!        V4      4      4      \        4       V P                  \        V! \#        ^4      \#        V4      4      4      \        4       Ku  	  R# )r  Nr   1rV  10r  Tcpythonr   )TT)TF)FF)rQ   permr  r   r   r   r   r  r  r   r   check_impl_detailr  r  r   rT   ru   ry   )rb   rt  r  r   r  s   &    r   testPermMathTests.testPerm  s   yyNN	sA&'#geAElC59USUYV  a!*1151A!AC W  q#A1a[  aT!a%Q-?!-Cd1q5RSn-TU ! 
 q#AT!QZ+T!QZ+T!Z16  rAT!Wil3T!T]IaL9  	)T2s3)T2ws/CD)T2s3)T43)T7??4+@!D)T43)T*)T2q!4)T* 	*dB2*dQWHa8*dAr2*dA4x8 	aQ'aD)1-tGaQ'aQ'aQA#Y/$$T22mTa8?DAT!Z+MM$tAz*C0 @ 	k!nk!n=rBk!nk!n=rBqAMM$tKNKNCDcJMM$tKNKNCDcJ r   c                   \         P                  p\         P                  p\        R 4       F~  pV^d8  d   \        V^,           4      MV^8  d   \        ^4      M
\        ^
4       FA  pV P	                  V! W44      V! V4      V! V4      V! W4,
          4      ,          ,          4       KC  	  K  	  \        ^^d4       FX  p\        ^V4       FE  pV P	                  V! W44      V! V^,
          V^,
          4      V! V^,
          V4      ,           4       KG  	  KZ  	  \        ^d4       F4  pV P	                  V! V^ 4      ^4       V P	                  V! W34      ^4       K6  	  \        ^^d4       F;  pV P	                  V! V^4      V4       V P	                  V! W3^,
          4      V4       K=  	  \        ^d4       FA  p\        V^,          4       F(  pV P	                  V! W44      V! W3V,
          4      4       K*  	  KC  	  V P                  \        V^
R4       V P                  \        V^
\        P                  ! R4      4       V P                  \        V^
R4       V P                  \        VR^4       V P                  \        V\        P                  ! R4      ^4       V P                  \        VR^4       V P                  \        V^
4       V P                  \        V^
^^4       V P                  \        V4       V P                  \        VR	^4       V P                  \        V^R,          ) ^4       V P                  \        V^R	4       V P                  \        V^^R,          ) 4       V P	                  V! ^^4      ^ 4       V P	                  V! ^^R,          4      ^ 4       ^R,          pV P	                  V! V^ 4      ^4       V P	                  V! V^4      V4       V P	                  V! V^4      W3^,
          ,          ^,          4       V P	                  V! W34      ^4       V P	                  V! W3^,
          4      V4       V P	                  V! W3^,
          4      W3^,
          ,          ^,          4       \        P                  ! RR7      '       d   V P                  \        WV^,          4       R
 FB  w  r4V P	                  V! W44      ^4       V P                  \        V! W44      4      \        4       KD  	  V P	                  V! \!        ^4      \!        ^4      4      ^
4       V P	                  V! \#        ^4      \#        ^4      4      ^
4       \        ^4       Fs  pV P                  \        V! \!        ^4      \!        V4      4      4      \        4       V P                  \        V! \#        ^4      \#        V4      4      4      \        4       Ku  	  R# )r  r   ro  rV  rp  r  Trq  Nr   rs  )rQ   combr  r   r   r   r   r  r  r   r   ru  r  r  r   rT   ru   ry   )rb   ry  r  r   r  s   &    r   testCombMathTests.testComb"	  sx   yyNN	sA&'#geAElC59USUYV  aYq\!!y'77.9 : W  q#A1a[  aT!a%Q-?$q1ua.-PQ ! 
 sAT!QZ+T!Z+  q#AT!QZ+T!U^Q/ 
 sA16]  aT!U^< #  	)T2s3)T2ws/CD)T2s3)T43)T7??4+@!D)T43)T2.)T2q!4)T* 	*dB2*dQWHa8*dAr2*dA4x8 	aQ'aD)1-tGaQ'aQ'aQA#Y!^4aQ'a1q)a1qaCyA~6$$T22mTad;?DAT!Z+MM$tAz*C0 @ 	k!nk!n=rBk!nk!n=rBqAMM$tKNKNCDcJMM$tKNKNCDcJ r   c           	     *   V P                  \        P                  ! R \        ) 4      R4       V P                  \        P                  ! R \        4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! R\        ) 4      \        P                  R4      4       V P                  \        P                  ! R\        4      \        P                  R4      4       V P                  \        P                  ! R\        ) ^R	7      \        P                  R4      4       V P                  \        P                  ! R\        ^R	7      \        P                  R4      4       V P                  \        P                  ! R\        ) ^R	7      \        P                  R
4      4       V P                  \        P                  ! R\        ^R	7      \        P                  R4      4       \        ^^4       F~  pV P                  \        P                  ! RRVR	7      R4       V P                  \        P                  ! RRVR	7      R4       V P                  \        P                  ! RRVR	7      R4       K  	  \        P                  P                  \        P                  P                  ,          pV P                  \        P                  ! R\        4      V4       V P                  \        P                  ! R\        4      V4       V P                  \        P                  ! R\        ) 4      V) 4       V P                  \        P                  ! R\        ) 4      V) 4       V P                  \        P                  ! VR4      R4       V P                  \        P                  ! V) R4      R4       V P                  \        P                  ! VR4      R4       V P                  \        P                  ! V) R4      R4       \        P                  P                  pV P                  \        P                  ! \        R4      V4       V P                  \        P                  ! \        ) R4      V) 4       V P                  \        P                  ! V\        4      \        4       V P                  \        P                  ! V) \        ) 4      \        ) 4       V P                  \        P                  ! \        R4      4       V P                  \        P                  ! R\        4      4       V P                  \        P                  ! \        \        4      4       V P                  R\        P                  ! R\        ^ R	7      4       V P                  \         4      ;_uu_ 4        \        P                  ! R\        RR	7       RRR4       R#   + '       g   i     R# ; i)g      0Cg/Cg     0Cg      Cr   gCr   z0x1.fffffffffffffp-1z0x1.0000000000001p+0)stepsz0x1.ffffffffffffdp-1z0x1.0000000000003p+0r   Ng      gr   r   )r   rQ   	nextafterr   r;   rw  r   assertEqualSignru  rS  minepsilonrV  r  r   r   r   )rb   r}  smallest_subnormallargest_normals   &   r   test_nextafterMathTests.test_nextafterh	  s#    	(:SDA+	-(:C@+	-(=sC.	0(>D/	1 	cT2'=>	@S1'=>	@cT;'=>	@S:'=>	@cT;'=>	@S:'=>	@ 1a[ET^^CEBCH  d%!H$O  d%!H$O ! !^^//#..2H2HHc24FGc24FGsd36H5HIsd36H5HIT^^,>EtLT^^-?,?FMT^^,>EtLT^^-?,?FM ++S1>Bc2^OD<cB#>E 	S12S12S12dnnS#Q?@z**NN32. +***s   XX	c           	        V P                  \        P                  ! R 4      \        P                  P
                  4       V P                  \        P                  ! R4      R 4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      \        P                  P                  \        P                  P
                  ,          4       V P                  \        P                  ! \        4      \        \        P                  ! \        \        ) 4      ,
          4       V P                  \        P                  ! \        4      \        4       V P                  \        P                  ! \        P                  4      4       RR RR\        3 Fa  pV P                  VR7      ;_uu_ 4        V P                  \        P                  ! V) 4      \        P                  ! V4      4       RRR4       Kc  	  R#   + '       g   i     Kx  ; i)	r   r   g      @r   r  Nl          l          l            )r   rQ   r   ru  rS  r  r  r  r~  r   r  r   r  r1  s   & r   test_ulpMathTests.test_ulp	  sf   #(>(>?'*C0'*C0'*F3 	#++cnn.D.DD	F),"T^^It%DD	F 	#,$((+, sGWc2A""  1"txx{; #" 3"""s   *<H44Ic                P    ! R  R4      p\         P                  \         P                  \         P                  3 FU  pV! 4       pV P	                  \
        4      ;_uu_ 4        V! RV4       RRR4       V P                  \        VRR4      4       KW  	  R#   + '       g   i     L2; i)c                   &   a  ] tR tRt o R tRtV tR# )$MathTests.test_issue39871.<locals>.Fi	  c                &    R V n         ^^ ,           R# )TN	convertedrg   s   &r   rh   .MathTests.test_issue39871.<locals>.F.__float__	  s    !%!r   r  N)rk   rl   rm   rn   rh   ro   rp   rq   s   @r   r  r  	  s      r   r  znot a numberNr  F)rQ   r   rR   r  r   r   r   rF  )rb   r  r  r  s   &   r   test_issue39871MathTests.test_issue39871	  sr    	 	 JJt~~=DA""9--^Q' .
 WQU;< >--s   !
BB%c                   V P                  \        \        P                  R 4       V P                  \        \        P                  R 4       V P                  \        \        P
                  R R4       V P                  \        \        P
                  RR 4       V P                  \        \        P
                  R4       V P                  \        \        P
                  RRR4       R# )rj  r   r   r   N)r   r   rQ   rE   erfr   rg   s   &r   test_input_exceptionsMathTests.test_input_exceptions	  s    )TXXv6)TXXv6)TZZ=)TZZf=)TZZ5)TZZc3?r   c                   R
pV P                  \        RV 24      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P                  ! ^{V4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P                  ! V^{4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P
                  ! V4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P                  ! V4       RRR4       \        P                  ! R4      pV P                  \        RV 24      ;_uu_ 4        \        P                  ! V4       RRR4       \        P                  ! ^^
R,          4      pV P                  \        R\        V4       24      ;_uu_ 4        \        P                  ! V4       RRR4       RpV P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        RV 24      ;_uu_ 4        \        P                  ! V4       RRR4       RpV P                  \        R	V 24      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELz; i  + '       g   i     ELM; i  + '       g   i     EL!; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL`; i  + '       g   i     EL5; i  + '       g   i     EL	; i  + '       g   i     R# ; i)r  z"expected a nonnegative input, got Nzexpected a positive input, got z-1.1i  zexpected a positive input$z/expected a noninteger or positive integer, got r   z(expected a number between -1 and 1, got r  i)assertRaisesRegexr   rQ   r  r!  r*  r2  r  r  r  r  r;   r  r   r1  s   & r   test_exception_messages!MathTests.test_exception_messages	  sL   ##J&H$LN NIIaLN ##J&EaS$IK KHHQKK ##J&EaS$IK KHHS!K ##J&EaS$IK KHHQK ##J&EaS$IK KIIaLK ##J&EaS$IK KJJqMK OOF###J&EaS$IK KHHQKK q"c'*##J&EeAhZ$PR RHHQKR ##J$@B BHHQKB ##J&UVWUX$Y[ [JJqM[ ##J&Nqc$RT TJJqMT TEN N NK K KK K KK K KK K KK K KK K KR R RB B B[ [ [T T Ts   L$L$L-%M&M&M)<M=#N"N%"N9$OL	L*	-L>	M	M&	)M:	=N	N"	%N6	9O
	O	c                    \         P                  ! V4      '       g#   V P                  R P                  V4      4       R# R# )zExpected a NaN, got {!r}.N)rQ   rU   r   r'   ra   s   &&r   r  MathTests.assertIsNaN	  s.    zz%  II188?@ !r   c                    V P                  W4       V P                  \        P                  ! RV4      \        P                  ! RV4      4       R# )zoSimilar to assertEqual(), but compare also the sign with copysign().

Function useful to compare signed zeros.
r   N)r   rQ   rR   )rb   r   r  s   &&&r   r  MathTests.assertEqualSign
  s8    
 	sA.c10EFr   rv   Nr  r   )ARMARM64ri  )^rk   rl   rm   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   unittestskipIfru  rC  machiner   r   r  r  r  r  r  r   cpython_onlyr  r=  rC  rP  HAVE_DOUBLE_ROUNDINGr  r  r  r  r  r  r  
bigmemtestr  r  r  r  r"  r&  r+  requires_mac_verr.  r3  r6  rX  r[  requires_resourcer  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r'  r*  r.  
skipUnlessr   r2  rQ  rX  rl  rv  rz  r  r  r  r  r  r  r  ro   rp   rq   s   @r   r   r      s    6.	45	454	5<:|4 %;N : :B3 __S\\W,WW1A1A1CGW1W[]4]45<	=/@: < <&<P;.8$ __)MOmDO mD^(ETOFb __)NP:1P :1x7B)
3&j d++ ,+*FX<B F F
3$/ 4 4" b!$+ % +
5 c*I +I^.B __)]_M _ M u%H &HT __)]_u%Q- & _ 
Q-f1&H;l5 ~, ~,@34434 1 1B@7)):
3 "9:: ;:> =- =-~ @- @-Dd*L>K@DKL 8/ 8/v < <,= @&TAG Gr   r   c                      a  ] tR tRt o ]P
                  tR tR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tRtV tR# )IsCloseTestsi

  c                d    V P                  V P                  ! W.VO5/ VB V: R V: R2R7       R# ) and z should be close!rP  N)r   r  rb   r  r  r   kwargss   &&&*,r   assertIsCloseIsCloseTests.assertIsClose
  s1    Q;D;F;<=qA 	 	Cr   c                d    V P                  V P                  ! W.VO5/ VB V: R V: R2R7       R# )r  z should not be close!r  N)r   r  r  s   &&&*,r   assertIsNotCloseIsCloseTests.assertIsNotClose
  s3    a<T<V<ABAF 	 	Hr   c                H    V F  w  rEV P                   ! WE.VO5/ VB  K  	  R # r^   )r  rb   examplesr   r  r  r  s   &&*,  r   assertAllCloseIsCloseTests.assertAllClose
  s&    DAq5d5f5 r   c                H    V F  w  rEV P                   ! WE.VO5/ VB  K  	  R # r^   )r  r  s   &&*,  r   assertAllNotCloseIsCloseTests.assertAllNotClose
  s&    DA!!!888 r   c           	     >   V P                  \        4      ;_uu_ 4        V P                  ^^RR7       RRR4       V P                  \        4      ;_uu_ 4        V P                  ^^RRR7       RRR4       R#   + '       g   i     LM; i  + '       g   i     R# ; i)r6   rc  rel_tolNr  r+   g0.+g    _)r   r   r  rg   s   &r   test_negative_tolerances%IsCloseTests.test_negative_tolerances
  sp    z**q!W5 +z**q!VUC +* +****s   A8B8B	B	c                6    . ROpV P                  VRRR7       R# )r   r   r  N))r   r   )N@ir  );r  )i90  g    @r   r   )NF r  r  )rb   identical_exampless   & r   test_identicalIsCloseTests.test_identical$
  s"    0 	.SIr   c                Z    . ROpV P                  VRR7       V P                  VRR7       R# )    חA:0yE>r  &.>N))r  g   חA)g:0yEgnyE)g	ѭ?gfNӭ?r  r  )rb   eight_decimal_places_exampless   & r   test_eight_decimal_places&IsCloseTests.test_eight_decimal_places.
  s5    )C% 	94H<dKr   c                Z    . ROpV P                  VRR7       V P                  VRR7       R# )r  r  r  r  r   N))r  r   )g&.r   )gu?j/ʠr   )r  r  )rb   near_zero_exampless   & r   test_near_zeroIsCloseTests.test_near_zero6
  s4    . 	13?.=r   c                    V P                  \        \        4       V P                  \        \        R R7       V P                  \        \        4       V P                  \        \        R R7       R# )r   r   N)r  r   r   rg   s   &r   test_identical_infinite$IsCloseTests.test_identical_infinite@
  sL    3$3S14&4s3r   c                    \         \         3\         R 3R \         3\        \         3\         \        3\        \        3\        R3R\        3\        R3R\        3.
pV P                  VRR7       R# )rc  r   ri  g?r   N)r   r   r   r  )rb   not_close_exampless   & r   test_inf_ninf_nanIsCloseTests.test_inf_ninf_nanG
  sg    "Cj"Fm%sm"Cj"Cj"Dk"Cj"Cj"El$cl	, 	1;LMr   c                b    . ROpV P                  VRR7       . ROpV P                  VRR7       R# )r   r   r  N))r   r   )333333r  )Ynr  ))r   g     ?)g?r   )gZbtigTbtir  )rb   zero_tolerance_close_examples!zero_tolerance_not_close_exampless   &  r   test_zero_tolerance IsCloseTests.test_zero_toleranceV
  s?    )=% 	93G-N) 	@#Nr   c                0    V P                  RR.RR7       R# )r  r1  r  N)r  r  )r  r  r  rg   s   &r   test_asymmetryIsCloseTests.test_asymmetryb
  s    Wg.<r   c                Z    RR.pV P                  VRR7       V P                  VRR7       R# )r  r  r  N)r   )i[i[r  )rb   integer_exampless   & r   test_integersIsCloseTests.test_integersf
  s:    224 	,d;/>r   c                    ^ RI Hp V! R4      V! R4      3V! R4      V! R4      3V! R4      V! R4      3V! R4      V! R	4      3.pV P                  VR
R7       V P                  VRR7       R# )r   r  z
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z1.00000001e20z1.0e20r  r  r  N)r  r  r  r  )rb   r  decimal_exampless   &  r   test_decimalsIsCloseTests.test_decimalsn
  s    #$\2GENC$%56	8JK$%679LM$_5wx7HIK 	,d;/>r   c                    ^ RI Hp V! ^R4      ^,           V! ^4      3V! R4      V! R4      3V! RR4      V! ^R	4      3.pV P                  VRR7       V P                  VRR7       R# )
r   r  r  r  r  r  r  Nl       	(qe	 r  )r  r  r  r  )rb   r  fraction_exampless   &  r   test_fractionsIsCloseTests.test_fractionsy
  sz    & a#a'!5i (9"56i((1f*=>@ 	-t<0$?r   rv   N)rk   rl   rm   rn   rQ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ro   rp   rq   s   @r   r  r  

  sg     llGCH69DJL>4N
O=?	?	@ 	@r   r  c                   P  a  ] tR tRt o RtR tR t]P                  ! ]	P                  P                  R4      ;'       gE    ]	P                  R8H  ;'       d    ]
P                  ! 4       R8H  ;'       g    ]P                  ! 4       R4      R 4       tR	 tR
 tR tR tR tR tRtV tR# )FMATestsi
  zTests for math.fma. c                `   \         P                  ) RRR	R
RRRR \         P                  \         P                  .p\        P                  ! V^R7       F  w  r#V P                  W#R7      ;_uu_ 4        V P                  \         P                  ! \         P                  W#4      4       V P                  \         P                  ! V\         P                  V4      4       V P                  \         P                  ! W#\         P                  4      4       RRR4       K  	  R#   + '       g   i     K  ; i)u <7~r   Ynr   r  )r  r  Nu <7r   r  r   )rQ   r   r   r  r  r  r  fma)rb   r  r  r  s   &   r   test_fma_nan_resultsFMATests.test_fma_nan_results
  s     XXIvtWdeTXXtxx
 %%fQ7DA''  $((A!9:  !TXXq!9:  !!9: (' 8'''s   0BDD-c                   R RR\         P                  .p. R
Op\         P                  ) RR	RR\         P                  .pV F  p\         P                  \         P                  ) 3 F  pR F  pV P                  WEVR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        \         P
                  ! WVV4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! WeV4       RRR4       RRR4       K  	  K  	  K  	  V EF  pV P                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        \         P
                  ! \         P                  V\         P                  ) 4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! \         P                  V) \         P                  4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! \         P                  ) V) \         P                  ) 4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! \         P                  ) V\         P                  4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! V\         P                  \         P                  ) 4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! V) \         P                  \         P                  4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! V) \         P                  ) \         P                  ) 4       RRR4       V P                  \        4      ;_uu_ 4        \         P
                  ! V\         P                  ) \         P                  4       RRR4       RRR4       EK  	  V EF  pV P                  VR7      ;_uu_ 4        V P                  \         P
                  ! \         P                  V\         P                  4      \         P                  4       V P                  \         P
                  ! \         P                  V) \         P                  ) 4      \         P                  ) 4       V P                  \         P
                  ! \         P                  ) V) \         P                  4      \         P                  4       V P                  \         P
                  ! \         P                  ) V\         P                  ) 4      \         P                  ) 4       V P                  \         P
                  ! V\         P                  \         P                  4      \         P                  4       V P                  \         P
                  ! V) \         P                  \         P                  ) 4      \         P                  ) 4       V P                  \         P
                  ! V) \         P                  ) \         P                  4      \         P                  4       V P                  \         P
                  ! V\         P                  ) \         P                  ) 4      \         P                  ) 4       RRR4       EK  	  \        P                  ! W"4       F  w  rV P                  VR7      ;_uu_ 4        V P                  \         P
                  ! W\         P                  4      \         P                  4       V P                  \         P
                  ! W\         P                  ) 4      \         P                  ) 4       RRR4       K  	  \        P                  ! W4       EFS  w  rtV P                  WtR7      ;_uu_ 4        V P                  \         P
                  ! \         P                  Wt4      \         P                  4       V P                  \         P
                  ! \         P                  ) Wt4      \         P                  ) 4       V P                  \         P
                  ! \         P                  ) V) V4      \         P                  4       V P                  \         P
                  ! \         P                  V) V4      \         P                  ) 4       V P                  \         P
                  ! V\         P                  V4      \         P                  4       V P                  \         P
                  ! V\         P                  ) V4      \         P                  ) 4       V P                  \         P
                  ! V) \         P                  ) V4      \         P                  4       V P                  \         P
                  ! V) \         P                  V4      \         P                  ) 4       RRR4       EKV  	  R#   + '       g   i     E	Lt; i  + '       g   i     E	LK; i  + '       g   i     E	K  ; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELT; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL6; i  + '       g   i     EL; i  + '       g   i     E	K  ; i  + '       g   i     EK
  ; i  + '       g   i     EK=  ; i  + '       g   i     EK  ; i)r  r   r  r   )r  infinityzeroNr  )r  r  r   r   )r  r   r  r   r   r  r   r  r  )	rQ   r   r  r   r   r  r   r  r  )	rb   	positivesfinitesnon_nansr  r  r  r  r  s	   &        r   test_fma_infinitiesFMATests.test_fma_infinities
  s   S%2	HXXItT3TXX> A!XXy1'D4HH!..z:: HHXQ7 ;!..z:: HHTQ7 ; IH ( 2  A""&&z22HHTXXq488)4 3&&z22HHTXXr4884 3&&z22HHdhhYTXXI6 3&&z22HHdhhY4884 3&&z22HHQ488)4 3&&z22HHaR4884 3&&z22HHaR$((TXXI6 3&&z22HHQ	4884 3 #" ( A""  $((Atxx!@$((K  $((QB	!BTXXIN  488)aR!BDHHM  488)Q	!BTXXIN  !TXXtxx!@$((K  1"dhh	!BTXXIN  1"txxi!BDHHM  !dhhY	!BTXXIN #"  %%g7DA""  !!9488D  !	!:TXXIF #" 8 %%i9DA''  $((A!9488D  488)Q!:TXXIF  488)aR!;TXXF  $((QB!:TXXIF  !TXXq!9488D  !dhhY!:TXXIF  1"txxi!;TXXF  1"dhh!:TXXIF (' :Y ;::::: IHH 322222222222222222222222 #""( #"" #"" (''s/  i%h(=%i"h<:i6l6i%
%l/6i9%%l
8j%l'6j!%l6j58%l6k	%l88k0%l6k1l J!l#B	l/.H+m(h93	i<i	ii"%i60	l9j
	lj	l!j2,	l5k 	l	k	lk.(	l1l<	lll,/mmandroidx86_64z5this platform doesn't implement IEE 754-2008 properlyc           
     V   . R	OpV EF  pV P                  VR7      ;_uu_ 4        V P                  \        P                  ! R VR 4      4       V P                  \        P                  ! R VR
4      4       V P	                  \        P                  ! R V) R
4      4       V P                  \        P                  ! R V) R 4      4       V P                  \        P                  ! R
V) R 4      4       V P                  \        P                  ! R
V) R
4      4       V P	                  \        P                  ! R
VR
4      4       V P                  \        P                  ! R
VR 4      4       V P                  \        P                  ! VR R 4      4       V P                  \        P                  ! VR R
4      4       V P	                  \        P                  ! V) R R
4      4       V P                  \        P                  ! V) R R 4      4       V P                  \        P                  ! V) R
R 4      4       V P                  \        P                  ! V) R
R
4      4       V P	                  \        P                  ! VR
R
4      4       V P                  \        P                  ! VR
R 4      4       RRR4       EK  	  V P                  \        P                  ! RRR4      4       V P                  \        P                  ! RRR4      4       V P                  \        P                  ! RRR4      4       V P                  \        P                  ! RRR4      4       RpV P                  \        P                  ! W3R 4      4       V P	                  \        P                  ! W3) R 4      4       V P                  \        P                  ! V) V) R 4      4       V P	                  \        P                  ! V) VR 4      4       V P                  \        P                  ! W3R
4      4       V P	                  \        P                  ! W3) R
4      4       V P                  \        P                  ! V) V) R
4      4       V P	                  \        P                  ! V) VR
4      4       \
        P                  R4      p\
        P                  R4      p\
        P                  R4      pV P	                  \        P                  ! WE,
          WE,           V) 4      4       V P                  \        P                  ! WT,
          WE,           V4      4       V P	                  \        P                  ! WT,
          WE,           ) V) 4      4       V P                  \        P                  ! WE,
          WE,           ) V4      4       R#   + '       g   i     EK  ; i)r   r  r  Nr   r   z0x1p-500z0x1p-550z	0x1p-1000)r   r  r   r  r   r   r  )r  assertIsPositiveZerorQ   r  assertIsNegativeZeror;   rw  )rb   nonnegative_finitesr  r  r   r  r  s   &      r   test_fma_zero_resultFMATests.test_fma_zero_result
  s    8 %A""))$((33*?@))$((34*@A))$((3D*AB))$((3C*@A))$((4!S*AB))$((4!T*BC))$((4D*AB))$((4C*@A))$((1c3*?@))$((1c4*@A))$((A2sD*AB))$((A2sC*@A))$((A2tS*AB))$((A2tT*BC))$((1dD*AB))$((1dC*@A# #" %* 	!!$((3T":;!!$((3c":;!!$((4t"<=!!$((4c":; !!$((4s";<!!$((4"<=!!$((D54%"=>!!$((D5$"<=!!$((4t"<=!!$((4"=>!!$((D54%">?!!$((D5$"=> MM*%MM*%MM+&!!$((13aR"89!!$((13Q"78!!$((13!#";<!!$((13!#":;Y #""s   I9VV(c                ^   \         P                  R 4      ;r\         P                  R4      pV P                  \        4      ;_uu_ 4        \        P
                  ! WR4       RRR4       V P                  \        P
                  ! WR,          R4      V4       V P                  \        4      ;_uu_ 4        \        P
                  ! WR,          V4       RRR4       V P                  \        P
                  ! WV) 4      V4       \         P                  R4      p\         P                  R4      p\         P                  R4      pV P                  \        4      ;_uu_ 4        \        P
                  ! WR4       RRR4       V P                  \        4      ;_uu_ 4        \        P
                  ! WV4       RRR4       V P                  \        P
                  ! WV) 4      \         P                  R4      4       \         P                  R	4      p\         P                  R
4      p\         P                  R4      pV P                  \        P
                  ! WV) 4      V4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i)0x1p5120x1p1023r   Nr   z0x1.ffffffc000000p+511z0x1.0000002000000p+512z0x0.0000000000001p-1022z0x1.fffffffffffffp+1023z0x1.ae565943785f9p+512z0x1.3094665de9db8p+512)r;   rw  r   r  rQ   r  r   )rb   r  r  r  s   &   r   test_fma_overflowFMATests.test_fma_overflow  s   i((MM*%}--HHQ3 .!sUC0!4}--HHQ#q! . 	!+Q/
 MM23MM23MM34}--HHQ3 .}--HHQ1 .!+'@A	C
 MM23MM23MM34!+Q/7 .-- .-- .----s0   	I 4I4JJ I1	4J	J	J,	c                    \         P                  R 4      pV P                  \        P                  ! VR,
          VR,           R4      W,          4       R# )z0x1p-50r   N)r;   rw  r   rQ   r  )rb   r  s   & r   test_fma_single_roundFMATests.test_fma_single_round7  s7    MM)$!c'1s7C8!#>r   c           
        . ROpV F  w  r#rEV P                  W#VVR7      ;_uu_ 4        \        P                  V4      p\        P                  V4      p\        P                  V4      p\        P                  V4      p	V P                  \        P
                  ! WgV4      V	4       V P                  \        P
                  ! WvV4      V	4       RRR4       K  	  R#   + '       g   i     K  ; i)0x1.694adde428b44p-1)a_hexb_hexc_hexr  N))r  z0x1.371b0d64caed7p-1z0x1.f347e7b8deab8p-4z0x1.19f10da56c8adp-1)z0x1.605401ccc6ad6p-2z0x1.ce3a40bf56640p-2z0x1.96e3bf7bf2e20p-2z0x1.1af6d8aa83101p-1)z0x1.e5abd653a67d4p-2z0x1.a2e400209b3e6p-1z0x1.a90051422ce13p-1z0x1.37d68cc8c0fbbp+0)z0x1.f94e8efd54700p-2z0x1.123065c812cebp-1z0x1.458f86fb6ccd0p-1z0x1.ccdcee26a3ff3p-1)z0x1.bd926f1eedc96p-1z0x1.eee9ca68c5740p-1z0x1.960c703eb3298p-2z0x1.3cdcfb4fdb007p+0)z0x1.27348350fbccdp-1z0x1.3b073914a53f1p-1z0x1.e300da5c2b4cbp-1z0x1.4c51e9a3c4e29p+0)z0x1.2774f00b3497bp-1z0x1.7038ec336bff0p-2z0x1.2f6f2ccc3576bp-1z0x1.99ad9f9c2688bp-1)z0x1.51d5a99300e5cp-1z0x1.5cd74abd445a1p-1z0x1.8880ab0bbe530p-1z0x1.3756f96b91129p+0)z0x1.73cb965b821b8p-2z0x1.218fd3d8d5371p-1z0x1.d1ea966a1f758p-2z0x1.5217b8fd90119p-1)z0x1.4aa98e890b046p-1z0x1.954d85dff1041p-1z0x1.122b59317ebdfp-1z0x1.0bf644b340cc5p+0)z0x1.e28f29e44750fp-1z0x1.4bcc4fdcd18fep-1z0x1.fd47f81298259p-1z0x1.9b000afbc9995p+0)z0x1.d2e850717fe78p-3z0x1.1dd7531c303afp-1z0x1.e0869746a2fc2p-2z0x1.316df6eb26439p-1)z0x1.cf89c75ee6fbap-2z0x1.b23decdc66825p-1z0x1.3d1fe76ac6168p-1z0x1.00d8ea4c12abbp+0)z0x1.3265ae6f05572p-2z0x1.16d7ec285f7a2p-1z0x1.0b8405b3827fbp-1z0x1.5ef33c118a001p-1)z0x1.c4d1bf55ec1a5p-1z0x1.bc59618459e12p-2z0x1.ce5b73dc1773dp-1z0x1.496cf6164f99bp+0)z0x1.d350026ac3946p-1z0x1.9a234e149a68cp-2z0x1.f5467b1911fd6p-2z0x1.b5cee3225caa5p-1)r  r;   rw  r   rQ   r  )
rb   r{  r  r  r  r  r  r  r  r(   s
   &         r   test_randomFMATests.test_random;  s    
!
D 2=-E%Ee+7  9 9MM%(MM%(MM%( ==6  !!2H=  !!2H=9 9 2=9 9 9s   B#CC+c                r    V P                  \        P                  ! V4      R P                  V4      R7       R# )zExpected a NaN, got {!r}r  N)r   rQ   rU   r'   ra   s   &&r   r  FMATests.assertIsNaNm  s-    JJu*11%8 	 	
r   c                    T P                  V^ 8H  ;'       d    \        P                  ! ^V4      ^ 8  RP                  V4      R7       R# )r   z"Expected a positive zero, got {!r}r  Nr   rQ   rR   r'   ra   s   &&r   r  FMATests.assertIsPositiveZeros  @    QJ664==E2Q64;;EB 	 	
r   c                    T P                  V^ 8H  ;'       d    \        P                  ! ^V4      ^ 8  RP                  V4      R7       R# )r   z"Expected a negative zero, got {!r}r  Nr$  ra   s   &&r   r  FMATests.assertIsNegativeZeroy  r&  r   rv   N)freebsdwasinetbsd
emscripten)rk   rl   rm   rn   __doc__r  r  r  r  ru  rC  rJ   r  r   linked_to_muslr  r  r  r  r  r  r  ro   rp   rq   s   @r   r  r  
  s     ;AGJ __ KL 	$ 	$LLI%HH(*:*:*<*H	$ 	$!!#
?	B1<B1<f0B?/>d


 
r   r  c                 |    ^ RI Hp VP                  V! \        P                  P                  RR4      4      4       V# )r   )DocFileSuiter   zieee754.txt)doctestr0  addTestospathrG  )loadertestspatternr0  s   &&& r   
load_testsr8    s*    $	MM,rww||JFGHLr   g7yACr  );test.supportr   r   testr   r  r  r  r  rQ   r3  rC  rf  r   ru  r   r;   r   r   r   rS  rV  r  r  r  r   r  r  rk   argvfile__file__r4  dirnamecurdirtest_dirrG  rW  rE  r   r   r   r$   r/   rG   rO   rZ   r\   rT   ru   r  ry   r   TestCaser   r  r  r8  mainrv   r   r   <module>rC     s   4       	    
 ElElV}NN	NN	 V1A)  z88A;DD77??4 --BIIh
4HIGGLL:/DE	L5H	,B$:40.` 	# 	&  R$G!! R$GjHx@8$$ x@vx
x   x
v
 zMMO r   