+
    Bi0                       R t ^ RIHt ^ RIHtHt ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIt^ RIHtHt ]	P(                  t]P,                  P/                  ]4      ;'       g    ]P2                  t]P,                  P7                  ]RR4      t ! R R	]4      t ! R
 R]4      t ! R R]	P(                  4      t R t!R t" ! R R4      t# ! R R]#4      t$]PJ                  PM                  ]$4        ! R R]#4      t']PP                  PM                  ]'4        ! R R4      t)]PT                  PM                  ])4        ! R R4      t+]PJ                  PM                  ]+4        ! R R4      t,]PP                  PM                  ],4        ! R R4      t-]PP                  PM                  ]-4        ! R R]-].4      t/ ! R  R!4      t0 ! R" R#]Pb                  4      t2]3R$8X  d   ]Ph                  ! 4        R# R# )%zTests for Lib/fractions.py.)Decimal)requires_IEEE_754adjust_int_max_str_digitsN)copydeepcopy)dumpsloadsmathdatazformatfloat_testcases.txtc                   ^   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 t]tRtV tR# )
DummyFloatz8Dummy float class for testing comparisons with Fractionsc                T    \        V\        4      '       g   \        R 4      hWn        R# )z-DummyFloat can only be initialized from floatN)
isinstancefloat	TypeErrorvalueselfr   s   &&*/usr/lib/python3.14/test/test_fractions.py__init__DummyFloat.__init__   s     %''KLL
    c                    \        V\        P                  4      '       d'   V! \        P	                  V P
                  4      V4      # \        V\        4      '       d   V! V P
                  VP
                  4      # \        # N)r   numbersRationalF
from_floatr   r   NotImplemented)r   otherops   &&&r   _richcmpDummyFloat._richcmp   sW    eW--..all4::.66z**djj%++..!!r   c                B    V P                  V\        P                  4      # r   )r    operatoreqr   r   s   &&r   __eq__DummyFloat.__eq__'       DMM%$EEr   c                B    V P                  V\        P                  4      # r   )r    r#   ler%   s   &&r   __le__DummyFloat.__le__(   r(   r   c                B    V P                  V\        P                  4      # r   )r    r#   ltr%   s   &&r   __lt__DummyFloat.__lt__)   r(   r   c                B    V P                  V\        P                  4      # r   )r    r#   ger%   s   &&r   __ge__DummyFloat.__ge__*   r(   r   c                B    V P                  V\        P                  4      # r   )r    r#   gtr%   s   &&r   __gt__DummyFloat.__gt__+   r(   r   c                    R # r    r   s   &r   	__float__DummyFloat.__float__.       r   c                    R # r   r:   r%   s   &&r   __sub__DummyFloat.__sub__2   r>   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r    r&   r+   r/   r3   r7   r<   r@   __rsub____static_attributes____classdictcell____classdict__s   @r   r   r      s5     B
" FEEEEHFHr   r   c                   N   a  ] tR t^7t o RtR tR tR tR tR t	R t
R tR	tV tR
# )DummyRationalzATest comparison of Fraction with a naive rational implementation.c                f    \         P                  ! W4      pW,          V n        W#,          V n        R # r   )mathgcdnumden)r   rR   rS   gs   &&& r   r   DummyRational.__init__:   s"    HHS88r   c                    \        V\        P                  4      '       d;   V P                  VP                  8H  ;'       d    V P
                  VP                  8H  # \        # r   )r   	fractionsFractionrR   
_numeratorrS   _denominatorr   r%   s   &&r   r&   DummyRational.__eq__?   sP    eY//00HH 0 00 3 3HH 2 224 "!r   c                x    V P                   VP                  ,          V P                  VP                  ,          8  # r   rR   rZ   rS   rY   r%   s   &&r   r/   DummyRational.__lt__F   +    xx%,,,txx%:J:J/JJKr   c                x    V P                   VP                  ,          V P                  VP                  ,          8  # r   r]   r%   s   &&r   r7   DummyRational.__gt__I   r_   r   c                x    V P                   VP                  ,          V P                  VP                  ,          8*  # r   r]   r%   s   &&r   r+   DummyRational.__le__L   +    xx%,,,5;K;K0KKLr   c                x    V P                   VP                  ,          V P                  VP                  ,          8  # r   r]   r%   s   &&r   r3   DummyRational.__ge__O   rd   r   c                    R # r   r:   r;   s   &r   r<   DummyRational.__float__T   r>   r   )rS   rR   N)rC   rD   rE   rF   rG   r   r&   r/   r7   r+   r3   r<   rI   rJ   rK   s   @r   rN   rN   7   s4     K
"LLMM
8 8r   rN   c                       ] tR t^WtRtRtR# )DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.r:   N)rC   rD   rE   rF   rG   rI   r:   r   r   rj   rj   W   s    @r   rj   c                 2    V P                   V P                  3# r   	numeratordenominator)rs   &r   _componentsrp   [   s    KK''r   c                     \        V 4      \        V4      8H  ;'       d#    W8H  ;'       g    \        P                  ! W4      # r   )typerP   isclose)abs   &&r   typed_approx_eqrv   ^   s0    7d1g@@16#?#?T\\!-?@r   c                   l   a  ] tR t^at o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )SymboliczSimple non-numeric class for testing mixed arithmetic.
It is not Integral, Rational, Real or Complex, and cannot be converted
to int, float or complex. but it supports some arithmetic operations.
c                    Wn         R # r   rB   r   s   &&r   r   Symbolic.__init__f   s    
r   c                f    \        V\        4      '       d   \        # V P                  V  R V 24      # z * r   r   r   	__class__r%   s   &&r   __mul__Symbolic.__mul__h   /    eQ!!~~c%122r   c                .    V P                  V R V  24      # r|   r~   r%   s   &&r   __rmul__Symbolic.__rmul__l       ~~s4&122r   c                f    \        V\        4      '       d   \        # V P                  V  R V 24      # z / r}   r%   s   &&r   __truediv__Symbolic.__truediv__n   r   r   c                .    V P                  V R V  24      # r   r   r%   s   &&r   __rtruediv__Symbolic.__rtruediv__r   r   r   c                f    \        V\        4      '       d   \        # V P                  V  R V 24      # z % r}   r%   s   &&r   __mod__Symbolic.__mod__t   r   r   c                .    V P                  V R V  24      # r   r   r%   s   &&r   __rmod__Symbolic.__rmod__x   r   r   c                f    \        V\        4      '       d   \        # V P                  V  R V 24      # z ** r}   r%   s   &&r   __pow__Symbolic.__pow__z   s/    eQ!!~~d5'233r   c                .    V P                  V R V  24      # r   r   r%   s   &&r   __rpow__Symbolic.__rpow__~   s    ~~tD6233r   c                v    VP                   V P                   8w  d   \        # V P                  VP                  8H  # r   )r~   r   r   r%   s   &&r   r&   Symbolic.__eq__   s+    ??dnn,!!zzU[[((r   c                    V P                    # r   rB   r;   s   &r   __str__Symbolic.__str__   s    **r   c                P    V P                   P                   R V P                  : R2# )())r~   rC   r   r;   s   &r   __repr__Symbolic.__repr__   s$    ..))*!DJJ>;;r   rB   N)rC   rD   rE   rF   rG   r   r   r   r   r   r   r   r   r   r&   r   r   rI   rJ   rK   s   @r   rx   rx   a   sK     33333344)< <r   rx   c                       ] tR t^tRtR# )SymbolicRealr:   NrC   rD   rE   rF   rI   r:   r   r   r   r          r   r   c                       ] tR t^tRtR# )SymbolicComplexr:   Nr   r:   r   r   r   r      r   r   r   c                   f   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tRtV tR# )Ratz3Simple Rational class for testing mixed arithmetic.c                    Wn         W n        R # r   rl   )r   nds   &&&r   r   Rat.__init__   s    r   c                    \        V\        4      '       d   \        # V P                  V P                  VP                  ,          V P
                  VP
                  ,          4      # r   r   r   r   r~   rm   rn   r%   s   &&r   r   Rat.__mul__   sK    eQ!!~~dnnu>"..1B1BBD 	Dr   c                    V P                  VP                  V P                  ,          VP                  V P                  ,          4      # r   r~   rm   rn   r%   s   &&r   r   Rat.__rmul__   s8    ~~eoo>#//$2B2BBD 	Dr   c                    \        V\        4      '       d   \        # V P                  V P                  VP
                  ,          V P
                  VP                  ,          4      # r   r   r%   s   &&r   r   Rat.__truediv__   sK    eQ!!~~dnnu/@/@@"..@B 	Br   c                    V P                  VP                  V P                  ,          VP                  V P                  ,          4      # r   r   r%   s   &&r   r   Rat.__rtruediv__   s8    ~~eoo0@0@@#//$..@B 	Br   c                    \        V\        4      '       d   \        # V P                  VP                  ,          pV P                  V P                  VP                  ,          V,          V4      # r   )r   r   r   rn   rm   r~   r   r   r   s   && r   r   Rat.__mod__   sN    eQ!!u.~~dnnu/@/@@1DaHHr   c                    VP                   V P                  ,          pV P                  VP                  V P                   ,          V,          V4      # r   )rn   rm   r~   r   s   && r   r   Rat.__rmod__   s;    .~~eoo0@0@@1DaHHr   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  V,          4      # r   r   r%   s   &&r   r   Rat.__pow__   s?    eQ!!~~dnn5"..%79 	9r   c                <    V P                   V P                  ,          # r   rl   r;   s   &r   r<   Rat.__float__   s    ~~ 0 000r   c                    V P                   VP                   8w  d   \        # \        V P                  VP                  4      ;'       d!    \        V P                  VP                  4      # r   )r~   r   rv   rm   rn   r%   s   &&r   r&   
