
    /hh                       S SK r S SKJr  S SKJrJr  S SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJrJr  S SKrS SKJrJr  \	R(                  r\R,                  R/                  \5      =(       d    \R2                  r\R,                  R7                  \SS5      r " S S	\5      r " S
 S\5      r " S S\	R(                  5      r S r!S r" " S S5      r# " S S\#5      r$\RJ                  RM                  \$5         " S S\#5      r'\RP                  RM                  \'5         " S S5      r)\RT                  RM                  \)5         " S S5      r+\RJ                  RM                  \+5         " S S5      r,\RP                  RM                  \,5         " S S5      r-\RP                  RM                  \-5         " S S\-\.5      r/ " S  S!\R`                  5      r1\2S":X  a  \Rf                  " 5         gg)#    N)Decimal)requires_IEEE_754adjust_int_max_str_digits)copydeepcopy)dumpsloadsmathdatazformatfloat_testcases.txtc                   N    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\rSrg)
DummyFloat   c                 P    [        U[        5      (       d  [        S5      eXl        g )Nz-DummyFloat can only be initialized from float)
isinstancefloat	TypeErrorvalueselfr   s     </opt/python-3.13.8/usr/lib/python3.13/test/test_fractions.py__init__DummyFloat.__init__   s     %''KLL
    c                     [        U[        R                  5      (       a&  U" [        R	                  U R
                  5      U5      $ [        U[        5      (       a  U" U R
                  UR
                  5      $ [        $ 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    U R                  U[        R                  5      $ r   )r"   operatoreqr   r    s     r   __eq__DummyFloat.__eq__(       DMM%$EEr   c                 B    U R                  U[        R                  5      $ r   )r"   r%   ler'   s     r   __le__DummyFloat.__le__)   r*   r   c                 B    U R                  U[        R                  5      $ r   )r"   r%   ltr'   s     r   __lt__DummyFloat.__lt__*   r*   r   c                 B    U R                  U[        R                  5      $ r   )r"   r%   ger'   s     r   __ge__DummyFloat.__ge__+   r*   r   c                 B    U R                  U[        R                  5      $ r   )r"   r%   gtr'   s     r   __gt__DummyFloat.__gt__,   r*   r   c                     g r    r   s    r   	__float__DummyFloat.__float__/       r   c                     g r   r<   r'   s     r   __sub__DummyFloat.__sub__3   r@   r   r   N)__name__
__module____qualname____firstlineno__r   r"   r(   r-   r1   r5   r9   r>   rB   __rsub____static_attributes__r<   r   r   r   r      s/    
" FEEEEHFHr   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)DummyRational8   c                 T    [         R                  " X5      nX-  U l        X#-  U l        g r   )mathgcdnumden)r   rQ   rR   gs       r   r   DummyRational.__init__;   s"    HHS88r   c                     [        U[        R                  5      (       a9  U R                  UR                  :H  =(       a    U R
                  UR                  :H  $ [        $ r   )r   	fractionsFractionrQ   
_numeratorrR   _denominatorr   r'   s     r   r(   DummyRational.__eq__@   sK    eY//00HH 0 00 3HH 2 224 "!r   c                 h    U R                   UR                  -  U R                  UR                  -  :  $ r   rQ   rY   rR   rX   r'   s     r   r1   DummyRational.__lt__G   +    xx%,,,txx%:J:J/JJKr   c                 h    U R                   UR                  -  U R                  UR                  -  :  $ r   r\   r'   s     r   r9   DummyRational.__gt__J   r^   r   c                 h    U R                   UR                  -  U R                  UR                  -  :*  $ r   r\   r'   s     r   r-   DummyRational.__le__M   +    xx%,,,5;K;K0KKLr   c                 h    U R                   UR                  -  U R                  UR                  -  :  $ r   r\   r'   s     r   r5   DummyRational.__ge__P   rc   r   c                     g r   r<   r=   s    r   r>   DummyRational.__float__U   r@   r   )rR   rQ   N)rE   rF   rG   rH   r   r(   r1   r9   r-   r5   r>   rJ   r<   r   r   rL   rL   8   s)    
"LLMM
8r   rL   c                       \ rS rSrSrg)DummyFractionX   r<   NrE   rF   rG   rH   rJ   r<   r   r   ri   ri   X   s     r   ri   c                 2    U R                   U R                  4$ r   	numeratordenominator)rs    r   _componentsrq   \   s    KK''r   c                     [        U 5      [        U5      :H  =(       a!    X:H  =(       d    [        R                  " X5      $ r   )typerO   isclose)abs     r   typed_approx_eqrw   _   s*    7d1g@16#?T\\!-?@r   c                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)Symbolicb   c                     Xl         g r   rD   r   s     r   r   Symbolic.__init__g   s    
r   c                 d    [        U[        5      (       a  [        $ U R                  U  SU 35      $ Nz * r   r   r   	__class__r'   s     r   __mul__Symbolic.__mul__i   /    eQ!!~~c%122r   c                 .    U R                  U SU  35      $ r~   r   r'   s     r   __rmul__Symbolic.__rmul__m       ~~s4&122r   c                 d    [        U[        5      (       a  [        $ U R                  U  SU 35      $ Nz / r   r'   s     r   __truediv__Symbolic.__truediv__o   r   r   c                 .    U R                  U SU  35      $ r   r   r'   s     r   __rtruediv__Symbolic.__rtruediv__s   r   r   c                 d    [        U[        5      (       a  [        $ U R                  U  SU 35      $ Nz % r   r'   s     r   __mod__Symbolic.__mod__u   r   r   c                 .    U R                  U SU  35      $ r   r   r'   s     r   __rmod__Symbolic.__rmod__y   r   r   c                 d    [        U[        5      (       a  [        $ U R                  U  SU 35      $ Nz ** r   r'   s     r   __pow__Symbolic.__pow__{   s/    eQ!!~~d5'233r   c                 .    U R                  U SU  35      $ r   r   r'   s     r   __rpow__Symbolic.__rpow__   s    ~~tD6233r   c                 t    UR                   U R                   :w  a  [        $ U R                  UR                  :H  $ r   )r   r   r   r'   s     r   r(   Symbolic.__eq__   s+    ??dnn,!!zzU[[((r   c                     U R                    $ r   rD   r=   s    r   __str__Symbolic.__str__   s    **r   c                 P    U R                   R                   SU R                  < S3$ )N())r   rE   r   r=   s    r   __repr__Symbolic.__repr__   s$    ..))*!DJJ>;;r   rD   N)rE   rF   rG   rH   r   r   r   r   r   r   r   r   r   r(   r   r   rJ   r<   r   r   ry   ry   b   s>    
33333344)<r   ry   c                       \ rS rSrSrg)SymbolicReal   r<   Nrk   r<   r   r   r   r          r   r   c                       \ rS rSrSrg)SymbolicComplex   r<   Nrk   r<   r   r   r   r      r   r   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)Rat   c                     Xl         X l        g r   rm   )r   nds      r   r   Rat.__init__   s    r   c                     [        U[        5      (       a  [        $ U R                  U R                  UR                  -  U R
                  UR
                  -  5      $ r   r   r   r   r   rn   ro   r'   s     r   r   Rat.__mul__   sK    eQ!!~~dnnu>"..1B1BBD 	Dr   c                     U R                  UR                  U R                  -  UR                  U R                  -  5      $ r   r   rn   ro   r'   s     r   r   Rat.__rmul__   s8    ~~eoo>#//$2B2BBD 	Dr   c                     [        U[        5      (       a  [        $ U R                  U R                  UR
                  -  U R
                  UR                  -  5      $ r   r   r'   s     r   r   Rat.__truediv__   sK    eQ!!~~dnnu/@/@@"..@B 	Br   c                     U R                  UR                  U R                  -  UR                  U R                  -  5      $ r   r   r'   s     r   r   Rat.__rtruediv__   s8    ~~eoo0@0@@#//$..@B 	Br   c                     [        U[        5      (       a  [        $ U R                  UR                  -  nU R                  U R                  UR                  -  U-  U5      $ r   )r   r   r   ro   rn   r   r   r    r   s      r   r   Rat.__mod__   sN    eQ!!u.~~dnnu/@/@@1DaHHr   c                     UR                   U R                  -  nU R                  UR                  U R                   -  U-  U5      $ r   )ro   rn   r   r   s      r   r   Rat.__rmod__   s;    .~~eoo0@0@@1DaHHr   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  U-  5      $ r   r   r'   s     r   r   Rat.__pow__   s?    eQ!!~~dnn5"..%79 	9r   c                 4    U R                   U R                  -  $ r   rm   r=   s    r   r>   Rat.__float__   s    ~~ 0 000r   c                     U R                   UR                   :w  a  [        $ [        U R                  UR                  5      =(       a     [        U R                  UR                  5      $ r   )r   r   rw   rn   ro   r'   s     r   r(   
Rat.__eq__   sL    >>U__,!!@ E 0 0%2C2CD	Fr   c                 l    U R                   R                   SU R                  < SU R                  < S3$ Nr   z, r   )r   rE   rn   ro   r=   s    r   r   Rat.__repr__   s3    ..))*!DNN+=R@P@P?SSTUUr   )ro   rn   N)rE   rF   rG   rH   r   r   r   r   r   r   r   r   r>   r(   r   rJ   r<   r   r   r   r      sA    D
DB
BI
D9
1F
Vr   r   c                   \    \ rS rSr\" S5      4S jrS rS rS rS r	S r
S	 rS
 rS rSrg)Root      c                     Xl         X l        g r   basedegree)r   vr   s      r   r   Root.__init__   s    	r   c                     [        U[        5      (       a  [        $ U R                  U R                  XR
                  -  -  U R
                  5      $ r   r   r   r   r   r   r   r'   s     r   r   Root.__mul__   :    eQ!!~~dii%*<<dkkJJr   c                 l    U R                  XR                  -  U R                  -  U R                  5      $ r   r   r   r   r'   s     r   r   Root.__rmul__   '    ~~e[[0499<dkkJJr   c                     [        U[        5      (       a  [        $ U R                  U R                  XR
                  -  -  U R
                  5      $ r   r   r'   s     r   r   Root.__truediv__   r   r   c                 l    U R                  XR                  -  U R                  -  U R                  5      $ r   r   r'   s     r   r   Root.__rtruediv__   r   r   c                     [        U[        5      (       a  [        $ U R                  U R                  U R
                  U-  5      $ r   r   r'   s     r   r   Root.__pow__   s3    eQ!!~~diiu)<==r   c                 ^    [        U R                  5      S[        U R                  5      -  -  $ N   )r   r   r   r=   s    r   r>   Root.__float__   s$    TYYAdkk(:$:;;r   c                     U R                   UR                   :w  a  [        $ [        U R                  UR                  5      =(       a     [        U R                  UR                  5      $ r   )r   r   rw   r   r   r'   s     r   r(   Root.__eq__   sD    >>U__,!!tyy%**5d/$++W\WcWc:ddr   c                 l    U R                   R                   SU R                  < SU R                  < S3$ r   )r   rE   r   r   r=   s    r   r   Root.__repr__   s.    ..))*!DII=4;;/KKr   r   N)rE   rF   rG   rH   r   r   r   r   r   r   r   r>   r(   r   rJ   r<   r   r   r   r      s<    aD KKKK><eLr   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)Polar   c                     Xl         X l        g r   )rp   phi)r   rp   r   s      r   r   Polar.__init__   s    r   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  5      $ r   r   r   r   r   rp   r   r'   s     r   r   Polar.__mul__   2    eQ!!~~dffundhh77r   c                 R    U R                  XR                  -  U R                  5      $ r   r   rp   r   r'   s     r   r   Polar.__rmul__   s    ~~effndhh77r   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  5      $ r   r   r'   s     r   r   Polar.__truediv__   r   r   c                 T    U R                  XR                  -  U R                  * 5      $ r   r   r'   s     r   r   Polar.__rtruediv__   s    ~~effntxxi88r   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  U-  5      $ r   r   r'   s     r   r   Polar.__pow__   s7    eQ!!~~dffotxx%/?@@r   c                     U R                   UR                   :w  a  [        $ [        U R                  UR                  5      =(       a     [        U R                  UR                  5      $ r   )r   r   rw   rp   r   r'   s     r   r(   Polar.__eq__   sA    >>U__,!!tvvuww/XODHHeii4XXr   c                 l    U R                   R                   SU R                  < SU R                  < S3$ r   )r   rE   rp   r   r=   s    r   r   Polar.__repr__   s.    ..))*!DFF:R|1EEr   )r   rp   N)rE   rF   rG   rH   r   r   r   r   r   r   r(   r   rJ   r<   r   r   r   r      s-    8889AYFr   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)Rect   c                     Xl         X l        g r   xyr   r
  r  s      r   r   Rect.__init__   s    r   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  U-  5      $ r   r   r   r   r   r
  r  r'   s     r   r   Rect.__mul__  6    eQ!!~~dffundffun==r   c                 V    U R                  XR                  -  XR                  -  5      $ r   )r   r
  r  r'   s     r   r   Rect.__rmul__  s    ~~effneffn==r   c                     [        U[        5      (       a  [        $ U R                  U R                  U-  U R
                  U-  5      $ r   r  r'   s     r   r   Rect.__truediv__	  r  r   c                     U R                   U R                   -  U R                  U R                  -  -   nU R                  XR                   U-  -  XR                  U-  -  5      $ r   )r
  r  r   )r   r    rp   s      r   r   Rect.__rtruediv__  sK    FFTVVOdfftvvo-~~evvz2EVVaZ4HIIr   c                 t    [        XR                  -  [        R                  " U5      U R                  -  5      $ r   )r   r
  rO   logr  r'   s     r   r   Rect.__rpow__  s&    Uff_dhhuo&>??r   c                 B    [        U R                  U R                  5      $ r   )complexr
  r  r=   s    r   __complex__Rect.__complex__  s    tvvtvv&&r   c                     U R                   UR                   :w  a  [        $ [        U R                  UR                  5      =(       a     [        U R                  UR                  5      $ r   )r   r   rw   r
  r  r'   s     r   r(   Rect.__eq__  sA    >>U__,!!tvvuww/TODFFEGG4TTr   c                 l    U R                   R                   SU R                  < SU R                  < S3$ r   )r   rE   r
  r  r=   s    r   r   Rect.__repr__  s.    ..))*!DFF:RzCCr   r	  N)rE   rF   rG   rH   r   r   r   r   r   r   r  r(   r   rJ   r<   r   r   r  r     s3    >>>J@'UDr   r  c                       \ rS rSrSrg)RectComplexi  r<   Nrk   r<   r   r   r$  r$    r   r   r$  c                   N   \ rS rSrS rS rS rS r\S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3\S1 5       r4S2 r5S3r6g4)5FractionTesti  c                 n    U R                  [        U5      [        U5      5        U R                  X5        g r   )assertEqualrs   r   expectedactuals      r   assertTypedEqualsFractionTest.assertTypedEquals!  s(    hf6*r   c           	          U R                  X5        U R                  [        [        [        U5      5      [        [        [        U5      5      5        g r   )assertTupleEqualassertListEquallistmaprs   r)  s      r   assertTypedTupleEquals#FractionTest.assertTypedTupleEquals&  s8    h/T#dH"56Sv=N8OPr   c                      U" U0 UD6  U R                  SUR                  -  5        g ! U a%  nU R                  U[        U5      5         S nAg S nAff = f)Nz%s not raised)failrE   r(  str)r   exc_typemessagecallableargskwargses          r   assertRaisesMessage FractionTest.assertRaisesMessage+  sV    	;d%f% IIo(9(99:  	.Wc!f--	.s   ) AAAc                 (   U R                  S[        [        5       5      5        U R                  S[        [        S5      5      5        U R                  S[        [        [        SS5      5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S	[        [        S
S
5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        S5      5      5        U R                  S[        [        [        SS5      S5      5      5        U R                  S[        [        S[        SS5      5      5      5        U R                  S[        [        [        SS5      [        SS5      5      5      5        U R                  [        S[        SS5        U R                  [        [        S5        U R                  [        [        S S5        U R                  [        [        SS!5        U R                  [        [        SS"5        U R                  [        [        SSS5        g )#Nr   r   )   r   rB  rB     rD  )r   rE  r   )r   r   )r   r      
   )rB     rI  )      m+?R r   rJ  )rD  M      )rG  r   	   )i	  i	     c  q   zFraction(12, 0)   r   y      ?      @3/2y                              ?)r(  rq   r   r>  ZeroDivisionErrorassertRaisesr   r=   s    r   testInitFractionTest.testInit5  s   QS!12QqT!23QqAwZ!89+aAh"78+a2h"78Qr2Y!78Qq"X!67+a2h"78k!F)&<=+a!Qn"=>+a1S!9o">?{1Qr1Xqc{3K'LM  !24E!"B	+)Q1)Qq1)Q2.)Q2.)Q1a0r   c                    U R                  S[        [        S5      5      5        U R                  S[        [        S5      5      5        U R                  S[        [        S5      5      5        U R                  [        [        [        S5      5        U R                  [        [        [        S5      5        U R                  [        [        [        S	5      5        g )
N)rG  r         @rA         )   L33f l          皙?naninf-inf)r(  rq   r   rW  
ValueErrorr   OverflowErrorr=   s    r   testInitFromFloatFractionTest.testInitFromFloatN  s    QsV!45QtW!56>$QsV,	. 	*au6-E%L9-E&M:r   c           
      2   U R                  S[        [        [        S5      5      5      5        U R                  S[        [        [        S5      5      5      5        U R                  S[        [        [        S5      5      5      5        U R	                  [
        [        [        S5      5        U R	                  [
        [        [        S5      5        U R	                  [        [        [        S	5      5        U R	                  [        [        [        S
5      5        g )NrL  rH  1.1)rB     z3.5e-2rA  z.000e20r_  snanr`  ra  )r(  rq   r   r   rW  rb  rc  r=   s    r   testInitFromDecimal FractionTest.testInitFromDecimalY  s    $Qwu~%67	9$Qwx'8%9:	<$Qwy'9%:;	= 	*a8*a9-GEN;-GFO<r   c                 
  ^  T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S	5      5      5        T R                  S
[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S[        [        S5      5      5        T R                  S [        [        S!5      5      5        T R                  S"[        [        S#5      5      5        T R                  S$[        [        S%5      5      5        T R                  S&[        [        S'5      5      5        T R                  S&[        [        S(5      5      5        T R                  [        S)[        S*5        U 4S+ jnU" S,5        U" S-5        U" S.5        U" S/5        U" S05        U" S15        U" S25        U" S35        U" S45        U" S55        U" S65        U" S75        U" S85        U" S95        U" S:5        U" S;5        U" S<5        U" S=5        U" S>5        U" S?5        U" S@5        U" SA5        U" SB5        U" SC5        U" SD5        U" SE5        U" SF5        U" SG5        U" SH5        U" SI5        U" SJ5        U" SK5        U" SL5        U" SM5        U" SN5        U" SO5        U" SP5        U" SQ5        U" SR5        U" SS5        U" ST5        U" SU5        U" SV5        U" SW5        U" SX5        U" SY5        U" SZ5        U" S[5        U" S\5        U" S]5        U" S^5        U" S_5        S`nU" U5        U" SaU-   5        U" SbU-   5        U" SIU-   5        U" ScU-   5        U" SdU-   5        g )eN)rG  r   5005)rD  r   rT  z3 / 2z 
  +3/2)r   z-3/2  )   r   z    0013/002 
  )   rG  z 3.2 z003.2)irG  z -3.2 )rp  r   z -3. )rD  rG  z .6 )r   i5  z32.e-5)i@B r   z1E+06)ir   z-1.23e4rA  z .0e+0	z-0.000e0){   r   1_2_3))   k   z1_2_3/3_2_1)  i  z3.14_15)rw  l    @9Hz3.14_15e-1_0)e   d   z1.01z1.0_1zFraction(3, 0)z3/0c                 Z   > S[        U 5      -   nTR                  [        U[        U 5        g )NzInvalid literal for Fraction: )reprr>  rb  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_dd399999999999999999999999999999999999999999999999999_1/1.z1.1+e1.1e)r(  rq   r   r>  rV  )r   r~  vals   `  r   testFromStringFractionTest.testFromStringf  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                 @   Sn[        U5         SnSU-  nSU-  S-
  S-  nU R                  US4[        [        U5      5      5        U R	                  [
        U[        US-   5        U R                  US4[        [        US-   5      5      5        U R	                  [
        U[        US	-   5        U R                  SU4[        [        S
U-   5      5      5        U R	                  [
        U[        SU-   5        U R                  SUS-   -  S-
  S-  SU-  4[        [        SU-   5      5      5        U R	                  [
        U[        SU-   5        U R                  USU-  4[        [        SU-   5      5      5        U R	                  [
        U[        SU-   5        U R	                  [
        U[        SU-   5        U R                  S[        [        SSU-  -   5      5      5        U R	                  [
        U[        SSUS-   -  -   5        S S S 5        g ! , (       d  f       g = f)N  zExceeds the limit1rH  r   rO  r   r  z1/2r  z1/1r  rh  r  z.1z1.1e1rg  r  0)r   r(  rq   r   assertRaisesRegexrb  )r   	maxdigitsr}  r  rQ   s        r   test_limit_intFractionTest.test_limit_int  s   	&y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1s   G8H
Hc                    [        SS5      nUR                  SS5        U R                  S[        U5      5        U R	                  [
        [        USS5        U R	                  [
        [        USS	5        U R                  S[        U5      5        S
Ul        SUl        U R                  S[        U5      5        U R                  [        S
S5      U5        g )NrB  rD  r   rI  rC  rn   rS  ro         )r  r   )
r   r   r(  rq   rW  AttributeErrorsetattrrX   rY   assertNotEqualr   rp   s     r   testImmutableFractionTest.testImmutable  s    aG	

1bQ0.'1k2F.'1mQGQ0 Q0AaGQ'r   c                    U R                  [        [        R                  S5        U R	                  S[        [        R                  S5      5      5        SnU R	                  US4[        [        R                  U5      5      5        U R	                  S[        [        R                  S5      5      5        U R	                  S[        [        R                  S5      5      5        U R	                  S	[        [        R                  S
5      5      5        U R	                  S[        [        R                  S5      5      5        U R	                  [        S5      [        [        R                  S5      5      5        U R	                  S[        [        R                  S5      5      5        U R	                  S[        [        R                  S5      5      5        SnX"-
  nU R                  [        S[        R                  U5        U R                  [        S[        R                  U* 5        U R                  [        S[        R                  U5        g )N      @      @)rH  r   rH  l   {C	 r   rA  r\        $@)r   g      )l      l+?R r   J-DrJ  )r]  l           g	@g      (cannot convert Infinity to integer ratio#cannot convert NaN to integer ratio)
rW  r   r   r   r(  rq   r   r>  rc  rb  )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   U R                  [        [        R                  S5        U R	                  [        SS5      [        R                  S5      5        U R	                  [        S5      [        R                  [        S5      5      5        U R	                  [        SS5      [        R                  [        S5      5      5        U R	                  [        SS5      [        R                  [        S	5      5      5        U R	                  [        S
5      [        R                  [        S5      5      5        U R	                  S[        SS5      -
  [        R                  [        S5      5      5        U R                  [        S[        R                  [        S5      5        U R                  [        S[        R                  [        S5      5        U R                  [        S[        R                  [        S5      5        U R                  [        S[        R                  [        S5      5        g )Nr  rH  r   r   -0rG  z0.5  z5e-3r  5e3l       73Me'z 0.999999999999999999999999999999r  r`  ra  r  r_  rj  )	rW  r   r   from_decimalr(  r   r>  rc  rb  r=   s    r   testFromDecimalFractionTest.testFromDecimal  sx   )Q^^T:2q1>>"#561q~~gdm<=1b1>>'%.#AB1dQ^^GFO%DE4!.."@AQq&\)(@A	C 	  ENNGEN	, 	  ENNGFO	- 	  =NNGEN	, 	  =NNGFO	-r   c                 8   U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        U R                  [        SS5      R                  5       5        g )Nr   rE  r   rF  )
assertTruer   
is_integerassertFalser=   s    r   test_is_integerFractionTest.test_is_integer'  s   !Q**,-"a++-.!R++-.!Q**,-"a++-.!R++-.1a++-.2q,,./1b,,./2r--/0r   c                 T   U R                  [        SS5      R                  5       S5        U R                  [        SS5      R                  5       S5        U R                  [        SS5      R                  5       S5        U R                  [        SS5      R                  5       S5        g )	Nr  r  )r   rD  )rF  rD  r   rA  )r(  r   as_integer_ratior=   s    r   test_as_integer_ratio"FractionTest.test_as_integer_ratio4  s~    1a113V<2q224g>1b224g>1a113V<r   c                    [        S5      nU R                  UR                  S5      [        SS5      5        U R                  UR                  S5      * [        SS5      5        U R                  UR                  S5      [        SS5      5        U R                  UR                  S5      [        SS5      5        U R                  [        S	S
5      R                  S5      [        S5      5        U R                  [        S	S
5      R                  S5      [        SS5      5        U R                  [        S5      R                  S5      [        S5      5        S H.  nU R                  [        S[        S5      R                  U5        M0     g )Nz3.1415926535897932i'  rQ  rR  ip   iM  j      ri  ry  r   rx  f   r   )r   rE  z$max_denominator should be at least 1)r   r(  limit_denominatorr>  rb  )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                 4   U R                  S[        R                  " [        SS5      5      5        U R                  S[        R                  " [        SS5      5      5        U R                  S[        R                  " [        SS5      5      5        U R                  S[        R
                  " [        SS5      5      5        U R                  S[        R
                  " [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        S	S5      5      5        U R                  S[        [        S
S5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  S[        [        SS5      5      5        U R                  [        [        [        S5      5        U R                  S[        [        [        S5      [        S5      5      5      5        U R                  S[        [        SS5      5      5        g )NrE  irH  r   rL  rF  rN  r   r  FTrD  r   r^    22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU?  33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331?        )r,  rO   truncr   floorceilintroundr(  boolr   rW  rc  assertAlmostEqualr  r=   s    r   testConversionsFractionTest.testConversionsH  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                     [        SS5      nU R                  U[        R                  5        U R	                  [        U5      S5        U R	                  [        [        U5      5      [
        5        g )NrD  r   r   )r   assertIsInstancetypingSupportsIntr(  r  rs   )r   fs     r   testSupportsIntFractionTest.testSupportsInt`  sO    aGa!3!34Q#c!fs+r   c                   ^  " U4S jS[         5      m[        T" S5      T" S5      5      nU R                  UR                  T5        U R                  UR                  T5        U R                  U[
        R                  5        U R                  [        U5      S5        U R                  [        [        U5      5      [         5        g )Nc                   T   > \ rS rSr\S 5       r\U 4S j5       rU 4S jrU 4S jrSr	g):FractionTest.testIntGuaranteesIntReturn.<locals>.CustomIntil  c                     U $ r   r<   r=   s    r   rn   DFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.numerators  s    r   c                    > T" S5      $ r   r<   )r   	CustomInts    r   ro   FFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.denominatorw  s     |#r   c                 >   > T" [        U 5      [        U5      -  5      $ r   r  r   r    r  s     r   r   BFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__mul__{  s     TSZ!788r   c                 >   > T" [        U 5      [        U5      -  5      $ r   r  r  s     r   __floordiv__GFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__floordiv__~  s     Tc%j!899r   r<   N)
rE   rF   rG   rH   propertyrn   ro   r   r  rJ   )r  s   r   r  r  l  s:       $ $9: :r   r  rq  rG  r   )	r  r   r  rn   ro   r  r  r(  rs   )r   r  r  s     @r   testIntGuaranteesIntReturn'FractionTest.testIntGuaranteesIntReturng  s    
	: 	:* imYq\*akk95ammY7a!3!34Q#c!fs+r   c                 l   [         R                   " S S5      5       n[        R                  R	                  U5        U" S5      n[        U5      nU R                  UR                  U5        U R                  [        U5      S5        U" S5      n[        U5      nU R                  [        U5      S5        g )Nc                   >    \ rS rSrSrS rS r\S 5       rS r	\	r
Srg)	=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuei  r   c                     Xl         g r   rD   r   s     r   r   FFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__  s    "
r   c                 ,    [        U R                  5      $ r   )r  r   r=   s    r   __bool__FFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__  s    DJJ''r   c                     U $ r   r<   r=   s    r   rn   GFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numerator  s	     r   c                     [        S5      e)Nz&Avoid comparisons in Fraction.__bool__)AssertionErrorr'   s     r   r(   DFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__  s    $%MNNr   rD   N)rE   rF   rG   rH   ro   r   r  r  rn   r(   r1   rJ   r<   r   r   CustomValuer    s2    K#(  O Fr   r   r   Tr   F)		functoolstotal_orderingr   r   registerr   assertIsrn   r  )r   r   rn   rp   s       r   testBoolGuarateesBoolReturn(FractionTest.testBoolGuarateesBoolReturn  s     
	!	!	 	 
"	( 	!!+.N	iLakk9-d1gt$N	iLd1gu%r   c           	         U R                  [        S5      [        [        S5      S5      5        U R                  [        S5      [        [        S5      S5      5        U R                  [        S5      [        [        S5      S5      5        U R                  [        SS5      [        [        S	S
5      S5      5        U R                  [        SS5      [        [        SS
5      S5      5        g )Ni8ijrF  i      rE  rH  r  ry  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           
      	   U R                  [        SS5      [        SS5      [        SS5      -   5        U R                  [        SS5      [        SS5      [        SS5      -
  5        U R                  [        SS5      [        SS5      [        SS5      -  5        U R                  [        SS5      [        SS5      [        SS	5      -  5        U R                  [        SS	5      [        SS5      [        SS5      -  5        U R                  [        S
S5      [        SS	5      [        SS5      -  5        U R                  [        [        R
                  [        S5      [        S5      5        U R                  S[        SS5      [        SS5      -  5        U R                  S[        SS5      [        S5      -  5        U R                  [        SS5      [        SS5      [        SS5      -  5        U R                  [        SS5      [        SS5      [        SS5      -  5        U R                  [        S5      [        SS5      4[        [        SS5      [        SS5      5      5        U R                  [        S5      [        SS5      4[        [        SS5      [        SS5      5      5        U R                  [        SS5      [        SS5      [        S5      -  5        U R                  [        SS5      [        SS5      [        S5      -  5        U R                  S[        S	5      [        SS5      -  5        U R                  [        SS5      [        SS5      75        [        [        S5      [        SS5      5      nU R                  UR                  S5        U R                  UR                  S5        [        SS5      S-  nU R                  U[        SS5      5        U R                  UR                  S5        U R                  UR                  S5        [        SS5      S-  nU R                  U[        SS5      5        U R                  UR                  S5        U R                  UR                  S5        [        SS5      S-  nU R                  U[        S	S5      5        U R                  UR                  S	5        U R                  UR                  S5        g )Nr   r   rH  rG  rp     r  rD  r  r     rF  r   rO  rJ  rB  r            @rE  )r(  r   rW  rV  r%   truedivr,  divmodpowr  realimagrn   ro   )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                 p   U R                  [        SS5      [        SS-  S-   S5      [        SSS-  S-
  5      -  5        U R                  [        SS5      [        S	S
-  * S5      [        SS	S
-  5      -  5        U R                  S[        SS5      4[        [        SS-  S-   S5      [        SSS-  S-
  5      5      5        U R                  S	S-  * S-  [        S	S
-  * S5      [        SS	S
-  5      -  5        U R                  S[        SS	S
-  5      [        SS	S
-  5      -  5        U R                  S[        S	S	S
-  5      4[        [        SS	S
-  5      [        SS	S
-  5      5      5        U R                  S	S-  * S-  [        SS5      4[        [        S	S
-  * S5      [        SS	S
-  5      5      5        g )Nl     b;efOpUmnP|} l   ~Jw5PHyT#/jei4T rH  #   r   l     P ~cegrB  l                r   ry  rD  rG  l   _ri  rI  )r,  r   r3  r  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                 <   U R                  [        SS5      [        SS5      S-   5        U R                  S[        SS5      S-   5        U R                  S[        SS5      S-   5        U R                  [        SS5      S[        SS5      -   5        U R                  SS[        SS5      -   5        U R                  SS[        SS5      -   5        U R                  [        SS5      [        SS5      S-
  5        U R                  S	[        SS5      S-
  5        U R                  S
[        SS5      S-
  5        U R                  [        SS5      S[        SS5      -
  5        U R                  SS[        SS5      -
  5        U R                  SS[        SS5      -
  5        g )NrL  rH  r   g?      ?y?              ?        rM  gy        rO  g?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           
      	   U R                  [        SS5      [        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  [        SS5      S[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  [        SS5      [        S	S5      -  [        S	S5      5        U R                  [        S	S5      [        SS5      -  [        S	S5      5        U R                  [        SS5      [        S	S5      -  [        S
S5      5        U R                  [        S	S5      [        SS5      -  [        S	S5      5        U R                  [        SS5      [	        S5      -  [	        [        SS5      5      5        U R                  [	        S5      [        SS5      -  S5        U R                  [        SS5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        SS5      5        U R                  [        SS5      [        SS5      -  [        [        SS5      S5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        [        SS5      [        SS5      5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        [        R                  [        SS5      [        SS5      5        U R                  [        SS5      [        SS5      -  S5        U R                  [        SS5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        SS5      5        U R                  [        SS5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        SS5      5        g )Nr   rH  r^  r  r  r   rD  r   rG  rI  r  r  rO        @Xz3/2 * X      @g      @y      @        y      @              @      @)r,  r   ri   r   r   r(  r   rW  r   r%   mulr   r  r$  r   ry   r=   s    r   testMixedMultiplication$FractionTest.testMixedMultiplication  s`   qBx1bA6sAaHsN3x1bX)>?qBxQq"X6sC!Ar(N3x(a2h)>?qAwq!)<<a1gF}Q2Qq!W<a1gFqAwQ2CAJ?s1ay1Q72AaG<qAwa0$qAw-@tAw1a0#61a<#44l96MN)X\\<3Da1gNqAwq!4eAaGQ6GHqAwsA6c1FqAwa3T!Aq'1Q75KLqAwQ)::KPV<WX)X\\5A;!QHtAqzAaG3Z@1a?3#779ST)X\\?33G1aQ1a8C=0(92EF)X\\8C=!Aq'Jr   c           	         U R                  [        SS5      [        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  [        SS5      S[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  [        S	S
5      [        S	S5      -  [        SS
5      5        U R                  [        SS	5      [        S
S	5      -  [        SS
5      5        U R                  [        S	S
5      [        S	S5      -  [        SS5      5        U R                  [        SS	5      [        S
S	5      -  [        SS
5      5        U R                  [        S
S	5      [	        S5      -  [	        [        SS5      5      5        U R                  [	        S5      [        S
S	5      -  S5        U R                  [        S	S
5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        S	S
5      5        U R                  [        S	S
5      [        SS
5      -  [        [        S	S5      S5      5        U R                  [        S	S
5      [        SS
5      -  [        SS5      5        U R                  [        S	S
5      [        SS	5      -  [        SS5      5        U R                  [        [        R                  [        SS
5      [        S
S	5      5        U R                  [        SS	5      [        S
S	5      -  S5        U R                  [        S	S
5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        S	S
5      5        U R                  [        S	S
5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        S
S	5      5        g )Nr   rH  r^  r  r  r   r  y      $@        rD  r   rG  rI  r  r  rO  r$  r%  z3/2 / Xr  rF  r&        ?gQ?g
ףp=
?r'  )r,  r   ri   r   r   r(  r   rW  r   r%   r  r   r  r   ry   r=   s    r   testMixedDivisionFractionTest.testMixedDivision&  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           
         U R                  S[        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  SS[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  [        SS5      [        SS5      S-  5        U R                  S	[        SS5      S-  5        U R                  [        SS5      S[        SS5      -  5        U R                  S
S[        SS5      -  5        U R                  S	[        SS5      [        S5      -  5        U R                  [        S5      [        SS5      [        S5      -  5        U R                  [        S5      [        SS5      [        S5      -  5        U R                  S[        SS5      [        S5      -  5        U R                  S[        SS5      4[	        [        SS5      S5      5        U R                  [	        S	S5      [	        [        SS5      S5      5        U R                  S[        S5      4[	        S[        SS5      5      5        U R                  [	        SS	5      [	        S[        SS5      5      5        U R                  [	        S	[        S5      5      [	        [        SS5      [        S5      5      5        U R                  [	        S	[        S5      5      [	        [        SS5      [        S5      5      5        U R                  [	        S[        S5      5      [	        [        SS5      [        S5      5      5        U R                  [	        S[        S5      5      [	        [        SS5      [        S5      5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        [        R                  [        SS5      [        S5      5        U R                  [        S5      [        SS5      -  S5        U R                  [        SS5      [        S5      -  [        S5      5        U R                  [        [        R                  [        S5      [        SS5      5        U R                  [        [        R                  [        SS5      [        SS5      5        U R                  [        [        R                  [        SS5      [        SS5      5        U R                  [        [        R                  [!        SS5      [        SS5      5        U R                  [        SS5      [#        S5      -  [#        S5      5        U R                  [        [        R                  [#        S5      [        SS5      5        U R                  [        SS5      [%        S5      -  [%        S5      5        U R                  [        [        R                  [%        S5      [        SS5      5        g )Nr   r   rH          r  rJ  l     d&O!g      "@r^  g?r`  ra  rE  grD  r   rG  r  r        ?r%  z3/2 % X)r,  r   r   r3  r  ri   r   rW  r   r%   modr   r(  r   r   r$  r  r   ry   r=   s    r   testMixedIntegerDivision%FractionTest.testMixedIntegerDivisionC  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           	         U R                  [        SS5      [        SS5      S-  5        U R                  [        SS5      [        SS5      S-  5        U R                  S[        SS5      S-  5        U R                  S[        SS5      S	-  5        U R                  S
S[        SS5      -  5        [        S[        SS5      5      nU R                  SUR                  5        U R                  SUR                  5        U R                  [        SS
5      S[        SS5      -  5        U R                  SS
[        SS5      -  5        U R                  SS[        SS5      -  5        U R                  S	S	[        SS5      -  5        U R                  [        [        R                  [        SS5      S5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS
5      [        SS5      -  S5        U R                  [        S
S5      [        SS5      -  [        5        U R                  [        S
S5      [        SS5      -  S5        U R                  [        SS5      [        SS5      -  S5        U R                  [        SS
5      [        SS5      -  S5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        SS5      [        SS5      -  [        SS5      5        U R                  [        S
S5      [        SS5      -  [        5        U R                  [        S
S5      [        SS5      -  S5        U R                  [        S
5      [        SS5      -  [        S
S5      5        U R                  [        S
5      [        SS5      -  [        S
[        S5      5      5        U R                  [        S
5      [        SS5      -  [        S
[        S5      * 5      5        U R                  [        S
5      [        SS5      -  [        S
S5      5        U R                  [        SS5      [        S5      -  [        S5      5        U R                  [        S5      [        SS5      -  [        S5      5        U R                  [        SS5      [        SS5      -  [!        [        SS
5      S5      5        U R                  [        SS5      [        SS5      -  [!        [        S5      S5      5        U R                  [        SS5      [#        SS5      -  [!        SS5      5        U R                  [        SS5      [#        SS5      -  [!        SS5      5        U R                  [!        S
S5      [        SS5      -  [!        SS5      5        U R                  [!        S
S5      [        SS5      -  [!        S S!5      5        U R                  [!        S
S5      [        SS5      -  [!        S"S#5      5        U R                  [!        S
S5      [        SS5      -  [!        S$S5      5        U R                  [        SS5      [%        S5      -  [%        S5      5        U R                  [%        S5      [        SS5      -  [%        S5      5        U R                  [        SS5      ['        S5      -  ['        S5      5        U R                  ['        S5      [        SS5      -  ['        S5      5        g )%Nry  r   rH  rF  r   r^  r  r  r   r  rE  r   r  g      ?rD  r  r  rp  irO  g      @r  y              @r$  g      r%  z3/2 ** XzX ** 1.5r0  g      @g       @@   r  g      ?r  g      ?)r,  r   r  r  r  r(  r  rW  rV  r%   r   r  r   r   r   r  r   r$  r   ry   )r   r  s     r   testMixedPowerFractionTest.testMixedPowero  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           	          U R                  [        [        R                  [	        SS5      [        S5      5        U R                  [        [        R                  [        S5      [	        SS5      5        g )NrD  rL  z	3.1415926)rW  r   r%   addr   r   r=   s    r   testMixingWithDecimal"FractionTest.testMixingWithDecimal  sN    )X\\Ab'7;#7	9)X\\!+.!B	9r   c                    U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :g  5        U R                  [        SS5      [        SS5      :g  5        g )Nr   r   rD  )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                    U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :H  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :*  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        U R                  [        SS5      [        SS5      :  5        g )Nr   r   rD  r  rB  )r  r   rL   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                    [        S5      n[        SS5      nU R                  X:g  5        U R                  X:  =(       d    X:  5        U R                  X:H  5        U R                  X:*  =(       a    X:  5        U R                  X!:g  5        U R                  X!:  =(       d    X!:  5        U R                  X!:H  5        U R                  X!:*  =(       a    X!:  5        g )NgUUUUUU?r   rD  )r   r   r  r  r  s      r   testComparisonsDummyFloat&FractionTest.testComparisonsDummyFloat  s    uaG' *AF+' *AF+r   c                    U R                  S[        SS5      :  5        U R                  S[        SS5      :  5        U R                  [        SS5      S:  5        U R                  [        SS5      S:  5        U R                  [        SS5      S:  5        U R                  [        SS5      S:  5        U R                  S[        SS5      :  5        U R                  S[        SS5      :  5        U R                  [        S	5      [        SS5      :  5        U R                  [        S
5      [        SS5      :  5        U R                  [        S5      [        SS5      :  5        U R                  [        SS5      [        S	5      :  5        U R                  [        SS5      [        S
5      :  5        U R                  [        SS5      [        S5      :  5        g )Nr   rG  r  rD  r   333333?皙?r1  r`  ra  r   rH  r_  rp  rB     rS     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                    U R                  S[        SS5      :*  5        U R                  S[        SS5      :*  5        U R                  [        SS5      S:*  5        U R                  [        SS5      S:*  5        U R                  S[        SS5      :*  5        U R                  S[        SS5      :*  5        U R                  [        SS5      S:*  5        U R                  [        SS5      S:*  5        U R                  [        S	5      [        SS5      :*  5        U R                  [        S
5      [        SS5      :*  5        U R                  [        S5      [        SS5      :*  5        U R                  [        SS5      [        S	5      :*  5        U R                  [        SS5      [        S
5      :*  5        U R                  [        SS5      [        S5      :*  5        g )Nr1  r   r   rG  rH  r  rD  rG  r`  ra  r   rH  r_  rp  rB  rI  rS  rJ  rK  rL  r=   s    r   testMixedLessEqualFractionTest.testMixedLessEqual  sd   qAw'!Q(!Q3'1aC(Qq!W%a1g&!Q1%1aA&u1a01f1b12u2q12!Q5</02reFm343e45r   c           
      j   U R                  [        S5      [        S5      :H  5        U R                  S[        [        [        R                  " S5      S-   5      5      :  5        U R                  S[        [        R                  " S5      S-   5      :  5        U R                  S[        [        R                  " S5      S-
  5      :*  5        U R                  S[        [        R                  " S5      S-
  5      :  5        U R                  S[        [        R                  " S5      S-   5      :  5        g )NrJ  r  r   )r  r   r   rO   r  r  r=   s    r   testBigFloatComparisons$FractionTest.testBigFloatComparisons  s    6eFm34a

4(81(<&= >>?qD!1A!56674::d#3a#7!889qD!1A!56674::d#3a#7!889r   c                 R   U R                  [        S5      [        S5      :H  5        U R                  [        [
        R                  [        S5      [        S5      5        U R                  [        [
        R                  [        S5      [        S5      5        [        SS5      n[        SS5      n[        SS5      nU R                  X:H  5        U R                  X:g  5        U R                  X:H  5        U R                  X:g  5        [
        R                  [
        R                  [
        R                  [
        R                  4 H_  nU R                  [        XAU5        U R                  [        XBU5        U R                  [        XAU5        U R                  [        XCU5        Ma     g )NrJ  rD  r  r,  r0  g?)r  r   r  rW  r   r%   r8   r,   r  r0   r4   )r   r
  r  wr!   s        r   testBigComplexComparisons&FractionTest.testBigComplexComparisons  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                    U R                  S[        SS5      :H  5        U R                  S[        SS5      :H  5        U R                  [        SS5      S:H  5        U R                  [        SS5      S:H  5        U R                  S[        SS5      :H  5        U R                  S[        SS5      :H  5        U R                  [        SS5      S:H  5        U R                  [        SS5      S:H  5        U R                  [        SS5      [        S	5      :H  5        U R                  [        S	5      [        SS
5      :H  5        U R                  [        SS5      [        S5      :H  5        U R                  [        S5      [        SS5      :H  5        g )Nr1  r   r   rG  rH  r  rD  rG  r_  rB  r`  ra  rL  r=   s    r   testMixedEqualFractionTest.testMixedEqual  s.   qAw'!Q(!Q3'1aC(Qq!W%a1g&!Q1%1aA&1aE%L01u1a011aE%L01v!Aq'12r   c           	      t   U R                  S[        [        SS5      5      5        U R                  S[        [        S5      5      5        U R                  S[        [        SS5      5      5        U R                  S	[        [        SS5      5      5        U R                  S
[        [        SS5      5      5        g )NzFraction(7, 3)rB  rD  z Fraction(6283185307, 2000000000)3.1415926535z#Fraction(-1, 100000000000000000000)r   l   Fx:^V z7/37)r(  r{  r   r7  r=   s    r   testStringification FractionTest.testStringification-  s    )4!Q=9;a/0	2>a7m,	.AaG-c!Aq'l+r   c           	      Z   [         R                  R                  n[         R                  R                  nU R	                  [        S5      [        [        SS5      5      5        U R	                  [        SS-  5      [        [        SS-  5      5      5        U R                  [        [        S5      5      [        [        S5      5      5        U R	                  U[        [        SU5      5      5        U R	                  [        [        S5      5      [        S5      R                  5       5        g )	Nr[  rG  r   rH  2   rJ  r   rE  )
sys	hash_infomodulusr`  r(  hashr   r  r   __hash__)r   hmodhinfs      r   testHashFractionTest.testHash6  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                     [        S5      nSUSSSSS4u  p#pEpgn[        XB-
  5      [        SS5      :  a:  UnXV-   US-   peXx-   US-   pX5-  U-  nXC-  n[        XB-
  5      [        SS5      :  a  M:  U R                  [        R                  U5        g )NrD  r   r   r    ʚ;r      )r   absr  rO   pi)	r   threelaststr|  r   nar   das	            r   testApproximatePiFractionTest.testApproximatePiA  s     !$%uaAq"$<!!r!)nqE{*ED"Q$rD"R%r!AFA !)nqE{* 	tww*r   c                 N   [        S5      nSS[        S5      SSS4u  p#pEpg[        XC-
  5      [        SS5      :  aD  UnUS-  nXRUS-
  -  -  nXaU-  -  nUS-  nXFU-  U-  -  n[        XC-
  5      [        SS5      :  a  MD  U R                  [        R                  " S5      U5        g )Nr   r   rm  r   rE  )r   ro  r  rO   cos)r   r
  r  rr  r|  factrQ   signs           r   testApproximateCos1 FractionTest.testApproximateCos1N  s     aD'(!QqT1a':$!3!)nqE{*EFA1IDq5LCBJDtd""A !)nqE{* 	txx{A.r   c           
         [        SS5      n[        SS5      n[        S[        R                  S-   5       H'  nU R                  U[        [        X5      5      5        M)     U R                  [        U5      [        [        U5      5      5        U R                  [        U5      [        [        U5      5      5        U R                  [        U5      [        [        U5      5      5        U R                  [        U5      [        [        U5      5      5        U R                  U[        U5      5        U R                  U[        U5      5        g )Nrq  rB  r   r   )r   ri   rangepickleHIGHEST_PROTOCOLr(  r	   r   idr   r   r  r,  )r   rp   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                 V    [        SS5      nU R                  [        [        USS5        g )Nrq  rB  ru   rH  )r   rW  r  r  r  s     r   
test_slotsFractionTest.test_slotsh  s#    b!H.'1c2>r   c                 l    " S S[         5      n[        R                  " U" S5      U" S5      5      nU R                  UR                  S5        U R                  UR
                  S5        U R                  [        UR                  5      U5        U R                  [        UR
                  5      U5        g )Nc                   F    \ rS rSrS rS rS r\S 5       r\S 5       r	Sr
g)	-FractionTest.test_int_subclass.<locals>.myintin  c                 N    [        U 5      " [        U 5      [        U5      -  5      $ r   rs   r  r'   s     r   r   5FractionTest.test_int_subclass.<locals>.myint.__mul__o  s    Dz#d)c%j"899r   c                 N    [        U 5      " [        U 5      [        U5      -  5      $ r   r  r'   s     r   r  :FractionTest.test_int_subclass.<locals>.myint.__floordiv__q  s    Dz#d)s5z"9::r   c                 R    [        U 5      " [        U 5      [        U5      -  5      nU$ r   r  )r   r    r
  s      r   r   5FractionTest.test_int_subclass.<locals>.myint.__mod__s  s"    Js4y3u:56r   c                 6    [        U 5      " [        U 5      5      $ r   r  r=   s    r   rn   7FractionTest.test_int_subclass.<locals>.myint.numeratorv  s    Dz#d),,r   c                 $    [        U 5      " S5      $ r   )rs   r=   s    r   ro   9FractionTest.test_int_subclass.<locals>.myint.denominatory  s    Dz!}$r   r<   N)rE   rF   rG   rH   r   r  r   r  rn   ro   rJ   r<   r   r   myintr  n  s7    :; - -% %r   r  rD  r  r   r   )r  rV   rW   r(  rn   ro   rs   )r   r  r  s      r   test_int_subclassFractionTest.test_int_subclassm  s    	%C 	% uU|U5\:a(*akk*E2amm,e4r   c                    / [        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S5      SS	4P[        SS5      S
S4P[        SS5      S
S4P[        S5      S
S4P[        S5      S
S	4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S5      SS	4P[        S5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      S S!4P[        SS5      S"S#4P[        SS5      S$S%4P[        S&S'5      S(S)4P[        S*S'5      S+S,4P[        S-5      S+S.4P[        S/5      S(S04P[        S15      S2S34P[        S45      S2S54P[        S5      S2S64PnU H9  u  p#nU R                  X#S79   U R                  [        X#5      U5        S S S 5        M;     g ! , (       d  f       MM  = f)8Nr   rD  +z+2/3rF  z-2/3z+3rp  -3 z 2/3z 3-z2/33r   rn  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,679i.r  z-1_234/5_679i 	1_234_567iy)z
-1,234,567rs  #z123/1iz-123/1z0/1fractionspec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   *I
I"	c                    / [        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS	4P[        SS
5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        S
S5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS 4P[        S!5      SS"4P[        S#5      SS"4P[        S$S5      SS%4P[        S&S5      SS'4P[        S(5      SS)4P[        S*5      SS+4P[        S,5      SS-4P[        SS5      S.S/4P[        SS5      S0S14P[        S25      S3S44P[        S5S65      S7S84P[        S25      S9S:4P[        S5S65      S;S84P[        S5S65      S<S84P[        S5S65      S=S>4P[        S?5      S@SA4P[        SB5      SCSD4P[        SES6S-  5      SFSG4PnU H9  u  p#nU R                  X#SH9   U R                  [        X#5      U5        S S S 5        M;     g ! , (       d  f       MM  = f)INr   rD  z.6ez6.666667e-01z1.500000e+00rq  z1.538462e-01   z8.695652e-02!   z6.060606e-02z6.500000e+00   z1.000000e+01z1.150000e+01z1.650000e+01r   z.3ez	0.000e+00r   r  z	1.000e-03ry  z	1.000e-02rH  z	1.000e-01z	1.000e+00z	1.000e+01z	1.000e+02z	1.000e+03z99.999994999999z9.999999e+01z	99.999995z1.000000e+02z99.999995000001rF  z-6.666667e-01rp  z-1.500000e+00iz-1.000000e+021e1000z1.000e+1000z1e-1000z1.000e-1000z.6Ez6.666667E-01z.1ez6.7e-01z0.995z.0ez1e+00rP  rB  r=  z3.142857e+00z#.0ez1.e+00z11.6ez12.6ez13.6ez 3.142857e+00z1234567.123456z,.5e1.23457e+06z
123.123456z012_.2ez0_001.23e+02rE  zz.6ez-3.091690e-85r  r  r  s        r   test_format_e_presentation_type,FractionTest.test_format_e_presentation_type  s   3
q!We^,3
q!We^,3
 q"Xun-3
 q"Xun-	3

 q"Xun-3
 r1Xun-3
 r1Xun-3
 r1Xun-3
 r1Xun-3
 q!We^,3
 q!We^,3
 qT5+&3
 q$Z,3
  q#Y{+!3
" q"Xuk*#3
$ q!We[)%3
& rUE;''3
( sVUK()3
* tWe[)+3
.  !5.9/3
0 {^UN313
2  !5.933
6 r1Xuo.73
8 r1Xuo.93
: tWe_-;3
> x[%/?3
@ y\5-0A3
D q!We^,E3
H q!WeY'I3
J wZ(K3
N r1XsN+O3
R wZ*S3
V r1Xw/W3
X r1Xw/Y3
Z r1Xw0[3
^  &-8_3
` |_i8a3
d r1c6]FO4e3
	h )2$HHx;  !7B <; )2;;s   	I22
J	c                    / [        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        S	S5      SS
4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S S5      SS!4P[        S"5      SS#4P[        S$5      SS%4P[        S&5      SS%4P[        S'5      SS(4P[        S)5      SS(4P[        S*5      SS+4P[        S,5      SS+4P[        S-5      SS.4P[        S/5      SS04P[        S15      SS24P[        S35      SS24P[        S45      SS54P[        S65      SS54P[        S75      SS84P[        S95      SS84P[        S:5      SS;4P[        SS5      SS4P[        SS5      S<S4P[        SS5      S=S>4P[        SS5      S?S@4P[        SAS5      SSB4P[        SAS5      S<SB4P[        SAS5      S=SB4P[        SAS5      S?SB4P[        SS5      SCSD4P[        SES5      SCSF4P[        SS5      SCSG4P[        S S5      SCSH4P[        SS5      SISJ4P[        SES5      SISK4P[        SS5      SISL4P[        S S5      SISM4P[        SN5      SOS4P[        SN5      SPS4P[        SN5      SQSR4P[        SN5      SSST4P[        SU5      SOS4P[        SU5      SPS4P[        SU5      SQSR4P[        SU5      SSST4P[        SS5      SVSW4P[        SX5      SVSY4P[        SX5      SZS[4P[        SS5      S\SW4P[        SS5      S]S^4P[        SS5      S_S4P[        SS5      S`S4P[        SS5      SaSb4P[        SS5      ScSd4P[        SS5      SeSf4P[        SS5      SgSh4P[        SAS5      SiSj4P[        SS5      SiSk4P[        SAS5      SlSB4P[        SAS5      SmSn4P[        SAS5      SoSp4P[        SAS5      SqSr4P[        SAS5      SsSt4P[        SAS5      SuSv4P[        SAS5      SwSx4P[        SAS5      SySz4P[        SAS5      S{S|4P[        SAS5      S}S~4P[        SAS5      SS4P[        SAS5      SS4P[        SAS5      SS4P[        SAS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        SS5      SS4P[        SS5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4P[        SS5      SS4PnU H9  u  p#nU R                  X#S9   U R                  [        X#5      U5        S S S 5        M;     g ! , (       d  f       MM  = f)Nr   r   z.2fz0.00rD  z0.33r   z0.67r  z1.33r  0.12z0.38rq  z0.08   z0.01ri  rP  rB  z.5fz3.14286	399024789z399024789.00i i  z.50fz43.14159265392142104470871594159265392142104470871594r  z3.142857z0.000000iz	-3.142857z1.225z1.22z1.2250000001z1.23z1.2349999999z1.235z1.24z1.245z1.2450000001z1.25z1.2549999999z1.255z1.26z-1.225z-1.22z-1.2250000001z-1.23z-1.2349999999z-1.235z-1.24z-1.245z-1.2450000001z-1.25z-1.2549999999z-1.255z-1.26z-.2fz+.2fz+0.67z .2fz 0.67rF  z-0.67z.0fr  rE  r  r  r  z#.0fz0.z-0.3.z-3.z-0.001zz.2fz-z.2fz+z.2fz+0.00z z.2fz 0.00z0.001z6.2fz  0.67i90  z12345.0012fz12345.000000z>6.2fz<6.2fz0.67  z^3.2fz^4.2fz^5.2fz0.67 z^6.2fz 0.67 z^7.2fz 0.67  z^8.2fz  0.67  z=+8.2fz-   0.67z+   0.67zX>3.2fzX>7.2fzXX-0.67zX<7.2fz-0.67XXzX^7.2fzX-0.67XzX=7.2fz-XX0.67z >7.2fz  -0.67z >7.2fz  -0.67z
>7.2fz

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

 q!WeV$x
 q!WeV$x
 q!WeV$x
 q"Xuf%x
 q#Yv&x
 q#Yv&x
 r1Xui(x
 {^UN3x
 vuvCEx
" r1XsJ'#x
$ qT3
#%x
& sAY[)'x
* wZ'+x
, ~v.-x
. ~v./x
0 wZ'1x
2 wZ'3x
4 ~v.5x
6 ~v.7x
8 wZ'9x
: x[%);x
< 0=x
> 0?x
@ x[%)Ax
B x[%)Cx
D 0Ex
F 0Gx
H x[%)Ix
L q!WeV$Mx
N q!Wff%Ox
P q!Wfg&Qx
R q!Wfg&Sx
T r1Xug&Ux
V r1Xvw'Wx
X r1Xvw'Yx
Z r1Xvw'[x
^ q!WeS!_x
` r1Xud#ax
b r1Xuc"cx
d sAYt$ex
h q!Wfd#ix
j r1Xvu%kx
l r1Xvt$mx
n sAY&ox
r x[&&)sx
t x['6*ux
v x['7+wx
x x['7+yx
z wZ({x
| wZ&)}x
~ wZ'*x
@ wZ'*Ax
D q!Wfh'Ex
F uXvz*Gx
H uXun-Ix
L q!Wgx(Mx
N q!Wgx(Ox
P q!Wgv&Qx
R q!Wgv&Sx
T q!Wgw'Ux
V q!Wgx(Wx
X q!Wgy)Yx
Z q!Wgz*[x
^ r1Xx,_x
` q!Wh
+ax
d r1Xx)ex
f r1Xx+gx
h r1Xx+ix
j r1Xx+kx
l r1Xx+mx
n r1Xx+ox
r r1X{O4sx
t r1Xy+.ux
v r1Xy+.wx
x r1Xx+yx
z r1Xx+{x
| r1Xz=1}x
@ r1Xw	*Ax
B r1Xx+Cx
D q!Wh	*Ex
F q!Wh	*Gx
L q!Wff%Mx
N q!Wgv&Ox
P q!Wgv&Qx
R q!Wgv&Sx
T q!Wgv&Ux
X q!Wgv&Yx
\ q!Wff%]x
^ q!Wfk*_x
` |_fl3ax
b y\6>2cx
d z]FO4ex
f z]D"56gx
j q!Wff%kx
l q!Wfk*mx
n |_fl3ox
p y\6>2qx
r z]FO4sx
v {^Xz2wx
x {^Xz2yx
z {^X{3{x
| {^Y5}x
~ {^Y7x
@ {^Y7Ax
B {^Y8Cx
D {^Y(89Ex
F {^Y(:;Gx
H {^Y(:;Ix
J |_h4Kx
L |_h4Mx
N |_h4Ox
P |_i6Qx
R |_i7Sx
T |_i9Ux
V |_i9Wx
X |_i)9:Yx
Z |_i):;[x
\ |_i)<=]x
` |_h1ax
b |_h	2cx
d |_h
3ex
f |_h5gx
l {^Z8mx
v wZ)wx
x wZ7+yx
| r1Xui(}x
@ r1Xui(Ax
B q!WeX&Cx
D q"Xug&Ex
F q#Yw'Gx
H q$Z(Ix
J q%[%)Kx
L q!WeU#Mx
N q!Wff%Ox
P sAY,Qx
R r1Xvy)Sx
T r1Xvz*Ux
V r1Xw
+Wx
Z q!WeV$[x
\ q!WeV$]x
^ q!WeV$_x
` tT]E6*ax
b tT]E6*cx
d tT]E6*ex
f q#Yu%gx
h r4[%'ix
j r4[%'kx
l sD\5%(mx
n sD\5%(ox
	r )2$HHx;  !7B <; )2;;s   c--
c<	c                 F   / [        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS	4P[        S
5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS4P[        S5      SS 4P[        S!5      S"S#4P[        S$5      S"S#4P[        S%5      S"S&4P[        S'5      S"S&4P[        S(5      S"S)4P[        S*5      S"S)4P[        S+5      S"S,4P[        S-5      S"S,4P[        S.5      SS/4P[        S05      SS14P[        S25      SS34P[        S45      SS54P[        S65      SS74P[        S.5      S8S94P[        S05      S8S04P[        S25      S8S24P[        S45      S8S44P[        S65      S8S:4P[        S5      S;S4P[        S5      S;S<4P[        S=5      S>S?4P[        S@5      SASB4P[        SC5      SASD4P[        SE5      SASF4P[        SG5      SASH4P[        SG5      SISJ4P[        SK5      SASL4P[        SK5      SISM4P[        S@5      SNSB4P[        SC5      SNSD4P[        SE5      SNSF4P[        SG5      SNSH4P[        SG5      SOSJ4P[        SK5      SNSL4P[        SP5      SQSR4P[        SSSTSU-  5      SVSW4PnU H9  u  p#nU R                  X#SX9   U R                  [        X#5      U5        S S S 5        M;     g ! , (       d  f       MM  = f)YNz0.000012345678z.6gz1.23457e-05z0.00012345678z0.000123457z0.0012345678z
0.00123457z0.012345678z	0.0123457z
0.12345678z0.123457z	1.2345678z1.23457z	12.345678z12.3457z	123.45678z123.457r  z1234.57z	12345.678z12345.7z	123456.78123457z	1234567.8r  z
9.99999e+2z.4g1000z
9.99999e-8z1e-07z
9.99999e+8z1e+09z-0.115z.2gz-0.12z-0.125z-0.135z-0.14z-0.145z0.115r  z0.125z0.135z0.14z0.145r   r  z123.400z123.4z123.000123z120.00012012000000z1.2e+07z#.6gz0.00000z1.20000e+07z.6Gz1.23457E+06r]  rS   z3.14159z0.000031415z.0gz3e-05z
0.00031415z0.0003z0.31415z0.3z3.1415r  z#.0gr  z31.415z3e+01z3.e+01z.1gz#.1gl            z_.25g18_446_744_073_709_551_616rE  rB  ry  zgz-3.09169e-85r  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   (L
L 	c                 t   [        SS5      nU R                  [        5         [        US 5        S S S 5        / SQnU HD  nU R	                  US9   U R                  [
        5         [        X5        S S S 5        S S S 5        MF     g ! , (       d  f       N]= f! , (       d  f       N,= f! , (       d  f       Mz  = f)Nr   rD  )Q6fzX>010fzX<010fzX^010fzX=010fz0>010fz0<010fz0^010fz0=010fz>010fz<010fz^010fz=010ez=010fz=010gz=010%z>00.2fz>00f006fz.010fz.02fz.000fz.ez.fz.gz.%zZ.2fz05)r  )r   rW  r   r  r  rb  )r   r  invalid_specsr  s       r   test_invalid_formats!FractionTest.test_invalid_formats  s    Q7y)8T" *%
L "D4(&&z28* 3 )( "S *)V 32 )(s/   BB(%B1B(
B
B%!B((
B7	c                 6   [        [        SS9 nU GHW  nUR                  S5      (       a  M  UR                  5       nU(       d  M5  [	        [
        R                  UR                  S5      5      u  p4UR                  5       u  pVUS:X  a  Mz  USS  nU R                  XVS9   [        [        U5      5      nU R                  [        X5      U5        U(       a   U R                  [        U* U5      SU-   5        [        U5      nU R                  [        [        X5      5      [        U5      5        U R                  [        [        U* U5      5      [        SU-   5      5        S S S 5        GMZ     S S S 5        g ! , (       d  f       GMu  = f! , (       d  f       g = f)	Nzutf-8)encodingz--z->z%rr   )fmtargr  )openformat_testfile
startswithstripr2  r7  splitr  r   r   r(  r  )	r   testfilelinelhsrhsr  r  fmt2r  s	            r   test_float_format_testfile'FractionTest.test_float_format_testfile"  s6   /G4 ??4((zz|syy$**T*:;99;$;12w\\c\3%*A$$VA_c:((D)939E#A$$U6!?%;U3ZH$$U61"d+;%<eC#I>NO 43 ! 54 43 54s%   BF
 CE7!F
7
F	F


Fc                    [        SS5      nSnSnU R                  [        US-  [        R                  X5        U R                  [        US-  [        R
                  X5        U R                  [        US-  [        X5        U R                  [        US-  [        R                  X!5        U R                  [        US	-  [        R
                  X!5        U R                  [        US
-  [        X!5        g )Nr   r   rU  z1unsupported operand type(s) for %s: '%s' and '%s')%rW   r  )//rW   r  )divmod()rW   r  )r  r  rW   )r  r  rW   )r  r  rW   )r   r>  r   r%   r2  floordivr  )r   ru   rv   r9  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   r<   N)7rE   rF   rG   rH   r,  r3  r>  rX  r   rd  rk  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r!  r)  r-  r3  r7  r;  r>  rA  rD  rM  rP  rS  rW  rZ  r_  rj  rv  r|  r  r  r  r  r  r  r  r  r  r  rJ   r<   r   r   r&  r&    s3   +
Q
;12 ; ;=f$PU*( 8-01=+90, ,D"&HA!+F 
D@K<O:*KX1If9	,8@
,5$6":3$3,	8+/
1?
5,0Cd8Ct}C~BCH.+` P P./r   r&  __main__)4cmathdecimalr   test.supportr   r   rO   r   r%   rV   r  osrc  r  unittestr   r   r  r   r	   rW   r   pathdirname__file__curdirtest_dirjoinr  objectr   rL   ri   rq   rw   ry   r   Realr  r   Complexr   r   r   r   r  r  r$  TestCaser&  rE   mainr<   r   r   <module>r      s     E      	 
      77??8$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    	$ 	t/8$$ t/n) zMMO r   