
    daf                       d Z ddlZddlmZ ddlm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ZddlZddlmZmZ ddlZddlmZmZ e	j(                  Zej,                  j/                  e      xs ej2                  Zej,                  j7                  ed      Z G d d	e      Z G d
 de      Z G d de	j(                        Z d Z!d Z" G d d      Z# G d de#      Z$ejJ                  jM                  e$        G d de#      Z'ejP                  jM                  e'        G d d      Z)ejT                  jM                  e)        G d d      Z+ejJ                  jM                  e+        G d d      Z,ejP                  jM                  e,        G d d      Z-ejP                  jM                  e-        G d de-e.      Z/ G d  d!ej`                        Z1e2d"k(  r ejf                          yy)#zTests for Lib/fractions.py.    N)Decimal)requires_IEEE_754)copydeepcopy)dumpsloadszformatfloat_testcases.txtc                   J    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZeZy)
DummyFloatz8Dummy float class for testing comparisons with Fractionsc                 H    t        |t              st        d      || _        y )Nz-DummyFloat can only be initialized from float)
isinstancefloat	TypeErrorvalueselfr   s     ./root/Python-3.12.4/Lib/test/test_fractions.py__init__zDummyFloat.__init__   s    %'KLL
    c                     t        |t        j                        r& |t        j	                  | j
                        |      S t        |t              r || j
                  |j
                        S t        S N)r   numbersRationalF
from_floatr   r
   NotImplemented)r   otherops      r   _richcmpzDummyFloat._richcmp    sQ    eW--.all4::.66z*djj%++..!!r   c                 B    | j                  |t        j                        S r   )r   operatoreqr   r   s     r   __eq__zDummyFloat.__eq__(       DMM%$EEr   c                 B    | j                  |t        j                        S r   )r   r    ler"   s     r   __le__zDummyFloat.__le__)   r$   r   c                 B    | j                  |t        j                        S r   )r   r    ltr"   s     r   __lt__zDummyFloat.__lt__*   r$   r   c                 B    | j                  |t        j                        S r   )r   r    ger"   s     r   __ge__zDummyFloat.__ge__+   r$   r   c                 B    | j                  |t        j                        S r   )r   r    gtr"   s     r   __gt__zDummyFloat.__gt__,   r$   r   c                     J d       )Nz/__float__ should not be invoked for comparisons r   s    r   	__float__zDummyFloat.__float__/   s    GGGur   c                     J d       )Nz-__sub__ should not be invoked for comparisonsr2   r"   s     r   __sub__zDummyFloat.__sub__3   s    EEEur   N)__name__
__module____qualname____doc__r   r   r#   r'   r*   r-   r0   r4   r6   __rsub__r2   r   r   r
   r
      s2    B
" FEEEEHFHr   r
   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
DummyRationalzATest comparison of Fraction with a naive rational implementation.c                 X    t        j                  ||      }||z  | _        ||z  | _        y r   )mathgcdnumden)r   rA   rB   gs       r   r   zDummyRational.__init__;   s(    HHS#!8!8r   c                     t        |t        j                        r4| j                  |j                  k(  xr | j
                  |j                  k(  S t        S r   )r   	fractionsFractionrA   
_numeratorrB   _denominatorr   r"   s     r   r#   zDummyRational.__eq__@   sH    eY//0HH 0 00 3HH 2 224 "!r   c                 h    | j                   |j                  z  | j                  |j                  z  k  S r   rA   rH   rB   rG   r"   s     r   r*   zDummyRational.__lt__G   +    xx%,,,txx%:J:J/JJKr   c                 h    | j                   |j                  z  | j                  |j                  z  kD  S r   rJ   r"   s     r   r0   zDummyRational.__gt__J   rK   r   c                 h    | j                   |j                  z  | j                  |j                  z  k  S r   rJ   r"   s     r   r'   zDummyRational.__le__M   +    xx%,,,5;K;K0KKLr   c                 h    | j                   |j                  z  | j                  |j                  z  k\  S r   rJ   r"   s     r   r-   zDummyRational.__ge__P   rN   r   c                     J d       )Nz__float__ should not be invokedr2   r3   s    r   r4   zDummyRational.__float__U   s    777ur   N)r7   r8   r9   r:   r   r#   r*   r0   r'   r-   r4   r2   r   r   r=   r=   8   s,    K
"LLMM
8r   r=   c                       e Zd ZdZy)DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r7   r8   r9   r:   r2   r   r   rR   rR   X   s    @r   rR   c                 2    | j                   | j                  fS r   	numeratordenominator)rs    r   _componentsrX   \   s    KK''r   c                 n    t        |       t        |      k(  xr | |k(  xs t        j                  | |      S r   )typer?   isclose)abs     r   typed_approx_eqr^   _   s.    7d1g@16#?T\\!Q-?@r   c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)SymboliczSimple non-numeric class for testing mixed arithmetic.
    It is not Integral, Rational, Real or Complex, and cannot be conveted
    to int, float or complex. but it supports some arithmetic operations.
    c                     || _         y r   r   r   s     r   r   zSymbolic.__init__g   s	    
r   c                 Z    t        |t              rt        S | j                  |  d|       S Nz * r   r   r   	__class__r"   s     r   __mul__zSymbolic.__mul__i   ,    eQ!!~~c%122r   c                 .    | j                  | d|        S rd   rf   r"   s     r   __rmul__zSymbolic.__rmul__m       ~~s4&122r   c                 Z    t        |t              rt        S | j                  |  d|       S Nz / re   r"   s     r   __truediv__zSymbolic.__truediv__o   rh   r   c                 .    | j                  | d|        S rn   rj   r"   s     r   __rtruediv__zSymbolic.__rtruediv__s   rl   r   c                 Z    t        |t              rt        S | j                  |  d|       S Nz % re   r"   s     r   __mod__zSymbolic.__mod__u   rh   r   c                 .    | j                  | d|        S rs   rj   r"   s     r   __rmod__zSymbolic.__rmod__y   rl   r   c                 Z    t        |t              rt        S | j                  |  d|       S Nz ** re   r"   s     r   __pow__zSymbolic.__pow__{   s,    eQ!!~~d5'233r   c                 .    | j                  | d|        S rx   rj   r"   s     r   __rpow__zSymbolic.__rpow__   s    ~~tD6233r   c                 r    |j                   | j                   k7  rt        S | j                  |j                  k(  S r   )rf   r   r   r"   s     r   r#   zSymbolic.__eq__   s+    ??dnn,!!zzU[[((r   c                     | j                    S r   rb   r3   s    r   __str__zSymbolic.__str__   s    **r   c                 N    | j                   j                   d| j                  dS )N())rf   r7   r   r3   s    r   __repr__zSymbolic.__repr__   s$    ..))*!DJJ>;;r   N)r7   r8   r9   r:   r   rg   rk   ro   rq   rt   rv   ry   r{   r#   r~   r   r2   r   r   r`   r`   b   sC    33333344)<r   r`   c                       e Zd Zy)SymbolicRealNr7   r8   r9   r2   r   r   r   r          r   r   c                       e Zd Zy)SymbolicComplexNr   r2   r   r   r   r      r   r   r   c                   R    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)Ratz3Simple Rational class for testing mixed arithmetic.c                      || _         || _        y r   rT   )r   nds      r   r   zRat.__init__   s    r   c                     t        |t              rt        S | j                  | j                  |j                  z  | j
                  |j
                  z        S r   r   r   r   rf   rU   rV   r"   s     r   rg   zRat.__mul__   sH    eQ!!~~dnnu>"..1B1BBD 	Dr   c                     | j                  |j                  | j                  z  |j                  | j                  z        S r   rf   rU   rV   r"   s     r   rk   zRat.__rmul__   s8    ~~eoo>#//$2B2BBD 	Dr   c                     t        |t              rt        S | j                  | j                  |j
                  z  | j
                  |j                  z        S r   r   r"   s     r   ro   zRat.__truediv__   sH    eQ!!~~dnnu/@/@@"..@B 	Br   c                     | j                  |j                  | j                  z  |j                  | j                  z        S r   r   r"   s     r   rq   zRat.__rtruediv__   s8    ~~eoo0@0@@#//$..@B 	Br   c                     t        |t              rt        S | j                  |j                  z  }| j                  | j                  |j                  z  |z  |      S r   )r   r   r   rV   rU   rf   r   r   r   s      r   rt   zRat.__mod__   sK    eQ!!u.~~dnnu/@/@@1DaHHr   c                     |j                   | j                  z  }| j                  |j                  | j                   z  |z  |      S r   )rV   rU   rf   r   s      r   rv   zRat.__rmod__   s;    .~~eoo0@0@@1DaHHr   c                     t        |t              rt        S | j                  | j                  |z  | j
                  |z        S r   r   r"   s     r   ry   zRat.__pow__   s<    eQ!!~~dnn5"..%79 	9r   c                 4    | j                   | j                  z  S r   rT   r3   s    r   r4   zRat.__float__   s    ~~ 0 000r   c                     | j                   |j                   k7  rt        S t        | j                  |j                        xr  t        | j                  |j                        S r   )rf   r   r^   rU   rV   r"   s     r   r#   z
