
    ;e                       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 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n# e$ r dZY nw xY we                    d                              d          Z ed          Z ed	          Zej                            e          pej        Z ej        !                    e d
          Z" G d de          Z# G d de          Z$ G d dej%                  Z& ej'         e(ed          d           G d dej%                              Z)dZ* e+ e,e*                    Z-dZ. e+ e,e.                    Z/dZ0 e+ e,e0                    Z1dZ2 e+ e,e2                    Z3 G d dej%                  Z4 G d dej%                  Z5 G d dej%                  Z6e	j7         G d d ej%                              Z8 G d! d"ej%                  Z9ej:        Z;ej<        Z= G d# d$ej%                  Z>d Z?d%Z@d&d'd(d)ZA ejB        edu d*           G d+ d,ej%                              ZCeDd-k    r ejE                     dS dS ).    N)support)import_helper)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)isinfisnancopysignldexpdoubleIEEEinfnanzformatfloat_testcases.txtc                       e Zd ZdS )FloatSubclassN__name__
__module____qualname__     &/usr/lib/python3.11/test/test_float.pyr   r              Dr   r   c                       e Zd ZdS )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dS )GeneralFloatCasesc                    |                      t          d          d           |                      t          d          d           |                      t          d          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d	           |                     t          t          d
           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          i            |                     t          dt          i            |                     t          t          d           |                     t          t          d           |                     t          t          d           |                      t          d          d           |                      t          d          d           t          d           t          d           |                     t          t          d           d S )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'   sV   td+++sU+++z**D111*e[999*e^<<<*e^<<<*eX666*eX666*eX666*eX666*eV444*eW555*eS111*eT222)UB///y,rBBB*eX666*eY777*eW5558994@@@=>>EEEn 	*e-MNNNNNr   c                 J    |                      t                      d           d S )N        )r$   r%   r*   s    r   test_noargszGeneralFloatCases.test_noargsF   s"    #&&&&&r   c           
      \   t           D ]t          fddD                       st|                     t                    t	                               |                     t                    t                              dd                               t          D ]Cdv rt          fddD                       s!|                     t          t                     D|                     t          t          d           |                     t          t          d           |                     t          t          d	           |                     t          t          d
           |                     t          t          d           |                     t          t          d           d S )Nc              3       K   | ]}|v V  	d S Nr   .0chlits     r   	<genexpr>z5GeneralFloatCases.test_underscores.<locals>.<genexpr>K   '      66RrSy666666r   jJxXoObB_ )0_709_99c              3       K   | ]}|v V  	d S r2   r   r3   s     r   r7   z5GeneralFloatCases.test_underscores.<locals>.<genexpr>Q   r8   r   _NaNNa_NIN_Fz-_INFz-INF_s   0_.9)	r   anyr$   r%   evalreplacer   r&   r'   )r+   r6   s    @r   test_underscoresz"GeneralFloatCases.test_underscoresI   s   , 	J 	JC6666:66666 J  sT#YY777  sU3;;sB3G3G-H-HIII. 	: 	:C&&&6666:66666 :!!*eS999 	*eV444*eV444*eV444*eW555*eW555*e[99999r   c                     G d dt                      G d dt                    } G d dt                    }t          t          fd||t          g}	 dd	lm |                    fd
           n# t          $ r Y nw xY w|D ]} |d          }|                     t          |                    5  | 	                    t          |          d           |                     t          d          5  t           |d                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nc                       e Zd ZdS )AGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomStrNr   r   r   r   	CustomStrrH   a             r   rI   c                       e Zd ZdS )CGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomBytesNr   r   r   r   CustomBytesrL   b   rJ   r   rM   c                       e Zd ZdS )GGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomByteArrayNr   r   r   r   CustomByteArrayrO   c   rJ   r   rP   c                 >     |                                            S r2   )decode)brI   s    r   <lambda>z@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>h   s    ii

++ r   r   )arrayc                      d|           S )NBr   )rS   rU   s    r   rT   z@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>r   s    uuS!}} r   s    3.14  r   zcould not converts   AAAAAAAAAAAAAAAA)strbytes	bytearray
memoryviewrU   appendImportErrorsubTesttyper$   r%   r)   r'   )r+   rM   rP   	factoriesfxrI   rU   s         @@r   test_non_numeric_input_typesz.GeneralFloatCases.test_non_numeric_input_types^   s    	#"""""""&&&&&%&&&.....i... ++++
		6###### 44445555  	 	 	D	
  	* 	*A*Ad1gg&& * *  q4000++J8KLL * *!!K..)))* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *	* 	*sH   A6 6
BB7?D26DD2DD2"D#D22D6	9D6	c                 6   |                      t          t          d          dd                   d           |                      t          t          d          dd                   d           |                      t          t          d          dd                   d           |                      t          t          d          dd                   d           |                      t          t          d          dd                   d           d S )	Ns   12.3      gffffff@s   12.3 s   12.3 s   12.3As   12.34)r$   r%   r[   r*   s    r   test_float_memoryviewz'GeneralFloatCases.test_float_memoryview{   s    z'221Q3788#>>>z+66qs;<<cBBBz(33AaC8993???z(33AaC8993???z(33AaC8993?????r   c                 0     fd} |d            |d            |d            |d            |d            |d            |d            |d	            |d
            |d            |d            |d            |d           d S )Nc                                          t          d| d          5 }t          |            d d d            n# 1 swxY w Y                       t	          |j                  d|            d S )Nzfloat())msgz#could not convert string to float: )r&   r'   r%   r$   rX   	exception)scmr+   s     r   checkz3GeneralFloatCases.test_error_message.<locals>.check   s    ""::!!!3E"FF "a              S...;<1>@ @ @ @ @s   >AA   ½u   123½z  123 456  s     123 456  r;    z	 
