
    daf                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZ d dlmZmZmZmZ d dlZ	 d dlZ ed      Z ed      Zej.                  j1                  e      xs ej4                  Zej.                  j9                  ed      Z G d d	e      Z G d
 de      Z G d dej@                        Z! ejD                   e#ed      d       G d dej@                               Z$dZ% e& e'e%            Z(dZ) e& e'e)            Z*dZ+ e& e'e+            Z,dZ- e& e'e-            Z. G d dej@                        Z/ G d dej@                        Z0 G d dej@                        Z1e	jd                   G d dej@                               Z3 G d dej@                        Z4ejj                  Z6ejn                  Z8 G d  d!ej@                        Z9e:d"k(  r ejv                          yy# e$ r dZY w xY w)#    N)support)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)isinfisnancopysignldexpinfnanzformatfloat_testcases.txtc                       e Zd Zy)FloatSubclassN__name__
__module____qualname__     */root/Python-3.12.4/Lib/test/test_float.pyr   r          r   r   c                       e Zd Zy)OtherFloatSubclassNr   r   r   r   r   r       r   r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Z e	j                  ddd	      d
        Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j*                  d        Ze	j*                  d        Zd Zd Zy)GeneralFloatCasesc                    | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d	       | j                  t        t        d
       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        i        | j                  t        dt        i        | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        d      d       | j                  t        d      d       t        d       t        d       | j                  t        t        d       y )NQ	@i:  g     s@  3.14  	  0x3.1    -0x3.p-1    +0x3.p-1  z++3.14z+-3.14z-+3.14z--3.14z.nanz+.inf.z-.z
not 'dict'u   z-1.7d29z3D-14u     ٣.١٤  u
    3.14 s  .1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111a  .1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111u   こんにちは)assertEqualfloatassertRaises
ValueError	TypeErrorassertRaisesRegexselfs    r   
test_floatzGeneralFloatCases.test_float%   s   td+sU+z*D1*e[9*e^<*e^<*eX6*eX6*eX6*eX6*eV4*eW5*eS1*eT2)UB/y,rB*eX6*eY7*eW5894@=>En 	*e-MNr   c                 8    | j                  t               d       y )N        )r!   r"   r'   s    r   test_noargszGeneralFloatCases.test_noargsD   s    #&r   c           
         t         D ]o  t        fddD              r| j                  t              t	                     | j                  t              t        j                  dd                   q t        D ]7  dv rt        fddD              r| j                  t        t               9 | j                  t        t        d       | j                  t        t        d       | j                  t        t        d	       | j                  t        t        d
       | j                  t        t        d       | j                  t        t        d       y )Nc              3   &   K   | ]  }|v  
 y wNr   .0chlits     r   	<genexpr>z5GeneralFloatCases.test_underscores.<locals>.<genexpr>I        6RrSy6   jJxXoObB_ )0_709_99c              3   &   K   | ]  }|v  
 y wr/   r   r0   s     r   r4   z5GeneralFloatCases.test_underscores.<locals>.<genexpr>O   r5   r6   _NaNNa_NIN_Fz-_INFz-INF_s   0_.9)	r   anyr!   r"   evalreplacer   r#   r$   )r(   r3   s    @r   test_underscoresz"GeneralFloatCases.test_underscoresG   s	   , 	JC6:66  sT#Y7  sU3;;sB3G-HI	J / 	:C&&6:66!!*eS9		: 	*eV4*eV4*eV4*eW5*eW5*e[9r   c                     G d dt                G d dt              } G d dt              }t        t        fd||t        g}	 dd	lm |j                  fd
       |D ]x  } |d      }| j                  t        |            5  | j                  t        |      d       | j                  t        d      5  t         |d             d d d        d d d        z y # t        $ r Y w xY w# 1 sw Y   #xY w# 1 sw Y   xY w)Nc                       e Zd Zy)AGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomStrNr   r   r   r   	CustomStrrF   _       r   rG   c                       e Zd Zy)CGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomBytesNr   r   r   r   CustomBytesrJ   `   rH   r   rK   c                       e Zd Zy)GGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomByteArrayNr   r   r   r   CustomByteArrayrM   a   rH   r   rN   c                 0     | j                               S r/   )decode)brG   s    r   <lambda>z@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>f   s    i
+ r   r   )arrayc                      d|       S )NBr   )rQ   rS   s    r   rR   z@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>p   s    uS!} r   s    3.14  r   zcould not converts   AAAAAAAAAAAAAAAA)strbytes	bytearray
memoryviewrS   appendImportErrorsubTesttyper!   r"   r&   r$   )r(   rK   rN   	factoriesfxrG   rS   s         @@r   test_non_numeric_input_typesz.GeneralFloatCases.test_non_numeric_input_types\   s     	#"&%&.i. +
		6# 45 	*A*Ad1g& *  q40++J8KL *!K.)** *	*  		* ** *s6   C  	2C;;C/C; 	C,+C,/C84C;;D	c                    | j                  t        t        d      dd       d       | j                  t        t        d      dd       d       | j                  t        t        d      dd       d       | j                  t        t        d      dd       d       | j                  t        t        d      dd       d       y )	Ns   12.3      gffffff@s   12.3 s   12.3 s   12.3As   12.34)r!   r"   rY   r'   s    r   test_float_memoryviewz'GeneralFloatCases.test_float_memoryviewy   s    z'21Q78#>z+6q;<cBz(3Aa893?z(3Aa893?z(3Aa893?r   c                       fd} |d        |d        |d        |d        |d        |d        |d        |d	        |d
        |d        |d        |d        |d       y )Nc                     j                  t        d| d      5 }t        |        d d d        j                  t	        j
                        d|        y # 1 sw Y   2xY w)Nzfloat())msgz#could not convert string to float: )r#   r$   r"   r!   rV   	exception)scmr(   s     r   checkz3GeneralFloatCases.test_error_message.<locals>.check   sW    "":!3E"F "aS.;<>@ s   AA#   ½u   123½z  123 456  s     123 456  r9    z	 