Rat.__eq__   sL    >>U__,!!@ E 0 0%2C2CD	Fr   c                 h    | j                   j                   d| j                  d| j                  dS Nr   z, r   )rf   r7   rU   rV   r3   s    r   r   zRat.__repr__   s3    ..))*!DNN+=R@P@P?SSTUUr   N)r7   r8   r9   r:   r   rg   rk   ro   rq   rt   rv   ry   r4   r#   r   r2   r   r   r   r      sD    =D
DB
BI
D9
1F
Vr   r   c                   V    e Zd ZdZ ed      fdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)Rootz/Simple Real class for testing mixed arithmetic.   c                      || _         || _        y r   )basedegree)r   vr   s      r   r   zRoot.__init__   s    	r   c                     t        |t              rt        S | j                  | j                  || j
                  z  z  | j
                        S r   r   r   r   rf   r   r   r"   s     r   rg   zRoot.__mul__   9    eQ!!~~dii%*<<dkkJJr   c                 n    | j                  || j                  z  | j                  z  | j                        S r   rf   r   r   r"   s     r   rk   zRoot.__rmul__   )    ~~eT[[0499<dkkJJr   c                     t        |t              rt        S | j                  | j                  || j
                  z  z  | j
                        S r   r   r"   s     r   ro   zRoot.__truediv__   r   r   c                 n    | j                  || j                  z  | j                  z  | j                        S r   r   r"   s     r   rq   zRoot.__rtruediv__   r   r   c                     t        |t              rt        S | j                  | j                  | j
                  |z        S r   r   r"   s     r   ry   zRoot.__pow__   s0    eQ!!~~diiu)<==r   c                 ^    t        | j                        dt        | j                        z  z  S N   )r   r   r   r3   s    r   r4   zRoot.__float__   s$    TYYAdkk(:$:;;r   c                     | j                   |j                   k7  rt        S t        | j                  |j                        xr  t        | j                  |j                        S r   )rf   r   r^   r   r   r"   s     r   r#   zRoot.__eq__   sD    >>U__,!!tyy%**5d/$++W\WcWc:ddr   c                 h    | j                   j                   d| j                  d| j                  dS r   )rf   r7   r   r   r3   s    r   r   zRoot.__repr__   s.    ..))*!DII=4;;/KKr   N)r7   r8   r9   r:   r   r   rg   rk   ro   rq   ry   r4   r#   r   r2   r   r   r   r      s?    9aD KKKK><eLr   r   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)Polarz2Simple Complex class for testing mixed arithmetic.c                      || _         || _        y r   )rW   phi)r   rW   r   s      r   r   zPolar.__init__   s    r   c                     t        |t              rt        S | j                  | j                  |z  | j
                        S r   r   r   r   rf   rW   r   r"   s     r   rg   zPolar.__mul__   /    eQ!!~~dffundhh77r   c                 T    | j                  || j                  z  | j                        S r   rf   rW   r   r"   s     r   rk   zPolar.__rmul__   s    ~~edffndhh77r   c                     t        |t              rt        S | j                  | j                  |z  | j
                        S r   r   r"   s     r   ro   zPolar.__truediv__   r   r   c                 V    | j                  || j                  z  | j                         S r   r   r"   s     r   rq   zPolar.__rtruediv__   s!    ~~edffntxxi88r   c                     t        |t              rt        S | j                  | j                  |z  | j
                  |z        S r   r   r"   s     r   ry   zPolar.__pow__   s4    eQ!!~~dffotxx%/?@@r   c                     | j                   |j                   k7  rt        S t        | j                  |j                        xr  t        | j                  |j                        S r   )rf   r   r^   rW   r   r"   s     r   r#   zPolar.__eq__   sA    >>U__,!!tvvuww/XODHHeii4XXr   c                 h    | j                   j                   d| j                  d| j                  dS r   )rf   r7   rW   r   r3   s    r   r   zPolar.__repr__   s.    ..))*!DFF:R|1EEr   N)r7   r8   r9   r:   r   rg   rk   ro   rq   ry   r#   r   r2   r   r   r   r      s0    <8889AYFr   r   c                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)Rectz8Other simple Complex class for testing mixed arithmetic.c                      || _         || _        y r   )xyr   r   r   s      r   r   zRect.__init__   s    r   c                     t        |t              rt        S | j                  | j                  |z  | j
                  |z        S r   r   r   r   rf   r   r   r"   s     r   rg   zRect.__mul__  3    eQ!!~~dffundffun==r   c                 Z    | j                  || j                  z  || j                  z        S r   )rf   r   r   r"   s     r   rk   zRect.__rmul__  s#    ~~edffnedffn==r   c                     t        |t              rt        S | j                  | j                  |z  | j
                  |z        S r   r   r"   s     r   ro   zRect.__truediv__	  r   r   c                     | j                   | j                   z  | j                  | j                  z  z   }| j                  || j                   |z  z  || j                  |z  z        S r   )r   r   rf   )r   r   rW   s      r   rq   zRect.__rtruediv__  sO    FFTVVOdfftvvo-~~etvvz2ETVVaZ4HIIr   c                 t    t        || j                  z  t        j                  |      | j                  z        S r   )r   r   r?   logr   r"   s     r   r{   zRect.__rpow__  s(    Udff_dhhuo&>??r   c                 B    t        | j                  | j                        S r   )complexr   r   r3   s    r   __complex__zRect.__complex__  s    tvvtvv&&r   c                     | j                   |j                   k7  rt        S t        | j                  |j                        xr  t        | j                  |j                        S r   )rf   r   r^   r   r   r"   s     r   r#   zRect.__eq__  sA    >>U__,!!tvvuww/TODFFEGG4TTr   c                 h    | j                   j                   d| j                  d| j                  dS r   )rf   r7   r   r   r3   s    r   r   zRect.__repr__  s.    ..))*!DFF:RzCCr   N)r7   r8   r9   r:   r   rg   rk   ro   rq   r{   r   r#   r   r2   r   r   r   r      s6    B>>>J@'UDr   r   c                       e Zd Zy)RectComplexNr   r2   r   r   r   r     r   r   r   c                   :   e Zd Zd Zd Zd Zd Zed        Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1ed/        Z2y0)1FractionTestc                 p    | j                  t        |      t        |             | j                  ||       y)z4Asserts that both the types and values are the same.N)assertEqualrZ   r   expectedactuals      r   assertTypedEqualszFractionTest.assertTypedEquals!  s*    hf66*r   c           	          | j                  ||       | j                  t        t        t        |            t        t        t        |                   y)zBAsserts that both the types and values in the tuples are the same.N)assertTupleEqualassertListEquallistmaprZ   r   s      r   assertTypedTupleEqualsz#FractionTest.assertTypedTupleEquals&  s:    h/T#dH"56Sv=N8OPr   c                     	  ||i | | j                  d|j                  z         y# |$ r%}| j                  |t        |             Y d}~yd}~ww xY w)z@Asserts that callable(*args, **kwargs) raises exc_type(message).z%s not raisedN)failr7   r   str)r   exc_typemessagecallableargskwargses          r   assertRaisesMessagez FractionTest.assertRaisesMessage+  sV    	;d%f% IIo(9(99:  	.Wc!f--	.s   ) AAAc                 (   | j                  dt        t                            | j                  dt        t        d                   | j                  dt        t        t        dd                         | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  d	t        t        d
d
                   | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  dt        t        d                   | j                  dt        t        t        dd      d                   | j                  dt        t        dt        dd                         | j                  dt        t        t        dd      t        dd                         | j                  t        dt        dd       | j                  t        t        d       | j                  t        t        d d       | j                  t        t        dd!       | j                  t        t        dd"       | j                  t        t        ddd       y )#Nr   r   )   r   r   r      r   )r   r   r   )r   r   )r   r      
   )r      r   )      m+?R r   r   )r   M      )r   r   	   )i	  i	     c  q   zFraction(12, 0)   r   y      ?      @3/2y                y              ?)r   rX   r   r   ZeroDivisionErrorassertRaisesr   r3   s    r   testInitzFractionTest.testInit5  s   QS!12QqT!23QqAwZ!89+aAh"78+a2h"78Qr2Y!78Qq"X!67+a2h"78k!F)&<=+a!Qn"=>+a1S!9o">?{1Qr1Xqc{3K'LM  !24E!"B	+)Q1)Qq1)Q2.)Q2.)Q1a0r   c                    | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  t        t        t        d             | j                  t        t        t        d             | j                  t        t        t        d	             y )
N)r   r         @r          )   L33f l          皙?naninf-inf)r   rX   r   r  
ValueErrorr   OverflowErrorr3   s    r   testInitFromFloatzFractionTest.testInitFromFloatN  s    QsV!45QtW!56>$QsV,	. 	*au6-E%L9-E&M:r   c           
      2   | j                  dt        t        t        d                         | j                  dt        t        t        d                         | j                  dt        t        t        d                         | j	                  t
        t        t        d             | j	                  t
        t        t        d             | j	                  t        t        t        d	             | j	                  t        t        t        d
             y )N)r   r   z1.1)r      z3.5e-2r   z.000e20r	  snanr
  r  )r   rX   r   r   r  r  r  r3   s    r   testInitFromDecimalz FractionTest.testInitFromDecimalY  s    $Qwu~%67	9$Qwx'8%9:	<$Qwy'9%:;	= 	*a8*a9-GEN;-GFO<r   c                    | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  d	t        t        d
                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  dt        t        d                   | j                  d t        t        d!                   | j                  d"t        t        d#                   | j                  d$t        t        d%                   | j                  d$t        t        d&                   | j                  t        d't        d(       | j                  t
        d)t        d*       | j                  t
        d+t        d,       | j                  t
        d-t        d.       | j                  t
        d/t        d0       | j                  t
        d1t        d2       | j                  t
        d3t        d4       | j                  t
        d5t        d6       | j                  t
        d7t        d8       | j                  t
        d9t        d:       | j                  t
        d;t        d<       | j                  t
        d=t        d>       | j                  t
        d?t        d@       | j                  t
        dAt        dB       | j                  t
        dCt        dD       | j                  t
        dEt        dF       | j                  t
        dGt        dH       | j                  t
        dIt        dJ       | j                  t
        dKt        dL       | j                  t
        dMt        dN       | j                  t
        dOt        dP       | j                  t
        dQt        dR       | j                  t
        dSt        dT       | j                  t
        dUt        dV       | j                  t
        dWt        dX       | j                  t
        dYt        dZ       | j                  t
        d[t        d\       | j                  t
        d]t        d^       | j                  t
        d_t        d`       | j                  t
        dat        db       | j                  t
        dct        dd       de}| j                  t
        df|z   dgz   t        |       | j                  t
        dh|z   dgz   t        di|z          | j                  t
        dj|z   dgz   t        dk|z          | j                  t
        dl|z   dgz   t        dm|z          y )nN)r   r   5)r   r   r   z3 / 2z 
  +3/2)r   z-3/2  )   r   z    013/02 
  )   r   z 3.2 )ir   z -3.2 )r  r   z -3. )r   r   z .6 )r   i5  z32.e-5)i@B r   z1E+06)ir   z-1.23e4r   z .0e+0	z-0.000e0){   r   1_2_3))   k   z1_2_3/3_2_1)  i  z3.14_15)r  l    @9Hz3.14_15e-1_0)e   d   z1.01z1.0_1zFraction(3, 0)z3/0z"Invalid literal for Fraction: '3/'z3/z"Invalid literal for Fraction: '/2'z/2z$Invalid literal for Fraction: '3/+2'z3/+2z%Invalid literal for Fraction: '+ 3/2'z+ 3/2z#Invalid literal for Fraction: '3a2'3a2z%Invalid literal for Fraction: '3/7.2'z3/7.2z%Invalid literal for Fraction: '3.2/7'z3.2/7z!Invalid literal for Fraction: '.'.z!Invalid literal for Fraction: '_'_z"Invalid literal for Fraction: '_1'_1z$Invalid literal for Fraction: '1__2'1__2z"Invalid literal for Fraction: '/_'z/_z#Invalid literal for Fraction: '1_/'z1_/z#Invalid literal for Fraction: '_1/'z_1/z%Invalid literal for Fraction: '1__2/'z1__2/z#Invalid literal for Fraction: '1/_'z1/_z$Invalid literal for Fraction: '1/_1'z1/_1z&Invalid literal for Fraction: '1/1__2'z1/1__2z&Invalid literal for Fraction: '1._111'z1._111z&Invalid literal for Fraction: '1.1__1'z1.1__1z'Invalid literal for Fraction: '1.1e+_1'z1.1e+_1z)Invalid literal for Fraction: '1.1e+1__1'z	1.1e+1__1z&Invalid literal for Fraction: '123.dd'z123.ddz(Invalid literal for Fraction: '123.5_dd'z123.5_ddz$Invalid literal for Fraction: 'dd.5'zdd.5z$Invalid literal for Fraction: '7_dd'7_ddz$Invalid literal for Fraction: '1/dd'z1/ddz(Invalid literal for Fraction: '1/123_dd'z1/123_ddz&Invalid literal for Fraction: '789edd'789eddz(Invalid literal for Fraction: '789e2_dd'789e2_dd399999999999999999999999999999999999999999999999999_zInvalid literal for Fraction: ''z!Invalid literal for Fraction: '1/z1/z!Invalid literal for Fraction: '1.z1.z$Invalid literal for Fraction: '1.1+ez1.1+e)r   rX   r   r   r  r  )r   vals     r   testFromStringzFractionTest.testFromStringf  s   QsV!45QuX!67QwZ!89Q{^!<=+ak":;+a0A.B"CD+aj"9:;q{#;<+aj"9:QvY!78K($<={1W:'>?k!I,&?@Qz]!;<Qz]!;<;qz#:;K-0@$AB{1Y<'@A);q7H+IJ[6%;<[7%<=  /u	 	  <t	 	  <t	 	  >v	 	  ?w	 	  =u	 	  ?w	 	  ?w	 	  ;s	 	  ;s	 	  <t	 	  >v	 	  <t	 	  =u	 	  =u	 	  ?w	 	  =u	 	  >v	 	  @x	 	  @x	 	  @x	 	  Ay	 	  C{	 	  @x	 	  Bz	 	  >v	 	  >v	 	  >v	 	  Bz	 	  @x	 	  Bz	   9C?#Es	 	  ;cACGtcz	 	  ;cACGtcz	 	  >DsJw}	r   c                    t        dd      }|j                  dd       | j                  dt        |             | j	                  t
        t        |dd       | j	                  t
        t        |dd	       | j                  dt        |             d
|_        d|_        | j                  dt        |             | j                  t        d
d      |       y )Nr   r   r   r   r   rU   r   rV         )r-  r   )
r   r   r   rX   r  AttributeErrorsetattrrG   rH   assertNotEqualr   rW   s     r   testImmutablezFractionTest.testImmutable  s    aG	

1bQ0.'1k2F.'1mQGQ0 Q0AaGQ'r   c                    | j                  t        t        j                  d       | j	                  dt        t        j                  d                   d}| j	                  |dft        t        j                  |                   | j	                  dt        t        j                  d                   | j	                  dt        t        j                  d                   | j	                  d	t        t        j                  d
                   | j	                  dt        t        j                  d                   | j	                  t        d      t        t        j                  d                   | j	                  dt        t        j                  d                   | j	                  dt        t        j                  d                   d}||z
  }| j                  t        dt        j                  |       | j                  t        dt        j                  |        | j                  t        dt        j                  |       y )N      @      @)r   r   r   l   {C	 r   r   r        $@)r   g      )l      l+?R r   J-Dr   )r  l           g	@g      (cannot convert Infinity to integer ratio#cannot convert NaN to integer ratio)
r  r   r   r   r   rX   r   r   r  r  )r   bigintr
  r	  s       r   testFromFloatzFractionTest.testFromFloat  s   )Q\\48+all2.>"?@$&!k!,,v2F&GHQ\\$-?!@A+all4.@"AB+all4.@"AB5$Q\\$%78	:vall4.@(AB=$Q\\#%67	9eALL$567Ci  ELL#	 	  ELL3$	  	  =LL#	r   c                 V   | j                  t        t        j                  d       | j	                  t        dd      t        j                  d             | j	                  t        d      t        j                  t        d                   | j	                  t        dd      t        j                  t        d                   | j	                  t        dd      t        j                  t        d	                   | j	                  t        d
      t        j                  t        d                   | j	                  dt        dd      z
  t        j                  t        d                   | j                  t        dt        j                  t        d             | j                  t        dt        j                  t        d             | j                  t        dt        j                  t        d             | j                  t        dt        j                  t        d             y )Nr4  r   r   r   -0r   z0.5  z5e-3i  5e3l       73Me'z 0.999999999999999999999999999999r8  r
  r  r9  r	  r  )	r  r   r   from_decimalr   r   r   r  r  r3   s    r   testFromDecimalzFractionTest.testFromDecimal  sx   )Q^^T:2q1>>"#561q~~gdm<=1b1>>'%.#AB1dQ^^GFO%DE4!.."@AQq&\)(@A	C 	  ENNGEN	, 	  ENNGFO	- 	  =NNGEN	, 	  =NNGFO	-r   c                 8   | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                | j                  t        dd      j                                y )Nr   r   r   r   )
assertTruer   
is_integerassertFalser3   s    r   test_is_integerzFractionTest.test_is_integer3  s   !Q**,-"a++-.!R++-.!Q**,-"a++-.!R++-.1a++-.2q,,./1b,,./2r--/0r   c                 T   | j                  t        dd      j                         d       | j                  t        dd      j                         d       | j                  t        dd      j                         d       | j                  t        dd      j                         d       y )	Nr-  r,  )r   r   )r   r   r   r   )r   r   as_integer_ratior3   s    r   test_as_integer_ratioz"FractionTest.test_as_integer_ratio@  s~    1a113V<2q224g>1b224g>1a113V<r   c                    t        d      }| j                  |j                  d      t        dd             | j                  |j                  d       t        dd             | j                  |j                  d      t        dd             | j                  |j                  d      t        dd             | j                  t        d	d
      j                  d      t        d             | j                  t        d	d
      j                  d      t        dd             | j                  t        d      j                  d      t        d             dD ]-  }| j                  t        dt        d      j                  |       / y )Nz3.1415926535897932i'  r   r   ip   iM  j      r  r  r   r  f   r   )r   r   z$max_denominator should be at least 1)r   r   limit_denominatorr   r  )r   rpiis      r   testLimitDenominatorz!FractionTest.testLimitDenominatorF  s5   $%..u5qc{C#//66$E..s3QsC[A..s3QsC[A366s;QqTB366s;QsC[I1//6!= 	+A$$B!&&+	+r   c                 *   | j                  dt        j                  t        dd                   | j                  dt        j                  t        dd                   | j                  dt        j                  t        dd                   | j                  dt        j
                  t        dd                   | j                  dt        j
                  t        dd                   | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  dt        t        d	d                   | j                  dt        t        d
d                   | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  dt        t        dd                   | j                  t        t        t        d             | j                  dt        t        t        d      t        d                         | j                  dt        t        dd                   y )Nr   ir   r   r   r   r   r   r6  FTr   r   r    22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU?  33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331?        )r   r?   truncr   floorceilintroundr   boolr   r  r  assertAlmostEqualr   r3   s    r   testConversionszFractionTest.testConversionsT  s   r4::aRj#9:q$**Qr2Y"78r4::aRj#9:r499QsBZ#89r499QsBZ#89r3qbz?3q%"b	"23q%"b	"23r53#45r52r#34Qq!W.tAaG}-sE!Ar(O4 	-K0@Au$Qs;'7[9I%JK	M 	vwq2w'78r   c                     t        dd      }| j                  |t        j                         | j	                  t        |      d       | j	                  t        t        |            t
               y )Nr   r   r   )r   assertIsInstancetypingSupportsIntr   r^  rZ   )r   fs     r   testSupportsIntzFractionTest.testSupportsIntl  sO    aGa!3!34Q#c!fs+r   c                     G fddt               t         d       d            }| j                  |j                         | j                  |j                         | j                  |t
        j                         | j                  t        |      d       | j                  t        t        |            t                y )Nc                   J    e Zd ZdZed        Ze fd       Z fdZ fdZy):FractionTest.testIntGuaranteesIntReturn.<locals>.CustomIntz
            Subclass of int with just enough machinery to convince the Fraction
            constructor to produce something with CustomInt numerator and
            denominator.
            c                     | S r   r2   r3   s    r   rU   zDFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.numerator  s    r   c                      d      S r   r2   )r   	CustomInts    r   rV   zFFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.denominator  s     |#r   c                 >     t        |       t        |      z        S r   r^  r   r   rn  s     r   rg   zBFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__mul__  s     TSZ!788r   c                 >     t        |       t        |      z        S r   rp  rq  s     r   __floordiv__zGFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__floordiv__  s     Tc%j!899r   N)	r7   r8   r9   r:   propertyrU   rV   rg   rs  )rn  s   r   rn  rk  x  s:       $ $9:r   rn  r  r   r   )	r^  r   rd  rU   rV   re  rf  r   rZ   )r   rg  rn  s     @r   testIntGuaranteesIntReturnz'FractionTest.testIntGuaranteesIntReturns  s    
	: 	:* imYq\*akk95ammY7a!3!34Q#c!fs+r   c                 l   t         j                   G d d             }t        j                  j	                  |        |d      }t        |      }| j                  |j                  |       | j                  t        |      d        |d      }t        |      }| j                  t        |      d       y )Nc                   6    e Zd ZdZd Zd Zed        Zd ZeZ	y)=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuer   c                     || _         y r   rb   r   s     r   r   zFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__  s	    "
r   c                 ,    t        | j                        S r   )r`  r   r3   s    r   __bool__zFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__  s    DJJ''r   c                     | S r   r2   r3   s    r   rU   zGFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numerator  s	     r   c                     t        d      )Nz&Avoid comparisons in Fraction.__bool__)AssertionErrorr"   s     r   r#   zDFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__  s    $%MNNr   N)
r7   r8   r9   rV   r   r{  rt  rU   r#   r*   r2   r   r   CustomValuerx    s2    K#(  O Fr   r  r   Tr   F)		functoolstotal_orderingr   r   registerr   assertIsrU   r`  )r   r  rU   rW   s       r   testBoolGuarateesBoolReturnz(FractionTest.testBoolGuarateesBoolReturn  s     
	!	!	 	 
"	( 	!!+.N	iLakk9-d1gt$N	iLd1gu%r   c           	         | j                  t        d      t        t        d      d             | j                  t        d      t        t        d      d             | j                  t        d      t        t        d      d             | j                  t        dd      t        t        d	d
      d             | j                  t        dd      t        t        dd
      d             y )Ni8ijr   i      r   r   rV  r  r   i)r   r   r_  r3   s    r   	testRoundzFractionTest.testRound  s    qwagr(:;qwagr(:;queAbE2&67qRy%#sQ*?@qRy%#sQ*?@r   c           
      	   | j                  t        dd      t        dd      t        dd      z          | j                  t        dd      t        dd      t        dd      z
         | j                  t        dd      t        dd      t        dd      z         | j                  t        dd      t        dd      t        dd	      z         | j                  t        dd	      t        dd      t        dd      z         | j                  t        d
d      t        dd	      t        dd      z         | j                  t        t        j
                  t        d      t        d             | j                  dt        dd      t        dd      z         | j                  dt        dd      t        d      z         | j                  t        dd      t        dd      t        dd      z         | j                  t        dd      t        dd      t        dd      z         | j                  t        d      t        dd      ft        t        dd      t        dd                   | j                  t        d      t        dd      ft        t        dd      t        dd                   | j                  t        dd      t        dd      t        d      z         | j                  t        dd      t        dd      t        d      z         | j                  dt        d	      t        dd      z         | j                  t        dd      t        dd             t        t        d      t        dd            }| j                  |j                  d       | j                  |j                  d       t        dd      dz  }| j                  |t        dd             | j                  |j                  d       | j                  |j                  d       t        dd      dz  }| j                  |t        dd             | j                  |j                  d       | j                  |j                  d       t        dd      dz  }| j                  |t        d	d             | j                  |j                  d	       | j                  |j                  d       y )Nr   r   r   r   r     r,  r   r-  rV     r   r   r   r   r   rW            @r   )r   r   r  r  r    truedivr   divmodpowra  realimagrU   rV   )r   zps      r   testArithmeticzFractionTest.testArithmetic  s   1a!Ar(Qq!W"452rAaHqAw$671b1Q8a1g#561a!Aq'AaG"341a!Ar(Qq!W"453AaGaAh$67+X-=-=qtQqTJq!Ar(a1g"56vq|qt';<1a!Aq'AaG"341a!B(Qq!W"45!A$!Q&1a!Aq'*BC!B%1a)6!B(AaG+DE1b1Q7ad?32q1Q7ae#34sAaDAaGO41a1Q7(+"qAwqvvq)#b!HMAaG$a(*b!HNAb!H%b)*b!HNAaG$a(*r   c                 p   | j                  t        dd      t        ddz  dz   d      t        dddz  dz
        z         | j                  t        dd      t        d	d
z   d      t        dd	d
z        z         | j                  dt        dd      ft        t        ddz  dz   d      t        dddz  dz
                     | j                  d	dz   dz  t        d	d
z   d      t        dd	d
z        z         | j                  dt        dd	d
z        t        dd	d
z        z         | j                  dt        d	d	d
z        ft        t        dd	d
z        t        dd	d
z                     | j                  d	dz   dz  t        dd      ft        t        d	d
z   d      t        dd	d
z                     y )Nl     b;efOpUmnP|} l   ~Jw5PHyT#/jei4T r   #   r   l     P ~cegr   l                r   r  r   r   l   _r  r   )r   r   r   r  r3   s    r   testLargeArithmeticz FractionTest.testLargeArithmetic  s   CKMb"fQh!AhBq$99	

 	a01q#vgqMAaCL(	
 	##DLNO 1RVAXx(!Hb"fQh*?@		
 	#XIOq#vgqMQq!S&\)	
 	aCLAaCL(	
 	!QV1Q3<1af.	
 	##3hY"_q1241afWa=!Aq#v,/	
r   c                 <   | j                  t        dd      t        dd      dz          | j                  dt        dd      dz          | j                  dt        dd      dz          | j                  t        dd      dt        dd      z          | j                  ddt        dd      z          | j                  ddt        dd      z          | j                  t        dd      t        dd      dz
         | j                  d	t        dd      dz
         | j                  d
t        dd      dz
         | j                  t        dd      dt        dd      z
         | j                  ddt        dd      z
         | j                  ddt        dd      z
         y )Nr   r   r   g?      ?y?              ?        r   gy        r   g?y?        )r   r   r3   s    r   testMixedArithmeticz FractionTest.testMixedArithmetic  sV   qRy!Ar(Q,7sAaHsN3x1bX)>?qRy!a2h,7sC!Ar(N3x(a2h)>?qRy!Ar(Q,7tQq"X^4y!Ar(h*?@qBxQq"X6sC!Ar(N3x(a2h)>?r   c           
      	   | j                  t        dd      t        dd      dz         | j                  dt        dd      dz         | j                  dt        dd      dz         | j                  t        dd      dt        dd      z         | j                  ddt        dd      z         | j                  ddt        dd      z         | j                  t        dd      t        d	d      z  t        d	d             | j                  t        d	d      t        dd      z  t        d	d             | j                  t        dd      t        d	d      z  t        d
d             | j                  t        d	d      t        dd      z  t        d	d             | j                  t        dd      t	        d      z  t	        t        dd                   | j                  t	        d      t        dd      z  d       | j                  t        dd      t        d      z  t        d             | j                  t        t        j                  t        d      t        dd             | j                  t        dd      t        dd      z  t        t        dd      d             | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        t        dd      t        dd                   | j                  t        dd      t        dd      z  t        dd             | j                  t        t        j                  t        dd      t        dd             | j                  t        dd      t        dd      z  d       | j                  t        dd      t        d      z  t        d             | j                  t        t        j                  t        d      t        dd             | j                  t        dd      t        d      z  t        d             | j                  t        t        j                  t        d      t        dd             y )Nr   r   r  r  rZ  r  r   r   r   r   r,  r-  r         @Xz3/2 * X      @g      @y      @        y      @              @      @)r   r   rR   r   r   r   r   r  r   r    mulr   r   r   r   r`   r3   s    r   testMixedMultiplicationz$FractionTest.testMixedMultiplication  s`   qBx1bA6sAaHsN3x1bX)>?qBxQq"X6sC!Ar(N3x(a2h)>?qAwq!)<<a1gF}Q2Qq!W<a1gFqAwQ2CAJ?s1ay1Q72AaG<qAwa0$qAw-@tAw1a0#61a<#44l96MN)X\\<3Da1gNqAwq!4eAaGQ6GHqAwsA6c1FqAwa3T!Aq'1Q75KLqAwQ)::KPV<WX)X\\5A;!QHtAqzAaG3Z@1a?3#779ST)X\\?33G1aQ1a8C=0(92EF)X\\8C=!Aq'Jr   c           	         | j                  t        dd      t        dd      dz         | j                  dt        dd      dz         | j                  dt        dd      dz         | j                  t        dd      dt        dd      z         | j                  ddt        dd      z         | j                  ddt        dd      z         | j                  t        d	d
      t        d	d      z  t        dd
             | j                  t        dd	      t        d