u   ٣١٤!z123 z123  245z123 245s   123 s   123r   )r+   ro   s   ` r   test_error_messagez$GeneralFloatCases.test_error_message   s    	@ 	@ 	@ 	@ 	@ 	fimnb			c


g 	#$$$imljjr   
LC_NUMERICfr_FRde_DEc                    dd l }|                                d         dk    s|                     d           |                     t	          d          d           |                     t	          d          d           |                     t	          d          d	           |                     t	          d
          d           |                     t	          d          d           |                     t	          d          d           |                     t	          d          d           |                     t	          d          d           |                     t	          d          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t	          d          d           |                     t	          d          d           d S ) 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   s   
 	  ""?3s::MM4555z**D111y))4000y))5111w---v,,,x&111y))6222z**D111v,,,*eZ888*e[999*e[999*e[999*e^<<<*e^<<<|,,c222u\22D99999r   c           	          G d dt                     } G d dt                    } G d dt                    } G d dt                    } G d	 d
t                    }|                     t           |                      d           |                     t           |                      d           |                     t
                    5  |                     t           |d                    d           d d d            n# 1 swxY w Y   |                     t          t           |d                     |                     t           |d                    d            G d d          }|                     t          t          j	         |                        G d d          }|                     t
                    5  |                     t           |                      d           d d d            n# 1 swxY w Y   |                     t
                    5  | 
                    t          t           |                                t                     d d d            n# 1 swxY w Y   |                     t
                    5  |                     t           |                      d           d d d            n# 1 swxY w Y   |                     t
                    5  | 
                    t          t           |                                t                     d d d            n# 1 swxY w Y    G d d          }|                     t           |d                    d           |                     t          t           |ddz                        G d d          }	|                     t          t           |	                       d S )Nc                       e Zd Zd ZdS )4GeneralFloatCases.test_floatconversion.<locals>.Foo1c                     dS N      E@r   r*   s    r   	__float__z>GeneralFloatCases.test_floatconversion.<locals>.Foo1.__float__       sr   Nr   r   r   r   r   r   r   Foo1r      #            r   r   c                       e Zd Zd ZdS )4GeneralFloatCases.test_floatconversion.<locals>.Foo2c                     dS 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dS )4GeneralFloatCases.test_floatconversion.<locals>.Foo3r.   c                 >    t                               | d|z            S )N   r%   __new__clsvalues     r   r   z<GeneralFloatCases.test_floatconversion.<locals>.Foo3.__new__   s    }}S!E'222r   c                     | S r2   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      s7        3 3 3 3    r   r   c                       e Zd Zd ZdS )4GeneralFloatCases.test_floatconversion.<locals>.Foo4c                     dS N*   r   r*   s    r   r   z>GeneralFloatCases.test_floatconversion.<locals>.Foo4.__float__       rr   Nr   r   r   r   Foo4r      #            r   r   c                       e Zd Zd ZdS )6GeneralFloatCases.test_floatconversion.<locals>.FooStrc                 @    t          t          |                     dz   S Nre   )r%   rX   r*   s    r   r   z@GeneralFloatCases.test_floatconversion.<locals>.FooStr.__float__   s    SYY''!++r   Nr   r   r   r   FooStrr      s#        , , , , ,r   r   r      r   8g      "@c                       e Zd Zd ZdS )4GeneralFloatCases.test_floatconversion.<locals>.Foo5c                     dS )Nr;   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dS )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dS )7GeneralFloatCases.test_floatconversion.<locals>.MyIndexc                     || _         d S r2   r   r+   r   s     r   __init__z@GeneralFloatCases.test_floatconversion.<locals>.MyIndex.__init__   s    "


r   c                     | j         S r2   r   r*   s    r   	__index__zAGeneralFloatCases.test_floatconversion.<locals>.MyIndex.__index__   s
    z!r   N)r   r   r   r   r   r   r   r   MyIndexr      s2        # # #" " " " "r   r   r   i  c                       e Zd Zd ZdS )5GeneralFloatCases.test_floatconversion.<locals>.MyIntc                     dS 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%   rX   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   sw   	 	 	 	 	6 	 	 		 	 	 	 	5 	 	 		 	 	 	 	5 	 	 		 	 	 	 	5 	 	 		, 	, 	, 	, 	,S 	, 	, 	, 	ttvv,,,ttvv,,,011 	3 	3U4488__c222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3)UDDHH555vvc{{++R000	 	 	 	 	 	 	 	 	)TZ888	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 011 	. 	.U1133ZZ---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.011 	3 	3MM$uQQSSzz**E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3011 	6 	6]1133//555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6011 	C 	CMM$}QQSS1122MBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C	" 	" 	" 	" 	" 	" 	" 	" 	wwr{{++T222-40@0@AAA	 	 	 	 	 	 	 	 	)UEEGG44444sZ   -D		DD,HHH)>I33I7:I7,KKK5>L??MMc                     |                      t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nzkeyword argumentz3.14rb   )r)   r(   r%   r*   s    r   test_keyword_argsz#GeneralFloatCases.test_keyword_args   s    ##I/ABB 	 	FOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>c                 N    G d dt                     } |d          }|                     t          |          |           |                     t          |          d           |                     t
                    5   |d           d d d            n# 1 swxY w Y    G d dt                     } |dd	          }|                     t          |          |           |                     t          |          d           |                     |j        d            G d
 dt                     } |dd	          }|                     t          |          |           |                     t          |          d           |                     |j        d           d S )Nc                       e Zd ZdS )=GeneralFloatCases.test_keywords_in_subclass.<locals>.subclassNr   r   r   r   subclassr              Dr   r   r|   r   r   c                       e Zd ZddZdS )GGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_initNc                     || _         d S r2   newarg)r+   argr   s      r   r   zPGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_init.__init__	  s    $r   r2   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_newNc                 Z    t                                          | |          }||_        |S r2   )superr   r   )r   r   r   r+   	__class__s       r   r   zNGeneralFloatCases.test_keywords_in_subclass.<locals>.subclass_with_new.__new__  s&    wwsC00$r   r2   )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 	 	 	HSMMd1ggx(((q3'''y)) 	 	HqMMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 		% 	% 	% 	% 	% 	% 	% 	% s1---d1gg1222q3'''1%%%	 	 	 	 	 	 	 	
 c!,,,d1gg0111q3'''1%%%%%s   ?BBBc                 r   |                      d                                           |                     d                                           |                      t          d                                                     |                      t          d                                                     d S )Ng?      ?r   r   )assertFalse
is_integer
assertTruer%   r*   s    r   test_is_integerz!GeneralFloatCases.test_is_integer  s    #))++,,,))***u0022333u002233333r   c                    dD ]-\  }}|                      |                                |           .t          d          D ]}}t          j                    }|dt          j        dd          z  z  }|                                \  }}|                      t          |                              |          |           ~t          j        }|                       |dd           |t          d                                                      |                       |d	d
           |t          d                                                      |                       |dd
           |t          d                                                      |                       |dd           |t          d                                                      |                       |dd           |t          d                                                      |                       |dd           |t          d                                                      | 	                    t          t          d          j                   | 	                    t          t          d          j                   | 	                    t          t          d          j                   d S )N))g      ?)      )g      )ir   )r.   )r   re   )g      '@)   r   '  
   id   r   re   r.      r   r|   r{   l   L33 l         @ g @lL33 g ig     hr   -infr   )r$   as_integer_ratiorangerandomrandintr%   __truediv__	fractionsFractionr&   r   r'   )r+   ra   ratioindRs          r   test_floatasratioz#GeneralFloatCases.test_floatasratio   s    	: 	:HAu Q//1159999u 	9 	9AAv~dC0000A%%''DAqU1XX11!44a88881aE#JJ7799:	< 	< 	<1aE#JJ7799:	< 	< 	<1aE#JJ7799:	< 	< 	<+-=>>E#JJ7799:	< 	< 	<,.>??E$KK88::;	= 	= 	=5!E'NN;;==>	@ 	@ 	@ 	-u)FGGG-v)GHHH*eEll&CDDDDDr   c           	         t           t            ddt          f}|D ]}|                     ||g           |                     ||f           |                     ||h           |                     ||d i           |                     |g                    |          dd|z             |                     ||           |D ]}|                     |g|gk    d|d|d           |                     |f|fk    d|d	|d
           |                     |h|hk    d|d|d           |                     |d i|d ik    d|d|d           |g|f|h|d if\  }}}}|                     ||k    d|z             |                     ||k    d|z             |                     ||k    d|z             |                     ||k    d|z             d S )Nr.   r   re   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+   floatsra   ltrm   r   s          r   test_float_containmentz(GeneralFloatCases.test_float_containmentA  s7   tS#s+ 	% 	%AMM!aS!!!MM!aT"""MM!aS!!!MM!aY'''aSYYq\\1.Ca.GHHHMM!V$$$$ 	K 	KAOOQCA3JJ!!!QQQ(?@@@OOQDQDLLaaa*CDDDOOQCA3JJ!!!QQQ(?@@@OOQJ1d)33DEAAqqq6J K K K qdQC!T2JAq!QOOAF$>$BCCCOOAF$?!$CDDDOOAF$>$BCCCOOAF$E$IJJJJ	K 	Kr   c                 r    |                      |t          d|          f|t          d|          f           d S )Nr   )r$   r	   )r+   arS   s      r   assertEqualAndEqualSignz)GeneralFloatCases.assertEqualAndEqualSignZ  s>     	!Xc1--.HS!4D4D0EFFFFFr   c                    |                      t          d                                          t                     |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d           |                     t          d	                                          d
           |                     t          d                                          d           |                     t          d                                          d           |                     t          t          d          j                   |                     t          t          d          j                   |                     t          t          d          j                   d S )Nr{   r   r   re         ?                  NݯbNݯr   r   r   )assertIsInstancer%   	__floor__intr$   r&   r'   r   r*   s    r   test_float_floorz"GeneralFloatCases.test_float_floor`  s   eCjj2244c:::s--//333s--//333s--//333t..00"555t..00"555t..00"555x2244h???y))3355yAAA*eEll&<===-u)?@@@-v)@AAAAAr   c                    |                      t          d                                          t                     |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d           |                     t          d                                          d	           |                     t          d
                                          d	           |                     t          d                                          d           |                     t          d                                          d           |                     t          t          d          j                   |                     t          t          d          j                   |                     t          t          d          j                   d S )Nr{   re   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_ceiln  s   eCjj1133S999s,,..222s,,..222s,,..222t--//333t--//444t--//444x1133X>>>y))2244i@@@*eEll&;<<<-u)>???-v)?@@@@@r   c                    t           j        }|                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           d S )Nr  r   r.   0.+       0.++)operatormodr  )r+   r%  s     r   test_float_modz GeneralFloatCases.test_float_mod|  s    l$$SSs^^S999$$SS#%6%6<<<$$SSs^^S999$$SSc]]C888$$SS%5%5v>>>$$SSc]]C888$$SSt__d;;;$$SS$%7%7AAA$$SSt__d;;;$$SSd^^T:::$$SS%6%6===$$SSd^^T:::::r   c           	      p'   t           t          j         fD ]}|                     t           |t           t
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |dt
                                         |                     t           |t          t
                                         |                     t           |t
          t
                                         |                     t           |t
          t                                          |                     t           |t
          d                               |                     t           |t
          d                               |                     t           |t
          d                               |                     t           |t
          d                               |                     t           |t
          d                               |                     t           |t
          d                               |                     t           |t
          t                                         |                     t          |dd           |                     t          |dd           |                     t          |dd           |                     t          |dd           |                     t          |dd           |                     t          |dd           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dt                     d           |                      |dt                    d           |                      |dt                     d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dt                    d           |                      |dt
                    d           |                      |t           d          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |t          d          d           |                      |t
          d          d           |                      |t           d          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |t          d          d           |                      |t
          d          d           | 	                    t           |dd                    t                     | 	                    t           |dd                    t                     | 	                    t           |dd                    t                     | 	                    t           |dd                    t                     | 	                    t           |dd                    t                     | 	                    t           |dd                    t                     |                      |dt                     t                     |                      |dt                     t                     |                      |dt                     t                     |                      |dt                     t                     |                      |t           t                     d           |                      |dt                     d           |                      |dt                     d           |                      |t          t                     d           |                      |dt                    d           |                      |dt                    d           |                      |dt                    d           |                      |dt                    d           |                      |t           t                    t                     |                      |dt                    t                     |                      |dt                    t                     |                      |t          t                    t                     |                      |t           d          d           |                      |t           d          d           |                      |t           d          d           |                      |t           d          t                      |                      |t           d          t                     |                      |t           d          t                     |                      |t          d          t                     |                      |t          d          t                     |                      |t          d          t                     |                      |t          d          d           |                      |t          d          d           |                      |t          d          d           |                      |dd          d	           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d
           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d	           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d
           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           | 	                    t           |dd                    t                     |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           | 	                    t           |dd                    t                     |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           d S )Ng       r  r  r"  r.   r{          @r   rz   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 u	CFOOE&&#s"3"344555OOE&&s"3"344555OOE&&s"3"344555OOE&&s"3"344555OOE&&s"3"344555OOE&&c"2"233444OOE&&c"2"233444OOE&&c"2"233444OOE&&c"2"233444OOE&&c"2"233444 OOE&&sd"3"344555OOE&&d"3"344555OOE&&d"3"344555OOE&&d"3"344555OOE&&c"2"233444OOE&&c"2"233444OOE&&c"2"233444OOE&&c"2"233444 /tDDD/dCCC /tDDD/tDDD/dCCC/dCCC ((c):):DAAA((S)9)93??? ((c):):C@@@((c):):C@@@((S)9)93???((S)9)93??? ((sd););SAAA((c):):C@@@ ((cT):):C@@@((T):):C@@@((T):):C@@@((T):):C@@@((T):):C@@@((S)9)93???((S)9)93???((S)9)93???((S)9)93???((S)9)93???((S)9)93??? ((c):):C@@@((c):):C@@@((c):):C@@@((c):):C@@@((c):):C@@@((S)9)93???((S)9)93???((S)9)93???((S)9)93???((S)9)93???((S)9)93???((d););SAAA((d););SAAA((d););SAAA((d););SAAA((d););SAAA((T):):C@@@((T):):C@@@((T):):C@@@((T):):C@@@((T):):C@@@((T):):C@@@ T&&t"4"455w???T&&s"3"344g>>>T&&t"4"455w???T&&s"3"344g>>>T&&t"4"455w???T&&s"3"344g>>> ((sd););SAAA((sd););SAAA((cT):):C@@@((cT):):C@@@ ((sd););SAAA((sd););SAAA((cT):):C@@@((cT):):C@@@ ((c):):C@@@((c):):C@@@((S)9)93???((S)9)93??? ((c):):C@@@((c):):C@@@((S)9)93???((S)9)93??? ((d););TBBB ((d););SAAA((d););SAAA ((c):):SDAAA ((c):):C@@@((c):):C@@@ ((S)9)93???((S)9)93???((S)9)93??? ((T):):C@@@((T):):C@@@((T):):C@@@ ((d););TBBB((d););TBBB((d););SAAA((c):):C@@@((c):):DAAA((c):):C@@@((d););SAAA((d););TBBB((d););SAAA((c):):C@@@((c):):DAAA((c):):C@@@((T):):DAAA((T):):C@@@((T):):C@@@((S)9)93???((S)9)93???((S)9)93??? ((V)<)<cBBB((U););SAAA((f)=)=sCCC((e)<)<cBBB ((g)>)>DDDT&&w"7"788'BBB((g)>)>EEE((W)=)=sCCC((W)=)=sCCC((W)=)=sCCC((f)=)=sCCCT&&v"6"677AAA((f)=)=tDDD((V)<)<cBBB((V)<)<cBBB((V)<)<cBBBBku	C u	Cr   c                 t   t          dd          D ]?}|                     t          t          |                    t          |                     @|                     t          t          t          j        j                            t          t          t          j        j                                       |                     t          t          d                    t          j        j	                   |                     t          t          d                    t          j        j	                    d S )Ni   r   r   )