Rat.__eq__   sR    >>U__,!!@ E E 0 0%2C2CD	Fr   c                l    V P                   P                   R V P                  : RV P                  : R2# r   z, r   )r~   rC   rm   rn   r;   s   &r   r   Rat.__repr__   s3    ..))*!DNN+=R@P@P?SSTUUr   )rn   rm   N)rC   rD   rE   rF   rG   r   r   r   r   r   r   r   r   r<   r&   r   rI   rJ   rK   s   @r   r   r      sM     =D
DB
BI
D9
1F
V Vr   r   c                   l   a  ] tR t^t o Rt]! ^4      3R ltR tR tR t	R t
R tR tR	 tR
 tRtV tR# )Rootz/Simple Real class for testing mixed arithmetic.c                    Wn         W n        R # r   basedegree)r   vr   s   &&&r   r   Root.__init__   s    	r   c                    \        V\        4      '       d   \        # V P                  V P                  WP
                  ,          ,          V P
                  4      # r   r   r   r   r~   r   r   r%   s   &&r   r   Root.__mul__   :    eQ!!~~dii%*<<dkkJJr   c                |    V P                  WP                  ,          V P                  ,          V P                  4      # r   r~   r   r   r%   s   &&r   r   Root.__rmul__   '    ~~e[[0499<dkkJJr   c                    \        V\        4      '       d   \        # V P                  V P                  WP
                  ,          ,          V P
                  4      # r   r   r%   s   &&r   r   Root.__truediv__   r   r   c                |    V P                  WP                  ,          V P                  ,          V P                  4      # r   r   r%   s   &&r   r   Root.__rtruediv__   r   r   c                    \        V\        4      '       d   \        # V P                  V P                  V P
                  V,          4      # r   r   r%   s   &&r   r   Root.__pow__   s3    eQ!!~~diiu)<==r   c                n    \        V P                  4      ^\        V P                  4      ,          ,          #    )r   r   r   r;   s   &r   r<   Root.__float__   s$    TYYAdkk(:$:;;r   c                    V P                   VP                   8w  d   \        # \        V P                  VP                  4      ;'       d!    \        V P                  VP                  4      # r   )r~   r   rv   r   r   r%   s   &&r   r&   Root.__eq__   sG    >>U__,!!tyy%**5dd/$++W\WcWc:ddr   c                l    V P                   P                   R V P                  : RV P                  : R2# r   )r~   rC   r   r   r;   s   &r   r   Root.__repr__   s.    ..))*!DII=4;;/KKr   r   N)rC   rD   rE   rF   rG   r   r   r   r   r   r   r   r<   r&   r   rI   rJ   rK   s   @r   r   r      sH     9aD KKKK><eL Lr   r   c                   T   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
tV tR# )Polarz2Simple Complex class for testing mixed arithmetic.c                    Wn         W n        R # r   )ro   phi)r   ro   r   s   &&&r   r   Polar.__init__   s    r   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  4      # r   r   r   r   r~   ro   r   r%   s   &&r   r   Polar.__mul__   2    eQ!!~~dffundhh77r   c                Z    V P                  WP                  ,          V P                  4      # r   r~   ro   r   r%   s   &&r   r   Polar.__rmul__   s    ~~effndhh77r   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  4      # r   r   r%   s   &&r   r   Polar.__truediv__   r   r   c                \    V P                  WP                  ,          V P                  ) 4      # r   r   r%   s   &&r   r   Polar.__rtruediv__   s    ~~effntxxi88r   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  V,          4      # r   r   r%   s   &&r   r   Polar.__pow__   s7    eQ!!~~dffotxx%/?@@r   c                    V P                   VP                   8w  d   \        # \        V P                  VP                  4      ;'       d!    \        V P                  VP                  4      # r   )r~   r   rv   ro   r   r%   s   &&r   r&   Polar.__eq__   sD    >>U__,!!tvvuww/XXODHHeii4XXr   c                l    V P                   P                   R V P                  : RV P                  : R2# r   )r~   rC   ro   r   r;   s   &r   r   Polar.__repr__   s.    ..))*!DFF:R|1EEr   )r   ro   N)rC   rD   rE   rF   rG   r   r   r   r   r   r   r&   r   rI   rJ   rK   s   @r   r   r      s9     <8889AYF Fr   r   c                   Z   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tRtV tR# )Rectz8Other simple Complex class for testing mixed arithmetic.c                    Wn         W n        R # r   xyr   r  r  s   &&&r   r   Rect.__init__   s    r   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  V,          4      # r   r   r   r   r~   r  r  r%   s   &&r   r   Rect.__mul__  6    eQ!!~~dffundffun==r   c                f    V P                  WP                  ,          WP                  ,          4      # r   )r~   r  r  r%   s   &&r   r   Rect.__rmul__  s    ~~effneffn==r   c                    \        V\        4      '       d   \        # V P                  V P                  V,          V P
                  V,          4      # r   r  r%   s   &&r   r   Rect.__truediv__  r	  r   c                    V P                   V P                   ,          V P                  V P                  ,          ,           pV P                  WP                   V,          ,          WP                  V,          ,          4      # r   )r  r  r~   )r   r   ro   s   && r   r   Rect.__rtruediv__  sK    FFTVVOdfftvvo-~~evvz2EVVaZ4HIIr   c                    \        WP                  ,          \        P                  ! V4      V P                  ,          4      # r   )r   r  rP   logr  r%   s   &&r   r   Rect.__rpow__  s&    Uff_dhhuo&>??r   c                B    \        V P                  V P                  4      # r   )complexr  r  r;   s   &r   __complex__Rect.__complex__  s    tvvtvv&&r   c                    V P                   VP                   8w  d   \        # \        V P                  VP                  4      ;'       d!    \        V P                  VP                  4      # r   )r~   r   rv   r  r  r%   s   &&r   r&   Rect.__eq__  sD    >>U__,!!tvvuww/TTODFFEGG4TTr   c                l    V P                   P                   R V P                  : RV P                  : R2# r   )r~   rC   r  r  r;   s   &r   r   Rect.__repr__  s.    ..))*!DFF:RzCCr   r  N)rC   rD   rE   rF   rG   r   r   r   r   r   r   r  r&   r   rI   rJ   rK   s   @r   r   r      s?     B>>>J@'UD Dr   r   c                       ] tR tRtRtR# )RectComplexi  r:   Nr   r:   r   r   r  r    r   r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )Ratioi  c                    Wn         R # r   _ratio)r   ratios   &&r   r   Ratio.__init__  s    r   c                    V P                   # r   r   r;   s   &r   as_integer_ratioRatio.as_integer_ratio!  s    {{r   r   N)rC   rD   rE   rF   r   r%  rI   rJ   rK   s   @r   r  r    s      r   r  c                   x  a  ] tR tRt o R tR tR tR t]R 4       t	R t