u   ٣١٤!z123 z123  245z123 245s   123 s   123r   )r(   rm   s   ` r   test_error_messagez$GeneralFloatCases.test_error_message   sr    	@ 	fimnb	c
g 	#$imljjr   
LC_NUMERICfr_FRde_DEc                    dd l }|j                         d   dk(  s| j                  d       | j                  t	        d      d       | j                  t	        d      d       | j                  t	        d      d	       | j                  t	        d
      d       | j                  t	        d      d       | j                  t	        d      d       | j                  t	        d      d       | j                  t	        d      d       | j                  t	        d      d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t	        d      d       | j                  t	        d      d       y ) Nr   decimal_point,zdecimal_point is not ","r   r   z+3.14  z-3.14  gQ	z.14  gQ?z3.        @z3.e3  g     p@z3.2e3  g      @z2.5e-1        ?z5e-1      ?z  3,14  z	  +3,14  z	  -3,14  r   r   r   z
  25.e-1        @z
  .25e-1  g?)locale
localeconvskipTestr!   r"   r#   r$   assertAlmostEqual)r(   r{   s     r   test_float_with_commaz'GeneralFloatCases.test_float_with_comma   sy   
 	  "?3s:MM45z*D1y)40y)51w-v,x&1y)62z*D1v,*eZ8*e[9*e[9*e[9*e^<*e^<|,c2u\2D9r   c           	      ,    G d dt               } G d dt              } G d dt              } G d dt              } G d	 d
t              }| j                  t         |             d       | j                  t         |             d       | j	                  t
              5  | j                  t         |d            d       d d d        | j                  t        t         |d             | j                  t         |d            d        G d d      }| j                  t        t        j                   |               G d d      }| j	                  t
              5  | j                  t         |             d       d d d        | j	                  t
              5  | j                  t        t         |                   t               d d d        | j	                  t
              5  | j                  t         |             d       d d d        | j	                  t
              5  | j                  t        t         |                   t               d d d         G d d      }| j                  t         |d            d       | j                  t        t         |ddz                G d d      }	| j                  t        t         |	              y # 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                       e Zd Zd Zy)4GeneralFloatCases.test_floatconversion.<locals>.Foo1c                      yN      E@r   r'   s    r   	__float__z>GeneralFloatCases.test_floatconversion.<locals>.Foo1.__float__       r   Nr   r   r   r   r   r   r   Foo1r          r   r   c                       e Zd Zd Zy)4GeneralFloatCases.test_floatconversion.<locals>.Foo2c                      yr   r   r'   s    r   r   z>GeneralFloatCases.test_floatconversion.<locals>.Foo2.__float__   r   r   Nr   r   r   r   Foo2r      r   r   r   c                       e Zd ZddZd Zy)4GeneralFloatCases.test_floatconversion.<locals>.Foo3c                 4    t         j                  | d|z        S )N   r"   __new__clsvalues     r   r   z<GeneralFloatCases.test_floatconversion.<locals>.Foo3.__new__   s    }}S!E'22r   c                     | S r/   r   r'   s    r   r   z>GeneralFloatCases.test_floatconversion.<locals>.Foo3.__float__   s    r   N)r+   )r   r   r   r   r   r   r   r   Foo3r      s    3r   r   c                       e Zd Zd Zy)4GeneralFloatCases.test_floatconversion.<locals>.Foo4c                      yN*   r   r'   s    r   r   z>GeneralFloatCases.test_floatconversion.<locals>.Foo4.__float__       r   Nr   r   r   r   Foo4r          r   r   c                       e Zd Zd Zy)6GeneralFloatCases.test_floatconversion.<locals>.FooStrc                 0    t        t        |             dz   S Nrc   )r"   rV   r'   s    r   r   z@GeneralFloatCases.test_floatconversion.<locals>.FooStr.__float__   s    SY'!++r   Nr   r   r   r   FooStrr      s    ,r   r   r      r   8g      "@c                       e Zd Zd Zy)4GeneralFloatCases.test_floatconversion.<locals>.Foo5c                      y)Nr9   r   r'   s    r   r   z>GeneralFloatCases.test_floatconversion.<locals>.Foo5.__float__   r   r   Nr   r   r   r   Foo5r      r   r   r   c                       e Zd Zd Zy)1GeneralFloatCases.test_floatconversion.<locals>.Fc                     t        d      S r   )r   r'   s    r   r   z;GeneralFloatCases.test_floatconversion.<locals>.F.__float__   s    )#..r   Nr   r   r   r   Fr      s    /r   r   c                       e Zd Zd Zd Zy)7GeneralFloatCases.test_floatconversion.<locals>.MyIndexc                     || _         y r/   r   r(   r   s     r   __init__z@GeneralFloatCases.test_floatconversion.<locals>.MyIndex.__init__   s	    "
r   c                     | j                   S r/   r   r'   s    r   	__index__zAGeneralFloatCases.test_floatconversion.<locals>.MyIndex.__index__   s    zz!r   N)r   r   r   r   r   r   r   r   MyIndexr      s    #"r   r   r   i  c                       e Zd Zd Zy)5GeneralFloatCases.test_floatconversion.<locals>.MyIntc                      yr   r   r'   s    r   __int__z=GeneralFloatCases.test_floatconversion.<locals>.MyInt.__int__   r   r   N)r   r   r   r   r   r   r   MyIntr      r   r   r   )objectr"   rV   r!   assertWarnsDeprecationWarningr#   r%   timesleepassertIsr]   r   OverflowError)
r(   r   r   r   r   r   r   r   r   r   s
             r   test_floatconversionz&GeneralFloatCases.test_floatconversion   s\   	6 		5 		5 		5 		,S 	, 	tv,tv,01 	3U48_c2	3)UDH5vc{+R0	 	 	)TZZ8	/ 	/ 01 	.U13Z-	.01 	3MM$uQSz*E2	301 	6]13/5	601 	CMM$}QS12MB	C	" 	" 	wr{+T2-40@A	 	 	)UEG4I	3 	3	. 	.	3 	3	6 	6	C 	Cs<   !"K !K$.K1)!K>'.L
K!$K.1K;>L
Lc                 r    | j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Nzkeyword argumentz3.14r`   )r&   r%   r"   r'   s    r   test_keyword_argsz#GeneralFloatCases.test_keyword_args   s/    ##I/AB 	FO	 	 	s   -6c                     G d dt               } |d      }| j                  t        |      |       | j                  t        |      d       | j	                  t
              5   |d       d d d         G d dt               } |dd	      }| j                  t        |      |       | j                  t        |      d       | j                  |j                  d        G d
 dt               } |dd	      }| j                  t        |      |       | j                  t        |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nc                       e Zd Zy)=GeneralFloatCases.test_keywords_in_subclass.<locals>.subclassNr   r   r   r   subclassr          r   r   rz   r   r   c                       e Zd ZddZy)GGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_initNc                     || _         y r/   newarg)r(   argr   s      r   r   zPGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s	    $r   r/   r   r   r   r   r   r   r   subclass_with_initr     s    %r   r      r   c                         e Zd Zd fd	Z xZS )FGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_newc                 6    t         |   | |      }||_        |S r/   )superr   r   )r   r   r   r(   	__class__s       r   r   zNGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_new.__new__  s    wsC0$r   r/   )r   r   r   r   __classcell__)r   s   @r   subclass_with_newr     s     r   r   )r"   r   r]   r!   r#   r%   r   )r(   r   ur   r   s        r   test_keywords_in_subclassz+GeneralFloatCases.test_keywords_in_subclass   s   	u 	SMd1gx(q3'y) 	qM		% 	% s1-d1g12q3'1%	 	
 c!,d1g01q3'1%'	 	s   #
EEc                     | j                  dj                                | j                  dj                                | j                  t        d      j                                | j                  t        d      j                                y )Ng?      ?r   r
   )assertFalse