r   r$   hashr%   sys
float_infomaxr  	hash_infor   r+   rb   s     r   	test_hashzGeneralFloatCases.test_hashY  s    sB 	6 	6AT%((^^T!WW5555eCN$67788c#."45566	8 	8 	8eEll++S]->???eFmm,,s}/@.@AAAAAr   c                 h   t          d          }|                     t          |          t                              |                      G d d          } G d dt           |          } |d          }|                     t          |          t                              |                     d S )Nr   c                       e Zd Zd ZdS )*GeneralFloatCases.test_hash_nan.<locals>.Hc                     dS r   r   r*   s    r   __hash__z3GeneralFloatCases.test_hash_nan.<locals>.H.__hash__e  r   r   N)r   r   r   r=  r   r   r   Hr;  d  r   r   r>  c                       e Zd ZdS )*GeneralFloatCases.test_hash_nan.<locals>.FNr   r   r   r   r   r@  g  r   r   r   )r%   r$   r2  r   r=  )r+   r   r>  r   s       r   test_hash_nanzGeneralFloatCases.test_hash_nana  s    eefooe&<&<===	 	 	 	 	 	 	 		 	 	 	 	q 	 	 	%efooe&<&<=====r   N)r   r   r   r,   r/   rE   rc   rg   rr   r   run_with_localer   r   r   r   r   r   r  r  r  r  requires_IEEE_754r&  r/  r8  rA  r   r   r   r   r   %   s       O O O>' ' ': : :** * *:@ @ @  6 W\7G<<: : =<:4A5 A5 A5F  & & &64 4 4E E EBK K K2G G GB B BA A A ; ; ;& yC yC yCPB B B	> 	> 	> 	> 	>r   r   __getformat__zrequires __getformat__c                       e Zd Zd ZdS )FormatFunctionsTestCasec                 ^   |                      t                              d          g d           |                      t                              d          g d           |                     t          t          j        d           |                     t
          t          j        d           d S )Nr   )unknownzIEEE, big-endianzIEEE, little-endianr%   chickenre   )r  r%   rD  r&   r'   r(   r*   s    r   test_getformatz&FormatFunctionsTestCase.test_getformato  s    e))(33LLL	N 	N 	Ne))'22LLL	N 	N 	N*e&99EEE)U%8!<<<<<r   N)r   r   r   rJ  r   r   r   rF  rF  m  s#        = = = = =r   rF  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