R tR	 tR
 tR tR tR t]3R ltR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*R' t+R( t,R) t-R* t.R+ t/R, t0R- t1R. t2R/ t3R0 t4R1 t5R2 t6R3 t7]R4 4       t8R5 t9R6 t:R7t;V t<R8# )9FractionTesti%  c                p    V P                  \        V4      \        V4      4       V P                  W4       R# )z4Asserts that both the types and values are the same.N)assertEqualrr   r   expectedactuals   &&&r   assertTypedEqualsFractionTest.assertTypedEquals'  s(    hf6*r   c           	         V P                  W4       V P                  \        \        \        V4      4      \        \        \        V4      4      4       R# )zBAsserts that both the types and values in the tuples are the same.N)assertTupleEqualassertListEquallistmaprr   r+  s   &&&r   assertTypedTupleEquals#FractionTest.assertTypedTupleEquals,  s8    h/T#dH"56Sv=N8OPr   c                     V! V/ VB  V P                  RVP                  ,          4       R#   T d'   pT P                  T\        T4      4        Rp?R# Rp?ii ; i)z@Asserts that callable(*args, **kwargs) raises exc_type(message).z%s not raisedN)failrC   r*  str)r   exc_typemessagecallableargskwargses   &&&&*, r   assertRaisesMessage FractionTest.assertRaisesMessage1  sV    	;d%f% IIo(9(99:  	.Wc!f--	.s   . AAAc                *   V P                  R\        \        4       4      4       V P                  R\        \        ^4      4      4       V P                  R	\        \        \        ^^4      4      4      4       V P                  R\        \        R
^4      4      4       V P                  R\        \        ^R
4      4      4       V P                  R\        \        RR4      4      4       V P                  R\        \        ^^
4      4      4       V P                  R\        \        ^^4      4      4       V P                  R\        \        R4      4      4       V P                  R\        \        \        ^^4      ^4      4      4       V P                  R\        \        ^\        R^	4      4      4      4       V P                  R\        \        \        ^^4      \        R^q4      4      4      4       V P                  \        R\        ^^ 4       V P                  \        \        R4       V P                  \        \        R^4       V P                  \        \        ^R4       V P                  \        \        ^R4       V P                  \        \        ^^^4       R# )    c  zFraction(12, 0)3/2y                              ?NrC  r   )   r   rH     )rK  r   )r   r   )r      )rH           m+?R )rO  r   )rJ  M   )   )i	  i	  y      ?      @)r*  rp   r   r@  ZeroDivisionErrorassertRaisesr   r;   s   &r   testInitFractionTest.testInit;  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                   V P                  R\        \        R4      4      4       V P                  R\        \        R	4      4      4       V P                  R
\        \        R4      4      4       V P                  \        \        \        R4      4       V P                  \        \        \        R4      4       V P                  \        \        \        R4      4       R# )rR        @皙?naninf-infN)rR  rM  rG         )   L33f l          )r*  rp   r   rU  
ValueErrorr   OverflowErrorr;   s   &r   testInitFromFloatFractionTest.testInitFromFloatT  s    QsV!45QtW!56>$QsV,	. 	*au6-E%L9-E&M:r   c           
     4   V P                  R	\        \        \        R4      4      4      4       V P                  R
\        \        \        R4      4      4      4       V P                  R\        \        \        R4      4      4      4       V P	                  \
        \        \        R4      4       V P	                  \
        \        \        R4      4       V P	                  \        \        \        R4      4       V P	                  \        \        \        R4      4       R# )   1.1z3.5e-2z.000e20r[  snanr\  r]  Nre  
   )rH     rG  )r*  rp   r   r   rU  r`  ra  r;   s   &r   testInitFromDecimal FractionTest.testInitFromDecimal_  s    $Qwu~%67	9$Qwx'8%9:	<$Qwy'9%:;	= 	*a8*a9-GEN;-GFO<r   c           
        V P                  R\        \        \        R4      4      4      4       RpV P	                  \
        V\        \        4       V P                  \
        \        \        ^4      4       V P                  \        \        \        R4      4       V P                  \        \        \        R4      4       V P                  \
        \        \        R4      ^4       V P                  \
        \        ^\        R4      4        ! R R4      pV! 4       pR Vn        V P                  R\        \        V4      4      4        ! R R\        4      p ! R RVR	7      pV P	                  \
        V\        V4       V P	                  \
        V\        V! 4       4       V P                  \
        \        P                  V4       V P                  \
        \        P                  V! 4       4       R
# )rH  zZargument should be a string or a Rational instance or have the as_integer_ratio\(\) methodc                       ] tR tRtRtR# )0FractionTest.testInitFromIntegerRatio.<locals>.Ai{  r:   Nr   r:   r   r   Aro  {      r   rp  c                      R# 	   rt  rR  r:   r:   r   r   <lambda>7FractionTest.testInitFromIntegerRatio.<locals>.<lambda>~      Vr   c                   &   a  ] tR tRt o R tRtV tR# )0FractionTest.testInitFromIntegerRatio.<locals>.Mi  c                    R# )re  )re  rt  r:   r;   s   &r   r%  AFractionTest.testInitFromIntegerRatio.<locals>.M.as_integer_ratio  s    r   r:   N)rC   rD   rE   rF   r%  rI   rJ   rK   s   @r   Mrz    s      r   r}  c                       ] tR tRtRtR# )0FractionTest.testInitFromIntegerRatio.<locals>.Bi  r:   Nr   r:   r   r   Br    rq  r   r  )	metaclassNrI  )rH  )rH  rJ  r   )rJ  rH  )rS  rt  ru  )r*  rp   r   r  assertRaisesRegexr   rU  r`  r%  rr   from_number)r   errmsgrp  rt   r}  r  s   &     r   testInitFromIntegerRatio%FractionTest.testInitFromIntegerRatiol  sR   QuV}-=!>?: 	y&!U;)Qa1*at5*ay)9:)Qfr:)Q5?;	 	C+QqT!23	 		! 	y&!Q7y&!QS9)Q]]A6)Q]]AC8r   c                
  a  S P                  RT\        \        R4      4      4       S P                  RT\        \        R4      4      4       S P                  RU\        \        R4      4      4       S P                  RU\        \        R4      4      4       S P                  RU\        \        R4      4      4       S P                  RV\        \        R4      4      4       S P                  RW\        \        R4      4      4       S P                  RX\        \        R4      4      4       S P                  RX\        \        R	4      4      4       S P                  RY\        \        R
4      4      4       S P                  RZ\        \        R4      4      4       S P                  R[\        \        R4      4      4       S P                  R\\        \        R4      4      4       S P                  R]\        \        R4      4      4       S P                  R^\        \        R4      4      4       S P                  R_\        \        R4      4      4       S P                  R_\        \        R4      4      4       S P                  R`\        \        R4      4      4       S P                  Ra\        \        R4      4      4       S P                  Rb\        \        R4      4      4       S P                  Rc\        \        R4      4      4       S P                  Rd\        \        R4      4      4       S P                  Rd\        \        R4      4      4       S P                  \        R\        R4       V 3R lpV! R4       V! R4       V! R4       V! R4       V! R4       V! R 4       V! R!4       V! R"4       V! R#4       V! R$4       V! R%4       V! R&4       V! R'4       V! R(4       V! R)4       V! R*4       V! R+4       V! R,4       V! R-4       V! R.4       V! R/4       V! R04       V! R14       V! R24       V! R34       V! R44       V! R54       V! R64       V! R74       V! R84       V! R94       V! R:4       V! R;4       V! R<4       V! R=4       V! R>4       V! R?4       V! R@4       V! RA4       V! RB4       V! RC4       V! RD4       V! RE4       V! RF4       V! RG4       V! RH4       V! RI4       V! RJ4       V! RK4       V! RL4       V! RM4       V! RN4       RepV! V4       V! ROV,           4       V! RPV,           4       V! R8V,           4       V! RQV,           4       V! RRV,           4       RS# )frR  5005rE  z3 / 2z 
  +3/2z-3/2  z    0013/002 
  z 3.2 z003.2z -3.2 z -3. z .6 z32.e-5z1E+06z-1.23e4z .0e+0	z-0.000e01_2_3z1_2_3/3_2_1z3.14_15z3.14_15e-1_0z1.01z1.0_1zFraction(3, 0)z3/0c                 d   < R \        V 4      ,           pSP                  \        V\        V 4       R# )zInvalid literal for Fraction: N)reprr@  r`  r   )smsgr   s   & r   check_invalid2FractionTest.testFromString.<locals>.check_invalid  s%    2T!W<C$$Za;r   z3//2z3/+2z3/-2z+ 3/2z- 3/23a2z3/7.2z3.2/7z3 .2z3. 2z3.2 e1z3.2e 1z3.+2z3.-20x10z0x10/1z1/0x10z0x10.z0x10.1z1.0x10z1.0e0x10   ³u   ³/2u   3/²u   ³.2u   3.²u   3.2e²   ¼.__11__2z/_z1_/z_1/z1__2/z1/_z1/_1z1/1__2z1._111z1.1__1z1.1e+_1z	1.1e+1__1z123.ddz123.5_ddzdd.57_ddz1/ddz1/123_dd789edd789e2_dd1/1.z1.1+e1.1eN)rR  r   )rJ  rM  )rM  )   rM  )   rR  )irR  )r  r   )rJ  rR  )r   i5  )i@B r   )ir   rG  ){   r   ))   k   )  i  )r  l    @9H)e   d   399999999999999999999999999999999999999999999999999_)r*  rp   r   r@  rT  )r   r  vals   f  r   testFromStringFractionTest.testFromString  sP   QsV!45QuX!67QuX!67QwZ!89Q{^!<=+ak":;+a0C.D"EF+aj"9:+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		< 	ddffggeggffhhfffhhghhj!dffffhdccdfdeegefhhhi k"hj!fffj!hj!cdSj!dSj!cCi gm$fsl#r   c                    R p\        V4      ;_uu_ 4        RpRV,          p^
V,          ^,
          ^	,          pV P                  V^3\        \        V4      4      4       V P	                  \
        V\        VR,           4       V P                  V^3\        \        VR,           4      4      4       V P	                  \
        V\        VR,           4       V P                  ^V3\        \        RV,           4      4      4       V P	                  \
        V\        RV,           4       V P                  ^
V^,           ,          ^,
          ^	,          ^
V,          3\        \        RV,           4      4      4       V P	                  \
        V\        RV,           4       V P                  V^
V,          3\        \        R	V,           4      4      4       V P	                  \
        V\        R
V,           4       V P	                  \
        V\        RV,           4       V P                  R\        \        RRV,          ,           4      4      4       V P	                  \
        V\        RRV^,           ,          ,           4       RRR4       R#   + '       g   i     R# ; i)  zExceeds the limit1r  z1/2r  z1/1r  rf  r  z.1z1.1e1r  0Nrh  )r   r*  rp   r   r  r`  )r   	maxdigitsr  r  rR   s   &    r   test_limit_intFractionTest.test_limit_int  s   	&y11%C	/Cy=1$q(Cc1X{1S6':;"":sAsSyAc1X{1S4Z='AB"":sAsU{CaX{1TCZ='AB"":sAus{CrIaK014q8"i-H(4#:79"":sAus{Cc2y=1;qs|3LM"":sAtczB"":sAw}EX{1VcIo5M3N'OP"":sAvyQR{@S7ST# 2111s   II<<J	c                   \        ^^4      pVP                  ^^4       V P                  R\        V4      4       V P	                  \
        \        VR^4       V P	                  \
        \        VR^4       V P                  R\        V4      4       ^Vn        ^Vn        V P                  R\        V4      4       V P                  \        ^^4      V4       R# )rH  rm   rn   NrI  )   rM  )
r   r   r*  rp   rU  AttributeErrorsetattrrY   rZ   assertNotEqualr   ro   s   & r   testImmutableFractionTest.testImmutable	  s    aG	