is_integer
assertTruer"   r'   s    r   test_is_integerz!GeneralFloatCases.test_is_integer  sb    #))+,)*u0023u0023r   c                    dD ]%  \  }}| j                  |j                         |       ' t        d      D ]o  }t        j                         }|dt        j                  dd      z  z  }|j                         \  }}| j                  t        |      j                  |      |       q t        j                  }| j                   |dd       |t        d      j                                 | j                   |d	d
       |t        d      j                                 | j                   |dd
       |t        d      j                                 | j                   |dd       |t        d      j                                 | j                   |dd       |t        d      j                                 | j                   |dd       |t        d      j                                 | j                  t        t        d      j                         | j                  t        t        d      j                         | j                  t        t        d      j                         y )N))g      ?)      )g      )ir   )r+   )r   rc   )g      '@)   r   '  
   id   r   rc   r+      r   rz   ry   l   L33 l         @ g @lL33 g ig     hr
   -infr   )r!   as_integer_ratiorangerandomrandintr"   __truediv__	fractionsFractionr#   r   r$   )r(   r_   ratioindRs          r   test_floatasratioz#GeneralFloatCases.test_floatasratio  s    	:HAu Q//159	: u 	9AAv~~dC000A%%'DAqU1X11!4a8		9 1aE#J779:	<1aE#J779:	<1aE#J779:	<+-=>E#J779:	<,.>?E$K88:;	=5!E'N;;=>	@ 	-u)F)FG-v)G)GH*eEl&C&CDr   c           	      &   t         t          ddt        f}|D ]  }| j                  ||g       | j                  ||f       | j                  ||h       | j                  ||d i       | j                  |gj	                  |      dd|z         | j                  ||        |D ]  }| j                  |g|gk(  d|d|d       | j                  |f|fk(  d|d	|d
       | j                  |h|hk(  d|d|d       | j                  |d i|d ik(  d|d|d       |g|f|h|d if\  }}}}| j                  ||k(  d|z         | j                  ||k(  d|z         | j                  ||k(  d|z         | j                  ||k(  d|z          y )Nr+   r   rc   z[].count('%r') != 1[z] != [](z,) != (z,){z} != {}z : None} != {z : None}z[%r] not equal to itselfz(%r,) not equal to itselfz{%r} not equal to itselfz{%r : None} not equal to itself)INFNANassertInr!   countr   )r(   floatsr_   ltrk   r   s          r   test_float_containmentz(GeneralFloatCases.test_float_containment?  s   tS#s+ 	%AMM!aS!MM!aT"MM!aS!MM!aY'aSYYq\1.Ca.GHMM!V$	%  	KAOOQCA3J!Q(?@OOQDQDLa*CDOOQCA3J!Q(?@OOQJ1d)3DEq6J K qdQC!T2JAq!QOOAF$>$BCOOAF$?!$CDOOAF$>$BCOOAF$E$IJ	Kr   c                 X    | j                  |t        d|      f|t        d|      f       y )Nr   )r!   r   )r(   arQ   s      r   assertEqualAndEqualSignz)GeneralFloatCases.assertEqualAndEqualSignX  s,     	!Xc1-.HS!4D0EFr   c                    | j                  t        d      j                         t               | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d	      j                         d
       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j                  t        t        d      j                         | j                  t        t        d      j                         | j                  t        t        d      j                         y )Nry   r   r   rc         ?                  NݯbNݯr   r
   r   )assertIsInstancer"   	__floor__intr!   r#   r$   r   r'   s    r   test_float_floorz"GeneralFloatCases.test_float_floor^  sV   eCj224c:s--/3s--/3s--/3t..0"5t..0"5t..0"5x224h?y)335yA*eEl&<&<=-u)?)?@-v)@)@Ar   c                    | j                  t        d      j                         t               | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j	                  t        d      j                         d	       | j	                  t        d
      j                         d	       | j	                  t        d      j                         d       | j	                  t        d      j                         d       | j                  t        t        d      j                         | j                  t        t        d      j                         | j                  t        t        d      j                         y )Nry   rc   r   r  r   r  r   r  r  r  r  r  r   r
   r   )r  r"   __ceil__r  r!   r#   r$   r   r'   s    r   test_float_ceilz!GeneralFloatCases.test_float_ceill  sV   eCj113S9s,,.2s,,.2s,,.2t--/3t--/4t--/4x113X>y)224i@*eEl&;&;<-u)>)>?-v)?)?@r   c                 |   t         j                  }| j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       y )Nr  r   r+   0.+       0.++)operatormodr  )r(   r#  s     r   test_float_modz GeneralFloatCases.test_float_modz  s    ll$$Ss^S9$$S#%6<$$Ss^S9$$Sc]C8$$S%5v>$$Sc]C8$$St_d;$$S$%7A$$St_d;$$Sd^T:$$S%6=$$Sd^T:r   c           	         t         t        j                   fD ]I  }| j                  t         |t         t
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |dt
                           | j                  t         |t        t
                           | j                  t         |t
        t
                           | j                  t         |t
        t                            | j                  t         |t
        d                   | j                  t         |t
        d                   | j                  t         |t
        d                   | j                  t         |t
        d                   | j                  t         |t
        d                   | j                  t         |t
        d                   | j                  t         |t
        t                           | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dt               d       | j                   |dt              d       | j                   |dt               d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dt              d       | j                   |dt
              d       | j                   |t         d      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |t        d      d       | j                   |t
        d      d       | j                   |t         d      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |t        d      d       | j                   |t
        d      d       | j                  t         |dd            t               | j                  t         |dd            t               | j                  t         |dd            t               | j                  t         |dd            t               | j                  t         |dd            t               | j                  t         |dd            t               | j                   |dt               t               | j                   |dt               t               | j                   |dt               t               | j                   |dt               t               | j                   |t         t               d       | j                   |dt               d       | j                   |dt               d       | j                   |t        t               d       | j                   |dt              d       | j                   |dt              d       | j                   |dt              d       | j                   |dt              d       | j                   |t         t              t               | j                   |dt              t               | j                   |dt              t               | j                   |t        t              t               | j                   |t         d      d       | j                   |t         d      d       | j                   |t         d      d       | j                   |t         d      t                | j                   |t         d      t               | j                   |t         d      t               | j                   |t        d      t               | j                   |t        d      t               | j                   |t        d      t               | j                   |t        d      d       | j                   |t        d      d       | j                   |t        d      d       | j                   |dd      d	       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d
       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d	       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d
       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                  t         |dd            t               | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                  t         |dd            t               | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       L y )Ng       r  r  r   r+   ry          @r   rx   g      @}Ô%I}Ô%ITg     @g     Bg     Dg     @@g     B@g     D@)powr"  r   r   r  r  r#   ZeroDivisionErrorr  r!   r]   complex)r(   pow_ops     r   test_float_powz GeneralFloatCases.test_float_pow  s   
 8<<' u	CFOOE&#s"345OOE&s"345OOE&s"345OOE&s"345OOE&s"345OOE&c"234OOE&c"234OOE&c"234OOE&c"234OOE&c"234 OOE&sd"345OOE&d"345OOE&d"345OOE&d"345OOE&c"234OOE&c"234OOE&c"234OOE&c"234 /tD/dC /tD/tD/dC/dC ((c):DA((S)93? ((c):C@((c):C@((S)93?((S)93? ((sd);SA((c):C@ ((cT):C@((T):C@((T):C@((T):C@((T):C@((S)93?((S)93?((S)93?((S)93?((S)93?((S)93? ((c):C@((c):C@((c):C@((c):C@((c):C@((S)93?((S)93?((S)93?((S)93?((S)93?((S)93?((d);SA((d);SA((d);SA((d);SA((d);SA((T):C@((T):C@((T):C@((T):C@((T):C@((T):C@ T&t"45w?T&s"34g>T&t"45w?T&s"34g>T&t"45w?T&s"34g> ((sd);SA((sd);SA((cT):C@((cT):C@ ((sd);SA((sd);SA((cT):C@((cT):C@ ((c):C@((c):C@((S)93?((S)93? ((c):C@((c):C@((S)93?((S)93? ((d);TB ((d);SA((d);SA ((c):SDA ((c):C@((c):C@ ((S)93?((S)93?((S)93? ((T):C@((T):C@((T):C@ ((d);TB((d);TB((d);SA((c):C@((c):DA((c):C@((d);SA((d);TB((d);SA((c):C@((c):DA((c):C@((T):DA((T):C@((T):C@((S)93?((S)93?((S)93? ((V)<cB((U);SA((f)=sC((e)<cB ((g)>DT&w"78'B((g)>E((W)=sC((W)=sC((W)=sC((f)=sCT&v"67A((f)=tD((V)<cB((V)<cB((V)<cBku	Cr   c                 >   t        dd      D ]/  }| j                  t        t        |            t        |             1 | j                  t        t        t        j
                  j                              t        t        t        j
                  j                                     | j                  t        t        d            t        j                  j                         | j                  t        t        d            t        j                  j                          y )Ni   r
   r   )
r   r!   hashr"   sys
float_infomaxr  	hash_infor
   r(   r`   s     r   	test_hashzGeneralFloatCases.test_hashW  s    sB 	6AT%(^T!W5	6eCNN$6$678c#.."4"456	8eEl+S]]->->?eFm,s}}/@/@.@Ar   c                    t        d      }| j                  t        |      t        j	                  |              G d d      } G d dt         |      } |d      }| j                  t        |      t        j	                  |             y )Nr   c                       e Zd Zd Zy)*GeneralFloatCases.test_hash_nan.<locals>.Hc                      yr   r   r'   s    r   __hash__z3GeneralFloatCases.test_hash_nan.<locals>.H.__hash__c  r   r   N)r   r   r   r;  r   r   r   Hr9  b  r   r   r<  c                       e Zd Zy)*GeneralFloatCases.test_hash_nan.<locals>.FNr   r   r   r   r   r>  e  r   r   r   )r"   r!   r0  r   r;  )r(   r   r<  r   s       r   test_hash_nanzGeneralFloatCases.test_hash_nan_  sf    eefooe&<=	 		q 	%efooe&<=r   N)r   r   r   r)   r,   rC   ra   re   rp   r   run_with_localer   r   r   r   r   r   r
  r  r  r  requires_IEEE_754r$  r-  r6  r?  r   r   r   r   r   #   s    O>':**:@6 W\7G<: =:4A5F&64EBK2GBA ; ;& yC yCPB	>r   r   __getformat__zrequires __getformat__c                       e Zd Zd Zy)FormatFunctionsTestCasec                 4   | j                  t        j                  d      g d       | j                  t        j                  d      g d       | j                  t        t        j                  d       | j                  t
        t        j                  d       y )Ndouble)unknownzIEEE, big-endianzIEEE, little-endianr"   chickenrc   )r  r"   rB  r#   r$   r%   r'   s    r   test_getformatz&FormatFunctionsTestCase.test_getformatm  sl    e))(3L	Ne))'2L	N*e&9&99E)U%8%8!<r   N)r   r   r   rI  r   r   r   rD  rD  k  s    =r   rD  s         s         s     s     c                       e Zd Zej                  d        Zej                  d        Zej                   ej                  e	du d      d               Z
y)IEEEFormatTestCasec                 |    dt         fdt        fdt        fdt        ffD ]  \  }}t	        j
                  ||        y )Nz>dz<d)BE_DOUBLE_INFBE_DOUBLE_NANLE_DOUBLE_INFLE_DOUBLE_NANstructunpackr(   fmtdatas      r   test_double_specials_do_unpackz1IEEEFormatTestCase.test_double_specials_do_unpack  sG    ////1 	%IC MM#t$		%r   c                 |    dt         fdt        fdt        fdt        ffD ]  \  }}t	        j
                  ||        y )Nz>f<f)BE_FLOAT_INFBE_FLOAT_NANLE_FLOAT_INFLE_FLOAT_NANrQ  rR  rS  s      r   test_float_specials_do_unpackz0IEEEFormatTestCase.test_float_specials_do_unpack  sG    ....0 	%IC MM#t$		%r   Nzneeds _testcapic                    t         j                  }| j                  t        j                  dd      t        j                  d|             | j                  t        j                  dd      t        j                  d|              y )NrX  gnGgn)	_testcapiFLT_MAXr!   rQ  pack)r(   r`  s     r   test_serialized_float_roundingz1IEEEFormatTestCase.test_serialized_float_rounding  s]     ##T=96;;tW;UVT>:FKKwh<WXr   )r   r   r   r   rA  rV  r]  unittestskipIfr_  rb  r   r   r   rK  rK    sk    % % % % X__Y$&(9:Y ; Yr   rK  c                   B    e Zd Zd Zej
                  d        Zd Zd Zy)FormatTestCasec                 f   | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       d	}| j                  t        |d      t        |             | j                  t        |d
      t        |             | j                  t        |d      t        |             | j                  t        |d      t        |             | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        t        dd       dD ]  }| j                  t        t        d|       | j                  t        t        d|       | j                  t        t        d|       | j                  t        t        d|       | j                  t        t        d|       | j                  t        t        d|       | j                  t        t        d|        | j                  t        t
        d      d       | j                  t        t
        d      d        | j                  t        t        d      d!       | j                  t        t        d      d"       y )#Nr+   r_   z0.000000r9   0.0g{Gz?0.01gg%I$I,@->2r   z1.000000r  z	-1.000000z fz	 1.000000z+fz	+1.000000%z-100.000000%rw   rk   sbcdoxXr(  r'  r!  r  r   r   r  r
   r  )r!   formatrV   r#   r$   r  r  )r(   r`   format_specs      r   test_formatzFormatTestCase.test_format  s    	S):6 	R%0b)62c*F3 2A/3Q03Q03Q0S):6c*K8d+[9d+[9d+[9d+[9 	c*N; 	*fc37 % 	HKj&#{Cj&#{Cj&$Dj&%Ej&&+Fj&&+Fj&';G	H 	S)51S)51S)51S)51r   c                 (   t        t        d      5 }|D ]  }|j                  d      r|j                         }|s(t	        t
        j                  |j                  d            \  }}|j                         \  }}t        |      }| j                  ||z  |       | j                  || z  d|z          |dk7  s|dd  }| j                  t        ||      |       | j                  t        | |      d|z           	 d d d        y # 1 sw Y   y xY w)Nutf-8encodingz--z->rk  z%rrc   )