dS )IEEEFormatTestCasec                     dt           fdt          fdt          fdt          ffD ]\  }}t	          j        ||           d S )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  sX    ////1 	% 	%IC M#t$$$$		% 	%r   c                     dt           fdt          fdt          fdt          ffD ]\  }}t	          j        ||           d S )Nz>f<f)BE_FLOAT_INFBE_FLOAT_NANLE_FLOAT_INFLE_FLOAT_NANrR  rS  rT  s      r   test_float_specials_do_unpackz0IEEEFormatTestCase.test_float_specials_do_unpack  sX    ....0 	% 	%IC M#t$$$$		% 	%r   Nneeds _testcapic                    t           j        }|                     t          j        dd          t          j        d|                     |                     t          j        dd          t          j        d|                      d S )NrY  gnGgn)	_testcapiFLT_MAXr$   rR  pack)r+   rb  s     r   test_serialized_float_roundingz1IEEEFormatTestCase.test_serialized_float_rounding  sp     #T=996;tW;U;UVVVT>::FKwh<W<WXXXXXr   )r   r   r   r   rC  rW  r^  unittestskipIfra  rd  r   r   r   rL  rL    s        % % % % % % X_Y$&(9::Y Y ;: Y Y Yr   rL  c                   @    e Zd Zd Zej        d             Zd Zd ZdS )FormatTestCasec                    |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           d	}|                      t          |d          t          |                     |                      t          |d
          t          |                     |                      t          |d          t          |                     |                      t          |d          t          |                     |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                     t          t          dd           dD ]}|                     t          t          d|           |                     t          t          d|           |                     t          t          d|           |                     t          t          d|           |                     t          t          d|           |                     t          t          d|           |                     t          t          d|           |                      t          t
          d          d           |                      t          t
          d          d            |                      t          t          d          d!           |                      t          t          d          d"           d S )#Nr.   ra   z0.000000r;   0.0g{Gz?0.01gg%I$I,@->2r   z1.000000r  z	-1.000000z fz	 1.000000z+fz	+1.000000%z-100.000000%ry   rm   sbcdoxXr*  r)  r#  r!  r   r   r  r   r  )r$   formatrX   r&   r'   r  r  )r+   rb   format_specs      r   test_formatzFormatTestCase.test_format  sm    	S)):666 	R%000b))6222c**F333 2A///3Q0003Q0003Q000S)):666c**K888d++[999d++[999d++[999d++[999 	c**N;;; 	*fc3777 % 	H 	HKj&#{CCCj&#{CCCj&$DDDj&%EEEj&&+FFFj&&+FFFj&';GGGG 	S))5111S))5111S))5111S))511111r   c                    t          t          d          5 }|D ]}|                    d          r|                                }|s/t	          t
          j        |                    d                    \  }}|                                \  }}|                     |t          |          z  |           |                     |t          |           z  d|z              	 d d d            d S # 1 swxY w Y   d S )Nutf-8encodingz--z->rm  )	openformat_testfile