1bQ0.'1k2F.'1mQGQ0 Q0AaGQ'r   c                   V P                  \        \        P                  R	4       V P	                  R
\        \        P                  ^
4      4      4       RpV P	                  V^3\        \        P                  V4      4      4       V P	                  R\        \        P                  R4      4      4       V P	                  R
\        \        P                  R4      4      4       V P	                  R\        \        P                  R4      4      4       V P	                  R\        \        P                  R4      4      4       V P	                  \        R4      \        \        P                  R4      4      4       V P	                  R\        \        P                  R4      4      4       V P	                  R\        \        P                  R4      4      4       RpW",
          pV P                  \        R\        P                  V4       V P                  \        R\        P                  V) 4       V P                  \        R\        P                  V4       R# )rJ  l   {C	       $@J-Dg	@g      (cannot convert Infinity to integer ratio#cannot convert NaN to integer ratioN      @      @)ri  r   rG  r^  )rM  g      )l      l+?R r   rO  )r_  l           )
rU  r   r   r   r*  rp   r   r@  ra  r`  )r   bigintr\  r[  s   &   r   testFromFloat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i  ELL#	 	  ELL3$	  	  =LL#	r   c                `   V P                  \        \        P                  R4       V P	                  \        ^
^4      \        P                  ^
4      4       V P	                  \        ^ 4      \        P                  \        R4      4      4       V P	                  \        ^^
4      \        P                  \        R4      4      4       V P	                  \        ^R4      \        P                  \        R4      4      4       V P	                  \        R4      \        P                  \        R4      4      4       V P	                  ^\        ^R4      ,
          \        P                  \        R4      4      4       V P                  \        R\        P                  \        R4      4       V P                  \        R\        P                  \        R	4      4       V P                  \        R
\        P                  \        R4      4       V P                  \        R
\        P                  \        R4      4       R# )rJ  -0z0.5  z5e-3r  5e3r  r\  r]  r  r[  rg  Nr  l       73Me'z 0.999999999999999999999999999999)	rU  r   r   from_decimalr*  r   r@  ra  r`  r;   s   &r   testFromDecimalFractionTest.testFromDecimal5  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                  a a VV 3R  lpV! ^
^
^4       V! R^^4       V! \        R4      ^^4       V! \        ^^4      ^^4       V! \        ^^4      ^^4       V! \        ^^4      ^^4       V! \	        R	4      ^^4       S P                  \        SP                  R
4       S P                  \        SP                  R4       S P                  \        SP                  . 4       S P                  \        SP                  \        R4      4       S P                  \        SP                  \        R4      4        ! R R4      pV! 4       pR Vn
        V! V^	^4       R# )c                    < SP                  V 4      pSP                  \        V4      S4       SP                  VP                  V4       SP                  VP
                  V4       R # r   )r  assertIsrr   r*  rm   rn   )argrm   rn   fclsr   s   &&& r   check*FractionTest.testFromNumber.<locals>.checkN  sK    $AMM$q'3'Q[[)4Q]]K8r   rY  z2.5z5/2r\  c                       ] tR tRtRtR# )&FractionTest.testFromNumber.<locals>.Aib  r:   Nr   r:   r   r   rp  r  b  rq  r   rp  c                      R# rs  r:   r:   r   r   rv  -FractionTest.testFromNumber.<locals>.<lambda>e  rx  r   N)   rH  r  )r   r   rj   r   r  rU  r   r  ra  r   r%  )r   r  r  rp  rt   s   ff   r   testFromNumberFractionTest.testFromNumberM  s   	9 	b"ac1agena#aAhAmB"B*c"aj"a eGnb!$)S__d;)S__e<)S__b9-%,G-'%.I	 	C+aAr   c                0    V P                  \        4       R # r   )r  rj   r;   s   &r   testFromNumber_subclass$FractionTest.testFromNumber_subclassh  s    M*r   c                :   V P                  \        ^^4      P                  4       4       V P                  \        R^4      P                  4       4       V P                  \        ^R4      P                  4       4       V P                  \        ^^4      P                  4       4       V P                  \        R^4      P                  4       4       V P                  \        ^R4      P                  4       4       V P                  \        ^^4      P                  4       4       V P                  \        R^4      P                  4       4       V P                  \        ^R4      P                  4       4       V P                  \        RR4      P                  4       4       R# )r   NrK  rL  )
assertTruer   
is_integerassertFalser;   s   &r   test_is_integerFractionTest.test_is_integerl  s   !Q**,-"a++-.!R++-.!Q**,-"a++-.!R++-.1a++-.2q,,./1b,,./2r--/0r   c                V   V P                  \        ^^4      P                  4       R4       V P                  \        R^4      P                  4       R4       V P                  \        ^R4      P                  4       R4       V P                  \        ^ ^4      P                  4       R4       R# )r  N)rM  rJ  )rL  rJ  rG  )r*  r   r%  r;   s   &r   test_as_integer_ratio"FractionTest.test_as_integer_ratioy  s~    1a113V<2q224g>1b224g>1a113V<r   c                   \        R 4      pV P                  VP                  R4      \        R^q4      4       V P                  VP                  R4      ) \        R^q4      4       V P                  VP                  ^q4      \        R^q4      4       V P                  VP                  ^p4      \        R^j4      4       V P                  \        ^^4      P                  ^d4      \        ^4      4       V P                  \        ^^4      P                  ^e4      \        ^f^e4      4       V P                  \        ^ 4      P                  R4      \        ^ 4      4       R F.  pV P                  \        R\        ^4      P                  V4       K0  	  R# )z3.1415926535897932i'  rD  iM  z$max_denominator should be at least 1Ni)rC  rK  )r   r*  limit_denominatorr@  r`  )r   rpiis   &  r   testLimitDenominator!FractionTest.testLimitDenominator  s0   $%..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                6   V P                  R\        P                  ! \        R^
4      4      4       V P                  ^\        P                  ! \        ^^
4      4      4       V P                  R\        P                  ! \        R^
4      4      4       V P                  R\        P
                  ! \        R^
4      4      4       V P                  R\        P
                  ! \        R^
4      4      4       V P                  R\        \        R^
4      4      4       V P                  ^ \        \        R^
4      4      4       V P                  ^ \        \        R	^
4      4      4       V P                  R\        \        R
^
4      4      4       V P                  R\        \        R^
4      4      4       V P                  R\        \        ^ ^4      4      4       V P                  R\        \        ^^4      4      4       V P                  R\        \        ^^
4      4      4       V P                  \        \        \        R4      4       V P                  R\        \        \        R4      \        R4      4      4      4       V P                  R\        \        ^^
4      4      4       R# )r   FTrZ  NrK  irL  rS  r    22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU?  33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331?        )r.  rP   truncr   floorceilintroundr*  boolr   rU  ra  assertAlmostEqualr  r;   s   &r   testConversionsFractionTest.testConversions  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                    \        ^^4      pV P                  V\        P                  4       V P	                  \        V4      ^4       V P	                  \        \        V4      4      \
        4       R# )rJ  N)r   assertIsInstancetypingSupportsIntr*  r  rr   )r   r  s   & r   testSupportsIntFractionTest.testSupportsInt  sO    aGa!3!34Q#c!fs+r   c                  a  ! V3R  lR\         4      o\        S! ^4      S! ^4      4      pV P                  VP                  S4       V P                  VP                  S4       V P                  V\
        P                  4       V P                  \        V4      ^4       V P                  \        \        V4      4      \         4       R# )c                   d   <a  ] tR tRt o Rt]R 4       t]V3R l4       tV3R ltV3R lt	Rt
V tR# )	:FractionTest.testIntGuaranteesIntReturn.<locals>.CustomInti  z
Subclass of int with just enough machinery to convince the Fraction
constructor to produce something with CustomInt numerator and
denominator.
c                    V # r   r:   r;   s   &r   rm   DFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.numerator  s    r   c                   < S! ^4      # r   r:   )r   	CustomInts   &r   rn   FFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.denominator  s     |#r   c                F   < S! \        V 4      \        V4      ,          4      # r   r  r   r   r  s   &&r   r   BFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__mul__  s     TSZ!788r   c                F   < S! \        V 4      \        V4      ,          4      # r   r  r  s   &&r   __floordiv__GFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__floordiv__  s     Tc%j!899r   r:   N)rC   rD   rE   rF   rG   propertyrm   rn   r   r  rI   rJ   )rL   r  s   @r   r  r    sA        $ $9: :r   r  N)	r  r   r   rm   rn   r  r  r*  rr   )r   r  r  s   & @r   testIntGuaranteesIntReturn'FractionTest.testIntGuaranteesIntReturn  s    
	: 	:* imYq\*akk95ammY7a!3!34Q#c!fs+r   c                n   \         P                   ! R  R4      4       p\        P                  P	                  V4       V! ^4      p\        V4      pV P                  VP                  V4       V P                  \        V4      R4       V! ^ 4      p\        V4      pV P                  \        V4      R4       R# )c                   J   a  ] tR tRt o ^tR tR t]R 4       tR t	]	t
RtV tR# )=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuei  c                    Wn         R # r   rB   r   s   &&r   r   FFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__  s    "
r   c                ,    \        V P                  4      # r   )r  r   r;   s   &r   __bool__FFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__  s    DJJ''r   c                    V # r   r:   r;   s   &r   rm   GFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numerator  s	     r   c                    \        R 4      h)z&Avoid comparisons in Fraction.__bool__)AssertionErrorr%   s   &&r   r&   DFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__  s    $%MNNr   rB   N)rC   rD   rE   rF   rn   r   r  r  rm   r&   r/   rI   rJ   rK   s   @r   CustomValuer    s5     K#(  O Fr   r$  TFN)		functoolstotal_orderingr   r   registerr   r  rm   r  )r   r$  rm   ro   s   &   r   testBoolGuarateesBoolReturn(FractionTest.testBoolGuarateesBoolReturn  s     
	!	!	 	 