openformat_testfile
startswithstripmaprV   splitr"   r!   rp  )	r(   testfilelinelhsrhsrT  r   r_   fmt2s	            r   test_format_testfilez#FormatTestCase.test_format_testfile  s    /G4 	B  B??4(zz|syy$**T*:;S99;S#J  q#.  r395$;qr7D$$VAt_c:$$VQB%5sSyAB	B 	B 	Bs   B(D;ADDc                     | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       y )Nw/^@z.4z123.5g
ףp=J@z	1.235e+03g@z	1.235e+04r!   rp  r'   s    r   test_issue5864zFormatTestCase.test_issue5864  sG    .8.<.<r   c                    | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd	      d
       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d
       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd	      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       y )Ng     ^@00z123.0g(\^@00fz
123.34000000ez1.233400e+0200gz123.34z00.10fz123.3400000000z00.10ez1.2334000000e+02z00.10g01fg     ^z-123.0g(\^z-123.340000z-1.233400e+02z-123.34z-123.3400000000z-1.2334000000e+02r  r'   s    r   test_issue35560zFormatTestCase.test_issue35560  sw   t,g6.=.?.913CD13EF18<.=-x8/?/A/;24EF24EF24GH2I>r   N)	r   r   r   rr  r   rA  r  r  r  r   r   r   rf  rf    s.    12f B B&=
?r   rf  c                   Z    e Zd Zd Z ej
                   eedd      dk(  d      d        Zy)ReprTestCasec           
         t        t        j                  j                  t        j                  j	                  t
              d   d      d      5 }|D ]U  }|j                         }|r|j                  d      r't        |      }| j                  |t        t        |                   W 	 d d d        y # 1 sw Y   y xY w)Nr   zfloating_points.txtrt  ru  #)rw  ospathjoinr|  __file__rz  ry  rA   r!   repr)r(   floats_filer~  vs       r   	test_reprzReprTestCase.test_repr   s    "'',,rww}}X6q9')3:< 	3?J# 3zz|ts3J  DaM23	3 	3 	3s   AB55B>float_repr_styler9   short.applies only when using short float repr stylec           	         g d}|D ]  }d|z   }| j                  |t        t        |                   | j                  |t        t        |                   | j                  t        t        |            t        t        |                   | j                  t        t        |            t        t        |                    y )N)rh  1.0ri  z0.02z0.03z0.04z0.05z