startswithstripmaprX   splitr$   r%   )r+   testfilelinelhsrhsrU  r   s          r   test_format_testfilez#FormatTestCase.test_format_testfile  s6   /G444 	?  
? 
???4(( zz|| sy$**T*:*:;;S99;;S  uSzz!13777  c

{!2C#I>>>>
?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   C
C//C36C3c                     |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           d S )Nw/^@z.4z123.5g
ףp=J@z	1.235e+03g@z	1.235e+04r$   rr  r*   s    r   test_issue5864zFormatTestCase.test_issue5864  sh    ..888..<<<..<<<<<r   c                    |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd	          d
           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d
           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd	          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           d S )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  s   t,,g666..===..???..999113CDDD113EFFF118<<<..===--x888//???//AAA//;;;224EFFF224EFFF224GHHH22I>>>>>r   N)	r   r   r   rt  r   rC  r  r  r  r   r   r   rh  rh    sa        12 12 12f ? ? ?= = =
? ? ? ? ?r   rh  c                   f    e Zd Zd Z ej         eedd          dk    d          d             ZdS )ReprTestCasec           
         t          t          j                            t          j                            t
                    d         d          d          5 }|D ]m}|                                }|r|                    d          r.t          |          }| 	                    |t          t          |                               n	 d d d            d S # 1 swxY w Y   d S )Nr   zfloating_points.txtrv  rw  #)ry  ospathjoinr~  __file__r|  r{  rC   r$   repr)r+   floats_filer  vs       r   	test_reprzReprTestCase.test_repr  s   "',,rw}}X66q9') )3:< < < 	3?J# 3 3zz|| ts33 JJ  DaMM22223	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   A1CCCfloat_repr_styler;   short.applies only when using short float repr stylec           	      
   g d}|D ]}d|z   }|                      |t          t          |                               |                      |t          t          |                               |                      t          t          |                    t          t          |                               |                      t          t          |                    t          t          |                               d S )N)rj  1.0rk  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+35rm  )r$   r  r%   rX   )r+   test_stringsrm   negss       r   test_short_reprzReprTestCase.test_short_repr  s         D  	B 	BAq5DQU1XX///T4d#4#4555T%((^^Sq]];;;T%++..E$KK0@0@AAAA	B 	Br   N)	r   r   r   r  re  
skipUnlessgetattrr3  r  r   r   r   r  r    sr        3 3 3 X&8"==HIK K0B 0BK K0B 0B 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dS )RoundTestCasec                    |                      t          t          t                     |                      t          t          t                      |                      t          t          t
                     |                      t          t          t          d           |                      t          t          t           d           |                      t          t          t
          d           |                      t          t          dd           d S )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_nan>  s    -444-555*eS111)UC555)USD#666)UC1LMMM)UD"55555r   c                 6   |                      t          t          d          t                     |                      t          t           d          t                      |                     t	          j        t          t          d                               d S )Nr   )r$   r  r  r   mathr   r  r*   s    r   test_inf_nan_ndigitsz"RoundTestCase.test_inf_nan_ndigitsG  sl    sA,,,tQ#...
5a==1122222r   c                    ddddddddz  fD ]}|                      t          d	|          d	           |                      t          d
|          d
           |                      t          d|          d           |                      t          d|          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           d S )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_nL  sK   sC%3? 	7 	7AU7A..888U8Q//:::U5!__e444U61--v6666uc**E222uc**E222w,,g666uc**E222x--v66666r   c                 F   ddddddddz   fD ]}|                      t          d	|          d
           |                      t          d|          d           |                      t          d|          d
           |                      t          d|          d
           d S )Niipi  i   l    r   r   r  r.   r  r"  r  r  r  r  s     r   test_small_nzRoundTestCase.test_small_nX  s    dGVX3wG 	4 	4AU7A..444U8Q//666U5!__c222U61--s3333		4 	4r   c                     |                      t          t          dd           |                      t          t          dd           d S )Ng3t<{r  gv;w0B)r&   r   r  r*   s    r   test_overflowzRoundTestCase.test_overflow_  s<    ->>>-$?????r   r  r;   r  r  c                    |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d	           |                      t          d
d          d	           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           d S )Ng      Cre   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_bugsc  sL    	0!44+	- 	- 	-/33)	+ 	+ 	+ 	tR$///tR$///tR$///tR$///tR$///tR$///tR$///tR%00000r   c           	         t          d          D ]}|dz  }|                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d	                    t	          |d
                     t          ddd          D ]}|dz  }|                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d	                    t	          |d
                     t          d          D ]}t          j                    }|                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d                    t	          |d                     |                     t          t          |d	                    t	          |d
                     d S )Ni  g     @@z.0fr   z.1fre   z.2fr   z.3fr   r   i  r   )r   r$   r%   rr  r  r   )r+   r   rb   s      r   test_matches_float_formatz'RoundTestCase.test_matches_float_formatu  s    s 	C 	CA%AU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBBq$## 	C 	CA%AU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBBs 	C 	CAAU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBU6!U#3#344eAqkkBBBB	C 	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           d S )Nc                                          | |z  ||            | dd          }                      t          ||           ||            d S r   r  )rU  r   expectedr+   s      r   testz0RoundTestCase.test_format_specials.<locals>.test  sT    S5[(C888abb'CVE3//3?????r   )z%ez%fz%gz%.0ez%.6fz%.20gz%#ez%#fz%#gz%#.20ez%#.15fz%#.3gz%+re   z% r   r   r   +inf+nanz infz nan)r  r  )r+   r  rU  pfmtsfmts   `    r   test_format_specialsz"RoundTestCase.test_format_specials  sb   	@ 	@ 	@ 	@ 	@F 	% 	%C#abb'>D#abb'>DDc5!!!DsdF###Dc5!!!DsdE""" DsF###DtV$$$DsF###DtV$$$ DsF###DtV$$$DsF###DtV$$$$'	% 	%r   c                    t          d          t          dd           t          dd           fD ]3}|                     |d           |                     |t                     4t          d          t          dd           t          dd           fD ]3}|                     |d           |                     |t                     4d S )NgGz?)ndigitsre   g{Gz?r   )r  r$   r  r  r7  s     r   test_None_ndigitszRoundTestCase.test_None_ndigits  s    teD$//tT1J1J1JJ 	* 	*AQ"""!!!S))))teD$//tT1J1J1JJ 	* 	*AQ"""!!!S))))	* 	*r   N)r   r   r   r  r  r  r  r  re  r  r  r3  r  r  r  r  r   r   r   r  r  ;  s       6 6 63 3 3