d	      z  t        dd
             | j                  t        d	d
      t        d	d      z  t        dd             | j                  t        dd	      t        d
d	      z  t        dd
             | j                  t        d
d	      t	        d      z  t	        t        dd                   | j                  t	        d      t        d
d	      z  d       | j                  t        d	d
      t        d      z  t        d             | j                  t        t        j                  t        d      t        d	d
             | j                  t        d	d
      t        dd
      z  t        t        d	d      d             | j                  t        d	d
      t        dd
      z  t        dd             | j                  t        d	d
      t        dd	      z  t        dd             | j                  t        t        j                  t        dd
      t        d
d	             | j                  t        dd	      t        d
d	      z  d       | j                  t        d	d
      t        d      z  t        d             | j                  t        t        j                  t        d      t        d	d
             | j                  t        d	d
      t        d      z  t        d             | j                  t        t        j                  t        d      t        d
d	             y )Nr   r   r  r  rZ  r  r5  y      $@        r   r   r   r   r,  r-  r   r  r  z3/2 / Xr  r   r        ?gQ?g
ףp=
?r  )r   r   rR   r   r   r   r   r  r   r    r  r   r   r   r`   r3   s    r   testMixedDivisionzFractionTest.testMixedDivision2  s4   qBx1bA6sAaHsN3x1bX)>?qQxQq"X6tS1Q8^4y8qBx*?@qAwq!)<<a1gF}Q2Qq!W<a1gFqAwQ2CAJ?s1ay1Q72AaG<qAwa0$qAw-@tAw1a0#61a<#44l96MN)X%5%5|C7H!Aq'RqAwq!4eAaGR6HIqAwsA6eR8HIqAwa3T$5EF)X%5%5uQ{AaGLtAqzAaG3Z@1a?3#779ST)X%5%5s7KQqRSWU1a8C=0(92EF)X%5%5x}a1gNr   c           
         | j                  dt        dd      dz         | j                  dt        dd      dz         | j                  ddt        dd      z         | j                  ddt        dd      z         | j                  ddt        dd      z         | j                  t        dd      t        dd      dz         | j                  d	t        dd      dz         | j                  t        dd      dt        dd      z         | j                  d
dt        dd      z         | j                  d	t        dd      t        d      z         | j                  t        d      t        dd      t        d      z         | j                  t        d      t        dd      t        d      z         | j                  dt        dd      t        d      z         | j                  dt        dd      ft	        t        dd      d             | j                  t	        d	d      t	        t        dd      d             | j                  dt        d      ft	        dt        dd                   | j                  t	        dd	      t	        dt        dd                   | j                  t	        d	t        d            t	        t        dd      t        d                   | j                  t	        d	t        d            t	        t        dd      t        d                   | j                  t	        dt        d            t	        t        dd      t        d                   | j                  t	        dt        d            t	        t        dd      t        d                   | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        t        j                  t        dd      t        d             | j                  t        d      t        dd      z  d       | j                  t        dd      t        d      z  t        d             | j                  t        t        j                  t        d      t        dd             | j                  t        t        j                  t        dd      t        dd             | j                  t        t        j                  t        dd      t        dd             | j                  t        t        j                  t!        dd      t        dd             | j                  t        dd      t#        d      z  t#        d             | j                  t        t        j                  t#        d      t        dd             | j                  t        dd      t%        d      z  t%        d             | j                  t        t        j                  t%        d      t        dd             y )Nr   r   r           r  r   l     d&O!g      "@r  g?r
  r  r   gr   r   r   r,  r-        ?r  z3/2 % X)r   r   r   r   r  rR   r   r  r   r    modr   r   r   r   r   r   r   r`   r3   s    r   testMixedIntegerDivisionz%FractionTest.testMixedIntegerDivisionO  s   q!Ar(a-0sAaHO4r1!R=1vv1b'9:z3!Ar(?;qBx1bA6sAaHsN3qAwAaH5y#!R.9sAaHuU|$;<uV}a2hv.FGuU|Qr2Yu-EFtQr2Yv%>?##Q!RM6!Ar(A3FG##F3$4fQq"Xs6KL##R1Jq!Ar(0CD##F3$4fS!Ar(6KL##F3e$=va2hPUV[P\?]^##F3f$>qBxQVW]Q^@_`##F4u$>qRyRWX]R^@_`##F4v$?"b	SXY_S`AabqAwq!)<<a2hG}Q2Qq!W<a1gFqAwQ2C1I>s1ay1Q72AaG<)X\\1Q7DGDtAw1a0#61a<#44l96MN)X\\<3Da1gN)X\\1Q7E!QKH)X\\1Q7K1<MN)X\\41:qAwG1a?3#779ST)X\\?33G1aQ1a8C=0(92EF)X\\8C=!Aq'Jr   c           	         | j                  t        dd      t        dd      dz         | j                  t        dd      t        dd      dz         | j                  dt        dd      dz         | j                  dt        dd      d	z         | j                  d
dt        dd      z         t        dt        dd            }| j                  d|j                         | j                  d|j                         | j                  t        dd
      dt        dd      z         | j                  dd