"	( 	!!+.N	iLakk9-d1gt$N	iLd1gu%r   c           	        V P                  \        R4      \        \        R4      R4      4       V P                  \        R4      \        \        R4      R4      4       V P                  \        ^4      \        \        ^4      R4      4       V P                  \        R^
4      \        \        R^d4      ^4      4       V P                  \        R^
4      \        \        R^d4      ^4      4       R# )	rj  Ni8ijrL  irK  r  i)r.  r   r  r;   s   &r   	testRound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           
     B
   V P                  \        ^^4      \        ^^
4      \        ^^4      ,           4       V P                  \        R^
4      \        ^^
4      \        ^^4      ,
          4       V P                  \        ^^4      \        ^^
4      \        ^^4      ,          4       V P                  \        ^^4      \        ^^4      \        ^^4      ,          4       V P                  \        ^^4      \        ^^
4      \        ^^4      ,          4       V P                  \        R^4      \        ^^4      \        R^4      ,          4       V P                  \        \        P
                  \        ^4      \        ^ 4      4       V P                  ^\        ^	^
4      \        ^^4      ,          4       V P                  R\        R^4      \        ^4      ,          4       V P                  \        ^^4      \        ^^4      \        ^^4      ,          4       V P                  \        ^^4      \        R^4      \        ^^4      ,          4       V P                  \        ^4      \        ^^4      3\        \        ^^4      \        ^^4      4      4       V P                  \        R4      \        ^^4      3\        \        R^4      \        ^^4      4      4       V P                  \        ^^4      \        ^^4      \        ^4      ,          4       V P                  \        ^^4      \        ^^4      \        R4      ,          4       V P                  R\        ^4      \        ^^4      ,          4       V P                  \        ^^4      \        ^^4      54       \        \        R4      \        ^^4      4      pV P                  VP                  ^ 4       V P                  VP                  ^4       \        R^4      ^ ,          pV P                  V\        ^^4      4       V P                  VP                  ^4       V P                  VP                  ^4       \        R^4      R,          pV P                  V\        R^4      4       V P                  VP                  R4       V P                  VP                  ^4       \        R^4      R,          pV P                  V\        ^^4      4       V P                  VP                  ^4       V P                  VP                  ^4       R# )	r          @Nr  r  rL  rO  r  rK  )r*  r   rU  rT  r#   truedivr.  divmodpowr  realimagrm   rn   )r   zps   &  r   testArithmetic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                J   V P                  \        R R4      \        ^
^#,          ^,           R4      \        R^
^#,          ^,
          4      ,          4       V P                  \        ^R4      \        ^^d,          ) ^4      \        ^^^d,          4      ,          4       V P                  R\        R R4      3\        \        ^
^#,          ^,           R4      \        R^
^#,          ^,
          4      4      4       V P                  ^^,          ) ^,          \        ^^d,          ) ^4      \        ^^^d,          4      ,          4       V P                  ^\        ^^^d,          4      \        ^^^d,          4      ,          4       V P                  ^\        ^^^d,          4      3\        \        ^^^d,          4      \        ^^^d,          4      4      4       V P                  ^^,          ) ^,          \        ^R4      3\        \        ^^d,          ) ^4      \        ^^^d,          4      4      4       R# )l     b;efOpUmnP|} l   ~Jw5PHyT#/jei4T l                l   _Nl     P ~ceg)r.  r   r5  r0  r;   s   &r   testLargeArithmetic 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                   V P                  \        ^^
4      \        ^^
4      ^,           4       V P                  R\        ^^
4      R,           4       V P                  R\        ^^
4      R,           4       V P                  \        ^^
4      ^\        ^^
4      ,           4       V P                  RR\        ^^
4      ,           4       V P                  RR\        ^^
4      ,           4       V P                  \        R^
4      \        ^^
4      ^,
          4       V P                  R\        ^^
4      R,
          4       V P                  R	\        ^^
4      R,
          4       V P                  \        ^	^
4      ^\        ^^
4      ,
          4       V P                  RR\        ^^
4      ,
          4       V P                  R
R\        ^^
4      ,
          4       R# )re  g?      ?g?Ny?              ?        rQ  gy        y?        )r.  r   r;   s   &r   testMixedArithmetic 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           
     	   V P                  \        ^^
4      \        ^^
4      ^,          4       V P                  R\        ^^
4      R,          4       V P                  R
\        ^^
4      R,          4       V P                  \        ^^
4      ^\        ^^
4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  R
R\        ^^
4      ,          4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \	        ^4      ,          \	        \        ^	^4      4      4       V P                  \	        ^4      \        ^^4      ,          R4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        \        ^^4      ^4      4       V P                  \        ^^4      \        R^4      ,          \        R^4      4       V P                  \        ^^4      \        ^^4      ,          \        \        ^^4      \        ^	^4      4      4       V P                  \        ^^4      \        ^^4      ,          \        RR4      4       V P                  \        \        P                  \        ^^4      \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          R4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       R	# )r   rZ  r<        @Xz3/2 * X      @g      @g      @Nr  r=        @      @)r.  r   rj   r   r   r*  r   rU  r   r#   mulr   r   r  r   rx   r;   s   &r   testMixedMultiplication$FractionTest.testMixedMultiplicationM  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S<QR)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           	      	   V P                  \        ^^
4      \        ^^
4      ^,          4       V P                  R\        ^^
4      R,          4       V P                  R\        ^^
4      R,          4       V P                  \        ^
^4      ^\        ^^
4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \	        ^4      ,          \	        \        ^^	4      4      4       V P                  \	        ^4      \        ^^4      ,          R4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        \        ^^4      R4      4       V P                  \        ^^4      \        R^4      ,          \        RR4      4       V P                  \        ^^4      \        ^^4      ,          \        R	R
4      4       V P                  \        \        P                  \        ^^4      \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          R4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       R# )r   rZ  r<  r  rA  rB  z3/2 / XrC        ?gQ?g
ףp=
?Nr  r=  y      $@        rL  rD  )r.  r   rj   r   r   r*  r   rU  r   r#   r/  r   r   r   rx   r;   s   &r   testMixedDivisionFractionTest.testMixedDivisionk  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           
     0   V P                  ^ \        ^^