1.23456789z10.0z100.0z1000000000000000.0z9999999999999990.0z1e+16z1e+17z0.001z0.001001z0.00010000000000001z0.0001z9.999999999999e-05z1e-05z8.72293771110361e+25z7.47005307342313e+26z2.86438000439698e+28z8.89142905246179e+28z3.08578087079232e+35rk  )r!   r  r"   rV   )r(   test_stringsrk   negss       r   test_short_reprzReprTestCase.test_short_repr
  s     D  	BAq5DQU1X/T4d#45T%(^Sq];T%+.E$K0@A	Br   N)	r   r   r   r  rc  
skipUnlessgetattrr1  r  r   r   r   r  r    s@    3 X&8"=HIK0BK0Br   r  c                       e Zd Zd Zd Zd Zd Zd Z ej                   e
edd      dk(  d	      d
        Z ej                   e
edd      dk(  d	      d        Zd Zd Zy)RoundTestCasec                    | j                  t        t        t               | j                  t        t        t                | j                  t        t        t
               | j                  t        t        t        d       | j                  t        t        t         d       | j                  t        t        t
        d       | j                  t        t        dd       y )Nr+   r   zceci n'est pas un integerr   y              ?)r#   r   roundr  r$   r  r%   r'   s    r   test_inf_nanzRoundTestCase.test_inf_nanA  s    -4-5*eS1)UC5)USD#6)UC1LM)UD"5r   c                     | j                  t        t        d      t               | j                  t        t         d      t                | j                  t	        j
                  t        t        d                   y )Nr   )r!   r  r  r   mathr   r  r'   s    r   test_inf_nan_ndigitsz"RoundTestCase.test_inf_nan_ndigitsJ  sM    sA,tQ#.

5a=12r   c                    ddddddddz  fD ]r  }| j                  t        d	|      d	       | j                  t        d
|      d
       | j                  t        d|      d       | j                  t        d|      d       t | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       y )NiD  iE  i  il        l        r   r   r  w/^u <7~      gP.5_i,  i3  go!	i4  i5  gS    i;  gi    r!   r  r(   r   s     r   test_large_nzRoundTestCase.test_large_nO  s    sC%3? 	7AU7A.8U8Q/:U5!_e4U61-v6		7
 	uc*E2uc*E2w,g6uc*E2x-v6r   c                    ddddddddz   fD ]r  }| j                  t        d	|      d
       | j                  t        d|      d       | j                  t        d|      d
       | j                  t        d|      d
       t y )Niipi  i   l    r   r   r  r+   r  r   r  r  r  r  s     r   test_small_nzRoundTestCase.test_small_n[  s    dGVX3wG 	4AU7A.4U8Q/6U5!_c2U61-s3		4r   c                 t    | j                  t        t        dd       | j                  t        t        dd       y )Ng3t<{r  gv;w0B)r#   r   r  r'   s    r   test_overflowzRoundTestCase.test_overflowb  s*    ->-$?r   r  r9   r  r  c                 4   | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d	       | j                  t        d
d      d	       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       y )Ng      Crc   gBr   g      9@r  g      4@g     A@g      D@g     F@g     K@g      N@g     @P@g     R@g      T@g     @U@g     W@g      Y@r  r'   s    r   test_previous_round_bugsz&RoundTestCase.test_previous_round_bugsf  s     	0!4+	-/3)	+ 	tR$/tR$/tR$/tR$/tR$/tR$/tR$/tR%0r   c           	         t        d      D ]  }|dz  }| j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d	            t	        |d
              t        ddd      D ]  }|dz  }| j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d	            t	        |d
              t        d      D ]  }t        j
                         }| j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d            t	        |d             | j                  t        t        |d	            t	        |d
              y )Ni  g     @@z.0fr   z.1frc   z.2fr   z.3fr   r   i  r   )r   r!   r"   rp  r  r   )r(   r   r`   s      r   test_matches_float_formatz'RoundTestCase.test_matches_float_formatx  s    s 	CA%AU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkB	C q$# 	CA%AU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkB	C s 	CAAU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkBU6!U#34eAqkB	Cr   c                      fd}dD ]  }d|dd  z   }d|dd  z   } ||t         d        ||t          d        ||t        d        ||t         d        ||t         d	        ||t          d        ||t        d
        ||t         d
        ||t         d        ||t          d        ||t        d        ||t         d        y )Nc                 v    j                  | |z  ||        | dd  } j                  t        ||       ||        y r   r  )rT  r   expectedr(   s      r   testz0RoundTestCase.test_format_specials.<locals>.test  s=    S5[(C8ab'CVE3/3?r   )z%ez%fz%gz%.0ez%.6fz%.20gz%#ez%#fz%#gz%#.20ez%#.15fz%#.3gz%+rc   z% r
   r   r   +inf+nanz infz nan)r  r  )r(   r  rT  pfmtsfmts   `    r   test_format_specialsz"RoundTestCase.test_format_specials  s    	@F 	%C#ab'>D#ab'>Dc5!sdF#c5!sdE" sF#tV$sF#tV$ sF#tV$sF#tV$'	%r   c                 D   t        d      t        dd       t        dd       fD ]*  }| j                  |d       | j                  |t               , t        d      t        dd       t        dd       fD ]*  }| j                  |d       | j                  |t               , y )NgGz?)ndigitsrc   g{Gz?r   )r  r!   r  r  r5  s     r   test_None_ndigitszRoundTestCase.test_None_ndigits  s    teD$/tT1JJ 	*AQ"!!!S)	* teD$/tT1JJ 	*AQ"!!!S)	*r   N)r   r   r   r  r  r  r  r  rc  r  r  r1  r  r  r  r  r   r   r   r  r  >  s    63

74@ X&8"=HIK1K1  X&8"=HIKCKC.%<*r   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)
InfNanTestc                 	   | j                  t        t        d                   | j                  t        t        d                   | j                  t        t        d                   | j                  t        t        d                   | j                  t        t        d                   | j                  t        t        d                   | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d	            d       | j                  t	        t        d
            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       y )Nr
   r  r   infinityz	+infinity	-infinityr  +Infz-iNFInfinityz	+iNfInItYz	-INFINITYinfoz+infoz-infoinz+inz-ininfinitz+Infinz-INFI	infinitysz++Infz-+infz
+-infinityz
--Infinity)r   r   r"   r!   r  rV   r#   r$   r'   s    r   test_inf_from_strzInfNanTest.test_inf_from_str  sJ   eEl+,eFm,-eFm,-eJ/01eK012eK012eEl+U3eFm,e4eFm,f5eJ/0%8eK0159eK016:eEl+U3eFm,e4eFm,f5eJ/0%8eK0159eK016:U5\*E2U6]+U3U6]+V4U:./7U;/0%8U;/0&9*eV4*eW5*eW5*eT2*eU3*eU3*eY7*eX6*eW5*e[9*eW5*eW5*e\:*e\:r   c                     | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       y )Ng      r
   g      r   r!   r  rV   r'   s    r   test_inf_as_strzInfNanTest.test_inf_as_str  sV    m,e4n-v6]+U3^,f5r   c                 z   | j                  t        t        d                   | j                  t        t        d                   | j                  t        t        d                   | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t	        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d	       | j                  t        t        d
       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       y )Nr   r  -nanr  z+NAn-NaNnanaz+nanaz-nananaz+naz-naz++nanz-+NAN+-NaNz--nAn)r   r   r"   r!   r  rV   r#   r$   r'   s    r   test_nan_from_strzInfNanTest.test_nan_from_str  s   eEl+,eFm,-eFm,-eEl+U3eFm,e4eFm,e4eEl+U3eFm,e4eFm,e4U5\*E2U6]+U3U6]+U3*eV4*eW5*eW5*eT2*eU3*eU3*eW5*eW5*eW5*eW5r   c                     | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       y )Ng      r   g      g      g      r  r'   s    r   test_nan_as_strzInfNanTest.test_nan_as_str  sZ    /0%80159./7/0%8r   c                     | j                  t        dt        d            d       | j                  t        dt        d            d       y )Nr   r
   r   r  r!   r   r"   r'   s    r   test_inf_signszInfNanTest.test_inf_signs  s8    #uU|4c:#uV}5t<r   c                     | j                  t        dt        d            d       | j                  t        dt        d            d       y )Nr   r   r  r  r  r'   s    r   test_nan_signszInfNanTest.test_nan_signs  s8    #uU|4c:#uV}5t<r   N)	r   r   r   r  r  r  r  r  r  r   r   r   r  r    s!    +;Z66:9==r   r  c                   v    e Zd Z ed      Z ed      Z ed      Z ed      Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)HexFloatTestCasez0x.fffffffffffff8p+1024z	0x1p-1022z0x0.0000000000001p-1022z0x0.0000000000001p0c                     t        |      st        |      rt        |      t        |      k(  r%y ||k(  r|dk7  st        d|      t        d|      k(  ry | j                  |d|       y )Nr+   r   z not identical to )r   r   fail)r(   r`   ys      r   	identicalzHexFloatTestCase.identical%  sZ     8uQxQx58#!VcXc1%5#q9I%I		a34r   c           	      T   | j                  | j                  t        dd             | j                  | j                  t        dd             | j                  | j                  t        dd             | j                  | j
                  dt        dd      t        dd      z
  z         y )Nr   iiir&  i  i  )r  MINr	   TINYEPSMAXr'   s    r   	test_endszHexFloatTestCase.test_ends/  su    txxsE!23tyy%U"34txxsC1txxU3%5c3%G!HIr   c                     g d}|D ]&  }	 t        |      }| j                  d|d|d       ( y # t        $ r Y 5w xY w)N)3infiz-Infinitz++infz-+Infz--nanr  snanNaNsnnaannfnfinityinityiinity0xnanr9   ro   zx1.0p0z0xX1.0p0z	+ 0x1.0p0z	- 0x1.0p0z0 x1.0p0z0x 1.0p0z	0x1 2.0p0z	+0x1 .0p0z0x1. 0p0z