t        dd      z         | j                  ddt        dd      z         | j                  d	d	t        dd      z         | j                  t        t        j                  t        dd      d       | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        dd
      t        dd      z  d       | j                  t        d
d      t        dd      z  t               | j                  t        d
d      t        dd      z  d       | j                  t        dd      t        dd      z  d       | j                  t        dd
      t        dd      z  d       | j                  t        dd      t        dd      z  t        dd             | j                  t        dd      t        dd      z  t        dd             | j                  t        d
d      t        dd      z  t               | j                  t        d
d      t        dd      z  d       | j                  t        d
      t        dd      z  t        d
d             | j                  t        d
      t        dd      z  t        d
t        d                   | j                  t        d
      t        dd      z  t        d
t        d                    | j                  t        d
      t        dd      z  t        d
d             | j                  t        dd      t        d      z  t        d             | j                  t        d      t        dd      z  t        d             | j                  t        dd      t        dd      z  t!        dd             | j                  t        dd      t        dd      z  t!        dd             | j                  t        dd      t#        dd      z  t!        dd             | j                  t        dd      t#        dd      z  t!        dd             | j                  t!        d
d      t        dd      z  t!        dd             | j                  t!        d
d      t        dd      z  t!        d d!             | j                  t!        d
d      t        dd      z  t!        d"d#             | j                  t!        d
d      t        dd      z  t!        d$d             | j                  t        dd      t%        d      z  t%        d             | j                  t%        d      t        dd      z  t%        d             | j                  t        dd      t'        d      z  t'        d             | j                  t'        d      t        dd      z  t'        d             y )%Nr  r   r   r   r   r  r  rZ  r  r-  r   r   r  g      ?r   r  r  r  ir   g      @rH  y              @r  g      r  z1.5 ** XzX ** 1.5g      @r  g       @@   r,  g      ?rI  g      ?)r   r   r  ra  r  r   r  r  r  r    r   rd  r   r   r   r   r   r   r   r`   )r   r  s     r   testMixedPowerzFractionTest.testMixedPower{  s   qay!Ar(b.9qay!B(a-8sAaHO4x1bh)?@q1!Q<0AaGq!&&)AFF#qAwaAh7sQ!Aq'\2tSAb!H_5x(qBx)?@+X\\Aq'2	' 	qAw#a)3Qr1X>qAw#b!*4a2h?qQx3r1:5qRyAqAw#a)3U;a1gR3U;qAw#b!*4e<qQx3r1:5v>s1ayAaG3U;s1ayAaG3SQZ@s1ayAb!H4a2h?c!Qi1R83U;s1ayAb!H4e<tAw!Aq'143<@tAw!Aq'141Q4=AtAw!B(2DQqTENCtAw!B(2DDMB1aL$55|J7OPc*a1g5|J7OPqAw$q!*4eD#6FGqAw$q!*4eCoFqAw+a*;;U4=MNqAw+a*;;U3_MuQ{a1g5uS#GuQ{a1g5uR|DuQ{aAh6h8KLuQ{aAh6eT8JK1aOC$88/*:UV-1a8/*:UV1aHSM18J3GH#!Aq'18J3GHr   c           	          | j                  t        t        j                  t	        dd      t        d             | j                  t        t        j                  t        d      t	        dd             y )Nr   r   z	3.1415926)r  r   r    addr   r   r3   s    r   testMixingWithDecimalz"FractionTest.testMixingWithDecimal  sN    )X\\Ab'7;#7	9)X\\!+.!B	9r   c                    | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k7         | j                  t        dd      t        dd      k7         y )Nr   r   r   )rC  r   rE  r3   s    r   testComparisonszFractionTest.testComparisons  s   !Q!Aq')*1a1Q7*+!Q1Q7*+!Q1Q7*+1aAaG+,!Q1Q7*+1aAaG+,1aAaG+,!Q1Q7*+r   c                    | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k(         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k\         | j                  t        dd      t        dd      k\         | j                  t        dd      t        dd      k\         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      kD         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k         | j                  t        dd      t        dd      k\         | j                  t        dd      t        dd      k\         | j                  t        dd      t        dd      k\         y )Nr   r   r   r-  r   )rC  r   r=   rE  r3   s    r   testComparisonsDummyRationalz)FractionTest.testComparisonsDummyRational  sf   !Q=A#667a+qAw671aM!Q$778q!,!Q78!Q-1"5561a=A#6671a=A#6671a=A#6671a=A#667!Q-1"556!Q=A#667!Q=A#6671aM!Q$7781aM!Q$778!Q=A#667!Q=A#667a+a1g56q!,qAw67q!,qAw67q!,qAw67q!,qAw67a+a1g56a+qAw67a+qAw67q!,!Q78q!,!Q78a+qAw67a+qAw67r   c                    t        d      }t        dd      }| j                  ||k7         | j                  ||k  xs ||kD         | j                  ||k(         | j                  ||k  xr ||k\         | j                  ||k7         | j                  ||k  xs ||kD         | j                  ||k(         | j                  ||k  xr ||k\         y )NgUUUUUU?r   r   )r
   r   rC  rE  r   s      r   testComparisonsDummyFloatz&FractionTest.testComparisonsDummyFloat  s    uaGQAQ'a a*AF+QAQ'a a*AF+r   c                    | j                  dt        dd      k         | j                  dt        dd      k         | j                  t        dd      dk         | j                  t        dd      dk         | j                  t        dd      dk         | j                  t        dd      dk         | j                  dt        dd      k         | j                  dt        dd      k         | j                  t        d	      t        dd      k         | j                  t        d
      t        dd      k         | j                  t        d      t        dd      k         | j                  t        dd      t        d	      k         | j                  t        dd      t        d
      k         | j                  t        dd      t        d      k         y )Nr   r   r-  r   r   333333?皙?r  r
  r  r   r   r	  r  r      r      rC  r   rE  r   r3   s    r   testMixedLesszFractionTest.testMixedLess  sd   AaG$Qq!W%!Q!$1a1%!Q#&1a3'a1g&qAw'u!Q/0f!R01u"a01!Q%,./2rU6]233uU|34r   c                    | j                  dt        dd      k         | j                  dt        dd      k         | j                  t        dd      dk         | j                  t        dd      dk         | j                  dt        dd      k         | j                  dt        dd      k         | j                  t        dd      dk         | j                  t        dd      dk         | j                  t        d	      t        dd      k         | j                  t        d
      t        dd      k         | j                  t        d      t        dd      k         | j                  t        dd      t        d	      k         | j                  t        dd      t        d
      k         | j                  t        dd      t        d      k         y )Nr  r   r   r  r  r-  r   r   r
  r  r   r   r	  r  r   r  r   r  r  r  r3   s    r   testMixedLessEqualzFractionTest.testMixedLessEqual  sd   qAw'!Q(!Q3'1aC(Qq!W%a1g&!Q1%1aA&u1a01f1b12u2q12!Q5</02reFm343e45r   c           
      `   | j                  t        d      t        d      k(         | j                  dt        t        t        j                  d      dz               k         | j                  dt        t        j                  d      dz         k         | j                  dt        t        j                  d      dz
        k         | j                  dt        t        j                  d      dz
        kD         | j                  dt        t        j                  d      dz         k\         y )Nr   r7  r   )rE  r   r   r?   r[  rC  r3   s    r   testBigFloatComparisonsz$FractionTest.testBigFloatComparisons  s    6eFm34a

4(81(<&= >>?qD!1A!56674::d#3a#7!889qD!1A!56674::d#3a#7!889r   c                 ^   | j                  t        d      t        d      k(         | j                  t        t
        j                  t        d      t        d             | j                  t        t
        j                  t        d      t        d             t        dd      }t        dd      }t        dd      }| j                  ||k(         | j                  ||k7         | j                  ||k(         | j                  ||k7         t
        j                  t
        j                  t
        j                  t
        j                  fD ]b  }| j                  t        |||       | j                  t        |||       | j                  t        |||       | j                  t        |||       d y )Nr   r   r  r  r  g?)rE  r   r   r  r   r    r/   r&   rC  r)   r,   )r   r   r  wr   s        r   testBigComplexComparisonsz&FractionTest.testBigComplexComparisons  s<   6gfo56)X[[!F)WV_M)X[[!F)WV_MaGE3E3Qa a Q++x{{HKKD 	3BiQ2iQ2iQ2iQ2		3r   c                    | j                  dt        dd      k(         | j                  dt        dd      k(         | j                  t        dd      dk(         | j                  t        dd      dk(         | j                  dt        dd      k(         | j                  dt        dd      k(         | j                  t        dd      dk(         | j                  t        dd      dk(         | j                  t        dd      t        d	      k(         | j                  t        d	      t        dd
      k(         | j                  t        dd      t        d      k(         | j                  t        d      t        dd      k(         y )Nr  r   r   r  r  r-  r   r   r	  r   r
  r  r  r3   s    r   testMixedEqualzFractionTest.testMixedEqual+  s.   qAw'!Q(!Q3'1aC(Qq!W%a1g&!Q1%1aA&1aE%L01u1a011aE%L01v!Aq'12r   c           	      t   | j                  dt        t        dd                   | j                  dt        t        d                   | j                  dt        t        dd                   | j                  d	t        t        dd                   | j                  d
t        t        dd                   y )NzFraction(7, 3)r   r   z Fraction(6283185307, 2000000000)3.1415926535z#Fraction(-1, 100000000000000000000)r   l   Fx:^V z7/37)r   reprr   r   r3   s    r   testStringificationz FractionTest.testStringification9  s    )4!Q=9;a/0	2>a7m,	.AaG-c!Aq'l+r   c           	      Z   t         j                  j                  }t         j                  j                  }| j	                  t        d      t        t        dd                   | j	                  t        ddz        t        t        ddz                     | j                  t        t        d            t        t        d                   | j	                  |t        t        d|                   | j	                  t        t        d            t        d      j                                y )	Nr  r   r   r   2   r   r   r   )
sys	hash_infomodulusr
  r   hashr   r0  r   __hash__)r   hmodhinfs      r   testHashzFractionTest.testHashB  s    }}$$}}  cD1aM2b"ftAb"fI7Dv/aiAtAaJ/0 	aeaenn&67r   c                 0   t        d      }d|dddddf\  }}}}}}}t        ||z
        t        dd      kD  r?|}||z   |dz   }}||z   |dz   }}||z  |z  }||z  }t        ||z
        t        dd      kD  r?| j                  t        j                  |       y )Nr   r   r       ʚ;r      )r   absra  r?   pi)	r   threelaststsr   nar   das	            r   testApproximatePizFractionTest.testApproximatePiM  s     !$%uaAq"$<!q!QAr!e)nqE{*EbD"Q$rAbD"R%rAQ!AFA !e)nqE{* 	tww*r   c                 V   t        d      }ddt        d      dddf\  }}}}}}t        ||z
        t        dd      kD  rF|}|dz  }|||dz
  z  z  }|||z  z  }|dz  }|||z  |z  z  }t        ||z
        t        dd      kD  rF| j                  t        j                  d      |       y )Nr   r   r  r   r   )r   r  ra  r?   cos)r   r   rS  r  r  factrA   signs           r   testApproximateCos1z FractionTest.testApproximateCos1Z  s     aD'(!QqT1a':$5!T3!e)nqE{*EFAA1ID1q5LCBJDtd""A !e)nqE{* 	txx{A.r   c           
         t        dd      }t        dd      }t        dt        j                  dz         D ]'  }| j                  |t        t        ||                   ) | j                  t        |      t        t        |                   | j                  t        |      t        t        |                   | j                  t        |      t        t        |                   | j                  t        |      t        t        |                   | j                  |t        |             | j                  |t        |             y )Nr  r   r   r   )r   rR   rangepickleHIGHEST_PROTOCOLr   r   r   idr   r   r0  r   )r   rW   drprotos       r   test_copy_deepcopy_picklez&FractionTest.test_copy_deepcopy_pickleh  s    b!H2q!1f559: 	8EQeAuo 67	8A47,A8A;0BrFBtBxL1BrFBx|$45r48,r8B<0r   c                 V    t        dd      }| j                  t        t        |dd       y )Nr  r   r\   r   )r   r  r.  r/  r1  s     r   