7 
7 
74 4 4@ @ @ X&8"==HIK K1 1K K1  X&8"==HIK KC CK KC.% % %<* * * * *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dS )
InfNanTestc                    |                      t          t          d                               |                      t          t          d                               |                      t          t          d                               |                      t          t          d                               |                      t          t          d                               |                      t          t          d                               |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d	                    d           |                     t	          t          d
                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           d S )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  rX   r&   r'   r*   s    r   test_inf_from_strzInfNanTest.test_inf_from_str  s   eEll++,,,eFmm,,---eFmm,,---eJ//00111eK0011222eK0011222eEll++U333eFmm,,e444eFmm,,f555eJ//00%888eK00115999eK00116:::eEll++U333eFmm,,e444eFmm,,f555eJ//00%888eK00115999eK00116:::U5\\**E222U6]]++U333U6]]++V444U:..//777U;//00%888U;//00&999*eV444*eW555*eW555*eT222*eU333*eU333*eY777*eX666*eW555*e[999*eW555*eW555*e\:::*e\:::::r   c                    |                      t          d          d           |                      t          d          d           |                      t          d          d           |                      t          d          d           d S )Ng      r   g      r   r$   r  rX   r*   s    r   test_inf_as_strzInfNanTest.test_inf_as_str  s    m,,e444n--v666]++U333^,,f55555r   c                    |                      t          t          d                               |                      t          t          d                               |                      t          t          d                               |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t	          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d                    d           |                     t          t          d           |                     t          t          d           |                     t          t          d	           |                     t          t          d
           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           |                     t          t          d           d S )Nr   r  -nanr  z+NAn-NaNnanaz+nanaz-nananaz+naz-naz++nanz-+NAN+-NaNz--nAn)r   r   r%   r$   r  rX   r&   r'   r*   s    r   test_nan_from_strzInfNanTest.test_nan_from_str  s   eEll++,,,eFmm,,---eFmm,,---eEll++U333eFmm,,e444eFmm,,e444eEll++U333eFmm,,e444eFmm,,e444U5\\**E222U6]]++U333U6]]++U333*eV444*eW555*eW555*eT222*eU333*eU333*eW555*eW555*eW555*eW55555r   c                    |                      t          d          d           |                      t          d          d           |                      t          d          d           |                      t          d          d           d S )Ng      r   g      g      g      r  r*   s    r   test_nan_as_strzInfNanTest.test_nan_as_str	  s    /00%8880115999.//777/00%88888r   c                     |                      t          dt          d                    d           |                      t          dt          d                    d           d S )Nr   r   r   r  r$   r	   r%   r*   s    r   test_inf_signszInfNanTest.test_inf_signs  sT    #uU||44c:::#uV}}55t<<<<<r   r  r;   r  r  c                     |                      t          dt          d                    d           |                      t          dt          d                    d           d S )Nr   r   r  r  r  r*   s    r   test_nan_signszInfNanTest.test_nan_signs  sV    
 	#uU||44c:::#uV}}55t<<<<<r   N)r   r   r   r  r  r  r  r  re  r  r  r3  r  r   r   r   r  r    s        +; +; +;Z6 6 66 6 6:9 9 9= = = X&8"==HIK K= =K K= = =r   r  c                       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dS )HexFloatTestCasez0x.fffffffffffff8p+1024z	0x1p-1022z0x0.0000000000001p-1022z0x0.0000000000001p0c                    t          |          st          |          r#t          |          t          |          k    rd S n0||k    r*|dk    s"t          d|          t          d|          k    rd S |                     |d|           d S )Nr.   r   z not identical to )r   r	   fail)r+   rb   ys      r   	identicalzHexFloatTestCase.identical%  s     88 	uQxx 	Qxx588## $!VVcXc1%5%5#q9I9I%I%IF		aaa344444r   c           	      v   |                      | j        t          dd                     |                      | j        t          dd                     |                      | j        t          dd                     |                      | j        dt          dd          t          dd          z
  z             d S )Nr   iiir(  i  i  )r  MINr
   TINYEPSMAXr*   s    r   	test_endszHexFloatTestCase.test_ends/  s    txsE!2!2333ty%U"3"3444txsC111txU3%5%5c3%G!HIIIIIr   c                     g d}|D ]>}	 t          |          }|                     d|d|d           /# t          $ r Y ;w xY wd S )N)3infiz-Infinitz++infz-+Infz--nanr  snanNaNsnnaannfnfinityinityiinity0xnanr;   rq   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_inputsrb   results       r   test_invalid_inputsz$HexFloatTestCase.test_invalid_inputs5  s    4 4 4j   	: 	:A:  			./aa9 : : : :    	: 	:s   6
AAc                     dt           fdt            fdt          fdddg}g d}|D ]:\  }}|D ]2}|D ]-}t          ||z   |z             }|                     ||           .3;d S )Nr   z	-Infinityr   )r  r   )z-0x.2g      )z-0.0r"  )r;   rq   	
z
 	)r  r  r  r  )r+   value_pairs