-0x1.0 1p0z	-0x1.0 p0z
+0x1.0p +0z	0x1.0p -0z0x1.0p 0z
+0x1.0p+ 0z
-0x1.0p- 0z
++0x1.0p-0z	--0x1.0p0z
+-0x1.0p+0z	-+0x1.0p0z	0x1.0p++0z
+0x1.0p+-0z
-0x1.0p-+0z	0x1.0p--0z0x1.0.p0z0x.p0z0x1,p00x1pau   0x1p０u   ０x1p0u   0x１p0u	   0x1.０p0z0x1p0 
 0x2p0z0x1p0  0x1p0zExpected float.fromhex(z) to raise ValueError; got z instead)fromHexr  r$   )r(   invalid_inputsr`   results       r   test_invalid_inputsz$HexFloatTestCase.test_invalid_inputs5  sU    4j   	:A:  		./9 :	:  s   1	==c                     dt         fdt          fdt        fdddg}g d}|D ]6  \  }}|D ],  }|D ]%  }t        ||z   |z         }| j                  ||       ' . 8 y )Nr
   z	-Infinityr   )r  r   )z-0x.2g      )z-0.0r   )r9   ro   	
z
 	)r  r  r  r  )r(   value_pairs
whitespaceinpr  leadtrailgots           r   test_whitespacez HexFloatTestCase.test_whitespaceu  s    CL3$CL	
 ) 	2MC" 2' 2E!$*u"45CNN3122	2r   c                  ;   | j                   }| j                  }| j                  }| j                  }| j	                  t        d      t               | j	                  t        d      t               | j	                  t        d      t                | j	                  t        d      t               | j	                  t        d      t               | j	                  t        d      t               | j	                  t        d      t                | j	                  t        d      t                | j	                  t        d	      t               | j	                  t        d
      t               | j	                  t        d      t               | j	                  t        d      t               | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d       d       | j	                  t        d!      d       | j	                  t        d"      d       | j	                  t        d#      d       | j	                  t        d$      d       | j	                  t        d%      d       | j	                  t        d&      d       | j	                  t        d'      d       | j	                  t        d(      d       | j	                  t        d)      d       | j	                  t        d*      d+       | j	                  t        d,      d+       | j	                  t        d-      d+       | j	                  t        d.      d+       | j	                  t        d/      d0       | j	                  t        d1      d0       | j	                  t        d2      d0       | j	                  t        d3      d0       | j	                  t        d4      d0       | j	                  t        d5      d0       | j	                  t        d6      d0       | j	                  t        d7      d0       t        d8      }| j	                  t        d9      |       | j	                  t        d:      |       | j	                  t        d;      |       | j	                  t        d<      |       | j	                  t        d=      |       | j	                  t        d>      |       | j	                  t        d?      |       | j	                  t        d@      |       | j	                  t        dA      |       | j	                  t        dB      |       | j	                  t        d8      |       | j	                  t        dC      |       | j	                  t        dD      |       | j	                  t        dE      |       | j	                  t        dF      |       | j	                  t        dG      |       | j	                  t        dH      |       | j	                  t        dI      |       | j	                  t        dJ      |       | j	                  t        dK      |       | j	                  t        dL      |       | j	                  t        dM      |       | j	                  t        dN      |       | j	                  t        dO      |       | j	                  t        dP      |       | j	                  t        dQ      |       | j	                  t        dR      |       | j	                  t        dS      |       | j	                  t        dT      |       | j	                  t        dU      |       | j	                  t        dV      |       | j	                  t        dW      |       | j                  t        t
        dX       | j                  t        t
        dY       | j                  t        t
        dZ       | j                  t        t
        d[       | j                  t        t
        d\       | j                  t        t
        d]       | j                  t        t
        d^       | j                  t        t
        d_       | j                  t        t
        d`       | j                  t        t
        da       | j                  t        t
        db       | j                  t        t
        dc       | j                  t        t
        dd       | j                  t        t
        de       | j                  t        t
        df       | j                  t        t
        dg       | j                  t        t
        dh       | j                  t        t
        di       | j                  t        t
        dj       | j	                  t        dk      |       | j	                  t        dl      |        | j	                  t        dm      |       | j	                  t        dn      do       | j	                  t        dp      do       | j	                  t        dq      dr       | j	                  t        ds      do       | j	                  t        dt      dr       | j	                  t        du      do       | j	                  t        dv      do       | j	                  t        dw      dr       | j	                  t        dx      dr       | j	                  t        dy      do       | j	                  t        dz      dr       | j	                  t        d{      dr       | j	                  t        d|      dr       | j	                  t        d}      do       | j	                  t        d~      dr       | j	                  t        d      do       | j	                  t        d      do       | j	                  t        d      dr       | j	                  t        d      dr       | j	                  t        d      do       | j	                  t        d      dr       | j	                  t        d      dr       | j	                  t        d      |       | j	                  t        d      |        | j	                  t        d      |       | j	                  t        d      do       | j	                  t        d      do       | j	                  t        d      |       | j	                  t        d      |       | j	                  t        d      |       | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      dr       | j	                  t        d      dr       | j	                  t        d      |        | j	                  t        d      |        | j	                  t        d      |        | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      d|z         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      |d|z  z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      ||z
         | j	                  t        d      |       | j	                  t        d      |       | j	                  t        d«      |       | j	                  t        dë      |       | j	                  t        dī      |       | j	                  t        dū      |       | j	                  t        dƫ      |       | j	                  t        dǫ      |       | j	                  t        dȫ      |       | j	                  t        dɫ      ||z          | j	                  t        dʫ      ||z          | j	                  t        d˫      ||z          | j	                  t        d̫      ||z          | j	                  t        dͫ      ||z          | j	                  t        dΫ      ||z          | j	                  t        dϫ      ||z          | j	                  t        dЫ      |d|z  z          | j	                  t        dѫ      d|z
         | j	                  t        dҫ      d|z
         | j	                  t        dӫ      d|z
         | j	                  t        dԫ      d|z
         | j	                  t        dի      d|z
         | j	                  t        d֫      d|dz  z
         | j	                  t        d׫      d|dz  z
         | j	                  t        dث      d|dz  z
         | j	                  t        d٫      d|dz  z
         | j	                  t        dګ      d|dz  z
         | j	                  t        d۫      d|dz  z
         | j	                  t        dܫ      d|dz  z
         | j	                  t        dݫ      d       | j	                  t        dޫ      d       | j	                  t        d߫      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      d|z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d       dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      dd|z  z          | j	                  t        d      do       | j	                  t        d      do       | j	                  t        d	      |       | j	                  t        d
      do       | j	                  t        d      do       | j	                  t        d      |       | j	                  t        d      do       | j	                  t        d      |       | j	                  t        d      do       | j	                  t        d      do       | j	                  t        d      dr       | j	                  t        d      do       y (  Nr
   r  z-INFiNfr  z	+INFINITYr  z	-iNFiNitYr   z+NaNr  z-nAN1r   z+1z1.r  z1.0p001z01.0x1z0x1.z0x1.0z+0x1.00x1p00X1p00X1P00x1P0z0x1.p0z0x1.0p0z0x.1p4z0x.1p04z0x.1p004z0x1p+0z0x1P-0z+0x1p00x01p00x1p00z 0x1p0 z
 0x1p0z0x1p0 	0xap0g      $@0xAp00xaP00xAP00xbep0g     g@0xBep00xbEp0z0XBE0P-40xBEp0z0xB.Ep4z0x.BEp8z	0x.0BEp12z0x1.921fb54442d18p1z0x.006487ed5110b46p11z0x.00c90fdaa22168cp10z0x.01921fb54442d18p9z0x.03243f6a8885a3p8z0x.06487ed5110b46p7z0x.0c90fdaa22168cp6z0x.1921fb54442d18p5z0x.3243f6a8885a3p4z0x.6487ed5110b46p3z0x.c90fdaa22168cp2z0x3.243f6a8885a3p0z0x6.487ed5110b46p-1z0xc.90fdaa22168cp-2z0x19.21fb54442d18p-3z0x32.43f6a8885a3p-4z0x64.87ed5110b46p-5z0xc9.0fdaa22168cp-6z0x192.1fb54442d18p-7z0x324.3f6a8885a3p-8z0x648.7ed5110b46p-9z0xc90.fdaa22168cp-10z0x1921.fb54442d18p-11z0x1921fb54442d1.8p-47z0x3243f6a8885a3p-48z0x6487ed5110b46p-49z0xc90fdaa22168cp-50z0x1921fb54442d18p-51z0x3243f6a8885a30p-52z0x6487ed5110b460p-53z0xc90fdaa22168c0p-54z0x1921fb54442d180p-55z	-0x1p1024z	0x1p+1025z	+0X1p1030z
-0x1p+11000X1p123456789123456789z+0X.8p+1025z+0x0.8p1025z-0x0.4p1026z	0X2p+1023z	0x2.p1023z-0x2.0p+1023z
+0X4p+1022z0x1.ffffffffffffffp+1023z-0X1.fffffffffffff9p1023z0X1.fffffffffffff8p1023z+0x3.fffffffffffffp1022z0x3fffffffffffffp+9700x10000000000000000p960z-0Xffffffffffffffffp960z+0x1.fffffffffffffp+1023z-0X1.fffffffffffff7p1023z$0X1.fffffffffffff7fffffffffffffp10230x0p0r+   0x0p1000z	-0x0p1023r   0X0p1024z	-0x0p10250X0p20000x0p123456789123456789z-0X0p-0z
-0X0p-1000z	0x0p-1023z
-0X0p-1024z
-0x0p-1025z
-0x0p-1072z	0X0p-1073z
-0x0p-1074z	0x0p-1075z	0X0p-1076z
-0X0p-2000z-0x0p-123456789123456789z	0X1p-1075z
-0X1p-1075z-0x1p-123456789123456789z0x1.00000000000000001p-1075z-0x1.1p-1075z0x1.fffffffffffffffffp-1075z	0x1p-1076z	0X2p-1076z	0X3p-1076z	0x4p-1076z	0X5p-1076z	0X6p-1076r   z	0x7p-1076z	0X8p-1076z	0X9p-1076z	0xap-1076z	0Xbp-1076r   z	0xcp-1076z	0Xdp-1076z	0Xep-1076rd   z	0xfp-1076z
0x10p-1076z
-0x1p-1076z
-0X2p-1076z
-0x3p-1076z
-0X4p-1076z
-0x5p-1076z
-0x6p-1076r  z
-0X7p-1076z
-0X8p-1076z
-0X9p-1076z
-0Xap-1076z
-0xbp-1076z
-0xcp-1076z
-0Xdp-1076z
-0xep-1076z
-0Xfp-1076z-0X10p-1076z0x0.ffffffffffffd6p-1022z0x0.ffffffffffffd8p-1022z0x0.ffffffffffffdap-1022z0x0.ffffffffffffdcp-1022z0x0.ffffffffffffdep-1022z0x0.ffffffffffffe0p-1022z0x0.ffffffffffffe2p-1022z0x0.ffffffffffffe4p-1022z0x0.ffffffffffffe6p-1022z0x0.ffffffffffffe8p-1022z0x0.ffffffffffffeap-1022z0x0.ffffffffffffecp-1022z0x0.ffffffffffffeep-1022z0x0.fffffffffffff0p-1022z0x0.fffffffffffff2p-1022z0x0.fffffffffffff4p-1022z0x0.fffffffffffff6p-1022z0x0.fffffffffffff8p-1022z0x0.fffffffffffffap-1022z0x0.fffffffffffffcp-1022z0x0.fffffffffffffep-1022z0x1.00000000000000p-1022z0x1.00000000000002p-1022z0x1.00000000000004p-1022z0x1.00000000000006p-1022z0x1.00000000000008p-1022z0x1.0000000000000ap-1022z0x1.0000000000000cp-1022z0x1.0000000000000ep-1022z0x1.00000000000010p-1022z0x1.00000000000012p-1022z0x1.00000000000014p-1022z0x1.00000000000016p-1022z0x1.00000000000018p-1022z0x0.fffffffffffff0p0z0x0.fffffffffffff1p0z0X0.fffffffffffff2p0z0x0.fffffffffffff3p0z0X0.fffffffffffff4p0z0X0.fffffffffffff5p0z0X0.fffffffffffff6p0z0x0.fffffffffffff7p0z0x0.fffffffffffff8p0z0X0.fffffffffffff9p0z0X0.fffffffffffffap0z0x0.fffffffffffffbp0z0X0.fffffffffffffcp0z0x0.fffffffffffffdp0z0X0.fffffffffffffep0z0x0.ffffffffffffffp0z0X1.00000000000000p0z0X1.00000000000001p0z0x1.00000000000002p0z0X1.00000000000003p0z0x1.00000000000004p0z0X1.00000000000005p0z0X1.00000000000006p0z0X1.00000000000007p0z(0x1.00000000000007ffffffffffffffffffffp0z0x1.00000000000008p0z&0x1.00000000000008000000000000000001p0rc   z0X1.00000000000009p0z0x1.0000000000000ap0z0x1.0000000000000bp0z0X1.0000000000000cp0z0x1.0000000000000dp0z0x1.0000000000000ep0z0X1.0000000000000fp0z0x1.00000000000010p0z0X1.00000000000011p0z0x1.00000000000012p0z0X1.00000000000013p0z0X1.00000000000014p0z0x1.00000000000015p0z0x1.00000000000016p0z0X1.00000000000017p0z(0x1.00000000000017ffffffffffffffffffffp0z0x1.00000000000018p0z&0X1.00000000000018000000000000000001p0z0x1.00000000000019p0z0X1.0000000000001ap0z0X1.0000000000001bp0z0x1.0000000000001cp0z0x1.0000000000001dp0z0x1.0000000000001ep0z0X1.0000000000001fp0z0x1.00000000000020p0z
0x.8p-1074z0x.80p-1074z0x.81p-1074z	0x8p-1078z0x8.0p-1078z0x8.1p-1078z
0x80p-1082z
0x81p-1082z.8p-1074z8p-1078z	-.8p-1074z+8p-1078)
r  r  r  r  r  r  r  r  r#   r   )r(   r  r  r  r  pis         r   test_from_hexzHexFloatTestCase.test_from_hex  s   hhhhyyhh 	wu~s+wv,wv-wu~s+wz*C0w{+S1w{+cT2w{+cT2 	wu~s+wv,wv,wv, 	ws|S)wt}c*wt}c*wu~s+ww'-wt}c*wu~s+wu~s+wv,ww'-wx(#.ww'-ww'-ww'-ww'-wx(#.wy)3/wx(#.wy)3/wz*C0wx(#.wx(#.wx(#.wx(#.wx(#.wy)3/wz*C0wz*C0ww'.ww'.ww'.ww'.wx(%0wx(%0wx(%0wz*E2wx(%0wy)51wy)51w{+U3 *+w67<w67<w56;w45r:w45r:w45r:w45r:w34b9w34b9w34b9w45r:w34b9w45r:w45r:w56;w45r:w45r:w45r:w56;w45r:w45r:w56;w67<w67<w45r:w45r:w45r:w56;w56;w56;w56;w67< 	-+>-+>-+>-,?-2JK--@--@--@-+>-+>-.A-,?-2LM-2LM-2KL-2KL-2IJ-2KL-2KL 	w9:C@w9:SDAwEFL 	ww'-wz*C0w{+T2wz*C0w{+T2wz*C0w78#>wy)40w|,d3w{+S1w|,d3w|,d3w|,d3w{+S1w|,d3w{+S1w{+S1w|,d3w9:DA 	w{+S1w|,d3w9:DAw<=tDw~.6w<=tD 	w{+S1w{+S1w{+T2w{+T2w{+T2w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w{+QtV4w|,af5w|,d3w|,d3w|,te4w|,te4w|,te4w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w|,bg6w}-r$w7 	w9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:C$JGw9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:C@w9:C@w9:C@w9:C@w9:C@w9:C@w9:C@w9:C@w9:C@w9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:CHEw9:C$JG 	w56C@w56C@w56C@w56C@w56C@w56CE	Bw56CE	Bw56CE	Bw56CE	Bw56CE	Bw56CE	Bw56CE	Bw56<w56<w56<w56<w56<w56<w56<w56<w56<w56<w56<w56<wIJ	w56<wGHu	w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@w56C@wIJ3w	 w56AcE	BwGH1S5y	"w56AcE	Bw56AcE	Bw56AcE	Bw56AcE	Bw56AcE	Bw56AcE	Bw56AcE	Bw56AcE	B 	w|,c2w}-s3w}-t4w{+S1w}-s3w}-t4w|,c2w|,d3wz*C0wy)3/w{+T2wz*C0r   c           	      "   d }t         t        | j                  | j                  | j                  | j                  z
  | j                  dfD ]4  }| j                  | ||             | j                  |  ||              6 dd l}t        d      D ]n  } |j                  dd      } |j                         } |j                  ddg      }	 |t        ||      z  }| j                  |t        t        |                   p y # t        $ r Y }w xY w)	Nc                 *    t        t        |             S r/   )r  toHexr   s    r   	roundtripz2HexFloatTestCase.test_roundtrip.<locals>.roundtrip  s    58$$r   r+   r   r   iPi  r   r  )r  r  r  r  r  r  r   r   	randrangechoicer	   r  r.  r   )r(   r/  r`   r   r   emrk   s           r   test_roundtripzHexFloatTestCase.test_roundtrip  s    	% sDHHdhh0BDIIsS 	.ANN1il+NNA2y!}-	.
 	u 		5A   -AAsDk*A5eAqkM q'%("34		5 ! s   D	DDc                     G d dt               }|j                  dj                               }| j                  t	        |      |       | j                  |d        G d dt               }|j                  dj                               }| j                  t	        |      |       | j                  |d       | j                  t        |dd      d	       y )