test_slotszFractionTest.test_slotst  s#    b!H.'1c2>r   c                 j    G d dt               }t        j                   |d       |d            }| j                  |j                  d       | j                  |j
                  d       | j                  t        |j                        |       | j                  t        |j
                        |       y )Nc                   >    e Zd Zd Zd Zd Zed        Zed        Zy)-FractionTest.test_int_subclass.<locals>.myintc                 N     t        |       t        |       t        |      z        S r   rZ   r^  r"   s     r   rg   z5FractionTest.test_int_subclass.<locals>.myint.__mul__{  s     !tDz#d)c%j"899r   c                 N     t        |       t        |       t        |      z        S r   r  r"   s     r   rs  z:FractionTest.test_int_subclass.<locals>.myint.__floordiv__}  s     !tDz#d)s5z"9::r   c                 R     t        |       t        |       t        |      z        }|S r   r  )r   r   r   s      r   rt   z5FractionTest.test_int_subclass.<locals>.myint.__mod__  s$    DJs4y3u:56r   c                 6     t        |       t        |             S r   r  r3   s    r   rU   z7FractionTest.test_int_subclass.<locals>.myint.numerator  s    !tDz#d),,r   c                 $     t        |       d      S r   )rZ   r3   s    r   rV   z9FractionTest.test_int_subclass.<locals>.myint.denominator  s    !tDz!}$r   N)	r7   r8   r9   rg   rs  rt   rt  rU   rV   r2   r   r   myintr  z  s7    :; - -% %r   r  r   r,  r   r   )r^  rE   rF   r   rU   rV   rZ   )r   r  rg  s      r   test_int_subclasszFractionTest.test_int_subclassy  s    	%C 	% uU|U5\:a(*akk*E2amm,e4r   c                    t        dd      ddft        dd      ddft        d      ddft        d      dd	fg}|D ]>  \  }}}| j                  ||
      5  | j                  t        ||      |       d d d        @ y # 1 sw Y   KxY w)Nr   r    z1/3r   z-1/33r  -3fractionspecr   subTestr   formatr   	testcasesr  r  r   s        r    test_format_no_presentation_typez-FractionTest.test_format_no_presentation_type  s     q!Wb% r1Xr6"qT2sOrUB	
	 )2 	C$HdHxd; C  $!7BC C	CC Cs   A==B	c                    g t        dd      ddft        dd      ddft        dd      ddft        dd      dd	ft        dd
      ddft        dd      ddft        dd      ddft        dd      ddft        d