4      ^,          4       V P                  R\        ^^
4      R,          4       V P                  ^
^\        ^^
4      ,          4       V P                  R
R\        ^^
4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  \        ^^
4      \        ^^
4      ^,          4       V P                  R\        ^^
4      R,          4       V P                  \        ^ ^4      ^\        ^^
4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  R\        ^^
4      \        R4      ,          4       V P                  \        R4      \        ^^
4      \        R4      ,          4       V P                  \        R4      \        R^
4      \        R4      ,          4       V P                  R\        R^
4      \        R4      ,          4       V P                  ^ \        ^^
4      3\	        \        ^^
4      ^4      4       V P                  \	        RR4      \	        \        ^^
4      R4      4       V P                  ^
\        ^ 4      3\	        ^\        ^^
4      4      4       V P                  \	        RR4      \	        R\        ^^
4      4      4       V P                  \	        R\        R4      4      \	        \        ^^
4      \        R4      4      4       V P                  \	        R\        R4      4      \	        \        ^^
4      \        R4      4      4       V P                  \	        R\        R4      4      \	        \        R^
4      \        R4      4      4       V P                  \	        R\        R4      4      \	        \        R^
4      \        R4      4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^
4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        \        P                  \        ^^4      \        ^4      4       V P                  \        ^4      \        ^^4      ,          R4       V P                  \        ^^4      \        R4      ,          \        R4      4       V P                  \        \        P                  \        R4      \        ^^4      4       V P                  \        \        P                  \        ^^4      \        ^^4      4       V P                  \        \        P                  \        ^^4      \        ^^4      4       V P                  \        \        P                  \!        ^^4      \        ^^4      4       V P                  \        ^^4      \#        R4      ,          \#        R4      4       V P                  \        \        P                  \#        R4      \        ^^4      4       V P                  \        ^^4      \%        R4      ,          \%        R4      4       V P                  \        \        P                  \%        R4      \        ^^4      4       R	# )rC          r<  rZ  r\  r]        ?rB  z3/2 % XNrO  l     d&O!g      "@g?rK  g)r.  r   r   r5  r0  rj   r   rU  r   r#   modr   r*  r   r   r  r   r   rx   r;   s   &r   testMixedIntegerDivision%FractionTest.testMixedIntegerDivision  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           	     H   V P                  \        ^d^4      \        ^^
4      R,          4       V P                  \        ^d^4      \        ^
^4      ^,          4       V P                  R\        ^^
4      R,          4       V P                  R\        ^^
4      R,          4       V P                  ^^\        ^^4      ,          4       \        R\        ^^4      4      pV P                  ^ VP                  4       V P                  ^VP                  4       V P                  \        ^^4      ^\        R^4      ,          4       V P                  R^\        ^^4      ,          4       V P                  RR\        R^4      ,          4       V P                  RR\        ^^
4      ,          4       V P                  \        \        P                  \        ^ ^4      R4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        R^4      ,          \        ^^4      4       V P                  \        R^4      \        R^4      ,          \        R^4      4       V P                  \        ^	^4      \        ^^4      ,          R4       V P                  \        ^^	4      \        R^4      ,          \        4       V P                  \        ^^	4      \        R^4      ,          R4       V P                  \        R^	4      \        R^4      ,          R4       V P                  \        ^	^4      \        ^^4      ,          R4       V P                  \        ^^4      \        ^^4      ,          \        ^^4      4       V P                  \        ^^4      \        R^4      ,          \        ^^4      4       V P                  \        ^^	4      \        R^4      ,          \        4       V P                  \        ^^	4      \        R^4      ,          R4       V P                  \        ^4      \        ^^4      ,          \        ^R4      4       V P                  \        ^4      \        ^^4      ,          \        ^\        ^4      4      4       V P                  \        ^4      \        R^4      ,          \        ^\        ^4      ) 4      4       V P                  \        ^4      \        R^4      ,          \        ^R4      4       V P                  \        ^^4      \        R4      ,          \        R	4      4       V P                  \        R4      \        ^^4      ,          \        R
4      4       V P                  \        ^^4      \        ^^ 4      ,          \!        \        ^	^4      R4      4       V P                  \        ^^4      \        ^^4      ,          \!        \        ^4      R4      4       V P                  \        ^^4      \#        ^^ 4      ,          \!        RR4      4       V P                  \        ^^4      \#        ^^4      ,          \!        RR4      4       V P                  \!        ^^4      \        ^^4      ,          \!        RR4      4       V P                  \!        ^^4      \        ^^4      ,          \!        ^@^4      4       V P                  \!        ^^4      \        R^4      ,          \!        RR4      4       V P                  \!        ^^4      \        R^4      ,          \!        RR4      4       V P                  \        ^^4      \%        R4      ,          \%        R	4      4       V P                  \%        R4      \        ^^4      ,          \%        R
4      4       V P                  \        ^^4      \'        R4      ,          \'        R	4      4       V P                  \'        R4      \        ^^4      ,          \'        R
4      4       R# )r  rZ  r<  r.  g      ?g      @y              @rA  rB  z3/2 ** XzX ** 1.5rM  g      @g       @g      ?g      ?NrL  r  r=  rK  r  ir  g      r  )r.  r   r1  r  r2  r*  r3  rU  rT  r#   r   r   r   r   r   r   r   r  r   rx   )r   r4  s   & r   testMixedPower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!*4eAaFC6HIqAw$q!*4eAaD#6FG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           	         V P                  \        \        P                  \	        ^^4      \        R4      4       V P                  \        \        P                  \        R4      \	        ^^4      4       R# )rJ  z	3.1415926N)rU  r   r#   addr   r   r;   s   &r   testMixingWithDecimal"FractionTest.testMixingWithDecimal  sN    )X\\Ab'7;#7	9)X\\!+.!B	9r   c                   V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8g  4       V P                  \        ^^4      \        ^^4      8g  4       R# r   N)r  r   r  r;   s   &r   testComparisons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                   V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8H  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8*  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       V P                  \        ^^4      \        ^^4      8  4       R# rZ  )r  r   rN   r  r;   s   &r   testComparisonsDummyRational)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                   \        R4      p\        ^^4      pV P                  W8g  4       T P                  W8  ;'       g    W8  4       V P                  W8H  4       T P                  W8*  ;'       d    W8  4       V P                  W!8g  4       T P                  W!8  ;'       g    W!8  4       V P                  W!8H  4       T P                  W!8*  ;'       d    W!8  4       R# )r<  NgUUUUUU?)r   r   r  r  r  s   &  r   testComparisonsDummyFloat&FractionTest.testComparisonsDummyFloat  s    uaG' **AF+' **AF+r   c                   V P                  ^\        ^^4      8  4       V P                  ^\        ^^4      8  4       V P                  \        ^^4      ^8  4       V P                  \        ^^4      ^8  4       V P                  \        ^^4      R8  4       V P                  \        ^^4      R8  4       V P                  R\        ^^4      8  4       V P                  R\        ^^4      8  4       V P                  \        R4      \        ^^4      8  4       V P                  \        R4      \        ^ ^
4      8  4       V P                  \        R4      \        R^4      8  4       V P                  \        ^^4      \        R4      8  4       V P                  \        ^^4      \        R4      8  4       V P                  \        ^R	4      \        R4      8  4       R# )
rM  333333?皙?rN  r\  r]  r[  Nr  r  r   r  r   r;   s   &r   testMixedLess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                   V P                  R \        ^^4      8*  4       V P                  R\        ^^4      8*  4       V P                  \        ^^4      R 8*  4       V P                  \        ^^4      R8*  4       V P                  ^\        ^^4      8*  4       V P                  ^\        ^^4      8*  4       V P                  \        ^^4      ^8*  4       V P                  \        ^^4      ^8*  4       V P                  \        R4      \        ^^4      8*  4       V P                  \        R4      \        ^ ^
4      8*  4       V P                  \        R4      \        R^4      8*  4       V P                  \        ^^4      \        R4      8*  4       V P                  \        ^^4      \        R4      8*  4       V P                  \        ^R4      \        R4      8*  4       R# )	rN  rd  re  r\  r]  r[  Nr  rf  rg  r;   s   &r   testMixedLessEqualFractionTest.testMixedLessEqual7  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           
        V P                  \        R4      \        R4      8H  4       V P                  R\        \        \        P                  ! R4      ^,           4      4      8  4       V P                  R\        \        P                  ! R4      ^,           4      8  4       V P                  R\        \        P                  ! R4      ^,
          4      8*  4       V P                  R\        \        P                  ! R4      ^,
          4      8  4       V P                  R\        \        P                  ! R4      ^,           4      8  4       R# )ri  r  NrO  )r  r   r   rP   r  r  r;   s   &r   testBigFloatComparisons$FractionTest.testBigFloatComparisonsH  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                T   V P                  \        R4      \        R4      8H  4       V P                  \        \
        P                  \        R4      \        R4      4       V P                  \        \
        P                  \        R4      \        R4      4       \        ^^4      p\        RR4      p\        RR4      pV P                  W8H  4       V P                  W8g  4       V P                  W8H  4       V P                  W8g  4       \
        P                  \
        P                  \
        P                  \
        P                  3 F_  pV P                  \        WAV4       V P                  \        WBV4       V P                  \        WAV4       V P                  \        WCV4       Ka  	  R# )ri  rI  rM  g?NrO  )r  r   r  rU  r   r#   r6   r*   r  r.   r2   )r   r  r4  wr   s   &    r   testBigComplexComparisons&FractionTest.testBigComplexComparisonsR  s(   6gfo56)X[[!F)WV_M)X[[!F)WV_MaGE3E3  ++x{{HKKDBi2i2i2i2	 Er   c                   V P                  R \        ^^4      8H  4       V P                  R\        ^^4      8H  4       V P                  \        ^^4      R 8H  4       V P                  \        ^^4      R8H  4       V P                  ^\        ^^4      8H  4       V P                  ^\        ^^4      8H  4       V P                  \        ^^4      ^8H  4       V P                  \        ^^4      ^8H  4       V P                  \        ^^4      \        R4      8H  4       V P                  \        R4      \        ^^4      8H  4       V P                  \        ^^4      \        R4      8H  4       V P                  \        R4      \        ^^4      8H  4       R# )rN  rd  re  r[  r\  r]  Nrg  r;   s   &r   testMixedEqualFractionTest.testMixedEquald  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           	     v   V P                  R \        \        ^^4      4      4       V P                  R\        \        R4      4      4       V P                  R\        \        ^R4      4      4       V P                  R\        \        ^^4      4      4       V P                  R\        \        ^^4      4      4       R# )zFraction(7, 3)z Fraction(6283185307, 2000000000)3.1415926535z#Fraction(-1, 100000000000000000000)z7/37Nl   Fx:^V )r*  r  r   r9  r;   s   &r   testStringification FractionTest.testStringificationr  s    )4!Q=9;a/0	2>a7m,	.AaG-c!Aq'l+r   c           	     l   \         P                  P                  p\         P                  P                  pV P	                  \        R 4      \        \        ^^4      4      4       V P	                  \        ^
^2,          4      \        \        ^
^2,          4      4      4       V P                  \        \        R4      4      \        \        R4      4      4       V P	                  V\        \        ^V4      4      4       V P	                  \        \        R4      4      \        R4      P                  4       4       R# )rY  NrO  rK  )
sys	hash_infomodulusr\  r*  hashr   r  r   __hash__)r   hmodhinfs   &  r   testHashFractionTest.testHash{  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                .   \        ^4      p^ V^^^ ^ ^3w  r#rErgp\        WB,
          4      \        ^R4      8  d<   TpWV,           V^,           reWx,           V^ ,           rW5,          V,          pWC,          pK[  V P                  \        P                  V4       R# )rJ  N ʚ;)r   absr  rP   pi)	r   threelaststr  r   nar   das	   &        r   testApproximatePiFractionTest.testApproximatePi  s     !$%uaAq"$<!!r!)nqE{*ED"Q$rD"R%r!AFAtww*r   c                t   \        ^4      p^ ^ \        ^4      ^^^3w  r#rErg\        WC,
          4      \        ^R4      8  dR   TpV^,          pWRV^,
          ,          ,          pWaV,          ,          pVR,          pWFV,          V,          ,          pKq  V P                  \        P                  ! ^4      V4       R# )r   Nr  rK  )r   r  r  rP   cos)r   r  r  r  r  factrR   signs   &       r   testApproximateCos1 FractionTest.testApproximateCos1  s     aD'(!QqT1a':$!3!)nqE{*EFA1IDq5LCBJDtd""Atxx{A.r   c           
        \        ^^4      p\        ^^4      p\        ^ \        P                  ^,           4       F'  pV P                  V\        \        W4      4      4       K)  	  V P                  \        V4      \        \        V4      4      4       V P                  \        V4      \        \        V4      4      4       V P                  \        V4      \        \        V4      4      4       V P                  \        V4      \        \        V4      4      4       V P                  V\        V4      4       V P                  V\        V4      4       R# )r  N)r   rj   rangepickleHIGHEST_PROTOCOLr*  r   r   idr   r   r  r.  )r   ro   drprotos   &   r   test_copy_deepcopy_pickle&FractionTest.test_copy_deepcopy_pickle  s    b!H2q!1f559:EQeAo 67 ;A47,A8A;0BrFBtBxL1BrFBx|$45r48,r8B<0r   c                X    \        ^^4      pV P                  \        \        VR^
4       R# )r  rt   N)r   rU  r  r  r  s   & r   
test_slotsFractionTest.test_slots  s#    b!H.'1c2>r   c                n    ! R  R\         4      p\        P                  ! V! ^4      V! ^4      4      pV P                  VP                  ^4       V P                  VP
                  ^4       V P                  \        VP                  4      V4       V P                  \        VP
                  4      V4       R# )c                   R   a  ] tR tRt o R tR tR t]R 4       t]R 4       t	Rt
V tR# )	-FractionTest.test_int_subclass.<locals>.myinti  c                V    \        V 4      ! \        V 4      \        V4      ,          4      # r   rr   r  r%   s   &&r   r   5FractionTest.test_int_subclass.<locals>.myint.__mul__  s    Dz#d)c%j"899r   c                V    \        V 4      ! \        V 4      \        V4      ,          4      # r   r  r%   s   &&r   r  :FractionTest.test_int_subclass.<locals>.myint.__floordiv__  s    Dz#d)s5z"9::r   c                Z    \        V 4      ! \        V 4      \        V4      ,          4      pV# r   r  )r   r   r  s   && r   r   5FractionTest.test_int_subclass.<locals>.myint.__mod__  s"    Js4y3u:56r   c                6    \        V 4      ! \        V 4      4      # r   r  r;   s   &r   rm   7FractionTest.test_int_subclass.<locals>.myint.numerator  s    Dz#d),,r   c                $    \        V 4      ! ^4      # r   )rr   r;   s   &r   rn   9FractionTest.test_int_subclass.<locals>.myint.denominator  s    Dz!}$r   r:   N)rC   rD   rE   rF   r   r  r   r  rm   rn   rI   rJ   rK   s   @r   myintr    s:     :; - -% %r   r  N)r  rW   rX   r*  rm   rn   rr   )r   r  r  s   &  r   test_int_subclassFractionTest.test_int_subclass  s    	%C 	% uU|U5\:a(*akk*E2amm,e4r   c           	        . \        ^^4      RR3N\        R0^4      RR3N\        ^4      RR3N\        R14      RR3N\        ^^4      RR3N\        R0^4      RR3N\        ^4      RR3N\        R14      RR3N\        ^^4      R	R
3N\        R0^4      R	R3N\        ^4      R	R3N\        R14      R	R3N\        ^ 4      RR3N\        ^^4      RR3N\        R0^4      RR3N\        ^^4      RR
3N\        ^^4      RR
3N\        ^^4      RR
3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        R0^4      RR3N\        R0^4      RR3N\        R0^4      RR3N\        R0^4      RR3N\        ^^4      RR3N\        R0^4      RR3N\        R0^4      RR 3N\        R!R"4      R#R$3N\        R2R"4      R%R&3N\        R'4      R%R(3N\        R34      R#R)3N\        ^{4      R*R+3N\        R44      R*R,3N\        ^ 4      R*R-3NpV FD  w  r#pV P                  W#R.7      ;_uu_ 4        V P                  \        W#4      V4       R/R/R/4       KF  	  R/#   + '       g   i     K[  ; i)5rM  +z+2/3z-2/3z+3-3 z 2/3z 3-z2/33r  z    0z  2/3z -2/3r  r  2z<5z2/3  z>5z^5z 2/3 z=5z-2/3 z- 2/3zX>5zXX2/3z.<5z-2/3.z
^6z
-2/3
i  i/  ,z1,234/5,679r  z-1_234/5_679i 	1_234_567z
-1,234,567#z123/1z-123/1z0/1fractionspecNrL  r  i.iy)ir   subTestr*  formatr   	testcasesr  r  r,  s   &    r    test_format_no_presentation_type-FractionTest.test_format_no_presentation_type  s   +
q!Wc6"+
 r1XsF#+
 qT3	+

 rUC+
 q!Wc6"+
 r1XsF#+
 qT3+
 rUC+
 q!Wc5!+
 r1XsF#+
 qT3+
 rUC+
 qT3 +
  q!Wc7#!+
" r1XsG$#+
$ q!Wc5!%+
& q!Wc5!'+
( q!Wc5!)+
, q!WdG$-+
. q!WdG$/+
0 q!WdG$1+
2 q!WdG$3+
4 r1XtW%5+
6 r1XtW%7+
8 r1XtW%9+
: r1XtW%;+
> q!WeW%?+
@ r1Xug&A+
B r1Xvz*C+
F tT]C/G+
H ud^S.1I+
J wZk*K+
L x[#|,M+
P sVS'"Q+
R tWc8$S+
T qT3U+
	X )2$HHx;;  !7B <; )2;;;s   5II0c           	     H   . \        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^!4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR	3N\        ^!^4      RR
