
    0hh                       S SK r S SKJr  S SKrS SKrS SKrS SKr\R                  R                  r	S\	-  r
\
S-
  rSrSrS SS\
\
S-	  SS/rS	r\" S\	-  5       H  r\R%                  \S-
  5        \S-  rM     C\\ V s/ s H  o ) PM     sn \ V s/ s H  o * PM     sn -   -  r\R&                  R(                  r\R&                  R,                  r\R&                  R0                  r\R&                  R4                  rS\-  S\\-
  S-
  -  -
  rS
 rS r " S S\ R>                  5      r \!S:X  a  \ RD                  " 5         ggs  sn f s  sn f )    N)support      F      l   UU*UU* l   *UU*UU
    c                    [         R                  R                  S-   n[         R                  R                  U-
  nSU-  n/ SQnU S:X  a  gU S:  a  [	        U * 5      * $ U R                  5       U-
  nUS:  a  X* -  OX-	  [        U SU-  ) -  5      -  nXdUS-     -  nXVU:H  -   U:  a  [        S5      e[        R                  " [        U5      U5      $ )	z1
Correctly-rounded integer-to-float conversion.

r   r   )r   r   r   r
   r   r   r           r
      z%integer too large to convert to float)sys
float_infomant_digmax_expint_to_float
bit_lengthboolOverflowErrormathldexpfloat)n	PRECISION	SHIFT_MAXQ_MAXROUND_HALF_TO_EVEN_CORRECTIONshiftqs          7/opt/python-3.13.8/usr/lib/python3.13/test/test_long.pyr   r   '   s     ''!+I&&2INE$?! 	Av	
QaR    LLNY&EqyVqzT!en:L5M&MA q1u	--A U
i'CDD ::eAh&&    c                 ,   X-  S:  n[        U 5      [        U5      pU(       d  [        S5      eU [        U-  :  a  [        S5      eU R	                  5       UR	                  5       -
  nUS:  a  U SU-  U-  :  d  US:  a  U SU* -  -  U:  a  US-  n[        U[        5      [        -
  nU [        U* S5      -  U[        US5      -  p[        X5      u  pVSU-  U:  d  SU-  U:X  a  US-  S:X  a  US-  n[        R                  " XT5      nU(       a  U* $ U$ )z-Correctly-rounded true division for integers.r   zdivision by zeroz)int/int too large to represent as a floatr   r   )absZeroDivisionErrorDBL_MIN_OVERFLOWr   r   maxDBL_MIN_EXPDBL_MANT_DIGdivmodr   r   )abnegativedexpr   rresults           r    truedivr1   U   s   sQwHq63q6q  233q  GHH 	
'AAv!q!tax-1q5QQBY!^	Q a

,CSD!a3sA;.q!<DA 	sQw!A#(q1uz	QZZFF7*F*r!   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS r\R(                  S 5       rS rS rS rS rS rS rS rS rSAS jr\R(                  S 5       rS r S r!\RD                  S 5       r#\RD                  \RH                  " \%RL                  S-   S S!S"9S# 5       5       r'S$ r(\RD                  \RH                  " \%RL                  S%-   S&S!S"9S' 5       5       r)S( r*S) r+S* r,S+ r-S, r.S- r/\RD                  S. 5       r0\RD                  S/ 5       r1\RD                  S0 5       r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8\RD                  S7 5       r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S?rAg@)BLongTests   c                 N   U R                  US5        U[        -  nU[        -
  S-   nSnSn[        [        R                  " 5       [        S-  -  5      S-  nXS:  a  US-	  S-   n[	        XrU-
  5      nU R                  SUs=:*  =(       a	    [        :*  Os  5        XW-   nXG-  nUS-  (       a  USU-  S-
  -  n[        [        R                  " 5       [        S-  -  5      nXS:  a  M  U R                  X5s=:*  =(       a    U:*  Os  5        [        R                  " 5       S:  a  U* nU$ )Nr   r   r         ?)assertGreaterSHIFTintrandommin
assertTrue)selfndigitsnbits_hinbits_loanswernbitsr/   bitss           r    getranLongTest.getran{   s   7A&U?e#a'519-.2Fa<Dt-.DOOA.../LE^F1uAI?3FMMOuqy12A  	55X56==?S WFr!   c                     Sn[        U 5       H(  nU[        -  [        R                  " S[        5      -  nM*     [        R                  " 5       S:  a  U* nU$ )Nr   r6   )ranger8   r:   randintMASK)r>   rA   is      r    getran2LongTest.getran2   sH    wAo4)@@F  ==?S WFr!   c                    U R                   nU R                  XS9   [        X5      u  pEX-  X-  pvX-  X!-  pU" XS5        U" XFS5        U" XWS5        U" XU-  U-   S5        US:  a&  U R                  SUs=:*  =(       a    U:  Os  S5        O$U R                  X%s=:  =(       a    S:*  Os  S5        S S S 5        g ! , (       d  f       g = f)Nxyzmultiplication does not commutez(divmod returns different quotient than /z#divmod returns different mod than %zx != q*y + r after divmodr   zbad mod from divmod)assertEqualsubTestr)   r<   )
r=   rO   rP   eqr   r/   q2r2pabpbas
             r    check_divisionLongTest.check_division   s    \\A\#!<DAT13sACs:;q@Aq;<qA#'671uQ


,AB


,AB $##s   BB;;
C	c                    [        [        S[        S-   5      5      [        [        [        [        S-   5      5      -   nUR	                  [        S-  5        U HH  nU R                  U5      nU H.  nU R                  U5      =(       d    SnU R                  X55        M0     MJ     U R                  SS5        U R                  SS5        U R                  SS	5        U R                  S
S5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )Nr         l   !Us/w3al   ZW3al   +Q@{dB]OlNl   OOlNl   teo%gqCgx<l   &ghrsGl   Q5K4+o-bkl   C4+o-bkl   .#wflD&I-Xl   ZnSu9bl   cv<Il   rdFBu'pl   PhbIi|$l   1m{Wqi8l   s~5^Fiy+l   'H
<{Cl   `<{Cl   ED_5(Nl   oybal   =2zz6 l   9tm)listrG   	MAXDIGITSKARATSUBA_CUTOFFappendrD   rX   )r=   digitslenxrO   lenyrP   s         r    test_divisionLongTest.test_division   sp   eAy{+,tE:J6F6K5M 0N N&*+DD!AKK%*##A)   	8/	1@)	+@)	+A3	5 	@2	4@3	5 	NI6/;.	:.?.?,n=r!   c                    [        [        SS5      5      [        [        [        [        S-   5      5      -   nUR                  [        S-  [        S-  /5        U Vs/ s H  o"[        -  PM     nnU Hf  nSU-  S-
  nU HU  nXd:  a  M
  U R                  XFS9   SU-  S-
  nXW-  nSXF-   -  SU-  -
  SU-  -
  S-   n	U R                  X5        S S S 5        MW     Mh     g s  snf ! , (       d  f       Mr  = f)Nr      
   d   )abitsbbits)r]   rG   r_   extendr8   rR   rQ   )
r=   ra   digitrC   rj   r*   rk   r+   rO   rP   s
             r    test_karatsubaLongTest.test_karatsuba   s	   eAqk"T%0@0@20E+G &H H'",.>.DEF+126%62 Eeq A=\\\;eq(AA.u*&u*& A $$Q* <;  	 3 <;s   C4C""
C1c                    U R                   nU R                  US9   U" US-  S5        U" US-  U5        U" US-  U5        U" US-  U5        U" US-  S5        U" US-  U) 5        U" X) ) 5        U" X-  U5        U" X-  U5        U" X-  S5        U" X) -  S5        U" X) -  S5        U" X) -  S5        U" U* SU) -   5        U" U* US-
  ) 5        S S S 5        [        S[        -  5       Hl  nSU-  nU R                  XUS9   U" X-  U-	  U5        U" X-  X-	  5        U" X-  X-  5        U" X* -  X-	  U-  5        U" X* -  XS-
  ) -  5        S S S 5        Mn     g ! , (       d  f       N= f! , (       d  f       M  = f)NrO   r   r
   r   r   )rO   r   p2)rQ   rR   rG   r8   )r=   rO   rS   r   rr   s        r    check_bitop_identities_1!LongTest.check_bitop_identities_1   s   \\A\q1uaLq1uaLq1uaLq2vqMq2vrNq2vrNq2#JquaLquaLquaLq2vqMq2vrNq2vrNr1r6NrQqS6N   qwAaB2.16Q;"17AF#1616"1s7AFaK(1s7Aq&	M* /.  ! $ /.s   B5EAE-
E*-
E<	c                    U R                   nU R                  XS9   U" X-  X!-  5        U" X-  X!-  5        U" X-  X!-  5        U" X-  U-  U5        U" X-  U) U) -  ) 5        U" X-  U) U) -  ) 5        U" X-  X-  X-  ) -  5        U" X-  X) -  U) U-  -  5        U" X-  X-  U) U) -  -  5        S S S 5        g ! , (       d  f       g = f)NrN   rQ   rR   )r=   rO   rP   rS   s       r    check_bitop_identities_2!LongTest.check_bitop_identities_2  s    \\A\#quaequaequaequqy!quaRj!quaRj!ququ!%()quq2v1"q&)*ququ!qb)* $##s   BB::
Cc                 6   U R                   nU R                  XUS9   U" X-  U-  XU-  -  5        U" X-  U-  XU-  -  5        U" X-  U-  XU-  -  5        U" XU-  -  X-  X-  -  5        U" XU-  -  X-  X-  -  5        S S S 5        g ! , (       d  f       g = f)N)rO   rP   zrv   )r=   rO   rP   rz   rS   s        r    check_bitop_identities_3!LongTest.check_bitop_identities_3  s    \\Aa\({AQK({AQK({AQK(qE{QUqu-.qE{QUqu-. )((s   A$B


Bc           
      ^   [          H  nU R                  U5        M     [        S[        S-   5      nU Hv  nU R	                  U5      nU R                  U5        U HK  nU R	                  U5      nU R                  X5        U R                  XU R	                  X4-   S-  5      5        MM     Mx     g )Nr   r   )specialrs   rG   r^   rD   rw   r{   )r=   rO   ra   rb   rc   rP   s         r    test_bitop_identitiesLongTest.test_bitop_identities  s    A))!, q)A+&DD!A))!,KK%--a3--aDKKq@P4QR  r!   c                    / nSnUS:  a  SU* pU(       a0  [        X5      u  pUR                  [        U5      5        U(       a  M0  UR                  5         U=(       d    S/nSS U SSSSS.U   -   SR	                  S	 U 5       5      -   $ )
Nr   r   -0b0o 0x)r      rh      c              3   ,   #    U  H
  nS U   v   M     g7f)0123456789abcdefN ).0rJ   s     r    	<genexpr>'LongTest.slow_format.<locals>.<genexpr>1  s     =f)!,fs   )r)   r`   r9   reversejoin)r=   rO   basera   signr/   s         r    slow_formatLongTest.slow_format%  s    q5!!!?DAMM#a&! a 	A35DzDbd3D9:ww=f==> 	>r!   c                    S[         4S[        4S[        4S[        4S[        44 H  u  p#U" U5      nU R                  XR                  S9   U R                  X5      nU R                  XE5        S S S 5        U R                  US9   U R                  [        US5      U5        S S S 5        M     g ! , (       d  f       NG= f! , (       d  f       M  = f)Nr   r   rh   r   )rO   mapper)gotr   )
binoctstrreprhexrR   __name__r   rQ   r9   )r=   rO   r   r   r   expecteds         r    check_format_1LongTest.check_format_13  s    Hq#hS	B:CyPLD)C//:++A4  / ; #&  S!a0 '& Q:: '&s   #B0C0
B>	
C	c                     [          H  nU R                  U5        M     [        S5       H?  n[        S[        S-   5       H%  nU R	                  U5      nU R                  U5        M'     MA     g )Nrh   r   )r~   r   rG   r^   rD   )r=   rO   rJ   rb   s       r    test_formatLongTest.test_format<  sY    A" rAa1-KK%##A& . r!   c                    SSSS-  4/nU HN  u  p#S HC  nS H:  nXT-   U-   nUnUS:X  a  U[         La  U* n U R                  [        U5      U5        M<     ME     MP     U R                  [         [        S5        U R                  [         [        S	5        U R                  [         [        S
5        U R                  [         [        S5        U R                  [         [        SS5        U R                  [         [        SS5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        S S5      S5        U R                  [         [        S!S5        U R                  [         [        S"S5        S#S$S%S&S'S(S)S*S+S,S-  S,S-  * /nU H  n	U R                  [         [        S-U	5        M!     U R                  [         [        S.5        g ! [          a     GM  f = f)/N)100000000000000000000l      Fx:^V e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000rh   ri   )r   +r   )r    	z  		  r   123L123l0Lz-37L0x32Lr   1L      +   000r   0o123S   0x123i#  0b100r   z	 0O123   z 0X123  z 0B100 0z+0z-00008z-012395is        i   l                    l         l        r   42u   こんにちは)
ValueErrorrQ   r9   assertRaises)
r=   LLsvr   prefixssvvinvalid_basesr   s
             r    	test_longLongTest.test_longD  s    'C(
 DA$7F*BBs{q
':R((R"5 8 %  	*c62*c62*c40*c62*c7B7*c44T2+ 	UA*Wa"-Wa#.Wa!,[!,b1Z+S1Y*A.S!a(T1q)T1q)T1q)*c43*c9a8 !5&(!5&(S&1c6'
 "Dj#tT: "
 	*c+KLO & s   K
K.	-K.	c                 
    " S S5      nU R                  [        [        U" 5       5         " S S5      nU R                  [        5         U R                  [        U" 5       5      S5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)*LongTest.test_conversion.<locals>.JustLongi  c                     gN*   r   r=   s    r    __long__3LongTest.test_conversion.<locals>.JustLong.__long__      r!   r   N)r   
__module____qualname____firstlineno__r   __static_attributes__r   r!   r    JustLongr     s    r!   r   c                        \ rS rSrS rS rSrg)+LongTest.test_conversion.<locals>.LongTrunci  c                     gr   r   r   s    r    r   4LongTest.test_conversion.<locals>.LongTrunc.__long__  r   r!   c                     g)N  r   r   s    r    	__trunc__5LongTest.test_conversion.<locals>.LongTrunc.__trunc__  s    r!   r   N)r   r   r   r   r   r   r   r   r!   r    	LongTruncr     s    r!   r   r   )r   	TypeErrorr9   assertWarnsDeprecationWarningrQ   )r=   r   r   s      r    test_conversionLongTest.test_conversion}  s`    	 	 	)S(*5	 	 01S-t4 211s   
!A44
Bc                      [        U5      n [        U5      nSR                  XU5      nU R	                  X#U5        g ! [         a    Sn N?f = f! [         a    Sn NEf = f)NoverflowzAError in conversion of integer {} to float.  Got {}, expected {}.)r   r   r   formatrQ   )r=   r   actualr   msgs        r    check_float_conversionLongTest.check_float_conversion  so    	 1XF	"#AH&&,fQ&A 	3/  	 F	 
  	"!H	"s    > A AAAAc                 <   / SQnU H;  nU R                  [        U5      U5        U R                  [        U* 5      U* 5        M=     S HM  u  p#[        S5       H9  nU R                  [        [        SU-  SU-   -  5      5      SU-  SU-   -  5        M;     MO     S HM  u  p#[        S5       H9  nU R                  [        [        SU-  SU-   -  5      5      SU-  SU-   -  5        M;     MO     [        [        5      nS[
        -  nXV-   S-  nU R                  [        U5      [        5        U R                  [        US-   5      [        5        U R                  [        US-
  5      [        5        U R                  [        [        U5        U R                  [        SU-
  5      [        * 5        U R                  [        [        U* 5        U R                  [        [        US-
  5        U R                  [        [        U5        U R                  [        [        US-   5        U R                  [        [        SU-  S-
  5        U R                  [        [        SU-  5        U R                  [        [        Xf-  5        [        S	5       Hn  nSU-  S
-  S-   nSU-  S-  nU R                  [        [        U5      5      U5        SU-  S
-  nSU-  S-  nU R                  [        [        U5      5      U5        Mp     US-
  XUS-   US-
  XwS-   US-
  XfS-   SU-  S-
  SU-  Xf-  /nUR                  U5        [        SS5       H0  n[        SS5       H  nUR                  SUS-   -  U-   5        M     M2     U H&  n	U R                  U	5        U R                  U	* 5        M(     g )N)r   r   r   l    l    l                       l   l             l         )r   r   )r   r   r\   r   r   r   rg   r   )   r   r   r   r   r   r   ))r   r   r   )r   r   r   r   r   )r   r   r   )r   r   )	   r   )rh   r   )      )r   r   )   r   )r[   r   )r   r   r   r   ri   l         r   r      5   )rQ   r   rG   r9   DBL_MAXDBL_MAX_EXPr   r   rl   r`   r   )
r=   exact_valuesrO   rP   pint_dbl_max	top_powerhalfwaytest_valuesvalues
             r    test_float_conversionLongTest.test_float_conversion  sB   	" AU1Xq)UA2Y+ 
 MDA2Y  U1a4q>%:!;QT57^L  M3DA 2Y  U1a4q>%:!;QT57^L 3 'l{N	*Q.{+W5{1}-w7wqy)73-8qy)G84-9-	!<-	:-	!<-)A>-)<-	0CDsA1	"Q&A1	"ASq]A.1	"A1uASq]A.  M;AAIw!aKaKiKM1Y;	(;	
 	<(r1A4%""1qt9q=1 &  !E''.''/ !r!   c                    S H'  nU R                  [        [        U5      5      U5        M)     SnSS-  nU* nX4U[        S.nS H  nU R	                  [
        [        Xe5        M      U R                  [        U5      [        U5      S5        g )N)g             r         ?       @X  123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345123451234512345r   i0u  )hugemhugeshuger   )$float(huge)float(mhuge)zcomplex(huge)zcomplex(mhuge)zcomplex(huge, 1)zcomplex(mhuge, 1)zcomplex(1, huge)zcomplex(1, mhuge)z	1. + hugez	huge + 1.z
1. + mhugez
mhuge + 1.z	1. - hugez	huge - 1.z
1. - mhugez
mhuge - 1.z	1. * hugez	huge * 1.z
1. * mhugez
mhuge * 1.z
1. // hugez
huge // 1.z1. // mhugezmhuge // 1.z	1. / hugez	huge / 1.z
1. / mhugez
mhuge / 1.z
1. ** hugez
huge ** 1.z1. ** mhugezmhuge ** 1.zmath.sin(huge)zmath.sin(mhuge)zmath.sqrt(huge)zmath.sqrt(mhuge)z(float(shuge) should not equal int(shuge))rQ   r   r9   r   r   r   evalassertNotEqual)r=   rO   r  r  r  	namespacetests          r    test_float_overflowLongTest.test_float_overflow  s    *AU3q6]A. + Ez!E4P	D  mT4C!( 	E%L#e*6	8r!   c                    [         R                  " [         R                  5      n[        [	        S5      5      / SQ-    HZ  nSU-  n[         R                  " U5      nU R                  XB5        X!-  n[         R                  " U5      nU R                  Xe5        M\     SS-  * SS4 HM  nU R                  [        [         R                  U5        U R                  [        [         R                  U5        MO     g )Nrh   )ri     '  r   r  r   r   )	r   log10er]   rG   assertAlmostEquallogr   r   )r=   LOG10Er.   r  r  r   r!  bads           r    	test_logsLongTest.test_logs  s    DFF#b	?%77C#IEJJu%E""5. |H((5/C""31 8 %Z="a'Cj$((C8j$**c: (r!   c                 l  ^
 U R                   n " U
4S jS5      m
/ SQnS HH  nUR                  US-
  US-
  X3S-   US-   [        US-
  5      [        U5      [        US-   5      /5        MJ     UR                  SSS	[        R                  [        [        R                  5      /5        [        S
5      nUR                  SSS	SS-  US-
  X3S-   /5        UR                  U Vs/ s H  oD* PM     sn5        U H  nT
" U5      nU H  nT
" U5      nXW:  XW:  -
  nU R                  XFUS9   XF:  XF:  -
  n	U" X5        U" XF:H  US:H  5        U" XF:g  US:g  5        U" XF:  US:  5        U" XF:*  US:*  5        U" XF:  US:  5        U" XF:  US:  5        S S S 5        M     M     g s  snf ! , (       d  f       M  = f)Nc                   F   > \ rS rSrS rU 4S jrS rS rS rS r	S r
S	rg
))LongTest.test_mixed_compares.<locals>.Rati  c                    [        U[        5      (       a  Xl        SU l        g [        U[        5      (       a  [
        R                  " [        U5      5      u  p#SnSnU(       a9  [
        R                  " X$5      n[        U5      nXT-  U-  nX&-  nX4-  nU(       a  M9  US:  a  XS-  nSnOUnSU* -  nUS:  a  U* nXpl        Xl        g [        SU-  5      e)Nr      r   zcan't deal with %r)

isinstancer9   r   r-   r   r   frexpr#   r   r   )	r=   r  fr  CHUNKtoprm   r   r-   s	            r    __init__2LongTest.test_mixed_compares.<locals>.Rat.__init__  s    eS))"FDFu--::c%j1DA EC JJq0 #A"|u4

 ! AvH!GqyBFF $$85$@AAr!   c                    > [        UT5      (       d  T" U5      nU R                  UR                  -  U R                  UR                  -  p2X#:  X#:  -
  $ )N)r+  r   r-   )r=   otherrO   rP   Rats       r    _cmp__0LongTest.test_mixed_compares.<locals>.Rat._cmp__G  sI    !%--JEvv'%'')91!%((r!   c                 *    U R                  U5      S:H  $ Nr   r5  r=   r3  s     r    __eq__0LongTest.test_mixed_compares.<locals>.Rat.__eq__L      {{5)Q..r!   c                 *    U R                  U5      S:  $ r8  r9  r:  s     r    __ge__0LongTest.test_mixed_compares.<locals>.Rat.__ge__N  r=  r!   c                 *    U R                  U5      S:  $ r8  r9  r:  s     r    __gt__0LongTest.test_mixed_compares.<locals>.Rat.__gt__P      {{5)A--r!   c                 *    U R                  U5      S:*  $ r8  r9  r:  s     r    __le__0LongTest.test_mixed_compares.<locals>.Rat.__le__R  r=  r!   c                 *    U R                  U5      S:  $ r8  r9  r:  s     r    __lt__0LongTest.test_mixed_compares.<locals>.Rat.__lt__T  rD  r!   )r-   r   N)r   r   r   r   r0  r5  r;  r?  rB  rF  rI  r   )r4  s   r    r4  r(    s(    &BP)
//./.r!   r4  )r   gMbP?gGz?r  g      ?g@xDZbti)g      Bg      Cg      @Cr  g333333?r   r   r   rK  i N  )rO   rP   Rcmp)rQ   rl   r9   r   maxsizer   rR   )r=   rS   casestrO   RxrP   RyrL  xycmpr4  s             @r    test_mixed_comparesLongTest.test_mixed_compares  s   7	. 7	.r 8 +ALL!c'1s7A3wCac(CFC!H6 7 + 	aAs{{E#++,>?@ JaAqEz1Q3Q378%(%Qb%()AQBVBG,\\A\6Uqu-EtOqvtqy)qvtqy)qudQh'qvtqy)qudQh'qvtqy) 76   ) 76s   "F(A&F$$
F3c           
      b   U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS	5      S
5        U R                  [        SS	5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        S S5      S5        U R                  [        S S5      S5        U R                  [        [        S!S"5      S5      S!5        U R                  [        [        S!S"5      S5      S#5        U R                  [        [        S!S"5      * S5      S$5        U R                  [        [        S!S"5      * S5      S%5        U R                  [        [        S&S'5        U R                  [        S&S(5      S)5        U R                  [        S&S*5      S+5        U R                  [        SS,5      S5        U R                  [        S S,5      S5        U R                  [        SS,5      S-5        U R                  [        SS,5      S.5        U R                  [        SS/5      S-5        U R                  [        SS/5      S.5        U R                  [        SS05      S15        U R                  [        SS05      S.5        U R                  [        SS25      S35        U R                  [        SS25      S.5        U R                  [        [        S&S45        U R                  [        S&S55      S65        U R                  [        SS75      S85        U R                  [        S S75      S95        U R                  [        SS75      S:5        U R                  [        SS75      S;5        U R                  [        SS<5      S:5        U R                  [        SS<5      S;5        U R                  [        SS=5      S>5        U R                  [        SS=5      S;5        U R                  [        SS?5      S@5        U R                  [        SS?5      S;5        U R                  [        [        S&SA5        U R                  [        SBSC5      SD5        U R                  [        [        SSE5        U R                  [        [        SSF5        U R                  [        [        SSG5        U R                  [        [        SSH5        U R                  [        SI[        SSJ5        U R                  [        SI[        SSK5        U R                  [        SI[        SSL5        U R                  [        SI[        SSM5        U R                  [        SN[        SSO5        U R                  [        SP[        SSQ5        [        [        SR5      [        SS5      S-   5       Vs/ s H  n[        U5      PM     sn[        [        ST5      [        SU5      S-   5       Vs/ s H  n[        U5      PM     sn-    H  nUSV;  d  M  U R                  [        [        SWU5        U R                  [        [        SU5        U R                  [        [        SU5        U R                  [        [        SXSY-  U5        U R                  [        [        SXSY-  * U5        M     SZ H:  nS[ H1  nU R                  [        X25      [        [        U5      U5      5        M3     M<     g s  snf s  snf )\Ni[r-   	123456789,z123,456,789_123_456_789r   r   1r
   z-1z-3z  1z -1z+3z +1z 3r   z 1r\   rO   3Xi  4d2i.z-4d28xz     4d2z    -4d2ber   BEz-bez-BEIz,x_x	4996_02d2_X	4996_02D2o2322z-2322z-oz oz 2322z+oz+2322z,o_o111_4540_1322r+   11z-1110011010010z-10011010010z-bz bz 10011010010z+bz+10011010010z,b90  _b11_0000_0011_1001z1.3_cz,cz+czCannot specify bothz_,z,_z_,dz,_dzCannot specify ',' with 's'z,szCannot specify '_' with 's'_sr*   rz   AZzbcdoxXeEfFgGn%r   r   ri   zeEfFgG%)r   r   r
   ri   rb  i.i)
rQ   r   r9   r   r   assertRaisesRegexrG   ordchrr   )r=   rO   format_specr  s       r    test__format__LongTest.test__format__r  s   	3/=	3/=	3/?	3/? 	3-C$/4%0D)514%0D)514%0D)513.C$/ 	3-3-c*E2s+V4d+Z8t,j9c*E2s+V4C$/C$/D"s3T:D"s3T:T24e<T24e<*fj$?
D1;?
D1;? 	3-C$/c*F3s+W5d+V4t,g6d+W5t,g6d+W5t,g6*fj$?
D1?C 	3.C%0c*M:s+^<d+];t,n=d+^<t,n=d+^<t,n=*fj$?t,.AB 	*fa7*fa6*fa6*fa6 	z+@&!TRz+@&!TRz+@&!USz+@&!USz+H&RSUYZz+H&RSUYZ .33s8SXaZ-HI-HSV-HI-23s8SXaZ-HI-HSV-HIJK"22!!*faE!!*faE!!*fb+F!!*fafkJ!!*f3iMJ %KG  !;!'ek!BD H % JIs   0b'*b,c                     U R                  [        [        [        S5      5        U R                  [        [        [        S5      5        U R                  [        [        [        S5      5        g )Ninfz-infnan)r   r   r9   r   r   r   s    r    test_nan_infLongTest.test_nan_inf  sD    -eEl;-eFm<*c5<8r!   c                    U R                  [        5         SS-  nS S S 5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g ! , (       d  f       N= f)Nr   r   r\   r   r_  r   r$   rQ   r=   rX  s     r    test_mod_divisionLongTest.test_mod_division  s    01AA 2 	!$1%2&B'#!$!$1% 21s   B55
Cc                    SS-  nU* nU R                  X-  S5        U R                  X"-  S5        U R                  X-  S5        U R                  X!-  S5        U R                  SU-  S5        U R                  SU-  S5        U R                  SU-  S5        U R                  SU-  S5        U R                  SU-  US-	  -   U-  S5        U R                  SU-  US-	  -   U-  S5        U R                  SU-  US-	  -   U-  S5        U R                  SU-  US-	  -   U-  S5        U R                  XS-  -  S	5        U R                  S
U-  U-  S
5        XS.nS H  nU R                  [        [        XC5        M      S H$  n[        XS5      nU R                  USSU-  5        M&     S H  nU R                  [        [        Xs5        M      g )Nr   i@  r  r  r   i  g     Ԅ@g     Ԅr6   i@B )r  r  )r  r  zhuge / 1zhuge / 2z	huge / -1z	huge / -2zmhuge / 100zmhuge / 200)z1 / hugez2 / hugez	-1 / hugez	-2 / hugez100 / mhugez200 / mhugezexpected underflow to 0 from %r)zhuge / 0z	mhuge / 0)rQ   r   r   r  r$   )r=   r  r  r  r   	underflowr0   zeros           r    test_true_divisionLongTest.test_true_division  s   Ezc*,t,t,T3'T3'UC(UC(#*	2d:EB#+!4=uE#*	2e;VD#+!4<fE+S1'D.D0':!2	7H mT8G7
7I)/FVS>JL7 .D/tG .r!   c                    U R                  [        5         SS-  nS S S 5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g ! , (       d  f       N= f)Nr   r   r
   r\   r   r   r  r  s     r    test_floordivLongTest.test_floordiv  s    01QA 2 	#"%"%1%A&2&2&!$A&2&2&!$! 21s   C==
Dc           
      l   U(       a*  [        [        U5      [        U5      5      S[        -  :  a  g [        [	        X5      5      n [        X-  5      nU R                  XESR                  XXE5      5        g! [
         a    Sn N?[         a    Sn NLf = f! [
         a    Sn NP[         a    Sn N]f = f)zVerify that the result of a/b is correctly rounded, by
comparing it with a pure Python implementation of correctly
rounded division.  b should be nonzero.r   Nr   zerodivisionz7Incorrectly rounded division {}/{}: expected {}, got {})	r&   r#   r(   r   r1   r   r$   rQ   r   )r=   r*   r+   
skip_smallr   r   s         r    check_truedivLongTest.check_truediv  s     #c!fc!f-<?	&GAM*H	!qu+C 	 )//5vaH/J	L  	"!H  	&%H	&
  	C  	! C	!s/   A8 B 8BBBB3%B32B3c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS[        -  -  S5        U R                  SS	S[        [        -
  -  -  5        U R                  SSS
-  -  S5        U R                  SSSS-  -  5        S[        [        [        [        [        -
  4nU H  n[	        US-
  US-   5       Hi  nU R                  SS[        US5      -  -  SS[        U* S5      -  -  5        U R                  SS[        US5      -  -  SS[        U* S5      -  -  5        Mk     M     SSSSSSS
-  SSSSSSS-  * 4 HO  n[	        SS5       H<  nU R                  U[        -  U-   U5        U R                  U[        -  U-   U* 5        M>     MQ     [	        S5       H8  nU R                  S[        -  S-   S-  SS-  -  SU-  -   S[        -  S-  5        M:     U R                  SS5        U R                  S S!5        [	        S"5       H9  nU R                  SUS-   -  SU-  5        U R                  SU-  SUS-   -  5        M;     SSS#SS$S%SS&SSS
-  SSSSSSS-  * 4 H5  n[	        SS5       H"  nU R                  S[        -  U-  U-   U5        M$     M7     [	        S'S(5       H  nU R                  USS)-  5        M     S*SS
-  SS"-  4 H  n[	        S"5       H  n[        R                  " SU5      n[        R                  " USU-  S-   5      n	U R                  X5        U R                  U* U	5        U R                  X* 5        U R                  U* U	* 5        M     M     [	        S+5       H  n
[        R                  " S"5      n[        R                  " SS"5      n[        R                  " SU-  5      n[        R                  " SSU-  5      nU R                  X5        U R                  X* 5        U R                  U* U5        U R                  U* U* 5        M     g ),N{   r   i8r\   r_  ige~ r   rm  iNF ri   í l       90r   Q   r   i0& iC r      r
   r   ii)   2   rh         i
  l   E,J_   l     Jb   r  r   r   r       i   i4  l    d(	 r  )	r  r  r(   r'   rG   r&   r%   r:   	randrange)r=   basesr   r.   mr   rJ   Mr*   r+   rX  a_bitsb_bitsrO   rP   s                  r    $test_correctly_rounded_true_division-LongTest.test_correctly_rounded_true_division9  sT    	3"4#1a 1b!1a ;K7?5&1|k/I+J"JK5C</;ae4 L+kL8:DTBYr	2""5CQK#7q#sdA,9NO""5CQK#7q#sdA,9NO 3  Q2uafb"c6BF74A3^""1%5#5#91=""1%5#5#9A2> $4 sA <! 3U:1c6AAqDHl?502  	1d# 	02GHtArAaCy"a%0r1ub1Q3i0 
 Q1aRUAsFb"c6BF74A3^""1l?1#4q#8!< $4 sBAq!T'*   "c'2t8,A4[$$Q*$$Q!A.""1(""A2q)""1b)""A2r* ! - uA%%d+F%%a.F  F+A  AvI.Aq$q"%r1%rA2& r!   c                    U R                  [        5         SS-    S S S 5        U R                  [        5         SSS-  * -    S S S 5        U R                  [        5         SS-	    S S S 5        U R                  [        5         SSS-  * -	    S S S 5        g ! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       NX= f! , (       d  f       g = f)Nr   r_  r   r  )r   r   r   s    r    test_negative_shift_count"LongTest.test_negative_shift_count  s    z*"H +z*AI, +z*"H +z*AI, +* +*******s.   B
B' B8
C	
B$'
B58
C	
Cc                 T   U R                  SS5        U R                  SS5        U R                  [        5         SS-    S S S 5        U R                  SSS-  -  S5        U R                  [        5         SSS-  * -    S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nr   r
   r   r  )rQ   r   r   r   s    r    test_lshift_of_zeroLongTest.test_lshift_of_zero  s    #!$z*G +qDy)1-z*19 +* +* +*s   B5
B
B
B'c                     U R                  S[        R                  -  S5        U R                  S[        R                  S-   -  S5        g )Nr   r   rQ   r   rM  r   s    r    test_huge_lshift_of_zero!LongTest.test_huge_lshift_of_zero  s:    
 	ckk)1-s{{Q/3r!   r  g?F)memusedry_runc                 x    U R                  S[        R                  S-   -  SS-  [        R                  -  5        g )Nr   r  r  )r=   sizes     r    test_huge_lshiftLongTest.test_huge_lshift  s/     	s{{T12AI4LMr!   c                    SS-  nU R                  SU-	  S5        U R                  SU-	  S5        U R                  SU-	  S5        U R                  SU-	  S5        U R                  S	S
-  U-	  S5        U R                  S	S
-  * U-	  S5        g )Nr   r  r   r   ir
   ic  ir   r   rQ   )r=   
huge_shifts     r    test_huge_rshiftLongTest.test_huge_rshift  s    $Y
z)1-#*,b1+Q/%J.3C:-q1!S&J.3r!     g?c                     SS-  S-   [         R                  -  nU R                  U[         R                  S-   -	  SS-  S-   5        U R                  U[         R                  S-   -	  S5        g )Nr   r  r   i  rg   r  r   )r   rM  rQ   )r=   r  r  s      r    test_huge_rshift_of_huge!LongTest.test_huge_rshift_of_huge  s]     cRCKK/#++/2Q#XNC#++"45q9r!   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS-  S	-	  SS
-  5        U R                  SS-  * S	-	  SS
-  * 5        U R                  SS-  S	-   S	-	  SS
-  5        U R                  SS-  S	-   * S	-	  SS
-  * S	-
  5        g )Nr   iii1  iir   r   r      r  r   s    r    test_small_rshiftLongTest.test_small_rshift  s   "%S)"%S)C(t,C(t,C1af-!S&A3w/!S&1**AsF31c6A:!+afWq[9r!   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS-  S-	  SS-  5        U R                  SS-  * S-	  SS-  * 5        U R                  S[        [        -  -
  [        -	  [        * 5        U R                  [        S-
  [        [        -  -
  [        -	  [        * 5        g )	Nr   r
   r   r_  r   r   w   r   )rQ   BASEr8   r   s    r    test_medium_rshiftLongTest.test_medium_rshift  s    !$R(A&r*C1af-!S&A3w/ 	!d4i-E1D59$(T$Y.584%@r!   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS-  S-	  SS-  5        U R                  SS-  * S-	  SS-  * 5        g )Nr   r
   r   r   r  `   r  r   s    r    test_big_rshiftLongTest.test_big_rshift  s~    1%b)Q'+C2q"u-!S&BB/r!   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS-  S-  SS-  5        U R                  SS-  * S-  SS-  * 5        g )	NT   iib  ir   r  r   r   r  r   s    r    test_small_lshiftLongTest.test_small_lshift  s~    "%S)4(e,C1af-!S&A3w/r!   c                     U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )Ni T  i i  i <r  r   s    r    test_medium_lshiftLongTest.test_medium_lshift  sB    %(V,F+w/r!   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS-  S-  SS-  5        U R                  SS-  * S-  SS-  * 5        g )	Nl        l     l       l    r   r   r     r  r   s    r    test_big_lshiftLongTest.test_big_lshift  s~    :.k2\26C2q#v.!S&BC0r!   c                 t    SS-  nU* S-   nUS-   nU R                  X-   S5        U R                  X1-
  S5        g )Nr   ri   r   )assertIs)r=   r*   r+   cs       r    #test_small_ints_in_huge_calculation,LongTest.test_small_ints_in_huge_calculation  s?    HBFEaeQaeQr!   c                    U R                  [        SSS5      S5        U R                  SS5        Su  pnU R                  X-  U-  S5        U R                  [        SSS5      S5        U R                  SS5        S	u  pnU R                  X-  U-  S5        U R                  [        SS
SS
-  S-
  5      S5        U R                  SS
-  SS
-  S-
  -  S5        SS
SS
-  S-
  p2nU R                  X-  U-  S5        g )Nrh   r\     r   )rh   r\   r     r   r   )r   r  r   ri   )r  pow)r=   r*   r  r  s       r    test_pow_uses_cached_small_ints(LongTest.test_pow_uses_cached_small_ints  s    c"aoq)mQ'aafqj!$c!R-q1-q1$aafqj!$c!S!S&1*-q1a3h!s(Q,/3S!S&1*aafqj!$r!   c                    SS-  nU R                  US-   U-  S5        U R                  US-   U-  S5        U R                  XS-  -  S5        U R                  XS-  -  S5        [        SU-  S-   U5      u  p#U R                  US5        U R                  US5        [        SU-  S-   U5      u  p#U R                  US5        U R                  US5        [        SU* -  S-
  U* 5      u  p#U R                  US5        U R                  US5        [        SU-  S-
  U* 5      u  p#U R                  US5        U R                  US5        g )	Nrh   ri   r   r   r   r\   r
   r_  )r  r)   )r=   bigr   r/   s       r    "test_divmod_uses_cached_small_ints+LongTest.test_divmod_uses_cached_small_ints  s0   CisQw#oq)sQw3&*cQh'+cRi("-a#gk3'aab3hnc*aaaC4j1nsd+aaa#gkC4(aar!   c           	      p   [        SS5       H  nU R                  XS-   5        U R                  XS-  5        U R                  XS-
  5        U R                  XS-  5        U R                  XS-  5        U R                  XS-  5        U R                  XS-  5        U R                  X) ) 5        U R                  XS-  5        U R                  U[        [        U5      5      5        U R                  XS-  S-	  [        U5      5        M     SnU R                  X-
  S5        U R                  SU-  S5        g )Nr    r   r   r
   r   l            )rG   r  r9   r   )r=   rJ   s     r    test_small_intsLongTest.test_small_ints1  s    r3AMM!U#MM!U#MM!U#MM!!V$MM!V$MM!U#MM!U#MM!bS!MM!T"MM!SQ[)MM!T1Wc!f-   aeQa!eQr!   c                 2   Sn[        SS5       H  nUR                  5       nU R                  U[        [	        U5      R                  S5      5      5        US:w  a7  U R                  SUS-
  -  [        U5      s=:*  =(       a    SU-  :  Os  5        OU R                  US5        US:w  d  M  U R                  US[        R                  " [        R                  " [        U5      5      [        R                  " S5      -  U-   5      -   5        M     U R                  SR                  5       S5        U R                  SR                  5       S5        U R                  SR                  5       S5        U R                  SR                  5       S5        U R                  S	R                  5       S5        S
 H  nSU-  nU R                  US-
  R                  5       U5        U R                  SU-
  R                  5       U5        U R                  UR                  5       US-   5        U R                  U* R                  5       US-   5        U R                  US-   R                  5       US-   5        U R                  U* S-
  R                  5       US-   5        M     g )Ng|=ii  z-0br   r   r   r
   r   )r   r\   r   r   r  r  r  !   ?   @      )rG   r   rQ   lenr   lstripr<   r#   r   floorr!  )r=   tinyrO   krJ   r*   s         r    test_bit_lengthLongTest.test_bit_lengthC  s   vu%AAQCFMM%$8 9:AvAaCCF 9 9QT 9:  A&Av
   A

Q(!4t;)= %= > &$ 	!)1-!)1-"*A.!)1-"*A.<A1Aac--/3ac--/3a^^-qs3qb__.!4ac--/15qbd..0!A#6 =r!   c                    [        SS5       H;  nU R                  UR                  5       [        U5      R	                  S5      5        M=     S H  nSU-  nU R                  UR                  5       S5        U R                  US-
  R                  5       U5        U R                  US-  R                  5       S5        U R                  US-
  S	-  R                  5       US
-
  5        M     g )Nir  rZ  )rh   r  r  r  A   i  iZ i r   r   r  r   i  r   )rG   rQ   	bit_countr   count)r=   r*   r.   s      r    test_bit_countLongTest.test_bit_counte  s    ud#AQ[[]CFLL,=> $ >C3AQ[[]A.a!e..0#6a"f//115q1um668#'B >r!   c                    0 SS_SS_SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SSSS.En[        SSS5       H^  nUR                  5        HG  u  p4[        X2-   S5      nXB-   nU R                  XV5        U R	                  [        U5      [        5        MI     M`     U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        S S5      S5        U R                  [        S!S5      S"5        U R                  [        S#S5      S"5        U R                  [        S$S5      S%5        U R                  [        S&S5      S%5        U R                  [        S'S5      S(5        U R                  [        S)S*5      S+5        U R                  [        S,S*5      S-5        U R                  [        S.S5      S/5        U R                  [        S.S5      S05        U R                  [        S.S*5      S15        U R                  [        S.S25      S35        U R                  [        S.S45      S55        U R                  [        S.S65      S75        U R                  [        S.S85      S95        U R                  [        S.S:5      S;5        U R                  [        S.S<5      S=5        U R                  [        S.S>5      S?5        U R                  [        S.S@5      S5        U R                  [        S.SA5      S5        U R                  [        S.SB5      S5        [        SS"5       HM  n[        SU-  SC-   S*5      nSU-  SD-   nU R                  XW5        U R	                  [        U5      [        5        MO     [        S5       Hg  n[        S"5       HU  n	[        R                  " SESF5      n
[        X5      nU R                  XZ5        U R	                  [        U5      [        5        MW     Mi     SGSHSISJSS"-  SS"-  4 H  nU R                  [        SKU5      SK5        M!     [        S"5       HU  n	[        R                  " SESF5      n
[        U
5      nU R                  XZ5        U R	                  [        U5      [        5        MW     SLnU H  nU R                  [        [        SU5        M!     g )MNr   r   r   r\   r   rg   r   rh   r   r   r   r   r   r   r[   r   r  r   )r        ii  r
   ijr   i8ikrt  iii1   r  3   ri         r  r     i,  iԡ r_  i i i l   ! l   ! l   ~! l    ! r   l   ! r  l   `! il    ! r  l    '! il    z+ il    v|o r  l    ,Gx iiiiF i ir  r   r   r   r   i{ )brianr  y                )rG   itemsroundrQ   r  typer9   r:   r  r   r   )r=   	test_dictoffsetr  r   r   r   expectr   rJ   rO   huge_nbad_exponentsr  s                 r    
test_roundLongTest.test_roundp  s   8Qq 8!A 8q 8Aa 81 8a 8r8R8!"28'(8-/846r8;=b8BDR8IKB88r8&(RB8	 D#r*F!)AHb)8  /d3i-	 * + 	tR$/tR$/sB.sB+sB+r2*q"q)q"q)r2*r2*r2,sB-sB-sB-sB-vr*F3vr*F3{B/={B/={B/={B/={B/={B/={B/={B/={B/={C0+>{C0!4{C0!4{D115 r3AA+CUV^FS)MM$s)S)	   qA3Z$$VU3Ak  (d3i-	    uguafb#gEFU7F3W= F sA  /A(CS$MM$s)S)	  +Ai15 r!   c                 D  ^  S>U 4S jjn0 SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_nU" US%S&S'9  0 SS_SS_SS_S	S
_SS_SS_SS_SS(_SS)_SS_SS_SS*_SS_SS+_SS,_S!S-_S#S._nU" US/S&S'9  SSSSSSSS0S1S2S3.
nU" US%SS'9  SSSSSS*SS+S1S4S3.
nU" US/SS'9  T R                  [        SR                  SS%SS'9  T R                  [        SR                  SS/SS'9  T R                  [        S5R                  SS%S&S'9  T R                  [        S5R                  SS/S&S'9  T R                  [        SR                  SS%S&S'9  T R                  [        SR                  SS/S&S'9  T R                  [        SR                  S6S%SS'9  T R                  [        SR                  S6S/SS'9  T R                  SR                  SS%5      S75        T R                  SR                  SS%S&S'9S75        T R                  SR                  S8S%5      S95        T R                  SR                  S8S%5      S:5        T R                  SR                  S8S%S&S'9S;5        T R                  [        SR                  SS%5        T R                  [        SR                  SS%S&S'9  T R                  [        SR                  SS/S&S'9   " S< S=[        5      nT R                  SR                  SU" S%5      5      S5        T R                  SR                  SU" S/5      5      S75        g )?NFc           
      f  > SS jnU R                  5        H  u  pE TR                  UR                  [        U5      XS9U5        [        U5      S:X  a.  US:X  a(  U(       d!   TR                  UR                  5       U5         TR                  U" U[        U5      XS9U5        M     g ! [         a!  n[        SR                  XAU5      5      UeS nAff = f! [         a   n[        SR                  U5      5      UeS nAff = f! [         a!  n[        SR                  XAU5      5      UeS nAff = f)	Nc                    ^  US:X  a  [        U5      nOUS:X  a  [        [        U5      5      n[        U 4S jW 5       5      $ )Nlittler  c              3   :   >#    U  H  nTUS -  -	  S-  v   M     g7f)r      Nr   )r   rJ   r   s     r    r   SLongTest.test_to_bytes.<locals>.check.<locals>.equivalent_python.<locals>.<genexpr>  s     >1a1Q3h$.s   )rG   reversedbytes)r   length	byteordersignedorders   `    r    equivalent_python@LongTest.test_to_bytes.<locals>.check.<locals>.equivalent_python  s;    (!&ME%'$U6]3E>>>>r!   r  z4failed to convert {} with byteorder={} and signed={}r   r  +failed to convert {} with default argumentszmCode equivalent from docs is not equivalent for conversion of {0} with byteorder byteorder={1} and signed={2}F)r  rQ   to_bytesr  	ExceptionAssertionErrorr   testsr  r  r  r  r   errr=   s          r    check%LongTest.test_to_bytes.<locals>.check  s?   ? #(++-C$$c(mYN " x=A%)u*<V4(((C
O$$) #h-K ) #0
 ! C(N8:?BCC % 4,I#VD\+0344 ! O(%%+VDV%DF LOOOsG   )B*# C!D*
C4CC
D"C==D
D0D++D0r       r      r
         r         r                    r                   s                        r  Tr                               r              )
r   r   r  r   r  r:  r<     r?          r   r   r!   rg   s       s        s   c                       \ rS rSrSrg)&LongTest.test_to_bytes.<locals>.SubStri?  r   Nr   r   r   r   r   r   r!   r    SubStrrS  ?      r!   rU  r!  )r   r   r"  rQ   r   )r=   r(  tests1tests2tests3tests4rU  s   `      r    test_to_bytesLongTest.test_to_bytes  sG   %	OP
w
w
 
 '	

 '
 +
 
 
 +
 +
 
 
 ;
 O
 ?
  O!
" o#
& 	feD)
w
w
 
 '	

 '
 +
 
 
 +
 +
 
 
 ;
 K
 ?
  O!
" o#
& 	fht, "
 	feE* "
 	fhu--#E%P-#HUS-#E$O-#HTR-$!U4P-$!XdS-"5O-"8ER!a/5!at<cB!a/1HI!a/1HI"q%=0	2-!q%@-"5N-"8DQ	S 	!a7A!a)9:C@r!   c                 2  ^  SMU 4S jjn0 SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"S#S$S%.EnU" US&S'S(9  0 SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_S)S_S*S_SS_SS_S	S_SS _S!S"S#S$S+.EnU" US,S'S(9  SSSSS-SSS S.S"S/S0.nU" US&SS(9  SSSSS-SSS S.S"S/S1.nU" US,SS(9   " S2 S3[         5      nT R                  [        UR                  SS&5      5      U5        T R	                  UR                  SS&5      S5        T R                  [        UR                  SS&SS(95      U5        T R	                  UR                  SS&SS(9S5        T R                  [        UR                  SS,5      5      U5        T R	                  UR                  SS,5      S5        T R                  [        UR                  SS,SS(95      U5        T R	                  UR                  SS,SS(9S5        T R	                  [         R                  / S4QS&S'S(9S#5        T R	                  [         R                  S4S&S'S(9S#5        T R	                  [         R                  [        S55      S&S'S(9S#5        T R	                  [         R                  [        S55      S&S'S(9S#5        T R	                  [         R                  [        R                  " S6S55      S&S'S(9S#5        T R	                  [         R                  [        S55      S&S'S(9S#5        T R                  [        [         R                  S/S&5        T R                  [        [         R                  S/S75        T R                  [        [         R                  S/S85        T R                  [        [         R                  S9S&5        T R                  [        [         R                  S:S&5        T R                  [        [         R                  SS&5        T R                  [        [         R                  SS&S'5        T R                  [        UR                  S9S&5        T R                  [        UR                  S:S&5        T R                  [        UR                  SS&5        T R                  [        [         R                  SS&S'5         " S; S<[         5      nUR                  SS&5      nT R                  [        U5      U5        T R	                  US=5         " S> S?[         5      n	U	R                  SS&5      nT R                  [        U5      U	5        T R	                  US5        T R	                  [        US@SA5      SB5         " SC SD5      n
 " SE SF5      n " SG SH5      n " SI SJ5      nT R	                  [         R                  U
" 5       5      S5        T R                  [        [         R                  U" 5       5        T R                  [        [         R                  U" 5       5        T R                  [        [         R                  U" 5       5         " SK SL[        5      nT R	                  [         R                  SU" S&5      5      S5        T R	                  [         R                  SU" S,5      5      S5        g )NNFc           	      4  > SS jnU R                  5        Hu  u  pE TR                  [        R                  XAUS9U5        US:X  a-  U(       d&   TR                  [        R                  U5      U5         TR                  U" XAUS9U5        Mw     g ! [         a!  n[        SR                  XAU5      5      UeS nAff = f! [         a   n[        SR                  U5      5      UeS nAff = f! [         a!  n[        SR                  XAU5      5      UeS nAff = f)Nc                     US:X  a  [        U 5      nOUS:X  a  [        [        U 5      5      n[        S [        W5       5       5      nU(       a(  U(       a!  US   S-  (       a  USS[	        U5      -  -  -  nU$ )Nr  r  c              3   4   #    U  H  u  pX!S -  -  v   M     g7f)r   Nr   )r   rJ   r+   s      r    r   ULongTest.test_from_bytes.<locals>.check.<locals>.equivalent_python.<locals>.<genexpr>L  s     G-FTQqS-Fs   r
   r   r   r   )r]   r  sum	enumerater  )
byte_arrayr  r  little_orderedr   s        r    r  BLongTest.test_from_bytes.<locals>.check.<locals>.equivalent_pythonF  so    (%)*%5N%'%)(:*>%?NGY~-FGGn.2Dt2KaN 3333Ar!   r  z6failed to convert {} with byteorder={!r} and signed={}r  r   zeCode equivalent from docs is not equivalent for conversion of {0} with byteorder={1!r} and signed={2}r!  )r  rQ   r9   
from_bytesr#  r$  r   r%  s          r    r(  'LongTest.test_from_bytes.<locals>.checkE  s-   
 #(++-C$$tvF " %f4((NN40$&	C$$)$&I - #0
 ! C(P8:?BCC % 4,I#VD\+0344 ! C(P8: @CCCsG   $B%B?5C,
B<B77B<?
C)	C$$C),
D6DDr!   r   r*  s     r+  r   rG  r,  r
   rM  r.  r-  r/  r   r1  r0  r2  r  r4  r3  r6  r5  r8  r7  r9  r  r;  r:  r=  r<  r>  r?  rA  rC  )rL  r@  rB  rD  r  Tr  rE  rF  )rH  rI  rJ  rK  r  r   rO  rP  )r!   r*  r+  r2  r/  r,  r;  r=  rL  rM  rN  )r!   r*  r+  r2  r/  r,  rG  r1  rH  rM  rQ  c                       \ rS rSrSrg)'LongTest.test_from_bytes.<locals>.myinti  r   NrT  r   r!   r    myintrj    rV  r!   rk  )r  r   r   rB  Bzbig zlittle r    c                       \ rS rSrS rSrg)(LongTest.test_from_bytes.<locals>.myint2i  c                 2    [         R                  XS-   5      $ )Nr   )r9   __new__)clsr  s     r    rq  0LongTest.test_from_bytes.<locals>.myint2.__new__  s    {{3	22r!   r   Nr   r   r   r   rq  r   r   r!   r    myint2ro    s    3r!   ru  r   c                       \ rS rSrS rSrg)(LongTest.test_from_bytes.<locals>.myint3i  c                     SU l         g )Nbarfoo)r=   r  s     r    r0  1LongTest.test_from_bytes.<locals>.myint3.__init__  s	     r!   rz  N)r   r   r   r   r0  r   r   r!   r    myint3rw    s    !r!   r}  r{  nonery  c                       \ rS rSrS rSrg),LongTest.test_from_bytes.<locals>.ValidBytesi  c                     g)Nr+  r   r   s    r    	__bytes__6LongTest.test_from_bytes.<locals>.ValidBytes.__bytes__  s    r!   r   Nr   r   r   r   r  r   r   r!   r    
ValidBytesr    s    r!   r  c                       \ rS rSrS rSrg).LongTest.test_from_bytes.<locals>.InvalidBytesi  c                     g)Nabcr   r   s    r    r  8LongTest.test_from_bytes.<locals>.InvalidBytes.__bytes__   s    r!   r   Nr  r   r!   r    InvalidBytesr    s    r!   r  c                       \ rS rSrSrg).LongTest.test_from_bytes.<locals>.MissingBytesi  r   NrT  r   r!   r    MissingBytesr    s    Cr!   r  c                       \ rS rSrS rSrg).LongTest.test_from_bytes.<locals>.RaisingBytesi  c                     SS-    g )Nr   r   r   r   s    r    r  8LongTest.test_from_bytes.<locals>.RaisingBytes.__bytes__  s	    Ar!   r   Nr  r   r!   r    RaisingBytesr    s    r!   r  c                       \ rS rSrSrg)(LongTest.test_from_bytes.<locals>.SubStri  r   NrT  r   r!   r    rU  r    rV  r!   rU  r!  )r9   r  r  rg  rQ   	bytearrayarray
memoryviewr   r   r   getattrr$   r   )r=   r(  rW  rX  rY  rZ  rk  ru  rJ   r}  r  r  r  r  rU  s   `              r    test_from_bytesLongTest.test_from_bytesD  s   +	C\

Q
 
 Q	

 
 R
 
 T
 T
 
 S
 
 
 
 
  !
" #
$  "#%+
. 	feD)

Q
 
 Q	

 
 R
 
 T
 T
 
 S
 
 
 
 
  !
" #
$  "#%+
. 	fht, "
 	feE* "
 	fhu-	C 	 	d5++GU;<eD))'591=!!'5!?@%	I))'5)GKd5++GX>?G))'8<a@d5++Xe , - ./4	6))'8E)JANNN;dN;V	ENN;dN;V	Eo&d ( <=C	Eo&d ( <=C	EKK_-uT ( CDJ	L't ( =>D	F*cnnseUC*cnnqc9E*cnnqc<H)S^^R?)S^^VUC)S^^Q>)S^^QtD)U%5%5r5A)U%5%5vuE)U%5%5q%@)S^^QtD	3S 	3 gu-d1gv&A	!S 	! gu-d1gv&AE62E:	 		 	 	 	 	 	
5q9)S^^\^D)S^^\^D+S^^\^L	S 	VE];Q?1ABAFr!   c                     [        SS5       H7  nUR                  SSS9nU R                  [        R	                  USS9U5        M9     g )Nr  r  r   Tr  )rG   r"  r  r9   rg  )r=   rJ   r+   s      r    test_from_bytes_smallLongTest.test_from_bytes_small  sA     r3A

1T
*AMM#..4.8!<  r!   c                     U R                  SR                  5       5        U R                  SR                  5       5        U R                  SR                  5       5        g )Nr
   r   r   )r<   
is_integerr   s    r    test_is_integerLongTest.test_is_integer  s;    )*()()r!   c                      " S S[         5      n[        S5       Vs/ s H
  o!" S5      PM     nn[        [         U5       H  nU R                  US5        M     g s  snf )Nc                       \ rS rSrSS jrSrg)<LongTest.test_access_to_nonexistent_digit_0.<locals>.Integeri"  c                 >    [         R                  X5      nSUl        U$ )Nr{  )r9   rq  r{  )rr  r  r=   s      r    rq  DLongTest.test_access_to_nonexistent_digit_0.<locals>.Integer.__new__#  s    {{3. r!   rz  N)r   rt  r   r!   r    Integerr  "  s    r!   r  r  r   )r9   rG   maprQ   )r=   r  rJ   integersr   s        r    "test_access_to_nonexistent_digit_0+LongTest.test_access_to_nonexistent_digit_0  sR    	c 	 ).d41GAJ4S(#AQ" $ 5s   Ac                     S HN  nS HE  nU R                  [        X-  5      [        5        U R                  [        X-	  5      [        5        MG     MP     g )N)TF)r   r   )rQ   r  r9   )r=   r  r   s      r    test_shift_boolLongTest.test_shift_bool,  sD    "E  en!5s;  en!5s;   #r!   c           
      R    " S S[         5      nSSSS[        R                  S-   SSU" S	5      /nU Hq  nUR                  5       u  pEU R	                  XE4[        U5      S45        U R	                  [        U5      [         5        U R	                  [        U5      [         5        Ms     g )
Nc                       \ rS rSrSrg)-LongTest.test_as_integer_ratio.<locals>.myinti4  r   NrT  r   r!   r    rk  r  4  rV  r!   rk  rh   r   r  r   TFr   )r9   r   rM  as_integer_ratiorQ   r  )r=   rk  r&  r  	numeratordenominators         r    test_as_integer_ratioLongTest.test_as_integer_ratio3  s    	C 	QQaueBiHE%*%;%;%="Ii5E
AGT)_c2T+.4	 r!   c           	          [        SS5       HJ  nSU-  S-
  nU R                  XS9   U R                  US-  SSU-  -  SUS-   -  -
  S-   5        S S S 5        ML     g ! , (       d  f       M^  = f)Nr   i  )bitlenr   r   )rG   rR   rQ   )r=   r  r   s      r    test_squareLongTest.test_square=  ss    
 AsmFf!AV1  A1v:&1!+<=AC 21 $11s   (A
A+	c           
         U R                  [        R                  [        R                  R
                  5        SSS[        S-
  S4S[        -
  S4[        S4[        * S4[        [        -  S-
  S4[        [        -  S4/	nU Ha  u  p#U R                  U5         U R                  UR                  5       [        R                  [        R                  U-  -   5        S S S 5        Mc      " S S[        5      nU R                  UR                  [        R                  R
                  5        U H_  u  p#U R                  U5         U R                  U" U5      R                  5       UR                  UR                  U-  -   5        S S S 5        Ma     [        R                  S5        g ! , (       d  f       GM3  = f! , (       d  f       M  = f)	N)r   r   )r   r   )r
   r   r   r   r\   c                       \ rS rSrSrg)'LongTest.test___sizeof__.<locals>.MyIntic  r   NrT  r   r!   r    MyIntr  c  rV  r!   r  )rQ   r9   __itemsize__r   int_infosizeof_digitr  rR   
__sizeof____basicsize__object)r=   r  r  r>   r  s        r    test___sizeof__LongTest.test___sizeof__I  sq   ))3<<+D+DE !VQKtVQK1IUAJ$Y]A$YN
 *NEe$  $$&%%(8(87(BB %$ *	C 	 	++S\\-F-FG)NEe$  %L++-''%*<*<w*FF %$ * 	!) %$ %$s   AF%AF8%
F5	8
G	c                    U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        [        R                  R                  S-
  5      [        R                  R                  S-
  5        U R                  [        [        R                  R                  S-
  5      [        R                  R                  S-
  5        U R                  [        [        R                  R                  5      S5        U R                  [        [        R                  R                  S-   5      S5        U R                  [        [        R                  R                  * S-
  5      S5        U R                  [        [        R                  R                  * S-
  5      S5        U R                  [        [        R                  R                  * 5      S5        U R                  [        [        R                  R                  * S-   5      [        R                  R                  * S-   5        g )Nr
   r   r   rh   r   r   )rQ   hashr   	hash_infomodulusr   s    r    	test_hashLongTest.test_hashr  s   b2&a!$b2&cmm33a78#--:O:ORS:STcmm33a78#--:O:ORS:STcmm334a8cmm33a78!<s}}444q892>s}}444q892>s}}4445q9s}}444q89CMM<Q<Q;QTU;UVr!   r   N)T)Br   r   r   r   rD   rK   rX   rd   rn   rs   rw   r{   r   r   r   r   r   r   r   r   requires_IEEE_754r	  r  r$  rS  ry  r~  r  r  r  r  r  r  r  cpython_onlyr  
bigmemtestr   rM  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r[  r  r  r  r  r  r  r  r  r  r   r   r!   r    r3   r3   s   s7   0C#>N+.+6+/
S>1'6Mr5"0" C0 C0J8>;$Z*x_DB9
& HD%&L< Y' Y'v 4 4 d*8UKN L N4 c)$F: G :
: 
A0001     % %   0 $ 7D	CH6THATLG\ = =*
#<5
C'RWr!   r3   __main__)#unittestr  r   r   r:   r   r  r  bits_per_digitr8   r  rI   r_   r^   r~   rr   rG   rJ   r`   r   r&   r   r   r  min_expr'   r   r(   r%   r   r1   TestCaser3   r   mainrq   s   0r    <module>r     sb     
    	##Ezax  	 aD$!)%79K
L	qwANN26	qB 
   1B #81B#88 8
..

nn$$nn$$~~&&k>Al(BQ(F$GG *'\+<MWx   MW^0 zMMO K3 !#8s   >E E