d      ddft        dd      ddft        dd      ddft        d      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        d      ddft        d      ddft        d      ddft        d      dd ft        d!      dd"ft        d#      dd"ft        d$d      dd%ft        d&d      dd'ft        d(      dd)ft        d*      dd+ft        d,      dd-ft        dd      d.d/ft        dd      d0d1ft        d2      d3d4ft        d5d6      d7d8ft        d2      d9d:ft        d5d6      d;d8ft        d5d6      d<d8ft        d5d6      d=d>ft        d?      d@dAft        dB      dCdDft        dEd6dz        dFdGf}|D ]>  \  }}}| j                  ||H      5  | j                  t        ||      |       d d d        @ y # 1 sw Y   KxY w)INr   r   z.6ez6.666667e-01z1.500000e+00r  z1.538462e-01   z8.695652e-02!   z6.060606e-02z6.500000e+00   z1.000000e+01z1.150000e+01z1.650000e+01r   z.3ez	0.000e+00r   r>  z	1.000e-03r  z	1.000e-02r   z	1.000e-01z	1.000e+00z	1.000e+01z	1.000e+02z	1.000e+03z99.999994999999z9.999999e+01z	99.999995z1.000000e+02z99.999995000001r   z-6.666667e-01r  z-1.500000e+00iz-1.000000e+021e1000z1.000e+1000z1e-1000z1.000e-1000z.6Ez6.666667E-01z.1ez6.7e-01z0.995z.0ez1e+00r   r   r   z3.142857e+00z#.0ez1.e+00z11.6ez12.6ez13.6ez 3.142857e+00z1234567.123456z,.5e1.23457e+06z
123.123456z012_.2ez0_001.23e+02r   zz.6ez-3.091690e-85r  r  r	  s        r   test_format_e_presentation_typez,FractionTest.test_format_e_presentation_type  s   3
q!We^,3
q!We^,3
 q"Xun-3
 q"Xun-	3

 q"Xun-3
 r1Xun-3
 r1Xun-3
 r1Xun-3
 r1Xun-3
 q!We^,3
 q!We^,3
 qT5+&3
 q$Z,3
  q#Y{+!3