Nc                       e Zd Zd Zy))HexFloatTestCase.test_subclass.<locals>.Fc                 4    t         j                  | |dz         S r   r   r   s     r   r   z1HexFloatTestCase.test_subclass.<locals>.F.__new__  s    }}S%!)44r   N)r   r   r   r   r   r   r   r   r7    s    5r   r   r  rz   c                       e Zd Zd Zy)*HexFloatTestCase.test_subclass.<locals>.F2c                     d| _         y )Nbar)foor   s     r   r   z3HexFloatTestCase.test_subclass.<locals>.F2.__init__  s	     r   Nr   r   r   r   F2r:    s    !r   r>  r=  noner<  )r"   fromhexhexr   r]   r!   r  )r(   r   r_   r>  s       r   test_subclasszHexFloatTestCase.test_subclass  s    	5 	5 IIsiik"d1gq!C 	! 	! JJyy{#d1gr"C E62E:r   N)r   r   r   r  r  r  r  r  r  r  r   r  r+  r4  rB  r   r   r   r  r    sT    
+
,C
+
C,-D
'
(C5J=:@24i1V	5*;r   r  __main__)<r   r"  r  r   r1  rQ  r   rc  r  r   test.test_grammarr   r   r  r   r   r   r	   r_  r[   r"   r  r  r  dirnamer  curdirtest_dirr  rx  r   r   TestCaser   r  hasattrrD  rM  rW   reversedrO  rN  rP  rY  r[  rZ  r\  rK  rf  r  rA  r  r  r@  r  rA  r.  r  r   mainr   r   r   <module>rL     s     	  
    < . .  ElEl 77??8$1		'',,x)DE	E 		 	E	>)) E	>P WUO46NO=h// = P= 4h}-.3h}-."Xl+,"Xl+,Y** Y2_?X&& _?B=B8$$ =B~ 	v*H%% v* v*v`="" `=F --		@;x(( @;F zHMMO a.  Is    G3 3G>=G>