whitespaceinpr  leadtrailgots           r   test_whitespacez HexFloatTestCase.test_whitespaceu  s    CL3$CL	 	 	
 ) 	2 	2MC" 2 2' 2 2E!$*u"455CNN3111122	2 	2r   c                 K   | j         }| j        }| j        }| j        }|                     t          d          t                     |                     t          d          t                     |                     t          d          t                      |                     t          d          t                     |                     t          d          t                     |                     t          d          t                     |                     t          d          t                      |                     t          d          t                      |                     t          d	          t                     |                     t          d
          t                     |                     t          d          t                     |                     t          d          t                     |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d           d           |                     t          d!          d           |                     t          d"          d           |                     t          d#          d           |                     t          d$          d           |                     t          d%          d           |                     t          d&          d           |                     t          d'          d           |                     t          d(          d           |                     t          d)          d           |                     t          d*          d+           |                     t          d,          d+           |                     t          d-          d+           |                     t          d.          d+           |                     t          d/          d0           |                     t          d1          d0           |                     t          d2          d0           |                     t          d3          d0           |                     t          d4          d0           |                     t          d5          d0           |                     t          d6          d0           |                     t          d7          d0           t          d8          }|                     t          d9          |           |                     t          d:          |           |                     t          d;          |           |                     t          d<          |           |                     t          d=          |           |                     t          d>          |           |                     t          d?          |           |                     t          d@          |           |                     t          dA          |           |                     t          dB          |           |                     t          d8          |           |                     t          dC          |           |                     t          dD          |           |                     t          dE          |           |                     t          dF          |           |                     t          dG          |           |                     t          dH          |           |                     t          dI          |           |                     t          dJ          |           |                     t          dK          |           |                     t          dL          |           |                     t          dM          |           |                     t          dN          |           |                     t          dO          |           |                     t          dP          |           |                     t          dQ          |           |                     t          dR          |           |                     t          dS          |           |                     t          dT          |           |                     t          dU          |           |                     t          dV          |           |                     t          dW          |           |                     t          t
          dX           |                     t          t
          dY           |                     t          t
          dZ           |                     t          t
          d[           |                     t          t
          d\           |                     t          t
          d]           |                     t          t
          d^           |                     t          t
          d_           |                     t          t
          d`           |                     t          t
          da           |                     t          t
          db           |                     t          t
          dc           |                     t          t
          dd           |                     t          t
          de           |                     t          t
          df           |                     t          t
          dg           |                     t          t
          dh           |                     t          t
          di           |                     t          t
          dj           |                     t          dk          |           |                     t          dl          |            |                     t          dm          |           |                     t          dn          do           |                     t          dp          do           |                     t          dq          dr           |                     t          ds          do           |                     t          dt          dr           |                     t          du          do           |                     t          dv          do           |                     t          dw          dr           |                     t          dx          dr           |                     t          dy          do           |                     t          dz          dr           |                     t          d{          dr           |                     t          d|          dr           |                     t          d}          do           |                     t          d~          dr           |                     t          d          do           |                     t          d          do           |                     t          d          dr           |                     t          d          dr           |                     t          d          do           |                     t          d          dr           |                     t          d          dr           |                     t          d          |           |                     t          d          |            |                     t          d          |           |                     t          d          do           |                     t          d          do           |                     t          d          |           |                     t          d          |           |                     t          d          |           |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          dr           |                     t          d          dr           |                     t          d          |            |                     t          d          |            |                     t          d          |            |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          d|z             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          |d|z  z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          ||z
             |                     t          d          |           |                     t          d          |           |                     t          d¦          |           |                     t          dæ          |           |                     t          dĦ          |           |                     t          dŦ          |           |                     t          dƦ          |           |                     t          dǦ          |           |                     t          dȦ          |           |                     t          dɦ          ||z              |                     t          dʦ          ||z              |                     t          d˦          ||z              |                     t          d̦          ||z              |                     t          dͦ          ||z              |                     t          dΦ          ||z              |                     t          dϦ          ||z              |                     t          dЦ          |d|z  z              |                     t          dѦ          d|z
             |                     t          dҦ          d|z
             |                     t          dӦ          d|z
             |                     t          dԦ          d|z
             |                     t          dզ          d|z
             |                     t          d֦          d|dz  z
             |                     t          dצ          d|dz  z
             |                     t          dئ          d|dz  z
             |                     t          d٦          d|dz  z
             |                     t          dڦ          d|dz  z
             |                     t          dۦ          d|dz  z
             |                     t          dܦ          d|dz  z
             |                     t          dݦ          d           |                     t          dަ          d           |                     t          dߦ          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          d|z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d           dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          dd|z  z              |                     t          d          do           |                     t          d          do           |                     t          d	          |           |                     t          d
          do           |                     t          d          do           |                     t          d          |           |                     t          d          do           |                     t          d          |           |                     t          d          do           |                     t          d          do           |                     t          d          dr           |                     t          d          do           d S (  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-1076rf   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.00000000000008000000000000000001p0re   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   hhyh 	wu~~s+++wv,,,wv---wu~~s+++wz**C000w{++S111w{++cT222w{++cT22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00wx((#...wx((#...wx((#...wx((#...wx((#...wy))3///wz**C000wz**C000ww''...ww''...ww''...ww''...wx((%000wx((%000wx((%000wz**E222wx((%000wy))5111wy))5111w{++U333 *++w677<<<w677<<<w566;;;w455r:::w455r:::w455r:::w455r:::w344b999w344b999w344b999w455r:::w344b999w455r:::w455r:::w566;;;w455r:::w455r:::w455r:::w566;;;w455r:::w455r:::w566;;;w677<<<w677<<<w455r:::w455r:::w455r:::w566;;;w566;;;w566;;;w566;;;w677<<< 	-+>>>-+>>>-+>>>-,???-2JKKK--@@@--@@@--@@@-+>>>-+>>>-.AAA-,???-2LMMM-2LMMM-2KLLL-2KLLL-2IJJJ-2KLLL-2KLLL 	w9::C@@@w9::SDAAAwEFFLLL 	ww''---wz**C000w{++T222wz**C000w{++T222wz**C000w788#>>>wy))4000w|,,d333w{++S111w|,,d333w|,,d333w|,,d333w{++S111w|,,d333w{++S111w{++S111w|,,d333w9::DAAA 	w{++S111w|,,d333w9::DAAAw<==tDDDw~..666w<==tDDD 	w{++S111w{++S111w{++T222w{++T222w{++T222w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w{++QtV444w|,,af555w|,,d333w|,,d333w|,,te444w|,,te444w|,,te444w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w|,,bg666w}--r$w777 	w9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::C$JGGGw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEE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EEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::CHEEEw9::C$JGGG 	w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566CE	BBBw566CE	BBBw566CE	BBBw566CE	BBBw566CE	BBBw566CE	BBBw566CE	BBBw566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<w566<<<wIJJ	 	 	w566<<<wGHHu	 	 	w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@w566C@@@wIJJ3w	  	  	 w566AcE	BBBwGHH1S5y	" 	" 	"w566AcE	BBBw566AcE	BBBw566AcE	BBBw566AcE	BBBw566AcE	BBBw566AcE	BBBw566AcE	BBBw566AcE	BBB 	w|,,c222w}--s333w}--t444w{++S111w}--s333w}--t444w|,,c222w|,,d333wz**C000wy))3///w{++T222wz**C00000r   c           	      (   d }t           t          | j        | j        | j        | j        z
  | j        dfD ]B}|                     | ||                     |                     |  ||                      Cdd l}t          d          D ]} |j        dd          } |j                    } |j	        ddg          }	 |t          ||          z  }|                     |t          t          |                               y# t          $ r Y w xY wd S )	Nc                 :    t          t          |                     S r2   )r  toHexr   s    r   	roundtripz2HexFloatTestCase.test_roundtrip.<locals>.roundtrip  s    588$$$r   r.   r   r   iPi  r   r  )r  r  r  r  r  r  r   r   	randrangechoicer
   r  r/  r   )r+   r0  rb   r   r   emrm   s           r   test_roundtripzHexFloatTestCase.test_roundtrip  s>   	% 	% 	% sDHdh0BDIsS 	. 	.ANN1iill+++NNA2yy!}}---- 	u 		5 		5A  --AAsDk**A5eAqkkM q'%(("3"34444 !   		5 		5s   >D
DDc                     G d dt                     }|                    d                                          }|                     t	          |          |           |                     |d            G d dt                     }|                    d                                          }|                     t	          |          |           |                     |d           |                     t          |dd          d	           d S )
Nc                       e Zd Zd ZdS ))HexFloatTestCase.test_subclass.<locals>.Fc                 >    t                               | |dz             S r   r   r   s     r   r   z1HexFloatTestCase.test_subclass.<locals>.F.__new__  s    }}S%!)444r   N)r   r   r   r   r   r   r   r   r8    s#        5 5 5 5 5r   r   r  r|   c                       e Zd Zd ZdS )*HexFloatTestCase.test_subclass.<locals>.F2c                     d| _         d S )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   ra   r?  s       r   test_subclasszHexFloatTestCase.test_subclass  s   	5 	5 	5 	5 	5 	5 	5 	5 IIsiikk""d1ggq!!!C   	! 	! 	! 	! 	! 	! 	! 	! JJyy{{##d1ggr"""C   E622E:::::r   N)r   r   r   r  r  r  r  r  r  r  r  r  r,  r5  rC  r   r   r   r  r    s        
'+
,
,C
'+

C7,--D
''
(
(C5 5 5J J J=: =: =:@2 2 24i1 i1 i1V	5 5 5*; ; ; ; ;r   r  re   g      @?g      p>g      <r   rf   r   r_  c                        e Zd Zd Zd Zd ZdS )	PackTestsc                 :   |                      t          j        ddt                    d           |                      t          j        ddt                    d           |                      t          j        ddt                    d           |                      t          j        ddt                    d           |                      t          j        ddt                    d	           |                      t          j        ddt                    d
           d S )Nr   r     > rf      ?  r      ?          >     ?         ?)r$   ra  
float_pack
BIG_ENDIANLITTLE_ENDIANr*   s    r   	test_packzPackTests.test_pack  s   -ajAA!	# 	# 	#-ajAA)	+ 	+ 	+-ajAA9	; 	; 	;-amDD!	# 	# 	#-amDD)	+ 	+ 	+-amDD9	; 	; 	; 	; 	;r   c                 .   |                      t          j        dt                    d           |                      t          j        dt                    d           |                      t          j        dt                    d           |                      t          j        dt                    d           |                      t          j        dt                    d           |                      t          j        dt                    d           d S )NrH  r  rI  rJ  rK  rL  rM  )r$   ra  float_unpackrO  rP  r*   s    r   test_unpackzPackTests.test_unpack  s   /*EE	 	 	/0@*MM	 	 	/0PR\]]	 	 	/-HH	 	 	/0@-PP	 	 	/0PR_``	 	 	 	 	r   c                    d}dd|dt           j        g}t          r!|                    t          t
          f           |D ]}dD ]}|dk    r||k    rt          |         }t          t          fD ]}| 	                    |||          5  t          j        |||          }t          j        ||          }t          |          r&|                     t          |          ||f           nJ|dk     r.|                     t          j        |||	          ||f           n|                     ||           d d d            n# 1 swxY w Y   ݐ
d S )
Ng      0Fr   r  g$I$I?rD  r   )r   sizeendianr   )rel_tol)r  r+  HAVE_IEEE_754extendr  r  EPSILONrO  rP  r^   ra  rN  rS  r   r   iscloser$   )	r+   largevaluesr   rV  rX  rW  rV  value2s	            r   r5  zPackTests.test_roundtrip
  s   sE5$'2 	&MM3*%%% 	< 	<E" < <199%!$-)=9 
< 
<FEVLL 	< 	<(3D%HH!*!7f!E!E << < OOE&MME6?KKKK!AXX OODLPW,X,X,X-2FO= = = = !,,VU;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
<<	< 	<s   B+D?	?EEN)r   r   r   rQ  rT  r5  r   r   r   rF  rF    sA        ; ; ;  < < < < <r   rF  __main__)Fr   r$  r  r   r3  rR  r   re  r  r   test.supportr   test.test_grammarr   r   r  r   r   r	   r
   ra  r]   r%   rD  r{  rY  r  r  r  dirnamer  curdirtest_dirr  rz  r   r   TestCaser   r  hasattrrF  rN  rY   reversedrP  rO  rQ  rZ  r\  r[  r]  rL  rh  r  rC  r  r  rA  r  rB  r/  r  rO  rP  r[  rf  rF  r   mainr   r   r   <module>rj     s        				  



          & & & & & &< < < < < < < < . . . . . . . . . . . .    III ##H--88@@eElleEll 7??8$$1	',,x)DEE	 	 	 	 	E 	 	 		 	 	 	 	 	 	 	E	> E	> E	> E	> E	>) E	> E	> E	>P WWUO446NOO= = = = =h/ = = PO= 4hh}--..3hh}--.."uXXl++,,"uXXl++,,Y Y Y Y Y* Y Y Y2Z? Z? Z? Z? Z?X& Z? Z? Z?x=B =B =B =B =B8$ =B =B =B~ 	v* v* v* v* v*H% v* v* v*vc= c= c= c= c=" c= c= c=L -	@; @; @; @; @;x( @; @; @;J 
  d"$5662< 2< 2< 2< 2<! 2< 2< 762<j zHMOOOOO s   A AA