" q"Xuk*#3
$ q!We[)%3
& rUE;''3
( sVUK()3
* tWe[)+3
.  !5.9/3
0 {^UN313
2  !5.933
6 r1Xuo.73
8 r1Xuo.93
: tWe_-;3
> x[%/?3
@ y\5-0A3
D q!We^,E3
H q!WeY'I3
J wZ(K3
N r1XsN+O3
R wZ*S3
V r1Xw/W3
X r1Xw/Y3
Z r1Xw0[3
^  &-8_3
` |_i8a3
d r1c6]FO4e3
	h )2 	C$HdHxd; C  $!7BC C	CC Cs   I66I?	c                    g t        dd      ddft        dd      ddft        dd      ddft        d	d      dd
ft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        d      ddft        dd      ddft        dd      ddft        d      ddft        d d      dd!ft        d"      dd#ft        d$      dd%ft        d&      dd%ft        d'      dd(ft        d)      dd(ft        d*      dd+ft        d,      dd+ft        d-      dd.ft        d/      dd0ft        d1      dd2ft        d3      dd2ft        d4      dd5ft        d6      dd5ft        d7      dd8ft        d9      dd8ft        d:      dd;ft        dd      ddft        dd      d<dft        dd      d=d>ft        dd      d?d@ft        dAd      ddBft        dAd      d<dBft        dAd      d=dBft        dAd      d?dBft        dd      dCdDft        dEd      dCdFft        dd      dCdGft        d d      dCdHft        dd      dIdJft        dEd      dIdKft        dd      dIdLft        d d      dIdMft        dN      dOdft        dN      dPdft        dN      dQdRft        dN      dSdTft        dU      dOdft        dU      dPdft        dU      dQdRft        dU      dSdTft        dd      dVdWft        dX      dVdYft        dX      dZd[ft        dd      d\dWft        dd      d]d^ft        dd      d_dft        dd      d`dft        dd      dadbft        dd      dcddft        dd      dedfft        dd      dgdhft        dAd      didjft        dd      didkft        dAd      dldBft        dAd      dmdnft        dAd      dodpft        dAd      dqdrft        dAd      dsdtft        dAd      dudvft        dAd      dwdxft        dAd      dydzft        dAd      d{d|ft        dAd      d}d~ft        dAd      ddft        dAd      ddft        dAd      ddft        dAd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        d      ddft        d      ddft        d      ddft        d      ddft        dd      ddft        dd      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        dī      ddft        dī      ddft        dd      ddft        dd      ddft        dd      ddft        ddʫ      ddft        dd̫      ddft        ddΫ      ddft        ddЫ      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd      ddft        dd߫      ddft        dd߫      ddft        dd߫      ddft        dd֫      ddft        dd߫      ddft        dd߫      ddft        dd߫      ddft        dd߫      ddf}|D ]>  \  }}}| j                  ||      5  | j                  t        ||      |       d d d        @ y # 1 sw Y   KxY w)Nr   r   z.2fz0.00r   z0.33r   z0.67r-  z1.33r  0.12z0.38r  z0.08   z0.01r  r   r   z.5fz3.14286	399024789z399024789.00i i  z.50fz43.14159265392142104470871594159265392142104470871594rg  z3.142857z0.000000iz	-3.142857z1.225z1.22z1.2250000001z1.23z1.2349999999z1.235z1.24z1.245z1.2450000001z1.25z1.2549999999z1.255z1.26z-1.225z-1.22z-1.2250000001z-1.23z-1.2349999999z-1.235z-1.24z-1.245z-1.2450000001z-1.25z-1.2549999999z-1.255z-1.26z-.2fz+.2fz+0.67z .2fz 0.67r   z-0.67z.0f0r   r=  r  r  z#.0fz0.z-0.3.z-3.z-0.001zz.2fz-z.2fz+z.2fz+0.00z z.2fz 0.00z0.001z6.2fz  0.67i90  z12345.0012fz12345.000000z>6.2fz<6.2fz0.67  z^3.2fz^4.2fz^5.2fz0.67 z^6.2fz 0.67 z^7.2fz 0.67  z^8.2fz  0.67  z=+8.2fz-   0.67z+   0.67zX>3.2fzX>7.2fzXX-0.67zX<7.2fz-0.67XXzX^7.2fzX-0.67XzX=7.2fz-XX0.67z >7.2fz  -0.67z >7.2fz  -0.67z
>7.2fz

