1ғ2SrSSKrSSKJr SSKJrJr SSKrSSKrSSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKJrJr SSKrSSKJrJr \ R*r\ R.R1\5=(d \ R4r\ R.R9\SS5r"S S \5r"S S \5r "S S\ R*5r!Sr"Sr#"SS5r$"SS\$5r%\RLRO\%5 "SS\$5r(\RRRO\(5 "SS5r*\RVRO\*5 "SS5r,\RLRO\,5 "SS5r-\RRRO\-5 "SS5r.\RRRO\.5 "SS \.\/5r0"S!S"\Rb5r2\3S#:Xa\Rh"5 gg)$zTests for Lib/fractions.py.N)Decimal)requires_IEEE_754adjust_int_max_str_digits)copydeepcopy)dumpsloadsmathdatazformatfloat_testcases.txtcR\rSrSrSrSrSrSrSrSr Sr S r S r S r \ rS rg ) DummyFloatz8Dummy float class for testing comparisons with FractionscP[U[5(d [S5eXlg)Nz-DummyFloat can only be initialized from float) isinstancefloat TypeErrorvalueselfrs :/opt/alt/python313/lib64/python3.13/test/test_fractions.py__init__DummyFloat.__init__s %''KL L c[U[R5(a&U"[R UR 5U5$[U[ 5(aU"UR UR 5$[$N)rnumbersRationalF from_floatrr NotImplemented)rotherops r_richcmpDummyFloat._richcmp sW eW-- . .all4::.6 6 z * *djj%++. .! !rcBURU[R5$r)r"operatoreqrr s r__eq__DummyFloat.__eq__(DMM%$EErcBURU[R5$r)r"r%ler's r__le__DummyFloat.__le__)r*rcBURU[R5$r)r"r%ltr's r__lt__DummyFloat.__lt__*r*rcBURU[R5$r)r"r%ger's r__ge__DummyFloat.__ge__+r*rcBURU[R5$r)r"r%gtr's r__gt__DummyFloat.__gt__,r*rcS5e)Nz/__float__ should not be invoked for comparisonsrs r __float__DummyFloat.__float__/s GGGurcS5e)Nz-__sub__ should not be invoked for comparisonsr<r's r__sub__DummyFloat.__sub__3s EEEurrN)__name__ __module__ __qualname____firstlineno____doc__rr"r(r-r1r5r9r>rA__rsub____static_attributes__r<rrr r s2B "FEEEEHFHrr cB\rSrSrSrSrSrSrSrSr Sr S r S r g ) DummyRational8zATest comparison of Fraction with a naive rational implementation.cT[R"X5nX-UlX#-Ulgr)mathgcdnumden)rrQrRgs rrDummyRational.__init__;s" HHS 88rc[U[R5(a9URUR:H=(a UR UR :H$[$r)r fractionsFractionrQ _numeratorrR _denominatorrr's rr(DummyRational.__eq__@sK eY// 0 0HH 0 003HH 2 22 4" !rchURUR-URUR-:$rrQrYrRrXr's rr1DummyRational.__lt__G+xx%,,,txx%:J:J/JJKrchURUR-URUR-:$rr\r's rr9DummyRational.__gt__Jr^rchURUR-URUR-:*$rr\r's rr-DummyRational.__le__M+xx%,,,5;K;K0KKLrchURUR-URUR-:$rr\r's rr5DummyRational.__ge__PrcrcS5e)Nz__float__ should not be invokedr<r=s rr>DummyRational.__float__Us 777ur)rRrQN) rDrErFrGrHrr(r1r9r-r5r>rJr<rrrLrL8s,K "LLMM 8rrLc\rSrSrSrSrg) DummyFractionXz6Dummy Fraction subclass for copy and deepcopy testing.r<N)rDrErFrGrHrJr<rrririXs@rric2URUR4$r numerator denominator)rs r _componentsrp\s KK ''rc[U5[U5:H=(a! X:H=(d [R"X5$r)typerOisclose)abs rtyped_approx_eqrv_s* 7d1g  @16#?T\\!-?@rc`\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrg)SymbolicbzSimple non-numeric class for testing mixed arithmetic. It is not Integral, Rational, Real or Complex, and cannot be converted to int, float or complex. but it supports some arithmetic operations. cXlgrrCrs rrSymbolic.__init__gs rcd[U[5(a[$URUSU35$Nz * rrr __class__r's r__mul__Symbolic.__mul__i/ eQ  ! !~~c%122rc.URUSU35$r}rr's r__rmul__Symbolic.__rmul__m~~s4&122rcd[U[5(a[$URUSU35$Nz / r~r's r __truediv__Symbolic.__truediv__orrc.URUSU35$rrr's r __rtruediv__Symbolic.__rtruediv__srrcd[U[5(a[$URUSU35$Nz % r~r's r__mod__Symbolic.__mod__urrc.URUSU35$rrr's r__rmod__Symbolic.__rmod__yrrcd[U[5(a[$URUSU35$Nz ** r~r's r__pow__Symbolic.__pow__{s/ eQ  ! !~~d5'233rc.URUSU35$rrr's r__rpow__Symbolic.__rpow__s~~tD6233rctURUR:wa[$URUR:H$r)rrrr's rr(Symbolic.__eq__s+ ??dnn ,! !zzU[[((rcUR$rrCr=s r__str__Symbolic.__str__s**rcPURRSUR<S3$)N())rrDrr=s r__repr__Symbolic.__repr__s$..))*!DJJ>;;rrCN)rDrErFrGrHrrrrrrrrrr(rrrJr<rrrxrxbsC33333344)"..1B1BBD DrcURURUR-URUR-5$rrrmrnr's rr Rat.__rmul__s8~~eoo>#//$2B2BBD Drc[U[5(a[$URURUR -UR UR-5$rrr's rrRat.__truediv__sK eQ  ! !~~dnnu/@/@@"..@B BrcURURUR-URUR-5$rrr's rrRat.__rtruediv__s8~~eoo0@0@@#//$..@B Brc[U[5(a[$URUR-nUR URUR-U-U5$r)rrrrnrmrrr rs rr Rat.__mod__sN eQ  ! !   u .~~dnnu/@/@@1DaHHrcURUR-nURURUR-U-U5$r)rnrmrrs rr Rat.__rmod__s;    .~~eoo0@0@@1DaHHrc[U[5(a[$URURU-UR U-5$rrr's rr Rat.__pow__s? eQ  ! !~~dnn5"..%79 9rc4URUR- $rrlr=s rr> Rat.__float__s~~ 0 000rcURUR:wa[$[URUR5=(a [URUR5$r)rrrvrmrnr's rr( Rat.__eq__sL >>U__ ,! !@E 0 0%2C2CD FrclURRSUR<SUR<S3$Nrz, r)rrDrmrnr=s rr Rat.__repr__s3..))*!DNN+=R@P@P?SSTUUr)rnrmN)rDrErFrGrHrrrrrrrrr>r(rrJr<rrrrsD=D DB BI D 9 1F Vrrc`\rSrSrSr\"S54SjrSrSrSr Sr S r S r S r S rS rg)Rootz/Simple Real class for testing mixed arithmetic.cXlX lgrbasedegree)rvrs rr Root.__init__s   rc[U[5(a[$URURXR --UR 5$rrrrrrrr's rr Root.__mul__: eQ  ! !~~dii%*<Root.__float__s$TYYAdkk(:$:;;rcURUR:wa[$[URUR5=(a [URUR5$r)rrrvrrr's rr( Root.__eq__sD >>U__ ,! !tyy%**5d/$++W\WcWc:ddrclURRSUR<SUR<S3$r)rrDrrr=s rr Root.__repr__s...))*!DII=4;;/KKrrN)rDrErFrGrHrrrrrrrr>r(rrJr<rrrrs?9aDKKKK><eLrrcH\rSrSrSrSrSrSrSrSr Sr S r S r S r g ) Polarz2Simple Complex class for testing mixed arithmetic.cXlX lgr)rophi)rrors rrPolar.__init__s rc[U[5(a[$URURU-UR 5$rrrrrrorr's rr Polar.__mul__2 eQ  ! !~~dffundhh77rcRURXR-UR5$rrrorr's rrPolar.__rmul__s~~effndhh77rc[U[5(a[$URURU- UR 5$rrr's rrPolar.__truediv__rrcTURXR- UR*5$rrr's rrPolar.__rtruediv__s~~effntxxi88rc[U[5(a[$URURU-UR U-5$rrr's rr Polar.__pow__s7 eQ  ! !~~dffotxx%/?@@rcURUR:wa[$[URUR5=(a [URUR5$r)rrrvrorr's rr( Polar.__eq__sA >>U__ ,! !tvvuww/XODHHeii4XXrclURRSUR<SUR<S3$r)rrDrorr=s rrPolar.__repr__s...))*!DFF:R|1EEr)rroN)rDrErFrGrHrrrrrrr(rrJr<rrrrs0<8889AYFrrcN\rSrSrSrSrSrSrSrSr Sr S r S r S r S rg )Rectz8Other simple Complex class for testing mixed arithmetic.cXlX lgrxyrr r s rr Rect.__init__s rc[U[5(a[$URURU-UR U-5$rrrrrr r r's rr Rect.__mul__6 eQ  ! !~~dffundffun==rcVURXR-XR-5$r)rr r r's rr Rect.__rmul__s~~effneffn==rc[U[5(a[$URURU- UR U- 5$rrr's rrRect.__truediv__ rrcURUR-URUR--nURXRU- -XRU- -5$r)r r r)rr ros rrRect.__rtruediv__ sK FFTVVOdfftvvo -~~evvz2EVVaZ4HIIrct[XR-[R"U5UR-5$r)rr rOlogr r's rr Rect.__rpow__s&Uff_dhhuo&>??rcB[URUR5$r)complexr r r=s r __complex__Rect.__complex__stvvtvv&&rcURUR:wa[$[URUR5=(a [URUR5$r)rrrvr r r's rr( Rect.__eq__sA >>U__ ,! !tvvuww/TODFFEGG4TTrclURRSUR<SUR<S3$r)rrDr r r=s rr Rect.__repr__s...))*!DFF:RzCCrr N)rDrErFrGrHrrrrrrrr(rrJr<rrrrs6B>>>J@'UDrrc\rSrSrSrg) RectComplexir<Nrr<rrr$r$rrr$cN\rSrSrSrSrSrSr\S5r Sr Sr S r S r S rS rS rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"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/r2S0r3\S15r4S2r5S3r6g4)5 FractionTesticnUR[U5[U55 URX5 g)z4Asserts that both the types and values are the same.N) assertEqualrrrexpectedactuals rassertTypedEqualsFractionTest.assertTypedEquals!s( hf6 *rc URX5 UR[[[U55[[[U555 g)zBAsserts that both the types and values in the tuples are the same.N)assertTupleEqualassertListEquallistmaprrr)s rassertTypedTupleEquals#FractionTest.assertTypedTupleEquals&s8 h/ T#dH"56Sv=N8OPrcU"U0UD6 URSUR-5 g!Ua%nURU[U55 SnAgSnAff=f)z@Asserts that callable(*args, **kwargs) raises exc_type(message).z %s not raisedN)failrDr(str)rexc_typemessagecallableargskwargses rassertRaisesMessage FractionTest.assertRaisesMessage+sV ; d %f % IIo(9(99 : .   Wc!f - - .s)AAAc (URS[[555 URS[[S555 URS[[[SS5555 URS[[SS555 URS[[SS555 URS [[S S 555 URS [[S S 555 URS[[SS555 URS[[S555 URS[[[SS5S555 URS[[S[SS5555 URS[[[SS5[SS5555 UR[S[SS5 UR [ [S5 UR [ [S S5 UR [ [SS!5 UR [ [SS"5 UR [ [SSS5 g)#Nrr)rrBrBrD)rrEr)rr)rr )rBrI)m+?RrrJ)rDM )rGr )i i cqzFraction(12, 0) ry?@3/2y?)r(rprr>ZeroDivisionError assertRaisesrr=s rtestInitFractionTest.testInit5s QS!12 QqT!23 QqAwZ!89 +aAh"78 +a2h"78 Qr2Y!78 Qq"X!67 +a2h"78 k!F)&<= +a!Qn"=> +a1S!9o">? {1Qr1Xqc{3K'LM   !24E!"B + )Q1 )Qq1 )Q2. )Q2. )Q1a0rcURS[[S555 URS[[S555 URS[[S555 UR[[[ S55 UR[ [[ S55 UR[ [[ S 55 g) N)rGr@rA)L33fl皙?naninf-inf)r(rprrW ValueErrorr OverflowErrorr=s rtestInitFromFloatFractionTest.testInitFromFloatNs QsV!45 QtW!56 >$QsV, . *au6 -E%L9 -E&M:rc 2URS[[[S5555 URS[[[S5555 URS[[[S5555 UR [ [[S55 UR [ [[S55 UR [ [[S 55 UR [ [[S 55 g) NrLrH1.1)rBz3.5e-2rAz.000e20r_snanr`ra)r(rprrrWrbrcr=s rtestInitFromDecimal FractionTest.testInitFromDecimalYs $Qwu~%67 9 $Qwx'8%9: < $Qwy'9%:; = *a8 *a9 -GEN; -GFO5 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`nU"U5 U"SaU-5 U"SbU-5 U"SIU-5 U"ScU-5 U"SdU-5 g)eN)rGr5005)rDrrTz3 / 2z +3/2)rz-3/2 ) rz 0013/002 )rGz 3.2 z003.2)irGz -3.2 )rprz -3. )rDrGz .6 )ri5 z32.e-5)i@Brz1E+06)irz-1.23e4rAz .0e+0 z-0.000e0){r1_2_3))kz 1_2_3/3_2_1)iz3.14_15)rwl@9Hz 3.14_15e-1_0)edz1.01z1.0_1zFraction(3, 0)z3/0cZ>S[U5-nTR[U[U5 g)NzInvalid literal for Fraction: )reprr>rbr)smsgrs r check_invalid2FractionTest.testFromString..check_invalids%2T!WrV)rr~vals` rtestFromStringFractionTest.testFromStringfsP QsV!45 QuX!67 QuX!67 QwZ!89 Q{^!<= +ak":; +a0C.D"EF +aj"9: +aj"9: ;q{#;< +aj"9: QvY!78 K( $<= {1W:'>? k!I,&?@ Qz]!;< Qz]!;< ;qz#:; K-0@$AB {1Y<'@A );q7H+IJ [6%;< [7%<=   / u  < ddffggeggffhhfffhhghhj!dffffhdccdfdeegefhhhi k"hj!fffj!hj!cdSj!dSj!cCi gm$fsl#rc @Sn[U5 SnSU-nSU-S- S-nURUS4[[U555 UR [ U[US-5 URUS4[[US-555 UR [ U[US -5 URSU4[[S U-555 UR [ U[S U-5 URSUS--S- S-SU-4[[S U-555 UR [ U[S U-5 URUSU-4[[SU-555 UR [ U[SU-5 UR [ U[SU-5 URS[[SSU--555 UR [ U[SSUS---5 SSS5 g!,(df  g=f)NzExceeds the limit1rHrrOrrz1/2rz1/1rrhrz.1z1.1e1rgr0)rr(rprassertRaisesRegexrb)r maxdigitsr}rrQs rtest_limit_intFractionTest.test_limit_ints &y 1%C /Cy=1$q(C   c1X{1S6': ;  " ":sAsSy A   c1X{1S4Z='A B  " ":sAsU{ C   aX{1TCZ='A B  " ":sAus{ C   rIaK014q8"i-H(4#:7 9  " ":sAus{ C   c2y=1;qs|3L M  " ":sAtcz B  " ":sAw} E   X{1VcIo5M3N'O P  " ":sAvyQR{@S7S T#2 1 1s G8H Hc[SS5nURSS5 URS[U55 UR [ [ USS5 UR [ [ USS 5 URS[U55 S UlSUlURS [U55 UR[S S5U5 g) NrBrDrrIrCrmrSrn)rr) rrr(rprWAttributeErrorsetattrrXrYassertNotEqualrros r testImmutableFractionTest.testImmutables aG 1b Q0 .'1k2F .'1mQG Q0  Q0 AaGQ'rcUR[[RS5 UR S[ [RS555 SnUR US4[ [RU555 UR S[ [RS555 UR S[ [RS555 UR S [ [RS 555 UR S [ [RS 555 UR [ S 5[ [RS 555 UR S[ [RS555 UR S[ [RS555 SnX"- nUR[S[RU5 UR[S[RU*5 UR[S[RU5 g)N@@)rHrrHl{C rrAr\$@)rg)ll+?RrJ-DrJ)r]l g @g(cannot convert Infinity to integer ratio#cannot convert NaN to integer ratio) rWrrrr(rprr>rcrb)rbigintr`r_s r testFromFloatFractionTest.testFromFloats )Q\\48 +all2.>"?@$ &!k!,,v2F&GH Q\\$-?!@A +all4.@"AB +all4.@"AB 5$Q\\$%78 : vall4.@(AB =$Q\\#%67 9 eALL$567i   E LL#    E LL3$    = LL# rcVUR[[RS5 UR [SS5[RS55 UR [S5[R[ S555 UR [SS5[R[ S555 UR [SS5[R[ S 555 UR [S 5[R[ S 555 UR S[SS 5- [R[ S 555 UR [S[R[ S55 UR [S[R[ S55 UR [S[R[ S55 UR [S[R[ S55 g)NrrHrr-0rGz0.5z5e-3r5e3l73Me'z 0.999999999999999999999999999999rr`rarr_rj) rWrr from_decimalr(rr>rcrbr=s rtestFromDecimalFractionTest.testFromDecimalsx )Q^^T: 2q1>>"#56 1q~~gdm<= 1b1>>'%.#AB 1dQ^^GFO%DE 4!.."@A Qq&\)(@A C   E NNGEN ,   E NNGFO -   = NNGEN ,   = NNGFO -rc8UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 UR[SS5R55 g)NrrErrF) assertTruer is_integer assertFalser=s rtest_is_integerFractionTest.test_is_integer's !Q**,- "a++-. !R++-. !Q**,- "a++-. !R++-. 1a++-. 2q,,./ 1b,,./ 2r--/0rcTUR[SS5R5S5 UR[SS5R5S5 UR[SS5R5S5 UR[SS5R5S5 g) Nrr)rrD)rFrDrrA)r(ras_integer_ratior=s rtest_as_integer_ratio"FractionTest.test_as_integer_ratio4s~ 1a113V< 2q224g> 1b224g> 1a113Vrb)rrpiis rtestLimitDenominator!FractionTest.testLimitDenominator:s0$% ..u5qc{C #//66$ E ..s3QsC[A ..s3QsC[A 366s;QqTB 366s;QsC[I 1//6!=A  $ $B!&& +rc 4URS[R"[SS555 URS[R"[SS555 URS[R"[SS555 URS[R "[SS555 URS[R "[SS555 URS[ [SS555 URS[[SS555 URS[[S S555 URS[[S S555 URS[[S S555 URS [[SS555 URS [[SS555 URS[[SS555 UR[[[ S55 URS[[[ S5[ S5555 URS[[SS555 g)NrEirHrrLrFrNrrFTrDrr^22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU?33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331?)r,rOtruncrfloorceilintroundr(boolrrWrcassertAlmostEqualrr=s rtestConversionsFractionTest.testConversionsHs r4::aRj#9: q$**Qr2Y"78 r4::aRj#9: r499QsBZ#89 r499QsBZ#89 r3qbz?3 q%"b "23 q%"b "23 r53#45 r52r#34 Qq!W . tAaG}- sE!Ar(O4 -K0@A u$Qs;'7[9I%JK M vwq2w'78rc[SS5nURU[R5 UR [ U5S5 UR [ [ U55[ 5 g)NrDrr)rassertIsInstancetyping SupportsIntr(rrr)rfs rtestSupportsIntFractionTest.testSupportsInt`sO aG a!3!34 Q# c!fs+rc^"U4SjS[5m[T"S5T"S55nURURT5 URURT5 URU[ R 5 UR[U5S5 UR[[U55[5 g)NcX>\rSrSrSr\S5r\U4Sj5rU4SjrU4Sjr Sr g) :FractionTest.testIntGuaranteesIntReturn..CustomIntilz Subclass of int with just enough machinery to convince the Fraction constructor to produce something with CustomInt numerator and denominator. cU$rr<r=s rrmDFractionTest.testIntGuaranteesIntReturn..CustomInt.numeratorss rc>T"S5$rr<)r CustomInts rrnFFractionTest.testIntGuaranteesIntReturn..CustomInt.denominatorws  |#rc>>T"[U5[U5-5$rrrr rs rrBFractionTest.testIntGuaranteesIntReturn..CustomInt.__mul__{s TSZ!788rc>>T"[U5[U5-5$rrrs r __floordiv__GFractionTest.testIntGuaranteesIntReturn..CustomInt.__floordiv__~s Tc%j!899rr<N) rDrErFrGrHpropertyrmrnrrrJ)rsrrrls?     $ $ 9 : :rrrqrGr) rrrrmrnrrr(rr)rrrs @rtestIntGuaranteesIntReturn'FractionTest.testIntGuaranteesIntReturngs  : :* imYq\ * akk95 ammY7 a!3!34 Q# c!fs+rcl[R"SS55n[RR U5 U"S5n[ U5nUR URU5 UR [U5S5 U"S5n[ U5nUR [U5S5 g)Nc>\rSrSrSrSrSr\S5rSr \ r Sr g) =FractionTest.testBoolGuarateesBoolReturn..CustomValueircXlgrrCrs rrFFractionTest.testBoolGuarateesBoolReturn..CustomValue.__init__s" rc,[UR5$r)rrr=s r__bool__FFractionTest.testBoolGuarateesBoolReturn..CustomValue.__bool__sDJJ''rcU$rr<r=s rrmGFractionTest.testBoolGuarateesBoolReturn..CustomValue.numerators  rc[S5e)Nz&Avoid comparisons in Fraction.__bool__)AssertionErrorr's rr(DFractionTest.testBoolGuarateesBoolReturn..CustomValue.__eq__s$%MNNrrCN) rDrErFrGrnrrrrmr(r1rJr<rr CustomValuers2K # (   OFrrrTrF) functoolstotal_orderingrrregisterrassertIsrmr)rrrmros rtestBoolGuarateesBoolReturn(FractionTest.testBoolGuarateesBoolReturns  ! !   " ( !!+.N iL akk9- d1gt$N iL d1gu%rc UR[S5[[S5S55 UR[S5[[S5S55 UR[S5[[S5S55 UR[SS5[[S S 5S 55 UR[SS5[[S S 5S 55 g) Ni8ijrFirErHrryri)r,rrr=s r testRoundFractionTest.testRounds qwagr(:; qwagr(:; queAbE2&67 qRy%#s Q*?@ qRy%#s Q*?@rc  UR[SS5[SS5[SS5-5 UR[SS5[SS5[SS5- 5 UR[SS5[SS5[SS5-5 UR[SS5[SS5[SS 5-5 UR[SS 5[SS5[SS5- 5 UR[S S 5[SS 5[S S5- 5 UR[[R [S5[S 55 UR S[SS5[SS5-5 UR S[SS5[S5-5 UR[SS5[SS5[SS5-5 UR[SS5[SS5[SS5-5 UR[S5[SS54[[SS5[SS555 UR[S 5[SS54[[SS5[SS555 UR[S S5[SS5[S5-5 UR[SS 5[SS5[S5-5 UR S[S 5[SS5-5 UR[SS5[SS575 [[S5[SS55nURURS 5 URURS5 [SS5S -nURU[SS55 URURS5 URURS5 [SS5S-nURU[S S55 URURS 5 URURS5 [SS5S -nURU[S S55 URURS 5 URURS5 g)NrrrHrGrprrDrrrFrrOrJrBr@rE)r(rrWrVr%truedivr,divmodpowrrealimagrmrn)rzps rtestArithmeticFractionTest.testArithmetics 1a!Ar(Qq!W"45 2rAaHqAw$67 1b1Q8a1g#56 1a!Aq'AaG"34 1a!Ar(Qq!W"45 3AaGaAh$67 +X-=-=qtQqTJ q!Ar(a1g"56 vq|qt';< 1a!Aq'AaG"34 1a!B(Qq!W"45 !A$!Q&1a!Aq'*BC !B%1a)6!B(AaG+DE 1b1Q7ad?3 2q1Q7ae#34 sAaDAaGO4 1a1Q7(+ "qAw  qvvq) # b!HM AaG$ a( * b!HN Ab!H% b) * b!HN AaG$ a( *rc pUR[SS5[SS-S-S5[SSS-S- 5-5 UR[SS5[S S -*S 5[S S S -5-5 URS [SS54[[SS-S-S5[SSS-S- 555 URS S-*S-[S S -*S 5[S S S -5-5 URS[S S S -5[S S S -5-5 URS[S S S -54[[S S S -5[S S S -555 URS S-*S-[SS54[[S S -*S 5[S S S -555 g)Nl b;efOpUmnP|}l~Jw5PHyT#/jei4TrH#rlP~cegrBlrryrDrGl_rirI)r,rr3rr=s rtestLargeArithmetic FractionTest.testLargeArithmetics  CK M b"fQh !AhBq$9 9  a0 1 q#vgqMAaCL (  ##  DLN O 1RVAXx(!Hb"fQh*? @   #XIO q#vgqMQq!S&\ )   aCLAaCL (   !QV  1Q3<1af .  ##3hY"_ q1 2 4 1afWa=!Aq#v, / rc<UR[SS5[SS5S-5 URS[SS5S-5 URS[SS5S-5 UR[SS5S[SS5-5 URSS[SS5-5 URSS[SS5-5 UR[SS5[SS5S- 5 URS [SS5S- 5 URS [SS5S- 5 UR[S S5S[SS5- 5 URS S[SS5- 5 URS S[SS5- 5 g)NrLrHrg??y??rMgyrOg?y?)r,rr=s rtestMixedArithmetic FractionTest.testMixedArithmeticsV qRy!Ar(Q,7 sAaHsN3 x1bX)>? qRy!a2h,7 sC!Ar(N3 x(a2h)>? qRy!Ar(Q,7 tQq"X^4 y!Ar(h*?@ qBxQq"X6 sC!Ar(N3 x(a2h)>?rc  UR[SS5[SS5S-5 URS[SS5S-5 URS[SS5S-5 UR[SS5S[SS5-5 URSS[SS5-5 URSS[SS5-5 UR[SS5[S S5-[S S55 UR[S S5[SS5-[S S55 UR[SS5[S S5-[S S 55 UR[S S5[SS5-[S S55 UR[SS5[ S 5-[ [S S555 UR[ S 5[SS5-S5 UR [SS5[ S5-[ S55 UR[[R[ S5[SS55 UR[SS5[S S5-[[S S5S55 UR[SS5[SS5-[SS55 UR[SS5[S S5-[[S S5[S S555 UR[SS5[S S5-[SS55 UR[[R[S S5[SS55 UR[S S5[SS5-S5 UR [SS5[S5-[S55 UR[[R[S5[SS55 UR [SS5[S5-[S55 UR[[R[S5[SS55 g)NrrHr^rrr rDrrGrIrrrO@Xz3/2 * X@g@y@y@@@)r,rrirrr(rrWrr%mulrrr$rrxr=s rtestMixedMultiplication$FractionTest.testMixedMultiplications` qBx1bA6 sAaHsN3 x1bX)>? qBxQq"X6 sC!Ar(N3 x(a2h)>? qAwq!)<? qQxQq"X6 tS1Q8^4 y8qBx*?@ qAwq!)<? ##Q!RM6!Ar(A3FG ##F3$4fQq"Xs6KL ##R1Jq!Ar(0CD ##F3$4fS!Ar(6KL ##F3e $=va2hPUV[P\?]^ ##F3f $>qBxQVW]Q^@_` ##F4u$>qRyRWX]R^@_` ##F4v$?"b SXY_S`Aab qAwq!)< s1ay1Q72AaG< )X\\1Q7DGD tAw1a0#6 1a<#44l96MN )X\\<3Da1gN )X\\1Q7E!QKH )X\\1Q7K1 qAw#b!*4a2h? qQx3r1:5qRyA qAw#a)3U; a1gR3U; qAw#b!*4e< qQx3r1:5v> s1ayAaG3U; s1ayAaG3SQZ@ s1ayAb!H4a2h? c!Qi1R83U; s1ayAb!H4e< tAw!Aq'143<@ tAw!Aq'141Q4=A tAw!B(2DQqTENC tAw!B(2DDMB 1aL$55|J7OP c*a1g5|J7OP qAw$q!*4eAaFC6HI qAw$q!*4eAaD#6FG qAw+a*;;U4=MN qAw+a*;;U3_M uQ{a1g5uS#G uQ{a1g5uR|D uQ{aAh6h8KL uQ{aAh6eT8JK 1aOC$88/*:UV -1a8/*:UV 1aHSM18J3GH #!Aq'18J3GHrc UR[[R[ SS5[ S55 UR[[R[ S5[ SS55 g)NrDrLz 3.1415926)rWrr%addrrr=s rtestMixingWithDecimal"FractionTest.testMixingWithDecimalsN )X\\Ab'7;#7 9 )X\\!+.!B 9rcUR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:H5 UR[SS5[SS5:H5 UR[SS5[SS5:g5 UR[SS5[SS5:g5 g)NrrrD)rrrr=s rtestComparisonsFractionTest.testComparisonss !Q!Aq')* 1a1Q7*+ !Q1Q7*+ !Q1Q7*+ 1aAaG+, !Q1Q7*+ 1aAaG+, 1aAaG+, !Q1Q7*+rcUR[SS5[SS5:H5 UR[SS5[SS5:H5 UR[SS5[SS5:H5 UR[SS5[SS5:H5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:*5 UR[SS5[SS5:5 UR[SS5[SS5:5 UR[SS5[SS5:5 g)NrrrDrrB)rrrLrr=s rtestComparisonsDummyRational)FractionTest.testComparisonsDummyRationalsf !Q=A#667  a+qAw67 1aM!Q$778 q!,!Q78 !Q-1"556 1a=A#667 1a=A#667 1a=A#667 1a=A#667 !Q-1"556 !Q=A#667 !Q=A#667 1aM!Q$778 1aM!Q$778 !Q=A#667 !Q=A#667  a+a1g56 q!,qAw67 q!,qAw67 q!,qAw67 q!,qAw67  a+a1g56  a+qAw67  a+qAw67 q!,!Q78 q!,!Q78  a+qAw67  a+qAw67rc[S5n[SS5nURX:g5 URX:=(d X:5 URX:H5 URX:*=(a X:5 URX!:g5 URX!:=(d X!:5 URX!:H5 URX!:*=(a X!:5 g)NgUUUUUU?rrD)r rrrr s rtestComparisonsDummyFloat&FractionTest.testComparisonsDummyFloats u  aG  '   *AF+  '   *AF+rcURS[SS5:5 URS[SS5:5 UR[SS5S:5 UR[SS5S:5 UR[SS5S:5 UR[SS5S:5 URS[SS5:5 URS[SS5:5 UR[S 5[SS5:5 UR[S 5[S S 5:5 UR[S 5[SS5:5 UR[SS5[S 5:5 UR[SS5[S 5:5 UR[SS5[S 5:5 g)NrrGrrDr333333?皙?r1r`rarrHr_rprBrSrrrrr=s r testMixedLessFractionTest.testMixedLesssd AaG $ Qq!W% !Q! $ 1a1% !Q# & 1a3' a1g & qAw' u!Q/0 f !R01 u"a01 !Q%,./ 2rU6]23 3uU|34rcURS[SS5:*5 URS[SS5:*5 UR[SS5S:*5 UR[SS5S:*5 URS[SS5:*5 URS[SS5:*5 UR[SS5S:*5 UR[SS5S:*5 UR[S 5[SS5:*5 UR[S 5[S S 5:*5 UR[S 5[SS5:*5 UR[SS5[S 5:*5 UR[SS5[S 5:*5 UR[SS5[S 5:*5 g)Nr1rrrGrHrrDrGr`rarrHr_rprBrIrSrJrKrLr=s rtestMixedLessEqualFractionTest.testMixedLessEqualsd qAw' !Q( !Q3' 1aC( Qq!W % a1g& !Q1 % 1aA& u1a01 f 1b12 u2q12 !Q5</0 2reFm34 3e 45rc jUR[S5[S5:H5 URS[[[R"S5S-55:5 UR S[[R"S5S-5:5 URS[[R"S5S- 5:*5 UR S[[R"S5S- 5:5 URS[[R"S5S-5:5 g)NrJrr)rrrrOrrr=s rtestBigFloatComparisons$FractionTest.testBigFloatComparisonss 6eFm34 a 4(81(<&= >>? qD!1A!5667 4::d#3a#7!889 qD!1A!5667 4::d#3a#7!889rcRUR[S5[S5:H5 UR[[ R [S5[S55 UR[[ R[S5[S55 [SS5n[SS5n[SS5nURX:H5 URX:g5 URX:H5 URX:g5 [ R[ R[ R [ R4H_nUR[XAU5 UR[XBU5 UR[XAU5 UR[XCU5 Ma g)NrJrDrr,r0g?) rrrrWrr%r8r,rr0r4)rr rwr!s rtestBigComplexComparisons&FractionTest.testBigComplexComparisons s( 6gfo56 )X[[!F)WV_M )X[[!F)WV_M aG E3  E3       ++x{{HKKDB   i 2   i 2   i 2   i 2 ErcURS[SS5:H5 URS[SS5:H5 UR[SS5S:H5 UR[SS5S:H5 URS[SS5:H5 URS[SS5:H5 UR[SS5S:H5 UR[SS5S:H5 UR[SS5[S 5:H5 UR[S 5[SS 5:H5 UR[SS5[S 5:H5 UR[S 5[SS5:H5 g) Nr1rrrGrHrrDrGr_rBr`rarLr=s rtestMixedEqualFractionTest.testMixedEquals. qAw' !Q( !Q3' 1aC( Qq!W % a1g& !Q1 % 1aA& 1aE%L01 u1a01 1aE%L01 v!Aq'12rc tURS[[SS555 URS[[S555 URS[[SS555 URS [[SS555 URS [[SS555 g) NzFraction(7, 3)rBrDz Fraction(6283185307, 2000000000) 3.1415926535z#Fraction(-1, 100000000000000000000)rl Fx:^Vz7/37)r(r{rr7r=s rtestStringification FractionTest.testStringification-s )4!Q=9 ;a/0 2 >a7m, . AaG - c!Aq'l+rc Z[RRn[RRnUR [ S5[ [ SS555 UR [ SS-5[ [ SS-555 UR[ [S55[ [ S555 UR U[ [ SU555 UR [ [ S55[ S5R55 g) Nr[rGrrH2rJrrE) sys hash_infomodulusr`r(hashrrr__hash__)rhmodhinfs rtestHashFractionTest.testHash6s}}$$}}   cD1aM2 b"ftAb"fI7 Dv/aiA tAaJ/0 aeaenn&67rc [S5nSUSSSSS4up#pEpgn[XB- 5[SS5:a:UnXV-US-peXx-US-pX5-U- nXC- n[XB- 5[SS5:aM:UR[RU5 g)NrDrrr ʚ;r )rabsrrOpi) rthreelaststr|rnardas rtestApproximatePiFractionTest.testApproximatePiAs!$%uaAq"$<!!r!)nqE{*ED"Q$rD"R%r! A FA !)nqE{* tww*rcN[S5nSS[S5SSS4up#pEpg[XC- 5[SS5:aDUnUS- nXRUS- --nXaU--nUS-nXFU- U-- n[XC- 5[SS5:aMDUR[R"S5U5 g)NrrrmrrE)rrorrOcos)rr rrrr|factrQsigns rtestApproximateCos1 FractionTest.testApproximateCos1Ns aD'(!QqT1a':$!3!)nqE{*E FA 1I D q5LC BJD td" "A !)nqE{* txx{A.rc [SS5n[SS5n[S[RS-5H'nUR U[ [X555 M) UR [U5[[U555 UR [U5[[U555 UR[U5[[U555 UR[U5[[U555 URU[U55 URU[U55 g)NrqrBrr) rrirangepickleHIGHEST_PROTOCOLr(r ridrrrr,)rrodrprotos rtest_copy_deepcopy_pickle&FractionTest.test_copy_deepcopy_pickle\s b!H 2q !1f559:E   QeAo 6 7; A47 , A8A;0 BrFBtBxL1 BrFBx|$45 r48, r8B<0rcV[SS5nUR[[USS5 g)NrqrBrtrH)rrWrrrs r test_slotsFractionTest.test_slotshs# b!H .'1c2>rcl"SS[5n[R"U"S5U"S55nURURS5 URUR S5 UR[ UR5U5 UR[ UR 5U5 g)NcF\rSrSrSrSrSr\S5r\S5r Sr g) -FractionTest.test_int_subclass..myintincN[U5"[U5[U5-5$rrrrr's rr5FractionTest.test_int_subclass..myint.__mul__osDz#d)c%j"899rcN[U5"[U5[U5-5$rrr's rr:FractionTest.test_int_subclass..myint.__floordiv__qsDz#d)s5z"9::rcR[U5"[U5[U5-5nU$rr)rr r s rr5FractionTest.test_int_subclass..myint.__mod__ss"Js4y3u:56rc6[U5"[U55$rrr=s rrm7FractionTest.test_int_subclass..myint.numeratorvsDz#d),,rc$[U5"S5$r)rrr=s rrn9FractionTest.test_int_subclass..myint.denominatorysDz!}$rr<N) rDrErFrGrrrrrmrnrJr<rrmyintrns7 : ;  - -  % %rrrDrrr)rrVrWr(rmrnrr)rrrs rtest_int_subclassFractionTest.test_int_subclassms %C %   uU|U5\ : a( * akk*E2 amm,e4rc/[SS5SS4P[SS5SS4P[S5SS4P[S5SS 4P[SS5S S 4P[SS5S S4P[S5S S 4P[S5S S 4P[SS5S S4P[SS5S S4P[S5S S4P[S5S S 4P[S5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5S S!4P[SS5S"S#4P[SS5S$S%4P[S&S'5S(S)4P[S*S'5S+S,4P[S-5S+S.4P[S/5S(S04P[S15S2S34P[S45S2S54P[S5S2S64PnUH9up#nURX#S79 UR[X#5U5 SSS5 M; g!,(df  MM=f)8NrrD+z+2/3rFz-2/3z+3rp-3 z 2/3z 3-z2/33rrnz 0z 2/3z -2/3rr2z<5z2/3 z>5z^5z 2/3 z=5z-2/3 z- 2/3zX>5zXX2/3z.<5z-2/3.z ^6z -2/3 ii/,z 1,234/5,679i.rz -1_234/5_679i 1_234_567iy)z -1,234,567rs#z123/1iz-123/1z0/1fractionspecrsubTestr(formatr testcasesrrr*s r test_format_no_presentation_type-FractionTest.test_format_no_presentation_types+ 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 $/+ 0q!WdG $1+ 2q!WdG $3+ 4r1XtW %5+ 6r1XtW %7+ 8r1XtW %9+ :r1XtW %;+ >q!WeW %?+ @r1Xug &A+ Br1Xvz *C+ FtT]C /G+ Hud^S. 1I+ JwZk *K+ Lx[#| ,M+ PsVS' "Q+ RtWc8 $S+ TqT3 U+ X)2 $HHx;  !7B<;)2;;s *I I" c/[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS 4P[SS 5SS 4P[SS5SS 4P[S S5SS4P[SS5SS4P[S S5SS4P[SS5SS4P[SS5SS4P[S5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS 4P[S!5SS"4P[S#5SS"4P[S$S5SS%4P[S&S5SS'4P[S(5SS)4P[S*5SS+4P[S,5SS-4P[SS5S.S/4P[SS5S0S14P[S25S3S44P[S5S65S7S84P[S25S9S:4P[S5S65S;S84P[S5S65S4P[S?5S@SA4P[SB5SCSD4P[SES6S-5SFSG4PnUH9up#nURX#SH9 UR[X#5U5 SSS5 M; g!,(df  MM=f)INrrDz.6ez 6.666667e-01z 1.500000e+00rqz 1.538462e-01z 8.695652e-02!z 6.060606e-02z 6.500000e+00z 1.000000e+01z 1.150000e+01z 1.650000e+01rz.3ez 0.000e+00rrz 1.000e-03ryz 1.000e-02rHz 1.000e-01z 1.000e+00z 1.000e+01z 1.000e+02z 1.000e+03z99.999994999999z 9.999999e+01z 99.999995z 1.000000e+02z99.999995000001rFz -6.666667e-01rpz -1.500000e+00iz -1.000000e+021e1000z 1.000e+1000z1e-1000z 1.000e-1000z.6Ez 6.666667E-01z.1ez6.7e-01z0.995z.0ez1e+00rPrBr=z 3.142857e+00z#.0ez1.e+00z11.6ez12.6ez13.6ez 3.142857e+00z1234567.123456z,.5e 1.23457e+06z 123.123456z012_.2ez 0_001.23e+02rEzz.6ez -3.091690e-85rrrs rtest_format_e_presentation_type,FractionTest.test_format_e_presentation_types3 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 6r1Xuo .73 8r1Xuo .93 :tWe_ -;3 >x[% /?3 @y\5- 0A3 Dq!We^ ,E3 Hq!WeY 'I3 JwZ (K3 Nr1XsN +O3 RwZ *S3 Vr1Xw /W3 Xr1Xw /Y3 Zr1Xw 0[3 ^ &- 8_3 `|_i 8a3 dr1c6]FO 4e3 h)2 $HHx;  !7B<;)2;;s I22 J c/[SS5SS4P[SS5SS4P[SS5SS4P[S S5SS 4P[SS 5SS 4P[SS 5SS 4P[SS5SS4P[SS5SS4P[SS5SS4P[SS5SS4P[S5SS4P[SS5SS4P[SS5SS4P[S5SS4P[S S5SS!4P[S"5SS#4P[S$5SS%4P[S&5SS%4P[S'5SS(4P[S)5SS(4P[S*5SS+4P[S,5SS+4P[S-5SS.4P[S/5SS04P[S15SS24P[S35SS24P[S45SS54P[S65SS54P[S75SS84P[S95SS84P[S:5SS;4P[SS5SS4P[SS5S4P[SS5S?S@4P[SAS5SSB4P[SAS5S6.2fz<6.2fz0.67 z^3.2fz^4.2fz^5.2fz0.67 z^6.2fz 0.67 z^7.2fz 0.67 z^8.2fz 0.67 z=+8.2fz- 0.67z+ 0.67zX>3.2fzX>7.2fzXX-0.67zX<7.2fz-0.67XXzX^7.2fzX-0.67XzX=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.67z07.2fz-000.67z-07.2fz+07.2fz+000.67z 07.2fz 000.67z0.2fz>0.2fz<0.2fz^0.2fz=0.2fz00.2fz,.2fz,.7fz 0.6666667z 123456.789z 123,456.791234567z 1,234,567.0012345678z 12,345,678.00z,fz12,345,678.000000z_.2fz_.7fz 123_456.79z 1_234_567.00z 12_345_678.00 1234.5678z07,.2fz1,234.57z08,.2fz09,.2fz 01,234.57z010,.2fz 001,234.57z011,.2fz 0,001,234.57z012,.2fz013,.2fz 00,001,234.57z014,.2fz000,001,234.57z015,.2fz0,000,001,234.57z016,.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.57z06,.0fz-1,235z07,.0fz-01,235z08,.0fz-001,235z09,.0fz -0,001,235z0=12,.2fz 00001,234.57z12.34zX>0.2fz.5Fz.2%z314.29%z14.29%Fz1.43%iz0.14%iXz0.01%ipz0.00%z.0%z14%z#.0%z14.%ryz,.2%z 1,428.57%z7.2%z8.2%z 314.29%z08.2%z0314.29%i rz2.54i z2.55iK z2.64z.1fz0.013z0.1z0.2rrrs rtest_format_f_presentation_type,FractionTest.test_format_f_presentation_types { q!WeV ${ q!WeV ${ q!WeV $ { q!WeV $ { q!WeV $ { q!WeV ${ q"Xuf %{ q#Yv &{ q#Yv &{ r1Xui ({ {^UN 3{ vu v C E{ "r1XsJ '#{ $qT3 #%{ &sAY[ )'{ *wZ '+{ ,~ v .-{ .~ v ./{ 0wZ '1{ 2wZ '3{ 4~ v .5{ 6~ v .7{ 8wZ '9{ :x[% );{ <  0={ >  0?{ @x[% )A{ Bx[% )C{ D  0E{ F  0G{ Hx[% )I{ Lq!WeV $M{ Nq!Wff %O{ Pq!Wfg &Q{ Rq!Wfg &S{ Tr1Xug &U{ Vr1Xvw 'W{ Xr1Xvw 'Y{ Zr1Xvw '[{ ^q!WeS !_{ `r1Xud #a{ br1Xuc "c{ dsAYt $e{ hq!Wfd #i{ jr1Xvu %k{ lr1Xvt $m{ nsAY &o{ rx[&& )s{ tx['6 *u{ vx['7 +w{ xx['7 +y{ zwZ ({{ |wZ& )}{ ~wZ' *{ @wZ' *A{ Dq!Wfh 'E{ FuXvz *G{ HuXun -I{ Lq!Wgx (M{ Nq!Wgx (O{ Pq!Wgv &Q{ Rq!Wgv &S{ Tq!Wgw 'U{ Vq!Wgx (W{ Xq!Wgy )Y{ Zq!Wgz *[{ ^r1Xx ,_{ `q!Wh +a{ dr1Xx )e{ fr1Xx +g{ hr1Xx +i{ jr1Xx +k{ lr1Xx +m{ nr1Xx +o{ rr1X{O 4s{ tr1Xy+ .u{ vr1Xy+ .w{ xr1Xx +y{ zr1Xx +{{ |r1Xz= 1}{ @r1Xw *A{ Br1Xx +C{ Dq!Wh *E{ Fq!Wh *G{ Lq!Wff %M{ Nq!Wgv &O{ Pq!Wgv &Q{ Rq!Wgv &S{ Tq!Wgv &U{ Xq!Wgv &Y{ \q!Wff %]{ ^q!Wfk *_{ `|_fl 3a{ by\6> 2c{ dz]FO 4e{ fz]D"5 6g{ jq!Wff %k{ lq!Wfk *m{ n|_fl 3o{ py\6> 2q{ rz]FO 4s{ v{^Xz 2w{ x{^Xz 2y{ z{^X{ 3{{ |{^Y 5}{ ~{^Y 7{ @{^Y 7A{ B{^Y 8C{ D{^Y(8 9E{ F{^Y(: ;G{ H{^Y(: ;I{ J|_h 4K{ L|_h 4M{ N|_h 4O{ P|_i 6Q{ R|_i 7S{ T|_i 9U{ V|_i 9W{ X|_i)9 :Y{ Z|_i): ;[{ \|_i)< =]{ `|_h 1a{ b|_h 2c{ d|_h 3e{ f|_h 5g{ r{^Z 8s{ |wZ )}{ ~wZ7 +{ Br1Xui (C{ Fr1Xui (G{ Hq!WeX &I{ Jq"Xug &K{ Lq#Yw 'M{ Nq$Z (O{ Pq%[% )Q{ Rq!WeU #S{ Tq!Wff %U{ VsAY ,W{ Xr1Xvy )Y{ Zr1Xvz *[{ \r1Xw +]{ `q!WeV $a{ bq!WeV $c{ dq!WeV $e{ ftT]E6 *g{ htT]E6 *i{ jtT]E6 *k{ lq#Yu %m{ nr4[% 'o{ pr4[% 'q{ rsD\5% (s{ tsD\5% (u{ x)2 $HHx;  !7B<;)2;;s c-- c< cF/[S5SS4P[S5SS4P[S5SS4P[S5SS 4P[S 5SS 4P[S 5SS 4P[S5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS4P[S5SS 4P[S!5S"S#4P[S$5S"S#4P[S%5S"S&4P[S'5S"S&4P[S(5S"S)4P[S*5S"S)4P[S+5S"S,4P[S-5S"S,4P[S.5SS/4P[S05SS14P[S25SS34P[S45SS54P[S65SS74P[S.5S8S94P[S05S8S04P[S25S8S24P[S45S8S44P[S65S8S:4P[S5S;S4P[S5S;S<4P[S=5S>S?4P[S@5SASB4P[SC5SASD4P[SE5SASF4P[SG5SASH4P[SG5SISJ4P[SK5SASL4P[SK5SISM4P[S@5SNSB4P[SC5SNSD4P[SE5SNSF4P[SG5SNSH4P[SG5SOSJ4P[SK5SNSL4P[SP5SQSR4P[SSSTSU-5SVSW4PnUH9up#nURX#SX9 UR[X#5U5 SSS5 M; g!,(df  MM=f)YNz0.000012345678z.6gz 1.23457e-05z 0.00012345678z 0.000123457z 0.0012345678z 0.00123457z 0.012345678z 0.0123457z 0.12345678z0.123457z 1.2345678z1.23457z 12.345678z12.3457z 123.45678z123.457rz1234.57z 12345.678z12345.7z 123456.78123457z 1234567.8rz 9.99999e+2z.4g1000z 9.99999e-8z1e-07z 9.99999e+8z1e+09z-0.115z.2gz-0.12z-0.125z-0.135z-0.14z-0.145z0.115rz0.125z0.135z0.14z0.145rrz123.400z123.4z123.000123z120.00012012000000z1.2e+07z#.6gz0.00000z 1.20000e+07z.6Gz 1.23457E+06r]rSz3.14159z 0.000031415z.0gz3e-05z 0.00031415z0.0003z0.31415z0.3z3.1415rz#.0grz31.415z3e+01z3.e+01z.1gz#.1glz_.25g18_446_744_073_709_551_616rErBryzgz -3.09169e-85rrrs rtest_format_g_presentation_type,FractionTest.test_format_g_presentation_types=  % 7=   6= ~ | 4= } uk 2 = |_eZ 0 = {^UI . = {^UI .= {^UI .= {^UI .= {^UI .= {^UH -= {^UM 2= |_eV ,= |_eW -= |_eW -!= $x[% )%= &x[% )'= (x[% ))= *x[% )+= ,wZ '-= .wZ '/= 0wZ '1= 2wZ '3= 6qT5# 7= 8y\5' *9= :y\5% (;= <y\5% (== >z]E9 -?= BqT69 %C= Dy\69 -E= Fy\69 -G= Hy\69 -I= Jz]FM 2K= N{^UI .O= P{^UM 2Q= T~ Y /U= X} ug .Y= Z|_eX .[= \y\5% (]= ^x[% %_= `x[&$ 'a= bx[% )c= dx[&( +e= f} ug .g= h|_eX .i= jy\5% (k= lx[% %m= nx[&$ 'o= px[% )q= tuXw < =u= xr1c6]D. 1y= |)2 $HHx;  !7B<;)2;;s (L L ct[SS5nUR[5 [US5 SSS5 /SQnUHDnUR US9 UR[ 5 [X5 SSS5 SSS5 MF g!,(df  N]=f!,(df  N,=f!,(df  Mz=f)NrrD)Q6fzX>010fzX<010fzX^010fzX=010fz0>010fz0<010fz0^010fz0=010fz>010fz<010fz^010fz=010ez=010fz=010gz=010%z>00.2fz>00f006fz.010fz.02fz.000fz.ez.fz.gz.%zZ.2fz05)r)rrWrrrrb)rr invalid_specsrs rtest_invalid_formats!FractionTest.test_invalid_formatssQ7   y ) 8T "*% L"D4(&&z28*3)("S* )V32)(s/ BB(% B1B( B B% !B(( B7 c 6[[SS9nUGHWnURS5(aMUR5nU(dM5[ [ RUR S55up4UR 5upVUS:XaMzUSSnURXVS9 [[U55nUR[X5U5 U(a UR[U*U5SU-5 [U5nUR[[X55[U55 UR[[U*U55[SU-55 SSS5 GMZ SSS5 g!,(df  GMu=f!,(df  g=f) Nzutf-8)encodingz--z->z%rr)fmtargr) openformat_testfile startswithstripr2r7splitrrrr(r) rtestfilelinelhsrhsrrfmt2rs rtest_float_format_testfile'FractionTest.test_float_format_testfile%s6 /G 4 ??4((zz|syy$**T*:;99;$;12w\\c\3%* A$$VA_c:((D)939E#A$$U6!?%;U3ZH$$U61"d+;%NO43!5 4435 4s%BF  CE7! F 7 F  F  Fc[SS5nSnSnUR[US-[RX5 UR[US-[R X5 UR[US-[ X5 UR[US-[RX!5 UR[US -[R X!5 UR[US -[ X!5 g) NrrrUz1unsupported operand type(s) for %s: '%s' and '%s')%rWr)//rWr)divmod()rWr)rrrW)rrrW)rrrW)rr>rr%r2floordivr)rrtrur9s rtest_complex_handling"FractionTest.test_complex_handling=s aG E   !(+G!G!)q 5   !(+H!H!)!2!2A :   !(+N!N!' /   !(+G!G!)q 5   !(+H!H!)!2!2A :   !(+N!N!' /rr<N)7rDrErFrGr,r3r>rXrrdrkrrrrrrrrrrrrr rrr!r)r-r3r7r;r>rArDrMrPrSrWrZr_rjrvr|rrrrrrrrrrrJr<rrr&r&s3+ Q ;12;; =f$PU*( 8-0 1= +90, ,D"&HA!+F  D @K<O:*KX1If9 ,8@ ,5$6":3$ 3, 8 + / 1? 5,0Cd8Ct@CDBCH.+`PP./rr&__main__)5rHcmathdecimalr test.supportrrrOrr%rVrosrcrunittestrrrrr rWrpathdirname__file__curdirtest_dirjoinrobjectr rLrirprvrxrRealrrComplexrrrrrrr$TestCaser&rDmainr<rrrs! E     77??8 $ 1 '',,x5PQ@8F8@AI&&A(A&<&