3N\        ^^4      RR3N\        ^^4      RR3N\        ^ 4      RR3N\        ^R4      RR3N\        ^^d4      RR3N\        ^^
4      RR3N\        ^^4      RR3N\        ^
4      RR3N\        ^d4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R<^4      RR3N\        R=^4      RR3N\        R>4      RR3N\        R4      RR3N\        R4      RR 3N\        ^^4      R!R"3N\        ^^4      R#R$3N\        R%4      R&R'3N\        ^^4      R(R)3N\        R%4      R*R+3N\        ^^4      R,R)3N\        ^^4      R-R)3N\        ^^4      R.R/3N\        R04      R1R23N\        R34      R4R53N\        R04      R6R73N\        R?^^d,          4      R8R93NpV FD  w  r#pV P                  W#R:7      ;_uu_ 4        V P                  \        W#4      V4       R;R;R;4       KF  	  R;#   + '       g   i     K[  ; i)@rM  z.6ez6.666667e-01z1.500000e+00z1.538462e-01z8.695652e-02z6.060606e-02z6.500000e+00z1.000000e+01z1.150000e+01z1.650000e+01z.3ez	0.000e+00r  z	1.000e-03z	1.000e-02z	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.999995000001z-6.666667e-01z-1.500000e+00z-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?  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+02z.5_ez1.234_57e+06zz.6ez-3.091690e-85r  NrL  r  irK  r  r  s   &    r   test_format_e_presentation_type,FractionTest.test_format_e_presentation_type  s   5
q!We^,5
q!We^,5
 q"Xun-5
 q"Xun-	5

 q"Xun-5
 r1Xun-5
 r1Xun-5
 r1Xun-5
 r1Xun-5
 q!We^,5
 q!We^,5
 qT5+&5
 q$Z,5
  q#Y{+!5