-0.67z	>7.2fz		-0.67z>>7.2fz>>-0.67z<>7.2fz<<-0.67u   →>7.2fu   →→-0.67z07.2fz-000.67z-07.2fz+07.2fz+000.67z 07.2fz 000.67z0.2fz>0.2fz<0.2fz^0.2fz=0.2fz00.2fz,.2fz,.7fz	0.6666667z
123456.789z
123,456.791234567z1,234,567.0012345678z12,345,678.00z,fz12,345,678.000000z_.2fz_.7fz
123_456.79z1_234_567.00z12_345_678.00	1234.5678z07,.2fz1,234.57z08,.2fz09,.2fz	01,234.57z010,.2fz
001,234.57z011,.2fz0,001,234.57z012,.2fz013,.2fz00,001,234.57z014,.2fz000,001,234.57z015,.2fz0,000,001,234.57z016,.2fz
-1234.5678z	-1,234.57z
-01,234.57z-001,234.57z-0,001,234.57z-00,001,234.57z-000,001,234.57z-0,000,001,234.57z06,.0fz-1,235z07,.0fz-01,235z08,.0fz-001,235z09,.0fz
-0,001,235z0=12,.2fz00001,234.57z12.34zX>0.2fz.5Fz.2%z314.29%z14.29%F   z1.43%i  z0.14%iX  z0.01%ip z0.00%z.0%z14%z#.0%z14.%r  z,.2%z	1,428.57%z7.2%z8.2%z 314.29%z08.2%z0314.29%i	  r>  z2.54i	  z2.55iK
  z2.64z.1fz0.01   3   z0.1      z0.2r  r  r	  s        r   test_format_f_presentation_typez,FractionTest.test_format_f_presentation_type  s=   {
q!WeV${
 q!WeV${
 q!WeV$	{

 q!WeV${
 q!WeV${
 q!WeV${
 q"Xuf%{
 q#Yv&{
 q#Yv&{
 r1Xui({
 {^UN3{
 vuvCE{
" r1XsJ'#{
$ qT3
#%{
& sAY[)'{
* wZ'+{
, ~v.-{
. ~v./{
0 wZ'1{
2 wZ'3{
4 ~v.5{
6 ~v.7{
8 wZ'9{
: x[%);{
< 0={
> 0?{
@ x[%)A{
B x[%)C{
D 0E{
F 0G{
H x[%)I{
L q!WeV$M{
N q!Wff%O{
P q!Wfg&Q{
R q!Wfg&S{
T r1Xug&U{
V r1Xvw'W{
X r1Xvw'Y{
Z r1Xvw'[{
^ q!WeS!_{
` r1Xud#a{
b r1Xuc"c{
d sAYt$e{
h q!Wfd#i{
j r1Xvu%k{
l r1Xvt$m{
n sAY&o{
r x[&&)s{
t x['6*u{
v x['7+w{
x x['7+y{
z wZ({{
| wZ&)}{
~ wZ'*{
@ wZ'*A{
D q!Wfh'E{
F uXvz*G{
H uXun-I{
L q!Wgx(M{
N q!Wgx(O{
P q!Wgv&Q{
R q!Wgv&S{
T q!Wgw'U{
V q!Wgx(W{
X q!Wgy)Y{
Z q!Wgz*[{
^ r1Xx,_{
` q!Wh
+a{
d r1Xx)e{
f r1Xx+g{
h r1Xx+i{
j r1Xx+k{
l r1Xx+m{
n r1Xx+o{
r r1X{O4s{
t r1Xy+.u{
v r1Xy+.w{
x r1Xx+y{
z r1Xx+{{
| r1Xz=1}{
@ r1Xw	*A{
B r1Xx+C{
D q!Wh	*E{
F q!Wh	*G{
L q!Wff%M{
N q!Wgv&O{
P q!Wgv&Q{
R q!Wgv&S{
T q!Wgv&U{
X q!Wgv&Y{
\ q!Wff%]{
^ q!Wfk*_{
` |_fl3a{
b y\6>2c{
d z]FO4e{
f z]D"56g{
j q!Wff%k{
l q!Wfk*m{
n |_fl3o{
p y\6>2q{
r z]FO4s{
v {^Xz2w{
x {^Xz2y{
z {^X{3{{
| {^Y5}{
~ {^Y7{
@ {^Y7A{
B {^Y8C{
D {^Y(89E{
F {^Y(:;G{
H {^Y(:;I{
J |_h4K{
L |_h4M{
N |_h4O{
P |_i6Q{
R |_i7S{
T |_i9U{
V |_i9W{
X |_i)9:Y{
Z |_i):;[{
\ |_i)<=]{
` |_h1a{
b |_h	2c{
d |_h
3e{
f |_h5g{
r {^Z8s{
| wZ)}{
~ wZ7+{
B r1Xui(C{
F r1Xui(G{
H q!WeX&I{
J q"Xug&K{
L q#Yw'M{
N q$Z(O{
P q%[%)Q{
R q!WeU#S{
T q!Wff%U{
V sAY,W{
X r1Xvy)Y{
Z r1Xvz*[{
\ r1Xw
+]{
` q!WeV$a{
b q!WeV$c{
d q!WeV$e{
f tT]E6*g{
h tT]E6*i{
j tT]E6*k{
l q#Yu%m{
n r4[%'o{
p r4[%'q{
r sD\5%(s{
t sD\5%(u{
	x )2 	C$HdHxd; C  $!7BC C	CC Cs   	c11c:	c                 B   g t        d      ddft        d      ddft        d      ddft        d      dd	ft        d
      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      ddft        d      dd ft        d!      d"d#ft        d$      d"d#ft        d%      d"d&ft        d'      d"d&ft        d(      d"d)ft        d*      d"d)ft        d+      d"d,ft        d-      d"d,ft        d.      dd/ft        d0      dd1ft        d2      dd3ft        d4      dd5ft        d6      dd7ft        d.      d8d9ft        d0      d8d0ft        d2      d8d2ft        d4      d8d4ft        d6      d8d:ft        d      d;dft        d      d;d<ft        d=      d>d?ft        d@      dAdBft        dC      dAdDft        dE      dAdFft        dG      dAdHft        dG      dIdJft        dK      dAdLft        dK      dIdMft        d@      dNdBft        dC      dNdDft        dE      dNdFft        dG      dNdHft        dG      dOdJft        dK      dNdLft        dP      dQdRft        dSdTdUz        dVdWf}|D ]>  \  }}}| j                  ||X      5  | j                  t        ||      |       d d d        @ y # 1 sw Y   KxY w)YNz0.000012345678z.6gz1.23457e-05z0.00012345678z0.000123457z0.0012345678z
0.00123457z0.012345678z	0.0123457z
0.12345678z0.123457z	1.2345678z1.23457z	12.345678z12.3457z	123.45678z123.457r  z1234.57z	12345.678z12345.7z	123456.78123457z	1234567.8r  z
9.99999e+2z.4g1000z
9.99999e-8z1e-07z
9.99999e+8z1e+09z-0.115z.2gz-0.12z-0.125z-0.135z-0.14z-0.145z0.115r  z0.125z0.135z0.14z0.145r   r  z123.400z123.4z123.000123z120.00012012000000z1.2e+07z#.6gz0.00000z1.20000e+07z.6Gz1.23457E+06r  rC   z3.14159z0.000031415z.0gz3e-05z
0.00031415z0.0003z0.31415z0.3z3.1415r  z#.0gr  z31.415z3e+01z3.e+01z.1gz#.1gl            z_.25g18_446_744_073_709_551_616r   r   r  zgz-3.09169e-85r  r  r	  s        r   test_format_g_presentation_typez,FractionTest.test_format_g_presentation_type  s   =
 %7=
6=
 ~|4=
 }uk2	=

 |_eZ0=
 {^UI.=
 {^UI.=
 {^UI.=
 {^UI.=
 {^UI.=
 {^UH-=
 {^UM2=
 |_eV,=
 |_eW-=
  |_eW-!=
$ x[%)%=
& x[%)'=
( x[%))=
* x[%)+=
, wZ'-=
. wZ'/=
0 wZ'1=
2 wZ'3=
6 qT5#7=
8 y\5'*9=
: y\5%(;=
< y\5%(==
> z]E9-?=
B qT69%C=
D y\69-E=
F y\69-G=
H y\69-I=
J z]FM2K=
N {^UI.O=
P {^UM2Q=
T ~Y/U=
X }ug.Y=
Z |_eX.[=
\ y\5%(]=
^ x[%%_=
` x[&$'a=
b x[%)c=
d x[&(+e=
f }ug.g=
h |_eX.i=
j y\5%(k=
l x[%%m=
n x[&$'o=
p x[%)q=
t uXw <=u=
x r1c6]D.1y=
	| )2 	C$HdHxd; C  $!7BC C	CC Cs   -LL	c                 X   t        dd      }| j                  t              5  t        |d        d d d        g d}|D ]G  }| j	                  |      5  | j                  t
              5  t        ||       d d d        d d d        I y # 1 sw Y   ZxY w# 1 sw Y    xY w# 1 sw Y   lxY w)Nr   r   )Q6fzX>010fzX<010fzX^010fzX=010fz0>010fz0<010fz0^010fz0=010fz>010fz<010fz^010fz=010ez=010fz=010gz=010%z>00.2fz>00f006fz.010fz.02fz.000fz.ez.fz.gz.%zZ.2f)r  )r   r  r   r  r  r  )r   r  invalid_specsr  s       r   test_invalid_formatsz!FractionTest.test_invalid_formats  s    Q7y) 	#8T"	#!
D " 	+D4( +&&z2 +8T*++ +	+K	# 	#N+ ++ +s/   BB (B5B BBB  B)	c                    t        t        d      5 }|D ]K  }|j                  d      r|j                         }|s)t	        t
        j                  |j                  d            \  }}|j                         \  }}|dk(  rn|dd  }| j                  ||      5  t        t        |            }| j                  t        ||      |       |r | j                  t        | |      d|z          t        |      }| j                  t        t        ||            t        |             | j                  t        t        | |            t        d|z                d d d        N 	 d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)	Nzutf-8)encodingz--z->z%rr   )fmtarg-)openformat_testfile
startswithstripr   r   splitr  r   r   r   r  )	r   testfilelinelhsrhsr3  r4  fmt2rg  s	            r   test_float_format_testfilez'FractionTest.test_float_format_testfile  s`   /G4 	P  P??4(zz|syy$**T*:;S99;S$;12w\\cs\3 P%*A$$VAt_c:((D)939E#A$$U6!T?%;U3ZH$$U61"d+;%<eC#I>NOP PP	P 	PP P	P 	Ps%   B	E;B>E.E;.E83E;;FN)3r7   r8   r9   r   r   r   r  r   r  r  r*  r2  r;  rA  rF  rK  rT  rb  rh  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r+  r0  r@  r2   r   r   r   r     s'   +
Q
;12 ; ;=GR( 8-01=+90, ,D"&HA!+F 
D@K<O:*KX1If9	,8@
,5$6":3$3,	8+/
1?
5,
C8Ct@CDBCH*+X P Pr   r   __main__)4r:   cmathdecimalr   test.supportr   r?   r   r    rE   r  osr  re  unittestr   r   r  r   r   rF   r   pathdirname__file__curdirtest_dirjoinr7  objectr
   r=   rR   rX   r^   r`   r   Realr  r   Complexr   r   r   r   r   r   r   TestCaser   r7   mainr2   r   r   <module>rR     s   !   *      	 
      77??8$1		'',,x)DE @8F 8@AI&& A(A&< &<P	8 	   l #	h 	    )-V -V\     # L L:   d F F6    D D8    	$ 	~P8$$ ~PB( zHMMO r   