" q"Xuk*#5
$ q!We[)%5
& rUE;''5
( sVUK()5
* tWe[)+5
.  !5.9/5
0 {^UN315
2  !5.935
6 r1Xuo.75
8 r1Xuo.95
: tWe_-;5
> x[%/?5
@ y\5-0A5
D q!We^,E5
H q!WeY'I5
J wZ(K5
N r1XsN+O5
R wZ*S5
V r1Xw/W5
X r1Xw/Y5
Z r1Xw0[5
^  &-8_5
` |_i8a5
d  &.9e5
h r1c6]FO4i5
	l )2$HHx;;  !7B <; )2;;;s   &JJ!c           	        . \        ^ ^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR	3N\        ^^4      RR3N\        ^^4      R
R3N\        R4      RR3N\        RR4      RR3N\        ^^4      RR3N\        ^ 4      RR3N\        R^4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R 4      RR3N\        R!4      RR"3N\        R#4      RR$3N\        R%4      RR&3N\        R'4      RR&3N\        R(4      RR)3N\        R*4      RR)3N\        R+4      RR,3N\        R-4      RR,3N\        R.4      RR/3N\        ^^4      RR3N\        ^^4      R0R3N\        ^^4      R1R23N\        ^^4      R3R43N\        R^4      RR53N\        R^4      R0R53N\        R^4      R1R53N\        R^4      R3R53N\        ^^4      R6R73N\        R^4      R6R83N\        ^^4      R6R93N\        R^4      R6R:3N\        ^^4      R;R<3N\        R^4      R;R=3N\        ^^4      R;R>3N\        R^4      R;R?3N\        R@4      RAR3N\        R@4      RBR3N\        R@4      RCRD3N\        R@4      RERF3N\        RG4      RAR3N\        RG4      RBR3N\        RG4      RCRD3N\        RG4      RERF3N\        ^^4      RHRI3N\        RJ4      RHRK3N\        RJ4      RLRM3N\        ^^4      RNRI3N\        ^^4      RORP3N\        ^^4      RQR3N\        ^^4      RRR3N\        ^^4      RSRT3N\        ^^4      RURV3N\        ^^4      RWRX3N\        ^^4      RYRZ3N\        R^4      R[R\3N\        ^^4      R[R]3N\        R^4      R^R53N\        R^4      R_R`3N\        R^4      RaRb3N\        R^4      RcRd3N\        R^4      ReRf3N\        R^4      RgRh3N\        R^4      RiRj3N\        R^4      RkRl3N\        R^4      RmRn3N\        R^4      RoRp3N\        R^4      RqRr3N\        R^4      RsRt3N\        R^4      RuRv3N\        R^4      RwRv3N\        ^^4      RxRy3N\        ^^4      RzR{3N\        ^^4      R|R3N\        ^^4      R}R3N\        ^^4      R~R3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      R|R3N\        R4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^F4      RR3N\        ^R4      RR3N\        ^R4      RR3N\        ^R4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^d^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        ^^4      RR3N\        RR4      RR3N\        RR4      RR3N\        RR4      RR3N\        ^^d4      RR3N\        ^1R4      RR3N\        ^3R4      RR3N\        ^R4      RR3N\        ^R4      RR3N\        ^^4      RR3N\        ^^4      RR3NpV FD  w  r#pV P                  W#R7      ;_uu_ 4        V P                  \        W#4      V4       RRR4       KF  	  R#   + '       g   i     K[  ; i)rC  z.2fz0.00z0.33z0.67z1.330.12z0.38z0.08z0.01z.5fz3.14286	399024789z399024789.00i i  z.50fz43.14159265392142104470871594159265392142104470871594r  z3.142857z0.000000z	-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.67z-0.67z.0fr  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123456.789123123z._fz123456.789_123z.7_fz123456.789_123_1z.9_fz123456.789_123_123z.,fz123456.789,123z_.,fz123_456.789,123z_.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12.34zX>0.2fz.5Fz.2%z314.29%z14.29%z1.43%i  z0.14%iX  z0.01%ip z0.00%z.0%z14%z#.0%z14.%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.0z0.1z0.2z.02fz3.14z005.02fz03.14r  NirL  rK  r  r  s   &    r   test_format_f_presentation_type,FractionTest.test_format_f_presentation_type6  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 !"E+;<k@
l !"F,>?m@
n !"F,@Ao@
p !"E+;<q@
r !"F,=>s@
v q!Wff%w@
x q!Wfk*y@
z |_fl3{@
| y\6>2}@
~ z]FO4@
B {^Xz2C@
D {^Xz2E@
F {^X{3G@
H {^Y5I@
J {^Y7K@
L {^Y7M@
N {^Y8O@
P {^Y(89Q@
R {^Y(:;S@
T {^Y(:;U@
V |_h4W@
X |_h4Y@
Z |_h4[@
\ |_i6]@
^ |_i7_@
` |_i9a@
b |_i9c@
d |_i)9:e@
f |_i):;g@
h |_i)<=i@
l |_h1m@
n |_h	2o@
p |_h
3q@
r |_h5s@
x {^Z8y@
B wZ)C@
D wZ7+E@
H r1Xui(I@
L r1Xui(M@
N q!WeX&O@
P q"Xug&Q@
R q#Yw'S@
T q$Z(U@
V q%[%)W@
X q!WeU#Y@
Z q!Wff%[@
\ sAY,]@
^ r1Xvy)_@
` r1Xvz*a@
b r1Xw
+c@
f q!WeV$g@
h q!WeV$i@
j q!WeV$k@
l tT]E6*m@
n tT]E6*o@
p tT]E6*q@
r q#Yu%s@
t r4[%'u@
v r4[%'w@
x sD\5%(y@
z sD\5%({@
| r1Xvv&}@
~ r1Xy'*@
	B )2$HHx;;  !7B <; )2;;;s   3ee.c           	     j   . \        R 4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R	4      RR
3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R4      RR3N\        R 4      R!R"3N\        R#4      R!R"3N\        R$4      R!R%3N\        R&4      R!R%3N\        R'4      R!R(3N\        R)4      R!R(3N\        R*4      R!R+3N\        R,4      R!R+3N\        ^ 4      RR-3N\        R.4      RR/3N\        R04      RR13N\        R24      RR33N\        R44      RR53N\        ^ 4      R6R73N\        R.4      R6R.3N\        R04      R6R03N\        R24      R6R23N\        R44      R6R83N\        R4      R9R3N\        R4      R9R:3N\        R;4      R<R=3N\        R>4      R?R@3N\        RA4      R?RB3N\        RC4      R?RD3N\        RE4      R?RF3N\        RE4      RGRH3N\        RI4      R?RJ3N\        RI4      RGRK3N\        R>4      RLR@3N\        RA4      RLRB3N\        RC4      RLRD3N\        RE4      RLRF3N\        RE4      RMRH3N\        RI4      RLRJ3N\        RT4      RNRO3N\        RU^^d,          4      RPRQ3NpV FD  w  r#pV P                  W#RR7      ;_uu_ 4        V P                  \        W#4      V4       RSRSRS4       KF  	  RS#   + '       g   i     K[  ; i)Vz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  z123.400z123.4z123.000123z120.00012012000000z1.2e+07z#.6gz0.00000z1.20000e+07z.6Gz1.23457E+06rx  rT   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#.1gz_.25g18_446_744_073_709_551_616zgz-3.09169e-85r  Nl            rK  r  r  s   &    r   test_format_g_presentation_type,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$HHx;;  !7B <; )2;;;s   7L!!L2c           
        \        ^^4      pV P                  \        4      ;_uu_ 4        \        VR4       RRR4       . ROpV FW  pV P	                  VR7      ;_uu_ 4        V P                  \
        4      ;_uu_ 4        \        W4       RRR4       RRR4       KY  	  R#   + '       g   i     Ls; i  + '       g   i     L1; i  + '       g   i     K  ; i)rM  N)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>00fz.ez.fz.gz.%z._6ez._6fz._6gz._6%zZ.2fz05)r   rU  r   r  r  r`  )r   r  invalid_specsr  s   &   r   test_invalid_formats!FractionTest.test_invalid_formatsA  s    Q7y))8T" *$
J "D4((&&z228* 3 )( "Q *)T 32 )((s/   B""C B5C"B2	5C CCc                   \        \        R R7      ;_uu_ 4       pV EFr  pVP                  R4      '       d   K  VP                  4       pV'       g   K7  \	        \
        P                  VP                  R4      4      w  r4VP                  4       w  rVVR8X  d   K}  VR,          pV P                  WVR7      ;_uu_ 4        \        \        V4      4      pV P                  \        W4      V4       V'       d%   V P                  \        V) V4      RV,           4       \        V4      pV P                  \        \        W4      4      \        V4      4       V P                  \        \        V) V4      4      \        RV,           4      4       RRR4       EKu  	  RRR4       R#   + '       g   i     EK  ; i  + '       g   i     R# ; i)	zutf-8)encodingz--z->z%r:r   NN)fmtr  r  N)openformat_testfile
startswithstripr4  r9  splitr  r   r   r*  r  )	r   testfilelinelhsrhsr  r  fmt2r  s	   &        r   test_float_format_testfile'FractionTest.test_float_format_testfilep  s@   /G44 ??4((zz|syy$**T*:;99;$;2w\\c\33%*A$$VA_c:((D)939E#A$$U6!?%;U3ZH$$U61"d+;%<eC#I>NO 43 ! 54 433 544s+   7F3A+F3=C
FF3F0)
F33G	c                   \        ^^4      pRpRpV P                  \        VR,          \        P                  W4       V P                  \        VR,          \        P
                  W4       V P                  \        VR,          \        W4       V P                  \        VR,          \        P                  W!4       V P                  \        VR,          \        P
                  W!4       V P                  \        VR	,          \        W!4       R# )
r   rF  z1unsupported operand type(s) for %s: '%s' and '%s'N)%rX   r  )//rX   r  )divmod()rX   r  )r  r  rX   )r  r  rX   )r  r  rX   )r   r@  r   r#   rO  floordivr0  )r   rt   ru   r;  s   &   r   test_complex_handling"FractionTest.test_complex_handling  s     aGE  !(+G!G!)q	5 	  !(+H!H!)!2!2A	: 	  !(+N!N!'	/ 	  !(+G!G!)q	5 	  !(+H!H!)!2!2A	: 	  !(+N!N!'	/r   c           
        R pV P                  \        VR,          \        \        ^4      ^^4       V P                  \        VR,          \        ^\        ^4      ^4       V P                  \        VR,          \        ^^\        ^4      4       R# )z=unsupported operand type(s) for ** or pow(): '%s', '%s', '%s'N)rX   r  r  )r  rX   r  )r  r  rX   )r@  r   r1  r   )r   r;  s   & r   test_three_argument_pow$FractionTest.test_three_argument_pow  s}    Q  !(+E!E!$adAq	2 	  !(+E!E!$a1q	2 	  !(+E!E!$aAaD	2r   r:   N)=rC   rD   rE   rF   r.  r5  r@  rV  r   rb  rk  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r(  r+  r6  r9  r>  rF  rJ  rP  rS  rW  r[  r^  ra  rh  rk  rn  rr  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rI   rJ   rK   s   @r   r(  r(  %  sU    +
Q
;12 ; ;=9@f$PU*( 8-0 "# 6+1=+90, ,D"&HA!+F 
D@K<O:*KX1If9	,8@
,5$6":3$3,	8+/
1?
5,0Cd:CxECNBCH-+^ P P./6
2 
2r   r(  __main__)5rG   decimalr   test.supportr   r   rP   r   r#   rW   r%  osr}  r  unittestr   r   r  r   r   rX   r   pathdirname__file__curdirtest_dirjoinr  objectr   rN   rj   rp   rv   rx   r   Realr'  r   Complexr   r   r   r   r   r  r  r  TestCaser(  rC   mainr:   r   r   <module>r     s   !  E      	 
      77??8$11		'',,x5PQ @8F 8@AI&& A(A&< &<P	8 	   l #	h 	    )-V -V\     # L L:   d F F6    D D8    	$ 	 H28$$ H2V, zMMO r   